优化入驻流程

This commit is contained in:
Jack 2025-08-20 17:00:22 +08:00
parent 7b369442ff
commit 9c153abaf5
7 changed files with 90 additions and 68 deletions

View File

@ -18,6 +18,29 @@ import java.util.Date;
@Slf4j @Slf4j
public class DateTimeUtils { public class DateTimeUtils {
/**
* 获取当前日期字符串格式为 yyyy-MM-dd
*
* @return 当前日期字符串
*/
public static String getCurrentDate() {
return LocalDate.now().toString();
}
/**
* 根据指定格式格式化 LocalDate 日期
*
* @param date 日期
* @param pattern 格式字符串
* @return 格式化后的日期字符串
*/
public static String formatLocalDate(LocalDate date, String pattern) {
if (date == null || pattern == null) {
return null;
}
return date.format(DateTimeFormatter.ofPattern(pattern));
}
public static String formatDateTime(LocalDateTime localDateTime, String pattern) { public static String formatDateTime(LocalDateTime localDateTime, String pattern) {
return localDateTime.format(DateTimeFormatter.ofPattern(pattern)); return localDateTime.format(DateTimeFormatter.ofPattern(pattern));
} }
@ -206,19 +229,21 @@ public class DateTimeUtils {
public static void main(String[] args) { public static void main(String[] args) {
System.out.println(convertLklDate("2021-02-19")); // 2025-01-02 // System.out.println(convertLklDate("2021-02-19")); // 2025-01-02
System.out.println(convertLklDate("2021-2-3")); // 2025-01-02 // System.out.println(convertLklDate("2021-2-3")); // 2025-01-02
System.out.println(convertLklDate("2025/1/2")); // 2025-01-02 // System.out.println(convertLklDate("2025/1/2")); // 2025-01-02
System.out.println(convertLklDate("2025/01/02")); // 2025-01-02 // System.out.println(convertLklDate("2025/01/02")); // 2025-01-02
System.out.println(convertLklDate("2025.1.2")); // 2025-01-02 // System.out.println(convertLklDate("2025.1.2")); // 2025-01-02
System.out.println(convertLklDate("2025.01.02")); // 2025-01-02 // System.out.println(convertLklDate("2025.01.02")); // 2025-01-02
System.out.println(convertLklDate("2025年1月2日")); // 2025-01-02 // System.out.println(convertLklDate("2025年1月2日")); // 2025-01-02
System.out.println(convertLklDate("2025年01月02日")); // 2025-01-02 // System.out.println(convertLklDate("2025年01月02日")); // 2025-01-02
System.out.println(convertLklDate("25.1.2")); // 2025-01-02 // System.out.println(convertLklDate("25.1.2")); // 2025-01-02
System.out.println(convertLklDate("25.01.02")); // 2025-01-02 // System.out.println(convertLklDate("25.01.02")); // 2025-01-02
System.out.println(convertLklDate("长期")); // 9999-12-31 // System.out.println(convertLklDate("长期")); // 9999-12-31
System.out.println(convertLklDate("永久")); // 9999-12-31 // System.out.println(convertLklDate("永久")); // 9999-12-31
System.out.println(convertLklDate(null)); // 9999-12-31 // System.out.println(convertLklDate(null)); // 9999-12-31
System.out.println(convertLklDate("2025.2.30")); // 9999-12-31无效日期 // System.out.println(convertLklDate("2025.2.30")); // 9999-12-31无效日期
System.out.println(formatLocalDate(LocalDate.now(), "yyyy-MM-dd"));
} }
} }

View File

@ -384,8 +384,8 @@ public class LakalaApiServiceImpl implements LakalaApiService {
LklLedgerEc lklLedgerEc = lklLedgerEcService.getByMchId(shopMchEntry.getId(), "", CommonConstant.Enable); LklLedgerEc lklLedgerEc = lklLedgerEcService.getByMchId(shopMchEntry.getId(), "", 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("商户:{} 电子合同已签署过,重新提交将被覆盖!", mchId); log.info("商户:{} 电子合同已签署过,重新提交将被覆盖!", mchId);
@ -427,9 +427,10 @@ public class LakalaApiServiceImpl implements LakalaApiService {
String retUrl = domain + "/mobile/shop/lakala/ec/applyNotify"; String retUrl = domain + "/mobile/shop/lakala/ec/applyNotify";
reqData.put("ret_url", retUrl); reqData.put("ret_url", retUrl);
LocalDate today = LocalDate.now(); // 获取当前日期
String signDate = today.getYear() + "-" + today.getMonthValue() + "-" + today.getDayOfMonth();
LocalDate today = LocalDate.now();
String signDate = DateTimeUtils.formatLocalDate(today, "yyyy-MM-dd");
String platformName = "桂平发发网络有限公司"; String platformName = "桂平发发网络有限公司";
JSONObject ecParams = new JSONObject(); JSONObject ecParams = new JSONObject();
ecParams.put("A1", isQy ? shopMchEntry.getBiz_license_company() : shopMchEntry.getAccount_holder_name()); ecParams.put("A1", isQy ? shopMchEntry.getBiz_license_company() : shopMchEntry.getAccount_holder_name());
@ -684,11 +685,10 @@ public class LakalaApiServiceImpl implements LakalaApiService {
* @param request * @param request
* @return * @return
*/ */
@Transactional // @Transactional
@Override @Override
public JSONObject applyLedgerMerEcNotify(HttpServletRequest request) { public JSONObject applyLedgerMerEcNotify(HttpServletRequest request) {
log.debug("商户入网电子合同申请回调通知开始"); log.debug("商户入网电子合同申请回调通知开始");
// 验签 // 验签
Pair<Boolean, String> checkResult = LakalaUtil.chkLklApiNotifySign(request, lklNotifyCerPath, false); Pair<Boolean, String> checkResult = LakalaUtil.chkLklApiNotifySign(request, lklNotifyCerPath, false);
if (!checkResult.getFirst()) { if (!checkResult.getFirst()) {

View File

@ -399,7 +399,7 @@ public class LklTkServiceImpl {
reqJsonBody.put("accountType", isQy ? "57" : "58"); //结算账户类型: 57 对公 58 对私 reqJsonBody.put("accountType", isQy ? "57" : "58"); //结算账户类型: 57 对公 58 对私
reqJsonBody.put("accountNo", shopMchEntry.getAccount_number()); //结算人银行卡号 reqJsonBody.put("accountNo", shopMchEntry.getAccount_number()); //结算人银行卡号
reqJsonBody.put("accountName", shopMchEntry.getAccount_holder_name()); //结算人账户名称 reqJsonBody.put("accountName", shopMchEntry.getAccount_holder_name()); //结算人账户名称
reqJsonBody.put("accountIdCard", shopMchEntry.getLegal_person_id_number());//结算证件号码(身份证) reqJsonBody.put("accountIdCard", larIdCard);//结算法人或小微个人证件号码(身份证)
Integer SettlementMethod = shopMchEntry.getSettlement_method(); Integer SettlementMethod = shopMchEntry.getSettlement_method();
if (SettlementMethod == null || SettlementMethod < 0 || SettlementMethod > 1) { if (SettlementMethod == null || SettlementMethod < 0 || SettlementMethod > 1) {
@ -527,11 +527,11 @@ public class LklTkServiceImpl {
if (ObjectUtil.isEmpty(response) if (ObjectUtil.isEmpty(response)
|| response.get("retCode") == null || response.get("retCode") == null
|| !"000000".equals(response.getStr("retCode"))) { || !"000000".equals(response.getStr("retCode"))) {
String errMsg = response.getStr("retMsg") == null ? "拉卡拉发生未知错误" : response.getStr("retMsg"); String errMsg = response.getStr("retMsg") == null ? "拉卡拉发生未知错误" : response.getStr("retMsg");
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);
} }
// {"merchantNo": "100132349","status": "WAIT_AUDI","state": "1"} // {"merchantNo": "100132349","status": "WAIT_AUDI","state": "1"}

View File

@ -417,14 +417,14 @@ public class LakalaUtil {
if (passVerifySign) { if (passVerifySign) {
// 如果不需要验签直接返回请求体内容 // 如果不需要验签直接返回请求体内容
String requestBody = getBody(request); String requestBody = getBody(request);
log.debug("{} 回调通知 requestbody 参数:{}", request.getRequestURL(), requestBody); log.debug("###{} 异步回调通知请求过来的参数:{}###", request.getRequestURL(), requestBody);
return Pair.of(true, requestBody); return Pair.of(true, requestBody);
} }
// 验签 // 验签
String authorization = request.getHeader("Authorization"); String authorization = request.getHeader("Authorization");
String requestBody = getBody(request); String requestBody = getBody(request);
log.debug("{} 回调通知 requestbody 参数:{}\n authorization参数{}\n", request.getRequestURL(), requestBody, authorization); log.info("###{} 异步回调通知请求过来的参数:{}\n authorization参数{}###", request.getRequestURL(), requestBody, authorization);
boolean checkSuccess = LakalaUtil.verify(authorization, requestBody, lklNotifyCerPath); boolean checkSuccess = LakalaUtil.verify(authorization, requestBody, lklNotifyCerPath);
if (!checkSuccess) { if (!checkSuccess) {

View File

@ -50,7 +50,7 @@ public class ShopMchEntryAdminController extends BaseControllerImpl {
@ApiOperation(value = "商家入驻审批", notes = "商家入驻审批") @ApiOperation(value = "商家入驻审批", notes = "商家入驻审批")
@RequestMapping(value = "/approval", method = RequestMethod.POST) @RequestMapping(value = "/approval", method = RequestMethod.POST)
public CommonResult shopMerchEntryApproval(@RequestBody JSONObject jsonParam) { public CommonResult shopMerchEntryApproval(@RequestBody JSONObject jsonParam) {
// approvalStatus 入驻商家的审批状态1-已通过2-未通过3-待审核 // approvalStatus 入驻审批状态1-已通过2-未通过3-待审核4-未申请过5-已提交拉卡拉审核21-拉卡拉审核未通过
return shopMchEntryService.shopMerchEntryApproval(jsonParam.getLong("id"), jsonParam.getInt("approvalStatus"), jsonParam.getStr("approvalRemark"), jsonParam.getStr("approvalInvalidCol")); return shopMchEntryService.shopMerchEntryApproval(jsonParam.getLong("id"), jsonParam.getInt("approvalStatus"), jsonParam.getStr("approvalRemark"), jsonParam.getStr("approvalInvalidCol"));
} }

View File

@ -63,13 +63,13 @@ public interface ShopMchEntryService {
/** /**
* 商家入驻审批 * 商家入驻审批
* *
* @param id * @param mchId
* @param approvalStatus 入驻商家的审批状态1-已通过2-未通过3-待审核4-未申请 * @param approvalStatus 入驻审批状态1-已通过2-未通过3-待审核4-未申请5-已提交拉卡拉审核21-拉卡拉审核未通过
* @param approvalRemark 审批备注 * @param approvalRemark 审批备注
* @param approvalInvalidCol 审批无效字段 * @param approvalInvalidCol 审批无效字段
* @return * @return
*/ */
CommonResult shopMerchEntryApproval(Long id, Integer approvalStatus, String approvalRemark, String approvalInvalidCol); CommonResult shopMerchEntryApproval(Long mchId, Integer approvalStatus, String approvalRemark, String approvalInvalidCol);
/** /**

View File

@ -453,6 +453,7 @@ public class ShopMchEntryServiceImpl extends BaseServiceImpl<ShopMchEntryMapper,
if (record == null) { if (record == null) {
return null; return null;
} }
record.setStatus(CommonConstant.Enable); record.setStatus(CommonConstant.Enable);
record.setSigned_status(CommonConstant.CONTRACT_SIGN_STA_ING); // 重置合同签署状态 record.setSigned_status(CommonConstant.CONTRACT_SIGN_STA_ING); // 重置合同签署状态
record.setApproval_status(CommonConstant.MCH_APPR_STA_PADDING); record.setApproval_status(CommonConstant.MCH_APPR_STA_PADDING);
@ -494,7 +495,7 @@ public class ShopMchEntryServiceImpl extends BaseServiceImpl<ShopMchEntryMapper,
if (StrUtil.isNotBlank(record.getLegal_person_id_period_begin())) { if (StrUtil.isNotBlank(record.getLegal_person_id_period_begin())) {
record.setLegal_person_id_period_begin(DateTimeUtils.convertLklDate(record.getLegal_person_id_period_begin())); record.setLegal_person_id_period_begin(DateTimeUtils.convertLklDate(record.getLegal_person_id_period_begin()));
} }
if (StrUtil.isNotBlank(record.getLegal_person_id_period_end())) { if (StrUtil.isNotBlank(record.getLegal_person_id_period_end())) {
record.setLegal_person_id_period_end(DateTimeUtils.convertLklDate(record.getLegal_person_id_period_end())); record.setLegal_person_id_period_end(DateTimeUtils.convertLklDate(record.getLegal_person_id_period_end()));
} }
@ -667,14 +668,14 @@ public class ShopMchEntryServiceImpl extends BaseServiceImpl<ShopMchEntryMapper,
/** /**
* 商家入驻审批 * 商家入驻审批
* *
* @param id * @param mchId
* @param approvalStatus 入驻商家的审批状态1-已通过2-未通过3-待审核4-未申请过5-已提交拉卡拉审核 * @param approvalStatus 入驻审批状态1-已通过2-未通过3-待审核4-未申请过5-已提交拉卡拉审核21-拉卡拉审核未通过
* @param approvalRemark 审批备注 * @param approvalRemark 审批备注
* @param approvalInvalidCol 审批无效字段 * @param approvalInvalidCol 审批无效字段
* @return * @return
*/ */
@Override @Override
public CommonResult shopMerchEntryApproval(Long id, Integer approvalStatus, String approvalRemark, String approvalInvalidCol) { public CommonResult shopMerchEntryApproval(Long mchId, Integer approvalStatus, String approvalRemark, String approvalInvalidCol) {
// 固定用户ID模拟管理员 // 固定用户ID模拟管理员
Integer userId = 0; Integer userId = 0;
@ -685,7 +686,7 @@ public class ShopMchEntryServiceImpl extends BaseServiceImpl<ShopMchEntryMapper,
userId = user.getId(); userId = user.getId();
// 参数校验流程 // 参数校验流程
if (ObjectUtil.isEmpty(id) || ObjectUtil.isEmpty(approvalStatus)) { if (ObjectUtil.isEmpty(mchId) || ObjectUtil.isEmpty(approvalStatus)) {
return CommonResult.failed("缺少必要参数!"); return CommonResult.failed("缺少必要参数!");
} }
@ -695,21 +696,32 @@ public class ShopMchEntryServiceImpl extends BaseServiceImpl<ShopMchEntryMapper,
} }
// 查询入驻记录 // 查询入驻记录
ShopMchEntry record = getById(id); // QueryWrapper<ShopMchEntry> queryWrapper = new QueryWrapper<>();
// queryWrapper.eq("id", mchId);
// ShopMchEntry record = findOne(queryWrapper);
ShopMchEntry record = get(mchId);
if (record == null) { if (record == null) {
return CommonResult.failed("商家入驻记录不存在!"); return CommonResult.failed("商家入驻记录不存在!");
} }
// 初始化更新包装器 // log.debug("###提交拉卡拉前,更新的记录 {}###", JSONUtil.toJsonStr(record));
UpdateWrapper<ShopMchEntry> updateWrapper = new UpdateWrapper<>();
updateWrapper.eq("id", id);
// 设置默认审批备注 // 自动计算商家分成比例
if (StrUtil.isBlank(approvalRemark)) { BigDecimal splitRatio = shopBaseStoreCategoryService.getStoreCategoryRatio(record.getBiz_category());
approvalRemark = "审核未通过,请继续完善入驻资料信息。"; if (splitRatio == null || splitRatio.compareTo(BigDecimal.ZERO) <= 0) {
splitRatio = new BigDecimal("100");
} }
if (approvalStatus.equals(CommonConstant.MCH_APPR_STA_LKL_PADDING)) { // 如果是驳回状态直接返回成功消息
if (approvalStatus.equals(CommonConstant.MCH_APPR_STA_NOPASS)) {
// 2-未通过驳回或重新申请入驻时重置入驻申请的合同信息
record = resetAuditColumns(record);
// 设置默认审批备注
if (StrUtil.isBlank(approvalRemark)) {
approvalRemark = "审核未通过,请继续完善入驻资料信息。";
}
} else if (approvalStatus.equals(CommonConstant.MCH_APPR_STA_LKL_PADDING)) {
//5-已提交拉卡拉审核
approvalRemark = "初审通过,等待进一步审核。"; approvalRemark = "初审通过,等待进一步审核。";
approvalInvalidCol = "[]"; approvalInvalidCol = "[]";
} }
@ -719,36 +731,21 @@ public class ShopMchEntryServiceImpl extends BaseServiceImpl<ShopMchEntryMapper,
approvalInvalidCol = "[]"; approvalInvalidCol = "[]";
} }
// 如果是驳回状态直接返回成功消息
if (approvalStatus.equals(CommonConstant.MCH_APPR_STA_NOPASS)) {
// 驳回或重新申请入驻时重置入驻申请的合同信息
record = resetAuditColumns(record);
}
// 自动计算商家分成比例
BigDecimal splitRatio = shopBaseStoreCategoryService.getStoreCategoryRatio(record.getBiz_category());
if (splitRatio == null || splitRatio.compareTo(BigDecimal.ZERO) <= 0) {
splitRatio = new BigDecimal("100");
}
record.setApproval_status(approvalStatus); record.setApproval_status(approvalStatus);
record.setApproval_remark(approvalRemark); record.setApproval_remark(approvalRemark);
record.setApproval_invalid_col(approvalInvalidCol); record.setApproval_invalid_col(approvalInvalidCol);
record.setSplit_ratio(splitRatio); record.setSplit_ratio(splitRatio);
record.setUpdated_by(userId); record.setUpdated_by(userId);
// // 构建更新参数
// updateWrapper
// .set("approval_status", approvalStatus) // 转换拉卡拉的日期格式 yyyy-MM-dd
// .set("approval_remark", approvalRemark) record = convLklDateFormat(record);
// .set("split_ratio", splitRatio)
// .set("approval_invalid_col", approvalInvalidCol) // log.debug("###提交拉卡拉时,更新的记录 {}###", JSONUtil.toJsonStr(record));
// .set("updated_by", userId);
// 执行更新操作 // 执行更新操作
if (!updateById(record)) { if (!updateById(record)) {
log.error("系统处理审批出错请联系管理员当前记录ID: {}", id); log.error("系统处理审批出错请联系管理员当前记录ID: {}", mchId);
return CommonResult.failed("系统处理审批出错,请联系管理员!"); return CommonResult.failed("系统处理审批出错,请联系管理员!");
} }
@ -762,15 +759,15 @@ public class ShopMchEntryServiceImpl extends BaseServiceImpl<ShopMchEntryMapper,
// 平台人工审核通过后触发去拉卡拉商家入网电子合同签署 // 平台人工审核通过后触发去拉卡拉商家入网电子合同签署
// 下一步商家入网电子合同签署完毕后收到异步通知触发拉卡拉商家进件重要环节 // 下一步商家入网电子合同签署完毕后收到异步通知触发拉卡拉商家进件重要环节
try { try {
Pair<Boolean, String> resultPair = lakalaApiService.applyLedgerMerEc(id); Pair<Boolean, String> resultPair = lakalaApiService.applyLedgerMerEc(mchId);
if (!resultPair.getFirst()) { if (!resultPair.getFirst()) {
log.warn("拉卡拉电子合同签署申请失败: {}", resultPair.getSecond()); log.warn("拉卡拉电子合同签署申请失败: {}", resultPair.getSecond());
return CommonResult.failed(resultPair.getSecond()); return CommonResult.failed(resultPair.getSecond());
} }
// 执行更新操作 // 执行更新操作
if (!updateMerchEntryApprovalByMchId(record.getId(), null, "入网申请已成功提交!")) { if (!updateMerchEntryApprovalByMchId(record.getId(), null, "入网申请已提交!")) {
log.error("系统处理审批出错请联系管理员当前记录ID: {}", id); log.error("系统处理审批出错请联系管理员当前记录ID: {}", mchId);
return CommonResult.failed("系统处理审批出错,请联系管理员!"); return CommonResult.failed("系统处理审批出错,请联系管理员!");
} }