From c8df15c5d52874b0cb1b53e27091ce1cc4cd6634 Mon Sep 17 00:00:00 2001
From: Helius <wangdoubleone@gmail.com>
Date: Sat, 25 Sep 2021 10:51:32 +0800
Subject: [PATCH] add overtime job

---
 src/main/java/cc/mrbird/febs/mall/mapper/MallOrderInfoMapper.java |    2 ++
 src/main/java/cc/mrbird/febs/mall/quartz/OrderOvertimeJob.java    |   45 +++++++++++++++++++++++++++++++++++++++++++++
 src/main/java/cc/mrbird/febs/FebsShiroApplication.java            |    2 ++
 src/main/resources/mapper/modules/MallOrderInfoMapper.xml         |    3 +++
 4 files changed, 52 insertions(+), 0 deletions(-)

diff --git a/src/main/java/cc/mrbird/febs/FebsShiroApplication.java b/src/main/java/cc/mrbird/febs/FebsShiroApplication.java
index 1766c6b..3f01173 100644
--- a/src/main/java/cc/mrbird/febs/FebsShiroApplication.java
+++ b/src/main/java/cc/mrbird/febs/FebsShiroApplication.java
@@ -5,12 +5,14 @@
 import org.springframework.boot.autoconfigure.SpringBootApplication;
 import org.springframework.boot.builder.SpringApplicationBuilder;
 import org.springframework.scheduling.annotation.EnableAsync;
+import org.springframework.scheduling.annotation.EnableScheduling;
 import org.springframework.transaction.annotation.EnableTransactionManagement;
 
 /**
  * @author MrBird
  */
 @EnableAsync
+@EnableScheduling
 @SpringBootApplication
 @EnableTransactionManagement
 @MapperScan("cc.mrbird.febs.*.mapper")
diff --git a/src/main/java/cc/mrbird/febs/mall/mapper/MallOrderInfoMapper.java b/src/main/java/cc/mrbird/febs/mall/mapper/MallOrderInfoMapper.java
index df72510..e7f2769 100644
--- a/src/main/java/cc/mrbird/febs/mall/mapper/MallOrderInfoMapper.java
+++ b/src/main/java/cc/mrbird/febs/mall/mapper/MallOrderInfoMapper.java
@@ -36,4 +36,6 @@
     AdminOrderDetailVo getMallOrderDetailById(@Param("id")long id);
 
     List<MallOrderItem> getMallOrderItemByOrderId(@Param("id")long id);
+
+    List<MallOrderInfo> selectOrderInfoByStatus(@Param("status") Integer status);
 }
diff --git a/src/main/java/cc/mrbird/febs/mall/quartz/OrderOvertimeJob.java b/src/main/java/cc/mrbird/febs/mall/quartz/OrderOvertimeJob.java
new file mode 100644
index 0000000..c9ca6a6
--- /dev/null
+++ b/src/main/java/cc/mrbird/febs/mall/quartz/OrderOvertimeJob.java
@@ -0,0 +1,45 @@
+package cc.mrbird.febs.mall.quartz;
+
+import cc.mrbird.febs.common.enumerates.OrderStatusEnum;
+import cc.mrbird.febs.mall.entity.MallOrderInfo;
+import cc.mrbird.febs.mall.mapper.MallOrderInfoMapper;
+import cn.hutool.core.collection.CollUtil;
+import cn.hutool.core.date.DateUnit;
+import cn.hutool.core.date.DateUtil;
+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.Date;
+import java.util.List;
+
+/**
+ * @author wzy
+ * @date 2021-09-25
+ **/
+@Slf4j
+@Component
+public class OrderOvertimeJob {
+
+    @Autowired
+    private MallOrderInfoMapper orderInfoMapper;
+
+    @Scheduled(cron = "0 0/5 * * * ? ")
+    public void overtimeJob() {
+        log.info("订单超时任务执行");
+        List<MallOrderInfo> orderList = orderInfoMapper.selectOrderInfoByStatus(OrderStatusEnum.WAIT_PAY.getValue());
+        if (CollUtil.isNotEmpty(orderList)) {
+            for (MallOrderInfo orderInfo : orderList) {
+                long subTime = DateUtil.between(orderInfo.getOrderTime(), new Date(), DateUnit.MINUTE, false);
+
+                if (subTime > 15) {
+                    orderInfo.setStatus(OrderStatusEnum.CANCEL.getValue());
+                    orderInfo.setCancelType(MallOrderInfo.CANCEL_OVERTIME_NO_PAY);
+                    orderInfoMapper.updateById(orderInfo);
+                }
+            }
+        }
+
+    }
+}
diff --git a/src/main/resources/mapper/modules/MallOrderInfoMapper.xml b/src/main/resources/mapper/modules/MallOrderInfoMapper.xml
index 6128a0c..82931b5 100644
--- a/src/main/resources/mapper/modules/MallOrderInfoMapper.xml
+++ b/src/main/resources/mapper/modules/MallOrderInfoMapper.xml
@@ -139,4 +139,7 @@
         select * from mall_order_item where order_id = #{id}
     </select>
 
+    <select id="selectOrderInfoByStatus" resultType="cc.mrbird.febs.mall.entity.MallOrderInfo">
+        select * from mall_order_info where status=#{status}
+    </select>
 </mapper>
\ No newline at end of file

--
Gitblit v1.9.1