93 lines
		
	
	
		
			3.0 KiB
		
	
	
	
		
			C#
		
	
	
			
		
		
	
	
			93 lines
		
	
	
		
			3.0 KiB
		
	
	
	
		
			C#
		
	
	
using Hangfire;
 | 
						|
using IRaCIS.Core.Application.Service;
 | 
						|
using IRaCIS.Core.Domain.Share;
 | 
						|
using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
 | 
						|
using NPOI.SS.Formula.Functions;
 | 
						|
using System;
 | 
						|
using System.Collections;
 | 
						|
using System.Collections.Generic;
 | 
						|
using System.Linq;
 | 
						|
using System.Linq.Expressions;
 | 
						|
using System.Text;
 | 
						|
using System.Threading.Tasks;
 | 
						|
 | 
						|
namespace IRaCIS.Core.Application.Helper
 | 
						|
{
 | 
						|
    public static class HangfireJobHelper
 | 
						|
    {
 | 
						|
 | 
						|
 | 
						|
 | 
						|
        //public static void AddOrUpdateCronJob(string jobId, string queueName, Expression<Action> methodCall, string cron)
 | 
						|
        //{
 | 
						|
        //    RecurringJob.AddOrUpdate(jobId, queueName, methodCall, cron);         
 | 
						|
        //}
 | 
						|
 | 
						|
 | 
						|
 | 
						|
        //添加 或者更新定时任务  Id 要唯一标识一个定义任务
 | 
						|
        public static void AddOrUpdateCronJob<T>(string jobId, Expression<Action<T>> methodCall, string cron, string queueName = "default")
 | 
						|
        {
 | 
						|
            RecurringJob.AddOrUpdate<T>(jobId, queueName, methodCall, cron);
 | 
						|
        }
 | 
						|
 | 
						|
        public static void AddOrUpdateInitCronJob<T>(string jobId, Expression<Action<T>> methodCall, string cron)
 | 
						|
        {
 | 
						|
            RecurringJob.AddOrUpdate<T>(jobId, "sys_init", methodCall, cron);
 | 
						|
        }
 | 
						|
 | 
						|
        public static void RemoveCronJob(string jobId)
 | 
						|
        {
 | 
						|
            RecurringJob.RemoveIfExists(jobId);
 | 
						|
 | 
						|
        }
 | 
						|
 | 
						|
 | 
						|
 | 
						|
        public static void ImmediatelyOnceOnlyJob(Expression<Action> methodCall)
 | 
						|
        {
 | 
						|
            BackgroundJob.Enqueue("immediately_once", methodCall);
 | 
						|
        }
 | 
						|
 | 
						|
        public static void ImmediatelyOnceOnlyJob<T>(Expression<Action<T>> methodCall)
 | 
						|
        {
 | 
						|
            BackgroundJob.Enqueue<T>("immediately_once", methodCall);
 | 
						|
        }
 | 
						|
 | 
						|
        public static void NotImmediatelyOnceOnlyJob(Expression<Action> methodCall, TimeSpan timeSpan)
 | 
						|
        {
 | 
						|
            BackgroundJob.Schedule("not_immediately_once", methodCall, timeSpan);
 | 
						|
        }
 | 
						|
 | 
						|
        public static void NotImmediatelyOnceOnlyJob<T>(Expression<Action<T>> methodCall, TimeSpan timeSpan)
 | 
						|
        {
 | 
						|
            BackgroundJob.Schedule<T>("not_immediately_once", methodCall, timeSpan);
 | 
						|
        }
 | 
						|
 | 
						|
 | 
						|
        public static void AddOrUpdateTrialCronJob (string jobId, Guid trialId, EmailBusinessScenario businessScenario, string emailCron)
 | 
						|
        {
 | 
						|
 | 
						|
            switch (businessScenario)
 | 
						|
            {
 | 
						|
 | 
						|
                case EmailBusinessScenario.QCTask:
 | 
						|
                    HangfireJobHelper.AddOrUpdateCronJob<IEmailSendService>(jobId, t => t.SendTrialImageQCTaskEmailAsync(trialId), emailCron);
 | 
						|
                    break;
 | 
						|
                case EmailBusinessScenario.QCQuestion:
 | 
						|
                    HangfireJobHelper.AddOrUpdateCronJob<IEmailSendService>(jobId, t => t.SendTrialQCQuestionEmailAsync(trialId), emailCron);
 | 
						|
                    break;
 | 
						|
                case EmailBusinessScenario.ImageQuestion:
 | 
						|
                    HangfireJobHelper.AddOrUpdateCronJob<IEmailSendService>(jobId, t => t.SendTrialImageQuestionAsync(trialId), emailCron);
 | 
						|
                    break;
 | 
						|
 | 
						|
                default:
 | 
						|
                    break;
 | 
						|
            }
 | 
						|
 | 
						|
        }
 | 
						|
    }
 | 
						|
}
 | 
						|
    
 | 
						|
 |