feat:添加执行一次接口

This commit is contained in:
橙子
2023-04-24 21:08:12 +08:00
parent 7d5a7e0fe8
commit 0f36672783
2 changed files with 17 additions and 5 deletions

View File

@@ -25,7 +25,7 @@ namespace Yi.Furion.Application.Rbac.Services.Impl
/// <param name="jobId"></param> /// <param name="jobId"></param>
/// <returns></returns> /// <returns></returns>
[HttpGet("{jobId}")] [HttpGet("{jobId}")]
public SchedulerModel GetById([FromRoute]string jobId) public SchedulerModel GetById([FromRoute] string jobId)
{ {
var result = _schedulerFactory.TryGetJob(jobId, out var scheduler); var result = _schedulerFactory.TryGetJob(jobId, out var scheduler);
return scheduler.GetModel(); return scheduler.GetModel();
@@ -36,9 +36,9 @@ namespace Yi.Furion.Application.Rbac.Services.Impl
/// </summary> /// </summary>
/// <returns></returns> /// <returns></returns>
[HttpGet("")] [HttpGet("")]
public PagedResultDto<SchedulerModel> GetList([FromQuery]TaskGetListInput input) public PagedResultDto<SchedulerModel> 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<SchedulerModel>(data.Count(), data); return new PagedResultDto<SchedulerModel>(data.Count(), data);
} }
@@ -53,7 +53,7 @@ namespace Yi.Furion.Application.Rbac.Services.Impl
//jobBuilder //jobBuilder
var jobBuilder = JobBuilder.Create(input.AssemblyName, input.JobTypeFullName).SetJobId(input.JobId).SetGroupName(input.GroupName); 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 //triggerBuilder
//毫秒 //毫秒
@@ -122,7 +122,7 @@ namespace Yi.Furion.Application.Rbac.Services.Impl
/// <param name="jobId"></param> /// <param name="jobId"></param>
/// <param name="input"></param> /// <param name="input"></param>
/// <returns></returns> /// <returns></returns>
public ScheduleResult Update(string jobId,TaskUpdateInput input) public ScheduleResult Update(string jobId, TaskUpdateInput input)
{ {
//jobBuilder //jobBuilder
var jobBuilder = JobBuilder.Create(input.AssemblyName, input.JobTypeFullName).SetJobId(jobId).SetGroupName(input.GroupName) 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); var result = _schedulerFactory.TryUpdateJob(schedulerBuilder, out var scheduler);
return result; 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;
}
} }
} }

View File

@@ -38,6 +38,7 @@ public class Startup : AppStartup
// 注册作业,并配置作业触发器 // 注册作业,并配置作业触发器
// options.AddJob<SystemDataJob>(Triggers.Period(10000)); // 表示每秒执行 // options.AddJob<SystemDataJob>(Triggers.Period(10000)); // 表示每秒执行
options.AddJob<SystemDataJob>(Triggers.Cron("0 0 0,12 ? * ?",CronStringFormat.WithSeconds)); // 表示每天凌晨与12点 options.AddJob<SystemDataJob>(Triggers.Cron("0 0 0,12 ? * ?",CronStringFormat.WithSeconds)); // 表示每天凌晨与12点
options.AddJob<TestJob>(Triggers.Period(1000000)); // 表示每天凌晨与12点
}); });
services.AddFileLogging("application-{0:yyyy}-{0:MM}-{0:dd}.log", options => services.AddFileLogging("application-{0:yyyy}-{0:MM}-{0:dd}.log", options =>
{ {