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);
}
}
}