From 63aca636ba077f42bfc48e2a65c02770df69bedd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=90=AF=E8=88=AA?= Date: Thu, 7 Mar 2024 10:23:26 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9ETask?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/qihang/tao/domain/SysTask.java | 176 ++++++++++++++++++ .../com/qihang/tao/mapper/SysTaskMapper.java | 18 ++ .../qihang/tao/service/SysTaskService.java | 13 ++ .../tao/service/impl/SysTaskServiceImpl.java | 22 +++ .../com/qihang/tao/task/CronTaskLoader.java | 44 +++++ .../java/com/qihang/tao/task/OrderTask.java | 25 +++ .../main/resources/mapper/SysTaskMapper.xml | 20 ++ 7 files changed, 318 insertions(+) create mode 100644 tao-api/src/main/java/com/qihang/tao/domain/SysTask.java create mode 100644 tao-api/src/main/java/com/qihang/tao/mapper/SysTaskMapper.java create mode 100644 tao-api/src/main/java/com/qihang/tao/service/SysTaskService.java create mode 100644 tao-api/src/main/java/com/qihang/tao/service/impl/SysTaskServiceImpl.java create mode 100644 tao-api/src/main/java/com/qihang/tao/task/CronTaskLoader.java create mode 100644 tao-api/src/main/java/com/qihang/tao/task/OrderTask.java create mode 100644 tao-api/src/main/resources/mapper/SysTaskMapper.xml diff --git a/tao-api/src/main/java/com/qihang/tao/domain/SysTask.java b/tao-api/src/main/java/com/qihang/tao/domain/SysTask.java new file mode 100644 index 00000000..a0044621 --- /dev/null +++ b/tao-api/src/main/java/com/qihang/tao/domain/SysTask.java @@ -0,0 +1,176 @@ +package com.qihang.tao.domain; + +import java.io.Serializable; +import java.util.Date; + +/** + * + * @TableName sys_task + */ +public class SysTask implements Serializable { + /** + * + */ + private Integer id; + + /** + * + */ + private String taskName; + + /** + * + */ + private String cron; + + /** + * + */ + private String method; + + /** + * + */ + private String remark; + + /** + * + */ + private Date createTime; + + private static final long serialVersionUID = 1L; + + /** + * + */ + public Integer getId() { + return id; + } + + /** + * + */ + public void setId(Integer id) { + this.id = id; + } + + /** + * + */ + public String getTaskName() { + return taskName; + } + + /** + * + */ + public void setTaskName(String taskName) { + this.taskName = taskName; + } + + /** + * + */ + public String getCron() { + return cron; + } + + /** + * + */ + public void setCron(String cron) { + this.cron = cron; + } + + /** + * + */ + public String getMethod() { + return method; + } + + /** + * + */ + public void setMethod(String method) { + this.method = method; + } + + /** + * + */ + public String getRemark() { + return remark; + } + + /** + * + */ + public void setRemark(String remark) { + this.remark = remark; + } + + /** + * + */ + public Date getCreateTime() { + return createTime; + } + + /** + * + */ + public void setCreateTime(Date createTime) { + this.createTime = createTime; + } + + @Override + public boolean equals(Object that) { + if (this == that) { + return true; + } + if (that == null) { + return false; + } + if (getClass() != that.getClass()) { + return false; + } + SysTask other = (SysTask) that; + return (this.getId() == null ? other.getId() == null : this.getId().equals(other.getId())) + && (this.getTaskName() == null ? other.getTaskName() == null : this.getTaskName().equals(other.getTaskName())) + && (this.getCron() == null ? other.getCron() == null : this.getCron().equals(other.getCron())) + && (this.getMethod() == null ? other.getMethod() == null : this.getMethod().equals(other.getMethod())) + && (this.getRemark() == null ? other.getRemark() == null : this.getRemark().equals(other.getRemark())) + && (this.getCreateTime() == null ? other.getCreateTime() == null : this.getCreateTime().equals(other.getCreateTime())); + } + + @Override + public int hashCode() { + final int prime = 31; + int result = 1; + result = prime * result + ((getId() == null) ? 0 : getId().hashCode()); + result = prime * result + ((getTaskName() == null) ? 0 : getTaskName().hashCode()); + result = prime * result + ((getCron() == null) ? 0 : getCron().hashCode()); + result = prime * result + ((getMethod() == null) ? 0 : getMethod().hashCode()); + result = prime * result + ((getRemark() == null) ? 0 : getRemark().hashCode()); + result = prime * result + ((getCreateTime() == null) ? 0 : getCreateTime().hashCode()); + return result; + } + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append(getClass().getSimpleName()); + sb.append(" ["); + sb.append("Hash = ").append(hashCode()); + sb.append(", id=").append(id); + sb.append(", taskName=").append(taskName); + sb.append(", cron=").append(cron); + sb.append(", method=").append(method); + sb.append(", remark=").append(remark); + sb.append(", createTime=").append(createTime); + sb.append(", serialVersionUID=").append(serialVersionUID); + sb.append("]"); + return sb.toString(); + } +} \ No newline at end of file diff --git a/tao-api/src/main/java/com/qihang/tao/mapper/SysTaskMapper.java b/tao-api/src/main/java/com/qihang/tao/mapper/SysTaskMapper.java new file mode 100644 index 00000000..5f9f82db --- /dev/null +++ b/tao-api/src/main/java/com/qihang/tao/mapper/SysTaskMapper.java @@ -0,0 +1,18 @@ +package com.qihang.tao.mapper; + +import com.qihang.tao.domain.SysTask; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** +* @author TW +* @description 针对表【sys_task】的数据库操作Mapper +* @createDate 2024-03-07 10:22:03 +* @Entity com.qihang.tao.domain.SysTask +*/ +public interface SysTaskMapper extends BaseMapper { + +} + + + + diff --git a/tao-api/src/main/java/com/qihang/tao/service/SysTaskService.java b/tao-api/src/main/java/com/qihang/tao/service/SysTaskService.java new file mode 100644 index 00000000..f3615ae4 --- /dev/null +++ b/tao-api/src/main/java/com/qihang/tao/service/SysTaskService.java @@ -0,0 +1,13 @@ +package com.qihang.tao.service; + +import com.qihang.tao.domain.SysTask; +import com.baomidou.mybatisplus.extension.service.IService; + +/** +* @author TW +* @description 针对表【sys_task】的数据库操作Service +* @createDate 2024-03-07 10:22:03 +*/ +public interface SysTaskService extends IService { + +} diff --git a/tao-api/src/main/java/com/qihang/tao/service/impl/SysTaskServiceImpl.java b/tao-api/src/main/java/com/qihang/tao/service/impl/SysTaskServiceImpl.java new file mode 100644 index 00000000..f6808551 --- /dev/null +++ b/tao-api/src/main/java/com/qihang/tao/service/impl/SysTaskServiceImpl.java @@ -0,0 +1,22 @@ +package com.qihang.tao.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.qihang.tao.domain.SysTask; +import com.qihang.tao.service.SysTaskService; +import com.qihang.tao.mapper.SysTaskMapper; +import org.springframework.stereotype.Service; + +/** +* @author TW +* @description 针对表【sys_task】的数据库操作Service实现 +* @createDate 2024-03-07 10:22:03 +*/ +@Service +public class SysTaskServiceImpl extends ServiceImpl + implements SysTaskService{ + +} + + + + diff --git a/tao-api/src/main/java/com/qihang/tao/task/CronTaskLoader.java b/tao-api/src/main/java/com/qihang/tao/task/CronTaskLoader.java new file mode 100644 index 00000000..d8c54d68 --- /dev/null +++ b/tao-api/src/main/java/com/qihang/tao/task/CronTaskLoader.java @@ -0,0 +1,44 @@ +package com.qihang.tao.task; + +import com.qihang.common.task.SchedulingConfiguration; +import org.springframework.boot.ApplicationArguments; +import org.springframework.boot.ApplicationRunner; +import org.springframework.scheduling.annotation.Scheduled; +import org.springframework.stereotype.Component; + +import java.util.concurrent.atomic.AtomicBoolean; + +@Component +public class CronTaskLoader implements ApplicationRunner { +// private static final Logger log = LoggerFactory.getLogger(CronTaskLoader.class); + private final SchedulingConfiguration schedulingConfiguration; + private final AtomicBoolean appStarted = new AtomicBoolean(false); + private final AtomicBoolean initializing = new AtomicBoolean(false); + + public CronTaskLoader(SchedulingConfiguration schedulingConfiguration) { + this.schedulingConfiguration = schedulingConfiguration; + } + + /** + * 定时任务配置刷新(1分钟刷新一次) + */ + @Scheduled(fixedDelay = 600000) + public void cronTaskConfigRefresh() { + if (appStarted.get() && initializing.compareAndSet(false, true)) { +// log.info("定时调度任务动态加载开始>>>>>>"); + try { + schedulingConfiguration.refresh(); + } finally { + initializing.set(false); + } +// log.info("定时调度任务动态加载结束<<<<<<"); + } + } + + @Override + public void run(ApplicationArguments args) { + if (appStarted.compareAndSet(false, true)) { + cronTaskConfigRefresh(); + } + } +} \ No newline at end of file diff --git a/tao-api/src/main/java/com/qihang/tao/task/OrderTask.java b/tao-api/src/main/java/com/qihang/tao/task/OrderTask.java new file mode 100644 index 00000000..a3e24097 --- /dev/null +++ b/tao-api/src/main/java/com/qihang/tao/task/OrderTask.java @@ -0,0 +1,25 @@ +package com.qihang.tao.task; + +import com.qihang.common.task.IPollableService; +import com.qihang.tao.domain.SysTask; +import com.qihang.tao.service.SysTaskService; +import lombok.AllArgsConstructor; +import org.springframework.stereotype.Service; + +@AllArgsConstructor +@Service +public class OrderTask implements IPollableService { + + private final SysTaskService taskService; + @Override + public void poll() { + System.out.printf("更新TAO订单%s","echo"); + } + + @Override + public String getCronExpression() { + SysTask task = taskService.getById(1); +// return "0/1 * * * * ?"; + return task.getCron(); + } +} \ No newline at end of file diff --git a/tao-api/src/main/resources/mapper/SysTaskMapper.xml b/tao-api/src/main/resources/mapper/SysTaskMapper.xml new file mode 100644 index 00000000..a619eb37 --- /dev/null +++ b/tao-api/src/main/resources/mapper/SysTaskMapper.xml @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + id,task_name,cron, + method,remark,create_time + +