Browse Source

修改退款时停止发放优惠券

xdd 2 months ago
parent
commit
a9217773af

+ 19 - 1
fs-admin/src/main/java/com/fs/store/controller/FsStorePaymentController.java

@@ -7,6 +7,7 @@ import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 
+import cn.hutool.core.util.ObjectUtil;
 import cn.hutool.json.JSONUtil;
 import com.alipay.api.AlipayApiException;
 import com.alipay.api.domain.AlipayTradeRefundModel;
@@ -27,9 +28,12 @@ import com.fs.pay.pay.domain.OrderResult;
 import com.fs.pay.pay.domain.RefundResult;
 import com.fs.pay.pay.dto.OrderQueryDTO;
 import com.fs.pay.pay.service.PayService;
+import com.fs.store.domain.FsStoreOrder;
 import com.fs.store.domain.TzConfigInfoDTO;
 import com.fs.store.param.FsStorePaymentParam;
 import com.fs.store.service.IFsStoreOrderService;
+import com.fs.store.service.impl.FsCouponScheduleServiceImpl;
+import com.fs.store.service.impl.FsStoreOrderServiceImpl;
 import com.fs.store.vo.FsStorePaymentVO;
 import com.fs.pay.service.IPayService;
 import com.fs.tzBank.TzBankService;
@@ -41,6 +45,7 @@ import com.ijpay.alipay.AliPayApiConfigKit;
 import io.swagger.annotations.ApiOperation;
 import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.transaction.annotation.Propagation;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.transaction.interceptor.TransactionAspectSupport;
 import org.springframework.web.bind.annotation.*;
@@ -80,6 +85,13 @@ public class FsStorePaymentController extends BaseController
 
     @Autowired
     private IFsStoreOrderService orderService;
+    @Autowired
+    private FsCouponScheduleServiceImpl fsCouponScheduleService;
+    @Autowired
+    private FsStoreOrderServiceImpl fsStoreOrderServiceImpl;
+    @Autowired
+    private FsStoreOrderServiceImpl fsStoreOrderService;
+
     /**
      * 查询支付明细列表
      */
@@ -217,7 +229,7 @@ public class FsStorePaymentController extends BaseController
 
     @PreAuthorize("@ss.hasPermi('store:storePayment:refund')")
     @PostMapping("refundStorePayment")
-    @Transactional
+    @Transactional(rollbackFor = Exception.class,propagation = Propagation.REQUIRED)
     public R refundStorePayment(@RequestBody FsStorePayment fsStorePayment)
     {
         FsStorePayment payment=fsStorePaymentService.selectFsStorePaymentById(fsStorePayment.getPaymentId());
@@ -295,6 +307,12 @@ public class FsStorePaymentController extends BaseController
                 TzReqResultDTO<TzRefundNotifyDTO> resultDTO;
 
                 try {
+                    // 退款将定时发放优惠券的状态设置为已退款
+                    FsStoreOrder fsStoreOrder = fsStoreOrderService.selectFsStoreOrderById(payment.getOrderId());
+                    if(ObjectUtil.isNotNull(fsStoreOrder)){
+                        fsCouponScheduleService.setScheduleCouponRefund(fsStoreOrder.getOrderCode());
+                    }
+
                     resultDTO = tzBankService.payRefund(requestDTO);
                     TzRefundNotifyDTO body = resultDTO.getBody();
                     String refundOrdStatus = body.getRefundOrdStatus();

+ 8 - 0
fs-service-system/src/main/java/com/fs/store/service/impl/FsStoreAfterSalesServiceImpl.java

@@ -10,6 +10,7 @@ import java.util.*;
 
 import cn.hutool.core.bean.BeanUtil;
 import cn.hutool.core.util.IdUtil;
+import cn.hutool.core.util.ObjectUtil;
 import cn.hutool.json.JSONUtil;
 import com.alibaba.fastjson.JSONObject;
 import com.fs.common.annotation.DataScope;
@@ -100,6 +101,10 @@ public class FsStoreAfterSalesServiceImpl implements IFsStoreAfterSalesService
 
     @Autowired
     TzBankService tzBankService;
+    @Autowired
+    private IFsStoreOrderService fsStoreOrderService;
+    @Autowired
+    private IFsCouponScheduleService fsCouponScheduleService;
 
 
     /**
@@ -628,6 +633,9 @@ public class FsStoreAfterSalesServiceImpl implements IFsStoreAfterSalesService
                         TzReqResultDTO<TzRefundNotifyDTO> resultDTO;
 
                         try {
+                            // 退款将定时发放优惠券的状态设置为已退款
+                            fsCouponScheduleService.setScheduleCouponRefund(order.getOrderCode());
+
                             resultDTO = tzBankService.payRefund(requestDTO);
                             TzRefundNotifyDTO body = resultDTO.getBody();
                             String refundOrdStatus = body.getRefundOrdStatus();

+ 16 - 2
fs-service-system/src/main/java/com/fs/store/service/impl/FsStoreOrderServiceImpl.java

@@ -1439,10 +1439,15 @@ public class FsStoreOrderServiceImpl implements IFsStoreOrderService
             fsStoreOrderMapper.updateFsStoreOrder(storeOrder);
 
             // 如果是套餐类型的
-            if(ObjectUtil.equal(storeOrder.getIsPackage(),1)) {
+            if(ObjectUtil.equal(order.getIsPackage(),1)) {
+                logger.info("订单是套餐类型, 订单ID: {}", order.getId());
                 // 如果该套餐有定时发放优惠券,就放置到定时发放优惠券队列
-                FsStoreProductPackage fsStoreProductPackage = productPackageService.selectFsStoreProductPackageById(storeOrder.getPackageId());
+                FsStoreProductPackage fsStoreProductPackage = productPackageService.selectFsStoreProductPackageById(order.getPackageId());
+                logger.info("查询到的套餐信息: {}", fsStoreProductPackage);
+
                 if(ObjectUtil.equal(1,fsStoreProductPackage.getIcgEnable())){
+                    logger.info("套餐开启了定时发放优惠券功能, 套餐ID: {}", fsStoreProductPackage.getPackageId());
+
                     FsCouponSchedule fsCouponSchedule = new FsCouponSchedule();
                     fsCouponSchedule.setOrderId(order.getId());
                     fsCouponSchedule.setSetmealId(fsStoreProductPackage.getPackageId());
@@ -1459,6 +1464,8 @@ public class FsStoreOrderServiceImpl implements IFsStoreOrderService
                     fsCouponSchedule.setRetryCount(0);
 
                     fsCouponScheduleService.insertFsCouponSchedule(fsCouponSchedule);
+
+                    logger.info("插入优惠券定时发放任务成功,任务ID:{}",fsCouponSchedule.getId());
                 }
             }
             //非处方直接提交OMS
@@ -2032,6 +2039,13 @@ public class FsStoreOrderServiceImpl implements IFsStoreOrderService
                         TzReqResultDTO<TzRefundNotifyDTO> resultDTO;
 
                         try {
+
+
+                            // 停止发放优惠券
+                            if(ObjectUtil.isNotNull(order)){
+                                fsCouponScheduleService.setScheduleCouponRefund(order.getOrderCode());
+                            }
+
                             resultDTO = tzBankService.payRefund(requestDTO);
 
                             TzRefundNotifyDTO body = resultDTO.getBody();