Pārlūkot izejas kodu

小程序退款状态修复

lishiqiang 2 nedēļas atpakaļ
vecāks
revīzija
e67c721597

+ 7 - 8
ship-module-trade/ship-module-trade-biz/src/main/java/com/yc/ship/module/trade/service/refund/impl/TradeRefundServiceImpl.java

@@ -1617,10 +1617,6 @@ public class TradeRefundServiceImpl implements TradeRefundService {
      * @param refundDO
      */
     private void afterRefundFromPayPlatSuccess(RefundDO refundDO) {
-        if(refundDO.getSellMethod()==3){
-            //取消订单退款不处理订单状态
-            return;
-        }
         //已退金额与退款金额一致则全部退款
         String lockKey = String.format(UPDATE_REFUND_LOCK, refundDO.getId());
         RLock lock = redissonClient.getLock(lockKey);
@@ -1648,12 +1644,15 @@ public class TradeRefundServiceImpl implements TradeRefundService {
         RLock lock = redissonClient.getLock(lockKey);
         try {
             if (lock.tryLock(60, 90, TimeUnit.SECONDS)) {
-                Map<String, Long> refundCountMap = tradeOrderRepositoryService.getRefundCount(refundDO.getOrderId());
+//                Map<String, Long> refundCountMap = tradeOrderRepositoryService.getRefundCount(refundDO.getOrderId());
+                TradeOrderDO stradeOrderDO = tradeOrderRepositoryService.getById(refundDO.getOrderId());
                 TradeOrderDO tradeOrderDO = new TradeOrderDO();
                 tradeOrderDO.setId(refundDO.getOrderId());
-                tradeOrderDO.setOrderStatus(TradeOrderStatusEnum.ALL_REFUND.getStatus());
-                tradeOrderRepositoryService.updateOrderStatus(tradeOrderDO);
-
+                //已支付退款修改订单状态已退款,如果是未支付(取消订单)退款则不修改订单状态
+                if(!(refundDO.getSellMethod()==3 && stradeOrderDO.getPayStatus()!=1)){
+                    tradeOrderDO.setOrderStatus(TradeOrderStatusEnum.ALL_REFUND.getStatus());
+                    tradeOrderRepositoryService.updateOrderStatus(tradeOrderDO);
+                }
                 afterRefundAmountSuccess(tradeOrderDO.getId(), refundDO.getId(), refundDO.getRefundAmount());
                 TradeOrderLogUtils.setOrderInfo(refundDO.getOrderId(), TradeOrderStatusEnum.REFUNDING.getStatus(), tradeOrderDO.getOrderStatus(), MapUtil.<String, Object>builder().put("result", "成功")
                         .put("refundId", refundDO.getId()).build());