using FlexJobApi.Core; using Furion.DatabaseAccessor; using Furion.FriendlyException; using Furion.Schedule; using MediatR; using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore.Metadata.Builders; using Microsoft.Extensions.Options; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace FlexJobApi.CommonServer.Application { /// /// 任务调度-作业 /// public class ScheduleJobDetailCommandHandler( IRepository repResource, ResourceHttpUtils resourceHttpUtils, ISchedulerFactory schedulerFactory ) : IRequestHandler { private readonly IRepository repResource = repResource; private readonly ResourceHttpUtils resourceHttpUtils = resourceHttpUtils; private readonly ISchedulerFactory schedulerFactory = schedulerFactory; /// /// 保存任务调度-作业 /// /// /// /// public Task Handle(SaveScheduleJobDetailCommand request, CancellationToken cancellationToken) { // 创建 HTTP 作业消息 var jobBuilder = JobBuilder .Create() .AddProperty(nameof(ResourceHttpJob), Schedular.Serialize(request)); // 添加作业 schedulerFactory.AddJob(jobBuilder, Triggers.Cron(request.Cron, Furion.TimeCrontab.CronStringFormat.WithSeconds)); return Task.FromResult(true); } } }