You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

88 lines
3.6 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

package com.aurora.controller;
import com.aurora.annotation.OptLog;
import com.aurora.model.dto.JobDTO;
import com.aurora.model.dto.PageResultDTO;
import com.aurora.service.JobService;
import com.aurora.model.vo.*;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.List;
import static com.aurora.constant.OptTypeConstant.*;
@Api(tags = "定时任务模块")//定时任务管理的控制器类
@RestController
public class JobController {
@Autowired
private JobService jobService;
@OptLog(optType = SAVE)
@ApiOperation("添加定时任务")
@PostMapping("/admin/jobs")
public ResultVO<?> saveJob(@RequestBody JobVO jobVO) {
//JobVO jobVO封装添加定时任务的所有参数包含定时任务的名称、执行时间、执行逻辑相关配置等添加所需信息
jobService.saveJob(jobVO);
return ResultVO.ok();
}
@OptLog(optType = UPDATE)
@ApiOperation("修改定时任务")
@PutMapping("/admin/jobs")
public ResultVO<?> updateJob(@RequestBody JobVO jobVO) {
jobService.updateJob(jobVO);
return ResultVO.ok();
}
@OptLog(optType = DELETE)
@ApiOperation("删除定时任务")
@DeleteMapping("/admin/jobs")
public ResultVO<?> deleteJobById(@RequestBody List<Integer> jobIds) {
jobService.deleteJobs(jobIds);
return ResultVO.ok();
}
@ApiOperation("根据id获取任务")
@GetMapping("/admin/jobs/{id}")//Spring的请求映射注解{id}是路径参数前端调用时需填充具体的任务ID
//如:/admin/jobs/5 表示查询ID为5的定时任务
public ResultVO<JobDTO> getJobById(@PathVariable("id") Integer jobId) {
//@PathVariable("id"):Spring的参数接收注解获取URL路径中{id}对应的实际值赋值给Integer jobId
//JobDTO是定时任务的数据传输对象封装定时任务的详细信息比如任务名称、执行规则、状态等返回该ID对应的定时任务详情
return ResultVO.ok(jobService.getJobById(jobId));
}
@ApiOperation("获取任务列表")
@GetMapping("/admin/jobs")
public ResultVO<PageResultDTO<JobDTO>> listJobs(JobSearchVO jobSearchVO) {
//JobSearchVO jobSearchVO封装定时任务的查询条件比如任务名称关键词、任务分组、任务状态等
return ResultVO.ok(jobService.listJobs(jobSearchVO));
}
@ApiOperation("更改任务的状态")//比如启用、禁用任务
@PutMapping("/admin/jobs/status")
public ResultVO<?> updateJobStatus(@RequestBody JobStatusVO jobStatusVO) {
//JobStatusVO jobStatusVO封装任务状态修改的参数包含任务ID、要修改的目标状态等信息
jobService.updateJobStatus(jobStatusVO);
return ResultVO.ok();
}
@ApiOperation("执行某个任务")//说明接口功能是手动触发某个定时任务立即执行(无需等待定时时间)
@PutMapping("/admin/jobs/run")
public ResultVO<?> runJob(@RequestBody JobRunVO jobRunVO) {
//JobRunVO jobRunVO封装手动执行任务的参数包含要执行的任务ID等信息
jobService.runJob(jobRunVO);
return ResultVO.ok();
}
@ApiOperation("获取所有job分组")//用于后台查询、添加任务时选择分组
@GetMapping("/admin/jobs/jobGroups")
public ResultVO<List<String>> listJobGroup() {
//返回值ResultVO<List<String>>:返回包含所有任务分组名称的字符串列表
return ResultVO.ok(jobService.listJobGroups());
}
}