diff --git a/zyplayer-doc-data/src/main/java/com/zyplayer/doc/data/repository/manage/mapper/BackupTaskMapper.java b/zyplayer-doc-data/src/main/java/com/zyplayer/doc/data/repository/manage/mapper/BackupTaskMapper.java
new file mode 100644
index 00000000..d0508016
--- /dev/null
+++ b/zyplayer-doc-data/src/main/java/com/zyplayer/doc/data/repository/manage/mapper/BackupTaskMapper.java
@@ -0,0 +1,16 @@
+package com.zyplayer.doc.data.repository.manage.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.zyplayer.doc.data.repository.manage.entity.BackupTask;
+
+/**
+ *
+ * Mapper 接口
+ *
+ *
+ * @author diantu
+ * @since 2023-03-03
+ */
+public interface BackupTaskMapper extends BaseMapper {
+
+}
diff --git a/zyplayer-doc-db/src/main/java/com/zyplayer/doc/db/framework/configuration/async/AsyncConfigurer.java b/zyplayer-doc-db/src/main/java/com/zyplayer/doc/db/framework/configuration/async/AsyncConfigurer.java
new file mode 100644
index 00000000..756d75ec
--- /dev/null
+++ b/zyplayer-doc-db/src/main/java/com/zyplayer/doc/db/framework/configuration/async/AsyncConfigurer.java
@@ -0,0 +1,45 @@
+package com.zyplayer.doc.db.framework.configuration.async;
+
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.core.task.TaskExecutor;
+import org.springframework.scheduling.annotation.EnableAsync;
+import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
+
+import java.util.concurrent.ThreadPoolExecutor;
+
+/**
+ * 异步线程核心配置类
+ *
+ * @author diantu
+ * @since 2023年3月3日
+ */
+@EnableAsync
+@Configuration
+public class AsyncConfigurer {
+
+ /**
+ * 核心线程数 = cpu 核心数 + 1
+ */
+ private final int CORE = Runtime.getRuntime().availableProcessors() + 1;
+
+ @Bean(name = "myTaskExecutor")
+ public TaskExecutor taskExecutor() {
+ ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor();
+ // 核心线程数:线程池创建时候初始化的线程数
+ executor.setCorePoolSize(CORE);
+ // 最大线程数:线程池最大的线程数,只有在缓冲队列满了之后才会申请超过核心线程数的线程
+ executor.setMaxPoolSize(CORE * 2);
+ // 缓冲队列:用来缓冲执行任务的队列
+ executor.setQueueCapacity(300);
+ // 允许线程的空闲时间60秒:当超过了核心线程之外的线程在空闲时间到达之后会被销毁
+ executor.setKeepAliveSeconds(60);
+ // 线程池名的前缀:设置好了之后可以方便我们定位处理任务所在的线程池
+ executor.setThreadNamePrefix("AsyncExecutor-");
+ // 缓冲队列满了之后的拒绝策略:不在新线程中执行任务,而是有调用者所在的线程来执行
+ executor.setRejectedExecutionHandler(new ThreadPoolExecutor.CallerRunsPolicy());
+ // 初始化
+ executor.initialize();
+ return executor;
+ }
+}
diff --git a/zyplayer-doc-db/src/main/java/com/zyplayer/doc/db/framework/utils/QuartzManagerUtils.java b/zyplayer-doc-db/src/main/java/com/zyplayer/doc/db/framework/utils/QuartzManagerUtils.java
index 5a523a12..b5010fde 100644
--- a/zyplayer-doc-db/src/main/java/com/zyplayer/doc/db/framework/utils/QuartzManagerUtils.java
+++ b/zyplayer-doc-db/src/main/java/com/zyplayer/doc/db/framework/utils/QuartzManagerUtils.java
@@ -29,8 +29,8 @@ public class QuartzManagerUtils {
/**
* 程序调度器
*/
- @Autowired
- private Scheduler scheduler;
+// @Autowired
+// private Scheduler scheduler;
@@ -38,92 +38,92 @@ public class QuartzManagerUtils {
/**
* 添加定时任务
*/
- public void add(Integer id, String cronExpression, String param, Boolean status) {
- try {
- // 构建job信息
- JobDetail jobDetail = JobBuilder.newJob(getClass(CLASS_NAME).getClass()).withIdentity(getKey(id)).usingJobData(PARAM_KEY, param).build();
- // 表达式调度构建器(即任务执行的时间)
- CronScheduleBuilder scheduleBuilder = CronScheduleBuilder.cronSchedule(cronExpression);
- // 按新的cronExpression表达式构建一个新的trigger
- CronTrigger trigger = TriggerBuilder.newTrigger().withIdentity(getKey(id)).withSchedule(scheduleBuilder).build();
- // 创建定时任务
- scheduler.scheduleJob(jobDetail, trigger);
- // 停止
- if (!status) {
- stop(id);
- }
- } catch (Exception e) {
- log.error("添加定时任务失败:{}", e.getMessage());
- }
- }
+// public void add(Integer id, String cronExpression, String param, Boolean status) {
+// try {
+// // 构建job信息
+// JobDetail jobDetail = JobBuilder.newJob(getClass(CLASS_NAME).getClass()).withIdentity(getKey(id)).usingJobData(PARAM_KEY, param).build();
+// // 表达式调度构建器(即任务执行的时间)
+// CronScheduleBuilder scheduleBuilder = CronScheduleBuilder.cronSchedule(cronExpression);
+// // 按新的cronExpression表达式构建一个新的trigger
+// CronTrigger trigger = TriggerBuilder.newTrigger().withIdentity(getKey(id)).withSchedule(scheduleBuilder).build();
+// // 创建定时任务
+// scheduler.scheduleJob(jobDetail, trigger);
+// // 停止
+// if (!status) {
+// stop(id);
+// }
+// } catch (Exception e) {
+// log.error("添加定时任务失败:{}", e.getMessage());
+// }
+// }
/**
* 编辑定时任务
*/
- public void update(Integer id, String cronExpression, String param, Boolean status) {
- try {
- // 判断是否存在,存在先删除
- if (scheduler.checkExists(JobKey.jobKey(getKey(id)))) {
- scheduler.deleteJob(JobKey.jobKey(getKey(id)));
- }
- // 再创建
- add(id, cronExpression, param, status);
- } catch (Exception e) {
- log.error("修改定时任务失败:{}", e.getMessage());
- }
- }
+// public void update(Integer id, String cronExpression, String param, Boolean status) {
+// try {
+// // 判断是否存在,存在先删除
+// if (scheduler.checkExists(JobKey.jobKey(getKey(id)))) {
+// scheduler.deleteJob(JobKey.jobKey(getKey(id)));
+// }
+// // 再创建
+// add(id, cronExpression, param, status);
+// } catch (Exception e) {
+// log.error("修改定时任务失败:{}", e.getMessage());
+// }
+// }
/**
* 暂停任务
*/
- public void stop(Integer id) {
- try {
- scheduler.pauseJob(JobKey.jobKey(getKey(id)));
- } catch (SchedulerException e) {
- // 暂停定时任务失败
- log.error("暂停定时任务失败:{}", e.getMessage());
- }
- }
+// public void stop(Integer id) {
+// try {
+// scheduler.pauseJob(JobKey.jobKey(getKey(id)));
+// } catch (SchedulerException e) {
+// // 暂停定时任务失败
+// log.error("暂停定时任务失败:{}", e.getMessage());
+// }
+// }
/**
* 恢复任务
*/
- public void start(Integer id) {
- try {
- scheduler.resumeJob(JobKey.jobKey(getKey(id)));
- } catch (SchedulerException e) {
- // 暂停定时任务失败
- log.error("启动定时任务失败:{}", e.getMessage());
- }
- }
+// public void start(Integer id) {
+// try {
+// scheduler.resumeJob(JobKey.jobKey(getKey(id)));
+// } catch (SchedulerException e) {
+// // 暂停定时任务失败
+// log.error("启动定时任务失败:{}", e.getMessage());
+// }
+// }
/**
* 立即执行一次
*/
- public void run(Integer id) {
- try {
- scheduler.triggerJob(JobKey.jobKey(getKey(id)));
- } catch (SchedulerException e) {
- // 暂停定时任务失败
- log.error("执行定时任务失败:{}", e.getMessage());
- }
- }
+// public void run(Integer id) {
+// try {
+// scheduler.triggerJob(JobKey.jobKey(getKey(id)));
+// } catch (SchedulerException e) {
+// // 暂停定时任务失败
+// log.error("执行定时任务失败:{}", e.getMessage());
+// }
+// }
/**
* 删除定时任务
*/
- public void delete(Integer id) {
- try {
- // 停止触发器
- scheduler.pauseTrigger(TriggerKey.triggerKey(getKey(id)));
- // 移除触发器
- scheduler.unscheduleJob(TriggerKey.triggerKey(getKey(id)));
- // 删除任务
- scheduler.deleteJob(JobKey.jobKey(getKey(id)));
- } catch (Exception e) {
- log.error("删除定时任务失败:{}", e.getMessage());
- }
- }
+// public void delete(Integer id) {
+// try {
+// // 停止触发器
+// scheduler.pauseTrigger(TriggerKey.triggerKey(getKey(id)));
+// // 移除触发器
+// scheduler.unscheduleJob(TriggerKey.triggerKey(getKey(id)));
+// // 删除任务
+// scheduler.deleteJob(JobKey.jobKey(getKey(id)));
+// } catch (Exception e) {
+// log.error("删除定时任务失败:{}", e.getMessage());
+// }
+// }
/**
* 根据类名获取类