xyz.migoo.framework.infra.controller.developer.job.JobController Maven / Gradle / Ivy
package xyz.migoo.framework.infra.controller.developer.job;
import jakarta.annotation.Resource;
import jakarta.validation.Valid;
import org.quartz.SchedulerException;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.web.bind.annotation.*;
import xyz.migoo.framework.common.pojo.PageResult;
import xyz.migoo.framework.common.pojo.Result;
import xyz.migoo.framework.quartz.core.util.CronUtils;
import xyz.migoo.framework.infra.controller.developer.job.vo.JobCreateReqVO;
import xyz.migoo.framework.infra.controller.developer.job.vo.JobPageReqVO;
import xyz.migoo.framework.infra.controller.developer.job.vo.JobRespVO;
import xyz.migoo.framework.infra.controller.developer.job.vo.JobUpdateReqVO;
import xyz.migoo.framework.infra.convert.developer.job.JobConvert;
import xyz.migoo.framework.infra.dal.dataobject.developer.job.JobDO;
import xyz.migoo.framework.infra.service.developer.job.JobService;
import java.util.Collections;
import java.util.Date;
import java.util.List;
import java.util.Objects;
@RestController
@RequestMapping("/developer/job")
public class JobController {
@Resource
private JobService service;
@PostMapping
@PreAuthorize("@ss.hasPermission('developer:job:add')")
public Result createJob(@Valid @RequestBody JobCreateReqVO createReqVO)
throws SchedulerException {
return Result.getSuccessful(service.createJob(createReqVO));
}
@PutMapping
@PreAuthorize("@ss.hasPermission('developer:job:update')")
public Result updateJob(@Valid @RequestBody JobUpdateReqVO updateReqVO)
throws SchedulerException {
service.updateJob(updateReqVO);
return Result.getSuccessful(true);
}
@PutMapping("/{id}")
@PreAuthorize("@ss.hasPermission('developer:job:update')")
public Result updateJobStatus(@PathVariable("id") Long id, @RequestParam("status") Integer status)
throws SchedulerException {
service.updateJobStatus(id, status);
return Result.getSuccessful(true);
}
@DeleteMapping("/{id}")
@PreAuthorize("@ss.hasPermission('developer:job:remove')")
public Result deleteJob(@PathVariable("id") Long id) throws SchedulerException {
service.deleteJob(id);
return Result.getSuccessful(true);
}
@PutMapping("/trigger")
@PreAuthorize("@ss.hasPermission('developer:job:trigger')")
public Result triggerJob(@RequestParam("id") Long id) throws SchedulerException {
service.triggerJob(id);
return Result.getSuccessful(true);
}
@GetMapping("/{id}")
@PreAuthorize("@ss.hasPermission('developer:job:query')")
public Result getJob(@PathVariable("id") Long id) {
JobDO job = service.getJob(id);
return Result.getSuccessful(JobConvert.INSTANCE.convert(job));
}
@GetMapping
@PreAuthorize("@ss.hasPermission('developer:job:query')")
public Result> getJobPage(@Valid JobPageReqVO pageVO) {
PageResult pageResult = service.getJobPage(pageVO);
return Result.getSuccessful(JobConvert.INSTANCE.convertPage(pageResult));
}
@GetMapping("/get_next_times")
@PreAuthorize("@ss.hasPermission('developer:job:query')")
public Result> getJobNextTimes(@RequestParam("id") Long id,
@RequestParam(value = "count", required = false, defaultValue = "5") Integer count) {
JobDO job = service.getJob(id);
if (Objects.isNull(job)) {
return Result.getSuccessful(Collections.emptyList());
}
return Result.getSuccessful(CronUtils.getNextTimes(job.getCronExpression(), count));
}
}