diff --git a/dating-agency-mall-server/src/main/java/com/qniao/dam/application/task/TaskTemplateTask.java b/dating-agency-mall-server/src/main/java/com/qniao/dam/application/task/TaskTemplateTask.java new file mode 100644 index 0000000..337b57c --- /dev/null +++ b/dating-agency-mall-server/src/main/java/com/qniao/dam/application/task/TaskTemplateTask.java @@ -0,0 +1,57 @@ +package com.qniao.dam.application.task; + +import cn.hutool.core.collection.CollUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.qniao.dam.domain.aggregate.tasktemplate.TaskTemplateAggregate; +import com.qniao.dam.domain.aggregate.tasktemplate.entity.TaskTemplate; +import com.qniao.dam.domian.aggregate.tasktemplate.constant.TaskTemplateStatus; +import com.qniao.dam.infrastructure.persistent.dao.tasktemplate.TaskTemplateDao; +import lombok.extern.slf4j.Slf4j; +import org.springframework.scheduling.annotation.Scheduled; +import org.springframework.stereotype.Component; + +import javax.annotation.Resource; +import java.time.LocalDateTime; +import java.util.List; + +@Component +@Slf4j +public class TaskTemplateTask { + + @Resource + private TaskTemplateDao taskTemplateDao; + @Resource + private TaskTemplateAggregate taskTemplateAggregate; + + @Scheduled(cron = "1 0 * * * *") + public void handle() { + try { + log.error("任务模板任务开始"); + LocalDateTime now = LocalDateTime.now(); + //准备开始的任务 + List notEffectiveList = taskTemplateDao.selectList(new LambdaQueryWrapper() + .eq(TaskTemplate::getStatus, TaskTemplateStatus.NOT_EFFECTIVE) + .le(TaskTemplate::getStartTime, now) + .ge(TaskTemplate::getEndTime, now)); + if (CollUtil.isNotEmpty(notEffectiveList)) { + notEffectiveList.forEach(taskTemplate -> { + taskTemplate.setStatus(TaskTemplateStatus.EFFECTIVE); + taskTemplateAggregate.edit(taskTemplate); + }); + } + //准备结束的任务 + List effectiveList = taskTemplateDao.selectList(new LambdaQueryWrapper() + .eq(TaskTemplate::getStatus, TaskTemplateStatus.EFFECTIVE) + .le(TaskTemplate::getEndTime, now)); + if (CollUtil.isNotEmpty(effectiveList)) { + notEffectiveList.forEach(taskTemplate -> { + taskTemplate.setStatus(TaskTemplateStatus.FINISHED); + taskTemplateAggregate.edit(taskTemplate); + }); + } + log.error("任务模板任务结束"); + } catch (Exception e) { + log.error("任务模板任务异常", e); + } + } +}