diff --git a/ReadMe.md b/ReadMe.md index c00d6bb..f2534e0 100644 --- a/ReadMe.md +++ b/ReadMe.md @@ -118,3 +118,91 @@ docker run -d \ -e "MINIO_ROOT_PASSWORD=02120212" \ minio/minio server /data --console-address ":9090" ``` + +# Quartz 方法 + +## TriggerBuilder + +`TriggerBuilder` 是一个用于构建 `Trigger` 实例的类。它提供了一系列方法来设置触发器的各种属性。以下是一些常用的方法: + +1. `withIdentity(String name, String group)` 或 `withIdentity(TriggerKey triggerKey)`:设置触发器的名称和组名。 + +2. `startAt(Date startTime)`:设置触发器首次触发的时间。 + +3. `endAt(Date endTime)`:设置触发器最后一次触发的时间。 + +4. `withSchedule(ScheduleBuilder scheduleBuilder)`:设置触发器的调度计划,可以是简单重复、按日历重复等。 + +5. `forJob(JobKey jobKey)` 或 `forJob(String jobName, String jobGroup)`:指定触发器关联的作业(Job)。 + +6. `usingJobData(String key, String value)`:为触发器添加自定义数据。 + +7. `modifiedByCalendar(String calName)`:指定一个日历,用于修改触发器的触发时间。 + +8. `build()`:构建并返回最终的 `Trigger` 实例。 + +9. `withDescription(String description)`:为触发器设置描述信息。 + +10. `usingJobData(JobDataMap jobData)`:使用 `JobDataMap` 为触发器设置多个作业数据。 + +11. `withPriority(int priority)`:设置触发器的优先级。 + +12. `replaceTriggerKey(TriggerKey oldKey, TriggerKey newKey)`:替换触发器的键值。 + +## JobBuilder + +`JobBuilder` 类用于构建 `JobDetail` 实例,它定义了要执行的作业(Job)的属性。以下是一些常用的方法: + +1. `withIdentity(String name, String group)` 或 `withIdentity(JobKey jobKey)`:设置作业的名称和组名。 + +2. `storeDurably()`:当作业没有触发器时,仍然允许作业被存储。这对于持久作业(即不被触发器触发,但可以手动调度的作业)很有用。 + +3. `requestRecovery()`:指示Quartz在作业执行失败或调度器重启时尝试恢复作业。 + +4. `usingJobData(JobDataMap jobData)`:为作业添加自定义数据。 + +5. `usingJobData(String key, String value)`:为作业添加单个自定义数据。 + +6. `ofType(Class extends Job> jobClass)`:指定作业的类型(实现 `Job` 接口的类)。 + +7. `build()`:构建并返回最终的 `JobDetail` 实例。 + +8. `withDescription(String description)`:为作业设置描述信息。 + +9. `usingJobData(JobDataMap jobData, boolean merge)`:添加自定义数据,并指定是否与现有的 `JobDataMap` 合并。 + +10. `build()`:构建并返回最终的 `JobDetail` 实例。 + +# 展望未来 + +## 定时任务加入 + +数据备份:根据数据的重要性和变化频率,定时备份数据库或文件系统。例如,每晚备份数据库,或者在数据变更达到一定量后触发备份。 + +系统维护:包括软件更新、系统清理、磁盘碎片整理等,这些任务可能在系统负载较低的时段执行。 + +监控报告:定时生成系统或网络的使用报告、性能报告等,用于分析和审计。 + +内容更新:对于网站或应用,定时更新内容,如新闻网站定时更新新闻,天气应用定时更新天气信息。 + +缓存清理:定期清理缓存文件,以释放存储空间和提高系统性能。 + +日志轮转:自动归档和压缩旧的日志文件,以便于管理和分析。 + +邮件发送:定时发送邮件,如账单、通知、营销邮件等。 + +资源调度:在云计算环境中,根据需求动态调整资源分配,如自动扩展或缩减服务器实例。 + +数据同步:在多个系统或数据库之间定时同步数据,保持数据一致性。 + +安全扫描:定期执行安全扫描,检测系统漏洞或异常行为。 + +任务调度:在工作流管理系统中,根据预设的规则和条件动态触发任务。 + +库存管理:在电子商务或仓库管理中,定时检查库存水平,自动触发补货或调整价格。 + +广告轮播:在广告系统中,定时更换展示的广告内容。 + +用户行为分析:定时收集和分析用户行为数据,用于改进产品或服务。 + +健康检查:对关键系统组件进行定时健康检查,确保系统稳定运行。 \ No newline at end of file diff --git a/common/common-generator/src/main/java/cn/bunny/common/generator/generator/AdminCodeGenerator.java b/common/common-generator/src/main/java/cn/bunny/common/generator/generator/AdminCodeGenerator.java index f59aa10..b642a72 100644 --- a/common/common-generator/src/main/java/cn/bunny/common/generator/generator/AdminCodeGenerator.java +++ b/common/common-generator/src/main/java/cn/bunny/common/generator/generator/AdminCodeGenerator.java @@ -14,13 +14,13 @@ public class AdminCodeGenerator { // 作者名称 public static final String author = "Bunny"; // 公共路径 - // public static final String outputDir = "D:\\MyFolder\\Bunny\\BunnyBBS\\BunnyBBS-server-admin\\service"; - public static final String outputDir = "D:\\Project\\web\\PC\\auth\\auth-server-java\\service"; + public static final String outputDir = "D:\\MyFolder\\auth-admin\\auth-server-java\\service"; + // public static final String outputDir = "D:\\Project\\web\\PC\\auth\\auth-server-java\\service"; // 实体类名称 public static final String entity = "Bunny"; public static void main(String[] args) { - Generation("sys_schedulers_group"); + Generation("quartz_execute_log"); } /** @@ -45,7 +45,7 @@ public class AdminCodeGenerator { .controller("controller")// 控制层包名 .mapper("mapper")// mapper层包名 .service("service")// service层包名 - .serviceImpl("service·impl")// service实现类包名 + .serviceImpl("service.impl")// service实现类包名 // 自定义mapper.xml文件输出目录 .pathInfo(Collections.singletonMap(OutputFile.xml, outputDir + "/src/main/resources/mapper"))) .strategyConfig(builder -> { diff --git a/common/common-generator/src/main/java/cn/bunny/common/generator/generator/WebGeneratorCode.java b/common/common-generator/src/main/java/cn/bunny/common/generator/generator/WebGeneratorCode.java index f438bfd..c768d86 100644 --- a/common/common-generator/src/main/java/cn/bunny/common/generator/generator/WebGeneratorCode.java +++ b/common/common-generator/src/main/java/cn/bunny/common/generator/generator/WebGeneratorCode.java @@ -3,11 +3,11 @@ package cn.bunny.common.generator.generator; import cn.bunny.common.generator.entity.BaseField; import cn.bunny.common.generator.entity.BaseResultMap; import cn.bunny.common.generator.utils.GeneratorCodeUtils; -import cn.bunny.dao.dto.quartz.SchedulersGroupAddDto; -import cn.bunny.dao.dto.quartz.SchedulersGroupDto; -import cn.bunny.dao.dto.quartz.SchedulersGroupUpdateDto; -import cn.bunny.dao.entity.quartz.SchedulersGroup; -import cn.bunny.dao.vo.quartz.SchedulersGroupVo; +import cn.bunny.dao.dto.quartz.executeLog.QuartzExecuteLogAddDto; +import cn.bunny.dao.dto.quartz.executeLog.QuartzExecuteLogDto; +import cn.bunny.dao.dto.quartz.executeLog.QuartzExecuteLogUpdateDto; +import cn.bunny.dao.entity.quartz.QuartzExecuteLog; +import cn.bunny.dao.vo.quartz.QuartzExecuteLogVo; import com.baomidou.mybatisplus.annotation.TableName; import com.google.common.base.CaseFormat; import io.swagger.v3.oas.annotations.media.Schema; @@ -36,26 +36,26 @@ import java.util.stream.Stream; @Service public class WebGeneratorCode { // 公共路径 - public static String commonPath = "D:\\Project\\web\\PC\\auth\\auth-web\\src"; + public static String commonPath = "D:\\MyFolder\\auth-admin\\auth-web\\src"; // 生成API请求路径 public static String apiPath = commonPath + "\\api\\v1\\"; // 生成vue路径 - public static String vuePath = commonPath + "\\views\\monitor\\"; + public static String vuePath = commonPath + "\\views\\scheduler\\"; // 生成仓库路径 - public static String storePath = commonPath + "\\store\\monitor\\"; + public static String storePath = commonPath + "\\store\\scheduler\\"; // 后端controller - public static String controllerPath = "D:\\Project\\web\\PC\\auth\\auth-server-java\\service\\src\\main\\java\\cn\\bunny\\services\\controller\\"; - public static String servicePath = "D:\\Project\\web\\PC\\auth\\auth-server-java\\service\\src\\main\\java\\cn\\bunny\\services\\service\\"; - public static String serviceImplPath = "D:\\Project\\web\\PC\\auth\\auth-server-java\\service\\src\\main\\java\\cn\\bunny\\services\\service\\impl\\"; - public static String mapperPath = "D:\\Project\\web\\PC\\auth\\auth-server-java\\service\\src\\main\\java\\cn\\bunny\\services\\mapper\\"; - public static String resourceMapperPath = "D:\\Project\\web\\PC\\auth\\auth-server-java\\service\\src\\main\\resources\\mapper\\"; + public static String controllerPath = "D:\\MyFolder\\auth-admin\\auth-server-java\\service\\src\\main\\java\\cn\\bunny\\services\\controller\\"; + public static String servicePath = "D:\\MyFolder\\auth-admin\\auth-server-java\\service\\src\\main\\java\\cn\\bunny\\services\\service\\"; + public static String serviceImplPath = "D:\\MyFolder\\auth-admin\\auth-server-java\\service\\src\\main\\java\\cn\\bunny\\services\\service\\impl\\"; + public static String mapperPath = "D:\\MyFolder\\auth-admin\\auth-server-java\\service\\src\\main\\java\\cn\\bunny\\services\\mapper\\"; + public static String resourceMapperPath = "D:\\MyFolder\\auth-admin\\auth-server-java\\service\\src\\main\\resources\\mapper\\"; public static void main(String[] args) throws Exception { - Class> originalClass = SchedulersGroup.class; - Class> dtoClass = SchedulersGroupDto.class; - Class> addDtoClass = SchedulersGroupAddDto.class; - Class> updateDtoClass = SchedulersGroupUpdateDto.class; - Class> voClass = SchedulersGroupVo.class; + Class> originalClass = QuartzExecuteLog.class; + Class> dtoClass = QuartzExecuteLogDto.class; + Class> addDtoClass = QuartzExecuteLogAddDto.class; + Class> updateDtoClass = QuartzExecuteLogUpdateDto.class; + Class> voClass = QuartzExecuteLogVo.class; // 设置velocity资源加载器 Properties prop = new Properties(); diff --git a/dao/src/main/java/cn/bunny/dao/dto/quartz/executeLog/QuartzExecuteLogAddDto.java b/dao/src/main/java/cn/bunny/dao/dto/quartz/executeLog/QuartzExecuteLogAddDto.java new file mode 100644 index 0000000..03d6e7b --- /dev/null +++ b/dao/src/main/java/cn/bunny/dao/dto/quartz/executeLog/QuartzExecuteLogAddDto.java @@ -0,0 +1,55 @@ +package cn.bunny.dao.dto.quartz.executeLog; + +import cn.bunny.dao.entity.quartz.QuartzExecuteLogJson; +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotBlank; +import jakarta.validation.constraints.NotNull; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.time.LocalDateTime; + +@Data +@AllArgsConstructor +@NoArgsConstructor +@Builder +@Schema(name = "QuartzExecuteLogAddDto对象", title = "添加调度任务执行日志", description = "添加调度任务执行日志") +public class QuartzExecuteLogAddDto { + + @Schema(name = "jobName", title = "任务名称") + @NotBlank(message = "任务分组不能为空") + @NotNull(message = "任务分组不能为空") + private String jobName; + + @Schema(name = "jobGroup", title = "任务分组") + @NotBlank(message = "任务分组不能为空") + @NotNull(message = "任务分组不能为空") + private String jobGroup; + + @Schema(name = "jobClassName", title = "执行任务类名") + @NotBlank(message = "任务分组不能为空") + @NotNull(message = "任务分组不能为空") + private String jobClassName; + + @Schema(name = "cronExpression", title = "执行任务core表达式") + @NotBlank(message = "任务分组不能为空") + @NotNull(message = "任务分组不能为空") + private String cronExpression; + + @Schema(name = "triggerName", title = "触发器名称") + @NotBlank(message = "任务分组不能为空") + @NotNull(message = "任务分组不能为空") + private String triggerName; + + @Schema(name = "executeResult", title = "执行结果") + private QuartzExecuteLogJson executeResult; + + @Schema(name = "duration", title = "执行时间") + private Integer duration; + + @Schema(name = "endTime", title = "结束时间") + private LocalDateTime endTime; + +} diff --git a/dao/src/main/java/cn/bunny/dao/dto/quartz/executeLog/QuartzExecuteLogDto.java b/dao/src/main/java/cn/bunny/dao/dto/quartz/executeLog/QuartzExecuteLogDto.java new file mode 100644 index 0000000..64840c0 --- /dev/null +++ b/dao/src/main/java/cn/bunny/dao/dto/quartz/executeLog/QuartzExecuteLogDto.java @@ -0,0 +1,36 @@ +package cn.bunny.dao.dto.quartz.executeLog; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.time.LocalDateTime; + +@Data +@AllArgsConstructor +@NoArgsConstructor +@Builder +@Schema(name = "QuartzExecuteLogDto对象", title = "调度任务执行日志分页查询", description = "调度任务执行日志分页查询") +public class QuartzExecuteLogDto { + + @Schema(name = "jobName", title = "任务名称") + private String jobName; + + @Schema(name = "jobGroup", title = "任务分组") + private String jobGroup; + + @Schema(name = "jobClassName", title = "执行任务类名") + private String jobClassName; + + @Schema(name = "cronExpression", title = "执行任务core表达式") + private String cronExpression; + + @Schema(name = "triggerName", title = "触发器名称") + private String triggerName; + + @Schema(name = "endTime", title = "结束时间") + private LocalDateTime endTime; + +} diff --git a/dao/src/main/java/cn/bunny/dao/dto/quartz/executeLog/QuartzExecuteLogUpdateDto.java b/dao/src/main/java/cn/bunny/dao/dto/quartz/executeLog/QuartzExecuteLogUpdateDto.java new file mode 100644 index 0000000..f175ce5 --- /dev/null +++ b/dao/src/main/java/cn/bunny/dao/dto/quartz/executeLog/QuartzExecuteLogUpdateDto.java @@ -0,0 +1,59 @@ +package cn.bunny.dao.dto.quartz.executeLog; + +import cn.bunny.dao.entity.quartz.QuartzExecuteLogJson; +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotBlank; +import jakarta.validation.constraints.NotNull; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.time.LocalDateTime; + +@Data +@AllArgsConstructor +@NoArgsConstructor +@Builder +@Schema(name = "QuartzExecuteLogUpdateDto对象", title = "更新调度任务执行日志", description = "更新调度任务执行日志") +public class QuartzExecuteLogUpdateDto { + + @Schema(name = "id", title = "主键") + @NotNull(message = "id不能为空") + private Long id; + + @Schema(name = "jobName", title = "任务名称") + @NotBlank(message = "任务分组不能为空") + @NotNull(message = "任务分组不能为空") + private String jobName; + + @Schema(name = "jobGroup", title = "任务分组") + @NotBlank(message = "任务分组不能为空") + @NotNull(message = "任务分组不能为空") + private String jobGroup; + + @Schema(name = "jobClassName", title = "执行任务类名") + @NotBlank(message = "任务分组不能为空") + @NotNull(message = "任务分组不能为空") + private String jobClassName; + + @Schema(name = "cronExpression", title = "执行任务core表达式") + @NotBlank(message = "任务分组不能为空") + @NotNull(message = "任务分组不能为空") + private String cronExpression; + + @Schema(name = "triggerName", title = "触发器名称") + @NotBlank(message = "任务分组不能为空") + @NotNull(message = "任务分组不能为空") + private String triggerName; + + @Schema(name = "executeResult", title = "执行结果") + private QuartzExecuteLogJson executeResult; + + @Schema(name = "duration", title = "执行时间") + private Integer duration; + + @Schema(name = "endTime", title = "结束时间") + private LocalDateTime endTime; + +} \ No newline at end of file diff --git a/dao/src/main/java/cn/bunny/dao/dto/quartz/SchedulersAddDto.java b/dao/src/main/java/cn/bunny/dao/dto/quartz/schedule/SchedulersAddDto.java similarity index 96% rename from dao/src/main/java/cn/bunny/dao/dto/quartz/SchedulersAddDto.java rename to dao/src/main/java/cn/bunny/dao/dto/quartz/schedule/SchedulersAddDto.java index d2cfa97..85eb52e 100644 --- a/dao/src/main/java/cn/bunny/dao/dto/quartz/SchedulersAddDto.java +++ b/dao/src/main/java/cn/bunny/dao/dto/quartz/schedule/SchedulersAddDto.java @@ -1,4 +1,4 @@ -package cn.bunny.dao.dto.quartz; +package cn.bunny.dao.dto.quartz.schedule; import io.swagger.v3.oas.annotations.media.Schema; import jakarta.validation.constraints.NotBlank; diff --git a/dao/src/main/java/cn/bunny/dao/dto/quartz/SchedulersDto.java b/dao/src/main/java/cn/bunny/dao/dto/quartz/schedule/SchedulersDto.java similarity index 96% rename from dao/src/main/java/cn/bunny/dao/dto/quartz/SchedulersDto.java rename to dao/src/main/java/cn/bunny/dao/dto/quartz/schedule/SchedulersDto.java index b49cfcd..3c517ad 100644 --- a/dao/src/main/java/cn/bunny/dao/dto/quartz/SchedulersDto.java +++ b/dao/src/main/java/cn/bunny/dao/dto/quartz/schedule/SchedulersDto.java @@ -1,4 +1,4 @@ -package cn.bunny.dao.dto.quartz; +package cn.bunny.dao.dto.quartz.schedule; import io.swagger.v3.oas.annotations.media.Schema; import jakarta.validation.constraints.NotNull; diff --git a/dao/src/main/java/cn/bunny/dao/dto/quartz/SchedulersUpdateDto.java b/dao/src/main/java/cn/bunny/dao/dto/quartz/schedule/SchedulersUpdateDto.java similarity index 97% rename from dao/src/main/java/cn/bunny/dao/dto/quartz/SchedulersUpdateDto.java rename to dao/src/main/java/cn/bunny/dao/dto/quartz/schedule/SchedulersUpdateDto.java index fdcb211..2ebb82e 100644 --- a/dao/src/main/java/cn/bunny/dao/dto/quartz/SchedulersUpdateDto.java +++ b/dao/src/main/java/cn/bunny/dao/dto/quartz/schedule/SchedulersUpdateDto.java @@ -1,4 +1,4 @@ -package cn.bunny.dao.dto.quartz; +package cn.bunny.dao.dto.quartz.schedule; import io.swagger.v3.oas.annotations.media.Schema; import jakarta.validation.constraints.NotBlank; diff --git a/dao/src/main/java/cn/bunny/dao/dto/quartz/SchedulersGroupAddDto.java b/dao/src/main/java/cn/bunny/dao/dto/quartz/scheduleGroup/SchedulersGroupAddDto.java similarity index 94% rename from dao/src/main/java/cn/bunny/dao/dto/quartz/SchedulersGroupAddDto.java rename to dao/src/main/java/cn/bunny/dao/dto/quartz/scheduleGroup/SchedulersGroupAddDto.java index 218f971..1808b4d 100644 --- a/dao/src/main/java/cn/bunny/dao/dto/quartz/SchedulersGroupAddDto.java +++ b/dao/src/main/java/cn/bunny/dao/dto/quartz/scheduleGroup/SchedulersGroupAddDto.java @@ -1,4 +1,4 @@ -package cn.bunny.dao.dto.quartz; +package cn.bunny.dao.dto.quartz.scheduleGroup; import io.swagger.v3.oas.annotations.media.Schema; import jakarta.validation.constraints.NotBlank; diff --git a/dao/src/main/java/cn/bunny/dao/dto/quartz/SchedulersGroupDto.java b/dao/src/main/java/cn/bunny/dao/dto/quartz/scheduleGroup/SchedulersGroupDto.java similarity index 92% rename from dao/src/main/java/cn/bunny/dao/dto/quartz/SchedulersGroupDto.java rename to dao/src/main/java/cn/bunny/dao/dto/quartz/scheduleGroup/SchedulersGroupDto.java index fd1e00a..293f1f4 100644 --- a/dao/src/main/java/cn/bunny/dao/dto/quartz/SchedulersGroupDto.java +++ b/dao/src/main/java/cn/bunny/dao/dto/quartz/scheduleGroup/SchedulersGroupDto.java @@ -1,4 +1,4 @@ -package cn.bunny.dao.dto.quartz; +package cn.bunny.dao.dto.quartz.scheduleGroup; import io.swagger.v3.oas.annotations.media.Schema; import lombok.AllArgsConstructor; diff --git a/dao/src/main/java/cn/bunny/dao/dto/quartz/SchedulersGroupUpdateDto.java b/dao/src/main/java/cn/bunny/dao/dto/quartz/scheduleGroup/SchedulersGroupUpdateDto.java similarity index 94% rename from dao/src/main/java/cn/bunny/dao/dto/quartz/SchedulersGroupUpdateDto.java rename to dao/src/main/java/cn/bunny/dao/dto/quartz/scheduleGroup/SchedulersGroupUpdateDto.java index f858d12..2245a58 100644 --- a/dao/src/main/java/cn/bunny/dao/dto/quartz/SchedulersGroupUpdateDto.java +++ b/dao/src/main/java/cn/bunny/dao/dto/quartz/scheduleGroup/SchedulersGroupUpdateDto.java @@ -1,4 +1,4 @@ -package cn.bunny.dao.dto.quartz; +package cn.bunny.dao.dto.quartz.scheduleGroup; import io.swagger.v3.oas.annotations.media.Schema; import jakarta.validation.constraints.NotBlank; diff --git a/dao/src/main/java/cn/bunny/dao/dto/system/router/RouterUpdateByIdWithRankDto.java b/dao/src/main/java/cn/bunny/dao/dto/system/router/RouterUpdateByIdWithRankDto.java new file mode 100644 index 0000000..4f74282 --- /dev/null +++ b/dao/src/main/java/cn/bunny/dao/dto/system/router/RouterUpdateByIdWithRankDto.java @@ -0,0 +1,26 @@ +package cn.bunny.dao.dto.system.router; + +import com.fasterxml.jackson.annotation.JsonProperty; +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotNull; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +@Data +@AllArgsConstructor +@NoArgsConstructor +@Builder +@Schema(name = "RouterUpdateByIdWithRankDto对象", title = "根据菜单Id更新菜单排序", description = "根据菜单Id更新菜单排序") +public class RouterUpdateByIdWithRankDto { + + @Schema(name = "id", title = "唯一标识") + @NotNull(message = "id不能为空") + private Long id; + + @Schema(name = "routerRank", title = "等级") + @JsonProperty("rank") + private Integer routerRank; + +} \ No newline at end of file diff --git a/dao/src/main/java/cn/bunny/dao/dto/system/router/RouterUpdateDto.java b/dao/src/main/java/cn/bunny/dao/dto/system/router/RouterUpdateDto.java index 7b00142..c5fac76 100644 --- a/dao/src/main/java/cn/bunny/dao/dto/system/router/RouterUpdateDto.java +++ b/dao/src/main/java/cn/bunny/dao/dto/system/router/RouterUpdateDto.java @@ -59,3 +59,4 @@ public class RouterUpdateDto { @Schema(name = "visible", title = "是否显示") private Boolean visible; } + diff --git a/dao/src/main/java/cn/bunny/dao/entity/quartz/QuartzExecuteLog.java b/dao/src/main/java/cn/bunny/dao/entity/quartz/QuartzExecuteLog.java new file mode 100644 index 0000000..b4dcd0a --- /dev/null +++ b/dao/src/main/java/cn/bunny/dao/entity/quartz/QuartzExecuteLog.java @@ -0,0 +1,53 @@ +package cn.bunny.dao.entity.quartz; + +import cn.bunny.dao.entity.BaseEntity; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Getter; +import lombok.Setter; +import lombok.experimental.Accessors; + +import java.time.LocalDateTime; + +/** + *
+ * 调度任务执行日志 + *
+ * + * @author Bunny + * @since 2024-10-18 + */ +@Getter +@Setter +@Accessors(chain = true) +@TableName("quartz_execute_log") +@Schema(name = "QuartzExecuteLog对象", title = "调度任务执行日志", description = "调度任务执行日志") +public class QuartzExecuteLog extends BaseEntity { + + @Schema(name = "jobName", title = "任务名称") + private String jobName; + + @Schema(name = "jobGroup", title = "任务分组") + private String jobGroup; + + @Schema(name = "jobClassName", title = "执行任务类名") + private String jobClassName; + + @Schema(name = "cronExpression", title = "执行任务core表达式") + private String cronExpression; + + @Schema(name = "triggerName", title = "触发器名称") + private String triggerName; + + @Schema(name = "executeResult", title = "执行结果") + private String executeResult; + + @Schema(name = "duration", title = "执行时间") + private Integer duration; + + @Schema(name = "endTime", title = "结束时间") + private LocalDateTime endTime; + +} + + diff --git a/dao/src/main/java/cn/bunny/dao/entity/quartz/QuartzExecuteLogJson.java b/dao/src/main/java/cn/bunny/dao/entity/quartz/QuartzExecuteLogJson.java new file mode 100644 index 0000000..005daed --- /dev/null +++ b/dao/src/main/java/cn/bunny/dao/entity/quartz/QuartzExecuteLogJson.java @@ -0,0 +1,30 @@ +package cn.bunny.dao.entity.quartz; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +@Data +@AllArgsConstructor +@NoArgsConstructor +@Builder +@Schema(name = "QuartzExecuteLog对象", title = "执行任务的日志", description = "执行任务的日志") +public class QuartzExecuteLogJson { + + @Schema(name = "result", title = "执行结果") + private String result; + + @Schema(name = "status", title = "执行状态") + private String status; + + @Schema(name = "message", title = "执行消息") + private String message; + + @Schema(name = "operationTime", title = "操作时间") + private String operationTime; + + @Schema(name = "executeParams", title = "执行任务参数") + private String executeParams; +} diff --git a/dao/src/main/java/cn/bunny/dao/entity/quartz/SchedulersGroup.java b/dao/src/main/java/cn/bunny/dao/entity/quartz/SchedulersGroup.java index 49fb7e8..b6ec1a1 100644 --- a/dao/src/main/java/cn/bunny/dao/entity/quartz/SchedulersGroup.java +++ b/dao/src/main/java/cn/bunny/dao/entity/quartz/SchedulersGroup.java @@ -18,7 +18,7 @@ import lombok.experimental.Accessors; @Getter @Setter @Accessors(chain = true) -@TableName("qrtz_schedulers_group") +@TableName("quartz_schedulers_group") @Schema(name = "SchedulersGroup对象", title = "任务调度分组", description = "任务调度分组") public class SchedulersGroup extends BaseEntity { diff --git a/dao/src/main/java/cn/bunny/dao/vo/quartz/QuartzExecuteLogVo.java b/dao/src/main/java/cn/bunny/dao/vo/quartz/QuartzExecuteLogVo.java new file mode 100644 index 0000000..bea91ce --- /dev/null +++ b/dao/src/main/java/cn/bunny/dao/vo/quartz/QuartzExecuteLogVo.java @@ -0,0 +1,42 @@ +package cn.bunny.dao.vo.quartz; + +import cn.bunny.dao.entity.quartz.QuartzExecuteLogJson; +import cn.bunny.dao.vo.BaseVo; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.*; + +import java.time.LocalDateTime; + +@EqualsAndHashCode(callSuper = true) +@Data +@AllArgsConstructor +@NoArgsConstructor +@Builder +@Schema(name = "QuartzExecuteLogVo对象", title = "调度任务执行日志返回对象", description = "调度任务执行日志返回对象") +public class QuartzExecuteLogVo extends BaseVo { + + @Schema(name = "jobName", title = "任务名称") + private String jobName; + + @Schema(name = "jobGroup", title = "任务分组") + private String jobGroup; + + @Schema(name = "jobClassName", title = "执行任务类名") + private String jobClassName; + + @Schema(name = "cronExpression", title = "执行任务core表达式") + private String cronExpression; + + @Schema(name = "triggerName", title = "触发器名称") + private String triggerName; + + @Schema(name = "executeResult", title = "执行结果") + private QuartzExecuteLogJson executeResult; + + @Schema(name = "duration", title = "执行时间") + private Integer duration; + + @Schema(name = "endTime", title = "结束时间") + private LocalDateTime endTime; + +} diff --git a/service/src/main/java/cn/bunny/services/controller/QuartzExecuteLogController.java b/service/src/main/java/cn/bunny/services/controller/QuartzExecuteLogController.java new file mode 100644 index 0000000..14cea95 --- /dev/null +++ b/service/src/main/java/cn/bunny/services/controller/QuartzExecuteLogController.java @@ -0,0 +1,55 @@ +package cn.bunny.services.controller; + +import cn.bunny.dao.dto.quartz.executeLog.QuartzExecuteLogDto; +import cn.bunny.dao.entity.quartz.QuartzExecuteLog; +import cn.bunny.dao.pojo.result.PageResult; +import cn.bunny.dao.pojo.result.Result; +import cn.bunny.dao.pojo.result.ResultCodeEnum; +import cn.bunny.dao.vo.quartz.QuartzExecuteLogVo; +import cn.bunny.services.service.QuartzExecuteLogService; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.Parameter; +import io.swagger.v3.oas.annotations.tags.Tag; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import reactor.core.publisher.Mono; + +import java.util.List; + +/** + *+ * 调度任务执行日志表 前端控制器 + *
+ * + * @author Bunny + * @since 2024-10-18 12:56:39 + */ +@Tag(name = "调度任务执行日志", description = "调度任务执行日志相关接口") +@RestController +@RequestMapping("admin/quartzExecuteLog") +public class QuartzExecuteLogController { + + @Autowired + private QuartzExecuteLogService quartzExecuteLogService; + + @Operation(summary = "分页查询调度任务执行日志", description = "分页查询调度任务执行日志") + @GetMapping("getQuartzExecuteLogList/{page}/{limit}") + public Mono+ * 调度任务执行日志 Mapper 接口 + *
+ * + * @author Bunny + * @since 2024-10-18 12:56:39 + */ +@Mapper +public interface QuartzExecuteLogMapper extends BaseMapper+ * 调度任务执行日志 服务类 + *
+ * + * @author Bunny + * @since 2024-10-18 12:56:39 + */ +public interface QuartzExecuteLogService extends IService+ * 调度任务执行日志 服务实现类 + *
+ * + * @author Bunny + * @since 2024-10-18 12:56:39 + */ +@Service +public class QuartzExecuteLogServiceImpl extends ServiceImpl