From 3974a08c85d55ba82b0e80471e1719ba9f248aac Mon Sep 17 00:00:00 2001 From: Jack <46790855@qq.com> Date: Fri, 9 May 2025 00:30:19 +0800 Subject: [PATCH] =?UTF-8?q?ocr=20=E8=B0=83=E8=AF=95=EF=BC=8Ctodo?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../common/modules/store/ShopMchEntry.java | 5 +- .../mall/common/utils/ContextUtil.java | 2 +- .../impl/EsignContractServiceImpl.java | 13 +- .../controller/mobile/LakalaController.java | 1 + .../shop/lakala/service/LakalaApiService.java | 9 + .../service/LklLedgerReceiverService.java | 11 + .../service/impl/LakalaApiServiceImpl.java | 262 +++++++++++++++++- .../impl/LklLedgerReceiverServiceImpl.java | 20 ++ .../lakala/service/impl/LklTkServiceImpl.java | 20 +- .../src/main/resources/bootstrap-prod.yml | 2 +- 10 files changed, 324 insertions(+), 21 deletions(-) diff --git a/mall-common/src/main/java/com/suisung/mall/common/modules/store/ShopMchEntry.java b/mall-common/src/main/java/com/suisung/mall/common/modules/store/ShopMchEntry.java index f1e83833..3128033a 100644 --- a/mall-common/src/main/java/com/suisung/mall/common/modules/store/ShopMchEntry.java +++ b/mall-common/src/main/java/com/suisung/mall/common/modules/store/ShopMchEntry.java @@ -125,7 +125,7 @@ public class ShopMchEntry implements Serializable { @ApiModelProperty(value = "入驻商家许可证图片的存储路径") private String license_image; - + @ApiModelProperty(value = "商家营业执照有效开始时间") private String biz_license_period_begin; @@ -216,6 +216,9 @@ public class ShopMchEntry implements Serializable { @ApiModelProperty(value = "商家的代理商ID") private Long distributor_id; + @ApiModelProperty(value = "拉卡拉内部商户号") + private String lkl_mer_inner_no; + @ApiModelProperty(value = "拉卡拉银联商户号(唯一)") private String lkl_mer_cup_no; diff --git a/mall-common/src/main/java/com/suisung/mall/common/utils/ContextUtil.java b/mall-common/src/main/java/com/suisung/mall/common/utils/ContextUtil.java index 86c78c82..60ac8005 100644 --- a/mall-common/src/main/java/com/suisung/mall/common/utils/ContextUtil.java +++ b/mall-common/src/main/java/com/suisung/mall/common/utils/ContextUtil.java @@ -39,7 +39,7 @@ public class ContextUtil { public static UserDto getCurrentUser() { try { UserDto loginUser = staticUserInfoService.getUser(); - log.info("##### 当前登录用户:{}###", JsonUtil.object2json(loginUser)); + // log.info("##### 当前登录用户:{}###", JsonUtil.object2json(loginUser)); return loginUser; } catch (Exception e) { System.out.println(e.getMessage()); diff --git a/mall-shop/src/main/java/com/suisung/mall/shop/esign/service/impl/EsignContractServiceImpl.java b/mall-shop/src/main/java/com/suisung/mall/shop/esign/service/impl/EsignContractServiceImpl.java index 28650b90..9cf8d63b 100644 --- a/mall-shop/src/main/java/com/suisung/mall/shop/esign/service/impl/EsignContractServiceImpl.java +++ b/mall-shop/src/main/java/com/suisung/mall/shop/esign/service/impl/EsignContractServiceImpl.java @@ -32,6 +32,7 @@ import com.suisung.mall.shop.esign.utils.comm.EsignHttpHelper; import com.suisung.mall.shop.esign.utils.comm.EsignHttpResponse; import com.suisung.mall.shop.esign.utils.enums.EsignRequestType; import com.suisung.mall.shop.esign.utils.exception.EsignDemoException; +import com.suisung.mall.shop.lakala.service.LakalaApiService; import com.suisung.mall.shop.page.service.OssService; import com.suisung.mall.shop.store.service.ShopMchEntryService; import com.suisung.mall.shop.store.service.ShopStoreBaseService; @@ -92,6 +93,10 @@ public class EsignContractServiceImpl extends BaseServiceImpl retPair = lakalaApiService.innerApplyLedgerMer(esignContract.getMch_mobile()); + if (!retPair.getFirst()) { + log.error("商家申请分账功能失败:{}", retPair.getSecond()); + } + // taskService.executeTask(() -> { - // 1、(电子合同)给商家申请分账功能;2、商家绑定接收方; + // 1、(电子合同)给商家申请分账功能使用; // 新建一个正式的已审核通过的店铺 // Pair retPair = shopStoreBaseService.merchEntryInfo2StoreInfo(esignContract.getMch_mobile()); diff --git a/mall-shop/src/main/java/com/suisung/mall/shop/lakala/controller/mobile/LakalaController.java b/mall-shop/src/main/java/com/suisung/mall/shop/lakala/controller/mobile/LakalaController.java index 106a1785..871c08f4 100644 --- a/mall-shop/src/main/java/com/suisung/mall/shop/lakala/controller/mobile/LakalaController.java +++ b/mall-shop/src/main/java/com/suisung/mall/shop/lakala/controller/mobile/LakalaController.java @@ -49,6 +49,7 @@ public class LakalaController extends BaseControllerImpl { return lakalaPayService.applyLedgerMer(paramsJSON); } + @ApiOperation(value = "商户分账业务开通申请异步回调回调", notes = "商户分账业务开通申请异步回调回调") @RequestMapping(value = "/ledger/applyLedgerMerNotify", method = RequestMethod.POST) public JSONObject ledgerApplyLedgerMerNotify(HttpServletRequest request) { diff --git a/mall-shop/src/main/java/com/suisung/mall/shop/lakala/service/LakalaApiService.java b/mall-shop/src/main/java/com/suisung/mall/shop/lakala/service/LakalaApiService.java index 5f20588f..3c7fc470 100644 --- a/mall-shop/src/main/java/com/suisung/mall/shop/lakala/service/LakalaApiService.java +++ b/mall-shop/src/main/java/com/suisung/mall/shop/lakala/service/LakalaApiService.java @@ -10,6 +10,7 @@ package com.suisung.mall.shop.lakala.service; import cn.hutool.json.JSONObject; import com.suisung.mall.common.api.CommonResult; +import org.springframework.data.util.Pair; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; @@ -99,6 +100,14 @@ public interface LakalaApiService { */ CommonResult applyLedgerMer(JSONObject paramsJSON); + /** + * 内部调用:商户分账业务开通申请 + * + * @param merCupNo + * @return + */ + Pair innerApplyLedgerMer(String merCupNo); + /** * 商户分账业务开通申请回调 * 参考:https://o.lakala.com/#/home/document/detail?id=379 diff --git a/mall-shop/src/main/java/com/suisung/mall/shop/lakala/service/LklLedgerReceiverService.java b/mall-shop/src/main/java/com/suisung/mall/shop/lakala/service/LklLedgerReceiverService.java index ec56d015..26886a3a 100644 --- a/mall-shop/src/main/java/com/suisung/mall/shop/lakala/service/LklLedgerReceiverService.java +++ b/mall-shop/src/main/java/com/suisung/mall/shop/lakala/service/LklLedgerReceiverService.java @@ -12,6 +12,8 @@ import cn.hutool.json.JSONArray; import com.suisung.mall.common.modules.lakala.LklLedgerReceiver; import com.suisung.mall.core.web.service.IBaseService; +import java.util.List; + public interface LklLedgerReceiverService extends IBaseService { /** @@ -71,4 +73,13 @@ public interface LklLedgerReceiverService extends IBaseService getByCondition(String LicenseNo, String ContactMobile); } diff --git a/mall-shop/src/main/java/com/suisung/mall/shop/lakala/service/impl/LakalaApiServiceImpl.java b/mall-shop/src/main/java/com/suisung/mall/shop/lakala/service/impl/LakalaApiServiceImpl.java index d8221166..a7199955 100644 --- a/mall-shop/src/main/java/com/suisung/mall/shop/lakala/service/impl/LakalaApiServiceImpl.java +++ b/mall-shop/src/main/java/com/suisung/mall/shop/lakala/service/impl/LakalaApiServiceImpl.java @@ -46,6 +46,7 @@ import org.springframework.beans.factory.annotation.Value; import org.springframework.context.annotation.Lazy; import org.springframework.data.util.Pair; import org.springframework.stereotype.Service; +import org.springframework.util.CollectionUtils; import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; @@ -449,6 +450,12 @@ public class LakalaApiServiceImpl implements LakalaApiService { } + /** + * 商户分账业务开通申请 + * + * @param paramsJSON + * @return + */ @Override public CommonResult applyLedgerMer(JSONObject paramsJSON) { log.info("商户分账业务开通申请开始"); @@ -462,9 +469,9 @@ public class LakalaApiServiceImpl implements LakalaApiService { 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")); + req.setMerInnerNo(paramsJSON.getStr("merInnerNo"));// 从进件申请返回的商户号 + req.setMerCupNo(paramsJSON.getStr("merCupNo")); // 从进件申请返回的商户号 + req.setContactMobile(paramsJSON.getStr("contactMobile")); // 商户入驻注册的手机号 // 分账比例为了考虑低价订单的运费占比高,分账比例暂时定70%分账给商户,30%分账给平台 // new BigDecimal(paramsJSON.getStr("splitLowestRatio")) req.setSplitLowestRatio(BigDecimal.valueOf(70)); @@ -512,6 +519,8 @@ public class LakalaApiServiceImpl implements LakalaApiService { 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); @@ -520,7 +529,112 @@ public class LakalaApiServiceImpl implements LakalaApiService { return CommonResult.success(null, "提交成功,待审核中!"); } catch (SDKException e) { log.error("申请开通分账出错:", e); - throw new ApiException(I18nUtil._("申请开通分账出错!"), e); + throw new ApiException(I18nUtil._("商家申请开通分账出错!"), e); + } + } + + @Override + public Pair innerApplyLedgerMer(String merCupNo) { + log.info("商户分账业务开通申请开始"); + + if (StringUtils.isBlank(merCupNo)) { + return Pair.of(false, I18nUtil._("商户号不能为空!")); + } + + // 获取商户入驻记录 + ShopMchEntry shopMchEntry = shopMchEntryService.getShopMerchEntryByMerCupNo(merCupNo); + if (shopMchEntry == null) { + return Pair.of(false, I18nUtil._("商家入驻信息不存在!")); + } + + // 判断是否已经申请过? + LklLedgerMember lklLedgerMember = lklLedgerMemberService.getByMerCupNo(merCupNo); + if (lklLedgerMember != null) { + return Pair.of(true, I18nUtil._("商家已经申请过了!")); + } + + + // 1. 配置初始化 + initLKLSDK(); + + //2. 装配数据 + V2MmsOpenApiLedgerApplyLedgerMerRequest req = new V2MmsOpenApiLedgerApplyLedgerMerRequest(); + req.setVersion("2.0"); + req.setOrderNo(StringUtils.genLklOrderNo(8));// 14位年月日时(24小时制)分秒+8位的随机数 + req.setOrgCode(orgCode); + 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(BigDecimal.valueOf(70)); + String fileName = "小发同城分账授权委托书.pdf";//paramsJSON.getStr("splitEntrustFileName"); + req.setSplitEntrustFileName(fileName); + + // 分账结算委托书文件上传到拉卡拉服务器 + 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._("小发同城分账授权委托书上传失败!")); + } + + 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); + + 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); + + + 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 Pair.of(false, I18nUtil._("无返回值,申请开通分账失败!")); + } + + if (!lakalaRespJSON.getStr("retCode").equals(lklSuccessCode)) { + return Pair.of(false, 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", shopMchEntry.getId()); + + // 新增数据 + // 将 JSON 对象的键名转换为下划线命名 + LklLedgerMember lklLedgerMemberNew = JSONUtil.toBean(StringUtils.convertCamelToSnake(paramsJSON.toString()), LklLedgerMember.class); + lklLedgerMemberService.saveOrUpdateByMerCupNo(lklLedgerMemberNew); + + return Pair.of(true, I18nUtil._("提交成功,待审核中!")); + } catch (SDKException e) { + log.error("申请开通分账出错:", e); + return Pair.of(false, I18nUtil._("商家申请开通分账出错!")); +// throw new ApiException(I18nUtil._("商家申请开通分账出错!"), e); } } @@ -582,9 +696,16 @@ public class LakalaApiServiceImpl implements LakalaApiService { respData.put("retMsg", "操作成功!"); log.info("商户分账申请业务回调:处理成功"); - // TODO 绑定接收方(平台方和代理商),绑定之前,判断是否已经绑定过了? - - + // 重要注:商户分账申请业务成功后,同时也会新增接收方,绑定接收方(平台方和代理商),绑定之前,判断是否已经绑定过了? + JSONObject bindParamsJSON = new JSONObject(); + bindParamsJSON.put("merInnerNo", paramsJSON.getStr("merInnerNo")); + bindParamsJSON.put("merCupNo", paramsJSON.getStr("merCupNo")); + Pair bindResult = innerApplyLedgerMerReceiverBind(bindParamsJSON); + if (bindResult.getFirst()) { + log.info("商户分账申请业务回调:", bindResult.getSecond()); + } else { + log.error("商户分账申请业务回调:", bindResult.getSecond()); + } } } @@ -700,7 +821,7 @@ public class LakalaApiServiceImpl implements LakalaApiService { } /** - * 分账关系绑定申请 + * 商家与平台、代理商分账关系绑定申请 * 参考:https://o.lakala.com/#/home/document/detail?id=386 * * @param paramsJSON @@ -790,6 +911,129 @@ public class LakalaApiServiceImpl implements LakalaApiService { } } + /** + * 内部调用分账关系绑定申请 + * 参考:https://o.lakala.com/#/home/document/detail?id=386 + * + * @param paramsJSON + * @return + */ + public Pair innerApplyLedgerMerReceiverBind(JSONObject paramsJSON) { + // 检查分账方和接收方记录是否存在 + if (lklLedgerMemberService.getByMerCupNo(paramsJSON.getStr("merCupNo")) == null) { + return Pair.of(false, I18nUtil._("绑定方不存在!")); + } + + // 获取商家入驻记录 + ShopMchEntry shopMchEntry = shopMchEntryService.getShopMerchEntryByMerCupNo(paramsJSON.getStr("merCupNo")); + if (shopMchEntry == null) { + return Pair.of(false, I18nUtil._("商户入驻记录不存在!")); + } + + // 代理商Id,平台默认为0 + Long platformId = shopMchEntry.getDistributor_id(); + String entrustFileName = "小发同城合作协议书.pdf"; + String entrustFileUrl = shopMchEntry.getContract_download_url(); + + int successCnt = 0; + + // 获取平台接收方记录(可能多个记录,平台+代理商) + List lklLedgerReceiverList = lklLedgerReceiverService.getByCondition("", shopMchEntry.getLogin_mobile()); + if (CollectionUtils.isEmpty(lklLedgerReceiverList)) { + return Pair.of(false, I18nUtil._("分账接收方不存在!")); + } + + for (LklLedgerReceiver lklLedgerReceiver : lklLedgerReceiverList) { + LklLedgerMerReceiverBind lklLedgerMerReceiverBindOld = lklLedgerMerReceiverBindService.getByCondition(paramsJSON.getStr("merCupNo"), paramsJSON.getStr("receiverNo")); + if (lklLedgerMerReceiverBindOld != null) { + // return Pair.of(false, "分账绑定关系已存在!"); + continue; + } + + // 1. 配置初始化 + initLKLSDK(); + + //2. 装配数据 + V2MmsOpenApiLedgerApplyBindRequest req = new V2MmsOpenApiLedgerApplyBindRequest(); + + String orderNo = StringUtils.genLklOrderNo(8); // 8位随机数 + req.setOrderNo(orderNo); + req.setOrgCode(orgCode); + req.setVersion("2.0"); + + req.setMerInnerNo(paramsJSON.getStr("merInnerNo")); + req.setMerCupNo(paramsJSON.getStr("merCupNo")); + req.setReceiverNo(lklLedgerReceiver.getReceiver_no()); + +// String fileName = paramsJSON.getStr("entrustFileName"); + String splitEntrustFileBase64 = UploadUtil.fileUrlToBase64(entrustFileUrl); // 这个是 url 地址,不是 base64 字节码 + req.setEntrustFileName(entrustFileName); + + String domain = projectDomain; + if (isProd()) { + domain += "/api"; + } + // 给拉卡拉通知的回调地址 + String retUrl = domain + "/mobile/shop/lakala/ledger/applyLedgerMerReceiverBindNotify"; + req.setRetUrl(retUrl); + + // 文件上传到拉卡拉服务器 + JSONObject fileUploadResp = uploadFile(orderNo, + "SPLIT_COOPERATION_FILE", + StringUtils.getFileExt(entrustFileName), + splitEntrustFileBase64); + if (fileUploadResp == null || StrUtil.isBlank(fileUploadResp.getStr("attFileId"))) { + // throw new ApiException(I18nUtil._("合作协议上传失败!")); + log.error(I18nUtil._("合作协议上传失败!")); + continue; + } + + String entrustFilePath = fileUploadResp.getStr("attFileId"); + req.setEntrustFilePath(entrustFilePath); + + paramsJSON.set("orderNo", orderNo); + paramsJSON.set("version", "2.0"); + paramsJSON.set("ret_url", retUrl); + paramsJSON.set("org_code", orgCode); + paramsJSON.set("entrust_file_name", entrustFileName); + paramsJSON.set("entrust_file_path", entrustFilePath); + + try { + //3. 发送请求 + String responseStr = LKLSDK.httpPost(req); + + JSONObject lakalaRespJSON = JSONUtil.parseObj(responseStr); + if (lakalaRespJSON == null || !lakalaRespJSON.getStr("retCode").equals(lklSuccessCode)) { +// throw new ApiException(I18nUtil._(lakalaRespJSON.getStr("retMsg"))); + log.error(I18nUtil._(lakalaRespJSON.getStr("retMsg"))); + continue; + } + + paramsJSON.set("apply_id", lakalaRespJSON.getByPath("respData.applyId")); + paramsJSON.set("remark", lakalaRespJSON.getStr("retMsg")); + + // 新增数据 + // 将 JSON 对象的键名转换为下划线命名 + LklLedgerMerReceiverBind lklLedgerMerReceiverBind = JSONUtil.toBean(StringUtils.convertCamelToSnake(paramsJSON.toString()), LklLedgerMerReceiverBind.class); + if (lklLedgerMerReceiverBindService.saveOrUpdateByMerCupNoReceiverNo(lklLedgerMerReceiverBind)) { + successCnt += 1; + } +// return Pair.of(true, "提交成功,待审核中!"); + } catch (SDKException e) { + log.error("分账绑定关系申请失败:", e); +// throw new ApiException(I18nUtil._("分账绑定关系申请失败!"), e); +// return Pair.of(false, "分账绑定关系申请失败!"); + } + } + + if (successCnt != lklLedgerReceiverList.size()) { + log.error("部分分账绑定关系提交成功"); + return Pair.of(true, "部分提交成功,待审核中!"); + } + + return Pair.of(true, "提交成功,待审核中!"); + } + /** * 分账关系绑定申请回调 * 参考:https://o.lakala.com/#/home/document/detail?id=379 @@ -832,7 +1076,7 @@ public class LakalaApiServiceImpl implements LakalaApiService { // TODO 新建一个正式的已审核通过的店铺, 新建之前判断是否已经新建过了? // 新建一个正式的已审核通过的店铺 ShopMchEntry shopEntry = shopMchEntryService.getShopMerchEntryByMerCupNo(merCupNo); - if (shopEntry != null) { + if (shopEntry != null && !CommonConstant.Enable.equals(shopEntry.getStore_status())) { String mchMobile = shopEntry.getLogin_mobile(); Pair retPair = shopStoreBaseService.merchEntryInfo2StoreInfo(mchMobile); if (retPair.getFirst() > 0) { diff --git a/mall-shop/src/main/java/com/suisung/mall/shop/lakala/service/impl/LklLedgerReceiverServiceImpl.java b/mall-shop/src/main/java/com/suisung/mall/shop/lakala/service/impl/LklLedgerReceiverServiceImpl.java index 1814594b..6cdae9eb 100644 --- a/mall-shop/src/main/java/com/suisung/mall/shop/lakala/service/impl/LklLedgerReceiverServiceImpl.java +++ b/mall-shop/src/main/java/com/suisung/mall/shop/lakala/service/impl/LklLedgerReceiverServiceImpl.java @@ -273,4 +273,24 @@ public class LklLedgerReceiverServiceImpl extends BaseServiceImpl getByCondition(String LicenseNo, String ContactMobile) { + + if (StrUtil.isBlank(LicenseNo) && StrUtil.isBlank(ContactMobile)) { + return null; + } + + QueryWrapper queryWrapper = new QueryWrapper<>(); + if (StrUtil.isNotBlank(LicenseNo)) { + queryWrapper.eq("license_no", LicenseNo); + } + if (StrUtil.isNotBlank(ContactMobile)) { + queryWrapper.eq("contact_mobile", ContactMobile); + } + + queryWrapper.eq("status", CommonConstant.Enable); + + return list(queryWrapper); + } } diff --git a/mall-shop/src/main/java/com/suisung/mall/shop/lakala/service/impl/LklTkServiceImpl.java b/mall-shop/src/main/java/com/suisung/mall/shop/lakala/service/impl/LklTkServiceImpl.java index a9abd30d..9a513550 100644 --- a/mall-shop/src/main/java/com/suisung/mall/shop/lakala/service/impl/LklTkServiceImpl.java +++ b/mall-shop/src/main/java/com/suisung/mall/shop/lakala/service/impl/LklTkServiceImpl.java @@ -140,7 +140,9 @@ public class LklTkServiceImpl { } protected boolean isProd() { - return "prod".equalsIgnoreCase(profile); + return false; + // 生产环境的时候启动该配置 + // return "prod".equalsIgnoreCase(profile); } /** @@ -156,17 +158,16 @@ public class LklTkServiceImpl { * @return */ public CommonResult uploadOcrImg(MultipartFile file, String imgType) { + UserDto currentUser = getCurrentUser(); + if (currentUser == null) { + currentUser = new UserDto(); + } if (file == null || StrUtil.isBlank(imgType)) { return CommonResult.failed("上传文件或图片类型不能为空"); } - UserDto user = getCurrentUser(); - if (user == null) { - return CommonResult.failed("请先登录"); - } - - CommonResult ossImgInfo = ossService.uploadFile(file, user); + CommonResult ossImgInfo = ossService.uploadFile(file, currentUser); if (ossImgInfo == null) { return CommonResult.failed("上传文件失败"); } @@ -511,8 +512,11 @@ public class LklTkServiceImpl { } // 公钥解密出来的数据 - String data = decryptNotifyData(notifyPubKeyPath, reqBodyJSON.getStr("data")); + String notifyPubKey = LakalaUtil.getResourceFile(notifyPubKeyPath); + log.debug("解密公钥:{}", notifyPubKey); + String data = decryptNotifyData(notifyPubKey, reqBodyJSON.getStr("data")); log.debug("拉卡拉进件异步通知返回解密后的参数:{}", data); + if (StrUtil.isBlank(data)) { return new JSONObject().set("code", "500").set("message", "参数解密出错"); } diff --git a/mall-shop/src/main/resources/bootstrap-prod.yml b/mall-shop/src/main/resources/bootstrap-prod.yml index e9dea6ae..087d50fe 100644 --- a/mall-shop/src/main/resources/bootstrap-prod.yml +++ b/mall-shop/src/main/resources/bootstrap-prod.yml @@ -191,7 +191,7 @@ lakala: #拉卡拉拓客进件配置 tk: #服务地址 - server_url: https://test.wsmsd.cn/sit/htkauth + server_url: https://test.wsmsd.cn client_id: lsycs client_secret: XPa1HB5d55Ig0qV8 api_pub_key_path: payKey/lakala/dev/tk_api_public_key.txt