商家入驻,逻辑修改,改成 mchid 为主,执行进件和生成电子合同。

This commit is contained in:
Jack 2025-08-05 23:43:55 +08:00
parent ee653ba1c0
commit 0dbe528ad4
9 changed files with 139 additions and 70 deletions

View File

@ -41,6 +41,7 @@ public class LklLedgerMerReceiverBind implements Serializable {
private String ret_url; private String ret_url;
private String apply_id; private String apply_id;
private Long platform_id; private Long platform_id;
private Long mch_id;
private String audit_status; private String audit_status;
private String audit_status_text; private String audit_status_text;
private String remark; private String remark;

View File

@ -58,7 +58,7 @@ public class LklTkController extends BaseControllerImpl {
@ApiOperation(value = "拉卡拉进件申请", notes = "拉卡拉进件申请") @ApiOperation(value = "拉卡拉进件申请", notes = "拉卡拉进件申请")
@RequestMapping(value = "/registrationMerchant", method = {RequestMethod.POST, RequestMethod.GET}) @RequestMapping(value = "/registrationMerchant", method = {RequestMethod.POST, RequestMethod.GET})
public CommonResult registrationMerchant(@RequestBody JSONObject paramsJSON) { public CommonResult registrationMerchant(@RequestBody JSONObject paramsJSON) {
Pair<Boolean, String> resp = lklTkService.registrationMerchant(paramsJSON.getStr("mchMobile"), paramsJSON.getStr("bizLicenseNumber")); Pair<Boolean, String> resp = lklTkService.registrationMerchant(paramsJSON.getLong("mchId"));
if (resp.getFirst()) { if (resp.getFirst()) {
return CommonResult.success(null, resp.getSecond()); return CommonResult.success(null, resp.getSecond());
} }

View File

@ -72,10 +72,10 @@ public interface LakalaApiService {
/** /**
* 商家申请入网电子合同 * 商家申请入网电子合同
* *
* @param mchMobile * @param mchId
* @return * @return
*/ */
Pair<Boolean, String> applyLedgerMerEc(String mchMobile); Pair<Boolean, String> applyLedgerMerEc(Long mchId);
/** /**
@ -211,5 +211,5 @@ public interface LakalaApiService {
* @return 响应结果 提交是否成功 * @return 响应结果 提交是否成功
*/ */
Boolean sacsSeparateCancel(String merchantNo, String originSeparateNo, String originOutSeparateNo, String outSeparateNo, String totalAmt); Boolean sacsSeparateCancel(String merchantNo, String originSeparateNo, String originOutSeparateNo, String outSeparateNo, String totalAmt);
} }

View File

@ -51,11 +51,12 @@ public interface LklLedgerReceiverService extends IBaseService<LklLedgerReceiver
/** /**
* 内部调用申请分账接收方 * 内部调用申请分账接收方
* *
* @param mchId
* @param merCupNo * @param merCupNo
* @param platformId * @param platformId
* @return * @return
*/ */
Boolean innerApplyLedgerReceiver(String merCupNo, Long platformId); Boolean innerApplyLedgerReceiver(Long mchId, String merCupNo, Long platformId);
/** /**
* 是否存在平台方的相关记录信息 * 是否存在平台方的相关记录信息

View File

@ -363,30 +363,32 @@ public class LakalaApiServiceImpl implements LakalaApiService {
/** /**
* 商家申请入网电子合同给到商家签署合同 * 商家申请入网电子合同给到商家签署合同
* *
* @param mchMobile * @param mchId
* @return * @return
*/ */
@Override @Override
public Pair<Boolean, String> applyLedgerMerEc(String mchMobile) { public Pair<Boolean, String> applyLedgerMerEc(Long mchId) {
log.debug("商家开始申请入网电子合同"); log.debug("商家开始申请入网电子合同");
if (StrUtil.isBlank(mchMobile)) { if (ObjectUtil.isEmpty(mchId)) {
return Pair.of(false, I18nUtil._("缺少商家必要参数!")); return Pair.of(false, I18nUtil._("缺少商家必要参数!"));
} }
// 获取商家信息 // 获取商家信息
ShopMchEntry shopMchEntry = shopMchEntryService.getShopMerchEntryByCondition(mchMobile, ""); ShopMchEntry shopMchEntry = shopMchEntryService.shopMerchEntryById(mchId);
if (shopMchEntry == null) { if (shopMchEntry == null) {
return Pair.of(false, I18nUtil._("缺少商家相关信息!")); return Pair.of(false, I18nUtil._("缺少商家相关信息!"));
} }
LklLedgerEc lklLedgerEc = lklLedgerEcService.getByMchMobile(shopMchEntry.getId(), mchMobile, "", CommonConstant.Enable); String contractMobile = shopMchEntry.getLegal_person_mobile();
LklLedgerEc lklLedgerEc = lklLedgerEcService.getByMchMobile(shopMchEntry.getId(), null, "", CommonConstant.Enable);
if (lklLedgerEc != null if (lklLedgerEc != null
&& "COMPLETED".equals(lklLedgerEc.getEc_status())) { && "COMPLETED".equals(lklLedgerEc.getEc_status())) {
// TODO 这种情况需要怎么处理 // TODO 这种情况需要怎么处理
// 更新拉卡拉的电子合同信息到商家入驻表中 // 更新拉卡拉的电子合同信息到商家入驻表中
// return Pair.of(true, I18nUtil._("已提交进件申请,请等待机构审核!")); // return Pair.of(true, I18nUtil._("已提交进件申请,请等待机构审核!"));
log.info("商户:{} 电子合同已签署过,重新提交将被覆盖!", mchMobile); log.info("商户:{} 电子合同已签署过,重新提交将被覆盖!", mchId);
} }
// 是企业类型商家 // 是企业类型商家
@ -402,7 +404,7 @@ public class LakalaApiServiceImpl implements LakalaApiService {
String larIdCard = isQy ? shopMchEntry.getLegal_person_id_number() : shopMchEntry.getIndividual_id_number(); String larIdCard = isQy ? shopMchEntry.getLegal_person_id_number() : shopMchEntry.getIndividual_id_number();
reqData.put("cert_name", larName); reqData.put("cert_name", larName);
reqData.put("cert_no", larIdCard); reqData.put("cert_no", larIdCard);
reqData.put("mobile", shopMchEntry.getLogin_mobile()); reqData.put("mobile", contractMobile);
if (isQy) { if (isQy) {
reqData.put("business_license_no", shopMchEntry.getBiz_license_number()); reqData.put("business_license_no", shopMchEntry.getBiz_license_number());
@ -458,18 +460,18 @@ public class LakalaApiServiceImpl implements LakalaApiService {
ecParams.put("B24", isQy ? shopMchEntry.getLegal_person_name() : shopMchEntry.getIndividual_id_name()); ecParams.put("B24", isQy ? shopMchEntry.getLegal_person_name() : shopMchEntry.getIndividual_id_name());
ecParams.put("B25", isQy ? shopMchEntry.getLegal_person_id_number() : shopMchEntry.getIndividual_id_number()); ecParams.put("B25", isQy ? shopMchEntry.getLegal_person_id_number() : shopMchEntry.getIndividual_id_number());
ecParams.put("B26", isQy ? shopMchEntry.getLegal_person_mobile() : shopMchEntry.getLogin_mobile()); ecParams.put("B26", shopMchEntry.getLegal_person_mobile());
ecParams.put("B27", shopMchEntry.getContact_name()); ecParams.put("B27", shopMchEntry.getContact_name());
ecParams.put("B28", shopMchEntry.getEmail()); ecParams.put("B28", shopMchEntry.getEmail());
ecParams.put("B31", shopMchEntry.getStore_name()); ecParams.put("B31", shopMchEntry.getStore_name());
ecParams.put("B32", shopMchEntry.getContact_name()); ecParams.put("B32", shopMchEntry.getContact_name());
ecParams.put("B33", shopMchEntry.getStore_address()); ecParams.put("B33", shopMchEntry.getStore_address());
ecParams.put("B34", shopMchEntry.getLogin_mobile()); ecParams.put("B34", contractMobile);
ecParams.put("D1", shopMchEntry.getBank_name()); ecParams.put("D1", shopMchEntry.getBank_name());
ecParams.put("D2", signDate); ecParams.put("D2", signDate);
ecParams.put("D4", platformName); ecParams.put("D4", platformName);
ecParams.put("D5", shopMchEntry.getLogin_mobile()); ecParams.put("D5", contractMobile);
ecParams.put("D7", signDate); ecParams.put("D7", signDate);
ecParams.put("D9", signDate); ecParams.put("D9", signDate);
ecParams.put("D11", signDate); ecParams.put("D11", signDate);
@ -491,9 +493,6 @@ public class LakalaApiServiceImpl implements LakalaApiService {
reqBody.put("req_data", reqData); reqBody.put("req_data", reqData);
String reqUrl = serverUrl + "/api/v3/mms/open_api/ec/apply"; String reqUrl = serverUrl + "/api/v3/mms/open_api/ec/apply";
if (isLklProd) {
reqUrl = serverUrl + "/api/v3/mms/open_api/ec/apply";
}
String privateKey = LakalaUtil.getResourceFile(priKeyPath, false, true); String privateKey = LakalaUtil.getResourceFile(priKeyPath, false, true);
String authorization = LakalaUtil.genAuthorization(privateKey, appId, serialNo, reqBody.toString()); String authorization = LakalaUtil.genAuthorization(privateKey, appId, serialNo, reqBody.toString());
@ -509,29 +508,30 @@ public class LakalaApiServiceImpl implements LakalaApiService {
if (ObjectUtil.isEmpty(response) || response.getStatusCode() != HttpStatus.OK) { if (ObjectUtil.isEmpty(response) || response.getStatusCode() != HttpStatus.OK) {
errMsg = "申请入网电子合同失败,无响应数据!"; errMsg = "申请入网电子合同失败,无响应数据!";
shopMchEntryService.updateMerchEntryApprovalByMchId(shopMchEntry.getId(), "", CommonConstant.MCH_APPR_STA_LKL_NOPASS, errMsg); shopMchEntryService.updateMerchEntryApprovalByMchId(shopMchEntry.getId(), CommonConstant.MCH_APPR_STA_LKL_NOPASS, errMsg);
return Pair.of(false, errMsg); return Pair.of(false, errMsg);
} }
JSONObject respBody = response.getBody(); JSONObject respBody = response.getBody();
if (ObjectUtil.isNotEmpty(respBody) && !lklSuccessCode.equals(respBody.getStr("code"))) { if (ObjectUtil.isNotEmpty(respBody) && !lklSuccessCode.equals(respBody.getStr("code"))) {
errMsg = "申请入网电子合同失败," + (StrUtil.isBlank(respBody.getStr("msg")) ? "返回状态有误" : respBody.getStr("msg")); errMsg = "申请入网电子合同失败," + (StrUtil.isBlank(respBody.getStr("msg")) ? "返回状态有误" : respBody.getStr("msg"));
shopMchEntryService.updateMerchEntryApprovalByMchId(shopMchEntry.getId(), "", CommonConstant.MCH_APPR_STA_LKL_NOPASS, errMsg); shopMchEntryService.updateMerchEntryApprovalByMchId(shopMchEntry.getId(), CommonConstant.MCH_APPR_STA_LKL_NOPASS, errMsg);
return Pair.of(false, errMsg); return Pair.of(false, errMsg);
} }
JSONObject respData = respBody.getJSONObject("resp_data"); JSONObject respData = respBody.getJSONObject("resp_data");
if (respData == null) { if (respData == null) {
errMsg = "申请入网电子合同失败无data返回数据"; errMsg = "申请入网电子合同失败无data返回数据";
shopMchEntryService.updateMerchEntryApprovalByMchId(shopMchEntry.getId(), "", CommonConstant.MCH_APPR_STA_LKL_NOPASS, errMsg); shopMchEntryService.updateMerchEntryApprovalByMchId(shopMchEntry.getId(), CommonConstant.MCH_APPR_STA_LKL_NOPASS, errMsg);
return Pair.of(false, errMsg); return Pair.of(false, errMsg);
} }
// 商家入网申请电子合同处理数据 // 商家入网申请电子合同处理数据
// 先写入本地数据库表中 // 先写入本地数据库表中
LklLedgerEc record = new LklLedgerEc(); LklLedgerEc record = new LklLedgerEc();
record.setMch_id(shopMchEntry.getId()); record.setMch_id(shopMchEntry.getId());
record.setMch_mobile(mchMobile); record.setMch_mobile(contractMobile);
record.setReq_params(reqBody.toString()); record.setReq_params(reqBody.toString());
record.setNotify_url(retUrl); record.setNotify_url(retUrl);
record.setEc_apply_id(respData.getLong("ec_apply_id")); record.setEc_apply_id(respData.getLong("ec_apply_id"));
@ -542,7 +542,7 @@ public class LakalaApiServiceImpl implements LakalaApiService {
Boolean success = lklLedgerEcService.addOrUpdateByMchId(record); Boolean success = lklLedgerEcService.addOrUpdateByMchId(record);
if (!success) { if (!success) {
errMsg = "申请入网电子合同失败,数据保存失败"; errMsg = "申请入网电子合同失败,数据保存失败";
shopMchEntryService.updateMerchEntryApprovalByMchId(shopMchEntry.getId(), "", CommonConstant.MCH_APPR_STA_NOPASS, errMsg); shopMchEntryService.updateMerchEntryApprovalByMchId(shopMchEntry.getId(), CommonConstant.MCH_APPR_STA_NOPASS, errMsg);
return Pair.of(false, errMsg); return Pair.of(false, errMsg);
} }
@ -551,7 +551,7 @@ public class LakalaApiServiceImpl implements LakalaApiService {
// 发短信给商家及时签署合同 SMS_488465246 // 发短信给商家及时签署合同 SMS_488465246
// 小发同城商家恭喜您的开店入驻申请已审核通过请尽快登录APP平台签署电子合同签署链接24小时内有效逾期需重新提交申请如有疑问请联系客服感谢您的支持 // 小发同城商家恭喜您的开店入驻申请已审核通过请尽快登录APP平台签署电子合同签署链接24小时内有效逾期需重新提交申请如有疑问请联系客服感谢您的支持
shopMessageTemplateService.aliyunSmsSend(mchMobile, "SMS_489795044", null);//SMS_479760276 shopMessageTemplateService.aliyunSmsSend(contractMobile, "SMS_489795044", null);//SMS_479760276
JSONObject payload = new JSONObject(); JSONObject payload = new JSONObject();
payload.put("category", CommonConstant.PUSH_MSG_CATE_EC); payload.put("category", CommonConstant.PUSH_MSG_CATE_EC);
@ -735,6 +735,13 @@ public class LakalaApiServiceImpl implements LakalaApiService {
return respData; return respData;
} }
Long mchId = lklLedgerEc.getMch_id();
if (ObjectUtil.isEmpty(mchId)) {
log.error("入网电子合同申请回调:找不到商家关联数据");
respData.put("message", "找不到商家关联数据!");
return respData;
}
// if ("COMPLETED".equals(lklLedgerEc.getEc_status())) { // if ("COMPLETED".equals(lklLedgerEc.getEc_status())) {
// ShopMchEntry shopMchEntry = shopMchEntryService.shopMerchEntryById(lklLedgerEc.getMch_id()); // ShopMchEntry shopMchEntry = shopMchEntryService.shopMerchEntryById(lklLedgerEc.getMch_id());
// if (shopMchEntry != null // if (shopMchEntry != null
@ -770,24 +777,24 @@ public class LakalaApiServiceImpl implements LakalaApiService {
// 更新本地数据状态和合同编号合同名字 // 更新本地数据状态和合同编号合同名字
Boolean success = lklLedgerEcService.updateByApplyId(updRecord); Boolean success = lklLedgerEcService.updateByApplyId(updRecord);
if (!success) { if (!success) {
shopMchEntryService.updateMerchEntryApprovalByMchId(lklLedgerEc.getMch_id(), "", CommonConstant.MCH_APPR_STA_LKL_NOPASS, "更新电子合同失败!"); shopMchEntryService.updateMerchEntryApprovalByMchId(mchId, CommonConstant.MCH_APPR_STA_LKL_NOPASS, "更新电子合同失败!");
respData.set("code", "FAIL").set("message", "更新电子合同失败!"); respData.set("code", "FAIL").set("message", "更新电子合同失败!");
return respData; return respData;
} }
// 更新商家入驻表的合同编号和签署地址更改状态 // 更新商家入驻表的合同编号和签署地址更改状态
shopMchEntryService.updateMerchantLklElectronicContractInfo(lklLedgerEc.getMch_id(), ecNo, paramsJSON.getStr("ecName"), lklLedgerEc.getResult_url(), ecCosFileUrl, eclklFilePath); shopMchEntryService.updateMerchantLklElectronicContractInfo(mchId, ecNo, paramsJSON.getStr("ecName"), lklLedgerEc.getResult_url(), ecCosFileUrl, eclklFilePath);
// 商家电子合同签署完毕后收到异步通知触发拉卡拉商家进件重要环节 // 商家电子合同签署完毕后收到异步通知触发拉卡拉商家进件重要环节
Pair<Boolean, String> resultPair = lklTkService.registrationMerchant(lklLedgerEc.getMch_mobile(), ""); Pair<Boolean, String> resultPair = lklTkService.registrationMerchant(mchId);
if (!resultPair.getFirst()) { if (!resultPair.getFirst()) {
errMsg = resultPair.getSecond(); errMsg = resultPair.getSecond();
shopMchEntryService.updateMerchEntryApprovalByMchId(lklLedgerEc.getMch_id(), "", CommonConstant.MCH_APPR_STA_LKL_NOPASS, errMsg); shopMchEntryService.updateMerchEntryApprovalByMchId(mchId, CommonConstant.MCH_APPR_STA_LKL_NOPASS, errMsg);
log.error(errMsg); log.error(errMsg);
throw new ApiException(errMsg); throw new ApiException(errMsg);
} }
shopMchEntryService.updateMerchEntryApprovalByMchId(lklLedgerEc.getMch_id(), "", CommonConstant.MCH_APPR_STA_LKL_PADDING, "已提交进件申请,请等待机构审核!"); shopMchEntryService.updateMerchEntryApprovalByMchId(mchId, CommonConstant.MCH_APPR_STA_LKL_PADDING, "已提交进件申请,请等待机构审核!");
respData.put("code", "SUCCESS"); respData.put("code", "SUCCESS");
respData.put("message", "操作成功!"); respData.put("message", "操作成功!");
@ -916,7 +923,7 @@ public class LakalaApiServiceImpl implements LakalaApiService {
Long receiverCnt = lklLedgerReceiverService.countByCondition("", "", shopMchEntry.getDistributor_id()); Long receiverCnt = lklLedgerReceiverService.countByCondition("", "", shopMchEntry.getDistributor_id());
if (receiverCnt <= 0) { if (receiverCnt <= 0) {
// 1新增一个接收方记录起码要一个平台方代理商根据入驻信息新增 // 1新增一个接收方记录起码要一个平台方代理商根据入驻信息新增
Boolean success = lklLedgerReceiverService.innerApplyLedgerReceiver(merCupNo, shopMchEntry.getDistributor_id()); Boolean success = lklLedgerReceiverService.innerApplyLedgerReceiver(shopMchEntry.getId(), merCupNo, shopMchEntry.getDistributor_id());
if (!success) { if (!success) {
return CommonResult.failed("申请分账接收方失败"); return CommonResult.failed("申请分账接收方失败");
} }
@ -979,7 +986,7 @@ public class LakalaApiServiceImpl implements LakalaApiService {
log.warn("商户分账业务申请回调:审核未通过,状态={}", auditStatus); log.warn("商户分账业务申请回调:审核未通过,状态={}", auditStatus);
if (lklLedgerMember != null) { if (lklLedgerMember != null) {
shopMchEntryService.updateMerchEntryApprovalByMchId( shopMchEntryService.updateMerchEntryApprovalByMchId(
lklLedgerMember.getMch_id(), "", CommonConstant.MCH_APPR_STA_NOPASS, "分账业务申请被驳回:" + auditStatusText lklLedgerMember.getMch_id(), CommonConstant.MCH_APPR_STA_NOPASS, "分账业务申请被驳回:" + auditStatusText
); );
} }
return JSONUtil.createObj().put("code", "FAIL").put("message", "商户分账申请被驳回!"); return JSONUtil.createObj().put("code", "FAIL").put("message", "商户分账申请被驳回!");
@ -1018,7 +1025,7 @@ public class LakalaApiServiceImpl implements LakalaApiService {
// 更新商户审批状态 // 更新商户审批状态
if (lklLedgerMember != null) { // 防御性判断理论上此时应为null但保留安全检查 if (lklLedgerMember != null) { // 防御性判断理论上此时应为null但保留安全检查
shopMchEntryService.updateMerchEntryApprovalByMchId( shopMchEntryService.updateMerchEntryApprovalByMchId(
lklLedgerMember.getMch_id(), "", CommonConstant.MCH_APPR_STA_NOPASS, errMsg lklLedgerMember.getMch_id(), CommonConstant.MCH_APPR_STA_NOPASS, errMsg
); );
} }
return JSONUtil.createObj().put("code", "FAIL").put("message", errMsg); return JSONUtil.createObj().put("code", "FAIL").put("message", errMsg);
@ -1027,7 +1034,7 @@ public class LakalaApiServiceImpl implements LakalaApiService {
log.error("商户分账业务申请回调:", e); log.error("商户分账业务申请回调:", e);
if (lklLedgerMember != null) { // 防御性判断理论上此时应为null但保留安全检查 if (lklLedgerMember != null) { // 防御性判断理论上此时应为null但保留安全检查
shopMchEntryService.updateMerchEntryApprovalByMchId( shopMchEntryService.updateMerchEntryApprovalByMchId(
lklLedgerMember.getMch_id(), "", CommonConstant.MCH_APPR_STA_NOPASS, "商户分账业务绑定或状态更新失败" lklLedgerMember.getMch_id(), CommonConstant.MCH_APPR_STA_NOPASS, "商户分账业务绑定或状态更新失败"
); );
} }
return JSONUtil.createObj().put("code", "FAIL").put("message", "商户分账业务绑定或状态更新失败"); return JSONUtil.createObj().put("code", "FAIL").put("message", "商户分账业务绑定或状态更新失败");
@ -1060,6 +1067,8 @@ public class LakalaApiServiceImpl implements LakalaApiService {
return CommonResult.success(existingReceiver, "该接收方已创建过!"); return CommonResult.success(existingReceiver, "该接收方已创建过!");
} }
Long mchId = paramsJSON.getLong("mchId");
// 1. 配置初始化 // 1. 配置初始化
initLKLSDK(); initLKLSDK();
@ -1156,7 +1165,7 @@ public class LakalaApiServiceImpl implements LakalaApiService {
? lakalaRespJSON.getStr("retMsg", "未知错误") ? lakalaRespJSON.getStr("retMsg", "未知错误")
: "响应解析失败"; : "响应解析失败";
shopMchEntryService.updateMerchEntryApprovalByMchId( shopMchEntryService.updateMerchEntryApprovalByMchId(
null, mchMobile, CommonConstant.MCH_APPR_STA_NOPASS, "创建分账接收方失败:" + lakalaRespJSON.getStr("retMsg") mchId, CommonConstant.MCH_APPR_STA_NOPASS, "创建分账接收方失败:" + lakalaRespJSON.getStr("retMsg")
); );
return CommonResult.failed(I18nUtil._(errorMsg)); return CommonResult.failed(I18nUtil._(errorMsg));
@ -1184,7 +1193,7 @@ public class LakalaApiServiceImpl implements LakalaApiService {
} catch (Exception e) { } catch (Exception e) {
shopMchEntryService.updateMerchEntryApprovalByMchId( shopMchEntryService.updateMerchEntryApprovalByMchId(
null, mchMobile, CommonConstant.MCH_APPR_STA_NOPASS, "创建分账接收方失败:" + e.getMessage() mchId, CommonConstant.MCH_APPR_STA_NOPASS, "创建分账接收方失败:" + e.getMessage()
); );
log.error("接收方创建失败:{}", e.getMessage(), e); log.error("接收方创建失败:{}", e.getMessage(), e);
@ -1312,6 +1321,7 @@ public class LakalaApiServiceImpl implements LakalaApiService {
paramsJSON.set("ret_url", retUrl); paramsJSON.set("ret_url", retUrl);
paramsJSON.set("remark", respJson.getStr("retMsg")); paramsJSON.set("remark", respJson.getStr("retMsg"));
paramsJSON.set("platform_id", receiver.getPlatform_id()); paramsJSON.set("platform_id", receiver.getPlatform_id());
paramsJSON.set("mch_id", lklLedgerMember.getMch_id());
// 转换JSON键名格式并保存 // 转换JSON键名格式并保存
String snakeJson = StringUtils.convertCamelToSnake(paramsJSON.toString()); String snakeJson = StringUtils.convertCamelToSnake(paramsJSON.toString());
@ -1333,7 +1343,7 @@ public class LakalaApiServiceImpl implements LakalaApiService {
if (successCount == 0) { if (successCount == 0) {
if (lklLedgerMember != null) { if (lklLedgerMember != null) {
shopMchEntryService.updateMerchEntryApprovalByMchId( shopMchEntryService.updateMerchEntryApprovalByMchId(
lklLedgerMember.getMch_id(), "", CommonConstant.MCH_APPR_STA_NOPASS, "分账接收方绑定失败:" lklLedgerMember.getMch_id(), CommonConstant.MCH_APPR_STA_NOPASS, "分账接收方绑定失败:"
); );
} }
return Pair.of(false, "分账接收方绑定失败"); return Pair.of(false, "分账接收方绑定失败");

View File

@ -215,12 +215,13 @@ public class LklLedgerReceiverServiceImpl extends BaseServiceImpl<LklLedgerRecei
/** /**
* 内部调用申请一个或多个分账接收方平台方和代理商 * 内部调用申请一个或多个分账接收方平台方和代理商
* *
* @param mchId
* @param merCupNo 用于标记接收方绑定merCupNo商家 * @param merCupNo 用于标记接收方绑定merCupNo商家
* @param platformId * @param platformId
* @return * @return
*/ */
@Override @Override
public Boolean innerApplyLedgerReceiver(String merCupNo, Long platformId) { public Boolean innerApplyLedgerReceiver(Long mchId, String merCupNo, Long platformId) {
// 接收方至少有一个平台方 // 接收方至少有一个平台方
JSONArray buildApplyLedgerReceiverReqParams = buildApplyLedgerReceiverReqParams(platformId); JSONArray buildApplyLedgerReceiverReqParams = buildApplyLedgerReceiverReqParams(platformId);
if (buildApplyLedgerReceiverReqParams == null || buildApplyLedgerReceiverReqParams.isEmpty()) { if (buildApplyLedgerReceiverReqParams == null || buildApplyLedgerReceiverReqParams.isEmpty()) {
@ -231,6 +232,7 @@ public class LklLedgerReceiverServiceImpl extends BaseServiceImpl<LklLedgerRecei
int successCnt = 0; int successCnt = 0;
for (JSONObject reqParam : buildApplyLedgerReceiverReqParams.jsonIter()) { for (JSONObject reqParam : buildApplyLedgerReceiverReqParams.jsonIter()) {
log.debug("申请分账接收方参数:{}", reqParam.toString()); log.debug("申请分账接收方参数:{}", reqParam.toString());
reqParam.put("mchId", mchId); // 附加入驻商户自增ID
CommonResult result = lakalaApiService.applyLedgerReceiver(reqParam); CommonResult result = lakalaApiService.applyLedgerReceiver(reqParam);
if (result == null || result.getStatus() != ResultCode.SUCCESS.getStatus()) { if (result == null || result.getStatus() != ResultCode.SUCCESS.getStatus()) {
log.error("申请分账接收方失败:{}", result.getMsg()); log.error("申请分账接收方失败:{}", result.getMsg());

View File

@ -320,10 +320,14 @@ public class LklTkServiceImpl {
* <p> * <p>
* 参考拉卡拉给的独立文档2拓客SAAS商户管理接口().docx * 参考拉卡拉给的独立文档2拓客SAAS商户管理接口().docx
* *
* @param mchMobile 商家手机号 * @param mchId 入驻商家自增Id
* @return * @return
*/ */
public Pair<Boolean, String> registrationMerchant(String mchMobile, String bizLicenseNumber) { public Pair<Boolean, String> registrationMerchant(Long mchId) {
if (ObjectUtil.isEmpty(mchId)) {
return Pair.of(false, "入驻商户Id不能为空");
}
String authorization = getLklTkAuthorization(); String authorization = getLklTkAuthorization();
if (StrUtil.isBlank(authorization)) { if (StrUtil.isBlank(authorization)) {
return Pair.of(false, "获取拉卡拉token失败"); return Pair.of(false, "获取拉卡拉token失败");
@ -333,7 +337,7 @@ public class LklTkServiceImpl {
header.put("Authorization", getLklTkAuthorization()); header.put("Authorization", getLklTkAuthorization());
// 获取商家入驻信息组成请求参数 // 获取商家入驻信息组成请求参数
ShopMchEntry shopMchEntry = shopMchEntryService.getShopMerchEntryByCondition(mchMobile, bizLicenseNumber); ShopMchEntry shopMchEntry = shopMchEntryService.shopMerchEntryById(mchId);
if (ObjectUtil.isEmpty(shopMchEntry)) { if (ObjectUtil.isEmpty(shopMchEntry)) {
return Pair.of(false, "商家入驻信息不存在"); return Pair.of(false, "商家入驻信息不存在");
} }
@ -379,7 +383,7 @@ public class LklTkServiceImpl {
formData.put("licenseDtEnd", shopMchEntry.getBiz_license_period_end()); // 长期9999-12-31 formData.put("licenseDtEnd", shopMchEntry.getBiz_license_period_end()); // 长期9999-12-31
} }
formData.put("contactMobile", mchMobile); formData.put("contactMobile", shopMchEntry.getLegal_person_mobile());
formData.put("contactName", shopMchEntry.getContact_name());// 联系人姓名 formData.put("contactName", shopMchEntry.getContact_name());// 联系人姓名
formData.put("contractNo", shopMchEntry.getLkl_ec_no()); // 拉卡拉入网合同编号 formData.put("contractNo", shopMchEntry.getLkl_ec_no()); // 拉卡拉入网合同编号
@ -517,7 +521,7 @@ public class LklTkServiceImpl {
if (response.getStatusCode() != HttpStatus.OK && ObjectUtil.isNotEmpty(respBody)) { if (response.getStatusCode() != HttpStatus.OK && ObjectUtil.isNotEmpty(respBody)) {
String errMsg = respBody.getStr("message") == null ? "未知错误" : respBody.getStr("message"); String errMsg = respBody.getStr("message") == null ? "未知错误" : respBody.getStr("message");
shopMchEntryService.updateMerchEntryApprovalByMchId(shopMchEntry.getId(), "", CommonConstant.MCH_APPR_STA_LKL_NOPASS, "进件失败:" + errMsg); shopMchEntryService.updateMerchEntryApprovalByMchId(shopMchEntry.getId(), CommonConstant.MCH_APPR_STA_LKL_NOPASS, "进件失败:" + errMsg);
return Pair.of(false, "进件失败:" + errMsg); return Pair.of(false, "进件失败:" + errMsg);
} }
@ -525,22 +529,22 @@ public class LklTkServiceImpl {
// 更改入驻记录的拉卡拉内部商户号和进件请求参数 // 更改入驻记录的拉卡拉内部商户号和进件请求参数
String lklMerInnerNo = respBody.getStr("merchantNo"); //拉卡拉内部商户号 String lklMerInnerNo = respBody.getStr("merchantNo"); //拉卡拉内部商户号
// 表中的内部外部商户号暂时都传同一个内部商户号以便异步通知更改记录 // 表中的内部外部商户号暂时都传同一个内部商户号以便异步通知更改记录
Boolean success = shopMchEntryService.updateMerchEntryLklMerCupNo(mchMobile, CommonConstant.Disable2, lklMerInnerNo, lklMerInnerNo, formData.toString(), respBody.toString()); Boolean success = shopMchEntryService.updateMerchEntryLklMerCupNo(mchId, CommonConstant.Disable2, lklMerInnerNo, lklMerInnerNo, formData.toString(), respBody.toString());
if (!success) { if (!success) {
shopMchEntryService.updateMerchEntryApprovalByMchId(shopMchEntry.getId(), "", CommonConstant.MCH_APPR_STA_LKL_NOPASS, "进件成功,但更新商户号失败!"); shopMchEntryService.updateMerchEntryApprovalByMchId(shopMchEntry.getId(), CommonConstant.MCH_APPR_STA_LKL_NOPASS, "进件成功,但更新商户号失败!");
return Pair.of(false, "请求进件成功,但更新商户号失败!"); return Pair.of(false, "请求进件成功,但更新商户号失败!");
} }
} catch (Exception e) { } catch (Exception e) {
logger.error("拉卡拉进件异常:{}", e.getMessage()); logger.error("拉卡拉进件异常:{}", e.getMessage());
shopMchEntryService.updateMerchEntryApprovalByMchId(shopMchEntry.getId(), "", CommonConstant.MCH_APPR_STA_LKL_NOPASS, "进件失败:" + e.getMessage()); shopMchEntryService.updateMerchEntryApprovalByMchId(shopMchEntry.getId(), CommonConstant.MCH_APPR_STA_LKL_NOPASS, "进件失败:" + e.getMessage());
return Pair.of(false, "进件失败:" + e.getMessage()); return Pair.of(false, "进件失败:" + e.getMessage());
} }
shopMchEntryService.updateMerchEntryApprovalByMchId(shopMchEntry.getId(), "", CommonConstant.MCH_APPR_STA_LKL_NOPASS, "商户进件:提交进件成功,请等待审核!"); shopMchEntryService.updateMerchEntryApprovalByMchId(shopMchEntry.getId(), CommonConstant.MCH_APPR_STA_LKL_NOPASS, "商户进件:提交进件成功,请等待审核!");
return Pair.of(true, "提交进件成功,请等待审核!"); return Pair.of(true, "提交进件成功,请等待审核!");
} }
@ -601,7 +605,7 @@ public class LklTkServiceImpl {
// 校验审核状态 // 校验审核状态
if (!"SUCCESS".equals(auditStatus) && !"REVIEW_PASS".equals(auditStatus)) { if (!"SUCCESS".equals(auditStatus) && !"REVIEW_PASS".equals(auditStatus)) {
logger.debug("返回的审核状态:{}", auditStatus); logger.debug("返回的审核状态:{}", auditStatus);
shopMchEntryService.updateMerchEntryApprovalByMchId(shopMchEntry.getId(), "", CommonConstant.MCH_APPR_STA_LKL_NOPASS, "进件失败:" + dataJSON.getStr("remark")); shopMchEntryService.updateMerchEntryApprovalByMchId(shopMchEntry.getId(), CommonConstant.MCH_APPR_STA_LKL_NOPASS, "进件失败:" + dataJSON.getStr("remark"));
return new JSONObject().set("code", "FAIL").set("message", "返回审核状态有误"); return new JSONObject().set("code", "FAIL").set("message", "返回审核状态有误");
} }
@ -664,7 +668,7 @@ public class LklTkServiceImpl {
Pair<Boolean, String> retPair = lakalaApiService.innerApplyLedgerMer(merCupNo); Pair<Boolean, String> retPair = lakalaApiService.innerApplyLedgerMer(merCupNo);
// 2新增一个接收方记录起码要一个平台方代理商根据入驻信息新增 // 2新增一个接收方记录起码要一个平台方代理商根据入驻信息新增
Boolean genSuccess = lklLedgerReceiverService.innerApplyLedgerReceiver(merCupNo, shopMchEntry.getDistributor_id()); Boolean genSuccess = lklLedgerReceiverService.innerApplyLedgerReceiver(shopMchEntry.getId(), merCupNo, shopMchEntry.getDistributor_id());
// 统一处理分账申请结果 // 统一处理分账申请结果
if (retPair.getFirst() && genSuccess) { if (retPair.getFirst() && genSuccess) {

View File

@ -167,7 +167,7 @@ public interface ShopMchEntryService {
/** /**
* 更新商家入驻申请的拉卡拉商户号 * 更新商家入驻申请的拉卡拉商户号
* *
* @param loginMobile 商家注册的手机号 * @param mchId 入驻商家自增Id
* @param lklAuditStatus 拉卡拉审核状态 * @param lklAuditStatus 拉卡拉审核状态
* @param lklMerCupNo 拉卡拉银联商户号 * @param lklMerCupNo 拉卡拉银联商户号
* @param lklMerInnerNo 拉卡拉内部商户号 * @param lklMerInnerNo 拉卡拉内部商户号
@ -175,7 +175,7 @@ public interface ShopMchEntryService {
* @param lklTkRegResp 进件返回的数据 * @param lklTkRegResp 进件返回的数据
* @return * @return
*/ */
Boolean updateMerchEntryLklMerCupNo(String loginMobile, Integer lklAuditStatus, String lklMerCupNo, String lklMerInnerNo, String lklTkRegParams, String lklTkRegResp); Boolean updateMerchEntryLklMerCupNo(Long mchId, Integer lklAuditStatus, String lklMerCupNo, String lklMerInnerNo, String lklTkRegParams, String lklTkRegResp);
/** /**
* 根据拉卡拉内部商户号更新商家入驻申请的拉卡拉审核状态和响应数据 * 根据拉卡拉内部商户号更新商家入驻申请的拉卡拉审核状态和响应数据
@ -216,13 +216,12 @@ public interface ShopMchEntryService {
/** /**
* 更新商家入驻申请的审批状态和审批备注 * 更新商家入驻申请的审批状态和审批备注
* *
* @param mchId 商家入驻申请 IDmchId和mchMobile至少必填一个 * @param mchId 商家入驻申请 IDmchId 必填
* @param mchMobile 商家注册的手机号 mchId和mchMobile至少必填一个
* @param approvalStatus 入驻审批状态1-已通过2-未通过3-待审核4-未申请过5-已提交拉卡拉审核21-拉卡拉审核未通过 * @param approvalStatus 入驻审批状态1-已通过2-未通过3-待审核4-未申请过5-已提交拉卡拉审核21-拉卡拉审核未通过
* @param approvalRemark 审批备注 * @param approvalRemark 审批备注
* @return * @return
*/ */
Boolean updateMerchEntryApprovalByMchId(Long mchId, String mchMobile, Integer approvalStatus, String approvalRemark); Boolean updateMerchEntryApprovalByMchId(Long mchId, Integer approvalStatus, String approvalRemark);
/** /**
* 更新商家入驻申请的审批状态和审批备注 * 更新商家入驻申请的审批状态和审批备注

View File

@ -740,7 +740,7 @@ public class ShopMchEntryServiceImpl extends BaseServiceImpl<ShopMchEntryMapper,
// 平台人工审核通过后触发去拉卡拉商家入网电子合同签署 // 平台人工审核通过后触发去拉卡拉商家入网电子合同签署
// 下一步商家入网电子合同签署完毕后收到异步通知触发拉卡拉商家进件重要环节 // 下一步商家入网电子合同签署完毕后收到异步通知触发拉卡拉商家进件重要环节
try { try {
Pair<Boolean, String> resultPair = lakalaApiService.applyLedgerMerEc(record.getLogin_mobile()); Pair<Boolean, String> resultPair = lakalaApiService.applyLedgerMerEc(id);
if (!resultPair.getFirst()) { if (!resultPair.getFirst()) {
log.warn("拉卡拉电子合同签署申请失败: {}", resultPair.getSecond()); log.warn("拉卡拉电子合同签署申请失败: {}", resultPair.getSecond());
return CommonResult.failed(resultPair.getSecond()); return CommonResult.failed(resultPair.getSecond());
@ -903,12 +903,29 @@ public class ShopMchEntryServiceImpl extends BaseServiceImpl<ShopMchEntryMapper,
/** /**
* 根据商户 ID 获取商户入驻信息 * 根据商户 ID 获取商户入驻信息
* *
* @param mchId * @param mchId 商户ID
* @return * @return 商户入驻信息如果不存在则返回 null
*/ */
@Override @Override
public ShopMchEntry shopMerchEntryById(Long mchId) { public ShopMchEntry shopMerchEntryById(Long mchId) {
return get(mchId); // 1. 参数校验商户ID不能为空
if (mchId == null) {
return null;
}
try {
// 2. 构建查询条件只查询有效状态的记录
QueryWrapper<ShopMchEntry> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("id", mchId) // 修正字段名应为"id"而非"mch_id"
.eq("status", CommonConstant.Enable);
// 3. 执行查询并返回结果
return findOne(queryWrapper);
} catch (Exception e) {
// 4. 异常处理记录异常信息避免程序中断
log.error("根据商户ID获取商户入驻信息时发生异常, mchId: {}", mchId, e);
return null; // 发生异常时返回null
}
} }
/** /**
@ -1062,13 +1079,13 @@ public class ShopMchEntryServiceImpl extends BaseServiceImpl<ShopMchEntryMapper,
} }
@Override @Override
public Boolean updateMerchEntryLklMerCupNo(String loginMobile, Integer lklAuditStatus, String lklMerCupNo, String lklMerInnerNo, String lklTkRegParams, String lklTkRegResp) { public Boolean updateMerchEntryLklMerCupNo(Long mchId, Integer lklAuditStatus, String lklMerCupNo, String lklMerInnerNo, String lklTkRegParams, String lklTkRegResp) {
if (StrUtil.isBlank(loginMobile) && StrUtil.isBlank(lklMerCupNo)) { if (ObjectUtil.isEmpty(mchId) && StrUtil.isBlank(lklMerCupNo)) {
return false; return false;
} }
UpdateWrapper<ShopMchEntry> updateWrapper = new UpdateWrapper<>(); UpdateWrapper<ShopMchEntry> updateWrapper = new UpdateWrapper<>();
updateWrapper.eq("login_mobile", loginMobile); updateWrapper.eq("id", mchId);
if (ObjectUtil.isNotEmpty(lklAuditStatus)) { if (ObjectUtil.isNotEmpty(lklAuditStatus)) {
updateWrapper.set("lkl_tk_audit_status", lklAuditStatus); updateWrapper.set("lkl_tk_audit_status", lklAuditStatus);
} }
@ -1264,17 +1281,52 @@ public class ShopMchEntryServiceImpl extends BaseServiceImpl<ShopMchEntryMapper,
/** /**
* 更新商家入驻申请的审批状态和审批备注 * 更新商家入驻申请的审批状态和审批备注
* *
* @param merchantId 商家入驻申请 ID merchantMobile 至少必填一个 * @param mchId 商家入驻申请 ID 必填
* @param merchantMobile 商家注册的手机号 merchantId 至少必填一个
* @param approvalStatus 审批状态1-已通过2-未通过3-待审核4-未申请过5-已提交拉卡拉审核 * @param approvalStatus 审批状态1-已通过2-未通过3-待审核4-未申请过5-已提交拉卡拉审核
* @param approvalRemark 审批备注 * @param approvalRemark 审批备注
* @return 更新成功返回 true否则返回 false * @return 更新成功返回 true否则返回 false
*/ */
@Override @Override
public Boolean updateMerchEntryApprovalByMchId(Long merchantId, String merchantMobile, Integer approvalStatus, String approvalRemark) { public Boolean updateMerchEntryApprovalByMchId(Long mchId, Integer approvalStatus, String approvalRemark) {
// 1. 参数校验merchantId merchantMobile 必须至少有一个不为空 // 1. 参数校验mchId
if (ObjectUtil.isEmpty(merchantId) && StrUtil.isBlank(merchantMobile)) { if (ObjectUtil.isEmpty(mchId)) {
log.error("更新入驻审批状态和备注失败merchantId 和 merchantMobile 至少需要一个"); log.error("更新入驻审批状态和备注失败:缺少 mchId ");
return false;
}
if (approvalStatus == null && StrUtil.isBlank(approvalRemark)) {
log.error("更新入驻审批状态和备注失败:缺少待修改的数据");
return false;
}
try {
// 2. 创建 UpdateWrapper 对象用于构建更新条件
UpdateWrapper<ShopMchEntry> updateWrapper = new UpdateWrapper<>();
updateWrapper.eq("id", mchId);
// 3. 设置更新字段审批状态和审批备注
if (ObjectUtil.isNotEmpty(approvalStatus)) {
updateWrapper.set("approval_status", approvalStatus);
}
if (StrUtil.isNotBlank(approvalRemark)) {
updateWrapper.set("approval_remark", approvalRemark);
}
// 4. 执行更新操作并返回结果
return update(updateWrapper);
} catch (Exception e) {
// 5. 异常处理记录异常信息避免程序中断
log.error("更新商家入驻审批状态和备注时发生异常", e);
return false; // 发生异常时返回 false
}
}
public Boolean updateMerchEntryApprovalByMchIdBak(Long mchId, String mchMobile, Integer approvalStatus, String approvalRemark) {
// 1. 参数校验mchId mchMobile 必须至少有一个不为空
if (ObjectUtil.isEmpty(mchId) && StrUtil.isBlank(mchMobile)) {
log.error("更新入驻审批状态和备注失败mchId 和 mchMobile 至少需要一个");
return false; return false;
} }
@ -1282,11 +1334,11 @@ public class ShopMchEntryServiceImpl extends BaseServiceImpl<ShopMchEntryMapper,
// 2. 创建 UpdateWrapper 对象用于构建更新条件 // 2. 创建 UpdateWrapper 对象用于构建更新条件
UpdateWrapper<ShopMchEntry> updateWrapper = new UpdateWrapper<>(); UpdateWrapper<ShopMchEntry> updateWrapper = new UpdateWrapper<>();
// 3. 设置更新条件优先使用 merchantId如果为空则使用 merchantMobile // 3. 设置更新条件优先使用 mchId如果为空则使用 mchMobile
if (ObjectUtil.isNotEmpty(merchantId)) { if (ObjectUtil.isNotEmpty(mchId)) {
updateWrapper.eq("id", merchantId); updateWrapper.eq("id", mchId);
} else { } else {
updateWrapper.eq("login_mobile", merchantMobile); updateWrapper.eq("login_mobile", mchMobile);
} }
// 4. 设置更新字段审批状态和审批备注 // 4. 设置更新字段审批状态和审批备注