回归测试,bug修改

This commit is contained in:
Jack 2025-05-18 03:51:21 +08:00
parent 2feebfafd4
commit b865aafadf
11 changed files with 386 additions and 212 deletions

View File

@ -103,7 +103,7 @@ public class LakalaPayServiceImpl implements LakalaPayService {
return true;
}
protected boolean isProd() {
protected boolean isProdProject() {
return "prod".equalsIgnoreCase(profile);
}
@ -432,7 +432,7 @@ public class LakalaPayServiceImpl implements LakalaPayService {
String splitEntrustFilePath = fileUploadResp.getStr("attFileId");
req.setSplitEntrustFilePath(splitEntrustFilePath); //比如G1/M00/06/64/CrFdEmBQc-aAGc_XAAAiIbS3WIE960.pdf;
if (isProd()) {
if (isProdProject()) {
projectDomain = projectDomain + "/api";
}
// 给拉卡拉通知的回调地址

View File

@ -33,8 +33,8 @@ public class LakalaController extends BaseControllerImpl {
@ApiOperation(value = "测试案例", notes = "测试案例")
@RequestMapping(value = "/testcase", method = RequestMethod.POST)
public Object testcase(@RequestBody JSONObject paramsJSON) {
// return lakalaPayService.applyLedgerMerEc(paramsJSON.getStr("mchMobile"));
return lakalaPayService.LedgerMerEcDownload(975790666910121984L);
return lakalaPayService.applyLedgerMerEc(paramsJSON.getStr("mchMobile"));
// return lakalaPayService.LedgerMerEcDownload(975790666910121984L);
}
@ApiOperation(value = "本地文件转base64", notes = "本地文件转base64")

View File

@ -30,8 +30,6 @@ import com.suisung.mall.common.modules.lakala.LklLedgerReceiver;
import com.suisung.mall.common.modules.store.ShopMchEntry;
import com.suisung.mall.common.modules.store.ShopStoreBase;
import com.suisung.mall.common.utils.*;
import com.suisung.mall.shop.esign.service.EsignContractFillingFileService;
import com.suisung.mall.shop.esign.service.EsignContractService;
import com.suisung.mall.shop.lakala.service.*;
import com.suisung.mall.shop.lakala.utils.LakalaUtil;
import com.suisung.mall.shop.page.service.OssService;
@ -91,6 +89,8 @@ public class LakalaApiServiceImpl implements LakalaApiService {
private String projectDomain;
@Value("${spring.profiles.active}")
private String profile;
@Value("${lakala.is_prod}")
private Boolean isLklProd;
@Value("#{accountBaseConfigService.getConfig('tengxun_default_dir')}")
private String TENGXUN_DEFAULT_DIR;
@ -112,14 +112,14 @@ public class LakalaApiServiceImpl implements LakalaApiService {
@Resource
private ShopMchEntryService shopMchEntryService;
@Lazy
@Resource
private
EsignContractService esignContractService;
@Lazy
@Resource
private EsignContractFillingFileService esignContractFillingFileService;
// @Lazy
// @Resource
// private
// EsignContractService esignContractService;
//
// @Lazy
// @Resource
// private EsignContractFillingFileService esignContractFillingFileService;
@Lazy
@ -151,10 +151,10 @@ public class LakalaApiServiceImpl implements LakalaApiService {
return true;
}
protected boolean isProd() {
return false;
protected boolean isProdProject() {
// return false;
// 正式发布时再启用
//return "prod".equalsIgnoreCase(profile);
return "prod".equalsIgnoreCase(profile);
}
@Override
@ -487,7 +487,7 @@ public class LakalaApiServiceImpl implements LakalaApiService {
// 获取商家信息
ShopMchEntry shopMchEntry = shopMchEntryService.getShopMerchEntryByCondition(mchMobile, "");
if (shopMchEntry == null) {
return Pair.of(false, I18nUtil._("无法查找商家相关信息!"));
return Pair.of(false, I18nUtil._("缺少商家相关信息!"));
}
LklLedgerEc lklLedgerEc = lklLedgerEcService.getByMchMobile(mchMobile, "", CommonConstant.Enable);
@ -521,12 +521,14 @@ public class LakalaApiServiceImpl implements LakalaApiService {
reqData.put("acct_name", shopMchEntry.getAccount_holder_name());
reqData.put("remark", "申请入网电子合同");
// 正式上线的时候调整 api 地址
String domain = projectDomain;
if (isProd()) {
if (isProdProject()) {
domain += "/api";
}
// 给拉卡拉通知的回调地址 TODO 生产环境一定去掉 api
String retUrl = domain + "/api/mobile/shop/lakala/ec/applyNotify";
String retUrl = domain + "/mobile/shop/lakala/ec/applyNotify";
reqData.put("ret_url", retUrl);
LocalDate today = LocalDate.now(); // 获取当前日期
@ -534,7 +536,7 @@ public class LakalaApiServiceImpl implements LakalaApiService {
String platformName = "桂平发发网络有限公司";
String ratioNum = "0.6";
if (isProd()) {
if (isLklProd) {
ratioNum = "0.25";
}
JSONObject ecParams = new JSONObject();
@ -542,7 +544,7 @@ public class LakalaApiServiceImpl implements LakalaApiService {
ecParams.put("A30", ratioNum); // 测试环境微信费率0.6
ecParams.put("A96", "1");
ecParams.put("A97", "");
ecParams.put("A100", "");
ecParams.put("A100", "");
ecParams.put("A101", "中国境内");
ecParams.put("A102", platformName);
ecParams.put("A103", "小发同城");
@ -554,14 +556,22 @@ public class LakalaApiServiceImpl implements LakalaApiService {
ecParams.put("A109", today.getDayOfMonth());
ecParams.put("B1", today.getYear());
ecParams.put("B3", "");
ecParams.put("B4", "");
ecParams.put("B2", today.getMonthValue());
ecParams.put("B8", isQy ? shopMchEntry.getBiz_license_company() : shopMchEntry.getAccount_holder_name());
ecParams.put("B9", StrUtil.subSufByLength(shopMchEntry.getSales_info(), 22));
ecParams.put("B9", StrUtil.sub(shopMchEntry.getSales_info(), 0, 22));
ecParams.put("B10", isQy ? shopMchEntry.getBiz_license_company() : shopMchEntry.getAccount_holder_name());
ecParams.put("B14", isQy ? shopMchEntry.getBiz_license_number() : "");
ecParams.put("B16", isQy ? "" : "");
ecParams.put("B19", shopMchEntry.getOpenning_bank_code());
ecParams.put("B20", shopMchEntry.getAccount_number());
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("B26", isQy ? shopMchEntry.getLegal_person_mobile() : shopMchEntry.getLogin_mobile());
ecParams.put("B27", shopMchEntry.getContact_name());
ecParams.put("B28", shopMchEntry.getEmail());
ecParams.put("B31", shopMchEntry.getStore_name());
ecParams.put("B32", shopMchEntry.getContact_name());
ecParams.put("B33", shopMchEntry.getStore_address());
@ -590,9 +600,8 @@ public class LakalaApiServiceImpl implements LakalaApiService {
reqBody.put("version", "3.0");
reqBody.put("req_data", reqData);
String reqUrl = serverUrl + "/sit/api/v3/mms/open_api/ec/apply";
if (isProd()) {
String reqUrl = serverUrl + "/api/v3/mms/open_api/ec/apply";
if (isLklProd) {
reqUrl = serverUrl + "/api/v3/mms/open_api/ec/apply";
}
@ -602,20 +611,26 @@ public class LakalaApiServiceImpl implements LakalaApiService {
JSONObject header = new JSONObject();
header.put("Authorization", authorization);
String errMsg = "";
ResponseEntity<JSONObject> response = RestTemplateHttpUtil.sendPostBodyBackEntity(reqUrl, header, reqBody, JSONObject.class);
if (ObjectUtil.isEmpty(response) || response.getStatusCode() != HttpStatus.OK) {
return Pair.of(false, "商家入网申请电子合同:请求失败");
errMsg = "商家入网申请电子合同失败:请求失败";
shopMchEntryService.updateMerchEntryApprovalByMchId(shopMchEntry.getId(), "", CommonConstant.MCH_APPR_STA_NOPASS, errMsg);
return Pair.of(false, errMsg);
}
JSONObject respBody = response.getBody();
if (ObjectUtil.isNotEmpty(respBody) && !lklSuccessCode.equals(respBody.getStr("code"))) {
String errMsg = StrUtil.isBlank(respBody.getStr("msg")) ? "返回状态有误" : respBody.getStr("msg");
return Pair.of(false, "商家入网申请电子合同失败:" + errMsg);
errMsg = "商家入网申请电子合同失败:" + (StrUtil.isBlank(respBody.getStr("msg")) ? "返回状态有误" : respBody.getStr("msg"));
shopMchEntryService.updateMerchEntryApprovalByMchId(shopMchEntry.getId(), "", CommonConstant.MCH_APPR_STA_NOPASS, errMsg);
return Pair.of(false, errMsg);
}
JSONObject respData = respBody.getJSONObject("resp_data");
if (respBody.getJSONObject("resp_data") == null) {
return Pair.of(false, "商家入网申请电子合同失败:返回数据有误");
errMsg = "商家入网申请电子合同失败:返回数据有误";
shopMchEntryService.updateMerchEntryApprovalByMchId(shopMchEntry.getId(), "", CommonConstant.MCH_APPR_STA_NOPASS, errMsg);
return Pair.of(false, errMsg);
}
// 商家入网申请电子合同处理数据
@ -630,96 +645,15 @@ public class LakalaApiServiceImpl implements LakalaApiService {
record.setResp_body(respBody.toString());
Boolean success = lklLedgerEcService.saveOrUpdateByMchId(record);
if (!success) {
return Pair.of(false, "商家入网申请电子合同失败:本地数据保存失败");
errMsg = "商家入网申请电子合同失败:数据保存失败";
shopMchEntryService.updateMerchEntryApprovalByMchId(shopMchEntry.getId(), "", CommonConstant.MCH_APPR_STA_NOPASS, errMsg);
return Pair.of(false, errMsg);
}
return Pair.of(true, "商家入网申请电子合同成功");
}
/**
* 商户分账业务开通申请
*
* @param paramsJSON
* @return
*/
@Override
public CommonResult applyLedgerMer(JSONObject paramsJSON) {
log.info("商户分账业务开通申请开始");
// TODO 判断是否已经申请过
// 1. 配置初始化
initLKLSDK();
//2. 装配数据
V2MmsOpenApiLedgerApplyLedgerMerRequest req = new V2MmsOpenApiLedgerApplyLedgerMerRequest();
req.setVersion("2.0");
req.setOrderNo(StringUtils.genLklOrderNo(8));// 14位年月日时24小时制分秒+8位的随机数
req.setOrgCode(orgCode);
req.setMerInnerNo(paramsJSON.getStr("merInnerNo"));// 从进件申请返回的商户号
req.setMerCupNo(paramsJSON.getStr("merCupNo")); // 从进件申请返回的商户号
req.setContactMobile(paramsJSON.getStr("contactMobile")); // 商户入驻注册的手机号
// 分账比例为了考虑低价订单的运费占比高分账比例暂时定70%分账给商户30%分账给平台
// new BigDecimal(paramsJSON.getStr("splitLowestRatio"))
req.setSplitLowestRatio(new BigDecimal(ratio));
String fileName = paramsJSON.getStr("splitEntrustFileName");
req.setSplitEntrustFileName(fileName);
// 分账结算委托书文件上传到拉卡拉服务器
JSONObject fileUploadResp = uploadFile(req.getOrderNo(), "SPLIT_ENTRUST_FILE", StringUtils.getFileExt(fileName), UploadUtil.fileUrlToBase64(paramsJSON.getStr("splitEntrustFile")));
if (fileUploadResp == null || StrUtil.isBlank(fileUploadResp.getStr("attFileId"))) {
throw new ApiException(I18nUtil._("分账结算委托书上传失败!"));
}
String splitEntrustFilePath = fileUploadResp.getStr("attFileId");
req.setSplitEntrustFilePath(splitEntrustFilePath); //比如G1/M00/06/64/CrFdEmBQc-aAGc_XAAAiIbS3WIE960.pdf;
String domain = projectDomain;
if (isProd()) {
domain += "/api";
}
// 给拉卡拉通知的回调地址
String retUrl = domain + "/mobile/shop/lakala/ledger/applyLedgerMerNotify";
req.setRetUrl(retUrl);
paramsJSON.set("orderNo", req.getOrderNo());
paramsJSON.set("version", "2.0");
paramsJSON.set("ret_url", retUrl);
paramsJSON.set("org_code", orgCode);
paramsJSON.set("split_entrust_file_path", splitEntrustFilePath);
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) {
return CommonResult.failed(I18nUtil._("申请开通分账失败!"));
}
if (!lakalaRespJSON.getStr("retCode").equals(lklSuccessCode)) {
return CommonResult.failed(lakalaRespJSON.getStr("retMsg"));
}
paramsJSON.set("apply_id", lakalaRespJSON.getByPath("respData.applyId"));
paramsJSON.set("remark", lakalaRespJSON.getStr("retMsg"));
paramsJSON.set("audit_status_text", paramsJSON.get("remark"));
paramsJSON.set("mch_id", paramsJSON.get("mchId"));
// 新增数据
// JSON 对象的键名转换为下划线命名
LklLedgerMember lklLedgerMember = JSONUtil.toBean(StringUtils.convertCamelToSnake(paramsJSON.toString()), LklLedgerMember.class);
lklLedgerMemberService.saveOrUpdateByMerCupNo(lklLedgerMember);
return CommonResult.success(null, "提交成功,待审核中!");
} catch (SDKException e) {
log.error("申请开通分账出错:", e);
throw new ApiException(I18nUtil._("商家申请开通分账出错!"), e);
}
}
@Override
public Pair<Boolean, String> innerApplyLedgerMer(String merCupNo) {
log.debug("商户分账业务开通申请开始");
@ -758,7 +692,7 @@ public class LakalaApiServiceImpl implements LakalaApiService {
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._("小发同城分账授权委托书上传失败!"));
@ -768,7 +702,7 @@ public class LakalaApiServiceImpl implements LakalaApiService {
req.setSplitEntrustFilePath(splitEntrustFilePath); //比如G1/M00/06/64/CrFdEmBQc-aAGc_XAAAiIbS3WIE960.pdf;
String domain = projectDomain;
if (isProd()) {
if (isProdProject()) {
domain += "/api";
}
// 给拉卡拉通知的回调地址
@ -792,7 +726,6 @@ public class LakalaApiServiceImpl implements LakalaApiService {
paramsJSON.put("split_entrust_file_name", req.getSplitEntrustFileName());
paramsJSON.put("split_entrust_file_path", splitEntrustFilePath);
try {
//3. 发送请求
String responseStr = LKLSDK.httpPost(req);
@ -834,16 +767,18 @@ public class LakalaApiServiceImpl implements LakalaApiService {
*/
@Override
public JSONObject applyLedgerMerEcNotify(HttpServletRequest request) {
log.info("商户入网电子合同申请回调通知开始");
log.debug("商户入网电子合同申请回调通知开始");
// 验签
String authorization = request.getHeader("Authorization");
String requestBody = LakalaUtil.getBody(request);
log.info("商户入网电子合同申请回调返回参数:{}", requestBody);
log.debug("商户入网电子合同申请回调返回request body参数{}", requestBody);
log.debug("商户入网电子合同申请回调返回authorization参数{}", authorization);
String errMsg = "商户入网电子合同申请回调:";
boolean checkSuccess = LakalaUtil.verify(authorization, requestBody, lklNotifyCerPath);
if (!checkSuccess) {
log.info("商户入网电子合同申请回调:验签失败");
log.error(errMsg + "验签失败");
return JSONUtil.createObj().set("retCode", "OP90002").set("retMsg", "验签失败!");
}
@ -858,21 +793,21 @@ public class LakalaApiServiceImpl implements LakalaApiService {
String ecNo = paramsJSON.getStr("ecNo");
String ecStatus = paramsJSON.getStr("ecStatus"); // COMPLETED
if (ecStatus == null || !ecStatus.equals("COMPLETED")) {
log.info("商户入网电子合同申请状态尚未签署完成!");
respData.put("retMsg", "入网电子合同尚未签署完成");
log.debug("商户入网电子合同申请状态尚未签署完成!");
respData.put("retMsg", "入网电子合同尚未签署,请稍候");
return respData;
}
if (ecApplyId == null || StrUtil.isBlank(ecNo)) {
log.info("商户入网电子合同申请回调ecApplyId 为空");
log.error("商户入网电子合同申请回调ecApplyId 为空");
respData.put("retMsg", "ecApplyId 返回空值!");
return respData;
}
LklLedgerEc lklLedgerEc = lklLedgerEcService.getByApplyId(ecApplyId, "", CommonConstant.Enable);
if (lklLedgerEc == null) {
log.info("商户入网电子合同申请回调:找到对应入网电子合同记录");
respData.put("retMsg", "找到对应入网电子合同记录!");
log.error("商户入网电子合同申请回调:到对应入网lklLedgerEc电子合同记录");
respData.put("retMsg", "到对应入网电子合同记录!");
return respData;
}
@ -896,20 +831,23 @@ public class LakalaApiServiceImpl implements LakalaApiService {
// 更新本地数据状态和合同编号合同名字
Boolean success = lklLedgerEcService.updateByApplyId(updRecord);
if (success) {
respData.put("retCode", lklSuccessCode);
respData.put("retMsg", "操作成功!");
log.info("商户入网电子合同申请回调:处理成功");
// 更新商家入驻表的合同编号和签署地址
// 更新商家入驻表的合同编号和签署地址更改状态
shopMchEntryService.updateMerchEntryLklEcNo(lklLedgerEc.getMch_id(), ecNo, paramsJSON.getStr("ecName"), lklLedgerEc.getResult_url(), ecFileUrl);
// TODO 商家电子合同签署完毕后收到异步通知触发拉卡拉商家进件重要环节
// 下一步等待拉卡拉系统审核和人工审核收到异步通知之后触发1e签宝的电子合同签署2新增分账接收方
Pair<Boolean, String> resultPair = lklTkService.registrationMerchant(lklLedgerEc.getMch_mobile(), "");
if (!resultPair.getFirst()) {
log.error("###商户入网电子合同签署通知回调:拉卡拉商家进件失败:", resultPair.getSecond());
// return CommonResult.failed(resultPair.getSecond());
errMsg += resultPair.getSecond();
log.error(errMsg);
shopMchEntryService.updateMerchEntryApprovalByMchId(lklLedgerEc.getMch_id(), "", CommonConstant.MCH_APPR_STA_NOPASS, errMsg);
respData.put("retMsg", errMsg);
return respData;
}
respData.put("retCode", lklSuccessCode);
respData.put("retMsg", "操作成功!");
log.info("商户入网电子合同申请回调:处理成功");
}
}
@ -939,8 +877,8 @@ public class LakalaApiServiceImpl implements LakalaApiService {
reqBody.put("version", "1.0");
reqBody.put("req_data", reqData);
String reqUrl = serverUrl + "/sit/api/v3/mms/open_api/ec/download";
if (isProd()) {
String reqUrl = serverUrl + "/api/v3/mms/open_api/ec/download";
if (isLklProd) {
reqUrl = serverUrl + "/api/v3/mms/open_api/ec/download";
}
@ -990,6 +928,7 @@ public class LakalaApiServiceImpl implements LakalaApiService {
.concat(lklLedgerEc.getMch_mobile()).concat("/")
.concat("signed").concat("/")
.concat(ecApplyId.toString()).concat(".pdf");
log.debug("拉卡拉电子合同保存地址:{}", cosFileName);
// 上传到cos服务器
String cosFileUrl = ossService.uploadObject4OSS(file, cosFileName);
@ -1000,6 +939,94 @@ public class LakalaApiServiceImpl implements LakalaApiService {
return cosFileUrl;
}
/**
* 商户分账业务开通申请
*
* @param paramsJSON
* @return
*/
@Override
public CommonResult applyLedgerMer(JSONObject paramsJSON) {
log.debug("商户分账业务开通申请1开始");
// TODO 判断是否已经申请过
// 1. 配置初始化
initLKLSDK();
//2. 装配数据
V2MmsOpenApiLedgerApplyLedgerMerRequest req = new V2MmsOpenApiLedgerApplyLedgerMerRequest();
req.setVersion("2.0");
req.setOrderNo(StringUtils.genLklOrderNo(8));// 14位年月日时24小时制分秒+8位的随机数
req.setOrgCode(orgCode);
req.setMerInnerNo(paramsJSON.getStr("merInnerNo"));// 从进件申请返回的商户号
req.setMerCupNo(paramsJSON.getStr("merCupNo")); // 从进件申请返回的商户号
req.setContactMobile(paramsJSON.getStr("contactMobile")); // 商户入驻注册的手机号
// 分账比例为了考虑低价订单的运费占比高分账比例暂时定70%分账给商户30%分账给平台
// new BigDecimal(paramsJSON.getStr("splitLowestRatio"))
req.setSplitLowestRatio(new BigDecimal(ratio));
String fileName = paramsJSON.getStr("splitEntrustFileName");
req.setSplitEntrustFileName(fileName);
// 分账结算委托书文件上传到拉卡拉服务器
JSONObject fileUploadResp = uploadFile(req.getOrderNo(), "SPLIT_ENTRUST_FILE", StringUtils.getFileExt(fileName), UploadUtil.fileUrlToBase64(paramsJSON.getStr("splitEntrustFile")));
if (fileUploadResp == null || StrUtil.isBlank(fileUploadResp.getStr("attFileId"))) {
throw new ApiException(I18nUtil._("分账结算委托书上传失败!"));
}
String splitEntrustFilePath = fileUploadResp.getStr("attFileId");
req.setSplitEntrustFilePath(splitEntrustFilePath); //比如G1/M00/06/64/CrFdEmBQc-aAGc_XAAAiIbS3WIE960.pdf;
// 正式上线的时候调整 api 地址
String domain = projectDomain;
if (isProdProject()) {
domain += "/api";
}
// 给拉卡拉通知的回调地址
String retUrl = domain + "/mobile/shop/lakala/ledger/applyLedgerMerNotify";
req.setRetUrl(retUrl);
paramsJSON.set("orderNo", req.getOrderNo());
paramsJSON.set("version", "2.0");
paramsJSON.set("ret_url", retUrl);
paramsJSON.set("org_code", orgCode);
paramsJSON.set("split_entrust_file_path", splitEntrustFilePath);
String errMsg = "商户分账业务开通申请:";
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) {
return CommonResult.failed(I18nUtil._("申请开通分账失败!"));
}
if (!lakalaRespJSON.getStr("retCode").equals(lklSuccessCode)) {
return CommonResult.failed(lakalaRespJSON.getStr("retMsg"));
}
paramsJSON.set("apply_id", lakalaRespJSON.getByPath("respData.applyId"));
paramsJSON.set("remark", lakalaRespJSON.getStr("retMsg"));
paramsJSON.set("audit_status_text", paramsJSON.get("remark"));
paramsJSON.set("mch_id", paramsJSON.get("mchId"));
// 新增数据
// JSON 对象的键名转换为下划线命名
LklLedgerMember lklLedgerMember = JSONUtil.toBean(StringUtils.convertCamelToSnake(paramsJSON.toString()), LklLedgerMember.class);
lklLedgerMemberService.saveOrUpdateByMerCupNo(lklLedgerMember);
return CommonResult.success(null, "提交成功,待审核中!");
} catch (SDKException e) {
errMsg += e.getMessage();
log.error(errMsg);
shopMchEntryService.updateMerchEntryApprovalByMchId(paramsJSON.getLong("mchId"), paramsJSON.getStr("mchMobile"), CommonConstant.MCH_APPR_STA_NOPASS, errMsg);
throw new ApiException(I18nUtil._("商家申请开通分账出错!"), e);
}
}
/**
* 商户分账业务开通申请回调
* 参考https://o.lakala.com/#/home/document/detail?id=379
@ -1009,37 +1036,50 @@ public class LakalaApiServiceImpl implements LakalaApiService {
*/
@Override
public JSONObject applyLedgerMerNotify(HttpServletRequest request) {
log.info("商户分账申请业务异步通知开始");
log.debug("商户分账申请业务异步回调通知开始");
// 验签
String authorization = request.getHeader("Authorization");
String requestBody = LakalaUtil.getBody(request);
log.info("商户分账申请业务回调返回参数:{}", requestBody);
log.debug("商户分账申请业务异步回调返回request body参数{}", requestBody);
log.debug("商户分账申请业务异步回调返回authorization参数{}", authorization);
boolean checkSuccess = LakalaUtil.verify(authorization, requestBody, lklNotifyCerPath);
if (!checkSuccess) {
log.info("商户分账申请业务回调:验签失败");
return JSONUtil.createObj().set("retCode", "OP90002").set("retMsg", "验签失败!");
log.error("商户分账申请业务回调:验签失败");
return JSONUtil.createObj().put("retCode", "OP90002").put("retMsg", "验签失败!");
}
JSONObject paramsJSON = JSONUtil.parseObj(requestBody);
String errMsg = "商户分账申请业务回调:";
JSONObject respData = new JSONObject();
respData.put("retCode", "OP90003");
respData.put("retMsg", "响应处理失败!");
if (paramsJSON != null) {
String applyId = paramsJSON.getStr("applyId");
if (StrUtil.isBlank(applyId)) {
log.info("商户分账申请业务回调applyId为空");
respData.put("retMsg", "applyId为空");
String auditStatus = paramsJSON.getStr("auditStatus");
if (StrUtil.isBlank(applyId) || StrUtil.isBlank(auditStatus)) {
errMsg += "缺少返回必要参数";
log.error(errMsg + "applyId={}, auditStatus={}", applyId, auditStatus);
respData.put("retMsg", errMsg);
return respData;
}
if (lklLedgerMemberService.getByApplyId(applyId, CommonConstant.Enable) != null) {
//auditStatus:1:通过2拒绝
if (!auditStatus.equals("1")) {
respData.put("retMsg", "商户分账申请被驳回!");
return respData;
}
LklLedgerMember lklLedgerMember = lklLedgerMemberService.getByApplyId(applyId, CommonConstant.Enable);
if (lklLedgerMember != null) {
respData.put("retCode", lklSuccessCode);
respData.put("retMsg", "操作成功!");
log.info("商户分账申请业务回调:已处理成功,不需再重新处理");
respData.put("retMsg", "商户分账申请已处理成功!");
log.debug("商户分账申请业务回调:已处理成功,不需再重新处理");
return respData;
}
// 更改本地分账记录状态数据
@ -1055,24 +1095,27 @@ public class LakalaApiServiceImpl implements LakalaApiService {
);
if (success) {
respData.put("retCode", lklSuccessCode);
respData.put("retMsg", "操作成功!");
log.info("商户分账申请业务回调:处理成功");
// 重要注商户分账申请业务成功后同时也会新增接收方这时系统绑定接收方平台方和代理商绑定之前要判断是否已经绑定过了
JSONObject bindParamsJSON = new JSONObject();
bindParamsJSON.put("merInnerNo", paramsJSON.getStr("merInnerNo"));
bindParamsJSON.put("merCupNo", merCupNo);
Pair<Boolean, String> bindResult = innerApplyLedgerMerReceiverBind(bindParamsJSON);
if (bindResult.getFirst()) {
log.info("商户分账申请业务回调:", bindResult.getSecond());
} else {
log.error("商户分账申请业务回调:", bindResult.getSecond());
if (!bindResult.getFirst()) {
errMsg += bindResult.getSecond();
log.error("商户{}预绑定接收方出错:{}", merCupNo, bindResult.getSecond());
shopMchEntryService.updateMerchEntryApprovalByMchId(lklLedgerMember.getMch_id(), "", CommonConstant.MCH_APPR_STA_NOPASS, errMsg);
respData.put("retMsg", "操作成功!");
return respData;
}
// 更新商家的hasApplySplit状态=1
lklLedgerMemberService.updateMulStatus(merCupNo, "", 0, 1, 0, 0);
// 更新商家的hasApplySplit状态=1;has_esigned=1
lklLedgerMemberService.updateMulStatus(merCupNo, "", 1, 1, 0, 0);
respData.put("retCode", lklSuccessCode);
respData.put("retMsg", "操作成功!");
log.debug("商户分账申请业务回调:处理成功");
return respData;
}
}
@ -1231,8 +1274,9 @@ public class LakalaApiServiceImpl implements LakalaApiService {
String splitEntrustFileBase64 = UploadUtil.fileUrlToBase64(paramsJSON.getStr("entrustFile")); // 这个是 url 地址不是 base64 字节码
req.setEntrustFileName(fileName);
// 正式上线的时候调整 api 地址
String domain = projectDomain;
if (isProd()) {
if (isProdProject()) {
domain += "/api";
}
// 给拉卡拉通知的回调地址
@ -1263,7 +1307,11 @@ public class LakalaApiServiceImpl implements LakalaApiService {
String responseStr = LKLSDK.httpPost(req);
JSONObject lakalaRespJSON = JSONUtil.parseObj(responseStr);
if (lakalaRespJSON == null || !lakalaRespJSON.getStr("retCode").equals(lklSuccessCode)) {
if (lakalaRespJSON == null) {
throw new ApiException(I18nUtil._(lakalaRespJSON.getStr("retMsg")));
}
if (!lakalaRespJSON.getStr("retCode").equals(lklSuccessCode)) {
throw new ApiException(I18nUtil._(lakalaRespJSON.getStr("retMsg")));
}
@ -1275,7 +1323,6 @@ public class LakalaApiServiceImpl implements LakalaApiService {
LklLedgerMerReceiverBind lklLedgerMerReceiverBind = JSONUtil.toBean(StringUtils.convertCamelToSnake(paramsJSON.toString()), LklLedgerMerReceiverBind.class);
lklLedgerMerReceiverBindService.saveOrUpdateByMerCupNoReceiverNo(lklLedgerMerReceiverBind);
return CommonResult.success(lklLedgerMerReceiverBind, "提交成功,待审核中!");
} catch (SDKException e) {
log.error("分账绑定关系申请失败:", e);
@ -1342,7 +1389,7 @@ public class LakalaApiServiceImpl implements LakalaApiService {
req.setEntrustFileName(entrustFileName);
String domain = projectDomain;
if (isProd()) {
if (isProdProject()) {
domain += "/api";
}
// 给拉卡拉通知的回调地址
@ -1415,15 +1462,16 @@ public class LakalaApiServiceImpl implements LakalaApiService {
*/
@Override
public JSONObject applyLedgerMerReceiverBindNotify(HttpServletRequest request) {
log.debug("分账绑定关系申请业务异步通知开始");
log.debug("分账商家绑定接收方异步回调通知开始");
// 验签
String authorization = request.getHeader("Authorization");
String requestBody = LakalaUtil.getBody(request);
log.debug("分账绑定关系申请业务回调返回参数:{}", requestBody);
log.debug("分账商家绑定接收方异步回调返回request body参数{}", requestBody);
log.debug("分账商家绑定接收方异步回调返回authorization参数{}", authorization);
boolean checkSuccess = LakalaUtil.verify(authorization, requestBody, lklNotifyCerPath);
if (!checkSuccess) {
return JSONUtil.createObj().set("retCode", "OP90002").set("retMsg", "验签失败!");
return JSONUtil.createObj().put("retCode", "OP90002").put("retMsg", "验签失败!");
}
JSONObject paramsJSON = JSONUtil.parseObj(requestBody);
@ -1433,7 +1481,23 @@ public class LakalaApiServiceImpl implements LakalaApiService {
if (paramsJSON != null) {
String merCupNo = paramsJSON.getStr("merCupNo");
Boolean success = lklLedgerMerReceiverBindService.updateAuditResult(paramsJSON.getStr("applyId"),
String applyId = paramsJSON.getStr("applyId");
String auditStatus = paramsJSON.getStr("auditStatus");
if (StrUtil.isBlank(merCupNo) || StrUtil.isBlank(applyId) || StrUtil.isBlank(auditStatus)) {
String errMsg = "缺少返回必要参数";
log.error(errMsg + "applyId={}, applyId={}, auditStatus={}", merCupNo, applyId, auditStatus);
respData.put("retMsg", errMsg);
return respData;
}
//auditStatus:1:通过2拒绝
if (!auditStatus.equals("1")) {
respData.put("retMsg", "绑定接收方被驳回!");
return respData;
}
Boolean success = lklLedgerMerReceiverBindService.updateAuditResult(applyId,
paramsJSON.getStr("merInnerNo"),
merCupNo,
paramsJSON.getStr("receiverNo"),
@ -1443,8 +1507,6 @@ public class LakalaApiServiceImpl implements LakalaApiService {
paramsJSON.getStr("auditStatusText"),
paramsJSON.getStr("remark"));
if (success) {
respData.put("retCode", lklSuccessCode);
// 更改商家的状态 has_bind_receiver 状态=1
lklLedgerMemberService.updateMulStatus(merCupNo, "", 0, 0, 0, 1);
@ -1455,16 +1517,19 @@ public class LakalaApiServiceImpl implements LakalaApiService {
String mchMobile = shopEntry.getLogin_mobile();
Pair<Integer, String> retPair = shopStoreBaseService.merchEntryInfo2StoreInfo(mchMobile);
if (retPair.getFirst() > 0) {
// 2025-05-17暂停e签宝电子合同生成流程
// 更改合同记录表的店铺id
esignContractService.updateContractStoreId(mchMobile, retPair.getFirst());
// esignContractService.updateContractStoreId(mchMobile, retPair.getFirst());
// 填充合同模版表的店铺Id
esignContractFillingFileService.updateContractFillingStoreId(mchMobile, retPair.getFirst());
// esignContractFillingFileService.updateContractFillingStoreId(mchMobile, retPair.getFirst());
// 店铺创建状态已完成
shopMchEntryService.updateMerchEntryStoreStatus(mchMobile, CommonConstant.Enable);
}
}
respData.put("retCode", lklSuccessCode);
respData.put("retMsg", "操作成功!");
return respData;
}
}

View File

@ -146,7 +146,7 @@ public class LklLedgerMemberServiceImpl extends BaseServiceImpl<LklLedgerMemberM
int i = 0;
UpdateWrapper<LklLedgerMember> updateWrapper = new UpdateWrapper<>();
if (StrUtil.isNotBlank(mchMobile)) {
updateWrapper.eq("mch_mobile", mchMobile);
updateWrapper.eq("contact_mobile", mchMobile);
}
if (StrUtil.isNotBlank(merCupNo)) {
updateWrapper.eq("mer_cup_no", merCupNo);

View File

@ -194,6 +194,8 @@ public class LklLedgerReceiverServiceImpl extends BaseServiceImpl<LklLedgerRecei
if (CollectionUtil.isNotEmpty(attachList)) {
reqParam.put("attachList", attachList);
}
reqParams.add(reqParam);
}
return reqParams;
@ -208,7 +210,7 @@ public class LklLedgerReceiverServiceImpl extends BaseServiceImpl<LklLedgerRecei
@Override
public Boolean innerApplyLedgerReceiver(String merCupNo, Long platformId) {
JSONArray buildApplyLedgerReceiverReqParams = buildApplyLedgerReceiverReqParams(platformId);
if (CollectionUtil.isEmpty(buildApplyLedgerReceiverReqParams)) {
if (buildApplyLedgerReceiverReqParams == null || buildApplyLedgerReceiverReqParams.isEmpty()) {
log.error("没有平台信息或代理商信息");
return false;
}

View File

@ -23,8 +23,6 @@ import com.suisung.mall.common.utils.RestTemplateHttpUtil;
import com.suisung.mall.common.utils.StringUtils;
import com.suisung.mall.common.utils.UploadUtil;
import com.suisung.mall.core.web.service.RedisService;
import com.suisung.mall.shop.esign.service.EsignContractFillingFileService;
import com.suisung.mall.shop.esign.service.EsignContractService;
import com.suisung.mall.shop.lakala.service.LklBanksService;
import com.suisung.mall.shop.lakala.service.LklLedgerReceiverService;
import com.suisung.mall.shop.lakala.utils.LakalaUtil;
@ -71,6 +69,9 @@ public class LklTkServiceImpl {
@Value("${spring.profiles.active}")
private String profile;
@Value("${lakala.is_prod}")
private Boolean isLklProd;
@Lazy
@Resource
private ShopMchEntryService shopMchEntryService;
@ -79,13 +80,17 @@ public class LklTkServiceImpl {
@Resource
private LklLedgerReceiverService lklLedgerReceiverService;
@Lazy
@Resource
private EsignContractService esignContractService;
// @Lazy
// @Resource
// private EsignContractService esignContractService;
//
// @Lazy
// @Resource
// private EsignContractFillingFileService esignContractFillingFileService;
@Lazy
@Resource
private EsignContractFillingFileService esignContractFillingFileService;
private LakalaApiServiceImpl lakalaApiService;
@Lazy
@Resource
@ -103,10 +108,9 @@ public class LklTkServiceImpl {
return tkServerUrl + urlPath;
}
protected boolean isProd() {
return false;
protected boolean isProdProject() {
// 生产环境的时候启动该配置
// return "prod".equalsIgnoreCase(profile);
return "prod".equalsIgnoreCase(profile);
}
/**
@ -151,7 +155,6 @@ public class LklTkServiceImpl {
header.put("Authorization", authorization);
String updUrlPath = isProd() ? "/registration/file/base/upload" : "/sit/htkregistration/file/base/upload";
String fileBase64 = UploadUtil.multipartFileToBase64(file);
if (StrUtil.isBlank(fileBase64)) {
return CommonResult.failed("解析文件转换失败");
@ -164,8 +167,14 @@ public class LklTkServiceImpl {
requestBody.put("sourcechnl", "0"); // 来源: 0:PC,1:安卓,2:IOS
requestBody.put("isOcr", "true");
String urlPath = "/sit/htkregistration/file/base/upload";
if (isLklProd) {
// 生产环境启用
urlPath = "/registration/file/base/upload";
}
try {
ResponseEntity<JSONObject> updResponse = RestTemplateHttpUtil.sendPostBodyBackEntity(buildLklTkUrl(updUrlPath), header, requestBody, JSONObject.class);
ResponseEntity<JSONObject> updResponse = RestTemplateHttpUtil.sendPostBodyBackEntity(buildLklTkUrl(urlPath), header, requestBody, JSONObject.class);
if (ObjectUtil.isEmpty(updResponse)
|| updResponse.getStatusCode() != HttpStatus.OK
|| ObjectUtil.isEmpty(updResponse.getBody())) {
@ -221,13 +230,20 @@ public class LklTkServiceImpl {
JSONObject header = new JSONObject();
header.put("Authorization", authorization);
String ocrUrlPath = isProd() ? "/registration/ocr/result" : "/sit/htkregistration/ocr/result";
JSONObject ocrRequestBody = new JSONObject();
ocrRequestBody.put("batchNo", batchNo);
ocrRequestBody.put("imgType", imgType);
logger.info("ocr请求参数{}", ocrRequestBody);
String urlPath = "/sit/htkregistration/ocr/result";
if (isLklProd) {
// 生产环境启用
urlPath = "/registration/ocr/result";
}
try {
ResponseEntity<JSONObject> ocrResponse = RestTemplateHttpUtil.sendPostBodyBackEntity(buildLklTkUrl(ocrUrlPath), header, ocrRequestBody, JSONObject.class);
ResponseEntity<JSONObject> ocrResponse = RestTemplateHttpUtil.sendPostBodyBackEntity(buildLklTkUrl(urlPath), header, ocrRequestBody, JSONObject.class);
if (ObjectUtil.isEmpty(ocrResponse)
|| ocrResponse.getStatusCode() != HttpStatus.OK
|| ObjectUtil.isEmpty(ocrResponse.getBody())) {
@ -264,7 +280,14 @@ public class LklTkServiceImpl {
formData.put("client_id", clientId);
formData.put("client_secret", clientSecret);
String response = RestTemplateHttpUtil.sendPostFormData(buildLklTkUrl("/sit/htkauth/oauth/token"), null, formData, String.class);
String urlPath = "/sit/htkauth/oauth/token";
if (isLklProd) {
// 生产环境启用
urlPath = "/auth/oauth/token";
}
String response = RestTemplateHttpUtil.sendPostFormData(buildLklTkUrl(urlPath), null, formData, String.class);
if (ObjectUtil.isEmpty(response)) {
return "";
}
@ -298,7 +321,7 @@ public class LklTkServiceImpl {
header.put("Authorization", getLklTkAuthorization());
// 获取商家入驻信息组成请求参数
ShopMchEntry shopMchEntry = shopMchEntryService.getShopMerchEntryByCondition(mchMobile, bizLicenseNumber, CommonConstant.MCH_APPR_STA_PASS, CommonConstant.MCH_APPR_STA_LKL_PADDING);
ShopMchEntry shopMchEntry = shopMchEntryService.getShopMerchEntryByCondition(mchMobile, bizLicenseNumber);
if (ObjectUtil.isEmpty(shopMchEntry)) {
return Pair.of(false, "商家入驻信息不存在");
}
@ -401,7 +424,6 @@ public class LklTkServiceImpl {
}
}
// 费率和设备活动
JSONObject bizContent = new JSONObject();
bizContent.put("activityId", 687);
@ -465,7 +487,14 @@ public class LklTkServiceImpl {
formData.put("attchments", attachments);
// 附件文件相关结束
String urlPath = isProd() ? "/registration/merchant" : "/sit/htkregistration/merchant";
String urlPath = "/sit/htkregistration/merchant";
if (isLklProd) {
// 生产环境启用
urlPath = "/registration/merchant";
}
// String urlPath = isProd() ? "/registration/merchant" : "/sit/htkregistration/merchant";
try {
logger.info("进件请求参数:{}", JSONUtil.toJsonStr(formData));
@ -497,7 +526,7 @@ public class LklTkServiceImpl {
}
/**
* 拉卡拉进件异步通知
* 重要拉卡拉进件异步通知
*
* @param request
* @return
@ -533,10 +562,15 @@ public class LklTkServiceImpl {
// 逻辑处理
JSONObject dataJSON = JSONUtil.parseObj(data);
if (dataJSON.isEmpty() || StrUtil.isBlank(dataJSON.getStr("externalCustomerNo"))) {
if (dataJSON.isEmpty() || StrUtil.isBlank(dataJSON.getStr("externalCustomerNo")) || StrUtil.isBlank(dataJSON.getStr("status"))) {
return new JSONObject().set("code", "500").set("message", "参数解析出错");
}
String auditStatus = dataJSON.getStr("status");
if (!"SUCCESS".equals(auditStatus) && !"REVIEW_PASS".equals(auditStatus)) {
return new JSONObject().set("code", "500").set("message", "返回审核状态有误");
}
// 给商家入驻表增加拉卡拉的商户号和拉卡拉返回的数据
String merCupNo = dataJSON.getStr("externalCustomerNo"); //拉卡拉外部商户号
String merInnerNo = dataJSON.getStr("customerNo"); //拉卡拉内部商户号
@ -551,24 +585,40 @@ public class LklTkServiceImpl {
return new JSONObject().set("code", "500").set("message", "更新商户号失败");
}
logger.debug("###开始异步执行生成电子合同模版和填充模版数据,并生该商家和平台方签署的未盖章合同文件###");
// 生成电子合同模版和填充模版数据并生该商家和平台方签署的未盖章合同文件
Boolean genSuccess = esignContractFillingFileService.fillDocTemplate(shopMchEntry.getLogin_mobile(), "");
if (!genSuccess) {
logger.error("###商家入驻电子合同生成失败###");
// 备注RMK 采用拉卡拉的入网电子合同签署流程暂停e签宝的电子合同生成流程
// logger.debug("###开始异步执行生成电子合同模版和填充模版数据,并生该商家和平台方签署的未盖章合同文件###");
// // 生成电子合同模版和填充模版数据并生该商家和平台方签署的未盖章合同文件
// Boolean genSuccess = esignContractFillingFileService.fillDocTemplate(shopMchEntry.getLogin_mobile(), "");
// if (!genSuccess) {
// logger.error("###商家入驻电子合同生成失败###");
// }
//
// // 1发起E签宝合同签署签署完成之后生成分账盖章协议书下一步才能申请分账功能权限
// Pair<Boolean, String> resPair = esignContractService.innerSignFlowCreateByFile(shopMchEntry.getLogin_mobile());
// if (!resPair.getFirst()) {
// logger.error("###商家发起电子签名失败:{}###", resPair.getSecond());
// }
// 给商家申请分账功能使用务必检查是否申请过申请过忽略
if (success && StrUtil.isNotBlank(shopMchEntry.getContract_download_url())) {
// 1电子合同给商家申请分账功能使用务必检查是否申请过申请过忽略
// 下一步等待拉卡拉审核通过再绑定接收方和商家的关系
Pair<Boolean, String> retPair = lakalaApiService.innerApplyLedgerMer(shopMchEntry.getLkl_mer_cup_no());
if (!retPair.getFirst()) {
logger.error("商家申请分账功能失败:{}", retPair.getSecond());
}
// 1发起E签宝合同签署签署完成之后生成分账盖章协议书下一步才能申请分账功能权限
Pair<Boolean, String> resPair = esignContractService.innerSignFlowCreateByFile(shopMchEntry.getLogin_mobile());
if (!resPair.getFirst()) {
logger.error("###商家发起电子签名失败:{}###", resPair.getSecond());
}
// 更新商家的hasEsigned状态=1
// lklLedgerMemberService.updateMulStatus("", shopMchEntry.getLogin_mobile(), 1, 0, 0, 0);
// 2新增一个接收方记录起码要一个平台方代理商根据入驻信息新增
genSuccess = lklLedgerReceiverService.innerApplyLedgerReceiver(merCupNo, shopMchEntry.getDistributor_id());
Boolean genSuccess = lklLedgerReceiverService.innerApplyLedgerReceiver(merCupNo, shopMchEntry.getDistributor_id());
if (!genSuccess) {
logger.error("###申请分账接收方失败###");
logger.error("申请分账接收方失败");
}
}
return new JSONObject().set("code", "200").set("message", "成功");
}
@ -603,9 +653,6 @@ public class LklTkServiceImpl {
countryName = areaNames[2];
}
String urlPath = isProd() ? "/registration/organization" : "/sit/htkregistration/organization";
urlPath = isBankArea ? urlPath + "/bank" : urlPath; // 银行地区
String authorization = getLklTkAuthorization();
if (StrUtil.isBlank(authorization)) {
logger.error("获取拉卡拉token失败");
@ -615,6 +662,13 @@ public class LklTkServiceImpl {
JSONObject header = new JSONObject();
header.put("Authorization", getLklTkAuthorization());
String urlPath = "/sit/htkregistration/organization";
if (isLklProd) {
// 生产环境启用
urlPath = "/registration/organization";
}
urlPath = isBankArea ? urlPath + "/bank" : urlPath; // 银行地区
// 省份列表
ResponseEntity<JSONArray> response = RestTemplateHttpUtil.sendGetWithHeader(buildLklTkUrl(urlPath + "/1"), header, JSONArray.class);
@ -702,7 +756,6 @@ public class LklTkServiceImpl {
JSONObject header = new JSONObject();
header.put("Authorization", getLklTkAuthorization());
String updUrlPath = isProd() ? "/registration/file/base/upload" : "/sit/htkregistration/file/base/upload";
String fileBase64 = UploadUtil.fileUrlToBase64(fileUrl);
if (StrUtil.isBlank(fileBase64)) {
logger.error("文件转换失败");
@ -716,8 +769,14 @@ public class LklTkServiceImpl {
requestBody.put("sourcechnl", "0"); // 来源: 0:PC,1:安卓,2:IOS
requestBody.put("isOcr", "true");
String urlPath = "/sit/htkregistration/file/base/upload";
if (isLklProd) {
// 生产环境启用
urlPath = "/registration/file/base/upload";
}
try {
ResponseEntity<JSONObject> updResponse = RestTemplateHttpUtil.sendPostBodyBackEntity(buildLklTkUrl(updUrlPath), header, requestBody, JSONObject.class);
ResponseEntity<JSONObject> updResponse = RestTemplateHttpUtil.sendPostBodyBackEntity(buildLklTkUrl(urlPath), header, requestBody, JSONObject.class);
if (ObjectUtil.isEmpty(updResponse)
|| updResponse.getStatusCode() != HttpStatus.OK) {
logger.error("上传文件返回值有误");

View File

@ -190,5 +190,15 @@ public interface ShopMchEntryService {
*/
Boolean updateMerchEntryLklEcNo(Long id, String lklEcNo, String lklEcName, String lklEcResultUrl, String ecDownloadUrl);
/**
* 更新商家入驻申请的审批状态和审批备注
*
* @param mchId 商家入驻申请 IDmchId和mchMobile至少必填一个
* @param mchMobile 商家注册的手机号 mchId和mchMobile至少必填一个
* @param approvalStatus 入驻商家的审批状态1-已通过2-未通过3-待审核4-未申请过5-已提交拉卡拉审核
* @param approvalRemark 审批备注
* @return
*/
Boolean updateMerchEntryApprovalByMchId(Long mchId, String mchMobile, Integer approvalStatus, String approvalRemark);
}

View File

@ -828,6 +828,7 @@ public class ShopMchEntryServiceImpl extends BaseServiceImpl<ShopMchEntryMapper,
updateWrapper.set("lkl_tk_reg_notify_req", lklTkRegNotifyReq);
}
return update(updateWrapper);
}
@ -879,8 +880,43 @@ public class ShopMchEntryServiceImpl extends BaseServiceImpl<ShopMchEntryMapper,
if (StrUtil.isNotBlank(ecDownloadUrl)) {
updateWrapper.set("contract_download_url", ecDownloadUrl);
updateWrapper.set("signed_status", CommonConstant.CONTRACT_SIGN_STA_FINISH);
}
return update(updateWrapper);
}
/**
* 更新商家入驻申请的审批状态和审批备注
*
* @param mchId 商家入驻申请 IDmchId和mchMobile至少必填一个
* @param mchMobile 商家注册的手机号 mchId和mchMobile至少必填一个
* @param approvalStatus 入驻商家的审批状态1-已通过2-未通过3-待审核4-未申请过5-已提交拉卡拉审核
* @param approvalRemark 审批备注
* @return
*/
@Override
public Boolean updateMerchEntryApprovalByMchId(Long mchId, String mchMobile, Integer approvalStatus, String approvalRemark) {
if (ObjectUtil.isEmpty(mchId) && StrUtil.isBlank(mchMobile)) {
log.error("更新商家入驻申请审批状态和备注失败,缺少必要参数");
return false;
}
UpdateWrapper<ShopMchEntry> updateWrapper = new UpdateWrapper<>();
if (ObjectUtil.isNotEmpty(mchId)) {
updateWrapper.eq("id", mchId);
}
if (StrUtil.isNotBlank(mchMobile)) {
updateWrapper.eq("login_mobile", mchMobile);
}
if (ObjectUtil.isNotEmpty(approvalStatus)) {
updateWrapper.set("approval_status", approvalStatus);
}
if (StrUtil.isNotBlank(approvalRemark)) {
updateWrapper.set("approval_remark", approvalRemark);
}
return update(updateWrapper);
}

View File

@ -3008,7 +3008,7 @@ public class ShopStoreBaseServiceImpl extends BaseServiceImpl<ShopStoreBaseMappe
return Pair.of(0, "商家账号异常!");
}
ShopMchEntry shopMchEntry = shopMchEntryService.getShopMerchEntryByCondition(mchMobile, "", CommonConstant.MCH_APPR_STA_PASS);
ShopMchEntry shopMchEntry = shopMchEntryService.getShopMerchEntryByCondition(mchMobile, "");
if (ObjectUtil.isEmpty(shopMchEntry)) {
logger.error("生成店铺:入驻信息不能为空");
return Pair.of(0, "入驻信息不能为空");

View File

@ -144,7 +144,7 @@ sf-express:
#拉卡拉进件配置
lakala:
#服务地址
server_url: https://test.wsmsd.cn
server_url: https://test.wsmsd.cn/sit
#应用Id
app_id: OP00000003
#商户证书序列号
@ -161,10 +161,11 @@ lakala:
merchant_no: 82229007392000A
#终端号
term_no: D9296400
is_prod: false
# 拉卡拉拓客进件配置
tk:
#服务地址
server_url: https://test.wsmsd.cn/sit
server_url: https://test.wsmsd.cn
client_id: lsycs
client_secret: XPa1HB5d55Ig0qV8
user_no: 29153396

View File

@ -171,7 +171,7 @@ lakala:
# #终端号码M0780629B2B收银台 M0780798专业化扫码
# term_no: M0780798
#服务地址
server_url: https://test.wsmsd.cn
server_url: https://test.wsmsd.cn/sit
#应用Id
app_id: OP00000003
#商户证书序列号
@ -188,6 +188,7 @@ lakala:
merchant_no: 82229007392000A
#终端号
term_no: D9296400
is_prod: false
#拉卡拉拓客进件配置
tk:
#服务地址