From 0f36672783e3cf614eec8a643db11c0fb95a3dd0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=A9=99=E5=AD=90?= <454313500@qq.com> Date: Mon, 24 Apr 2023 21:08:12 +0800 Subject: [PATCH] =?UTF-8?q?feat:=E6=B7=BB=E5=8A=A0=E6=89=A7=E8=A1=8C?= =?UTF-8?q?=E4=B8=80=E6=AC=A1=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Rbac/Services/Impl/TaskService.cs | 21 ++++++++++++++----- Yi.Furion.Net6/Yi.Furion.Web.Core/Startup.cs | 1 + 2 files changed, 17 insertions(+), 5 deletions(-) diff --git a/Yi.Furion.Net6/Yi.Furion.Application/Rbac/Services/Impl/TaskService.cs b/Yi.Furion.Net6/Yi.Furion.Application/Rbac/Services/Impl/TaskService.cs index 3a78b0df..a4565282 100644 --- a/Yi.Furion.Net6/Yi.Furion.Application/Rbac/Services/Impl/TaskService.cs +++ b/Yi.Furion.Net6/Yi.Furion.Application/Rbac/Services/Impl/TaskService.cs @@ -25,7 +25,7 @@ namespace Yi.Furion.Application.Rbac.Services.Impl /// /// [HttpGet("{jobId}")] - public SchedulerModel GetById([FromRoute]string jobId) + public SchedulerModel GetById([FromRoute] string jobId) { var result = _schedulerFactory.TryGetJob(jobId, out var scheduler); return scheduler.GetModel(); @@ -36,9 +36,9 @@ namespace Yi.Furion.Application.Rbac.Services.Impl /// /// [HttpGet("")] - public PagedResultDto GetList([FromQuery]TaskGetListInput input) + public PagedResultDto GetList([FromQuery] TaskGetListInput input) { - var data = _schedulerFactory.GetJobsOfModels().Skip(input.PageNum * input.PageSize).Take(input.PageSize).OrderByDescending(x => x.JobDetail.UpdatedTime).ToList(); + var data = _schedulerFactory.GetJobsOfModels().Skip((input.PageNum-1) * input.PageSize).Take(input.PageSize).OrderByDescending(x => x.JobDetail.UpdatedTime).ToList(); return new PagedResultDto(data.Count(), data); } @@ -53,7 +53,7 @@ namespace Yi.Furion.Application.Rbac.Services.Impl //jobBuilder var jobBuilder = JobBuilder.Create(input.AssemblyName, input.JobTypeFullName).SetJobId(input.JobId).SetGroupName(input.GroupName); - //.SetConcurrent(input.Concurrent).SetDescription(input.Description).SetProperties(Newtonsoft.Json.JsonConvert.SerializeObject(input.Properties)); + //.SetConcurrent(input.Concurrent).SetDescription(input.Description).SetProperties(Newtonsoft.Json.JsonConvert.SerializeObject(input.Properties)); //triggerBuilder //毫秒 @@ -122,7 +122,7 @@ namespace Yi.Furion.Application.Rbac.Services.Impl /// /// /// - public ScheduleResult Update(string jobId,TaskUpdateInput input) + public ScheduleResult Update(string jobId, TaskUpdateInput input) { //jobBuilder var jobBuilder = JobBuilder.Create(input.AssemblyName, input.JobTypeFullName).SetJobId(jobId).SetGroupName(input.GroupName) @@ -148,5 +148,16 @@ namespace Yi.Furion.Application.Rbac.Services.Impl var result = _schedulerFactory.TryUpdateJob(schedulerBuilder, out var scheduler); return result; } + + [HttpPost] + public bool RunOnce(string jobId) + { + var result = _schedulerFactory.TryGetJob(jobId, out var scheduler); + + var triggerBuilder = Triggers.Period(100).SetRunOnStart(true).SetMaxNumberOfRuns(1); + scheduler.AddTrigger(triggerBuilder); + //设置启动时执行一次,然后最大只执行一次 + return true; + } } } diff --git a/Yi.Furion.Net6/Yi.Furion.Web.Core/Startup.cs b/Yi.Furion.Net6/Yi.Furion.Web.Core/Startup.cs index 207406bb..2545d8c3 100644 --- a/Yi.Furion.Net6/Yi.Furion.Web.Core/Startup.cs +++ b/Yi.Furion.Net6/Yi.Furion.Web.Core/Startup.cs @@ -38,6 +38,7 @@ public class Startup : AppStartup // 注册作业,并配置作业触发器 // options.AddJob(Triggers.Period(10000)); // 表示每秒执行 options.AddJob(Triggers.Cron("0 0 0,12 ? * ?",CronStringFormat.WithSeconds)); // 表示每天凌晨与12点 + options.AddJob(Triggers.Period(1000000)); // 表示每天凌晨与12点 }); services.AddFileLogging("application-{0:yyyy}-{0:MM}-{0:dd}.log", options => {