1
huanghongfeng
2025-02-28 4d5e2e2340899e8cb8dd6855fcdd9ce384d78351
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
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<WebResponseContent> StartSchedule()
        {
            try
            {
                await _quartzNetExtension.StartAsync();
                return WebResponseContent.Instance.OK("启动成功");
            }
            catch (Exception ex)
            {
                return WebResponseContent.Instance.Error("启动错误:" + ex.Message);
            }
        }
 
        [HttpGet, Route("StopSchedule"), AllowAnonymous]
        public Task<WebResponseContent> StopSchedule()
        {
            return _scheduler.StopScheduleAsync();
        }
 
        /// <summary>
        /// 暂停指定的计划任务
        /// </summary>
        /// <param name="sysSchedule"></param>
        /// <returns></returns>
        [HttpPost, Route("PauseJob"), AllowAnonymous]
        public Task<WebResponseContent> PauseJob([FromBody] DispatchInfoDTO sysSchedule)
        {
            return _scheduler.PauseJob(sysSchedule);
        }
 
        /// <summary>
        /// 恢复指定的计划任务
        /// </summary>
        /// <param name="sysSchedule"></param>
        /// <returns></returns>
        [HttpPost, Route("ResumeJob"), AllowAnonymous]
        public Task<WebResponseContent> ResumeJob([FromBody] DispatchInfoDTO sysSchedule)
        {
            return _scheduler.ResumeJob(sysSchedule);
        }
 
        /// <summary>
        /// 添加一个计划任务(映射程序集指定IJob实现类)
        /// </summary>
        /// <param name="sysSchedule"></param>
        /// <returns></returns>
        [HttpPost, Route("AddScheduleJob"), AllowAnonymous]
        public Task<WebResponseContent> AddScheduleJob([FromBody] DispatchInfoDTO sysSchedule)
        {
            return _scheduler.AddScheduleJobAsync(sysSchedule);
        }
 
        /// <summary>
        /// 立即执行 一个任务 执行一次
        /// </summary>
        /// <param name="sysSchedule"></param>
        /// <returns></returns>
        [HttpPost, Route("ExecuteJob"), AllowAnonymous]
        public Task<WebResponseContent> ExecuteJob([FromBody] DispatchInfoDTO sysSchedule)
        {
            return _scheduler.ExecuteJobAsync(sysSchedule);
        }
 
        ///// <summary>
        ///// 暂停所有计划任务
        ///// </summary>
        ///// <returns></returns>
        //[HttpPost, Route("PauseAllJob"), AllowAnonymous]
        //public Task<WebResponseContent> PauseAllJob()
        //{
        //    return _scheduler.PauseAllJobAsync();
        //}
 
        ///// <summary>
        ///// 恢复所有计划任务
        ///// </summary>
        ///// <returns></returns>
        //[HttpPost, Route("ResumeAllJob"), AllowAnonymous]
        //public Task<WebResponseContent> ResumeAllJob()
        //{
        //    return _scheduler.ResumeAllJobAsync();
        //}
 
        [HttpPost, Route("DeleteScheduleJob"), AllowAnonymous]
        public Task<WebResponseContent> DeleteScheduleJob([FromBody] DispatchInfoDTO sysSchedule)
        {
            return _scheduler.StopScheduleJobAsync(sysSchedule);
        }
    }
}