Browse Source

渠道订单取消

chunping 3 years ago
parent
commit
56ef7626d9

+ 2 - 2
mp-admin/src/main/resources/application-test.yml

@@ -14,7 +14,7 @@ logging:
 # 数据源配置
 spring:
     redis:
-      host: 110.40.236.236
+      host: 172.17.16.14
       port: 6379
       password: '@9(s2sWppxkess'
       # 连接超时时间(毫秒)
@@ -35,7 +35,7 @@ spring:
         druid:
             # 主库数据源
             master:
-                url: jdbc:mysql://110.40.236.236:3306/mpdb_test?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=UTC
+                url: jdbc:mysql://172.17.16.14:3306/mpdb_test?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=UTC
                 username: mptest
                 password: wan789*@dfhzHu518!dr2xosn
             # 从库数据源

+ 2 - 2
mp-quartz/pom.xml

@@ -32,9 +32,9 @@
         <!-- 通用工具-->
         <dependency>
             <groupId>com.qs.mp</groupId>
-            <artifactId>mp-common</artifactId>
+            <artifactId>mp-service</artifactId>
         </dependency>
 
     </dependencies>
 
-</project>
+</project>

+ 51 - 0
mp-quartz/src/main/java/com/qs/mp/quartz/task/ChannelOrderTask.java

@@ -0,0 +1,51 @@
+package com.qs.mp.quartz.task;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.qs.mp.channel.domain.ChannelOrder;
+import com.qs.mp.channel.service.IChannelOrderService;
+import com.qs.mp.common.enums.ChannelOrderStatusEnum;
+import com.qs.mp.common.utils.DateUtils;
+import com.qs.mp.common.utils.LogUtil;
+import java.util.List;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+/**
+ * @author zhongcp
+ * @Date 2022/3/17
+ */
+@Component("channelOrderTask")
+public class ChannelOrderTask {
+  protected final Logger logger = LoggerFactory.getLogger(this.getClass().getSimpleName());
+
+  @Autowired
+  private IChannelOrderService channelOrderService;
+
+  private final int PAGE_SIZE = 1000;
+
+  /**
+   * 订单取消到期任务
+   */
+  public void cancel() {
+    LogUtil.info(logger, "...渠道未支付订单定时取消任务开始...");
+    int total = PAGE_SIZE;
+    while (total == PAGE_SIZE) {
+      // 捞取30分钟前未支付订单
+      List<ChannelOrder> channelOrderList = channelOrderService.list(new LambdaQueryWrapper<ChannelOrder>().eq(ChannelOrder::getStatus,
+              ChannelOrderStatusEnum.NOT_PAY)
+          .lt(ChannelOrder::getCreatedTime, DateUtils.addMinutes(DateUtils.getNowDate(), -30))
+          .last("limt " + PAGE_SIZE));
+      total = channelOrderList.size();
+      for (ChannelOrder channelOrder : channelOrderList) {
+        try {
+          channelOrderService.cancelOrder(channelOrder.getChannelId(), channelOrder.getOrderId());
+        } catch (Exception e) {
+          LogUtil.error(logger, e, "定时取消未支付渠道订单异常。orderId:{0}", channelOrder.getOrderId());
+        }
+      }
+    }
+    LogUtil.info(logger, "...渠道未支付订单定时取消任务结束...");
+  }
+}