package com.iailab.module.shasteel.job.controller.admin; import com.iailab.framework.common.constant.Constant; import com.iailab.framework.common.pojo.CommonResult; import com.iailab.framework.common.pojo.PageResult; import com.iailab.framework.common.util.object.BeanUtils; import com.iailab.framework.common.util.validation.ValidationUtils; import com.iailab.framework.common.validation.group.AddGroup; import com.iailab.framework.common.validation.group.DefaultGroup; import com.iailab.framework.common.validation.group.UpdateGroup; import com.iailab.framework.tenant.core.context.TenantContextHolder; import com.iailab.module.shasteel.job.dto.ScheduleJobDTO; import com.iailab.module.shasteel.job.entity.ScheduleJobEntity; import com.iailab.module.shasteel.job.service.ScheduleJobService; import com.iailab.module.shasteel.job.vo.ScheduleJobReqVO; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Parameter; import io.swagger.v3.oas.annotations.Parameters; import io.swagger.v3.oas.annotations.tags.Tag; import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; import static com.iailab.framework.common.pojo.CommonResult.success; /** * 定时任务 * * @author Mark sunlightcs@gmail.com */ @RestController @RequestMapping("/job/schedule") @Tag(name = "定时任务") public class ScheduleJobController { @Resource private ScheduleJobService scheduleJobService; @GetMapping("page") @Operation(summary = "分页") @Parameters({ @Parameter(name = Constant.PAGE, description = "当前页码,从1开始", required = true) , @Parameter(name = Constant.LIMIT, description = "每页显示记录数", required = true) , @Parameter(name = Constant.ORDER_FIELD, description = "排序字段") , @Parameter(name = Constant.ORDER, description = "排序方式,可选值(asc、desc)") , @Parameter(name = "beanName", description = "beanName") }) @PreAuthorize("@ss.hasPermission('data:schedule:query')") public CommonResult> page(@Validated ScheduleJobReqVO reqVO){ reqVO.setTenantId(TenantContextHolder.getTenantId()); PageResult page = scheduleJobService.page(reqVO); return success(BeanUtils.toBean(page, ScheduleJobDTO.class)); } @GetMapping("info") @Operation(summary = "信息") @PreAuthorize("@ss.hasPermission('data:schedule:query')") public CommonResult info(@RequestParam("id") Long id){ ScheduleJobDTO schedule = scheduleJobService.get(id); return new CommonResult().setData(schedule); } @PostMapping("/create") @Operation(summary = "保存") @PreAuthorize("@ss.hasPermission('data:schedule:create')") public CommonResult save(@RequestBody ScheduleJobDTO dto){ ValidationUtils.validate(dto, AddGroup.class, DefaultGroup.class); scheduleJobService.save(dto); return new CommonResult(); } @PutMapping("/update") @Operation(summary = "修改") @PreAuthorize("@ss.hasPermission('data:schedule:update')") public CommonResult update(@RequestBody ScheduleJobDTO dto){ ValidationUtils.validate(dto, UpdateGroup.class, DefaultGroup.class); scheduleJobService.update(dto); return new CommonResult(); } @DeleteMapping("/delete") @Operation(summary = "删除") @PreAuthorize("@ss.hasPermission('data:schedule:delete')") public CommonResult delete(@RequestParam("id") Long id){ scheduleJobService.deleteBatch(id); return new CommonResult(); } @PutMapping("/run") @Operation(summary = "立即执行") public CommonResult run(@RequestParam("id") Long id){ Long[] ids = new Long[1]; ids[0] = id; scheduleJobService.run(ids); return new CommonResult(); } @PutMapping("/pause") @Operation(summary = "暂停") public CommonResult pause(@RequestParam("id") Long id){ Long[] ids = new Long[1]; ids[0] = id; scheduleJobService.pause(ids); return new CommonResult(); } @PutMapping("/resume") @Operation(summary = "恢复") public CommonResult resume(@RequestParam("id") Long id){ Long[] ids = new Long[1]; ids[0] = id; scheduleJobService.resume(ids); return new CommonResult(); } }