diff --git a/IRaCIS.Core.API/Progranm.cs b/IRaCIS.Core.API/Progranm.cs index a242c3902..b57a9bd78 100644 --- a/IRaCIS.Core.API/Progranm.cs +++ b/IRaCIS.Core.API/Progranm.cs @@ -207,7 +207,7 @@ app.UseExceptionHandler(o => { }); app.UseIRacisHostStaticFileStore(env); //本地化 -app.UseLocalization(app.Services); + await app.UseLocalization(app.Services); app.UseForwardedHeaders(); diff --git a/IRaCIS.Core.API/_PipelineExtensions/LocalizationConfig.cs b/IRaCIS.Core.API/_PipelineExtensions/LocalizationConfig.cs index 260c3bb6c..564fb7262 100644 --- a/IRaCIS.Core.API/_PipelineExtensions/LocalizationConfig.cs +++ b/IRaCIS.Core.API/_PipelineExtensions/LocalizationConfig.cs @@ -1,18 +1,24 @@ -using IRaCIS.Core.Domain.Share; +using IRaCIS.Core.Application.Helper; +using IRaCIS.Core.Domain.Models; +using IRaCIS.Core.Domain.Share; +using IRaCIS.Core.Infra.EFCore; using IRaCIS.Core.Infrastructure.Extention; using Microsoft.AspNetCore.Builder; +using Microsoft.EntityFrameworkCore; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Localization; using System; using System.Collections.Generic; using System.Globalization; +using System.Linq; +using System.Threading.Tasks; namespace IRaCIS.Core.API { public static class LocalizationConfig { - public static void UseLocalization(this IApplicationBuilder app,IServiceProvider serviceProvider) + public static async Task UseLocalization(this IApplicationBuilder app,IServiceProvider serviceProvider) { var supportedCultures = new List { @@ -38,6 +44,24 @@ namespace IRaCIS.Core.API //设置国际化I18n var localizer = serviceProvider.GetRequiredService(); I18n.SetLocalizer(localizer); + + //初始化国际化 + + var _internationalizationRepository = serviceProvider.GetRequiredService>(); + + //查询数据库的数据 + var toJsonList = await _internationalizationRepository.Where(t => t.InternationalizationType == 1).Select(t => new IRCGlobalInfoDTO() + { + Code = t.Code, + Value = t.Value, + ValueCN = t.ValueCN, + Description = t.Description + }).ToListAsync(); + + + await InternationalizationHelper.BatchAddJsonKeyValueAsync(toJsonList); + + } } } diff --git a/IRaCIS.Core.API/_ServiceExtensions/MassTransitSetup.cs b/IRaCIS.Core.API/_ServiceExtensions/MassTransitSetup.cs index 9fa85fb74..57f7b0f5f 100644 --- a/IRaCIS.Core.API/_ServiceExtensions/MassTransitSetup.cs +++ b/IRaCIS.Core.API/_ServiceExtensions/MassTransitSetup.cs @@ -2,6 +2,7 @@ using IRaCIS.Core.Domain.BaseModel; using MassTransit; using Microsoft.Extensions.DependencyInjection; +using System; namespace IRaCIS.Core.API { @@ -30,12 +31,13 @@ namespace IRaCIS.Core.API // 自动扫描程序集中的消费者并进行注册 cfg.AddConsumers(typeof(UserSiteSurveySubmitedEventConsumer).Assembly); - //// 注册消费者 - //cfg.AddConsumer(); // 替换为你的消费者类 - //cfg.AddConsumer(); + + + //Uri schedulerEndpoint = new Uri("queue:scheduler"); + //cfg.AddMessageScheduler(schedulerEndpoint); cfg.AddPublishMessageScheduler(); - //cfg.AddHangfireConsumers(); + cfg.AddHangfireConsumers(); @@ -45,8 +47,11 @@ namespace IRaCIS.Core.API //https://github.com/MassTransit/Sample-Hangfire/blob/master/src/Sample.Hangfire.Console/Program.cs cfg.UsePublishMessageScheduler(); + //cfg.UseMessageScheduler(schedulerEndpoint); + + //使用 Hangfire 进行消息调度 - cfg.UseHangfireScheduler(); + //cfg.UseHangfireScheduler(); cfg.UseConsumeFilter(typeof(CultureInfoFilter<>), context, x => x.Include(type => type.IsAssignableTo(typeof(DomainEvent)))); diff --git a/IRaCIS.Core.Application/BackGroundJob/IRaCISCHangfireJob.cs b/IRaCIS.Core.Application/BackGroundJob/IRaCISCHangfireJob.cs index 18b02bbf5..1be20a1e4 100644 --- a/IRaCIS.Core.Application/BackGroundJob/IRaCISCHangfireJob.cs +++ b/IRaCIS.Core.Application/BackGroundJob/IRaCISCHangfireJob.cs @@ -1,9 +1,11 @@ using Hangfire; using Hangfire.Storage; using IRaCIS.Core.Application.Helper; +using IRaCIS.Core.Application.MassTransit.Consumer; using IRaCIS.Core.Domain.Models; using IRaCIS.Core.Domain.Share; using MassTransit; +using MassTransit.Mediator; using MassTransit.Scheduling; using Microsoft.Extensions.Logging; @@ -18,7 +20,8 @@ namespace IRaCIS.Core.Application.Service.BackGroundJob public class IRaCISCHangfireJob(ILogger _logger, IRepository _internationalizationRepository, IRepository _trialEmailNoticeConfigRepository, - IMessageScheduler _IMessageScheduler + IMessageScheduler _iMessageScheduler, + IBus _bus ) : IIRaCISHangfireJob { public static string JsonFileFolder = Path.Combine(AppContext.BaseDirectory, StaticData.Folder.Resources); @@ -28,19 +31,7 @@ namespace IRaCIS.Core.Application.Service.BackGroundJob { _logger.LogInformation("项目启动 hangfire 任务初始化 执行开始~"); - //初始化国际化 - //查询数据库的数据 - var toJsonList = await _internationalizationRepository.Where(t => t.InternationalizationType == 1).Select(t => new IRCGlobalInfoDTO() - { - Code = t.Code, - Value = t.Value, - ValueCN = t.ValueCN, - Description = t.Description - }).ToListAsync(); - - - await InternationalizationHelper.BatchAddJsonKeyValueAsync(toJsonList); //创建邮件定时任务 await InitSysAndTrialCronJobAsync(); @@ -80,7 +71,9 @@ namespace IRaCIS.Core.Application.Service.BackGroundJob break; } - + //var schedulerEndpoint = await _bus.GetSendEndpoint(new Uri("queue:hangfire")); + //await schedulerEndpoint.ScheduleRecurringSend(new Uri("queue:mt-message-queue"), new QCImageQuestionSchedule() { ScheduleId = jobId, CronExpression = "0 0/1 * 1/1 * ? *" }, new PollExternalSystem { }); + //await schedulerEndpoint.ScheduleRecurringSend(new Uri("queue:hangfire"), new QCImageQuestionSchedule() { ScheduleId = jobId + jobId, CronExpression = "0 0/1 * 1/1 * ? *" }, new PollExternalSystem { }); HangfireJobHelper.AddOrUpdateTrialCronJob(jobId, task.TrialId, task.BusinessScenarioEnum, task.EmailCron); @@ -88,7 +81,7 @@ namespace IRaCIS.Core.Application.Service.BackGroundJob } - + public class PollExternalSystem { } } diff --git a/IRaCIS.Core.Application/IRaCIS.Core.Application.xml b/IRaCIS.Core.Application/IRaCIS.Core.Application.xml index 21ebebc56..90b381918 100644 --- a/IRaCIS.Core.Application/IRaCIS.Core.Application.xml +++ b/IRaCIS.Core.Application/IRaCIS.Core.Application.xml @@ -12902,14 +12902,14 @@ 加急的医学反馈任务 通知MIM - + 加急的医学反馈任务 通知MIM - 加急的医学反馈任务 通知MIM + 加急的医学反馈任务 通知MIM (026,027) diff --git a/IRaCIS.Core.Application/MassTransit/Consumer/ReadingRelationEmailConsumer.cs b/IRaCIS.Core.Application/MassTransit/Consumer/ReadingRelationEmailConsumer.cs index 962d5d6c3..0b90b7909 100644 --- a/IRaCIS.Core.Application/MassTransit/Consumer/ReadingRelationEmailConsumer.cs +++ b/IRaCIS.Core.Application/MassTransit/Consumer/ReadingRelationEmailConsumer.cs @@ -107,7 +107,7 @@ public class UrgentMedicalReviewAddedEventConsumer( dictionValue[0], // 任务类型 {5} //dictionValue[1], // 阅片人是否同意 {6} dictionValue[2], // 审核状态 {6} - dictionValue[3], // 是否加急 {7} + dictionValue[3] // 是否加急 {7} ); diff --git a/IRaCIS.Core.Application/MassTransit/Consumer/TestConsumer.cs b/IRaCIS.Core.Application/MassTransit/Consumer/TestConsumer.cs index 0dbef2b9d..09d06fea3 100644 --- a/IRaCIS.Core.Application/MassTransit/Consumer/TestConsumer.cs +++ b/IRaCIS.Core.Application/MassTransit/Consumer/TestConsumer.cs @@ -70,7 +70,7 @@ public class TestMasstransitService : BaseService await _mediatorScoped.Publish(new MasstransiTestCommand { value = "message at " + DateTime.Now.ToString() }); - //await _scheduler.SchedulePublish(DateTime.Now.AddSeconds(10), new MasstransitHangfireTest() { value = "message at " + DateTime.Now.ToString() }); + await _scheduler.SchedulePublish(DateTime.Now.AddSeconds(10), new MasstransiTestCommand() { value = "message at " + DateTime.Now.ToString() }); return ResponseOutput.Ok(); } diff --git a/IRaCIS.Core.Application/MassTransit/Recurring/RecurringEmailConsumer.cs b/IRaCIS.Core.Application/MassTransit/Recurring/RecurringEmailConsumer.cs index fb35a334a..61ec2a89a 100644 --- a/IRaCIS.Core.Application/MassTransit/Recurring/RecurringEmailConsumer.cs +++ b/IRaCIS.Core.Application/MassTransit/Recurring/RecurringEmailConsumer.cs @@ -1,4 +1,5 @@ -using MassTransit; +using IRaCIS.Core.Application.MassTransit.Command; +using MassTransit; using MassTransit.Scheduling; using System; using System.Collections.Generic; @@ -22,9 +23,9 @@ public abstract class IRCRecurringSchedule : public string TimeZoneId { get; protected set; } public DateTimeOffset StartTime { get; protected set; } public DateTimeOffset? EndTime { get; protected set; } - public string ScheduleId { get; private set; } + public string ScheduleId { get; set; } public string ScheduleGroup { get; private set; } - public string CronExpression { get; protected set; } + public string CronExpression { get; set; } public string Description { get; protected set; } } @@ -53,4 +54,15 @@ public class ImageQCSchedule : IRCRecurringSchedule } +public class QCImageQuestionScheduleConsumer : IConsumer +{ + public Task Consume(ConsumeContext context) + { + Console.WriteLine(DateTime.Now); + + return Task.CompletedTask; + } +} + + diff --git a/irc_api.drone.yml b/irc_api.drone.yml index a6e09d6e3..5fcacf26d 100644 --- a/irc_api.drone.yml +++ b/irc_api.drone.yml @@ -78,7 +78,7 @@ steps: trigger: branch: - - Test_IRC_Net8 + - Test_IRC_Net8—_SCP_Disable --- kind: pipeline