瀏覽代碼

退款插入记录修改为异步

zhangchen 1 月之前
父節點
當前提交
86420fad25

+ 11 - 0
alien-store/src/main/java/shop/alien/store/service/RefundRecordAsyncService.java

@@ -0,0 +1,11 @@
+package shop.alien.store.service;
+
+import shop.alien.entity.store.RefundRecord;
+
+/**
+ * 退款记录异步落库,避免阻塞退款接口响应
+ */
+public interface RefundRecordAsyncService {
+
+    void saveRefundRecordAsync(RefundRecord record);
+}

+ 31 - 0
alien-store/src/main/java/shop/alien/store/service/impl/RefundRecordAsyncServiceImpl.java

@@ -0,0 +1,31 @@
+package shop.alien.store.service.impl;
+
+import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.scheduling.annotation.Async;
+import org.springframework.stereotype.Service;
+import shop.alien.entity.store.RefundRecord;
+import shop.alien.store.service.RefundRecordAsyncService;
+import shop.alien.store.service.RefundRecordService;
+
+/**
+ * 退款记录异步落库,避免阻塞退款接口响应
+ */
+@Slf4j
+@Service
+@RequiredArgsConstructor
+public class RefundRecordAsyncServiceImpl implements RefundRecordAsyncService {
+
+    private final RefundRecordService refundRecordService;
+
+    @Async("taskExecutor")
+    @Override
+    public void saveRefundRecordAsync(RefundRecord record) {
+        try {
+            refundRecordService.save(record);
+            log.debug("退款记录异步保存成功 outTradeNo={}", record.getOutTradeNo());
+        } catch (Exception e) {
+            log.error("退款记录异步保存失败 outTradeNo={}", record != null ? record.getOutTradeNo() : null, e);
+        }
+    }
+}

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

@@ -25,13 +25,7 @@ import shop.alien.entity.store.RefundRecord;
 import shop.alien.entity.store.StorePaymentConfig;
 import shop.alien.entity.store.UserReservation;
 import shop.alien.entity.store.UserReservationOrder;
-import shop.alien.store.service.MerchantPaymentOrderService;
-import shop.alien.store.service.RefundRecordService;
-import shop.alien.store.service.StorePaymentConfigService;
-import shop.alien.store.service.ReservationOrderPaymentTimeoutService;
-import shop.alien.store.service.ReservationVerificationQrService;
-import shop.alien.store.service.UserReservationOrderService;
-import shop.alien.store.service.UserReservationService;
+import shop.alien.store.service.*;
 import shop.alien.store.strategy.merchantPayment.MerchantPaymentStrategy;
 import shop.alien.util.common.UniqueRandomNumGenerator;
 import shop.alien.util.common.constant.PaymentEnum;
@@ -68,7 +62,7 @@ public class MerchantAlipayPaymentStrategyImpl implements MerchantPaymentStrateg
     private final StorePaymentConfigService storePaymentConfigService;
     private final UserReservationOrderService userReservationOrderService;
     private final MerchantPaymentOrderService merchantPaymentOrderService;
-    private final RefundRecordService refundRecordService;
+    private final RefundRecordAsyncService refundRecordAsyncService;
     private final ReservationOrderPaymentTimeoutService reservationOrderPaymentTimeoutService;
     private final ReservationVerificationQrService reservationVerificationQrService;
     private final UserReservationService userReservationService;
@@ -356,7 +350,7 @@ public class MerchantAlipayPaymentStrategyImpl implements MerchantPaymentStrateg
             record.setUserId(order.getUserId());
             record.setCreatedTime(now);
             record.setDeleteFlag(0);
-            refundRecordService.save(record);
+            refundRecordAsyncService.saveRefundRecordAsync(record);
 
             log.info("商户预订订单退款成功,outTradeNo={}", outTradeNo);
             return R.data("退款成功");

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

@@ -15,7 +15,7 @@ import shop.alien.entity.store.StorePaymentConfig;
 import shop.alien.entity.store.UserReservation;
 import shop.alien.entity.store.UserReservationOrder;
 import shop.alien.store.service.MerchantPaymentOrderService;
-import shop.alien.store.service.RefundRecordService;
+import shop.alien.store.service.RefundRecordAsyncService;
 import shop.alien.store.service.StorePaymentConfigService;
 import shop.alien.store.service.ReservationOrderPaymentTimeoutService;
 import shop.alien.store.service.ReservationVerificationQrService;
@@ -67,7 +67,7 @@ public class MerchantWechatPaymentStrategyImpl implements MerchantPaymentStrateg
     private final StorePaymentConfigService storePaymentConfigService;
     private final UserReservationOrderService userReservationOrderService;
     private final MerchantPaymentOrderService merchantPaymentOrderService;
-    private final RefundRecordService refundRecordService;
+    private final RefundRecordAsyncService refundRecordAsyncService;
     private final ReservationOrderPaymentTimeoutService reservationOrderPaymentTimeoutService;
     private final ReservationVerificationQrService reservationVerificationQrService;
     private final UserReservationService userReservationService;
@@ -347,8 +347,10 @@ public class MerchantWechatPaymentStrategyImpl implements MerchantPaymentStrateg
             record.setStoreId(storeId);
             record.setUserId(order.getUserId());
             record.setCreatedTime(now);
+            record.setCreatedUserId(order.getUserId());
+            record.setUpdatedUserId(order.getUserId());
             record.setDeleteFlag(0);
-            refundRecordService.save(record);
+            refundRecordAsyncService.saveRefundRecordAsync(record);
 
             log.info("商户预订订单微信退款成功,outTradeNo={}", outTradeNo);
             return R.data("退款成功");