浏览代码

完善整个订单逻辑

yq 3 年之前
父节点
当前提交
f6d299dc77

+ 21 - 4
src/main/java/com/usky/dxtop/service/impl/OrderServiceImpl.java

@@ -67,6 +67,7 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
 
     public static final String CARD_TOP = "卡充值";
 
+    private TreeMap<String,Integer> treeMap = new TreeMap<>();
     @Autowired
     private CallApiLogService callApiLogService;
 
@@ -245,7 +246,7 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
                     cancelPay(order);
                 }
             }else {
-                payError(order);
+                orderError(order);
             }
         }
         callApiLogService.saveOrUpdate(order.getOrderNumber(), FIND_ORDER_INFO, TopApi.DEAL_SELECT_URL, param, result);
@@ -264,9 +265,6 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
             b = false;
         }
         if (b){
-            //修改订单状态为支付成功
-            order.setOrderFlag(OrderStatus.SUCCESS.getCode());
-            this.updateById(order);
             //调用卡充值api
             callCardTopApi(order);
         }else {
@@ -422,4 +420,23 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
         order.setOrderFlag(OrderStatus.CANCEL_PAY.getCode());
         this.updateById(order);
     }
+
+    /**
+     * 10次查询过后都是失败
+     * @param order
+     */
+    public void orderError(Order order){
+        String orderNumber = order.getOrderNumber();
+        if (treeMap.containsKey(orderNumber)){
+            Integer count = treeMap.get(orderNumber);
+            if (count >= 10){
+                order.setOrderFlag(OrderStatus.PAYMENT_ERROR_NO_DEBIT.getCode());
+                this.updateById(order);
+            }else {
+                treeMap.put(orderNumber,count+1);
+            }
+        }else {
+            treeMap.put(orderNumber,1);
+        }
+    }
 }

+ 60 - 0
src/main/java/com/usky/dxtop/service/job/CardJob.java

@@ -0,0 +1,60 @@
+package com.usky.dxtop.service.job;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.usky.dxtop.model.Order;
+import com.usky.dxtop.service.OrderService;
+import com.usky.dxtop.service.emun.OrderStatus;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.scheduling.annotation.Scheduled;
+import org.springframework.stereotype.Component;
+
+import java.util.List;
+import java.util.TreeMap;
+
+/**
+ * @author yq
+ * @date 2021/9/16 9:31
+ */
+@Slf4j
+@Component
+public class CardJob {
+
+    private TreeMap<String,Integer> treeMap = new TreeMap<>();
+
+    @Autowired
+    private OrderService orderService;
+
+    @Scheduled(cron = "0 */1 * * * ?")
+    public void execute(){
+        LambdaQueryWrapper<Order> queryWrapper = Wrappers.lambdaQuery();
+        queryWrapper
+                .eq(Order::getOrderFlag,OrderStatus.SUCCESS.getCode());
+        List<Order> list = orderService.list(queryWrapper);
+        for (Order order:list) {
+            try {
+                order.setOrderFlag(OrderStatus.COMPLETE.getCode());
+                orderService.updateById(order);
+            }catch (Exception e){
+                log.error("---orderJob---异常"+e.getMessage());
+            }
+        }
+        log.info("---orderJob---处理完成");
+    }
+
+    public void cartError(Order order){
+        String orderNumber = order.getOrderNumber();
+        if (treeMap.containsKey(orderNumber)){
+            Integer count = treeMap.get(orderNumber);
+            if (count >= 10){
+                order.setOrderFlag(OrderStatus.PAYMENT_ERROR_DEBIT.getCode());
+                orderService.updateById(order);
+            }else {
+                treeMap.put(orderNumber,count+1);
+            }
+        }else {
+            treeMap.put(orderNumber,1);
+        }
+    }
+}

+ 1 - 4
src/main/java/com/usky/dxtop/service/job/OrderJob.java

@@ -1,10 +1,7 @@
 package com.usky.dxtop.service.job;
 
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
-import com.baomidou.mybatisplus.core.metadata.IPage;
-import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
-import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.usky.dxtop.model.Order;
 import com.usky.dxtop.service.OrderService;
 import com.usky.dxtop.service.emun.OrderPayType;
@@ -23,7 +20,6 @@ import java.util.List;
 @Slf4j
 @Component
 public class OrderJob {
-
     @Autowired
     private OrderService orderService;
 
@@ -45,4 +41,5 @@ public class OrderJob {
         }
         log.info("---orderJob---处理完成");
     }
+
 }