mitao
2024-05-27 95163bc7f6714edcb14dd4369717b0a9d1ae15da
ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/async/AsyncMethodService.java
@@ -1,5 +1,6 @@
package com.ruoyi.goods.service.async;
import com.ruoyi.common.core.constant.SecurityConstants;
import com.ruoyi.common.core.utils.StringUtils;
import com.ruoyi.common.redis.service.RedisService;
import com.ruoyi.goods.domain.GoodsGroupPurchase;
@@ -80,14 +81,15 @@
    private void handleEndDelayTask(Long id, DelayTaskEnum delayTaskEnum, LocalDateTime endTime) {
        String endTaskKey = delayTaskEnum.getCode() + "-" + id;
        DelayTask endDelayTask = sysUserClient.getDelayTask(
                endTaskKey).getData();
                endTaskKey, SecurityConstants.INNER).getData();
        // 如果延时任务为空,创建延时任务控制活动定时开始和结束
        Duration duration = Duration.between(LocalDateTime.now(), endTime);
        if (StringUtils.isNull(endDelayTask)) {
            createEndDelayTask(endTime, endTaskKey, duration);
        } else {
            if (!endDelayTask.getExecuteTime().isEqual(endTime)) {
                sysUserClient.deleteDelayTask(endTaskKey);
                sysUserClient.deleteDelayTask(endTaskKey,
                        SecurityConstants.INNER);
                redisService.deleteObject(endTaskKey);
                createEndDelayTask(endTime, endTaskKey, duration);
            }
@@ -106,7 +108,7 @@
        endDelayTask.setCreateTime(LocalDateTime.now());
        endDelayTask.setExecuteTime(endTime);
        endDelayTask.setRedisKey(seckillEndTaskKey);
        sysUserClient.addDelayTask(endDelayTask);
        sysUserClient.addDelayTask(endDelayTask, SecurityConstants.INNER);
    }
    private void handleStartDelayTask(Long id, DelayTaskEnum delayTaskEnum, LocalDateTime startTime,
@@ -117,7 +119,7 @@
                startTime, timeout, TimeUnit.SECONDS);
        //查询延时任务
        DelayTask startDelayTask = sysUserClient.getDelayTask(
                startTaskKey).getData();
                startTaskKey, SecurityConstants.INNER).getData();
        if (StringUtils.isNull(startDelayTask)) {
            startDelayTask = new DelayTask();
            startDelayTask.setDelFlag(0);
@@ -125,11 +127,11 @@
            startDelayTask.setExecuteTime(LocalDateTime.now().plusSeconds(timeout));
            startDelayTask.setRedisKey(
                    startTaskKey);
            sysUserClient.addDelayTask(startDelayTask);
            sysUserClient.addDelayTask(startDelayTask, SecurityConstants.INNER);
        } else {
            if (!startDelayTask.getExecuteTime().isEqual(startTime)) {
                sysUserClient.deleteDelayTask(
                        startTaskKey);
                        startTaskKey, SecurityConstants.INNER);
                redisService.deleteObject(
                        startTaskKey);
                startDelayTask.setDelFlag(0);
@@ -137,7 +139,7 @@
                startDelayTask.setExecuteTime(LocalDateTime.now().plusSeconds(timeout));
                startDelayTask.setRedisKey(
                        startTaskKey);
                sysUserClient.addDelayTask(startDelayTask);
                sysUserClient.addDelayTask(startDelayTask, SecurityConstants.INNER);
            }
        }
        log.info(">>>>>>>>>>>>>>>>>>>>延时任务{}执行了<<<<<<<<<<<<<<<<<<<<", startTaskKey);