mitao
2024-07-29 fc8b51f40e71aa09bb49f407c1e9f68ac94ceb58
ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/service/async/AuctionAsyncMethodService.java
@@ -13,6 +13,7 @@
import java.util.concurrent.TimeUnit;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@@ -28,9 +29,10 @@
    private final RedisService redisService;
    private final SysUserClient sysUserClient;
    // @Async
    @Async
    @Transactional(rollbackFor = Exception.class)
    public void auctionGoodsScheduleTask(List<AuctionGoods> auctionGoodsList) {
        log.info("开始执行定时任务");
        for (AuctionGoods auctionGoods : auctionGoodsList) {
            LocalDateTime startTime = auctionGoods.getStartTime();
            LocalDateTime endTime = auctionGoods.getEndTime();
@@ -52,7 +54,7 @@
    }
    private boolean isWithinOneHour(LocalDateTime startTime) {
        LocalDateTime checkTime = LocalDateTime.now().plusHours(1);
        LocalDateTime checkTime = LocalDateTime.now().plusMinutes(61);
        return checkTime.isAfter(startTime);
    }
@@ -92,9 +94,6 @@
    private void handleStartDelayTask(Long id, DelayTaskEnum delayTaskEnum, LocalDateTime startTime,
            Long timeout) {
        String startTaskKey = delayTaskEnum.getCode() + "-" + id;
        redisService.setCacheObject(
                startTaskKey,
                startTime, timeout, TimeUnit.SECONDS);
        // 查询延时任务
        DelayTask startDelayTask = sysUserClient.getDelayTask(
                startTaskKey, SecurityConstants.INNER).getData();
@@ -108,10 +107,8 @@
            sysUserClient.addDelayTask(startDelayTask, SecurityConstants.INNER);
        } else {
            if (!startDelayTask.getExecuteTime().isEqual(startTime)) {
                sysUserClient.deleteDelayTask(
                        startTaskKey, SecurityConstants.INNER);
                redisService.deleteObject(
                        startTaskKey);
                sysUserClient.deleteDelayTask(startTaskKey, SecurityConstants.INNER);
                redisService.deleteObject(startTaskKey);
                startDelayTask.setDelFlag(0);
                startDelayTask.setCreateTime(LocalDateTime.now());
                startDelayTask.setExecuteTime(LocalDateTime.now().plusSeconds(timeout));
@@ -120,6 +117,7 @@
                sysUserClient.addDelayTask(startDelayTask, SecurityConstants.INNER);
            }
        }
        redisService.setCacheObject(startTaskKey, startTime, timeout, TimeUnit.SECONDS);
        log.info(">>>>>>>>>>>>>>>>>>>>延时任务{}执行了<<<<<<<<<<<<<<<<<<<<", startTaskKey);
    }
}