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 c3de48f..54418e3 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 @@ -20,7 +20,7 @@ public class AdminCodeGenerator { public static final String entity = "Bunny"; public static void main(String[] args) { - Generation("sys_files"); + Generation("v_schedulers"); } /** @@ -51,7 +51,7 @@ public class AdminCodeGenerator { .strategyConfig(builder -> { // 设置要生成的表名 builder.addInclude(tableName) - .addTablePrefix("sys_") + .addTablePrefix("sys_", "v_") .entityBuilder() .enableLombok() .enableChainModel() 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 74c632a..a1587bb 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.system.email.EmailTemplateAddDto; -import cn.bunny.dao.dto.system.email.EmailTemplateDto; -import cn.bunny.dao.dto.system.email.EmailTemplateUpdateDto; -import cn.bunny.dao.entity.system.EmailTemplate; -import cn.bunny.dao.vo.system.email.EmailTemplateVo; +import cn.bunny.dao.dto.schedulers.SchedulersAddDto; +import cn.bunny.dao.dto.schedulers.SchedulersDto; +import cn.bunny.dao.dto.schedulers.SchedulersUpdateDto; +import cn.bunny.dao.entity.view.Schedulers; +import cn.bunny.dao.vo.schedulers.SchedulersVo; import com.baomidou.mybatisplus.annotation.TableName; import com.google.common.base.CaseFormat; import io.swagger.v3.oas.annotations.media.Schema; @@ -51,11 +51,11 @@ public class WebGeneratorCode { public static String resourceMapperPath = "D:\\Project\\web\\PC\\auth\\auth-server-java\\service\\src\\main\\resources\\mapper\\"; public static void main(String[] args) throws Exception { - Class originalClass = EmailTemplate.class; - Class dtoClass = EmailTemplateDto.class; - Class addDtoClass = EmailTemplateAddDto.class; - Class updateDtoClass = EmailTemplateUpdateDto.class; - Class voClass = EmailTemplateVo.class; + Class originalClass = Schedulers.class; + Class dtoClass = SchedulersDto.class; + Class addDtoClass = SchedulersAddDto.class; + Class updateDtoClass = SchedulersUpdateDto.class; + Class voClass = SchedulersVo.class; // 设置velocity资源加载器 Properties prop = new Properties(); diff --git a/dao/src/main/java/cn/bunny/dao/dto/schedulers/SchedulersAddDto.java b/dao/src/main/java/cn/bunny/dao/dto/schedulers/SchedulersAddDto.java new file mode 100644 index 0000000..f3e31a0 --- /dev/null +++ b/dao/src/main/java/cn/bunny/dao/dto/schedulers/SchedulersAddDto.java @@ -0,0 +1,55 @@ +package cn.bunny.dao.dto.schedulers; + +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; + +@Data +@AllArgsConstructor +@NoArgsConstructor +@Builder +@Schema(name = "SchedulersAddDto对象", title = "Schedulers添加表单", description = "Schedulers添加表单") +public class SchedulersAddDto { + + @Schema(name = "jobName", title = "任务名称") + @NotBlank(message = "任务名称不能为空") + @NotNull(message = "任务名称不能为空") + private String jobName; + + @Schema(name = "jobGroup", title = "任务分组") + @NotBlank(message = "任务分组不能为空") + @NotNull(message = "任务分组不能为空") + private String jobGroup; + + @Schema(name = "description", title = "任务详情") + @NotBlank(message = "任务详情不能为空") + @NotNull(message = "任务详情不能为空") + private String description; + + @Schema(name = "jobClassName", title = "任务类名称") + @NotBlank(message = "corn表达式不能为空") + @NotNull(message = "corn表达式不能为空") + private String jobClassName; + + @Schema(name = "cronExpression", title = "corn表达式") + @NotBlank(message = "corn表达式不能为空") + @NotNull(message = "corn表达式不能为空") + private String cronExpression; + + @Schema(name = "triggerName", title = "触发器名称") + @NotBlank(message = "触发器名称不能为空") + @NotNull(message = "触发器名称不能为空") + private String triggerName; + + @Schema(name = "triggerState", title = "triggerState触发器状态") + @NotBlank(message = "triggerState触发器状态不能为空") + @NotNull(message = "triggerState触发器状态不能为空") + private String triggerState; + +} + + diff --git a/dao/src/main/java/cn/bunny/dao/dto/schedulers/SchedulersDto.java b/dao/src/main/java/cn/bunny/dao/dto/schedulers/SchedulersDto.java new file mode 100644 index 0000000..c98e9bb --- /dev/null +++ b/dao/src/main/java/cn/bunny/dao/dto/schedulers/SchedulersDto.java @@ -0,0 +1,37 @@ +package cn.bunny.dao.dto.schedulers; + +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 = "SchedulersDto对象", title = "Schedulers查询表单", description = "Schedulers查询表单") +public class SchedulersDto { + + @Schema(name = "jobName", title = "任务名称") + private String jobName; + + @Schema(name = "jobGroup", title = "任务分组") + private String jobGroup; + + @Schema(name = "description", title = "任务详情") + private String description; + + @Schema(name = "jobClassName", title = "任务类名称") + @NotNull(message = "corn表达式不能为空") + private String jobClassName; + + @Schema(name = "triggerName", title = "触发器名称") + private String triggerName; + + @Schema(name = "triggerState", title = "triggerState触发器状态") + private String triggerState; + +} + diff --git a/dao/src/main/java/cn/bunny/dao/dto/schedulers/SchedulersUpdateDto.java b/dao/src/main/java/cn/bunny/dao/dto/schedulers/SchedulersUpdateDto.java new file mode 100644 index 0000000..28bf90e --- /dev/null +++ b/dao/src/main/java/cn/bunny/dao/dto/schedulers/SchedulersUpdateDto.java @@ -0,0 +1,57 @@ +package cn.bunny.dao.dto.schedulers; + +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; + +@Data +@AllArgsConstructor +@NoArgsConstructor +@Builder +@Schema(name = "SchedulersUpdateDto对象", title = "Schedulers更新表单", description = "Schedulers更新表单") +public class SchedulersUpdateDto { + + @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 = "description", title = "任务详情") + @NotBlank(message = "任务详情不能为空") + @NotNull(message = "任务详情不能为空") + private String description; + + @Schema(name = "jobClassName", title = "任务类名称") + @NotBlank(message = "corn表达式不能为空") + @NotNull(message = "corn表达式不能为空") + private String jobClassName; + + @Schema(name = "cronExpression", title = "corn表达式") + @NotBlank(message = "corn表达式不能为空") + @NotNull(message = "corn表达式不能为空") + private String cronExpression; + + @Schema(name = "triggerName", title = "触发器名称") + @NotBlank(message = "触发器名称不能为空") + @NotNull(message = "触发器名称不能为空") + private String triggerName; + + @Schema(name = "triggerState", title = "triggerState触发器状态") + @NotBlank(message = "triggerState触发器状态不能为空") + @NotNull(message = "triggerState触发器状态不能为空") + private String triggerState; + +} \ No newline at end of file diff --git a/dao/src/main/java/cn/bunny/dao/entity/view/Schedulers.java b/dao/src/main/java/cn/bunny/dao/entity/view/Schedulers.java new file mode 100644 index 0000000..ba27697 --- /dev/null +++ b/dao/src/main/java/cn/bunny/dao/entity/view/Schedulers.java @@ -0,0 +1,47 @@ +package cn.bunny.dao.entity.view; + +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.io.Serializable; + +/** + *

+ * VIEW + *

+ * + * @author Bunny + * @since 2024-10-14 + */ +@Getter +@Setter +@Accessors(chain = true) +@TableName("v_schedulers") +@Schema(name = "Schedulers对象", title = "Schedulers视图", description = "Schedulers视图") +public class Schedulers implements Serializable { + + @Schema(name = "jobName", title = "任务名称") + private String jobName; + + @Schema(name = "jobGroup", title = "任务分组") + private String jobGroup; + + @Schema(name = "description", title = "任务详情") + private String description; + + @Schema(name = "jobClassName", title = "任务类名称") + private String jobClassName; + + @Schema(name = "cronExpression", title = "corn表达式") + private String cronExpression; + + @Schema(name = "triggerName", title = "触发器名称") + private String triggerName; + + @Schema(name = "triggerState", title = "triggerState触发器状态") + private String triggerState; + +} \ No newline at end of file diff --git a/dao/src/main/java/cn/bunny/dao/vo/schedulers/SchedulersVo.java b/dao/src/main/java/cn/bunny/dao/vo/schedulers/SchedulersVo.java new file mode 100644 index 0000000..ae12540 --- /dev/null +++ b/dao/src/main/java/cn/bunny/dao/vo/schedulers/SchedulersVo.java @@ -0,0 +1,36 @@ +package cn.bunny.dao.vo.schedulers; + +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 = "SchedulersVo对象", title = "Schedulers返回内容", description = "Schedulers返回内容") +public class SchedulersVo { + + @Schema(name = "jobName", title = "任务名称") + private String jobName; + + @Schema(name = "jobGroup", title = "任务分组") + private String jobGroup; + + @Schema(name = "description", title = "任务详情") + private String description; + + @Schema(name = "jobClassName", title = "任务类名称") + @NotNull(message = "corn表达式不能为空") + private String jobClassName; + + @Schema(name = "triggerName", title = "触发器名称") + private String triggerName; + + @Schema(name = "triggerState", title = "triggerState触发器状态") + private String triggerState; + +} \ No newline at end of file diff --git a/service/src/main/java/cn/bunny/services/controller/EmailTemplateController.java b/service/src/main/java/cn/bunny/services/controller/EmailTemplateController.java index 70d2569..b12be0c 100644 --- a/service/src/main/java/cn/bunny/services/controller/EmailTemplateController.java +++ b/service/src/main/java/cn/bunny/services/controller/EmailTemplateController.java @@ -23,7 +23,7 @@ import java.util.Map; /** *

- * 邮件模板表表 前端控制器 + * 邮件模板 前端控制器 *

* * @author Bunny @@ -37,7 +37,7 @@ public class EmailTemplateController { @Autowired private EmailTemplateService emailTemplateService; - @Operation(summary = "分页查询邮件模板表", description = "分页查询邮件模板表") + @Operation(summary = "分页查询邮件模板", description = "分页查询邮件模板") @GetMapping("getEmailTemplateList/{page}/{limit}") public Mono>> getEmailTemplateList( @Parameter(name = "page", description = "当前页", required = true) @@ -50,28 +50,28 @@ public class EmailTemplateController { return Mono.just(Result.success(pageResult)); } - @Operation(summary = "获取模板类型字段", description = "获取模板类型字段") + @Operation(summary = "获取邮件模板类型字段", description = "获取邮件模板类型字段") @GetMapping("getEmailTypes") public Mono>>> getEmailTypes() { List> list = emailTemplateService.getEmailTypes(); return Mono.just(Result.success(list)); } - @Operation(summary = "添加邮件模板表", description = "添加邮件模板表") + @Operation(summary = "添加邮件模板", description = "添加邮件模板") @PostMapping("addEmailTemplate") public Mono> addEmailTemplate(@Valid @RequestBody EmailTemplateAddDto dto) { emailTemplateService.addEmailTemplate(dto); return Mono.just(Result.success(ResultCodeEnum.ADD_SUCCESS)); } - @Operation(summary = "更新邮件模板表", description = "更新邮件模板表") + @Operation(summary = "更新邮件模板", description = "更新邮件模板") @PutMapping("updateEmailTemplate") public Mono> updateEmailTemplate(@Valid @RequestBody EmailTemplateUpdateDto dto) { emailTemplateService.updateEmailTemplate(dto); return Mono.just(Result.success(ResultCodeEnum.UPDATE_SUCCESS)); } - @Operation(summary = "删除邮件模板表", description = "删除邮件模板表") + @Operation(summary = "删除邮件模板", description = "删除邮件模板") @DeleteMapping("deleteEmailTemplate") public Mono> deleteEmailTemplate(@RequestBody List ids) { emailTemplateService.deleteEmailTemplate(ids); diff --git a/service/src/main/java/cn/bunny/services/controller/SchedulersController.java b/service/src/main/java/cn/bunny/services/controller/SchedulersController.java new file mode 100644 index 0000000..83c4719 --- /dev/null +++ b/service/src/main/java/cn/bunny/services/controller/SchedulersController.java @@ -0,0 +1,48 @@ +package cn.bunny.services.controller; + +import cn.bunny.dao.dto.schedulers.SchedulersAddDto; +import cn.bunny.dao.entity.view.Schedulers; +import cn.bunny.dao.pojo.result.PageResult; +import cn.bunny.dao.pojo.result.Result; +import cn.bunny.services.service.SchedulersService; +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.*; + +/** + *

+ * VIEW 前端控制器 + *

+ * + * @author Bunny + * @since 2024-10-14 + */ +@Tag(name = "定时任务", description = "定时任务相关接口") +@RestController +@RequestMapping("admin/schedulers") +public class SchedulersController { + @Autowired + private SchedulersService schedulersService; + + @Operation(summary = "分页查询所有任务", description = "分页查询所有任务") + @PostMapping("getSchedulerList/{page}/{limit}") + public Result> getSchedulerList( + @Parameter(name = "page", description = "当前页", required = true) + @PathVariable("page") Integer page, + @Parameter(name = "limit", description = "每页记录数", required = true) + @PathVariable("limit") Integer limit) { + Page pageParams = new Page<>(page, limit); + PageResult pageResult = schedulersService.getSchedulerList(pageParams); + return Result.success(pageResult); + } + + @Operation(summary = "添加任务", description = "添加任务") + @PostMapping("/addScheduler") + public Result addScheduler(@RequestBody SchedulersAddDto dto) { + schedulersService.addScheduler(dto); + return Result.success(); + } +} diff --git a/service/src/main/java/cn/bunny/services/mapper/SchedulersMapper.java b/service/src/main/java/cn/bunny/services/mapper/SchedulersMapper.java new file mode 100644 index 0000000..ca152a3 --- /dev/null +++ b/service/src/main/java/cn/bunny/services/mapper/SchedulersMapper.java @@ -0,0 +1,18 @@ +package cn.bunny.services.mapper; + +import cn.bunny.dao.entity.view.Schedulers; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Mapper; + +/** + *

+ * VIEW Mapper 接口 + *

+ * + * @author Bunny + * @since 2024-10-14 + */ +@Mapper +public interface SchedulersMapper extends BaseMapper { + +} diff --git a/service/src/main/java/cn/bunny/services/quartz/QuartzConfiguration.java b/service/src/main/java/cn/bunny/services/quartz/QuartzConfiguration.java new file mode 100644 index 0000000..70458b3 --- /dev/null +++ b/service/src/main/java/cn/bunny/services/quartz/QuartzConfiguration.java @@ -0,0 +1,55 @@ +package cn.bunny.services.quartz; + +import org.quartz.Scheduler; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.config.PropertiesFactoryBean; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.core.io.ClassPathResource; +import org.springframework.scheduling.quartz.SchedulerFactoryBean; + +import java.io.IOException; +import java.util.Properties; + +@Configuration +public class QuartzConfiguration { + + @Autowired + private QuartzJobFactory quartzJobFactory; + + /** + * 创建调度器工厂 + * 1.创建SchedulerFactoryBean + * 2.加载自定义的quartz.properties配置文件 + * 3.设置MyJobFactory + * + * @return SchedulerFactoryBean + */ + @Bean + public SchedulerFactoryBean schedulerFactoryBean() { + SchedulerFactoryBean factoryBean = new SchedulerFactoryBean(); + try { + factoryBean.setAutoStartup(true); + // 延时3秒启动 + factoryBean.setStartupDelay(3); + factoryBean.setQuartzProperties(quartzProperties()); + factoryBean.setJobFactory(quartzJobFactory); + return factoryBean; + } catch (IOException e) { + throw new RuntimeException(e); + } + } + + @Bean + public Properties quartzProperties() throws IOException { + PropertiesFactoryBean propertiesFactoryBean = new PropertiesFactoryBean(); + propertiesFactoryBean.setLocation(new ClassPathResource("/quartz.properties")); + propertiesFactoryBean.afterPropertiesSet(); + return propertiesFactoryBean.getObject(); + } + + @Bean(name = "scheduler") + public Scheduler scheduler() { + return schedulerFactoryBean().getScheduler(); + } +} \ No newline at end of file diff --git a/service/src/main/java/cn/bunny/services/quartz/QuartzJobFactory.java b/service/src/main/java/cn/bunny/services/quartz/QuartzJobFactory.java new file mode 100644 index 0000000..61a33c4 --- /dev/null +++ b/service/src/main/java/cn/bunny/services/quartz/QuartzJobFactory.java @@ -0,0 +1,28 @@ +package cn.bunny.services.quartz; + +import lombok.extern.slf4j.Slf4j; +import org.jetbrains.annotations.NotNull; +import org.quartz.spi.TriggerFiredBundle; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.config.AutowireCapableBeanFactory; +import org.springframework.scheduling.quartz.AdaptableJobFactory; +import org.springframework.stereotype.Component; + +@Component +@Slf4j +public class QuartzJobFactory extends AdaptableJobFactory { + + // 这个对象Spring会帮我们自动注入进来 + @Autowired + private AutowireCapableBeanFactory capableBeanFactory; + + // 重写创建Job任务的实例方法 + @NotNull + @Override + protected Object createJobInstance(@NotNull TriggerFiredBundle bundle) throws Exception { + Object jobInstance = super.createJobInstance(bundle); + // 通过以下方式,解决Job任务无法使用Spring中的Bean问题 + capableBeanFactory.autowireBean(jobInstance); + return super.createJobInstance(bundle); + } +} \ No newline at end of file diff --git a/service/src/main/java/cn/bunny/services/service/SchedulersService.java b/service/src/main/java/cn/bunny/services/service/SchedulersService.java new file mode 100644 index 0000000..92b22f7 --- /dev/null +++ b/service/src/main/java/cn/bunny/services/service/SchedulersService.java @@ -0,0 +1,16 @@ +package cn.bunny.services.service; + +import cn.bunny.dao.entity.view.Schedulers; +import com.baomidou.mybatisplus.extension.service.IService; + +/** + *

+ * VIEW 服务类 + *

+ * + * @author Bunny + * @since 2024-10-14 + */ +public interface SchedulersService extends IService { + +} diff --git a/service/src/main/java/cn/bunny/services/service/impl/SchedulersServiceImpl.java b/service/src/main/java/cn/bunny/services/service/impl/SchedulersServiceImpl.java new file mode 100644 index 0000000..7bf532a --- /dev/null +++ b/service/src/main/java/cn/bunny/services/service/impl/SchedulersServiceImpl.java @@ -0,0 +1,20 @@ +package cn.bunny.services.service.impl; + +import cn.bunny.dao.entity.view.Schedulers; +import cn.bunny.services.mapper.SchedulersMapper; +import cn.bunny.services.service.SchedulersService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.stereotype.Service; + +/** + *

+ * VIEW 服务实现类 + *

+ * + * @author Bunny + * @since 2024-10-14 + */ +@Service +public class SchedulersServiceImpl extends ServiceImpl implements SchedulersService { + +} diff --git a/service/src/main/resources/application.yml b/service/src/main/resources/application.yml index 6ad6922..3d4c3b7 100644 --- a/service/src/main/resources/application.yml +++ b/service/src/main/resources/application.yml @@ -48,27 +48,6 @@ spring: wait-for-jobs-to-complete-on-shutdown: true overwrite-existing-jobs: false scheduler-name: quartzScheduler - properties: - org: - quartz: - scheduler: - # 默认 - instanceName: RedpigScheduler - # 如果使用集群,instanceId必须唯一,设置成AUTO - instanceId: AUTO - jobStore: - # 存储方式使用JobStoreTX 也就是数据库 - class: org.springframework.scheduling.quartz.LocalDataSourceJobStore - driverDelegateClass: org.quartz.impl.jdbcjobstore.StdJDBCDelegate - # 表名前缀 - tablePrefix: QRTZ_ - useProperties: false - misfireThreshold: 5000 - threadPool: - class: org.quartz.simpl.SimpleThreadPool - threadCount: 20 - threadPriority: 5 - threadsInheritContextClassLoaderOfInitializingThread: true jackson: date-format: yyyy-MM-dd HH:mm:ss diff --git a/service/src/main/resources/mapper/SchedulersMapper.xml b/service/src/main/resources/mapper/SchedulersMapper.xml new file mode 100644 index 0000000..5b3c35d --- /dev/null +++ b/service/src/main/resources/mapper/SchedulersMapper.xml @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + job_name, job_group, description, job_class_name, cron_expression, trigger_name, trigger_state + + + diff --git a/service/src/main/resources/quartz.properties b/service/src/main/resources/quartz.properties new file mode 100644 index 0000000..343ce39 --- /dev/null +++ b/service/src/main/resources/quartz.properties @@ -0,0 +1,16 @@ +org.quartz.scheduler.instanceName=quartzScheduler +org.quartz.scheduler.instanceId=AUTO +org.quartz.threadPool.class=org.quartz.simpl.SimpleThreadPool +org.quartz.threadPool.threadCount=20 +org.quartz.threadPool.threadPriority=5 +org.quartz.threadPool.threadsInheritContextClassLoaderOfInitializingThread=true +org.quartz.jobStore.class=org.quartz.impl.jdbcjobstore.JobStoreTX +org.quartz.jobStore.driverDelegateClass=org.quartz.impl.jdbcjobstore.StdJDBCDelegate +org.quartz.jobStore.tablePrefix=QRTZ_ +org.quartz.jobStore.dataSource=auth_admin +org.quartz.jobStore.misfireThreshold=5000 +org.quartz.dataSource.auth_admin.driver=com.mysql.cj.jdbc.Driver +org.quartz.dataSource.auth_admin.URL=jdbc:mysql://192.168.3.98:3306/auth_admin?serverTimezone=GMT%2B8&useSSL=false&characterEncoding=utf-8&allowPublicKeyRetrieval=true +org.quartz.dataSource.auth_admin.user=root +org.quartz.dataSource.auth_admin.password=02120212 +org.quartz.dataSource.auth_admin.maxConnections=5 \ No newline at end of file