Jelajahi Sumber

退款bug测试

ssk 1 bulan lalu
induk
melakukan
22defb2f25

+ 30 - 0
alien-job/src/main/java/shop/alien/job/feign/AliFeign.java

@@ -0,0 +1,30 @@
+package shop.alien.job.feign;
+
+import org.springframework.cloud.openfeign.FeignClient;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+
+/**
+ * @author ssk
+ * @version 1.0
+ * @date 2025/11/14 13:23
+ */
+@FeignClient(url = "${feign.alienStore.url}/ali", name = "aliFeign")
+public interface AliFeign {
+
+    /**
+     * 处理退款
+     *
+     * @param outTradeNo   订单编号
+     * @param refundAmount 退款金额
+     * @param refundReason 退款原因
+     * @param partialRefundCode
+     * @return
+     */
+    @GetMapping("/processRefund")
+    public String processRefund(@RequestParam("outTradeNo") String outTradeNo,
+                                @RequestParam("refundAmount") String refundAmount,
+                                @RequestParam("refundReason") String refundReason,
+                                @RequestParam("partialRefundCode") String partialRefundCode);
+
+}

+ 12 - 9
alien-job/src/main/java/shop/alien/job/store/LifeUserOrderJob.java

@@ -12,6 +12,7 @@ import org.springframework.transaction.annotation.Transactional;
 import org.springframework.util.CollectionUtils;
 import shop.alien.entity.store.*;
 import shop.alien.entity.store.vo.LifeUserOrderVo;
+import shop.alien.job.feign.AliFeign;
 import shop.alien.job.feign.AlienStoreFeign;
 import shop.alien.mapper.*;
 import shop.alien.util.common.UniqueRandomNumGenerator;
@@ -50,6 +51,8 @@ public class LifeUserOrderJob {
     private final LifeUserMapper lifeUserMapper;
     private final LifeNoticeMapper lifeNoticeMapper;
 
+    private final AliFeign aliFeign;
+
     /**
      * 待支付订单超时处理
      */
@@ -165,7 +168,7 @@ public class LifeUserOrderJob {
         // 查询状态为待使用的
         List<Integer> status = new ArrayList<>();
         status.add(OrderStatusEnum.WAIT_USE.getStatus());
-        selectWrapper.inSql("luo.id", "SELECT distinct order_id FROM order_coupon_middle WHERE status in ( "+String.join(",", status.stream().map(String::valueOf).collect(Collectors.toList()))+")");
+        selectWrapper.inSql("luo.id", "SELECT distinct order_id FROM order_coupon_middle WHERE status in ( " + String.join(",", status.stream().map(String::valueOf).collect(Collectors.toList())) + ")");
         // 查询待使用的订单
         List<LifeUserOrderVo> orderList = lifeUserOrderMapper.selectRefundList(selectWrapper);
 
@@ -183,14 +186,14 @@ public class LifeUserOrderJob {
                 } else {
                     // 指定时间段
                     String goqiDate = null;
-                    if(order.getCouponType() == CouponTypeEnum.COUPON.getCode()){
+                    if (order.getCouponType() == CouponTypeEnum.COUPON.getCode()) {
                         // 1. 将字符串转换为 long 类型
                         long timestamp = Long.parseLong(effectiveDateValue.split(",")[1]);
                         // 2. 使用 timestamp 构建 Date 对象
                         Date date = new Date(timestamp);
                         // 如果你需要特定格式的字符串,可以再进行格式化
                         SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
-                        goqiDate =sdf.format(date);
+                        goqiDate = sdf.format(date);
                     } else {
                         goqiDate = effectiveDateValue.split(",")[1];
                     }
@@ -215,11 +218,11 @@ public class LifeUserOrderJob {
                         String refundResult = null;
                         if (refundList.size() == orderCouponMiddleList.size()) {
                             // 全退
-                            refundResult = alienStoreFeign.processRefund(order.getOrderNo(), totalRefundAmount.toString(), "过期自动退","");
+                            refundResult = aliFeign.processRefund(order.getOrderNo(), totalRefundAmount.toString(), "过期自动退", "");
                         } else {
                             // TODO 本次部分退款
                             String partialRefundCode = UniqueRandomNumGenerator.generateUniqueCode(12);
-                            refundResult = alienStoreFeign.processRefund(order.getOrderNo(), totalRefundAmount.toString(), "过期自动退",partialRefundCode);
+                            refundResult = aliFeign.processRefund(order.getOrderNo(), totalRefundAmount.toString(), "过期自动退", partialRefundCode);
                         }
                         if ("调用成功".equals(refundResult)) {
                             //  1.更新中间表状态
@@ -254,11 +257,11 @@ public class LifeUserOrderJob {
                                             .set(LifeDiscountCouponUser::getStatus, DiscountCouponEnum.WAITING_USED.getValue())
                                             .eq(LifeDiscountCouponUser::getId, order.getQuanId()));
                                 }
-                            }else {
+                            } else {
                                 // 累计退券个数+当前退券个数!=总个数 且 当前退券数量 = 可退券数
-                                lifeUserOrderMapper.update(null,new UpdateWrapper<LifeUserOrder>().eq("id",order.getId())
-                                        .set("status",OrderStatusEnum.COMPLETE.getStatus())
-                                        .set("finish_time",now));
+                                lifeUserOrderMapper.update(null, new UpdateWrapper<LifeUserOrder>().eq("id", order.getId())
+                                        .set("status", OrderStatusEnum.COMPLETE.getStatus())
+                                        .set("finish_time", now));
                             }
                             // 4.添加退款记录
                             LifeRefundOrder refundOrder = new LifeRefundOrder()