serv-定时任务

This commit is contained in:
2025-10-25 18:46:54 +08:00
parent 5d211faee1
commit 485e1b8be4
29 changed files with 3391 additions and 6 deletions

View File

@@ -53,5 +53,9 @@
<groupId>org.xyzh</groupId>
<artifactId>api-file</artifactId>
</dependency>
<dependency>
<groupId>org.xyzh</groupId>
<artifactId>api-crontab</artifactId>
</dependency>
</dependencies>
</project>

View File

@@ -0,0 +1,33 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.xyzh</groupId>
<artifactId>api</artifactId>
<version>${school-news.version}</version>
</parent>
<groupId>org.xyzh</groupId>
<artifactId>api-crontab</artifactId>
<version>${school-news.version}</version>
<properties>
<maven.compiler.source>21</maven.compiler.source>
<maven.compiler.target>21</maven.compiler.target>
</properties>
<dependencies>
<dependency>
<groupId>org.xyzh</groupId>
<artifactId>common-core</artifactId>
<version>${school-news.version}</version>
</dependency>
<dependency>
<groupId>org.xyzh</groupId>
<artifactId>common-dto</artifactId>
<version>${school-news.version}</version>
</dependency>
</dependencies>
</project>

View File

@@ -0,0 +1,169 @@
package org.xyzh.api.crontab;
import org.xyzh.common.core.domain.ResultDomain;
import org.xyzh.common.core.page.PageParam;
import org.xyzh.common.dto.crontab.TbCrontabTask;
import org.xyzh.common.dto.crontab.TbCrontabLog;
import org.xyzh.common.vo.CrontabTaskVO;
import org.xyzh.common.vo.CrontabLogVO;
/**
* @description 定时任务服务接口
* @filename CrontabService.java
* @author yslg
* @copyright xyzh
* @since 2025-10-25
*/
public interface CrontabService {
// ----------------定时任务管理--------------------------------
/**
* @description 创建定时任务
* @param task 任务对象
* @return ResultDomain<TbCrontabTask> 创建结果
* @author yslg
* @since 2025-10-25
*/
ResultDomain<TbCrontabTask> createTask(TbCrontabTask task);
/**
* @description 更新定时任务
* @param task 任务对象
* @return ResultDomain<TbCrontabTask> 更新结果
* @author yslg
* @since 2025-10-25
*/
ResultDomain<TbCrontabTask> updateTask(TbCrontabTask task);
/**
* @description 删除定时任务
* @param taskId 任务ID
* @return ResultDomain<TbCrontabTask> 删除结果
* @author yslg
* @since 2025-10-25
*/
ResultDomain<TbCrontabTask> deleteTask(String taskId);
/**
* @description 根据ID查询任务
* @param taskId 任务ID
* @return ResultDomain<TbCrontabTask> 任务信息
* @author yslg
* @since 2025-10-25
*/
ResultDomain<TbCrontabTask> getTaskById(String taskId);
/**
* @description 根据过滤条件查询任务列表
* @param filter 过滤条件
* @return ResultDomain<TbCrontabTask> 任务列表
* @author yslg
* @since 2025-10-25
*/
ResultDomain<TbCrontabTask> getTaskList(TbCrontabTask filter);
/**
* @description 分页查询任务列表
* @param filter 过滤条件
* @param pageParam 分页参数
* @return ResultDomain<TbCrontabTask> 任务列表
* @author yslg
* @since 2025-10-25
*/
ResultDomain<TbCrontabTask> getTaskPage(TbCrontabTask filter, PageParam pageParam);
/**
* @description 启动定时任务
* @param taskId 任务ID
* @return ResultDomain<TbCrontabTask> 启动结果
* @author yslg
* @since 2025-10-25
*/
ResultDomain<TbCrontabTask> startTask(String taskId);
/**
* @description 暂停定时任务
* @param taskId 任务ID
* @return ResultDomain<TbCrontabTask> 暂停结果
* @author yslg
* @since 2025-10-25
*/
ResultDomain<TbCrontabTask> pauseTask(String taskId);
/**
* @description 立即执行一次任务
* @param taskId 任务ID
* @return ResultDomain<TbCrontabTask> 执行结果
* @author yslg
* @since 2025-10-25
*/
ResultDomain<TbCrontabTask> executeTaskOnce(String taskId);
/**
* @description 验证Cron表达式
* @param cronExpression Cron表达式
* @return ResultDomain<String> 验证结果(返回下次执行时间)
* @author yslg
* @since 2025-10-25
*/
ResultDomain<String> validateCronExpression(String cronExpression);
// ----------------定时任务日志--------------------------------
/**
* @description 根据任务ID查询执行日志
* @param taskId 任务ID
* @return ResultDomain<TbCrontabLog> 日志列表
* @author yslg
* @since 2025-10-25
*/
ResultDomain<TbCrontabLog> getLogsByTaskId(String taskId);
/**
* @description 根据过滤条件查询日志列表
* @param filter 过滤条件
* @return ResultDomain<TbCrontabLog> 日志列表
* @author yslg
* @since 2025-10-25
*/
ResultDomain<TbCrontabLog> getLogList(TbCrontabLog filter);
/**
* @description 分页查询日志列表
* @param filter 过滤条件
* @param pageParam 分页参数
* @return ResultDomain<TbCrontabLog> 日志列表
* @author yslg
* @since 2025-10-25
*/
ResultDomain<TbCrontabLog> getLogPage(TbCrontabLog filter, PageParam pageParam);
/**
* @description 根据ID查询日志详情
* @param logId 日志ID
* @return ResultDomain<TbCrontabLog> 日志详情
* @author yslg
* @since 2025-10-25
*/
ResultDomain<TbCrontabLog> getLogById(String logId);
/**
* @description 清理指定天数之前的日志
* @param days 天数
* @return ResultDomain<Integer> 清理结果(返回清理条数)
* @author yslg
* @since 2025-10-25
*/
ResultDomain<Integer> cleanLogs(Integer days);
/**
* @description 删除任务执行日志
* @param logId 日志ID
* @return ResultDomain<TbCrontabLog> 删除结果
* @author yslg
* @since 2025-10-25
*/
ResultDomain<TbCrontabLog> deleteLog(String logId);
}

View File

@@ -23,6 +23,7 @@
<module>api-study</module>
<module>api-news</module>
<module>api-file</module>
<module>api-crontab</module>
</modules>
<properties>
@@ -82,6 +83,11 @@
<artifactId>api-file</artifactId>
<version>${school-news.version}</version>
</dependency>
<dependency>
<groupId>org.xyzh</groupId>
<artifactId>api-crontab</artifactId>
<version>${school-news.version}</version>
</dependency>
</dependencies>
</dependencyManagement>
<dependencies>