using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Mvc; using WIDESEAWCS_Core; using WIDESEAWCS_QuartzJob; using WIDESEAWCS_QuartzJob.DTO; using WIDESEAWCS_QuartzJob.QuartzNet; namespace WIDESEAWCS_Server.Controllers.QuartzJob { [Route("api/Scheduler")] [ApiController] public class SchedulerController : ControllerBase { private readonly ISchedulerCenter _scheduler; private readonly QuartzNetExtension _quartzNetExtension; public SchedulerController(ISchedulerCenter scheduler, QuartzNetExtension quartzNetExtension) { _scheduler = scheduler; _quartzNetExtension = quartzNetExtension; } [HttpGet, Route("StartSchedule"), AllowAnonymous] public async Task StartSchedule() { try { await _quartzNetExtension.StartAsync(); return WebResponseContent.Instance.OK("启动成功"); } catch (Exception ex) { return WebResponseContent.Instance.Error("启动错误:" + ex.Message); } } [HttpGet, Route("StopSchedule"), AllowAnonymous] public Task StopSchedule() { return _scheduler.StopScheduleAsync(); } /// /// 暂停指定的计划任务 /// /// /// [HttpPost, Route("PauseJob"), AllowAnonymous] public Task PauseJob([FromBody] DispatchInfoDTO sysSchedule) { return _scheduler.PauseJob(sysSchedule); } /// /// 恢复指定的计划任务 /// /// /// [HttpPost, Route("ResumeJob"), AllowAnonymous] public Task ResumeJob([FromBody] DispatchInfoDTO sysSchedule) { return _scheduler.ResumeJob(sysSchedule); } /// /// 添加一个计划任务(映射程序集指定IJob实现类) /// /// /// [HttpPost, Route("AddScheduleJob"), AllowAnonymous] public Task AddScheduleJob([FromBody] DispatchInfoDTO sysSchedule) { return _scheduler.AddScheduleJobAsync(sysSchedule); } /// /// 立即执行 一个任务 执行一次 /// /// /// [HttpPost, Route("ExecuteJob"), AllowAnonymous] public Task ExecuteJob([FromBody] DispatchInfoDTO sysSchedule) { return _scheduler.ExecuteJobAsync(sysSchedule); } ///// ///// 暂停所有计划任务 ///// ///// //[HttpPost, Route("PauseAllJob"), AllowAnonymous] //public Task PauseAllJob() //{ // return _scheduler.PauseAllJobAsync(); //} ///// ///// 恢复所有计划任务 ///// ///// //[HttpPost, Route("ResumeAllJob"), AllowAnonymous] //public Task ResumeAllJob() //{ // return _scheduler.ResumeAllJobAsync(); //} [HttpPost, Route("DeleteScheduleJob"), AllowAnonymous] public Task DeleteScheduleJob([FromBody] DispatchInfoDTO sysSchedule) { return _scheduler.StopScheduleJobAsync(sysSchedule); } } }