fix 入驻潜在空指针问题
This commit is contained in:
parent
a25e511404
commit
5efd10b87a
@ -601,7 +601,7 @@ public class LakalaApiServiceImpl implements LakalaApiService {
|
|||||||
// 参数校验
|
// 参数校验
|
||||||
if (StringUtils.isBlank(merCupNo)) {
|
if (StringUtils.isBlank(merCupNo)) {
|
||||||
log.warn("商户分账业务申请失败:商户号不能为空");
|
log.warn("商户分账业务申请失败:商户号不能为空");
|
||||||
return Pair.of(false, I18nUtil._("商户号不能为空!"));
|
return Pair.of(false, "商户号不能为空!");
|
||||||
}
|
}
|
||||||
|
|
||||||
// 获取商户入驻记录
|
// 获取商户入驻记录
|
||||||
@ -609,7 +609,7 @@ public class LakalaApiServiceImpl implements LakalaApiService {
|
|||||||
ShopMchEntry shopMchEntry = shopMchEntryService.getShopMerchEntryByMerCupNo(merCupNo);
|
ShopMchEntry shopMchEntry = shopMchEntryService.getShopMerchEntryByMerCupNo(merCupNo);
|
||||||
if (shopMchEntry == null) {
|
if (shopMchEntry == null) {
|
||||||
log.warn("商户分账业务申请失败:商家入驻信息不存在,商户号: {}", merCupNo);
|
log.warn("商户分账业务申请失败:商家入驻信息不存在,商户号: {}", merCupNo);
|
||||||
return Pair.of(false, I18nUtil._("商家入驻信息不存在!"));
|
return Pair.of(false, "商家入驻信息不存在!");
|
||||||
}
|
}
|
||||||
|
|
||||||
// 商户是否已经已申请过分账业务
|
// 商户是否已经已申请过分账业务
|
||||||
@ -627,18 +627,10 @@ public class LakalaApiServiceImpl implements LakalaApiService {
|
|||||||
|
|
||||||
if (!Boolean.TRUE.equals(forceReApply)) {
|
if (!Boolean.TRUE.equals(forceReApply)) {
|
||||||
log.info("商户{}已申请过分账业务,无需重复申请", merCupNo);
|
log.info("商户{}已申请过分账业务,无需重复申请", merCupNo);
|
||||||
|
return Pair.of(true, "商家分账业务已申请过!");
|
||||||
// 检查绑定关系
|
|
||||||
|
|
||||||
|
|
||||||
return Pair.of(true, I18nUtil._("商家已经申请过了!"));
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// 检查更新店铺初始化状态
|
|
||||||
// log.debug("检查并更新店铺初始化状态,商户ID: {}", shopMchEntry.getId());
|
|
||||||
// shopMchEntryService.checkMchEntryStoreStatus(shopMchEntry.getId(), shopMchEntry);
|
|
||||||
|
|
||||||
try {
|
try {
|
||||||
// 1. 配置初始化
|
// 1. 配置初始化
|
||||||
log.debug("初始化拉卡拉SDK");
|
log.debug("初始化拉卡拉SDK");
|
||||||
@ -646,24 +638,35 @@ public class LakalaApiServiceImpl implements LakalaApiService {
|
|||||||
|
|
||||||
//2. 装配数据
|
//2. 装配数据
|
||||||
log.debug("装配分账业务申请请求参数");
|
log.debug("装配分账业务申请请求参数");
|
||||||
String splitEntrustFilePath = shopMchEntry.getLkl_ec_file_path(); //fileUploadResp.getStr("attFileId");
|
String splitEntrustFilePath = shopMchEntry.getLkl_ec_file_path();
|
||||||
|
if (StringUtils.isBlank(splitEntrustFilePath)) {
|
||||||
|
log.warn("商户分账业务申请失败:电子合同文件路径为空,商户号: {}", merCupNo);
|
||||||
|
return Pair.of(false, "电子合同文件路径为空");
|
||||||
|
}
|
||||||
|
|
||||||
// 给拉卡拉通知的回调地址
|
// 给拉卡拉通知的回调地址
|
||||||
String notifyUrl = projectDomain + "/api/mobile/shop/lakala/ledger/applyLedgerMerNotify";
|
String notifyUrl = projectDomain + "/api/mobile/shop/lakala/ledger/applyLedgerMerNotify";
|
||||||
|
|
||||||
String orderNo = StringUtils.genLklOrderNo(8); // 14位年月日时(24小时制)分秒+8位的随机数
|
String orderNo = StringUtils.genLklOrderNo(8); // 14位年月日时(24小时制)分秒+8位的随机数
|
||||||
String merCupNoValue = shopMchEntry.getLkl_mer_cup_no(); // 从进件申请返回的商户号(不要传入内部商户号,传银联商户号才有效)
|
String merCupNoValue = shopMchEntry.getLkl_mer_cup_no(); // 从进件申请返回的商户号(不要传入内部商户号,传银联商户号才有效)
|
||||||
String contactMobile = shopMchEntry.getLogin_mobile(); // 商户入驻注册的手机号
|
if (StringUtils.isBlank(merCupNoValue)) {
|
||||||
String fileName = "商家分账授权委托书.pdf";
|
log.warn("商户分账业务申请失败:商户cup号为空,商户号: {}", merCupNo);
|
||||||
|
return Pair.of(false, "商户cup号为空");
|
||||||
|
}
|
||||||
|
|
||||||
|
String contactMobile = shopMchEntry.getLogin_mobile(); // 商户入驻注册的手机号
|
||||||
|
if (StringUtils.isBlank(contactMobile)) {
|
||||||
|
log.warn("商户分账业务申请失败:联系人手机号为空,商户号: {}", merCupNo);
|
||||||
|
return Pair.of(false, "联系人手机号为空");
|
||||||
|
}
|
||||||
|
|
||||||
|
String fileName = "商家分账授权委托书.pdf";
|
||||||
|
|
||||||
JSONObject reqData = new JSONObject();
|
JSONObject reqData = new JSONObject();
|
||||||
|
|
||||||
reqData.put("version", "1.0");
|
reqData.put("version", "1.0");
|
||||||
reqData.put("orderNo", orderNo);
|
reqData.put("orderNo", orderNo);
|
||||||
reqData.put("orgCode", orgCode);
|
reqData.put("orgCode", orgCode);
|
||||||
|
|
||||||
// reqData.put("merInnerNo", merCupNoValue);
|
|
||||||
reqData.put("merCupNo", merCupNoValue);
|
reqData.put("merCupNo", merCupNoValue);
|
||||||
reqData.put("contactMobile", contactMobile);
|
reqData.put("contactMobile", contactMobile);
|
||||||
|
|
||||||
@ -680,16 +683,13 @@ public class LakalaApiServiceImpl implements LakalaApiService {
|
|||||||
reqData.put("splitLowestRatio", splitLowestRatio); // 商家最低分账比例不低于 20%
|
reqData.put("splitLowestRatio", splitLowestRatio); // 商家最低分账比例不低于 20%
|
||||||
reqData.put("splitRange", "ALL");
|
reqData.put("splitRange", "ALL");
|
||||||
reqData.put("settleType", "01"); //01:主动提款 03:交易自动结算 不填默认01
|
reqData.put("settleType", "01"); //01:主动提款 03:交易自动结算 不填默认01
|
||||||
// paramsJSON.put("splitLaunchMode", "MANUAL");
|
|
||||||
// paramsJSON.put("splitRuleSource", "MER");
|
|
||||||
// paramsJSON.put("sepFundSource", "TR");
|
|
||||||
|
|
||||||
String postUrl = "";
|
String postUrl = "";
|
||||||
String operationType = ""; // 操作类型,用于日志记录和提示信息
|
String operationType = ""; // 操作类型,用于日志记录和提示信息
|
||||||
|
|
||||||
// 确保serverUrl不为null
|
// 确保serverUrl不为null
|
||||||
String effectiveServerUrl = serverUrl != null ? serverUrl : "";
|
String effectiveServerUrl = serverUrl != null ? serverUrl : "";
|
||||||
if (!isLklProd) {
|
if (Boolean.FALSE.equals(isLklProd)) {
|
||||||
effectiveServerUrl = effectiveServerUrl + "/sit";
|
effectiveServerUrl = effectiveServerUrl + "/sit";
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -712,14 +712,14 @@ public class LakalaApiServiceImpl implements LakalaApiService {
|
|||||||
log.debug("商户分账业务{}申请请求参数: 请求地址:{}\n {}\n 响应数据:{}", operationType, postUrl, reqData, responseStr);
|
log.debug("商户分账业务{}申请请求参数: 请求地址:{}\n {}\n 响应数据:{}", operationType, postUrl, reqData, responseStr);
|
||||||
if (StrUtil.isBlank(responseStr)) {
|
if (StrUtil.isBlank(responseStr)) {
|
||||||
log.error("申请拉卡拉分账业务{}无返回值,商户号: {}", operationType, merCupNo);
|
log.error("申请拉卡拉分账业务{}无返回值,商户号: {}", operationType, merCupNo);
|
||||||
return Pair.of(false, I18nUtil._("申请拉卡拉分账业务无返回值!"));
|
return Pair.of(false, "申请拉卡拉分账业务无返回值!");
|
||||||
}
|
}
|
||||||
|
|
||||||
// 成功返回示例:{'retCode':'000000','retMsg':'申请已受理,请等待审核结果','respData':{'version':'1.0','orderNo':'KFPT20230223181025407788734','orgCode':'1','applyId':681201215598657536}}
|
// 成功返回示例:{'retCode':'000000','retMsg':'申请已受理,请等待审核结果','respData':{'version':'1.0','orderNo':'KFPT20230223181025407788734','orgCode':'1','applyId':681201215598657536}}
|
||||||
JSONObject lakalaRespJSON = JSONUtil.parseObj(responseStr);
|
JSONObject lakalaRespJSON = JSONUtil.parseObj(responseStr);
|
||||||
if (lakalaRespJSON == null) {
|
if (lakalaRespJSON == null) {
|
||||||
log.error("申请拉卡拉分账业务{}返回值异常,商户号: {}", operationType, merCupNo);
|
log.error("申请拉卡拉分账业务{}返回值异常,商户号: {}", operationType, merCupNo);
|
||||||
return Pair.of(false, I18nUtil._("申请拉卡拉分账业务返回值异常!"));
|
return Pair.of(false, "申请拉卡拉分账业务返回值异常!");
|
||||||
}
|
}
|
||||||
|
|
||||||
Object applyId = lakalaRespJSON.getByPath("respData.applyId");
|
Object applyId = lakalaRespJSON.getByPath("respData.applyId");
|
||||||
@ -736,7 +736,7 @@ public class LakalaApiServiceImpl implements LakalaApiService {
|
|||||||
reqData.set("applyId", applyId);
|
reqData.set("applyId", applyId);
|
||||||
String retMsg = lakalaRespJSON.getStr("retMsg");
|
String retMsg = lakalaRespJSON.getStr("retMsg");
|
||||||
reqData.set("remark", retMsg);
|
reqData.set("remark", retMsg);
|
||||||
reqData.set("auditStatusText", retMsg); // 直接使用retMsg,避免null值
|
reqData.set("auditStatusText", retMsg);
|
||||||
reqData.set("mchId", shopMchEntry.getId());
|
reqData.set("mchId", shopMchEntry.getId());
|
||||||
|
|
||||||
// 新增数据
|
// 新增数据
|
||||||
@ -745,24 +745,24 @@ public class LakalaApiServiceImpl implements LakalaApiService {
|
|||||||
String snakeCaseJson = StringUtils.convertCamelToSnake(reqData.toString());
|
String snakeCaseJson = StringUtils.convertCamelToSnake(reqData.toString());
|
||||||
if (StringUtils.isBlank(snakeCaseJson)) {
|
if (StringUtils.isBlank(snakeCaseJson)) {
|
||||||
log.error("JSON转换为下划线命名格式失败,商户号: {}", merCupNo);
|
log.error("JSON转换为下划线命名格式失败,商户号: {}", merCupNo);
|
||||||
return Pair.of(false, I18nUtil._("数据格式转换失败!"));
|
return Pair.of(false, "数据格式转换失败!");
|
||||||
}
|
}
|
||||||
|
|
||||||
LklLedgerMember lklLedgerMemberNew = JSONUtil.toBean(snakeCaseJson, LklLedgerMember.class);
|
LklLedgerMember lklLedgerMemberNew = JSONUtil.toBean(snakeCaseJson, LklLedgerMember.class);
|
||||||
// 根据 mchId 和 商户号更新记录
|
// 根据 mchId 和 商户号更新记录
|
||||||
if (lklLedgerMemberNew == null || !lklLedgerMemberService.addOrUpdateByMerCupNo(lklLedgerMemberNew)) {
|
if (lklLedgerMemberNew == null || !lklLedgerMemberService.addOrUpdateByMerCupNo(lklLedgerMemberNew)) {
|
||||||
log.error("新增或更改拉卡拉分账业务申请信息失败,订单号: {}", orderNo);
|
log.error("新增或更改拉卡拉分账业务申请信息失败,订单号: {}", orderNo);
|
||||||
return Pair.of(false, I18nUtil._("新增或更改拉卡拉分账业务申请信息失败!"));
|
return Pair.of(false, "新增或更改拉卡拉分账业务申请信息失败!");
|
||||||
}
|
}
|
||||||
|
|
||||||
log.info("商户分账业务{}申请提交成功,等待审核,商户号: {},申请ID: {}", operationType, merCupNo, applyId);
|
log.info("商户分账业务{}申请提交成功,等待审核,商户号: {},申请ID: {}", operationType, merCupNo, applyId);
|
||||||
return Pair.of(true, I18nUtil._("商户分账业务" + operationType + "申请已提交成功,请耐心等待拉卡拉审核!"));
|
return Pair.of(true, "商户分账业务" + operationType + "申请已提交成功,请耐心等待拉卡拉审核!");
|
||||||
} catch (SDKException e) {
|
} catch (SDKException e) {
|
||||||
log.error("申请拉卡拉分账业务出错,商户号: {}", merCupNo, e);
|
log.error("申请拉卡拉分账业务出错,商户号: {}", merCupNo, e);
|
||||||
return Pair.of(false, I18nUtil._("申请拉卡拉分账业务出错!"));
|
return Pair.of(false, "申请拉卡拉分账业务出错!");
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
log.error("申请拉卡拉分账业务出现未预期异常,商户号: {}", merCupNo, e);
|
log.error("申请拉卡拉分账业务出现未预期异常,商户号: {}", merCupNo, e);
|
||||||
return Pair.of(false, I18nUtil._("申请拉卡拉分账业务出现未预期异常!"));
|
return Pair.of(false, "申请拉卡拉分账业务出现未预期异常!");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -921,7 +921,7 @@ public class LakalaApiServiceImpl implements LakalaApiService {
|
|||||||
Pair<Boolean, String> checkResult = LakalaUtil.chkLklApiNotifySign(request, lklNotifyCerPath, false);
|
Pair<Boolean, String> checkResult = LakalaUtil.chkLklApiNotifySign(request, lklNotifyCerPath, false);
|
||||||
if (!checkResult.getFirst()) {
|
if (!checkResult.getFirst()) {
|
||||||
log.warn("商户入网电子合同申请回调验签失败: {}", checkResult.getSecond());
|
log.warn("商户入网电子合同申请回调验签失败: {}", checkResult.getSecond());
|
||||||
return JSONUtil.createObj().set("code", "FAIL").set("retMsg", checkResult.getSecond());
|
return JSONUtil.createObj().set("code", "FAIL").set("message", checkResult.getSecond());
|
||||||
}
|
}
|
||||||
|
|
||||||
// 2. 初始化响应对象
|
// 2. 初始化响应对象
|
||||||
@ -1167,7 +1167,7 @@ public class LakalaApiServiceImpl implements LakalaApiService {
|
|||||||
public CommonResult applyLedgerMer(JSONObject paramsJSON) {
|
public CommonResult applyLedgerMer(JSONObject paramsJSON) {
|
||||||
// 检查参数
|
// 检查参数
|
||||||
if (ObjectUtil.isEmpty(paramsJSON) || StrUtil.isBlank(paramsJSON.getStr("merCupNo"))) {
|
if (ObjectUtil.isEmpty(paramsJSON) || StrUtil.isBlank(paramsJSON.getStr("merCupNo"))) {
|
||||||
return CommonResult.failed("请填写商户号!");
|
return CommonResult.failed("缺少商户号 merCupNo!");
|
||||||
}
|
}
|
||||||
|
|
||||||
String merCupNo = paramsJSON.getStr("merCupNo");
|
String merCupNo = paramsJSON.getStr("merCupNo");
|
||||||
@ -1213,7 +1213,7 @@ public class LakalaApiServiceImpl implements LakalaApiService {
|
|||||||
// 验签
|
// 验签
|
||||||
Pair<Boolean, String> checkResult = LakalaUtil.chkLklApiNotifySign(request, lklNotifyCerPath, false);
|
Pair<Boolean, String> checkResult = LakalaUtil.chkLklApiNotifySign(request, lklNotifyCerPath, false);
|
||||||
if (!checkResult.getFirst()) {
|
if (!checkResult.getFirst()) {
|
||||||
return JSONUtil.createObj().set("code", "FAIL").set("retMsg", checkResult.getSecond());
|
return JSONUtil.createObj().set("code", "FAIL").set("message", checkResult.getSecond());
|
||||||
}
|
}
|
||||||
|
|
||||||
// 异步通知返回的数据
|
// 异步通知返回的数据
|
||||||
@ -1622,11 +1622,11 @@ public class LakalaApiServiceImpl implements LakalaApiService {
|
|||||||
continue; // 单个失败不影响其他接收方处理
|
continue; // 单个失败不影响其他接收方处理
|
||||||
}
|
}
|
||||||
|
|
||||||
Object applyId = respJson.getByPath("respData.applyId");
|
String applyId = Convert.toStr(respJson.getByPath("respData.applyId"));
|
||||||
log.info("拉卡拉分账接收方绑定申请提交成功,订单号: {},商户号: {},接收方: {},申请ID: {}",
|
log.info("拉卡拉分账接收方绑定申请提交成功,订单号: {},商户号: {},接收方: {},申请ID: {}",
|
||||||
orderNo, merCupNo, receiverNo, applyId);
|
orderNo, merCupNo, receiverNo, applyId);
|
||||||
|
|
||||||
if (ObjectUtil.isEmpty(applyId)) {
|
if (StrUtil.isBlank(applyId)) {
|
||||||
log.error("拉卡拉分账接收方绑定申请提交失败,订单号: {},商户号: {},接收方: {} 申请ID为空", orderNo, merCupNo, receiverNo);
|
log.error("拉卡拉分账接收方绑定申请提交失败,订单号: {},商户号: {},接收方: {} 申请ID为空", orderNo, merCupNo, receiverNo);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
@ -1638,8 +1638,7 @@ public class LakalaApiServiceImpl implements LakalaApiService {
|
|||||||
paramsJSON.set("receiver_no", receiverNo);
|
paramsJSON.set("receiver_no", receiverNo);
|
||||||
paramsJSON.set("ret_url", retUrl);
|
paramsJSON.set("ret_url", retUrl);
|
||||||
paramsJSON.set("remark", respJson.getStr("retMsg"));
|
paramsJSON.set("remark", respJson.getStr("retMsg"));
|
||||||
// 处理可能为null的platform_id
|
paramsJSON.set("platform_id", receiver.getPlatform_id());
|
||||||
paramsJSON.set("platform_id", receiver.getPlatform_id() != null ? receiver.getPlatform_id().toString() : "");
|
|
||||||
paramsJSON.set("mch_id", shopMchEntry.getId());
|
paramsJSON.set("mch_id", shopMchEntry.getId());
|
||||||
|
|
||||||
// 转换JSON键名格式并保存
|
// 转换JSON键名格式并保存
|
||||||
@ -1783,29 +1782,24 @@ public class LakalaApiServiceImpl implements LakalaApiService {
|
|||||||
// 8. 成功后更新商户绑定状态为已绑定
|
// 8. 成功后更新商户绑定状态为已绑定
|
||||||
shopMchEntryService.updateMulStatus(mchId, merCupNo, 0, 0, 0, 0, 0, 1, CommonConstant.MCH_APPR_STA_PASS);
|
shopMchEntryService.updateMulStatus(mchId, merCupNo, 0, 0, 0, 0, 0, 1, CommonConstant.MCH_APPR_STA_PASS);
|
||||||
|
|
||||||
try {
|
// 9. 判断是否可以创建店铺了?
|
||||||
// 9. 判断是否可以创建店铺了?
|
if (shopMchEntryService.canBuildingShopStore(mchId)) {
|
||||||
if (shopMchEntryService.canBuildingShopStore(mchId)) {
|
// 创建店铺,并初始化
|
||||||
// 创建店铺,并初始化
|
// 新建一个正式的已审核通过的店铺,不要抛异常,使用补偿机制,可以独立初始化店铺
|
||||||
// 新建一个正式的已审核通过的店铺,不要抛异常,使用补偿机制,可以独立初始化店铺
|
// 重要:包含了更改 merchEntryInfo 的状态, 使用法人、小微个人的手机号注册商家账号,作为店铺的管理员
|
||||||
// 重要:包含了更改 merchEntryInfo 的状态, 使用法人、小微个人的手机号注册商家账号,作为店铺的管理员
|
Pair<Integer, String> retPair = shopStoreBaseService.covMerchEntryInfo2StoreInfo(mchId, false);
|
||||||
Pair<Integer, String> retPair = shopStoreBaseService.covMerchEntryInfo2StoreInfo(mchId, false);
|
if (retPair.getFirst() <= 0) {
|
||||||
if (retPair.getFirst() <= 0) {
|
shopMchEntryService.updateMerchEntryApprovalByMchId(mchId, null, "创建并初始化店铺失败:" + retPair.getSecond());
|
||||||
shopMchEntryService.updateMerchEntryApprovalByMchId(mchId, null, "创建并初始化店铺失败:" + retPair.getSecond());
|
log.error("进件成功,但初始化店铺失败: mchId={}, reason={}", mchId, retPair.getSecond());
|
||||||
log.error("进件成功,但初始化店铺失败: mchId={}, reason={}", mchId, retPair.getSecond());
|
} else {
|
||||||
} else {
|
shopMchEntryService.updateMulStatus(mchId, merCupNo, 0, 0, 1, 0, 0, 0, 0);
|
||||||
shopMchEntryService.updateMulStatus(mchId, merCupNo, 0, 0, 1, 0, 0, 0, 0);
|
log.info("进件成功,创建并初始化店铺成功!mchId={}", mchId);
|
||||||
log.info("进件成功,创建并初始化店铺成功!mchId={}", mchId);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// 10. 检查商户绑定状态是否完成, 更改总的审核状态
|
|
||||||
shopMchEntryService.checkMerchEntryFinished(mchId);
|
|
||||||
} catch (Exception e) {
|
|
||||||
log.error("处理商户店铺创建或状态检查时发生异常,mchId: {}", mchId, e);
|
|
||||||
// 不中断主流程,继续返回成功
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 10. 检查商户绑定状态是否完成, 更改总的审核状态
|
||||||
|
shopMchEntryService.checkMerchEntryFinished(mchId);
|
||||||
|
|
||||||
// 11. 日志记录并返回成功响应
|
// 11. 日志记录并返回成功响应
|
||||||
log.info("商家绑定分账接收方异步通知处理完成,mchId:{} merCupNo:{}", mchId, merCupNo);
|
log.info("商家绑定分账接收方异步通知处理完成,mchId:{} merCupNo:{}", mchId, merCupNo);
|
||||||
return JSONUtil.createObj().set("code", "SUCCESS").set("message", "分账接收方绑定成功");
|
return JSONUtil.createObj().set("code", "SUCCESS").set("message", "分账接收方绑定成功");
|
||||||
|
|||||||
@ -779,6 +779,12 @@ public class ShopMchEntryServiceImpl extends BaseServiceImpl<ShopMchEntryMapper,
|
|||||||
return fixCount > 0;
|
return fixCount > 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 重要(补偿机制),检查修复商户入驻店铺信息(商家账号关联入驻店铺Id,给商家账户创立公司员工账号和权限)
|
||||||
|
*
|
||||||
|
* @param mchId 商户入驻ID(必填)
|
||||||
|
* @return boolean 是否成功修复商户信息
|
||||||
|
*/
|
||||||
public Boolean checkAndFixMchStoreInfo(Long mchId) {
|
public Boolean checkAndFixMchStoreInfo(Long mchId) {
|
||||||
// 1. 参数校验
|
// 1. 参数校验
|
||||||
if (CheckUtil.isEmpty(mchId)) {
|
if (CheckUtil.isEmpty(mchId)) {
|
||||||
@ -787,70 +793,67 @@ public class ShopMchEntryServiceImpl extends BaseServiceImpl<ShopMchEntryMapper,
|
|||||||
}
|
}
|
||||||
|
|
||||||
try {
|
try {
|
||||||
// 2. 获取当前商户用户信息
|
// 2. 查询商户入驻记录
|
||||||
UserDto currentUser = getCurrentUser();
|
|
||||||
if (currentUser == null || !currentUser.isMerchant()) {
|
|
||||||
log.warn("当前用户非商户账号");
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
// 4.3 获取用户基础信息
|
|
||||||
AccountUserBase userBase = accountService.getUserBase(currentUser.getId());
|
|
||||||
if (userBase == null) {
|
|
||||||
log.warn("商户用户基础信息不存在,用户ID: {}", currentUser.getId());
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
// 3. 查询商户入驻记录
|
|
||||||
ShopMchEntry shopMchEntry = get(mchId);
|
ShopMchEntry shopMchEntry = get(mchId);
|
||||||
if (shopMchEntry == null) {
|
if (shopMchEntry == null) {
|
||||||
log.debug("未找到商户入驻记录 mchId {}", mchId);
|
log.debug("未找到商户入驻记录 mchId {}", mchId);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
// 4.2 检查入驻状态
|
// 3. 检查入驻状态
|
||||||
boolean isValidStatus = CommonConstant.Enable.equals(shopMchEntry.getHas_ec_signed())
|
boolean isValidStatus = CommonConstant.Enable.equals(shopMchEntry.getHas_ec_signed())
|
||||||
&& CommonConstant.Enable.equals(shopMchEntry.getHas_apply_mer())
|
&& CommonConstant.Enable.equals(shopMchEntry.getHas_apply_mer())
|
||||||
&& CommonConstant.Enable.equals(shopMchEntry.getHas_apply_split())
|
&& CommonConstant.Enable.equals(shopMchEntry.getHas_apply_split())
|
||||||
&& CommonConstant.Enable.equals(shopMchEntry.getHas_apply_receiver())
|
&& CommonConstant.Enable.equals(shopMchEntry.getHas_apply_receiver())
|
||||||
&& CommonConstant.Enable.equals(shopMchEntry.getHas_bind_receiver());
|
&& CommonConstant.Enable.equals(shopMchEntry.getHas_bind_receiver());
|
||||||
|
|
||||||
if (isValidStatus) {
|
if (!isValidStatus) {
|
||||||
log.debug("入驻记录状态都通过了审核,进一步验证修复条件,入驻ID: {}", mchId);
|
log.debug("入驻记录状态未全部通过审核,不能创建店铺,入驻ID: {}", mchId);
|
||||||
} else {
|
return false;
|
||||||
log.debug("入驻记录状态个别未通过审核,接着检查验证修复条件,入驻ID: {}", mchId);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 4. 获取当前商户用户信息
|
||||||
|
UserDto currentUser = getCurrentUser();
|
||||||
|
if (currentUser == null || CheckUtil.isEmpty(currentUser.getId())) {
|
||||||
|
log.warn("当前用户未登录,入驻ID: {}", mchId);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
// 4.4 获取店铺员工信息
|
// 5. 获取用户基础信息
|
||||||
|
AccountUserBase userBase = accountService.getUserBase(currentUser.getId());
|
||||||
|
if (userBase == null) {
|
||||||
|
log.warn("商户用户基础信息不存在,用户ID: {}", currentUser.getId());
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
// 6. 检查店铺关联关系
|
||||||
|
boolean hasStoreRelation = false;
|
||||||
|
if (StrUtil.isNotBlank(shopMchEntry.getStore_id()) && StrUtil.isNotBlank(userBase.getStore_ids())) {
|
||||||
|
hasStoreRelation = userBase.getStore_ids().contains(shopMchEntry.getStore_id());
|
||||||
|
}
|
||||||
|
|
||||||
|
// 7. 获取店铺员工信息
|
||||||
ShopStoreEmployee storeEmployee = null;
|
ShopStoreEmployee storeEmployee = null;
|
||||||
if (StrUtil.isNotBlank(shopMchEntry.getStore_id())) {
|
if (StrUtil.isNotBlank(shopMchEntry.getStore_id())) {
|
||||||
storeEmployee = shopStoreEmployeeService.getStoreEmployeeByUserId(
|
Integer storeId = Convert.toInt(shopMchEntry.getStore_id());
|
||||||
Convert.toInt(shopMchEntry.getStore_id()),
|
if (CheckUtil.isNotEmpty(storeId)) {
|
||||||
currentUser.getId()
|
storeEmployee = shopStoreEmployeeService.getStoreEmployeeByUserId(
|
||||||
);
|
storeId,
|
||||||
|
currentUser.getId()
|
||||||
|
);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// 4.5 检查店铺关联关系
|
// 8. 检查权限组信息
|
||||||
boolean hasStoreRelation = StrUtil.isNotBlank(userBase.getStore_ids()) &&
|
boolean hasRoles = storeEmployee != null && StrUtil.isNotBlank(storeEmployee.getRights_group_id());
|
||||||
userBase.getStore_ids().contains(shopMchEntry.getStore_id());
|
|
||||||
|
|
||||||
// 4.6 检查权限组信息
|
// 10. 当满足创建店铺条件且存在信息缺失时,需要进行修复
|
||||||
boolean hasRoles = storeEmployee != null &&
|
if (storeEmployee == null || !hasRoles || !hasStoreRelation) {
|
||||||
StrUtil.isNotBlank(storeEmployee.getRights_group_id());
|
// 补偿创建初始化店铺部分赋值
|
||||||
|
|
||||||
// 4.7 当以下任一条件满足时,需要进行修复
|
|
||||||
// - 无店铺员工信息
|
|
||||||
// - 无权限组信息
|
|
||||||
// - 无店铺关联
|
|
||||||
if (storeEmployee == null ||
|
|
||||||
!hasRoles ||
|
|
||||||
!hasStoreRelation) {
|
|
||||||
|
|
||||||
// 4.8 补偿创建初始化店铺部分赋值
|
|
||||||
Pair<Integer, String> result = shopStoreBaseService.covMerchEntryInfo2StoreInfo(mchId, false);
|
Pair<Integer, String> result = shopStoreBaseService.covMerchEntryInfo2StoreInfo(mchId, false);
|
||||||
if (result != null && result.getFirst() > 0) {
|
if (result != null && result.getFirst() > 0) {
|
||||||
log.warn("商户信息修复成功,入驻ID: {}", mchId);
|
log.info("商户信息修复成功,入驻ID: {}", mchId);
|
||||||
|
return true;
|
||||||
} else {
|
} else {
|
||||||
log.error("商户信息修复失败,入驻ID: {}, 错误信息:{}", mchId, result != null ? result.getSecond() : "未知错误");
|
log.error("商户信息修复失败,入驻ID: {}, 错误信息:{}", mchId, result != null ? result.getSecond() : "未知错误");
|
||||||
return false;
|
return false;
|
||||||
@ -1428,21 +1431,45 @@ public class ShopMchEntryServiceImpl extends BaseServiceImpl<ShopMchEntryMapper,
|
|||||||
/**
|
/**
|
||||||
* 更新商家入驻申请的店铺 ID
|
* 更新商家入驻申请的店铺 ID
|
||||||
*
|
*
|
||||||
* @param id
|
* @param mchId 商户ID
|
||||||
* @param storeId
|
* @param storeId 店铺ID
|
||||||
* @return
|
* @return 更新成功返回 true,否则返回 false
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public Boolean updateMerchEntryStoreStatus(Long id, Integer storeId) {
|
public Boolean updateMerchEntryStoreStatus(Long mchId, Integer storeId) {
|
||||||
if (ObjectUtil.isEmpty(id) && ObjectUtil.isEmpty(storeId)) {
|
// 1. 参数校验:mchId 不能为空
|
||||||
|
if (CheckUtil.isEmpty(mchId) || CheckUtil.isEmpty(storeId)) {
|
||||||
|
log.warn("更新商户店铺状态失败:商户ID不能为空");
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
return update(new UpdateWrapper<ShopMchEntry>()
|
try {
|
||||||
.eq("id", id)
|
// 2. 构建更新条件
|
||||||
.set("store_id", storeId).set("store_status", CommonConstant.Enable));
|
UpdateWrapper<ShopMchEntry> updateWrapper = new UpdateWrapper<>();
|
||||||
|
updateWrapper.eq("id", mchId)
|
||||||
|
.set("store_id", storeId)
|
||||||
|
.set("store_status", CommonConstant.Enable)
|
||||||
|
.set("updated_at", new Date()); // 更新时间戳
|
||||||
|
|
||||||
|
// 3. 执行更新操作并返回结果
|
||||||
|
boolean result = update(updateWrapper);
|
||||||
|
|
||||||
|
if (result) {
|
||||||
|
log.info("商户店铺状态更新成功,mchId: {}, storeId: {}", mchId, storeId);
|
||||||
|
} else {
|
||||||
|
log.warn("商户店铺状态更新失败,未找到匹配记录,mchId: {}", mchId);
|
||||||
|
}
|
||||||
|
|
||||||
|
return result;
|
||||||
|
|
||||||
|
} catch (Exception e) {
|
||||||
|
// 4. 异常处理:记录异常信息
|
||||||
|
log.error("更新商户店铺状态时发生异常,mchId: {}, storeId: {}", mchId, storeId, e);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// /**
|
// /**
|
||||||
// * 更新拉卡拉入网电子合同和签署地址
|
// * 更新拉卡拉入网电子合同和签署地址
|
||||||
// *
|
// *
|
||||||
|
|||||||
@ -3185,9 +3185,8 @@ public class ShopStoreBaseServiceImpl extends BaseServiceImpl<ShopStoreBaseMappe
|
|||||||
ShopStoreBase shopStoreBase = findOneByStoreName(shopMchEntry.getStore_name());
|
ShopStoreBase shopStoreBase = findOneByStoreName(shopMchEntry.getStore_name());
|
||||||
if (shopStoreBase != null
|
if (shopStoreBase != null
|
||||||
&& StrUtil.isNotBlank(shopStoreBase.getLkl_merchant_no())
|
&& StrUtil.isNotBlank(shopStoreBase.getLkl_merchant_no())
|
||||||
&& StrUtil.isNotBlank(shopStoreBase.getLkl_term_no())
|
&& StrUtil.isNotBlank(shopMchEntry.getLkl_mer_cup_no())
|
||||||
&& shopMchEntry.getStore_id() != null // 添加null检查
|
&& !shopStoreBase.getLkl_merchant_no().equals(shopMchEntry.getLkl_mer_cup_no())) {
|
||||||
&& !shopStoreBase.getStore_id().toString().equals(shopMchEntry.getStore_id())) {
|
|
||||||
logger.error("生成店铺:店铺名称已存在");
|
logger.error("生成店铺:店铺名称已存在");
|
||||||
return Pair.of(0, "店铺名称已存在,请使用另一名称");
|
return Pair.of(0, "店铺名称已存在,请使用另一名称");
|
||||||
}
|
}
|
||||||
@ -3260,7 +3259,7 @@ public class ShopStoreBaseServiceImpl extends BaseServiceImpl<ShopStoreBaseMappe
|
|||||||
|
|
||||||
// 获取店铺ID
|
// 获取店铺ID
|
||||||
Integer storeId = shopStoreBase.getStore_id();
|
Integer storeId = shopStoreBase.getStore_id();
|
||||||
if (storeId == null) {
|
if (CheckUtil.isEmpty(storeId)) {
|
||||||
logger.error("生成店铺:店铺ID获取失败");
|
logger.error("生成店铺:店铺ID获取失败");
|
||||||
return Pair.of(0, "店铺ID获取失败");
|
return Pair.of(0, "店铺ID获取失败");
|
||||||
}
|
}
|
||||||
@ -3411,7 +3410,7 @@ public class ShopStoreBaseServiceImpl extends BaseServiceImpl<ShopStoreBaseMappe
|
|||||||
// 初始化店铺额外信息
|
// 初始化店铺额外信息
|
||||||
initStoreExtraInfo(userId, storeId, allowThrown);
|
initStoreExtraInfo(userId, storeId, allowThrown);
|
||||||
|
|
||||||
// 更新商家入驻状态
|
// 更新商家入驻状态和新建的店铺ID
|
||||||
if (shopMchEntry.getId() != null) {
|
if (shopMchEntry.getId() != null) {
|
||||||
shopMchEntryService.updateMerchEntryStoreStatus(shopMchEntry.getId(), storeId);
|
shopMchEntryService.updateMerchEntryStoreStatus(shopMchEntry.getId(), storeId);
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user