From f754f41b552ebc457542c3efa5bb4f6ed82ce130 Mon Sep 17 00:00:00 2001 From: Jack <46790855@qq.com> Date: Thu, 16 Oct 2025 01:51:00 +0800 Subject: [PATCH] =?UTF-8?q?=E5=88=86=E8=B4=A6=E8=AE=A1=E7=AE=97=E5=92=8C?= =?UTF-8?q?=E5=85=A5=E9=A9=BB=E6=8E=A5=E6=94=B6=E6=96=B9=20=E6=B5=81?= =?UTF-8?q?=E7=A8=8B=E8=A1=A5=E6=BC=8F=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../impl/EsignPlatformInfoServiceImpl.java | 42 ++++--- .../controller/mobile/LakalaController.java | 43 +------ .../service/impl/LakalaApiServiceImpl.java | 113 +++++++++--------- .../impl/LklLedgerReceiverServiceImpl.java | 40 +++---- .../service/impl/ShopUserCartServiceImpl.java | 10 +- 5 files changed, 113 insertions(+), 135 deletions(-) diff --git a/mall-shop/src/main/java/com/suisung/mall/shop/esign/service/impl/EsignPlatformInfoServiceImpl.java b/mall-shop/src/main/java/com/suisung/mall/shop/esign/service/impl/EsignPlatformInfoServiceImpl.java index 12de4b3f..f85c1fb4 100644 --- a/mall-shop/src/main/java/com/suisung/mall/shop/esign/service/impl/EsignPlatformInfoServiceImpl.java +++ b/mall-shop/src/main/java/com/suisung/mall/shop/esign/service/impl/EsignPlatformInfoServiceImpl.java @@ -108,18 +108,21 @@ public class EsignPlatformInfoServiceImpl extends BaseServiceImpl 0) { queryWrapper.eq("id", shopMchEntry.getDistributor_id()); + result = findOne(queryWrapper); + log.debug("[获取二级代理] 使用指定分销商ID查询,distributorId={}", shopMchEntry.getDistributor_id()); - } else if (StrUtil.isNotBlank(shopMchEntry.getStore_district())) { - // 运费代理商 + + } + + if (result == null && StrUtil.isNotBlank(shopMchEntry.getStore_district())) { + // 和商户同地区,并且二级代理商,有配送相关资质 queryWrapper.eq("license_district_id", shopMchEntry.getStore_district()) .gt("shipping_fee", 0).ne("supplier_id", "") .orderByAsc("id"); + result = findOne(queryWrapper); + log.debug("[获取二级代理] 使用区域信息查询,districtId={}", shopMchEntry.getStore_district()); - } else { - return null; + } - EsignPlatformInfo result = findOne(queryWrapper); if (result == null) { log.info("[获取二级代理] 未找到匹配的二级代理信息,mchId={}", mchId); } else { 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 5a100b20..9d0a5539 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 @@ -12,9 +12,9 @@ import cn.hutool.json.JSONObject; import cn.hutool.json.JSONUtil; import com.suisung.mall.common.api.CommonResult; import com.suisung.mall.common.service.impl.BaseControllerImpl; -import com.suisung.mall.shop.base.service.ShopBaseDistrictService; import com.suisung.mall.shop.lakala.service.LakalaApiService; import com.suisung.mall.shop.lakala.service.LklLedgerEcService; +import com.suisung.mall.shop.lakala.service.LklLedgerReceiverService; import com.suisung.mall.shop.library.service.LibraryProductService; import com.suisung.mall.shop.message.service.MqMessageService; import com.suisung.mall.shop.message.service.PushMessageService; @@ -84,50 +84,13 @@ public class LakalaController extends BaseControllerImpl { private LklLedgerEcService lklLedgerEcService; @Resource - private ShopBaseDistrictService shopBaseDistrictService; + private LklLedgerReceiverService lklLedgerReceiverService; @ApiOperation(value = "测试案例", notes = "测试案例") @RequestMapping(value = "/testcase", method = RequestMethod.POST) public Object testcase(@RequestBody JSONObject paramsJSON) { - // return shopOrderReturnService.sfExpressExpiredForceRefund(paramsJSON.getStr("orderId")); -// return lakalaPayService.applyLedgerMerEc(paramsJSON.getStr("mchMobile")); -// return lakalaPayService.LedgerMerEcDownload(975790666910121984L); -// return storeSameCityTransportBaseService.initDefaultSameCityTransport(58); - -// return geTuiPushService.pushMessageToSingleByCid("f9da7081a7951cff6d7f1d4e2d2f270b", "", "从 shop 发消息", "none", ""); - -// return ""; -// -// List tags = new ArrayList<>(); -//// tags.add("纯净水"); -//// tags.add("放心"); -// return libraryProductService.matchLibraryProducts(paramsJSON.getStr("barcode"), paramsJSON.getStr("productName"), tags); - - // 测试推送消息 -// List clientIds = JSONUtil.toList(paramsJSON.getJSONArray("clientIds"), String.class); -// return pushMessageService.sendMessage(clientIds, paramsJSON.getStr("title"), paramsJSON.getStr("content"), paramsJSON.getJSONObject("payload")); - -// JSONObject jsonObject = new JSONObject(); -// String orderId = "DD-20250725-1"; -// jsonObject.put("category", 1); -// jsonObject.put("orderId", "DD-20250725-1"); -// jsonObject.put("storeId", 12); -// jsonObject.put("title", "有一笔已超时的订单!"); -// jsonObject.put("message", "您有一笔已超时的订单[" + orderId + "],请及时处理。"); -// mqMessageService.sendDelayMessage(jsonObject.toString(), 10000); -// return jsonObject; - -// return shopOrderBaseService.sameCityOrderExpireSeconds(10000L); - - // return sfExpressApiService.createSfExpressShop(66, "能辉超市", "桂平市", "广西壮族自治区贵港市桂平市广佰汇超市(桂平店)", "谢能坤", "17777525395", "110.07165452271", "23.369069486251"); - -// return lakalaApiService.sacsQuery("8226330541100GU", "20250918770188017227140800").toString(); - - String[] result = shopBaseDistrictService.convertDistrictPath(paramsJSON.getStr("id"), paramsJSON.getStr("name")); - log.info("result: " + result[0] + " " + result[1]); - - return ""; //lakalaApiService.queryLedgerMer("8226330541100HA"); + return lklLedgerReceiverService.selectAgentAndPlatformByMchId(36L); } @ApiOperation(value = "批量发送推送消息 - 测试案例", notes = "批量发送推送消息 - 测试案例") 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 5bfe15d0..67e0ce43 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 @@ -1548,7 +1548,7 @@ public class LakalaApiServiceImpl implements LakalaApiService { lklLedgerMember.setMer_inner_no(""); } - // 分账接收方列表 + // 获取商家的平台和代理商分账接收方列表,平台至少有一个,默认是桂平发发 log.debug("开始查询分账接收方列表"); List receiverList = lklLedgerReceiverService.selectAgentAndPlatformByMchId(mchId); if (CollectionUtil.isEmpty(receiverList)) { @@ -1655,7 +1655,6 @@ public class LakalaApiServiceImpl implements LakalaApiService { paramsJSON.set("remark", respJson.getStr("retMsg")); paramsJSON.set("platform_id", receiver.getPlatform_id()); paramsJSON.set("mch_id", mchId); - paramsJSON.set("level", receiver.getLevel()); paramsJSON.set("split_ratio", receiver.getSplit_ratio()); paramsJSON.set("shipping_fee", receiver.getShipping_fee()); @@ -2455,17 +2454,18 @@ public class LakalaApiServiceImpl implements LakalaApiService { // 2. 查询订单信息 ShopOrderLkl shopOrderLkl = shopOrderLklService.getByLklMchNoAndReceiveTradeNoAndReceiveLogNo(lklMerchantNo, receiveTradeNo, receiveLogNo); if (shopOrderLkl == null) { - log.warn("[分账操作] lklMerchantNo={}, receiveTradeNo={}, receiveLogNo={} 查询订单不存在", lklMerchantNo, receiveTradeNo, receiveLogNo); + log.warn("[分账操作] 未找到对应订单记录, lklMerchantNo={}, receiveTradeNo={}, receiveLogNo={}", + lklMerchantNo, receiveTradeNo, receiveLogNo); return Pair.of(false, "订单不存在"); } String orderId = shopOrderLkl.getOrder_id(); - log.info("[分账操作] 开始处理分账请求, lklMerchantNo={}, receiveTradeNo={}, receiveLogNo={},orderId={}", - lklMerchantNo, receiveTradeNo, receiveLogNo, orderId); + log.info("[分账操作] 开始处理分账请求, orderId={}, merchantNo={}, receiveTradeNo={}, receiveLogNo={}", + orderId, lklMerchantNo, receiveTradeNo, receiveLogNo); // 3. 检查订单状态 if (!CommonConstant.Enable.equals(shopOrderLkl.getReceive_status())) { - log.warn("[分账操作] 订单{}交易流水号{}未被确认收货,跳过处理", orderId, receiveTradeNo); + log.warn("[分账操作] 订单未确认收货,无法分账, orderId={}, receiveTradeNo={}", orderId, receiveTradeNo); return Pair.of(false, "订单未确认收货,暂无法分账"); } @@ -2477,7 +2477,8 @@ public class LakalaApiServiceImpl implements LakalaApiService { && "SUCCESS".equals(existingSeparateRecord.getStatus()) && "SUCCESS".equals(existingSeparateRecord.getFinal_status()) && CommonConstant.Enable.equals(shopOrderLkl.getSeparate_status())) { - log.info("[分账操作] 订单[{}]交易对账流水号[{}]已完成分账,跳过处理", orderId, shopOrderLkl.getLkl_receive_log_no()); + log.info("[分账操作] 订单分账已完成,无需重复处理, orderId={}, receiveLogNo={}", + orderId, shopOrderLkl.getLkl_receive_log_no()); return Pair.of(true, "订单已分账,请勿重复操作"); } @@ -2485,14 +2486,14 @@ public class LakalaApiServiceImpl implements LakalaApiService { Integer refCanSeparateAmt = null; Pair mchCanSplitAmt = queryMchCanSplitAmt(lklMerchantNo, receiveLogNo, shopOrderLkl.getLkl_log_date()); if (mchCanSplitAmt != null) { - log.info("[分账操作] 查询拉卡拉可分账余额接口:lklMerchantNo={} logDate={} receiveLogNo={} 结果:{}", + log.debug("[分账操作] 查询拉卡拉可分账余额, merchantNo={}, logDate={}, receiveLogNo={}, result={}", lklMerchantNo, shopOrderLkl.getLkl_log_date(), receiveLogNo, mchCanSplitAmt); // 拉卡拉返回的实际可分账金额 refCanSeparateAmt = Convert.toInt(mchCanSplitAmt.getSecond()); if (CheckUtil.isEmpty(refCanSeparateAmt)) { - log.warn("[分账操作] lklMerchantNo={} receiveTradeNo={} receiveLogNo={} 拉卡拉可分账金额无值或0,系统将自动计算可分账金额", - lklMerchantNo, receiveTradeNo, receiveLogNo); + log.warn("[分账操作] 拉卡拉可分账金额为空或为0,将使用系统计算金额, orderId={}, merchantNo={}", + orderId, lklMerchantNo); } } @@ -2504,23 +2505,23 @@ public class LakalaApiServiceImpl implements LakalaApiService { if (mchSplitRatioRaw == null || mchSplitRatioRaw.compareTo(BigDecimal.ZERO) <= 0 || mchSplitRatioRaw.compareTo(new BigDecimal(100)) >= 0) { - log.error("[分账操作] 店铺[{}]商家分账比例[{}]不在(0-100]范围内,无法分账", - shopOrderLkl.getStore_id(), mchSplitRatioRaw); + log.error("[分账操作] 商家分账比例不在有效范围内(0-100], orderId={}, merchantNo={}, splitRatio={}", + orderId, merchantNo, mchSplitRatioRaw); return Pair.of(false, "商家分账比例有误"); } // 计算商家分账比例(转换为小数) BigDecimal mchSplitRatio = mchSplitRatioRaw.divide(new BigDecimal(100)); + log.info("[分账操作] 开始执行分账计算, orderId={}, merchantNo={}", orderId, merchantNo); // 获取分账平台接收方信息 LklLedgerMerReceiverBind platformReceiver = lklLedgerMerReceiverBindService.getPlatformByMerCupNo(merchantNo); if (platformReceiver == null) { - log.error("[分账操作] 商户号{} 未绑定平台方接收账户,跳过分账", merchantNo); + log.error("[分账操作] 未绑定平台方接收账户,无法分账, orderId={}, merchantNo={}", orderId, merchantNo); return Pair.of(false, "平台方未绑定账户"); } - - // 获取代理商分账信息 + // 获取平台分账百分比值 BigDecimal platformSplitRatio = CheckUtil.isEmpty(platformReceiver.getSplit_ratio()) ? BigDecimal.valueOf(0.01) : platformReceiver.getSplit_ratio(); // 默认平台比例 1% // 获取省级代理商接收方 @@ -2528,18 +2529,32 @@ public class LakalaApiServiceImpl implements LakalaApiService { // 获取县级代理商接收方 LklLedgerMerReceiverBind agent2ndReceiver = lklLedgerMerReceiverBindService.getAgent2ndByMerCupNo(merchantNo); + // 内部配送费(单位:分) + Integer shoppingFeeInner = CheckUtil.isEmpty(shopOrderLkl.getShopping_fee_inner()) ? 0 : shopOrderLkl.getShopping_fee_inner(); + BigDecimal agent1stSplitRatio = null; BigDecimal agent2ndSplitRatio = null; if (agent1stReceiver != null) { agent1stSplitRatio = CheckUtil.isEmpty(agent1stReceiver.getSplit_ratio()) ? BigDecimal.ZERO : agent1stReceiver.getSplit_ratio(); // 默认省级比例 + log.warn("[分账操作] 获取到省级代理商的分账比例值, agent1stSplitRatio={}, merchantNo={}, 1streceiver={}", agent1stSplitRatio, merchantNo, agent1stReceiver.getReceiver_no()); } if (agent2ndReceiver != null) { agent2ndSplitRatio = CheckUtil.isEmpty(agent2ndReceiver.getSplit_ratio()) ? BigDecimal.ZERO : agent2ndReceiver.getSplit_ratio(); // 默认市级比例 + log.warn("[分账操作] 获取到县级代理商的分账比例值, agent2stSplitRatio={}, merchantNo={}, 2ndreceiver={}", agent2ndSplitRatio, merchantNo, agent2ndReceiver.getReceiver_no()); + + // 如果县级代理商运费未配置金额,使用平台的最低配送费,如果平台配送费未配置金额,则免运费 + if (CheckUtil.isNotEmpty(agent2ndReceiver.getShipping_fee())) { + shoppingFeeInner = agent2ndReceiver.getShipping_fee(); + log.warn("[分账操作] 获取到县级代理商的配送费金额(分), shoppingFeeInner={}, merchantNo={}, 2ndreceiver={}", shoppingFeeInner, merchantNo, agent2ndReceiver.getReceiver_no()); + } } - // 内部配送费(单位:分) - Integer shoppingFeeInner = CheckUtil.isEmpty(shopOrderLkl.getShopping_fee_inner()) ? 0 : shopOrderLkl.getShopping_fee_inner(); + // 如果商家没有代理商且平台分账比例低于等于0.01的,则平台分账比例调整到 1-商家分账比例值,但不能超过0.06. + if (agent1stReceiver == null && agent2ndReceiver == null && BigDecimal.valueOf(0.01).compareTo(platformSplitRatio) >= 0) { + // 平台比例: 1-商家比例百分值,但不能超过0.06. + platformSplitRatio = BigDecimal.ONE.subtract(mchSplitRatio).min(BigDecimal.valueOf(0.06)); + } // 计算拉卡拉手续费、商家分账金额、平台和代理商的分账金额 Pair calcResult = calculateAndEvaluateSharingParams( @@ -2550,26 +2565,25 @@ public class LakalaApiServiceImpl implements LakalaApiService { agent1stSplitRatio, agent2ndSplitRatio, refCanSeparateAmt); if (calcResult == null || !calcResult.getFirst() || calcResult.getSecond() == null) { - log.error("[分账操作] 分账参数评估,结果无法分账"); + log.error("[分账操作] 分账参数评估失败,无法分账, orderId={}, merchantNo={}", orderId, merchantNo); return Pair.of(false, "分账数据评估,结果无法分账"); } LklSeparateWithTotalAmountDTO lklSeparateDTO = calcResult.getSecond(); - log.debug("[分账操作] 分账参数计算结果:{}", lklSeparateDTO); + log.info("[分账操作] 分账计算完成, orderId={}, merchantNo={}, 分账总金额={}", + orderId, merchantNo, lklSeparateDTO.getCanSeparateAmount()); // 更新分账计算结果 shopOrderLkl.setSeparate_remark(lklSeparateDTO.toString()); // 写入分账具体情况 if (CheckUtil.isEmpty(refCanSeparateAmt)) { - shopOrderLkl.setSplit_amt(lklSeparateDTO.getCanSeparateAmount()); refCanSeparateAmt = lklSeparateDTO.getCanSeparateAmount(); - } else { - shopOrderLkl.setSplit_amt_ref(refCanSeparateAmt); } + shopOrderLkl.setSplit_amt_ref(refCanSeparateAmt); // 可分账金额校验 - if (CheckUtil.isEmpty(refCanSeparateAmt)) { - String errorMsg = String.format("[分账操作] 店铺[%s]订单[%s]可分账金额[%d]低于1分钱,跳过分账", - shopOrderLkl.getStore_id(), orderId, refCanSeparateAmt); + if (CheckUtil.isEmpty(refCanSeparateAmt) || refCanSeparateAmt <= 0) { + String errorMsg = String.format("[分账操作] 可分账金额低于1分钱,跳过分账, orderId=%s, merchantNo=%s, amount=%d", + orderId, merchantNo, refCanSeparateAmt); log.error(errorMsg); if (existingSeparateRecord != null) { lklOrderSeparateService.updateRemark(existingSeparateRecord.getId(), errorMsg); @@ -2582,69 +2596,62 @@ public class LakalaApiServiceImpl implements LakalaApiService { Integer agent1stAmount = lklSeparateDTO.getAgent1stAmount(); Integer agent2ndAmount = lklSeparateDTO.getAgent2ndAmount(); - log.info("[分账操作] 金额计算结果:订单={}, 商户={}, 总金额={}分, 可分金额={}分, 商家比例={}, 商家分得={}分, 平台比例={}, 平台分得={}分, 省级代理商比例={}, 省级代理商分得={}分, 县级代理商比例={}, 县级代理商分得={}分", - orderId, merchantNo, shopOrderLkl.getTotal_amt(), refCanSeparateAmt, mchSplitRatio, merchantAmount, - platformSplitRatio, platformAmount, agent1stSplitRatio, agent1stAmount, agent2ndSplitRatio, agent2ndAmount); + log.info("[分账操作] 分账金额明细: orderId={}, merchantNo={}, 总金额={}分, 可分金额={}分, 商家分得={}分, 平台分得={}分, 省级代理商分得={}分, 县级代理商分得={}分, 配送费={}分", + orderId, merchantNo, shopOrderLkl.getTotal_amt(), refCanSeparateAmt, merchantAmount, + platformAmount, agent1stAmount, agent2ndAmount, shoppingFeeInner); // 构建分账接收方分账列表参数 List recvDatas = new ArrayList<>(); + // 商家分账参数 - if (CheckUtil.isNotEmpty(merchantAmount)) { + if (CheckUtil.isNotEmpty(merchantAmount) && merchantAmount > 0) { V3SacsSeparateRecvDatas receiver = new V3SacsSeparateRecvDatas(); receiver.setRecvMerchantNo(merchantNo); receiver.setSeparateValue(Convert.toStr(merchantAmount)); recvDatas.add(receiver); - - log.debug("[分账操作] 添加商家接收方: merchantNo={}, amount={}", merchantNo, merchantAmount); } // 平台分账参数 - if (CheckUtil.isNotEmpty(platformAmount)) { + if (CheckUtil.isNotEmpty(platformAmount) && platformAmount > 0) { V3SacsSeparateRecvDatas receiver = new V3SacsSeparateRecvDatas(); receiver.setRecvNo(platformReceiver.getReceiver_no()); receiver.setSeparateValue(Convert.toStr(platformAmount)); recvDatas.add(receiver); - - log.debug("[分账操作] 添加平台接收方: receiverNo={}, amount={}", platformReceiver.getReceiver_no(), platformAmount); } // 省级代理商分账参数 - if (agent1stReceiver != null && StrUtil.isNotBlank(agent1stReceiver.getReceiver_no()) && CheckUtil.isNotEmpty(agent1stAmount)) { + if (CheckUtil.isNotEmpty(agent1stSplitRatio) && agent1stReceiver != null && + StrUtil.isNotBlank(agent1stReceiver.getReceiver_no()) && + CheckUtil.isNotEmpty(agent1stAmount) && agent1stAmount > 0) { V3SacsSeparateRecvDatas receiver = new V3SacsSeparateRecvDatas(); receiver.setRecvNo(agent1stReceiver.getReceiver_no()); receiver.setSeparateValue(Convert.toStr(agent1stAmount)); recvDatas.add(receiver); - - log.debug("[分账操作] 添加省级代理商接收方: receiverNo={}, amount={}", agent1stReceiver.getReceiver_no(), agent1stAmount); } // 县级代理商分账参数 - if (agent2ndReceiver != null && StrUtil.isNotBlank(agent2ndReceiver.getReceiver_no()) && CheckUtil.isNotEmpty(agent2ndAmount)) { + if (CheckUtil.isNotEmpty(agent2ndSplitRatio) && agent2ndReceiver != null && + StrUtil.isNotBlank(agent2ndReceiver.getReceiver_no()) && + CheckUtil.isNotEmpty(agent2ndAmount) && agent2ndAmount > 0) { V3SacsSeparateRecvDatas receiver = new V3SacsSeparateRecvDatas(); receiver.setRecvNo(agent2ndReceiver.getReceiver_no()); receiver.setSeparateValue(Convert.toStr(agent2ndAmount)); recvDatas.add(receiver); - log.debug("[分账操作] 添加县级代理商接收方: receiverNo={}, amount={}", agent2ndReceiver.getReceiver_no(), agent2ndAmount); - // 有县级代理商的时候,配送费暂由它代收 add 2025-10-11 V3SacsSeparateRecvDatas shippingFeeReceiver = new V3SacsSeparateRecvDatas(); shippingFeeReceiver.setRecvNo(agent2ndReceiver.getReceiver_no()); shippingFeeReceiver.setSeparateValue(Convert.toStr(shoppingFeeInner)); recvDatas.add(shippingFeeReceiver); - log.debug("[分账操作] 配送费由县级代理商接收方代收: receiverNo={}, amount={}", agent2ndReceiver.getReceiver_no(), shoppingFeeInner); - } else { // 没有县级代理商的时候,配送费暂由平台代收 add 2025-10-11 V3SacsSeparateRecvDatas shippingFeeReceiver = new V3SacsSeparateRecvDatas(); shippingFeeReceiver.setRecvNo(platformReceiver.getReceiver_no()); shippingFeeReceiver.setSeparateValue(Convert.toStr(shoppingFeeInner)); recvDatas.add(shippingFeeReceiver); - log.debug("[分账操作] 配送费由平台接收方代收: receiverNo={}, amount={}", platformReceiver.getReceiver_no(), shoppingFeeInner); } // 初始化拉卡拉SDK - log.debug("[分账操作] 初始化拉卡拉SDK"); initLKLSDK(); // 构建分账请求对象 @@ -2659,27 +2666,26 @@ public class LakalaApiServiceImpl implements LakalaApiService { separateRequest.setNotifyUrl(projectDomain + "/api/mobile/shop/lakala/sacs/separateNotify"); separateRequest.setRecvDatas(recvDatas); - log.debug("[分账操作] 分账接收方数量={},请求详细参数: {}", recvDatas.size(), JSONUtil.toJsonStr(separateRequest)); + log.info("[分账操作] 准备发送分账请求, orderId={}, merchantNo={}, receiveLogNo={}, 分账接收方数量={}", + orderId, merchantNo, shopOrderLkl.getLkl_receive_log_no(), recvDatas.size()); // 发送分账请求 - log.info("[分账操作] 向拉卡拉发送分账请求:订单={}, 商户={}, 分账流水号={}", - orderId, merchantNo, shopOrderLkl.getLkl_receive_log_no()); String response = LKLSDK.httpPost(separateRequest); if (StrUtil.isBlank(response)) { - String errorMsg = String.format("[分账操作] 拉卡拉无响应,订单=%s,商户=%s,分账流水号=%s", + String errorMsg = String.format("[分账操作] 拉卡拉无响应, orderId=%s, merchantNo=%s, receiveLogNo=%s", orderId, merchantNo, shopOrderLkl.getLkl_receive_log_no()); shopOrderLklService.updateSeparateStatusByReceiveLogNo(shopOrderLkl.getLkl_receive_log_no(), CommonConstant.Sta_Separate_Fail, ""); log.error(errorMsg); return Pair.of(false, "拉卡拉无响应"); } - log.debug("[分账操作] 响应结果: {}", response); + log.debug("[分账操作] 拉卡拉分账响应结果: {}", response); // 解析响应结果 JSONObject respJson = JSONUtil.parseObj(response); if (respJson == null || !lklSacsSuccessCode.equals(respJson.getStr("code")) || respJson.getJSONObject("resp_data") == null) { - String errorMsg = String.format("[分账操作] 拉卡拉返回格式异常,订单=%s,商户=%s,分账流水号=%s,响应=%s", + String errorMsg = String.format("[分账操作] 拉卡拉返回格式异常, orderId=%s, merchantNo=%s, receiveLogNo=%s, response=%s", orderId, merchantNo, shopOrderLkl.getLkl_receive_log_no(), response); shopOrderLklService.updateSeparateStatusByReceiveLogNo(shopOrderLkl.getLkl_receive_log_no(), CommonConstant.Sta_Separate_Fail, ""); log.error(errorMsg); @@ -2709,12 +2715,11 @@ public class LakalaApiServiceImpl implements LakalaApiService { separateRecord.setTotal_fee_amt(Convert.toStr(lklSeparateDTO.getLklAmount())); if (lklOrderSeparateService.addOrUpdateByReceiverNo(separateRecord)) { - log.info("[分账操作] 记录保存成功:订单={}, 分账单号={}, 状态={}, 分账流水号={}", + log.info("[分账操作] 分账记录保存成功, orderId={}, separateNo={}, status={}, logNo={}", orderId, separateRecord.getSeparate_no(), separateRecord.getStatus(), separateRecord.getLog_no()); - log.info("[分账操作] 结果:订单[{}] 订单分账已提交处理", orderId); return Pair.of(true, "订单分账已提交处理"); } else { - String errorMsg = String.format("[分账操作] 保存分账记录失败,订单=%s,分账单号=%s,分账流水号=%s", + String errorMsg = String.format("[分账操作] 保存分账记录失败, orderId=%s, separateNo=%s, logNo=%s", orderId, separateRecord.getSeparate_no(), separateRecord.getLog_no()); log.error(errorMsg); lklOrderSeparateService.updateRemark(separateRecord.getLog_no(), separateRecord.getSeparate_no(), errorMsg); @@ -2722,7 +2727,7 @@ public class LakalaApiServiceImpl implements LakalaApiService { } } catch (Exception e) { - String errorMsg = String.format("[分账操作] 系统异常,分账对账流水号=%s,错误=%s", receiveLogNo, e.getMessage()); + String errorMsg = String.format("[分账操作] 系统异常, receiveLogNo=%s, 错误=%s", receiveLogNo, e.getMessage()); log.error(errorMsg, e); return Pair.of(false, "系统异常,请稍后重试"); } 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 425815d3..218519fd 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 @@ -409,20 +409,19 @@ public class LklLedgerReceiverServiceImpl extends BaseServiceImpl 0) { queryWrapper.eq("platform_id", shopMchEntry.getDistributor_id()); + result = findOne(queryWrapper); log.debug("[获取二级代理] 使用指定分销商ID查询,distributorId={}", shopMchEntry.getDistributor_id()); - } else if (StrUtil.isNotBlank(shopMchEntry.getStore_district())) { + } + + if (result == null && StrUtil.isNotBlank(shopMchEntry.getStore_district())) { // 运费代理商 queryWrapper.eq("license_district_id", shopMchEntry.getStore_district()) .gt("shipping_fee", 0).ne("supplier_id", "") .orderByAsc("id"); + result = findOne(queryWrapper); log.debug("[获取二级代理] 使用区域信息查询,districtId={}", shopMchEntry.getStore_district()); - } else { - log.warn("[获取二级代理] 未指定分销商ID或区域信息,mchId={}", mchId); - return null; } - - LklLedgerReceiver result = findOne(queryWrapper); + if (result == null) { log.info("[获取二级代理] 未找到匹配的二级代理信息,mchId={}", mchId); } else { diff --git a/mall-shop/src/main/java/com/suisung/mall/shop/user/service/impl/ShopUserCartServiceImpl.java b/mall-shop/src/main/java/com/suisung/mall/shop/user/service/impl/ShopUserCartServiceImpl.java index 2de90dc0..5bc42de8 100644 --- a/mall-shop/src/main/java/com/suisung/mall/shop/user/service/impl/ShopUserCartServiceImpl.java +++ b/mall-shop/src/main/java/com/suisung/mall/shop/user/service/impl/ShopUserCartServiceImpl.java @@ -2619,11 +2619,11 @@ public class ShopUserCartServiceImpl extends BaseServiceImpl items = (List) cart_data.get("items"); for (Map store_row : items) { - // 检查店铺城市和收货地址是否同一城市? - List storeDistrictId = Convert.toList(Integer.class, store_row.get("store_district_id")); - if (canThrow && uAddress != null && storeDistrictId != null && storeDistrictId.size() > 0 && !CollUtil.contains(storeDistrictId, uAddress.getUd_city_id())) { - throw new ApiException(I18nUtil._("订单不在同一城市,请检查您下单所在店铺的具体位置!")); - } +// // 检查店铺城市和收货地址是否同一城市? +// List storeDistrictId = Convert.toList(Integer.class, store_row.get("store_district_id")); +// if (canThrow && uAddress != null && storeDistrictId != null && storeDistrictId.size() > 0 && !CollUtil.contains(storeDistrictId, uAddress.getUd_city_id())) { +// throw new ApiException(I18nUtil._("订单不在同一城市,请检查您下单所在店铺的具体位置!")); +// } // 一个店铺的订单 Long storeId = Convert.toLong(store_row.get("store_id"));