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 jobIds) { jobService.deleteJobs(jobIds); return ResultVO.ok(); } @ApiOperation("根据id获取任务") @GetMapping("/admin/jobs/{id}")//Spring的请求映射注解,{id}是路径参数,前端调用时需填充具体的任务ID //如:/admin/jobs/5 表示查询ID为5的定时任务 public ResultVO 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> 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> listJobGroup() { //返回值ResultVO>:返回包含所有任务分组名称的字符串列表 return ResultVO.ok(jobService.listJobGroups()); } }