package me.zhengjie.modules.quartz.rest; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.extern.slf4j.Slf4j; import me.zhengjie.aop.log.Log; import me.zhengjie.exception.BadRequestException; import me.zhengjie.modules.quartz.domain.QuartzJob; import me.zhengjie.modules.quartz.service.QuartzJobService; import me.zhengjie.modules.quartz.service.dto.JobQueryCriteria; import org.springframework.data.domain.Pageable; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; /** * @author Zheng Jie * @date 2019-01-07 */ @Slf4j @RestController @Api(tags = "系统:定时任务管理") @RequestMapping("/api/jobs") public class QuartzJobController { private static final String ENTITY_NAME = "quartzJob"; private final QuartzJobService quartzJobService; public QuartzJobController(QuartzJobService quartzJobService) { this.quartzJobService = quartzJobService; } @Log("查询定时任务") @ApiOperation("查询定时任务") @GetMapping @PreAuthorize("hasAnyRole('ADMIN','JOB_ALL','JOB_SELECT')") public ResponseEntity getJobs(JobQueryCriteria criteria, Pageable pageable){ return new ResponseEntity<>(quartzJobService.queryAll(criteria,pageable), HttpStatus.OK); } @ApiOperation("查询任务执行日志") @GetMapping(value = "/logs") @PreAuthorize("hasAnyRole('ADMIN','JOB_ALL','JOB_SELECT')") public ResponseEntity getJobLogs(JobQueryCriteria criteria, Pageable pageable){ return new ResponseEntity<>(quartzJobService.queryAllLog(criteria,pageable), HttpStatus.OK); } @Log("新增定时任务") @ApiOperation("新增定时任务") @PostMapping @PreAuthorize("hasAnyRole('ADMIN','JOB_ALL','JOB_CREATE')") public ResponseEntity create(@Validated @RequestBody QuartzJob resources){ if (resources.getId() != null) { throw new BadRequestException("A new "+ ENTITY_NAME +" cannot already have an ID"); } return new ResponseEntity<>(quartzJobService.create(resources),HttpStatus.CREATED); } @Log("修改定时任务") @ApiOperation("修改定时任务") @PutMapping @PreAuthorize("hasAnyRole('ADMIN','JOB_ALL','JOB_EDIT')") public ResponseEntity update(@Validated(QuartzJob.Update.class) @RequestBody QuartzJob resources){ quartzJobService.update(resources); return new ResponseEntity(HttpStatus.NO_CONTENT); } @Log("更改定时任务状态") @ApiOperation("更改定时任务状态") @PutMapping(value = "/{id}") @PreAuthorize("hasAnyRole('ADMIN','JOB_ALL','JOB_EDIT')") public ResponseEntity updateIsPause(@PathVariable Long id){ quartzJobService.updateIsPause(quartzJobService.findById(id)); return new ResponseEntity(HttpStatus.NO_CONTENT); } @Log("执行定时任务") @ApiOperation("执行定时任务") @PutMapping(value = "/exec/{id}") @PreAuthorize("hasAnyRole('ADMIN','JOB_ALL','JOB_EDIT')") public ResponseEntity execution(@PathVariable Long id){ quartzJobService.execution(quartzJobService.findById(id)); return new ResponseEntity(HttpStatus.NO_CONTENT); } @Log("删除定时任务") @ApiOperation("删除定时任务") @DeleteMapping(value = "/{id}") @PreAuthorize("hasAnyRole('ADMIN','JOB_ALL','JOB_DELETE')") public ResponseEntity delete(@PathVariable Long id){ quartzJobService.delete(quartzJobService.findById(id)); return new ResponseEntity(HttpStatus.OK); } }