Kaynağa Gözat

支付修改

zhangchen 1 ay önce
ebeveyn
işleme
8474125885

+ 9 - 0
alien-store/src/main/java/shop/alien/store/service/MerchantPaymentOrderService.java

@@ -50,4 +50,13 @@ public interface MerchantPaymentOrderService extends IService<MerchantPaymentOrd
      * @return 更新的条数
      */
     int logicDeleteByOrderId(Integer orderId);
+
+    /**
+     * 按订单ID与支付类型将支付单逻辑删除(未命中缓存重新预支付时,仅删除同 pay_type 的支付单)
+     *
+     * @param orderId 业务订单ID
+     * @param payType 支付类型,如 alipay、wechat
+     * @return 更新的条数
+     */
+    int logicDeleteByOrderIdAndPayType(Integer orderId, String payType);
 }

+ 12 - 0
alien-store/src/main/java/shop/alien/store/service/impl/MerchantPaymentOrderServiceImpl.java

@@ -58,6 +58,18 @@ public class MerchantPaymentOrderServiceImpl extends ServiceImpl<MerchantPayment
     }
 
     @Override
+    public int logicDeleteByOrderIdAndPayType(Integer orderId, String payType) {
+        if (orderId == null || payType == null || payType.trim().isEmpty()) {
+            return 0;
+        }
+        LambdaUpdateWrapper<MerchantPaymentOrder> wrapper = new LambdaUpdateWrapper<>();
+        wrapper.eq(MerchantPaymentOrder::getOrderId, orderId);
+        wrapper.eq(MerchantPaymentOrder::getPayType, payType.trim());
+        wrapper.set(MerchantPaymentOrder::getDeleteFlag, 1);
+        return baseMapper.update(null, wrapper);
+    }
+
+    @Override
     public MerchantPaymentOrder getUnpaidByOrderId(Integer orderId) {
         if (orderId == null) {
             return null;

+ 4 - 3
alien-store/src/main/java/shop/alien/store/strategy/merchantPayment/impl/MerchantAlipayPaymentStrategyImpl.java

@@ -133,10 +133,10 @@ public class MerchantAlipayPaymentStrategyImpl implements MerchantPaymentStrateg
             }
         }
 
-        // 未命中缓存:先按订单ID将原支付单逻辑删除,再生成新预支付
-        int deleted = merchantPaymentOrderService.logicDeleteByOrderId(orderId);
+        // 未命中缓存:先按订单ID+支付类型将原支付单逻辑删除,再生成新预支付(仅删除同 pay_type)
+        int deleted = merchantPaymentOrderService.logicDeleteByOrderIdAndPayType(orderId, PaymentEnum.ALIPAY.getType());
         if (deleted > 0) {
-            log.info("未命中缓存,已逻辑删除该订单下 {} 条支付单,orderId={}", deleted, orderId);
+            log.info("未命中缓存,已逻辑删除该订单下支付宝支付单 {} 条,orderId={}", deleted, orderId);
         }
 
         String outTradeNo = UniqueRandomNumGenerator.generateUniqueCode(19);
@@ -320,6 +320,7 @@ public class MerchantAlipayPaymentStrategyImpl implements MerchantPaymentStrateg
             paymentOrder.setUpdatedTime(now);
             merchantPaymentOrderService.updateById(paymentOrder);
 
+            order.setOrderStatus(7);
             order.setPaymentStatus(2);
             order.setRefundAmount(refundAmountDecimal);
             order.setRefundTime(now);

+ 3 - 2
alien-store/src/main/java/shop/alien/store/strategy/merchantPayment/impl/MerchantWechatPaymentStrategyImpl.java

@@ -116,9 +116,9 @@ public class MerchantWechatPaymentStrategyImpl implements MerchantPaymentStrateg
             }
         }
 
-        int deleted = merchantPaymentOrderService.logicDeleteByOrderId(orderId);
+        int deleted = merchantPaymentOrderService.logicDeleteByOrderIdAndPayType(orderId, PaymentEnum.WECHAT_PAY.getType());
         if (deleted > 0) {
-            log.info("未命中缓存,已逻辑删除该订单下 {} 条支付单,orderId={}", deleted, orderId);
+            log.info("未命中缓存,已逻辑删除该订单下微信支付单 {} 条,orderId={}", deleted, orderId);
         }
 
         String outTradeNo = UniqueRandomNumGenerator.generateUniqueCode(19);
@@ -308,6 +308,7 @@ public class MerchantWechatPaymentStrategyImpl implements MerchantPaymentStrateg
             paymentOrder.setUpdatedTime(now);
             merchantPaymentOrderService.updateById(paymentOrder);
 
+            order.setOrderStatus(7);
             order.setPaymentStatus(2);
             order.setRefundAmount(refundAmountDecimal);
             order.setRefundTime(now);