Przeglądaj źródła

修改定时检查订单的执行逻辑

hgw 3 lat temu
rodzic
commit
b701fd957d

+ 27 - 15
mec-biz/src/main/java/com/ym/mec/biz/service/impl/TenantOrderRecordServiceImpl.java

@@ -151,22 +151,29 @@ public class TenantOrderRecordServiceImpl extends ServiceImpl<TenantOrderRecordD
         }
         log.info("delayCheckTenant  checkTenantOrder>>>>>");
         List<TenantOrderRecord> list = this.list(new WrapperUtil<TenantOrderRecord>().queryWrapper()
-                .isNotNull("trans_no_")
                 .eq("order_state_", 0));
         if (CollectionUtils.isNotEmpty(list)) {
             list.forEach(record -> {
-                checkTransOrderState(record);
-                if (record.getOrderState() == 1) {
-                    Consumer<TenantOrderRecord> consumer = checkOrder.get(record.getOrderType());
-                    if (Objects.isNull(consumer)) {
+                if (StringUtils.isBlank(record.getTransNo())) {
+                    if (timeOutCheck(record.getCreatedTime())) {
+                        record.setOrderState(2);
+                    } else {
                         return;
                     }
-                    consumer.accept(record);
-                    //修改流水
-                    LocalDateTime now = LocalDateTime.now();
-                    record.setPayDate(now.toLocalDate().toDate());
-                    record.setPayTime(now.toDate());
+                } else {
+                    checkTransOrderState(record);
+                    if (record.getOrderState() == 1) {
+                        Consumer<TenantOrderRecord> consumer = checkOrder.get(record.getOrderType());
+                        if (Objects.isNull(consumer)) {
+                            return;
+                        }
+                        consumer.accept(record);
+                    }
                 }
+                //修改流水
+                LocalDateTime now = LocalDateTime.now();
+                record.setPayDate(now.toLocalDate().toDate());
+                record.setPayTime(now.toDate());
                 baseMapper.updateById(record);
             });
         }
@@ -278,11 +285,7 @@ public class TenantOrderRecordServiceImpl extends ServiceImpl<TenantOrderRecordD
                         //不等于这个异常都是失败
                         orderRecord.setOrderState(2);
                     } else {
-                        long orderTime = orderRecord.getCreatedTime().getTime();//订单创建时间
-                        long nowTime = new Date().getTime();
-                        //丢弃5分钟之前的订单 300000 = 5 * 60秒 * 1000
-                        long exTime = 300000L;
-                        if (nowTime - orderTime > exTime) {
+                        if (timeOutCheck(orderRecord.getCreatedTime())) {
                             orderRecord.setOrderState(2);
                         }
                     }
@@ -295,6 +298,15 @@ public class TenantOrderRecordServiceImpl extends ServiceImpl<TenantOrderRecordD
         }
     }
 
+    //超时返回true
+    private Boolean timeOutCheck(Date orderDate) {
+        long orderTime = orderDate.getTime();//订单创建时间
+        long nowTime = new Date().getTime();
+        //丢弃5分钟之前的订单 300000 = 5 * 60秒 * 1000
+        long exTime = 300000L;
+        return nowTime - orderTime > exTime;
+    }
+
     private void getOrderState(TenantOrderRecord orderRecord, Map<String, Object> result) {
         Map<String, Object> detail = (Map<String, Object>) result.get("detail");
         Map<String, Object> order = (Map<String, Object>) result.get("order");