diff --git a/mall-common/src/main/java/com/suisung/mall/common/pojo/dto/LklSeparateWithTotalAmountDTO.java b/mall-common/src/main/java/com/suisung/mall/common/pojo/dto/LklSeparateWithTotalAmountDTO.java index 8721b4a1..60840f8c 100644 --- a/mall-common/src/main/java/com/suisung/mall/common/pojo/dto/LklSeparateWithTotalAmountDTO.java +++ b/mall-common/src/main/java/com/suisung/mall/common/pojo/dto/LklSeparateWithTotalAmountDTO.java @@ -62,7 +62,7 @@ public class LklSeparateWithTotalAmountDTO { // 测试用例1: 所有参与方都参与分账(符合比例要求) System.out.println("=== 测试用例1: 所有参与方都参与分账 ==="); LklSeparateWithTotalAmountDTO dto1 = new LklSeparateWithTotalAmountDTO(); - dto1.setTotalSeparateAmount(5500); // 总金额100元(10000分) + dto1.setTotalSeparateAmount(1696); // 总金额100元(10000分) dto1.setShippingFee(500); // dto1.setRefCanSeparateAmount(1496); dto1.setLklRatio(new BigDecimal("0.0025")); // 拉卡拉分账比例0.25% 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 f4c12f23..8b653e06 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 @@ -208,9 +208,10 @@ public interface LakalaApiService { * @param lklMerchantNo 拉卡拉商户号 * @param receiveTradeNo 收货交易号(对应拉卡拉的trade_no) * @param receiveLogNo 收货流水号(对应拉卡拉的log_no) + * @param logDate posp日期,yyyyMMdd,查清结算用, 一般是值交易完成日期(确认收货的日期) * @return Pair 处理结果对,first为是否成功,second为结果描述信息 */ - Pair innerDoOrderSeparateByMerchantAndLogNo(String lklMerchantNo, String receiveTradeNo, String receiveLogNo); + Pair innerDoOrderSeparateByMerchantAndLogNo(String lklMerchantNo, String receiveTradeNo, String receiveLogNo, String logDate); /** * 分账结果通知 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 9a34c6f8..ba045ddf 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 @@ -11,6 +11,7 @@ package com.suisung.mall.shop.lakala.service.impl; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.convert.Convert; +import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; import cn.hutool.json.JSONArray; @@ -823,7 +824,15 @@ public class LakalaApiServiceImpl implements LakalaApiService { // 分账用途 String logNo = paramsJSON.getStr("log_no"); String tradeNo = paramsJSON.getStr("trade_no"); - log.debug("[确认收货通知] 获取基础交易信息: logNo={} tradeNo={}", logNo, tradeNo); + String tradeTime = paramsJSON.getStr("trade_time"); // 实际交易完成时间。yyyyMMddHHmmss + // 直接截取前8位,获取日期部分 + String logDate = tradeTime != null && tradeTime.length() >= 8 ? tradeTime.substring(0, 8) : null; + if (logDate == null) { + logDate = DateUtil.format(new Date(), "yyyyMMdd"); // 当前时间 + } + + + log.debug("[确认收货通知] 获取基础交易信息: logNo={} tradeNo={} logDate={}", logNo, tradeNo, logDate); // 查询用途 String originTradeNo = paramsJSON.getStr("origin_trade_no"); @@ -900,7 +909,7 @@ public class LakalaApiServiceImpl implements LakalaApiService { // 重要:准备发起分账指令 log.info("[确认收货通知] 开始发起分账指令: merchantNo={}, receiveTradeNo={}, logNo={}", merchantNo, shopOrderLkl.getLkl_receive_trade_no(), logNo); - Pair separateResult = innerDoOrderSeparateByMerchantAndLogNo(merchantNo, shopOrderLkl.getLkl_receive_trade_no(), shopOrderLkl.getLkl_receive_log_no()); + Pair separateResult = innerDoOrderSeparateByMerchantAndLogNo(merchantNo, shopOrderLkl.getLkl_receive_trade_no(), shopOrderLkl.getLkl_receive_log_no(), logDate); if (!separateResult.getFirst()) { shopOrderLkl.setSeparate_msg(separateResult.getSecond()); @@ -2451,15 +2460,16 @@ public class LakalaApiServiceImpl implements LakalaApiService { * @param lklMerchantNo 拉卡拉商户号 * @param receiveTradeNo 收货交易号(对应拉卡拉的trade_no) * @param receiveLogNo 收货流水号(对应拉卡拉的log_no) + * @param logDate posp日期,yyyyMMdd,查清结算用, 一般是值交易完成日期(确认收货的日期) * @return Pair 处理结果对,first为是否成功,second为结果描述信息 */ @Transactional @Override - public Pair innerDoOrderSeparateByMerchantAndLogNo(String lklMerchantNo, String receiveTradeNo, String receiveLogNo) { + public Pair innerDoOrderSeparateByMerchantAndLogNo(String lklMerchantNo, String receiveTradeNo, String receiveLogNo, String logDate) { // 1. 输入参数校验 - if (StrUtil.hasBlank(lklMerchantNo, receiveTradeNo, receiveLogNo)) { - log.warn("[分账操作] 参数校验失败:缺少必要参数, lklMerchantNo={}, receiveTradeNo={}, receiveLogNo={}", - lklMerchantNo, receiveTradeNo, receiveLogNo); + if (StrUtil.hasBlank(lklMerchantNo, receiveTradeNo, receiveLogNo, logDate)) { + log.warn("[分账操作] 参数校验失败:缺少必要参数, lklMerchantNo={}, receiveTradeNo={}, receiveLogNo={}, logDate={}", + lklMerchantNo, receiveTradeNo, receiveLogNo, logDate); return Pair.of(false, "缺少必要参数"); } @@ -2639,7 +2649,7 @@ public class LakalaApiServiceImpl implements LakalaApiService { receiver.setSeparateValue(Convert.toStr(merchantAmount)); recvDatas.add(receiver); } - + // 是否有二级代理商? boolean has2ndAgent = CheckUtil.isNotEmpty(agent2ndSplitRatio) && agent2ndReceiver != null && StrUtil.isNotBlank(agent2ndReceiver.getReceiver_no()) && @@ -2695,7 +2705,7 @@ public class LakalaApiServiceImpl implements LakalaApiService { separateRequest.setMerchantNo(merchantNo); separateRequest.setOutSeparateNo(shopOrderLkl.getOut_separate_no()); separateRequest.setLogNo(shopOrderLkl.getLkl_receive_log_no()); // 使用确认收货流水号作为分账流水号 - separateRequest.setLogDate(shopOrderLkl.getLkl_log_date()); + separateRequest.setLogDate(logDate); // 重要:确认收货后的交易时间 separateRequest.setTotalAmt(refCanSeparateAmt.toString()); separateRequest.setLklOrgNo(orgCode); separateRequest.setCalType("0"); // 0- 按照指定金额,1- 按照指定比例。默认 0 diff --git a/mall-shop/src/main/java/com/suisung/mall/shop/order/service/impl/ShopOrderLklServiceImpl.java b/mall-shop/src/main/java/com/suisung/mall/shop/order/service/impl/ShopOrderLklServiceImpl.java index 14ebbf37..4b97d081 100644 --- a/mall-shop/src/main/java/com/suisung/mall/shop/order/service/impl/ShopOrderLklServiceImpl.java +++ b/mall-shop/src/main/java/com/suisung/mall/shop/order/service/impl/ShopOrderLklServiceImpl.java @@ -519,11 +519,11 @@ public class ShopOrderLklServiceImpl extends BaseServiceImpl updateWrapper = new UpdateWrapper<>(); updateWrapper.eq("lkl_receive_log_no", lklReceiveLogNo); updateWrapper.set("separate_status", separateStatus); - if (StrUtil.isNotBlank(separateRemark)) { - updateWrapper.set("separate_remark", separateRemark); + if (StrUtil.isNotBlank(separateMsg)) { + updateWrapper.set("separate_msg", separateMsg); } boolean result = update(updateWrapper); diff --git a/mall-shop/src/main/java/com/suisung/mall/shop/store/service/ShopStoreInfoService.java b/mall-shop/src/main/java/com/suisung/mall/shop/store/service/ShopStoreInfoService.java index ba5a1a99..fb64de28 100644 --- a/mall-shop/src/main/java/com/suisung/mall/shop/store/service/ShopStoreInfoService.java +++ b/mall-shop/src/main/java/com/suisung/mall/shop/store/service/ShopStoreInfoService.java @@ -20,6 +20,14 @@ public interface ShopStoreInfoService extends IBaseService { Map getStoreInfoById(Integer store_id); + /** + * 根据店铺id获取店铺信息 + * + * @param storeId + * @return + */ + ShopStoreInfo getShopStoreInfoByStoreId(Integer storeId); + Map getInfoList(QueryWrapper queryWrapper, Integer pageNum, Integer pageSize); /** diff --git a/mall-shop/src/main/java/com/suisung/mall/shop/store/service/impl/ShopStoreBaseServiceImpl.java b/mall-shop/src/main/java/com/suisung/mall/shop/store/service/impl/ShopStoreBaseServiceImpl.java index c3d207de..5ca7fa9d 100644 --- a/mall-shop/src/main/java/com/suisung/mall/shop/store/service/impl/ShopStoreBaseServiceImpl.java +++ b/mall-shop/src/main/java/com/suisung/mall/shop/store/service/impl/ShopStoreBaseServiceImpl.java @@ -80,7 +80,6 @@ import org.springframework.transaction.annotation.Transactional; import org.springframework.web.context.request.RequestContextHolder; import org.springframework.web.context.request.ServletRequestAttributes; -import javax.annotation.Resource; import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.io.Serializable; @@ -176,9 +175,6 @@ public class ShopStoreBaseServiceImpl extends BaseServiceImpl shopStoreInfoUpdateWrapper=new UpdateWrapper<>(); - shopStoreInfoUpdateWrapper.eq("store_id",storeId); - shopStoreInfoUpdateWrapper.set("store_opening_hours",store_opening_hours); - shopStoreInfoUpdateWrapper.set("store_close_hours",store_close_hours); + if (StringUtils.isNotEmpty(store_close_hours)) { + UpdateWrapper shopStoreInfoUpdateWrapper = new UpdateWrapper<>(); + shopStoreInfoUpdateWrapper.eq("store_id", storeId); + shopStoreInfoUpdateWrapper.set("store_opening_hours", store_opening_hours); + shopStoreInfoUpdateWrapper.set("store_close_hours", store_close_hours); shopStoreInfoService.update(shopStoreInfoUpdateWrapper); } // 使用 UpdateWrapper 更新店铺营业状态 diff --git a/mall-shop/src/main/java/com/suisung/mall/shop/store/service/impl/ShopStoreInfoServiceImpl.java b/mall-shop/src/main/java/com/suisung/mall/shop/store/service/impl/ShopStoreInfoServiceImpl.java index bcef4bea..7cc18e27 100644 --- a/mall-shop/src/main/java/com/suisung/mall/shop/store/service/impl/ShopStoreInfoServiceImpl.java +++ b/mall-shop/src/main/java/com/suisung/mall/shop/store/service/impl/ShopStoreInfoServiceImpl.java @@ -53,6 +53,13 @@ public class ShopStoreInfoServiceImpl extends BaseServiceImpl queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("store_id", storeId); + return findOne(queryWrapper); + } + @Override public Map getInfoList(QueryWrapper queryWrapper, Integer pageNum, Integer pageSize) { Page lists = lists(queryWrapper, pageNum, pageSize);