From 2bc336ebb2362e84d2df27816617e9c589285f46 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E4=B8=8D=E5=81=9A=E7=A0=81=E5=86=9C?= <599854767@qq.com> Date: Sun, 3 Apr 2022 13:00:30 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AE=9A=E6=97=B6=E4=BB=BB=E5=8A=A1=E6=96=B0?= =?UTF-8?q?=E5=A2=9E=E5=8A=A0http=E8=AF=B7=E6=B1=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Controllers/System/TasksController.cs | 34 ++++-- ZR.Model/System/Dto/TasksDto.cs | 11 +- ZR.Model/System/SysTasksQz.cs | 8 ++ ZR.Tasks/JobFactory.cs | 6 +- ZR.Tasks/TaskScheduler/Job_HttpRequest.cs | 33 ++++++ ZR.Vue/src/views/monitor/job/index.vue | 110 +++++++++++------- document/admin-mysql.sql | 2 + document/admin-sqlserver.sql | 2 + 8 files changed, 149 insertions(+), 57 deletions(-) create mode 100644 ZR.Tasks/TaskScheduler/Job_HttpRequest.cs diff --git a/ZR.Admin.WebApi/Controllers/System/TasksController.cs b/ZR.Admin.WebApi/Controllers/System/TasksController.cs index 651ca6e..754eef6 100644 --- a/ZR.Admin.WebApi/Controllers/System/TasksController.cs +++ b/ZR.Admin.WebApi/Controllers/System/TasksController.cs @@ -15,6 +15,7 @@ using ZR.Model.System; using ZR.Service.System.IService; using ZR.Tasks; using Snowflake.Core; +using Infrastructure.Extensions; namespace ZR.Admin.WebApi.Controllers { @@ -62,14 +63,14 @@ namespace ZR.Admin.WebApi.Controllers /// /// 编码 /// - [HttpGet("{id}")] + [HttpGet("get")] public IActionResult Get(string id) { if (!string.IsNullOrEmpty(id)) { return SUCCESS(_tasksQzService.GetId(id)); } - return SUCCESS(_tasksQzService.GetAll()); + return SUCCESS(null); } /// @@ -90,7 +91,10 @@ namespace ZR.Admin.WebApi.Controllers { throw new CustomException($"cron表达式不正确"); } - + if (string.IsNullOrEmpty(parm.ApiUrl) && parm.TaskType == 2) + { + throw new CustomException($"地址不能为空"); + } //从 Dto 映射到 实体 var tasksQz = parm.Adapt().ToCreate(); var worker = new IdWorker(1, 1); @@ -98,7 +102,13 @@ namespace ZR.Admin.WebApi.Controllers tasksQz.ID = worker.NextId().ToString(); tasksQz.IsStart = false; tasksQz.Create_by = HttpContext.GetName(); - + tasksQz.TaskType = parm.TaskType; + tasksQz.ApiUrl = parm.ApiUrl; + if (parm.ApiUrl.IfNotEmpty() && parm.TaskType == 2) + { + tasksQz.AssemblyName = "ZR.Tasks"; + tasksQz.ClassName = "TaskScheduler.HttpResultfulJob"; + } return SUCCESS(_tasksQzService.Add(tasksQz)); } @@ -125,7 +135,15 @@ namespace ZR.Admin.WebApi.Controllers throw new CustomException($"cron表达式不正确"); } var tasksQz = _tasksQzService.GetFirst(m => m.ID == parm.ID); - + if (string.IsNullOrEmpty(parm.ApiUrl) && parm.TaskType == 2) + { + throw new CustomException($"api地址不能为空"); + } + if (parm.ApiUrl.IfNotEmpty() && parm.TaskType == 2) + { + parm.AssemblyName = "ZR.Tasks"; + parm.ClassName = "TaskScheduler.HttpResultfulJob"; + } if (tasksQz.IsStart) { throw new CustomException($"该任务正在运行中,请先停止在更新"); @@ -142,10 +160,12 @@ namespace ZR.Admin.WebApi.Controllers TriggerType = parm.TriggerType, IntervalSecond = parm.IntervalSecond, JobParams = parm.JobParams, - Update_by = User.Identity.Name, + Update_by = HttpContextExtension.GetName(HttpContext), Update_time = DateTime.Now, BeginTime = parm.BeginTime, - EndTime = parm.EndTime + EndTime = parm.EndTime, + TaskType = parm.TaskType, + ApiUrl = parm.ApiUrl, }); if (response > 0) { diff --git a/ZR.Model/System/Dto/TasksDto.cs b/ZR.Model/System/Dto/TasksDto.cs index 3fa3cdf..9b0d9a9 100644 --- a/ZR.Model/System/Dto/TasksDto.cs +++ b/ZR.Model/System/Dto/TasksDto.cs @@ -112,6 +112,11 @@ namespace ZR.Model.System.Dto /// [Display(Name = "传入参数")] public string JobParams { get; set; } + public string ApiUrl { get; set; } + /// + /// 1、程序集任务 2、apiUrl任务 + /// + public int TaskType { get; set; } } /// @@ -219,6 +224,10 @@ namespace ZR.Model.System.Dto /// [Display(Name = "传入参数")] public string JobParams { get; set; } + public string ApiUrl { get; set; } + /// + /// 1、程序集任务 2、apiUrl任务 + /// + public int TaskType { get; set; } } - } diff --git a/ZR.Model/System/SysTasksQz.cs b/ZR.Model/System/SysTasksQz.cs index 58deb98..2827394 100644 --- a/ZR.Model/System/SysTasksQz.cs +++ b/ZR.Model/System/SysTasksQz.cs @@ -157,5 +157,13 @@ namespace ZR.Model.System /// 最后运行时间 /// public DateTime? LastRunTime { get; set; } + /// + /// api执行地址 + /// + public string ApiUrl { get; set; } + /// + /// 任务类型 1程序集2网络请求 + /// + public int TaskType { get; set; } } } diff --git a/ZR.Tasks/JobFactory.cs b/ZR.Tasks/JobFactory.cs index 13e3d50..1317ee3 100644 --- a/ZR.Tasks/JobFactory.cs +++ b/ZR.Tasks/JobFactory.cs @@ -7,7 +7,7 @@ namespace ZR.Tasks { public class JobFactory : IJobFactory { - private NLog.Logger logger = NLog.LogManager.GetCurrentClassLogger(); + private readonly NLog.Logger logger = NLog.LogManager.GetCurrentClassLogger(); /// /// 注入反射获取依赖对象 @@ -42,12 +42,10 @@ namespace ZR.Tasks public void ReturnJob(IJob job) { - var disposable = job as IDisposable; - if (disposable != null) + if (job is IDisposable disposable) { disposable.Dispose(); } - } } } diff --git a/ZR.Tasks/TaskScheduler/Job_HttpRequest.cs b/ZR.Tasks/TaskScheduler/Job_HttpRequest.cs new file mode 100644 index 0000000..b65a9ad --- /dev/null +++ b/ZR.Tasks/TaskScheduler/Job_HttpRequest.cs @@ -0,0 +1,33 @@ +using Infrastructure; +using Infrastructure.Attribute; +using Quartz; +using Quartz.Impl; +using Quartz.Impl.Triggers; +using System.Threading.Tasks; +using ZR.Service.System.IService; + +namespace ZR.Tasks.TaskScheduler +{ + [AppService(ServiceType = typeof(Job_HttpRequest), ServiceLifetime = LifeTime.Scoped)] + internal class Job_HttpRequest : JobBase, IJob + { + private readonly ISysTasksQzService tasksQzService; + + public Job_HttpRequest(ISysTasksQzService tasksQzService) + { + this.tasksQzService = tasksQzService; + } + public async Task Execute(IJobExecutionContext context) + { + await ExecuteJob(context, async () => await Run(context)); + } + public async Task Run(IJobExecutionContext context) + { + AbstractTrigger trigger = (context as JobExecutionContextImpl).Trigger as AbstractTrigger; + var info = await tasksQzService.GetByIdAsync(trigger.Name); + + var result = await HttpHelper.HttpPostAsync("http://" + info.ApiUrl, info.JobParams); + //Console.WriteLine(result); + } + } +} diff --git a/ZR.Vue/src/views/monitor/job/index.vue b/ZR.Vue/src/views/monitor/job/index.vue index d24036b..f08e1b8 100644 --- a/ZR.Vue/src/views/monitor/job/index.vue +++ b/ZR.Vue/src/views/monitor/job/index.vue @@ -77,46 +77,71 @@ - +
{{form.id}}
- + - + - + - - - + + + + 执行程序集 + 执行url + - - - + + + + + + - + + + + + + + + 传入参数 + - +