From 8a3db78cd0a4e0801e43fdd4e1f08596e5e232bc Mon Sep 17 00:00:00 2001 From: hang <872297557@qq.com> Date: Wed, 23 Aug 2023 17:48:56 +0800 Subject: [PATCH] =?UTF-8?q?=E9=A1=B9=E7=9B=AE=E9=82=AE=E4=BB=B6=E9=85=8D?= =?UTF-8?q?=E7=BD=AE=E4=BF=AE=E6=94=B9--020?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Helper/HangfireJobHelper.cs | 65 +++++++++++++++++++ .../Helper/InternationalizationHelper.cs | 65 ------------------- .../Service/Document/EmailSendService.cs | 8 ++- 3 files changed, 71 insertions(+), 67 deletions(-) create mode 100644 IRaCIS.Core.Application/Helper/HangfireJobHelper.cs diff --git a/IRaCIS.Core.Application/Helper/HangfireJobHelper.cs b/IRaCIS.Core.Application/Helper/HangfireJobHelper.cs new file mode 100644 index 000000000..a489d3b3a --- /dev/null +++ b/IRaCIS.Core.Application/Helper/HangfireJobHelper.cs @@ -0,0 +1,65 @@ +using Hangfire; +using IRaCIS.Core.Application.Service; +using IRaCIS.Core.Domain.Share; +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 methodCall, string cron) + //{ + // RecurringJob.AddOrUpdate(jobId, queueName, methodCall, cron); + //} + + + + //添加 或者更新定时任务 Id 要唯一标识一个定义任务 + public static void AddOrUpdateCronJob(string jobId, Expression> methodCall, string cron, string queueName="default") + { + RecurringJob.AddOrUpdate(jobId, queueName, methodCall, cron); + } + + public static void AddOrUpdateInitCronJob(string jobId, Expression> methodCall, string cron) + { + RecurringJob.AddOrUpdate(jobId, "sys_init", methodCall, cron); + } + + public static void RemoveCronJob(string jobId) + { + RecurringJob.RemoveIfExists(jobId); + } + + public static void ImmediatelyOnceOnlyJob(Expression methodCall) + { + BackgroundJob.Enqueue("immediately_once", methodCall); + } + + public static void ImmediatelyOnceOnlyJob(Expression> methodCall) + { + BackgroundJob.Enqueue("immediately_once", methodCall); + } + + public static void NotImmediatelyOnceOnlyJob(Expression methodCall,TimeSpan timeSpan) + { + BackgroundJob.Schedule("not_immediately_once", methodCall,timeSpan); + } + + public static void NotImmediatelyOnceOnlyJob(Expression> methodCall, TimeSpan timeSpan) + { + BackgroundJob.Schedule("not_immediately_once", methodCall, timeSpan); + } + + + } +} diff --git a/IRaCIS.Core.Application/Helper/InternationalizationHelper.cs b/IRaCIS.Core.Application/Helper/InternationalizationHelper.cs index 0a0edfb26..882a71448 100644 --- a/IRaCIS.Core.Application/Helper/InternationalizationHelper.cs +++ b/IRaCIS.Core.Application/Helper/InternationalizationHelper.cs @@ -106,73 +106,8 @@ namespace IRaCIS.Core.Application.Helper } - public static async Task InitInternationlizationDataAndWatchJsonFileAsync(IRepository _repository) - { - //查询数据库的数据 - var toJsonList = await _repository.Where(t => t.InternationalizationType == 1).Select(t => new - { - t.Code, - t.Value, - t.ValueCN - }).ToListAsync(); - - //组织成json 文件 - - var usJsonPath = Path.Combine(JsonFileFolder, StaticData.En_US_Json); - var cnJsonPath = Path.Combine(JsonFileFolder, StaticData.Zh_CN_Json); - //本地静态文件国际化需要 - foreach (var tojsonItem in toJsonList) - { - StaticData.En_US_Dic[tojsonItem.Code] = tojsonItem.Value; - StaticData.Zh_CN_Dic[tojsonItem.Code] = tojsonItem.ValueCN; - } - File.WriteAllText(usJsonPath, JsonConvert.SerializeObject(StaticData.En_US_Dic)); - File.WriteAllText(cnJsonPath, JsonConvert.SerializeObject(StaticData.Zh_CN_Dic)); - - - //监测Json文件变更 实时刷新数据 - - WatchJsonFile(usJsonPath); - WatchJsonFile(cnJsonPath); - - } - - public static void WatchJsonFile(string filePath) - { - if (!File.Exists(filePath)) - { - throw new BusinessValidationFailedException("国际化Json文件不存在"); - } - - FileSystemWatcher watcher = new FileSystemWatcher(Path.GetDirectoryName(filePath), Path.GetFileName(filePath)); - watcher.Changed += (sender, e) => LoadJsonFile(filePath); - watcher.EnableRaisingEvents = true; - - } - - - private static void LoadJsonFile(string filePath) - { - - IConfigurationBuilder builder = new ConfigurationBuilder().AddJsonFile(filePath); - - IConfigurationRoot enConfiguration = builder.Build(); - - foreach (IConfigurationSection section in enConfiguration.GetChildren()) - { - if (filePath.Contains(StaticData.En_US_Json)) - { - StaticData.En_US_Dic[section.Key] = section.Value; - - } - else - { - StaticData.Zh_CN_Dic[section.Key] = section.Value; - } - } - } } } diff --git a/IRaCIS.Core.Application/Service/Document/EmailSendService.cs b/IRaCIS.Core.Application/Service/Document/EmailSendService.cs index 715531af8..ae94e7f2a 100644 --- a/IRaCIS.Core.Application/Service/Document/EmailSendService.cs +++ b/IRaCIS.Core.Application/Service/Document/EmailSendService.cs @@ -6,6 +6,7 @@ using IRaCIS.Core.Domain.Models; using IRaCIS.Core.Domain.Share; using IRaCIS.Core.Infrastructure; using MailKit; +using Microsoft.Extensions.Options; using Microsoft.VisualBasic; using MimeKit; using System; @@ -34,11 +35,14 @@ namespace IRaCIS.Core.Application.Service private readonly IRepository _emailNoticeConfigRepository; private readonly IRepository _trialRepository; - public EmailSendService(IRepository trialEmailNoticeConfigRepository, IRepository emailNoticeConfigRepository, IRepository trialRepository) + + private readonly IOptionsMonitor _SystemEmailSendConfig; + public EmailSendService(IRepository trialEmailNoticeConfigRepository, IRepository emailNoticeConfigRepository, IRepository trialRepository, IOptionsMonitor systemEmailSendConfig) { _trialEmailNoticeConfigRepository = trialEmailNoticeConfigRepository; _emailNoticeConfigRepository = emailNoticeConfigRepository; _trialRepository = trialRepository; + _SystemEmailSendConfig = systemEmailSendConfig; } /// @@ -194,7 +198,7 @@ namespace IRaCIS.Core.Application.Service Func topicAndHtmlFunc = trialEmailConfig => { var topicStr = string.Format(_userInfo.IsEn_Us ? trialEmailConfig.EmailTopic : trialEmailConfig.EmailTopicCN, info.ResearchProgramNo,info.Code,info.VisitName); - var htmlBodyStr = string.Format(_userInfo.IsEn_Us ? trialEmailConfig.EmailHtmlContent : trialEmailConfig.EmailHtmlContentCN, info.ResearchProgramNo, info.Code, info.VisitName,_userInfo.UserName,content); + var htmlBodyStr = string.Format(_userInfo.IsEn_Us ? trialEmailConfig.EmailHtmlContent : trialEmailConfig.EmailHtmlContentCN, info.ResearchProgramNo, info.Code, info.VisitName,_userInfo.UserName,content, _SystemEmailSendConfig.CurrentValue.SiteUrl); return (topicStr, htmlBodyStr); };