diff --git a/xservice-schedule-starter/src/main/java/com/xiang/xservice/schedule/TaskGroupEnum.java b/xservice-schedule-starter/src/main/java/com/xiang/xservice/schedule/TaskGroupEnum.java new file mode 100644 index 0000000..417f798 --- /dev/null +++ b/xservice-schedule-starter/src/main/java/com/xiang/xservice/schedule/TaskGroupEnum.java @@ -0,0 +1,17 @@ +package com.xiang.xservice.schedule; + +import lombok.Getter; + +@Getter +public enum TaskGroupEnum { + SERVICE_FWD_SCHEDULE("xs-fwd", "芬玩岛定时任务"); + + + private final String code; + private final String desc; + + TaskGroupEnum(String code, String desc) { + this.code = code; + this.desc = desc; + } +} diff --git a/xservice-schedule-starter/src/main/java/com/xiang/xservice/schedule/config/DynamicSchedulerAutoConfiguration.java b/xservice-schedule-starter/src/main/java/com/xiang/xservice/schedule/config/DynamicSchedulerAutoConfiguration.java index 55b7701..e840afa 100644 --- a/xservice-schedule-starter/src/main/java/com/xiang/xservice/schedule/config/DynamicSchedulerAutoConfiguration.java +++ b/xservice-schedule-starter/src/main/java/com/xiang/xservice/schedule/config/DynamicSchedulerAutoConfiguration.java @@ -1,10 +1,13 @@ package com.xiang.xservice.schedule.config; import com.xiang.xservice.schedule.service.IDynamicTaskSchedulerService; +import org.mybatis.spring.annotation.MapperScan; import org.springframework.boot.autoconfigure.AutoConfiguration; import org.springframework.context.annotation.Import; @AutoConfiguration +@MapperScan("com.xiang.xservice.schedule.mapper") @Import({DynamicTaskSchedulerConfig.class, IDynamicTaskSchedulerService.class, TaskRegistry.class}) public class DynamicSchedulerAutoConfiguration { + } diff --git a/xservice-schedule-starter/src/main/java/com/xiang/xservice/schedule/entity/ScheduledTaskEntity.java b/xservice-schedule-starter/src/main/java/com/xiang/xservice/schedule/entity/ScheduledTaskEntity.java new file mode 100644 index 0000000..552a6f0 --- /dev/null +++ b/xservice-schedule-starter/src/main/java/com/xiang/xservice/schedule/entity/ScheduledTaskEntity.java @@ -0,0 +1,21 @@ +package com.xiang.xservice.schedule.entity; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.time.LocalDateTime; + +@Data +@AllArgsConstructor +@NoArgsConstructor +public class ScheduledTaskEntity { + private Long id; + private String taskName; + private String taskGroup; + private LocalDateTime runTime; + private Integer status; + private String parameters; + private LocalDateTime createdTime; + private LocalDateTime updatedTime; +} diff --git a/xservice-schedule-starter/src/main/java/com/xiang/xservice/schedule/mapper/ScheduledTaskMapper.java b/xservice-schedule-starter/src/main/java/com/xiang/xservice/schedule/mapper/ScheduledTaskMapper.java new file mode 100644 index 0000000..08806f6 --- /dev/null +++ b/xservice-schedule-starter/src/main/java/com/xiang/xservice/schedule/mapper/ScheduledTaskMapper.java @@ -0,0 +1,17 @@ +package com.xiang.xservice.schedule.mapper; + +import com.xiang.xservice.schedule.entity.ScheduledTaskEntity; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.springframework.stereotype.Repository; + +@Mapper +@Repository +public interface ScheduledTaskMapper { + + int save(ScheduledTaskEntity entity); + + int update(ScheduledTaskEntity entity); + + ScheduledTaskEntity getTask(@Param("id") String taskId); +} diff --git a/xservice-schedule-starter/src/main/java/com/xiang/xservice/schedule/service/DynamicTaskSchedulerServiceImpl.java b/xservice-schedule-starter/src/main/java/com/xiang/xservice/schedule/service/DynamicTaskSchedulerServiceImpl.java index fbd67bc..44244b4 100644 --- a/xservice-schedule-starter/src/main/java/com/xiang/xservice/schedule/service/DynamicTaskSchedulerServiceImpl.java +++ b/xservice-schedule-starter/src/main/java/com/xiang/xservice/schedule/service/DynamicTaskSchedulerServiceImpl.java @@ -1,6 +1,8 @@ package com.xiang.xservice.schedule.service; +import com.xiang.xservice.schedule.entity.ScheduledTaskEntity; import com.xiang.xservice.schedule.entity.TaskConfig; +import com.xiang.xservice.schedule.mapper.ScheduledTaskMapper; import lombok.RequiredArgsConstructor; import org.springframework.scheduling.concurrent.ThreadPoolTaskScheduler; import org.springframework.stereotype.Service; @@ -17,6 +19,7 @@ import java.util.concurrent.ScheduledFuture; public class DynamicTaskSchedulerServiceImpl implements IDynamicTaskSchedulerService{ private final ThreadPoolTaskScheduler taskScheduler; + private final ScheduledTaskMapper scheduledTaskMapper; private final Map> taskMap = new ConcurrentHashMap<>(); @@ -41,6 +44,7 @@ public class DynamicTaskSchedulerServiceImpl implements IDynamicTaskSchedulerSer ScheduledFuture future = taskMap.get(taskId); if (future != null) { future.cancel(true); + taskMap.remove(taskId); } } @@ -49,4 +53,19 @@ public class DynamicTaskSchedulerServiceImpl implements IDynamicTaskSchedulerSer public Boolean contains(String taskId) { return taskMap.containsKey(taskId); } + + @Override + public Boolean saveTask(ScheduledTaskEntity entity) { + return scheduledTaskMapper.save(entity) > 0; + } + + @Override + public Boolean updateTask(ScheduledTaskEntity entity) { + return scheduledTaskMapper.update(entity) > 0; + } + + @Override + public ScheduledTaskEntity getTask(String taskId) { + return scheduledTaskMapper.getTask(taskId); + } } diff --git a/xservice-schedule-starter/src/main/java/com/xiang/xservice/schedule/service/IDynamicTaskSchedulerService.java b/xservice-schedule-starter/src/main/java/com/xiang/xservice/schedule/service/IDynamicTaskSchedulerService.java index 5372e9f..6aa776e 100644 --- a/xservice-schedule-starter/src/main/java/com/xiang/xservice/schedule/service/IDynamicTaskSchedulerService.java +++ b/xservice-schedule-starter/src/main/java/com/xiang/xservice/schedule/service/IDynamicTaskSchedulerService.java @@ -1,5 +1,6 @@ package com.xiang.xservice.schedule.service; +import com.xiang.xservice.schedule.entity.ScheduledTaskEntity; import com.xiang.xservice.schedule.entity.TaskConfig; import java.time.LocalDateTime; @@ -8,4 +9,7 @@ public interface IDynamicTaskSchedulerService { void schedule(TaskConfig config, Runnable task); void cancel(String taskId); Boolean contains(String taskId); + Boolean saveTask(ScheduledTaskEntity entity); + Boolean updateTask(ScheduledTaskEntity entity); + ScheduledTaskEntity getTask(String taskId); } diff --git a/xservice-schedule-starter/src/main/resources/META-INF/spring.factories b/xservice-schedule-starter/src/main/resources/META-INF/spring.factories new file mode 100644 index 0000000..0eff330 --- /dev/null +++ b/xservice-schedule-starter/src/main/resources/META-INF/spring.factories @@ -0,0 +1,2 @@ +org.springframework.boot.autoconfigure.EnableAutoConfiguration=\ +com.xiang.xservice.schedule.config.DynamicSchedulerAutoConfiguration \ No newline at end of file diff --git a/xservice-schedule-starter/src/main/resources/mapper/ScheduledTaskMapper.xml b/xservice-schedule-starter/src/main/resources/mapper/ScheduledTaskMapper.xml new file mode 100644 index 0000000..bdb8df8 --- /dev/null +++ b/xservice-schedule-starter/src/main/resources/mapper/ScheduledTaskMapper.xml @@ -0,0 +1,45 @@ + + + + + + + + + + + + + + + + + id, task_name, task_group, run_time, status, parameters, create_time, update_time + + + + + INSERT INTO script_schedule_task (task_name, task_group, run_time, status, parameters, create_time, update_time) + VALUES (#{taskName}, #{taskGroup}, #{runTime}, #{status}, #{parameters}, #{createdTime}, #{updatedTime}) + + + + + UPDATE script_schedule_task + SET task_name = #{taskName}, + task_group = #{taskGroup}, + run_time = #{runTime}, + status = #{status}, + parameters = #{parameters}, + create_time = #{createdTime}, + update_time = #{updatedTime} + WHERE id = #{id} + + + + + \ No newline at end of file