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
+
-
-
-
+
+
+
+
+ Http://
+
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 传入参数
+
-
+