From 1b63872d7e7db2e8c77126cb64186219ed64d68b Mon Sep 17 00:00:00 2001 From: sxu <602087911@qq.com> Date: Thu, 20 Feb 2025 17:49:45 +0800 Subject: [PATCH] sync_pay_state --- .../impl/OrderResultBusinessImpl.java | 49 ++++++++++--------- .../bonus/core/pay/api/TradeRecordApi.java | 4 ++ .../mapper/TradeOrderRechargeMapper.java | 3 ++ .../common/service/TradeRecordService.java | 2 + .../service/impl/TradeRecordServiceImpl.java | 9 ++++ .../mapper/pay/TradeOrderRechargeMapper.xml | 17 +++++++ 6 files changed, 60 insertions(+), 24 deletions(-) diff --git a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/core/order/common/business/impl/OrderResultBusinessImpl.java b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/core/order/common/business/impl/OrderResultBusinessImpl.java index 0eb5339a..42ae5897 100644 --- a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/core/order/common/business/impl/OrderResultBusinessImpl.java +++ b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/core/order/common/business/impl/OrderResultBusinessImpl.java @@ -24,6 +24,7 @@ import com.bonus.core.pay.api.dto.UnifyPaySelectDTO; import com.bonus.core.pay.api.vo.UnifyPaySelectVO; import com.bonus.core.pay.api.vo.UnifyPayVO; import com.bonus.core.pay.common.constants.PayStateEnum; +import com.bonus.core.pay.common.model.TradeOrderRecharge; import com.bonus.core.pay.common.model.TradeRecord; import com.bonus.core.pay.common.po.PayResultPO; import org.slf4j.Logger; @@ -403,30 +404,30 @@ public class OrderResultBusinessImpl implements OrderResultBusiness { } } -// public boolean orderRepeatPayCheck(PayResultPO payResultPO, List orderInfoList) { -// if (!PayStateEnum.isPaidState(payResultPO.getTradeState())) { -// log.warn("本次交易不成功,跳过重复交易检查 tradeId={}", payResultPO.getTradeId()); -// return false; -// } else { -// List orderIds = (List)orderInfoList.stream().map(OrderInfo::getOrderId).collect(Collectors.toList()); -// List repeatPaidTrades = (List)this.tradeRecordApi.listSuccessByOrderIds(orderIds).stream().filter((s) -> { -// return !s.getTradeId().equals(payResultPO.getTradeId()); -// }).collect(Collectors.toList()); -// if (CollUtil.isNotEmpty(repeatPaidTrades)) { -// log.warn("订单产生多笔支付成功的交易 {}", repeatPaidTrades); -// OrderSavePO orderSavePO = this.orderRepairService.packageNewPaidOrderInfo(orderInfoList); -// this.tradeRecordApi.updateOrderRechargeId(payResultPO.getTradeId(), orderSavePO.getMacOrderId(), (List)orderSavePO.getOrderInfoList().stream().map(OrderInfo::getOrderId).collect(Collectors.toList())); -// this.orderPlaceBusiness.save(orderSavePO, false, false); -// CollUtil.clear(new Collection[]{orderInfoList}); -// orderInfoList.addAll(orderSavePO.getOrderInfoList()); -// return true; -// } else { -// log.warn("订单未产生多笔支付成功的交易,跳过 orderId={}", orderInfoList.stream().map(OrderInfo::getOrderId).collect(Collectors.toList())); -// return false; -// } -// } -// } -// + public boolean orderRepeatPayCheck(PayResultPO payResultPO, List orderInfoList) { + if (!PayStateEnum.isPaidState(payResultPO.getTradeState())) { + log.warn("本次交易不成功,跳过重复交易检查 tradeId={}", payResultPO.getTradeId()); + return false; + } else { + List orderIds = (List)orderInfoList.stream().map(OrderInfo::getOrderId).collect(Collectors.toList()); + List repeatPaidTrades = (List)this.tradeRecordApi.listSuccessByOrderIds(orderIds).stream().filter((s) -> { + return !s.getTradeId().equals(payResultPO.getTradeId()); + }).collect(Collectors.toList()); + if (CollUtil.isNotEmpty(repeatPaidTrades)) { + log.warn("订单产生多笔支付成功的交易 {}", repeatPaidTrades); + OrderSavePO orderSavePO = this.orderRepairService.packageNewPaidOrderInfo(orderInfoList); + this.tradeRecordApi.updateOrderRechargeId(payResultPO.getTradeId(), orderSavePO.getMacOrderId(), (List)orderSavePO.getOrderInfoList().stream().map(OrderInfo::getOrderId).collect(Collectors.toList())); + this.orderPlaceBusiness.save(orderSavePO, false, false); + CollUtil.clear(new Collection[]{orderInfoList}); + orderInfoList.addAll(orderSavePO.getOrderInfoList()); + return true; + } else { + log.warn("订单未产生多笔支付成功的交易,跳过 orderId={}", orderInfoList.stream().map(OrderInfo::getOrderId).collect(Collectors.toList())); + return false; + } + } + } + // public OrderRefund orderRepeatRefundCheck(RefundResultPO refundResultPO, OrderRefund orderRefund) { // List paidTradeRecords = (List)this.tradeRecordApi.listTradeRecordByOrderRechargeId(orderRefund.getOrderRefundId()).stream().filter((s) -> { // return PayStateEnum.isPaidState(s.getTradeState()); diff --git a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/core/pay/api/TradeRecordApi.java b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/core/pay/api/TradeRecordApi.java index b15a8d97..d99ea1a4 100644 --- a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/core/pay/api/TradeRecordApi.java +++ b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/core/pay/api/TradeRecordApi.java @@ -68,4 +68,8 @@ public class TradeRecordApi { public List listOrderRechargeByTradeId(Long tradeId) { return this.tradeRecordService.queryOrderRechargeTrade(tradeId); } + + public List listSuccessByOrderIds(List orderIds) { + return this.tradeRecordService.listSuccessByOrderIds(orderIds); + } } diff --git a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/core/pay/common/mapper/TradeOrderRechargeMapper.java b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/core/pay/common/mapper/TradeOrderRechargeMapper.java index ab099286..8bdf44b9 100644 --- a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/core/pay/common/mapper/TradeOrderRechargeMapper.java +++ b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/core/pay/common/mapper/TradeOrderRechargeMapper.java @@ -6,10 +6,13 @@ import com.bonus.core.pay.common.model.TradeOrderRecharge; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; +import java.time.LocalDateTime; import java.util.List; @Mapper @InterceptorIgnore public interface TradeOrderRechargeMapper extends BaseMapper { void batchInsert(@Param("tradeOrderRechargeList") List tradeOrderRechargeList); + + List listSuccessByOrderIds(@Param("orderIds") List orderIds, @Param("stratTime") LocalDateTime stratTime, @Param("endTime") LocalDateTime endTime); } diff --git a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/core/pay/common/service/TradeRecordService.java b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/core/pay/common/service/TradeRecordService.java index 87f1437e..0e165c4e 100644 --- a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/core/pay/common/service/TradeRecordService.java +++ b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/core/pay/common/service/TradeRecordService.java @@ -21,6 +21,8 @@ public interface TradeRecordService { List queryOrderRechargeTrade(Long tradeId); + List listSuccessByOrderIds(List orderIds); + TradeRecord getTradeRecordByOrderRechargeId(Long orderRechargeId, Integer... tradeState); void insertTradeRecord(TradeRecord tradeRecord); diff --git a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/core/pay/common/service/impl/TradeRecordServiceImpl.java b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/core/pay/common/service/impl/TradeRecordServiceImpl.java index 6bfad9fb..71bb5fa7 100644 --- a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/core/pay/common/service/impl/TradeRecordServiceImpl.java +++ b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/core/pay/common/service/impl/TradeRecordServiceImpl.java @@ -97,6 +97,15 @@ public class TradeRecordServiceImpl extends ServiceImpl listSuccessByOrderIds(List orderIds) { + if (CollUtil.isEmpty(orderIds)) { + return CollUtil.newArrayList(new TradeOrderRecharge[0]); + } else { + List timeRange = LeOrderUtil.queryCreateTimeRange(); + return this.tradeOrderRechargeMapper.listSuccessByOrderIds(orderIds, (LocalDateTime)timeRange.get(0), (LocalDateTime)timeRange.get(1)); + } + } + @Override public TradeRecord getTradeRecordByOrderRechargeId(Long orderRechargeId, Integer... tradeState) { log.info("[交易记录] getTradeRecordByOrderRechargeId 开始"); diff --git a/bonus-modules/bonus-smart-canteen/src/main/resources/mapper/pay/TradeOrderRechargeMapper.xml b/bonus-modules/bonus-smart-canteen/src/main/resources/mapper/pay/TradeOrderRechargeMapper.xml index dbf72ef9..65c67d92 100644 --- a/bonus-modules/bonus-smart-canteen/src/main/resources/mapper/pay/TradeOrderRechargeMapper.xml +++ b/bonus-modules/bonus-smart-canteen/src/main/resources/mapper/pay/TradeOrderRechargeMapper.xml @@ -12,4 +12,21 @@ + +