diff --git a/IRaCIS.Core.API/Progranm.cs b/IRaCIS.Core.API/Progranm.cs index a3b23aa44..e45bd4215 100644 --- a/IRaCIS.Core.API/Progranm.cs +++ b/IRaCIS.Core.API/Progranm.cs @@ -22,6 +22,7 @@ using Newtonsoft.Json; using Serilog; using System; using System.Collections.Generic; +using System.Globalization; using System.IO; using System.Reflection; using System.Runtime.InteropServices; @@ -29,6 +30,10 @@ using System.Runtime.InteropServices; AppContext.SetSwitch("Npgsql.EnableLegacyTimestampBehavior", true); AppContext.SetSwitch("Npgsql.DisableDateTimeInfinityConversions", true); + +Console.WriteLine("Startup Culture: " + CultureInfo.CurrentCulture.Name); +Console.WriteLine("Startup UI Culture: " + CultureInfo.CurrentUICulture.Name); + #region 获取环境变量 //以配置文件为准,否则 从url中取环境值(服务以命令行传递参数启动,配置文件配置了就不需要传递环境参数) var config = new ConfigurationBuilder() diff --git a/IRaCIS.Core.API/appsettings.Prod_IRC.json b/IRaCIS.Core.API/appsettings.Prod_IRC.json index 76a2fcad4..2baac3bf2 100644 --- a/IRaCIS.Core.API/appsettings.Prod_IRC.json +++ b/IRaCIS.Core.API/appsettings.Prod_IRC.json @@ -12,6 +12,12 @@ //"RemoteNew": "Server=prod_mssql_standard,1433;Database=Prod_IRC;User ID=sa;Password=zhanying@2021;TrustServerCertificate=true", //"Hangfire": "Server=prod_mssql_standard,1433;Database=Prod_IRC_Hangfire;User ID=sa;Password=zhanying@2021;TrustServerCertificate=true" }, + "WeComNoticeConfig": { + "IsOpenWeComNotice": true, + "WebhookUrl": "https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=4355b98e-1e72-4678-8dfb-2fc6ad0bf449", //4355b98e-1e72-4678-8dfb-2fc6ad0bf449 //cdd97aab-d256-4f07-9145-a0a2b1555322 + "APINoticeUserList": [ "u", "wait..." ], + "VueNoticeUserList": [ "wangxiaoshuang", "6b7717a31647293621697b96f74e6f3d" ] + }, "ObjectStoreService": { "ObjectStoreUse": "AliyunOSS", "AliyunOSS": { diff --git a/IRaCIS.Core.API/appsettings.Test_IRC.json b/IRaCIS.Core.API/appsettings.Test_IRC.json index 41d61542b..d4cce6913 100644 --- a/IRaCIS.Core.API/appsettings.Test_IRC.json +++ b/IRaCIS.Core.API/appsettings.Test_IRC.json @@ -18,6 +18,12 @@ // Hangfire 定时任务数据库链接字符串 "Hangfire": "Server=106.14.89.110,1435;Database=Test_IRC_Hangfire;User ID=sa;Password=xc@123456;TrustServerCertificate=true" }, + "WeComNoticeConfig": { + "IsOpenWeComNotice": true, + "WebhookUrl": "https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=4355b98e-1e72-4678-8dfb-2fc6ad0bf449", //4355b98e-1e72-4678-8dfb-2fc6ad0bf449 //cdd97aab-d256-4f07-9145-a0a2b1555322 + "APINoticeUserList": [ "u", "wait..." ], + "VueNoticeUserList": [ "wangxiaoshuang", "6b7717a31647293621697b96f74e6f3d" ] + }, // 对象存储服务配置 "ObjectStoreService": { // 使用的对象存储服务类型 diff --git a/IRaCIS.Core.API/appsettings.US_Prod_IRC.json b/IRaCIS.Core.API/appsettings.US_Prod_IRC.json index a2dd4af63..fcc011556 100644 --- a/IRaCIS.Core.API/appsettings.US_Prod_IRC.json +++ b/IRaCIS.Core.API/appsettings.US_Prod_IRC.json @@ -12,7 +12,12 @@ //"RemoteNew": "Server=44.210.231.169,1435;Database=US_IRC;User ID=sa;Password=xc@123456;TrustServerCertificate=true", //"Hangfire": "Server=44.210.231.169,1435;Database=US_IRC_Hangfire;User ID=sa;Password=xc@123456;TrustServerCertificate=true", }, - + "WeComNoticeConfig": { + "IsOpenWeComNotice": true, + "WebhookUrl": "https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=4355b98e-1e72-4678-8dfb-2fc6ad0bf449", //4355b98e-1e72-4678-8dfb-2fc6ad0bf449 //cdd97aab-d256-4f07-9145-a0a2b1555322 + "APINoticeUserList": [ "u", "wait..." ], + "VueNoticeUserList": [ "wangxiaoshuang", "6b7717a31647293621697b96f74e6f3d" ] + }, "ObjectStoreService": { "ObjectStoreUse": "AWS", "MinIO": { diff --git a/IRaCIS.Core.API/appsettings.US_Uat_IRC.json b/IRaCIS.Core.API/appsettings.US_Uat_IRC.json index 69c063ea0..2300abca3 100644 --- a/IRaCIS.Core.API/appsettings.US_Uat_IRC.json +++ b/IRaCIS.Core.API/appsettings.US_Uat_IRC.json @@ -13,6 +13,12 @@ "RemoteNew": "Server=3.226.182.187,1435;Database=US_Uat_IRC;User ID=sa;Password=xc@123456;TrustServerCertificate=true", "Hangfire": "Server=3.226.182.187,1435;Database=US_Uat_IRC_Hangfire;User ID=sa;Password=xc@123456;TrustServerCertificate=true" }, + "WeComNoticeConfig": { + "IsOpenWeComNotice": true, + "WebhookUrl": "https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=4355b98e-1e72-4678-8dfb-2fc6ad0bf449", //4355b98e-1e72-4678-8dfb-2fc6ad0bf449 //cdd97aab-d256-4f07-9145-a0a2b1555322 + "APINoticeUserList": [ "u", "wait..." ], + "VueNoticeUserList": [ "wangxiaoshuang", "6b7717a31647293621697b96f74e6f3d" ] + }, "ObjectStoreService": { diff --git a/IRaCIS.Core.API/appsettings.Uat_IRC.json b/IRaCIS.Core.API/appsettings.Uat_IRC.json index e4030836b..06099ad7a 100644 --- a/IRaCIS.Core.API/appsettings.Uat_IRC.json +++ b/IRaCIS.Core.API/appsettings.Uat_IRC.json @@ -10,6 +10,12 @@ "RemoteNew": "Server=101.132.253.119,1435;Database=Uat_IRC;User ID=sa;Password=xc@123456;TrustServerCertificate=true", "Hangfire": "Server=101.132.253.119,1435;Database=Uat_IRC_Hangfire;User ID=sa;Password=xc@123456;TrustServerCertificate=true" }, + "WeComNoticeConfig": { + "IsOpenWeComNotice": true, + "WebhookUrl": "https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=4355b98e-1e72-4678-8dfb-2fc6ad0bf449", //4355b98e-1e72-4678-8dfb-2fc6ad0bf449 //cdd97aab-d256-4f07-9145-a0a2b1555322 + "APINoticeUserList": [ "u", "wait..." ], + "VueNoticeUserList": [ "wangxiaoshuang", "6b7717a31647293621697b96f74e6f3d" ] + }, "ObjectStoreService": { "ObjectStoreUse": "AliyunOSS", diff --git a/IRaCIS.Core.API/appsettings.json b/IRaCIS.Core.API/appsettings.json index 08102fb62..4889af5de 100644 --- a/IRaCIS.Core.API/appsettings.json +++ b/IRaCIS.Core.API/appsettings.json @@ -43,12 +43,6 @@ } ] }, - "WeComNoticeConfig": { - "IsOpenWeComNotice": true, - "WebhookUrl": "https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=4355b98e-1e72-4678-8dfb-2fc6ad0bf449", //4355b98e-1e72-4678-8dfb-2fc6ad0bf449 //cdd97aab-d256-4f07-9145-a0a2b1555322 - "APINoticeUserList": [ "u","wait..." ], - "VueNoticeUserList": [ "wangxiaoshuang", "6b7717a31647293621697b96f74e6f3d" ] - }, "IRaCISImageStore": { "SwitchingMode": "RemainingDiskCapacity", "SwitchingRatio": 80, diff --git a/IRaCIS.Core.Application/Helper/OtherTool/WeComNotifier.cs b/IRaCIS.Core.Application/Helper/OtherTool/WeComNotifier.cs index db100aa68..7af0b625c 100644 --- a/IRaCIS.Core.Application/Helper/OtherTool/WeComNotifier.cs +++ b/IRaCIS.Core.Application/Helper/OtherTool/WeComNotifier.cs @@ -48,8 +48,8 @@ public static class WeComNotifier if (!string.IsNullOrWhiteSpace(stack)) { stack = stack.Replace("\n", "\n> "); - if (stack.Length > 1200) - stack = stack[..1200] + "...(已截断)"; + if (stack.Length > 600) + stack = stack[..600] + "...(已截断)"; } var markdown = $@"## 🚨 系统告警 diff --git a/IRaCIS.Core.Application/MassTransit/Extension/ConsumeExceptionFilter.cs b/IRaCIS.Core.Application/MassTransit/Extension/ConsumeExceptionFilter.cs index 95466a916..6a4aba89c 100644 --- a/IRaCIS.Core.Application/MassTransit/Extension/ConsumeExceptionFilter.cs +++ b/IRaCIS.Core.Application/MassTransit/Extension/ConsumeExceptionFilter.cs @@ -49,7 +49,8 @@ public class ConsumeExceptionFilter(ILogger> _logge Env = baseUrl, UserName = "MassTransit 自动触发邮件", Api = "", - Message = $"异常信息:{exception.Message} 堆栈信息:[{exception.StackTrace}", + Message = $"异常信息:{exception.Message} ", + Stack = exception.StackTrace, AtUsers = userList ?? [] } ); diff --git a/IRaCIS.Core.Application/MassTransit/Recurring/IRRecurringConsumer.cs b/IRaCIS.Core.Application/MassTransit/Recurring/IRRecurringConsumer.cs index 5cd6d0064..791843c2b 100644 --- a/IRaCIS.Core.Application/MassTransit/Recurring/IRRecurringConsumer.cs +++ b/IRaCIS.Core.Application/MassTransit/Recurring/IRRecurringConsumer.cs @@ -37,7 +37,12 @@ namespace IRaCIS.Core.Application.MassTransit.Recurring public async Task Consume(ConsumeContext context) { - var isEn_US = CultureInfo.CurrentCulture.Name == StaticData.CultureInfo.en_US; + var isEn_US = context.Message.CultureInfoName == StaticData.CultureInfo.en_US; + + //设置当前事件传递过来的语言 + var culture = context.Message.CultureInfoName; + CultureInfo.CurrentCulture = new CultureInfo(culture); + var trialId = context.Message.TrialId; var trialInfo = await _trialRepository.FirstOrDefaultAsync(t => t.Id == trialId); diff --git a/IRaCIS.Core.Application/MassTransit/Recurring/QCRecurringEmailConsumer.cs b/IRaCIS.Core.Application/MassTransit/Recurring/QCRecurringEmailConsumer.cs index 1a9e733bf..b3862f003 100644 --- a/IRaCIS.Core.Application/MassTransit/Recurring/QCRecurringEmailConsumer.cs +++ b/IRaCIS.Core.Application/MassTransit/Recurring/QCRecurringEmailConsumer.cs @@ -7,6 +7,7 @@ using MassTransit.Scheduling; using Microsoft.Extensions.Options; using System; using System.Collections.Generic; +using System.Globalization; using System.Linq; using System.Text; using System.Threading.Tasks; @@ -34,7 +35,11 @@ public class QCImageQuestionRecurringEventConsumer(IRepository _trialRepo { var trialId = context.Message.TrialId; - var isEn_us = false; + var isEn_us = context.Message.CultureInfoName == StaticData.CultureInfo.en_US; + + //设置当前事件传递过来的语言 + var culture = context.Message.CultureInfoName; + CultureInfo.CurrentCulture = new CultureInfo(culture); var trialInfo = await _trialRepository.Where(t => t.Id == trialId).Select(t => new { t.ResearchProgramNo, t.ExperimentName, t.TrialCode, t.TrialStatusStr }).FirstNotNullAsync(); @@ -102,7 +107,12 @@ public class CRCImageQuestionRecurringEventConsumer(IRepository _trialRep { var trialId = context.Message.TrialId; - var isEn_us = false; + var isEn_us = context.Message.CultureInfoName == StaticData.CultureInfo.en_US; + + //设置当前事件传递过来的语言 + var culture = context.Message.CultureInfoName; + CultureInfo.CurrentCulture = new CultureInfo(culture); + var trialInfo = await _trialRepository.Where(t => t.Id == trialId).Select(t => new { t.ResearchProgramNo, t.ExperimentName, t.TrialCode, t.TrialStatusStr, t.DeclarationTypeEnumList }).FirstNotNullAsync(); //找到 该项目的IQC 用户Id @@ -173,7 +183,11 @@ public class ImageQCRecurringEventConsumer(IRepository _trialRepository, { var trialId=context.Message.TrialId; - var isEn_us = false; + var isEn_us = context.Message.CultureInfoName == StaticData.CultureInfo.en_US; + + //设置当前事件传递过来的语言 + var culture = context.Message.CultureInfoName; + CultureInfo.CurrentCulture = new CultureInfo(culture); var trialInfo = await _trialRepository.Where(t => t.Id == trialId).Select(t => new { t.ResearchProgramNo, t.ExperimentName, t.TrialCode, t.TrialStatusStr }).FirstNotNullAsync(); diff --git a/IRaCIS.Core.Application/MassTransit/Recurring/SystemDocumentConsumer.cs b/IRaCIS.Core.Application/MassTransit/Recurring/SystemDocumentConsumer.cs index 678b63e54..4497bf8f6 100644 --- a/IRaCIS.Core.Application/MassTransit/Recurring/SystemDocumentConsumer.cs +++ b/IRaCIS.Core.Application/MassTransit/Recurring/SystemDocumentConsumer.cs @@ -42,7 +42,12 @@ namespace IRaCIS.Core.Application.MassTransit.Recurring DateTime now = DateTime.Now; Console.WriteLine("发送定时过期提醒"); - var isEn_US = CultureInfo.CurrentCulture.Name == StaticData.CultureInfo.en_US; + var isEn_US = context.Message.CultureInfoName == StaticData.CultureInfo.en_US; + + //设置当前事件传递过来的语言 + var culture = context.Message.CultureInfoName; + CultureInfo.CurrentCulture = new CultureInfo(culture); + var systemDocQuery = from sysDoc in _systemDocumentRepository.AsQueryable(false) from identityUser in _identityUserRepository.AsQueryable(false).Where(t => t.UserRoleList.Where(t => t.IsUserRoleDisabled == false).Any(t => sysDoc.NeedConfirmedUserTypeList.AsQueryable().Any(c => c.NeedConfirmUserTypeId == t.UserTypeId))) @@ -150,7 +155,11 @@ namespace IRaCIS.Core.Application.MassTransit.Recurring public async Task Consume(ConsumeContext context) { - var isEn_US = CultureInfo.CurrentCulture.Name == StaticData.CultureInfo.en_US; + var isEn_US = context.Message.CultureInfoName == StaticData.CultureInfo.en_US; + + //设置当前事件传递过来的语言 + var culture = context.Message.CultureInfoName; + CultureInfo.CurrentCulture = new CultureInfo(culture); // 记录是否只发送给新增角色的日志 if (context.Message.NewUserTypeIds != null && context.Message.NewUserTypeIds.Any()) diff --git a/IRaCIS.Core.Application/MassTransit/Recurring/TrialDocumentConsumer.cs b/IRaCIS.Core.Application/MassTransit/Recurring/TrialDocumentConsumer.cs index 68978d9de..a0e2607c7 100644 --- a/IRaCIS.Core.Application/MassTransit/Recurring/TrialDocumentConsumer.cs +++ b/IRaCIS.Core.Application/MassTransit/Recurring/TrialDocumentConsumer.cs @@ -53,7 +53,11 @@ namespace IRaCIS.Core.Application.MassTransit.Recurring DateTime now = DateTime.Now; Console.WriteLine("发送定时项目过期提醒"); - var isEn_US = CultureInfo.CurrentCulture.Name == StaticData.CultureInfo.en_US; + var isEn_US = context.Message.CultureInfoName == StaticData.CultureInfo.en_US; + //设置当前事件传递过来的语言 + var culture = context.Message.CultureInfoName; + CultureInfo.CurrentCulture = new CultureInfo(culture); + var trialDocQuery = from trialDoc in _trialDocumentRepository.AsQueryable(true) @@ -177,7 +181,11 @@ namespace IRaCIS.Core.Application.MassTransit.Recurring public async Task Consume(ConsumeContext context) { - var isEn_US = CultureInfo.CurrentCulture.Name == StaticData.CultureInfo.en_US; + var isEn_US = context.Message.CultureInfoName == StaticData.CultureInfo.en_US; + + //设置当前事件传递过来的语言 + var culture = context.Message.CultureInfoName; + CultureInfo.CurrentCulture = new CultureInfo(culture); // 记录是否只发送给新增角色的日志 if (context.Message.NewUserTypeIds != null && context.Message.NewUserTypeIds.Any())