回归测试,修复bug

This commit is contained in:
Jack 2025-05-18 16:47:25 +08:00
parent 9614312bcd
commit 42dc03453d
5 changed files with 94 additions and 72 deletions

View File

@ -662,7 +662,7 @@ public class LakalaApiServiceImpl implements LakalaApiService {
*/
@Override
public Pair<Boolean, String> innerApplyLedgerMer(String merCupNo) {
log.debug("商户分账业务开通申请开始");
log.debug("商户分账业务申请开始");
if (StringUtils.isBlank(merCupNo)) {
return Pair.of(false, I18nUtil._("商户号不能为空!"));
@ -676,7 +676,7 @@ public class LakalaApiServiceImpl implements LakalaApiService {
// 判断是否已经申请过
LklLedgerMember lklLedgerMember = lklLedgerMemberService.getByMerCupNo(merCupNo);
if (lklLedgerMember != null) {
if (lklLedgerMember != null && lklLedgerMember.getAudit_status() == 1) {
return Pair.of(true, I18nUtil._("商家已经申请过了!"));
}
@ -688,20 +688,21 @@ public class LakalaApiServiceImpl implements LakalaApiService {
req.setVersion("2.0");
req.setOrderNo(StringUtils.genLklOrderNo(8));// 14位年月日时24小时制分秒+8位的随机数
req.setOrgCode(orgCode);
req.setMerInnerNo(shopMchEntry.getLkl_mer_inner_no());// 从进件申请返回的商户号
req.setMerInnerNo(shopMchEntry.getLkl_mer_inner_no());// 从进件申请返回的内部商户号
req.setMerCupNo(shopMchEntry.getLkl_mer_cup_no()); // 从进件申请返回的商户号
req.setContactMobile(shopMchEntry.getLogin_mobile()); // 商户入驻注册的手机号
// 分账比例为了考虑低价订单的运费占比高分账比例暂时定70%分账给商户30%分账给平台
// new BigDecimal(paramsJSON.getStr("splitLowestRatio"))
req.setSplitLowestRatio(new BigDecimal(splitLowestRatio));
req.setEleContractNo(shopMchEntry.getLkl_ec_no());
String fileName = "小发同城分账授权委托书.pdf";//paramsJSON.getStr("splitEntrustFileName");
String fileName = "商家分账授权委托书.pdf";//paramsJSON.getStr("splitEntrustFileName");
req.setSplitEntrustFileName(fileName);
// TODO 分账结算委托书文件上传到拉卡拉服务器
JSONObject fileUploadResp = uploadFile(req.getOrderNo(), "SPLIT_ENTRUST_FILE", StringUtils.getFileExt(fileName), UploadUtil.fileUrlToBase64(shopMchEntry.getContract_download_url()));
if (fileUploadResp == null || StrUtil.isBlank(fileUploadResp.getStr("attFileId"))) {
throw new ApiException(I18nUtil._("小发同城分账授权委托书上传失败!"));
log.error("商家分账授权委托书{}上传失败!", shopMchEntry.getContract_download_url());
// return Pair.of(false, I18nUtil._("商家分账授权委托书上传失败!"));
// throw new ApiException(I18nUtil._("商家分账授权委托书上传失败!"));
}
String splitEntrustFilePath = fileUploadResp.getStr("attFileId");
@ -715,38 +716,45 @@ public class LakalaApiServiceImpl implements LakalaApiService {
String retUrl = domain + "/mobile/shop/lakala/ledger/applyLedgerMerNotify";
req.setRetUrl(retUrl);
JSONObject paramsJSON = new JSONObject();
paramsJSON.put("orderNo", req.getOrderNo());
paramsJSON.put("org_code", orgCode);
paramsJSON.put("version", "2.0");
paramsJSON.put("ret_url", retUrl);
paramsJSON.put("mer_inner_no", req.getMerInnerNo());
paramsJSON.put("mer_cup_no", req.getMerCupNo());
paramsJSON.put("contact_mobile", shopMchEntry.getLogin_mobile());
paramsJSON.put("split_lowest_ratio", req.getSplitLowestRatio());
paramsJSON.put("split_range", "MARK");
paramsJSON.put("split_launch_mode", "MANUAL");
paramsJSON.put("settle_type", "01");
paramsJSON.put("split_rule_source", "TR");
paramsJSON.put("ele_contract_no", "");
paramsJSON.put("split_entrust_file_name", req.getSplitEntrustFileName());
paramsJSON.put("split_entrust_file_path", splitEntrustFilePath);
log.debug("商户分账业务申请请求参数:{}", JSONUtil.toJsonStr(req));
try {
//3. 发送请求
String responseStr = LKLSDK.httpPost(req);
// 成功返回示例{'retCode':'000000','retMsg':'申请已受理请等待审核结果','respData':{'version':'1.0','orderNo':'KFPT20230223181025407788734','orgCode':'1','applyId':681201215598657536}}
JSONObject lakalaRespJSON = JSONUtil.parseObj(responseStr);
if (StrUtil.isBlank(responseStr) || lakalaRespJSON == null) {
if (StrUtil.isBlank(responseStr)) {
return Pair.of(false, I18nUtil._("无返回值,申请开通分账失败!"));
}
if (!lakalaRespJSON.getStr("retCode").equals(lklSuccessCode)) {
// 成功返回示例{'retCode':'000000','retMsg':'申请已受理请等待审核结果','respData':{'version':'1.0','orderNo':'KFPT20230223181025407788734','orgCode':'1','applyId':681201215598657536}}
JSONObject lakalaRespJSON = JSONUtil.parseObj(responseStr);
if (lakalaRespJSON == null) {
return Pair.of(false, I18nUtil._("无返回值,申请开通分账失败!"));
}
String applyId = lakalaRespJSON.getStr("applyId");
if (!lakalaRespJSON.getStr("retCode").equals(lklSuccessCode) || StrUtil.isBlank(applyId)) {
return Pair.of(false, lakalaRespJSON.getStr("retMsg"));
}
paramsJSON.set("apply_id", lakalaRespJSON.getByPath("respData.applyId"));
JSONObject paramsJSON = new JSONObject();
paramsJSON.put("orderNo", req.getOrderNo());
paramsJSON.put("org_code", orgCode);
paramsJSON.put("version", "2.0");
paramsJSON.put("ret_url", retUrl);
paramsJSON.put("mer_inner_no", req.getMerInnerNo());
paramsJSON.put("mer_cup_no", shopMchEntry.getLkl_mer_cup_no());
paramsJSON.put("contact_mobile", shopMchEntry.getLogin_mobile());
paramsJSON.put("split_lowest_ratio", req.getSplitLowestRatio());
paramsJSON.put("split_range", "MARK");
paramsJSON.put("split_launch_mode", "MANUAL");
paramsJSON.put("settle_type", "01");
paramsJSON.put("split_rule_source", "TR");
paramsJSON.put("ele_contract_no", req.getEleContractNo());
paramsJSON.put("split_entrust_file_name", req.getSplitEntrustFileName());
paramsJSON.put("split_entrust_file_path", splitEntrustFilePath);
paramsJSON.set("apply_id", applyId);
paramsJSON.set("remark", lakalaRespJSON.getStr("retMsg"));
paramsJSON.set("audit_status_text", paramsJSON.get("remark"));
paramsJSON.set("mch_id", shopMchEntry.getId());
@ -754,9 +762,11 @@ public class LakalaApiServiceImpl implements LakalaApiService {
// 新增数据
// JSON 对象的键名转换为下划线命名
LklLedgerMember lklLedgerMemberNew = JSONUtil.toBean(StringUtils.convertCamelToSnake(paramsJSON.toString()), LklLedgerMember.class);
lklLedgerMemberService.saveOrUpdateByMerCupNo(lklLedgerMemberNew);
if (!lklLedgerMemberService.saveOrUpdateByMerCupNo(lklLedgerMemberNew)) {
return Pair.of(false, I18nUtil._("商户分账业务材料新增失败,待审核中!"));
}
return Pair.of(true, I18nUtil._("提交成功,待审核中!"));
return Pair.of(true, I18nUtil._("商户分账业务申请提交成功,待审核中!"));
} catch (SDKException e) {
log.error("申请开通分账出错:", e);
return Pair.of(false, I18nUtil._("商家申请开通分账出错!"));
@ -786,7 +796,7 @@ public class LakalaApiServiceImpl implements LakalaApiService {
boolean checkSuccess = LakalaUtil.verify(authorization, requestBody, lklNotifyCerPath);
if (!checkSuccess) {
log.error(errMsg + "验签失败");
return JSONUtil.createObj().set("code", "OP90002").set("retMsg", "验签失败!");
return JSONUtil.createObj().set("code", "FAIL").set("retMsg", "验签失败!");
}
JSONObject paramsJSON = JSONUtil.parseObj(requestBody);
@ -847,13 +857,15 @@ public class LakalaApiServiceImpl implements LakalaApiService {
Pair<Boolean, String> resultPair = lklTkService.registrationMerchant(lklLedgerEc.getMch_mobile(), "");
if (!resultPair.getFirst()) {
errMsg += resultPair.getSecond();
// log.error(errMsg);
log.error(errMsg);
shopMchEntryService.updateMerchEntryApprovalByMchId(lklLedgerEc.getMch_id(), "", CommonConstant.MCH_APPR_STA_NOPASS, errMsg);
// respData.put("message", errMsg);
// respData.put("message", errMsg);
// return respData;
throw new ApiException(errMsg);
// return respData;
}
shopMchEntryService.updateMerchEntryApprovalByMchId(lklLedgerEc.getMch_id(), "", CommonConstant.MCH_APPR_STA_LKL_PADDING, errMsg);
respData.put("code", "SUCCESS");
respData.put("message", "操作成功!");
log.info("商户入网电子合同申请回调:处理成功");
@ -1171,13 +1183,11 @@ public class LakalaApiServiceImpl implements LakalaApiService {
req.setReceiverName(paramsJSON.getStr("receiverName"));
req.setContactMobile(mchMobile);
req.setLicenseNo(paramsJSON.getStr("licenseNo"));
req.setLicenseName(paramsJSON.getStr("licenseName"));
req.setLegalPersonName(paramsJSON.getStr("legalPersonName"));
req.setLegalPersonCertificateType(paramsJSON.getStr("legalPersonCertificateType"));
req.setLegalPersonCertificateNo(paramsJSON.getStr("legalPersonCertificateNo"));
req.setAcctNo(paramsJSON.getStr("acctNo"));
req.setAcctName(paramsJSON.getStr("acctName"));
req.setAcctTypeCode(paramsJSON.getStr("acctTypeCode"));
@ -1222,11 +1232,14 @@ public class LakalaApiServiceImpl implements LakalaApiService {
String responseStr = LKLSDK.httpPost(req);
JSONObject lakalaRespJSON = JSONUtil.parseObj(responseStr);
if (StrUtil.isBlank(responseStr) || lakalaRespJSON == null) {
throw new ApiException(I18nUtil._("创建分账接收方无响应!"));
return CommonResult.failed(I18nUtil._("创建分账接收方无响应!"));
// throw new ApiException(I18nUtil._("创建分账接收方无响应!"));
}
if (!lakalaRespJSON.getStr("retCode").equals(lklSuccessCode)) {
throw new ApiException(I18nUtil._(lakalaRespJSON.getStr("retMsg")));
return CommonResult.failed(I18nUtil._(lakalaRespJSON.getStr("retMsg")));
// throw new ApiException(I18nUtil._(lakalaRespJSON.getStr("retMsg")));
}
paramsJSON.set("receiver_no", lakalaRespJSON.getByPath("respData.receiverNo"));
@ -1240,17 +1253,14 @@ public class LakalaApiServiceImpl implements LakalaApiService {
// 新增或修改本地数据
Boolean success = lklLedgerReceiverService.saveOrUpdateByReceiverNo(lklLedgerReceiver);
if (!success) {
log.error("接收方创建成功,但更新本地数据 lklLedgerReceiverService.saveOrUpdateByReceiverNo 失败!");
log.error("接收方创建成功,但更新本地数据失败!");
return CommonResult.failed(I18nUtil._("接收方创建成功,但更新本地数据失败!"));
}
// 更新商家的has_receiver状态=1
lklLedgerMemberService.updateMulStatus("", mchMobile, 0, 0, 1, 0);
return CommonResult.success(lklLedgerReceiver, "创建接收方成功!");
} catch (SDKException e) {
log.error("接收方创建失败:", e);
throw new ApiException(I18nUtil._("创建接收方失败"), e);
} catch (Exception e) {
log.error("接收方创建失败:{}", e);
throw new ApiException(I18nUtil._("创建接收方失败:{}"), e);
}
}

View File

@ -194,7 +194,7 @@ public class LklLedgerReceiverServiceImpl extends BaseServiceImpl<LklLedgerRecei
if (CollectionUtil.isNotEmpty(attachList)) {
reqParam.put("attachList", attachList);
}
reqParams.add(reqParam);
}
@ -202,7 +202,7 @@ public class LklLedgerReceiverServiceImpl extends BaseServiceImpl<LklLedgerRecei
}
/**
* 内部调用申请分账接收方
* 内部调用申请一个或多个分账接收方平台方和代理商
*
* @param platformId
* @return
@ -211,25 +211,29 @@ public class LklLedgerReceiverServiceImpl extends BaseServiceImpl<LklLedgerRecei
public Boolean innerApplyLedgerReceiver(String merCupNo, Long platformId) {
JSONArray buildApplyLedgerReceiverReqParams = buildApplyLedgerReceiverReqParams(platformId);
if (buildApplyLedgerReceiverReqParams == null || buildApplyLedgerReceiverReqParams.isEmpty()) {
log.error("没有平台信息或代理商信息");
log.error("获取不到平台或代理商信息");
return false;
}
int success = 0;
int successCnt = 0;
for (JSONObject reqParam : buildApplyLedgerReceiverReqParams.jsonIter()) {
log.debug("申请分账接收方参数:{}", reqParam.toString());
CommonResult result = lakalaApiService.applyLedgerReceiver(reqParam);
if (result == null || result.getCode() != 200) {
log.error("申请分账接收方出错:{}", result.getMsg());
log.error("申请分账接收方失败:{}", result.getMsg());
continue;
}
// 更新多个状态
lklLedgerMemberService.updateMulStatus(merCupNo, "", 0, 0, 1, 0);
success += 1;
successCnt += 1;
}
return success > 0;
boolean success = successCnt > 0;
if (success) {
// 更新多个状态
lklLedgerMemberService.updateMulStatus(merCupNo, "", 0, 0, 1, 0);
}
return success;
}
/**

View File

@ -18,7 +18,6 @@ import com.suisung.mall.common.api.CommonResult;
import com.suisung.mall.common.api.ResultCode;
import com.suisung.mall.common.constant.CommonConstant;
import com.suisung.mall.common.domain.UserDto;
import com.suisung.mall.common.exception.ApiException;
import com.suisung.mall.common.modules.store.ShopMchEntry;
import com.suisung.mall.common.utils.RestTemplateHttpUtil;
import com.suisung.mall.common.utils.StringUtils;
@ -574,6 +573,8 @@ public class LklTkServiceImpl {
return new JSONObject().set("code", "FAIL").set("message", "返回审核状态有误");
}
// RMK 拉卡拉进价提交成功,边处理周边的数据边等待审核异步通知
// 给商家入驻表增加拉卡拉的商户号和拉卡拉返回的数据
String merCupNo = dataJSON.getStr("externalCustomerNo"); //拉卡拉外部商户号
String merInnerNo = dataJSON.getStr("customerNo"); //拉卡拉内部商户号
@ -583,10 +584,10 @@ public class LklTkServiceImpl {
return new JSONObject().put("code", "FAIL").put("message", "内部商户号:" + merInnerNo + " 入驻信息不存在");
}
Boolean success = shopMchEntryService.updateMerchEntryLklAuditStatusByLklMerCupNo(merInnerNo, merCupNo, CommonConstant.Enable, data);
Boolean success = shopMchEntryService.updateMerchEntryLklAuditStatusByLklMerCupNo(merInnerNo, merCupNo, CommonConstant.Enable, null, data);
if (!success) {
// return new JSONObject().set("code", "FAIL").set("message", "更新商户号失败");
throw new ApiException("更新商户号失败");
return new JSONObject().set("code", "FAIL").set("message", "更新商户号失败");
// throw new ApiException("更新商户号失败");
}
// 备注RMK 采用拉卡拉的入网电子合同签署流程暂停e签宝的电子合同生成流程
@ -608,27 +609,30 @@ public class LklTkServiceImpl {
// 1电子合同给商家申请分账功能使用务必检查是否申请过申请过忽略
// 下一步等待拉卡拉审核通过再绑定接收方和商家的关系
Pair<Boolean, String> retPair = lakalaApiService.innerApplyLedgerMer(shopMchEntry.getLkl_mer_cup_no());
Pair<Boolean, String> retPair = lakalaApiService.innerApplyLedgerMer(merCupNo);
if (!retPair.getFirst()) {
String message = "商家申请分账功能失败:" + retPair.getSecond();
logger.error(message);
throw new ApiException(message);
return new JSONObject().set("code", "FAIL").set("message", message);
// throw new ApiException(message);
}
// 更新商家的hasEsigned状态=1
// lklLedgerMemberService.updateMulStatus("", shopMchEntry.getLogin_mobile(), 1, 0, 0, 0);
// 2新增一个接收方记录起码要一个平台方代理商根据入驻信息新增
Boolean genSuccess = lklLedgerReceiverService.innerApplyLedgerReceiver(merCupNo, shopMchEntry.getDistributor_id());
if (!genSuccess) {
logger.error("申请分账接收方失败");
throw new ApiException("申请分账接收方失败");
return new JSONObject().set("code", "FAIL").set("message", "申请分账接收方失败");
// throw new ApiException("申请分账接收方失败");
}
// 更新商家的hasEsigned状态=1
// lklLedgerMemberService.updateMulStatus("", shopMchEntry.getLogin_mobile(), 1, 0, 0, 0);
return new JSONObject().put("code", "SUCCESS").put("message", "处理成功");
}
throw new ApiException("进件回调处理失败");
return new JSONObject().set("code", "FAIL").set("message", "进件回调处理失败");
// throw new ApiException("进件回调处理失败");
}
/**

View File

@ -163,10 +163,11 @@ public interface ShopMchEntryService {
* @param lklMerCupNo 拉卡拉银联商户号
* @param lklInnerMerNo 拉卡拉内部商户号
* @param lklAuditStatus 拉卡拉审核状态
* @param approvalStatus 审批状态
* @param lklTkRegResp 进件返回的数据
* @return
*/
Boolean updateMerchEntryLklAuditStatusByLklMerCupNo(String lklMerCupNo, String lklInnerMerNo, Integer lklAuditStatus, String lklTkRegResp);
Boolean updateMerchEntryLklAuditStatusByLklMerCupNo(String lklMerCupNo, String lklInnerMerNo, Integer lklAuditStatus, Integer approvalStatus, String lklTkRegResp);
/**

View File

@ -807,21 +807,24 @@ public class ShopMchEntryServiceImpl extends BaseServiceImpl<ShopMchEntryMapper,
* @return
*/
@Override
public Boolean updateMerchEntryLklAuditStatusByLklMerCupNo(String lklInnerMerNo, String lklMerCupNo, Integer lklAuditStatus, String lklTkRegNotifyReq) {
public Boolean updateMerchEntryLklAuditStatusByLklMerCupNo(String lklInnerMerNo, String lklMerCupNo, Integer lklAuditStatus, Integer approvalStatus, String lklTkRegNotifyReq) {
if (StrUtil.isBlank(lklMerCupNo)) {
return false;
}
UpdateWrapper<ShopMchEntry> updateWrapper = new UpdateWrapper<>();
updateWrapper.eq("lkl_mer_inner_no", lklInnerMerNo);
if (StrUtil.isNotBlank(lklMerCupNo)) {
updateWrapper.set("lkl_mer_cup_no", lklMerCupNo);
}
if (ObjectUtil.isNotEmpty(lklAuditStatus)) {
updateWrapper.set("lkl_tk_audit_status", lklAuditStatus);
}
// 商家入驻审核正式通过
updateWrapper.set("approval_status", CommonConstant.MCH_APPR_STA_PASS);
if (StrUtil.isNotBlank(lklMerCupNo)) {
updateWrapper.set("lkl_mer_cup_no", lklMerCupNo);
if (ObjectUtil.isNotEmpty(approvalStatus)) {
updateWrapper.set("approval_status", approvalStatus);
}
if (StrUtil.isNotBlank(lklTkRegNotifyReq)) {