diff --git a/mall-common/src/main/java/com/suisung/mall/common/constant/CommonConstant.java b/mall-common/src/main/java/com/suisung/mall/common/constant/CommonConstant.java index fec451e9..4d84e506 100644 --- a/mall-common/src/main/java/com/suisung/mall/common/constant/CommonConstant.java +++ b/mall-common/src/main/java/com/suisung/mall/common/constant/CommonConstant.java @@ -45,11 +45,12 @@ public class CommonConstant { public static final Integer PRODUCT_DATA_SOURCE_USER = 1; public static final Integer PRODUCT_DATA_SOURCE_SX = 2; - // 入驻商家的审批状态:1-已通过;2-未通过;3-待审核;4-未申请; + // 入驻商家的审批状态:1-已通过;2-未通过;3-待审核;4-未申请过;5-已提交拉卡拉审核; public static final Integer MCH_APPR_STA_PASS = 1; public static final Integer MCH_APPR_STA_NOPASS = 2; public static final Integer MCH_APPR_STA_PADDING = 3; public static final Integer MCH_APPR_STA_NONE = 4; + public static final Integer MCH_APPR_STA_LKL_PADDING = 5; // 入驻商家主体类型,企业或个人:1-企业;2-个人; public static final Integer MCH_ENTITY_TYPE_QY = 1; diff --git a/mall-common/src/main/java/com/suisung/mall/common/modules/store/ShopMchEntry.java b/mall-common/src/main/java/com/suisung/mall/common/modules/store/ShopMchEntry.java index 2338cdfa..44600acc 100644 --- a/mall-common/src/main/java/com/suisung/mall/common/modules/store/ShopMchEntry.java +++ b/mall-common/src/main/java/com/suisung/mall/common/modules/store/ShopMchEntry.java @@ -81,16 +81,11 @@ public class ShopMchEntry implements Serializable { @ApiModelProperty(value = "邮箱") private String email; - @ApiModelProperty(value = "入驻商家店铺所在的省") - private String province_id; - @ApiModelProperty(value = "入驻商家店铺所在的市") - private String city_id; + @ApiModelProperty(value = "店铺地区编号,省份code/城市code/区code") + private String store_district; - @ApiModelProperty(value = "入驻商家店铺所在的县区") - private String county_id; - - @ApiModelProperty(value = "店铺地区 省份/城市/乡县") + @ApiModelProperty(value = "店铺地区名称,省份/城市/区") private String store_area; @ApiModelProperty(value = "入驻商家店铺的详细地址") @@ -177,10 +172,10 @@ public class ShopMchEntry implements Serializable { @ApiModelProperty(value = "结算账户银行卡图片") private String bank_image; - @ApiModelProperty(value = "结算账号省市区code 省code/市code/区code,必填项") + @ApiModelProperty(value = "结算账号省市区编号 省code/市code/区code,必填项") private String bank_district; - @ApiModelProperty(value = "结算银行地区,格式: 省份/城市/乡县") + @ApiModelProperty(value = "结算银行地区名称,格式: 省份/城市/区") private String bank_area; @ApiModelProperty(value = "结算账号类型:57-对公 58-对私") diff --git a/mall-shop/src/main/java/com/suisung/mall/shop/lakala/controller/mobile/LklTkController.java b/mall-shop/src/main/java/com/suisung/mall/shop/lakala/controller/mobile/LklTkController.java index 2210a0fc..e5a31ae2 100644 --- a/mall-shop/src/main/java/com/suisung/mall/shop/lakala/controller/mobile/LklTkController.java +++ b/mall-shop/src/main/java/com/suisung/mall/shop/lakala/controller/mobile/LklTkController.java @@ -47,7 +47,7 @@ public class LklTkController extends BaseControllerImpl { @ApiOperation(value = "拉卡拉进件申请", notes = "拉卡拉进件申请") @RequestMapping(value = "/registrationMerchant", method = {RequestMethod.POST, RequestMethod.GET}) public CommonResult registrationMerchant(@RequestBody JSONObject paramsJSON) { - Pair resp = lklTkService.registrationMerchant(paramsJSON.getStr("mchMobile")); + Pair resp = lklTkService.registrationMerchant(paramsJSON.getStr("mchMobile"), paramsJSON.getStr("bizLicenseNumber")); if (resp.getFirst()) { return CommonResult.success(null, resp.getSecond()); } diff --git a/mall-shop/src/main/java/com/suisung/mall/shop/lakala/service/impl/LklLedgerReceiverServiceImpl.java b/mall-shop/src/main/java/com/suisung/mall/shop/lakala/service/impl/LklLedgerReceiverServiceImpl.java index 6cdae9eb..06672786 100644 --- a/mall-shop/src/main/java/com/suisung/mall/shop/lakala/service/impl/LklLedgerReceiverServiceImpl.java +++ b/mall-shop/src/main/java/com/suisung/mall/shop/lakala/service/impl/LklLedgerReceiverServiceImpl.java @@ -218,7 +218,7 @@ public class LklLedgerReceiverServiceImpl extends BaseServiceImpl registrationMerchant(String mchMobile) { + public Pair registrationMerchant(String mchMobile, String bizLicenseNumber) { String authorization = getLklTkAuthorization(); if (StrUtil.isBlank(authorization)) { return Pair.of(false, "获取拉卡拉token失败"); @@ -332,7 +337,7 @@ public class LklTkServiceImpl { header.put("Authorization", getLklTkAuthorization()); // 获取商家入驻信息,组成请求参数 - ShopMchEntry shopMchEntry = shopMchEntryService.getShopMerchEntryByCondition(mchMobile, null, CommonConstant.MCH_APPR_STA_PASS); + ShopMchEntry shopMchEntry = shopMchEntryService.getShopMerchEntryByCondition(mchMobile, bizLicenseNumber, CommonConstant.MCH_APPR_STA_LKL_PADDING); if (ObjectUtil.isEmpty(shopMchEntry)) { return Pair.of(false, "商家入驻信息不存在"); } @@ -420,7 +425,7 @@ public class LklTkServiceImpl { JSONObject bizContent = new JSONObject(); bizContent.put("activityId", 687); bizContent.put("termNum", "1"); - bizContent.put("mcc", "12015"); // 超市的 code + bizContent.put("mcc", "5311"); // 超市的 code bizContent.put("fees", new JSONArray() {{ put(new JSONObject() {{ put("feeCode", "WECHAT"); @@ -493,6 +498,7 @@ public class LklTkServiceImpl { if (!success) { return Pair.of(false, "提交进件成功,但更新商户号失败!"); } + } catch (Exception e) { logger.error("拉卡拉进件异常:{}", e.getMessage()); return Pair.of(false, "进件失败:" + e.getMessage()); @@ -553,11 +559,24 @@ public class LklTkServiceImpl { return new JSONObject().set("code", "500").set("message", "更新商户号失败"); } + logger.debug("###开始异步执行生成电子合同模版和填充模版数据,并生该商家和平台方签署的未盖章合同文件###"); + // 生成电子合同模版和填充模版数据,并生该商家和平台方签署的未盖章合同文件 + Boolean genSuccess = esignContractFillingFileService.fillDocTemplate(shopMchEntry.getLogin_mobile(), ""); + if (!genSuccess) { + logger.error("###商家入驻电子合同生成失败###"); + } + // 1、发起E签宝合同签署;签署完成之后,生成分账盖章协议书,下一步才能申请分账功能权限; - esignContractService.innerSignFlowCreateByFile(shopMchEntry.getLogin_mobile()); + Pair resPair = esignContractService.innerSignFlowCreateByFile(shopMchEntry.getLogin_mobile()); + if (!resPair.getFirst()) { + logger.error("###商家发起电子签名失败:{}###", resPair.getSecond()); + } // 2:新增一个接收方记录,起码要一个平台方,代理商根据入驻信息新增 - lklLedgerReceiverService.innerApplyLedgerReceiver(merCupNo, shopMchEntry.getDistributor_id()); + genSuccess = lklLedgerReceiverService.innerApplyLedgerReceiver(merCupNo, shopMchEntry.getDistributor_id()); + if (!genSuccess) { + logger.error("###申请分账接收方失败###"); + } return new JSONObject().set("code", "200").set("message", "成功"); } diff --git a/mall-shop/src/main/java/com/suisung/mall/shop/store/service/impl/ShopMchEntryServiceImpl.java b/mall-shop/src/main/java/com/suisung/mall/shop/store/service/impl/ShopMchEntryServiceImpl.java index eaa11796..ca14330d 100644 --- a/mall-shop/src/main/java/com/suisung/mall/shop/store/service/impl/ShopMchEntryServiceImpl.java +++ b/mall-shop/src/main/java/com/suisung/mall/shop/store/service/impl/ShopMchEntryServiceImpl.java @@ -30,6 +30,7 @@ import com.suisung.mall.shop.components.TaskService; import com.suisung.mall.shop.esign.service.EsignContractFillingFileService; import com.suisung.mall.shop.esign.service.EsignContractService; import com.suisung.mall.shop.esign.service.EsignPlatformInfoService; +import com.suisung.mall.shop.lakala.service.impl.LklTkServiceImpl; import com.suisung.mall.shop.message.service.ShopMessageTemplateService; import com.suisung.mall.shop.store.mapper.ShopMchEntryMapper; import com.suisung.mall.shop.store.service.ShopMchEntryService; @@ -76,6 +77,10 @@ public class ShopMchEntryServiceImpl extends BaseServiceImpl updateWrapper = new UpdateWrapper<>(); - if (approvalStatus.equals(CommonConstant.Enable) && StrUtil.isBlank(approvalRemark)) { + if (approvalStatus.equals(CommonConstant.MCH_APPR_STA_LKL_PADDING) && StrUtil.isBlank(approvalRemark)) { // 审核通过 - approvalRemark = "审核通过,后续将向您发起签署电子合同流程。"; + approvalRemark = "初步审核通过,等待进一步审核。";//"审核通过,后续将向您发起签署电子合同流程。"; updateWrapper.set("signed_status", CommonConstant.CONTRACT_SIGN_STA_ING); - } else if (approvalStatus.equals(CommonConstant.Disable2) && StrUtil.isBlank(approvalRemark)) { + updateWrapper.set("approval_status", CommonConstant.MCH_APPR_STA_LKL_PADDING); // 进入拉卡拉审核中 + + log.info("准备提交给拉卡拉进件审核。"); + } else if (approvalStatus.equals(CommonConstant.MCH_APPR_STA_NOPASS) && StrUtil.isBlank(approvalRemark)) { approvalRemark = "审核未通过,请继续完善入驻资料信息。"; } - // 自动计算商家分成比例 + // 重要备注:自动计算商家分成比例 record.setSplit_ratio(shopBaseStoreCategoryService.getStoreCategoryRatio(record.getBiz_category())); updateWrapper.eq("id", id) @@ -496,21 +513,26 @@ public class ShopMchEntryServiceImpl extends BaseServiceImpl { - log.debug("###开始异步执行生成电子合同模版和填充模版数据,并生该商家和平台方签署的未盖章合同文件###"); - // 生成电子合同模版和填充模版数据,并生该商家和平台方签署的未盖章合同文件 - Boolean genSuccess = esignContractFillingFileService.fillDocTemplate(record.getLogin_mobile(), ""); - if (!genSuccess) { - log.error("###商家入驻电子合同生成失败###"); - } - - // 发短信通知商家,入驻申请已通过审核 - }); + // TODO 审核通过后,触发去拉卡拉进件,系统审核 + Pair resultPair = lklTkService.registrationMerchant(record.getLogin_mobile(), record.getBiz_license_number()); + if (!resultPair.getFirst()) { + return CommonResult.failed(resultPair.getSecond()); } +// if (approvalStatus.equals(CommonConstant.Enable)) { +// // 多线程执行电子合同生成和填充 +// taskService.executeTask(() -> { +// log.debug("###开始异步执行生成电子合同模版和填充模版数据,并生该商家和平台方签署的未盖章合同文件###"); +// // 生成电子合同模版和填充模版数据,并生该商家和平台方签署的未盖章合同文件 +// Boolean genSuccess = esignContractFillingFileService.fillDocTemplate(record.getLogin_mobile(), ""); +// if (!genSuccess) { +// log.error("###商家入驻电子合同生成失败###"); +// } +// +// // 发短信通知商家,入驻申请已通过审核 +// }); +// } + return CommonResult.success(); } @@ -631,7 +653,7 @@ public class ShopMchEntryServiceImpl extends BaseServiceImpl districtList = shopBaseDistrictService.getFullDistrictByDistrictCode(shopMchEntry.getCounty_id()); - shopStoreBase.setStore_district_id(shopBaseDistrictService.joinDistrict(districtList, 1, true, "/")); - shopStoreBase.setStore_area(shopBaseDistrictService.joinDistrict(districtList, 2, true, "/")); + // List districtList = shopBaseDistrictService.getFullDistrictByDistrictCode(shopMchEntry.getCounty_id()); + //shopStoreBase.setStore_district_id(shopBaseDistrictService.joinDistrict(districtList, 1, true, "/")); + // shopStoreBase.setStore_area(shopBaseDistrictService.joinDistrict(districtList, 2, true, "/")); + + shopStoreBase.setStore_district_id(shopMchEntry.getStore_district()); + shopStoreBase.setStore_area(shopMchEntry.getStore_area()); shopStoreBase.setStore_address(shopMchEntry.getStore_address()); shopStoreBase.setStore_longitude(shopMchEntry.getStore_longitude()); shopStoreBase.setStore_latitude(shopMchEntry.getStore_latitude());