优化 分账接收方绑定

This commit is contained in:
Jack 2025-09-22 15:59:27 +08:00
parent 422bd92f4a
commit d8b068e14f
5 changed files with 58 additions and 19 deletions

View File

@ -92,6 +92,15 @@ public interface LklLedgerMerReceiverBindService extends IBaseService<LklLedgerM
*/
Boolean updateAuditResult(String applyId, String merInnerNo, String merCupNo, String receiverNo, String entrustFileName, String entrustFilePath, String auditStatus, String auditStatusText, String remark);
/**
* 根据入驻号和商户编号查询商户分账接收方绑定记录
*
* @param mchId 商户ID
* @param merCupNo 商户银联编号
* @return 删除成功返回true失败返回false
*/
List<LklLedgerMerReceiverBind> selectByMchIdAndMerCupNo(Long mchId, String merCupNo);
/**
* 根据入驻编号和商户编号删除商户分账接收方绑定记录
*

View File

@ -403,7 +403,6 @@ public class LakalaApiServiceImpl implements LakalaApiService {
// TODO 电子合同已签署完成但有一些错误的信息这种情况需要怎么处理
// 办法重新再签署合同更新拉卡拉的电子合同信息到商家入驻表中
// return Pair.of(true, I18nUtil._("已提交进件申请,请等待机构审核!"));
log.info("商户:{} 电子合同已签署过,重新提交将被覆盖!", mchId);
}
@ -665,7 +664,7 @@ public class LakalaApiServiceImpl implements LakalaApiService {
paramsJSON.put("splitEntrustFilePath", splitEntrustFilePath);
paramsJSON.put("retUrl", notifyUrl);
paramsJSON.put("splitLowestRatio", splitLowestRatio);
paramsJSON.put("splitLowestRatio", splitLowestRatio); // 商家最低分账比例不低于 20%
paramsJSON.put("splitRange", "ALL");
paramsJSON.put("settleType", "01");
// paramsJSON.put("splitLaunchMode", "MANUAL");
@ -896,7 +895,6 @@ public class LakalaApiServiceImpl implements LakalaApiService {
* @param request
* @return
*/
// @Transactional
@Override
public JSONObject applyLedgerMerEcNotify(HttpServletRequest request) {
log.debug("商户入网电子合同申请回调通知开始");
@ -985,7 +983,7 @@ public class LakalaApiServiceImpl implements LakalaApiService {
}
// 更新商家入驻表的合同编号和签署地址更改状态
shopMchEntryService.updateMerchantLklElectronicContractInfo(mchId, ecNo, paramsJSON.getStr("ecName"), lklLedgerEc.getResult_url(), ecCosFileUrl, eclklFilePath);
shopMchEntryService.updateMerchantLklEContractInfo(mchId, ecNo, paramsJSON.getStr("ecName"), lklLedgerEc.getResult_url(), ecCosFileUrl, eclklFilePath);
// 商家电子合同签署完毕后收到异步通知触发拉卡拉商家进件重要环节
Pair<Boolean, String> resultPair = lklTkService.registrationMerchant(mchId);
@ -1496,7 +1494,7 @@ public class LakalaApiServiceImpl implements LakalaApiService {
int totalCount = receiverList.size();
// 清理旧绑定数据
lklLedgerMerReceiverBindService.delByMchIdAndMerCupNo(shopMchEntry.getId(), merCupNo);
// lklLedgerMerReceiverBindService.delByMchIdAndMerCupNo(shopMchEntry.getId(), merCupNo);
// 4. 初始化SDK建议移至类初始化或统一配置
log.debug("初始化拉卡拉SDK");
@ -1507,10 +1505,12 @@ public class LakalaApiServiceImpl implements LakalaApiService {
try {
log.debug("开始处理分账接收方绑定,接收方编号: {}", receiver.getReceiver_no());
String receiverNo = receiver.getReceiver_no();
// 跳过已存在的绑定关系
LklLedgerMerReceiverBind existingBind = lklLedgerMerReceiverBindService.getByCondition(merCupNo, receiver.getReceiver_no());
LklLedgerMerReceiverBind existingBind = lklLedgerMerReceiverBindService.getByCondition(merCupNo, receiverNo);
if (existingBind != null) {
log.info("分账绑定关系已存在跳过处理merCupNo={}, receiverNo={}", merCupNo, receiver.getReceiver_no());
log.info("分账绑定关系已存在跳过处理merCupNo={}, receiverNo={}", merCupNo, receiverNo);
successCount++; // 已存在的绑定视为成功
continue;
}
@ -1525,7 +1525,7 @@ public class LakalaApiServiceImpl implements LakalaApiService {
request.setVersion("2.0");
request.setMerInnerNo(lklLedgerMember.getMer_inner_no());
request.setMerCupNo(merCupNo);
request.setReceiverNo(receiver.getReceiver_no());
request.setReceiverNo(receiverNo);
request.setEntrustFileName(entrustFileName);
request.setEntrustFilePath(entrustFilePath);
request.setRetUrl(retUrl);
@ -1546,11 +1546,11 @@ public class LakalaApiServiceImpl implements LakalaApiService {
}
String applyId = (String) respJson.getByPath("respData.applyId");
log.info("拉卡拉分账接收方绑定申请提交成功,订单号: {}申请ID: {}",
orderNo, applyId);
log.info("拉卡拉分账接收方绑定申请提交成功,订单号: {}商户号: {},接收方: {}申请ID: {}",
orderNo, merCupNo, receiverNo, applyId);
if (StrUtil.isBlank(applyId)) {
log.error("拉卡拉分账接收方绑定申请提交失败,订单号: {}申请ID为空", orderNo);
log.error("拉卡拉分账接收方绑定申请提交失败,订单号: {}订单号: {},商户号: {},接收方: {} 申请ID为空", orderNo, merCupNo, receiverNo);
continue;
}
@ -1558,7 +1558,7 @@ public class LakalaApiServiceImpl implements LakalaApiService {
paramsJSON.set("orderNo", orderNo);
paramsJSON.set("apply_id", applyId);
paramsJSON.set("org_code", orgCode);
paramsJSON.set("receiver_no", receiver.getReceiver_no());
paramsJSON.set("receiver_no", receiverNo);
paramsJSON.set("ret_url", retUrl);
paramsJSON.set("remark", respJson.getStr("retMsg"));
paramsJSON.set("platform_id", receiver.getPlatform_id());
@ -1571,10 +1571,10 @@ public class LakalaApiServiceImpl implements LakalaApiService {
log.debug("准备保存分账绑定记录");
if (lklLedgerMerReceiverBindService.addOrUpdateByMerCupNoReceiverNo(bindRecord)) {
successCount++;
log.info("分账绑定记录保存成功,订单号: {}", orderNo);
log.info("分账绑定记录保存成功,订单号: {},商户号: {},接收方: {}", orderNo, merCupNo, receiverNo);
} else {
log.warn("分账绑定记录保存失败,订单号: {},商户号: {},接收方: {}",
orderNo, merCupNo, receiver.getReceiver_no());
orderNo, merCupNo, receiverNo);
}
} catch (Exception e) {

View File

@ -21,6 +21,7 @@ import com.suisung.mall.shop.lakala.service.LklLedgerMerReceiverBindService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import java.util.Collections;
import java.util.List;
@Slf4j
@ -244,7 +245,37 @@ public class LklLedgerMerReceiverBindServiceImpl extends BaseServiceImpl<LklLedg
}
/**
* 根据商户编号删除商户分账接收方绑定记录
* 根据入驻号和商户编号查询商户分账接收方绑定记录
*
* @param mchId 商户ID
* @param merCupNo 商户银联编号
* @return 符合条件的商户分账接收方绑定记录列表
*/
@Override
public List<LklLedgerMerReceiverBind> selectByMchIdAndMerCupNo(Long mchId, String merCupNo) {
log.debug("开始查询商户分账接收方绑定记录mchId={}, merCupNo={}", mchId, merCupNo);
if (CheckUtil.isEmpty(mchId) && StrUtil.isBlank(merCupNo)) {
log.warn("查询商户分账接收方绑定记录参数校验失败mchId和merCupNo不能同时为空");
return Collections.emptyList();
}
try {
QueryWrapper<LklLedgerMerReceiverBind> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("mch_id", mchId)
.eq("mer_cup_no", merCupNo);
List<LklLedgerMerReceiverBind> result = list(queryWrapper);
log.debug("查询商户分账接收方绑定记录完成mchId={}, merCupNo={}, 结果数量={}", mchId, merCupNo, result.size());
return result;
} catch (Exception e) {
log.error("查询商户分账接收方绑定记录时发生异常mchId={}, merCupNo={}", mchId, merCupNo, e);
return Collections.emptyList();
}
}
/**
* 根据入驻号和商户编号删除商户分账接收方绑定记录
*
* @param mchId 商户ID
* @param merCupNo 商户银联编号
@ -261,8 +292,7 @@ public class LklLedgerMerReceiverBindServiceImpl extends BaseServiceImpl<LklLedg
}
QueryWrapper<LklLedgerMerReceiverBind> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("mer_cup_no", merCupNo)
.eq("mch_id", mchId);
queryWrapper.eq("mch_id", mchId).eq("mer_cup_no", merCupNo);
boolean removeResult = remove(queryWrapper);

View File

@ -227,7 +227,7 @@ public interface ShopMchEntryService {
* @param lklElectronicContractFilePath 拉卡拉电子合同文件路径
* @return 更新成功返回 true, 失败返回 false
*/
Boolean updateMerchantLklElectronicContractInfo(Long merchantId, String lklElectronicContractNo, String lklElectronicContractName, String lklElectronicContractResultUrl, String contractDownloadUrl, String lklElectronicContractFilePath);
Boolean updateMerchantLklEContractInfo(Long merchantId, String lklElectronicContractNo, String lklElectronicContractName, String lklElectronicContractResultUrl, String contractDownloadUrl, String lklElectronicContractFilePath);
/**
* 更新商家入驻申请的审批状态和审批备注

View File

@ -1462,7 +1462,7 @@ public class ShopMchEntryServiceImpl extends BaseServiceImpl<ShopMchEntryMapper,
* @return 更新成功返回 true, 失败返回 false
*/
@Override
public Boolean updateMerchantLklElectronicContractInfo(Long merchantId, String lklElectronicContractNo, String lklElectronicContractName, String lklElectronicContractResultUrl, String contractDownloadUrl, String lklElectronicContractFilePath) {
public Boolean updateMerchantLklEContractInfo(Long merchantId, String lklElectronicContractNo, String lklElectronicContractName, String lklElectronicContractResultUrl, String contractDownloadUrl, String lklElectronicContractFilePath) {
// 1. 参数校验: 确保merchantId和lklElectronicContractNo至少有一个不为空
if (ObjectUtil.isEmpty(merchantId) && StrUtil.isBlank(lklElectronicContractNo)) {
log.warn("商户ID和拉卡拉电子合同编号都为空, 无法更新");