web-定时任务
This commit is contained in:
196
schoolNewsWeb/src/apis/crontab/index.ts
Normal file
196
schoolNewsWeb/src/apis/crontab/index.ts
Normal file
@@ -0,0 +1,196 @@
|
||||
/**
|
||||
* @description 定时任务相关API
|
||||
* @author yslg
|
||||
* @since 2025-10-25
|
||||
*/
|
||||
|
||||
import { api } from '@/apis/index';
|
||||
import type { CrontabTask, CrontabLog, ResultDomain, PageParam } from '@/types';
|
||||
|
||||
/**
|
||||
* 定时任务API服务
|
||||
*/
|
||||
export const crontabApi = {
|
||||
baseUrl: '/crontab',
|
||||
|
||||
// ==================== 定时任务管理 ====================
|
||||
|
||||
/**
|
||||
* 创建定时任务
|
||||
* @param task 任务对象
|
||||
* @returns Promise<ResultDomain<CrontabTask>>
|
||||
*/
|
||||
async createTask(task: CrontabTask): Promise<ResultDomain<CrontabTask>> {
|
||||
const response = await api.post<CrontabTask>(`${this.baseUrl}/task`, task);
|
||||
return response.data;
|
||||
},
|
||||
|
||||
/**
|
||||
* 更新定时任务
|
||||
* @param task 任务对象
|
||||
* @returns Promise<ResultDomain<CrontabTask>>
|
||||
*/
|
||||
async updateTask(task: CrontabTask): Promise<ResultDomain<CrontabTask>> {
|
||||
const response = await api.put<CrontabTask>(`${this.baseUrl}/task`, task);
|
||||
return response.data;
|
||||
},
|
||||
|
||||
/**
|
||||
* 删除定时任务
|
||||
* @param task 任务对象
|
||||
* @returns Promise<ResultDomain<CrontabTask>>
|
||||
*/
|
||||
async deleteTask(task: CrontabTask): Promise<ResultDomain<CrontabTask>> {
|
||||
const response = await api.delete<CrontabTask>(`${this.baseUrl}/task`, task);
|
||||
return response.data;
|
||||
},
|
||||
|
||||
/**
|
||||
* 根据ID查询任务
|
||||
* @param taskId 任务ID
|
||||
* @returns Promise<ResultDomain<CrontabTask>>
|
||||
*/
|
||||
async getTaskById(taskId: string): Promise<ResultDomain<CrontabTask>> {
|
||||
const response = await api.get<CrontabTask>(`${this.baseUrl}/task/${taskId}`);
|
||||
return response.data;
|
||||
},
|
||||
|
||||
/**
|
||||
* 查询任务列表
|
||||
* @param filter 过滤条件
|
||||
* @returns Promise<ResultDomain<CrontabTask>>
|
||||
*/
|
||||
async getTaskList(filter?: Partial<CrontabTask>): Promise<ResultDomain<CrontabTask>> {
|
||||
const response = await api.post<CrontabTask>(`${this.baseUrl}/task/list`, filter);
|
||||
return response.data;
|
||||
},
|
||||
|
||||
/**
|
||||
* 分页查询任务列表
|
||||
* @param filter 过滤条件
|
||||
* @param pageParam 分页参数
|
||||
* @returns Promise<ResultDomain<CrontabTask>>
|
||||
*/
|
||||
async getTaskPage(filter?: Partial<CrontabTask>, pageParam?: PageParam): Promise<ResultDomain<CrontabTask>> {
|
||||
const response = await api.post<CrontabTask>(`${this.baseUrl}/task/page`, {
|
||||
filter,
|
||||
pageParam: {
|
||||
pageNumber: pageParam?.page || 1,
|
||||
pageSize: pageParam?.size || 10
|
||||
}
|
||||
});
|
||||
return response.data;
|
||||
},
|
||||
|
||||
/**
|
||||
* 启动定时任务
|
||||
* @param taskId 任务ID
|
||||
* @returns Promise<ResultDomain<CrontabTask>>
|
||||
*/
|
||||
async startTask(taskId: string): Promise<ResultDomain<CrontabTask>> {
|
||||
const response = await api.post<CrontabTask>(`${this.baseUrl}/task/start/${taskId}`);
|
||||
return response.data;
|
||||
},
|
||||
|
||||
/**
|
||||
* 暂停定时任务
|
||||
* @param taskId 任务ID
|
||||
* @returns Promise<ResultDomain<CrontabTask>>
|
||||
*/
|
||||
async pauseTask(taskId: string): Promise<ResultDomain<CrontabTask>> {
|
||||
const response = await api.post<CrontabTask>(`${this.baseUrl}/task/pause/${taskId}`);
|
||||
return response.data;
|
||||
},
|
||||
|
||||
/**
|
||||
* 立即执行一次任务
|
||||
* @param taskId 任务ID
|
||||
* @returns Promise<ResultDomain<CrontabTask>>
|
||||
*/
|
||||
async executeTaskOnce(taskId: string): Promise<ResultDomain<CrontabTask>> {
|
||||
const response = await api.post<CrontabTask>(`${this.baseUrl}/task/execute/${taskId}`);
|
||||
return response.data;
|
||||
},
|
||||
|
||||
/**
|
||||
* 验证Cron表达式
|
||||
* @param cronExpression Cron表达式
|
||||
* @returns Promise<ResultDomain<string>>
|
||||
*/
|
||||
async validateCronExpression(cronExpression: string): Promise<ResultDomain<string>> {
|
||||
const response = await api.get<string>(`${this.baseUrl}/task/validate`, {
|
||||
cronExpression
|
||||
});
|
||||
return response.data;
|
||||
},
|
||||
|
||||
// ==================== 定时任务日志 ====================
|
||||
|
||||
/**
|
||||
* 根据任务ID查询日志
|
||||
* @param taskId 任务ID
|
||||
* @returns Promise<ResultDomain<CrontabLog>>
|
||||
*/
|
||||
async getLogsByTaskId(taskId: string): Promise<ResultDomain<CrontabLog>> {
|
||||
const response = await api.get<CrontabLog>(`${this.baseUrl}/log/task/${taskId}`);
|
||||
return response.data;
|
||||
},
|
||||
|
||||
/**
|
||||
* 查询日志列表
|
||||
* @param filter 过滤条件
|
||||
* @returns Promise<ResultDomain<CrontabLog>>
|
||||
*/
|
||||
async getLogList(filter?: Partial<CrontabLog>): Promise<ResultDomain<CrontabLog>> {
|
||||
const response = await api.post<CrontabLog>(`${this.baseUrl}/log/list`, filter);
|
||||
return response.data;
|
||||
},
|
||||
|
||||
/**
|
||||
* 分页查询日志列表
|
||||
* @param filter 过滤条件
|
||||
* @param pageParam 分页参数
|
||||
* @returns Promise<ResultDomain<CrontabLog>>
|
||||
*/
|
||||
async getLogPage(filter?: Partial<CrontabLog>, pageParam?: PageParam): Promise<ResultDomain<CrontabLog>> {
|
||||
const response = await api.post<CrontabLog>(`${this.baseUrl}/log/page`, {
|
||||
filter,
|
||||
pageParam: {
|
||||
pageNumber: pageParam?.page || 1,
|
||||
pageSize: pageParam?.size || 10
|
||||
}
|
||||
});
|
||||
return response.data;
|
||||
},
|
||||
|
||||
/**
|
||||
* 根据ID查询日志详情
|
||||
* @param logId 日志ID
|
||||
* @returns Promise<ResultDomain<CrontabLog>>
|
||||
*/
|
||||
async getLogById(logId: string): Promise<ResultDomain<CrontabLog>> {
|
||||
const response = await api.get<CrontabLog>(`${this.baseUrl}/log/${logId}`);
|
||||
return response.data;
|
||||
},
|
||||
|
||||
/**
|
||||
* 清理指定天数之前的日志
|
||||
* @param days 天数
|
||||
* @returns Promise<ResultDomain<number>>
|
||||
*/
|
||||
async cleanLogs(days: number): Promise<ResultDomain<number>> {
|
||||
const response = await api.delete<number>(`${this.baseUrl}/log/clean/${days}`);
|
||||
return response.data;
|
||||
},
|
||||
|
||||
/**
|
||||
* 删除日志
|
||||
* @param log 日志对象
|
||||
* @returns Promise<ResultDomain<CrontabLog>>
|
||||
*/
|
||||
async deleteLog(log: CrontabLog): Promise<ResultDomain<CrontabLog>> {
|
||||
const response = await api.delete<CrontabLog>(`${this.baseUrl}/log`, log);
|
||||
return response.data;
|
||||
}
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user