浏览代码

二手定时任务

qrs 3 月之前
父节点
当前提交
a629eb544e
共有 1 个文件被更改,包括 18 次插入10 次删除
  1. 18 10
      alien-job/src/main/java/shop/alien/job/second/SecondGoodsTradeXxlJob.java

+ 18 - 10
alien-job/src/main/java/shop/alien/job/second/SecondGoodsTradeXxlJob.java

@@ -11,6 +11,7 @@ import org.springframework.scheduling.annotation.Scheduled;
 import org.springframework.stereotype.Component;
 import shop.alien.config.redis.BaseRedisService;
 import shop.alien.entity.second.SecondGoods;
+import shop.alien.entity.second.SecondTradeOperation;
 import shop.alien.entity.second.SecondTradeRecord;
 import shop.alien.entity.store.LifeMessage;
 import shop.alien.entity.store.LifeNotice;
@@ -21,6 +22,7 @@ import shop.alien.mapper.LifeMessageMapper;
 import shop.alien.mapper.LifeNoticeMapper;
 import shop.alien.mapper.LifeUserMapper;
 import shop.alien.mapper.second.SecondGoodsMapper;
+import shop.alien.mapper.second.SecondTradeOperationMapper;
 import shop.alien.mapper.second.SecondTradeRecordMapper;
 
 import java.time.LocalDateTime;
@@ -28,6 +30,7 @@ import java.time.ZoneId;
 import java.util.ArrayList;
 import java.util.Date;
 import java.util.List;
+import java.util.stream.Collectors;
 
 @Slf4j
 @Component
@@ -48,6 +51,8 @@ public class SecondGoodsTradeXxlJob {
 
     private final SecondGoodsMapper secondGoodsMapper;
 
+    private final SecondTradeOperationMapper secondTradeOperationMapper;
+
     /**
      * 二手交易平台 - 交易时间前的十分钟之前  给买家和卖家发送通知提醒
      */
@@ -55,12 +60,12 @@ public class SecondGoodsTradeXxlJob {
     public void secondTradeRemind() throws Exception {
         log.info("开始执行定时任务: 二手交易平台 - 10分钟后交易提醒 - secondTradeRemind");
         try {
-            Date now = Date.from(LocalDateTime.now().plusMinutes(10).withSecond(0).withNano(0).atZone(ZoneId.systemDefault()).toInstant());
+            Date tenMinuteLater = Date.from(LocalDateTime.now().plusMinutes(10).withSecond(0).withNano(0).atZone(ZoneId.systemDefault()).toInstant());
 
             // 查询所有待交易
             LambdaQueryWrapper<SecondTradeRecord> wrapper = new LambdaQueryWrapper<>();
             wrapper.eq(SecondTradeRecord::getTradeStatus, 3);
-            wrapper.eq(SecondTradeRecord::getTransactionTime, now);
+            wrapper.eq(SecondTradeRecord::getTransactionTime, tenMinuteLater);
             List<SecondTradeRecord> tradeRecordList = secondTradeRecordMapper.selectList(wrapper);
 
             for (SecondTradeRecord tradeRecord : tradeRecordList) {
@@ -269,24 +274,27 @@ public class SecondGoodsTradeXxlJob {
     private void secondTradeTimeoutCancel() {
         log.info("开始执行定时任务: 二手交易平台 - 交易超时未确认则自动取消 - secondTradeTimeoutCancel");
         try {
-            LocalDateTime now = LocalDateTime.now().withSecond(0).withNano(0);
+            Date now = Date.from(LocalDateTime.now().withSecond(0).withNano(0).atZone(ZoneId.systemDefault()).toInstant());
 
             // 查询所有待确认
             LambdaQueryWrapper<SecondTradeRecord> queryWrapper = new LambdaQueryWrapper<>();
             queryWrapper.eq(SecondTradeRecord::getTradeStatus, 1);
+            queryWrapper.eq(SecondTradeRecord::getTransactionTime, now);
             List<SecondTradeRecord> tradeRecordList = secondTradeRecordMapper.selectList(queryWrapper);
-            List<Integer> tradeIdList = new ArrayList<>();
-            for (SecondTradeRecord tradeRecord : tradeRecordList) {
-                LocalDateTime tenMinutesAgo = tradeRecord.getTransactionTime().toInstant().atZone(ZoneId.systemDefault()).toLocalDateTime().withSecond(0).withNano(0);
-                if (now.isEqual(tenMinutesAgo)) {
-                    tradeIdList.add(tradeRecord.getId());
-                }
-            }
+            List<Integer> tradeIdList = tradeRecordList.stream().map(SecondTradeRecord::getId).collect(Collectors.toList());
             if (CollectionUtil.isNotEmpty(tradeIdList)) {
                 LambdaUpdateWrapper<SecondTradeRecord> updateWrapper = new LambdaUpdateWrapper<>();
                 updateWrapper.in(SecondTradeRecord::getId, tradeIdList)
                         .set(SecondTradeRecord::getTradeStatus, 6);
                 secondTradeRecordMapper.update(null, updateWrapper);
+
+                for (Integer id : tradeIdList) {
+                    SecondTradeOperation operation = new SecondTradeOperation();
+                    operation.setTradeId(id);
+                    operation.setUserId(0);
+                    operation.setType(7);
+                    secondTradeOperationMapper.insert(operation);
+                }
             }
         } catch (Exception e) {
             log.error("SecondGoodsTradeXxlJob.secondTradeTimeoutCancel Error Mgs={}", e.getMessage());