From dce2509613cab48ff08bad84380b34dec77052a1 Mon Sep 17 00:00:00 2001 From: hang <872297557@qq.com> Date: Tue, 5 Sep 2023 11:11:57 +0800 Subject: [PATCH] oss --- .../Controllers/ExtraController.cs | 9 +++++-- IRaCIS.Core.API/appsettings.Test_Study.json | 3 ++- .../Service/Document/EmailSendService.cs | 26 ++++++++++++------- 3 files changed, 26 insertions(+), 12 deletions(-) diff --git a/IRaCIS.Core.API/Controllers/ExtraController.cs b/IRaCIS.Core.API/Controllers/ExtraController.cs index 83f862185..952dc6547 100644 --- a/IRaCIS.Core.API/Controllers/ExtraController.cs +++ b/IRaCIS.Core.API/Controllers/ExtraController.cs @@ -149,7 +149,7 @@ namespace IRaCIS.Api.Controllers .AddJsonFile($"appsettings.{webHostEnvironment.EnvironmentName}.json") .Build(); - //configuration["AliyunOSS:region"] + IClientProfile profile = DefaultProfile.GetProfile("cn-shanghai", configuration["AliyunOSS:accessKeyId"], configuration["AliyunOSS:accessKeySecret"]); DefaultAcsClient client = new DefaultAcsClient(profile); @@ -171,7 +171,12 @@ namespace IRaCIS.Api.Controllers AccessKeyId = response.Credentials.AccessKeyId, AccessKeySecret = response.Credentials.AccessKeySecret, SecurityToken = response.Credentials.SecurityToken, - Expiration = response.Credentials.Expiration + Expiration = response.Credentials.Expiration, + + Region= configuration["AliyunOSS:region"], + BucketName = configuration["AliyunOSS:accessKeyId"], + ViewEndpoint = configuration["AliyunOSS:viewEndpoint"], + }; return ResponseOutput.Ok(stsToken); diff --git a/IRaCIS.Core.API/appsettings.Test_Study.json b/IRaCIS.Core.API/appsettings.Test_Study.json index 28a370d30..d0fe43db3 100644 --- a/IRaCIS.Core.API/appsettings.Test_Study.json +++ b/IRaCIS.Core.API/appsettings.Test_Study.json @@ -7,8 +7,9 @@ } }, "AliyunOSS": { - "endpoint": "https://oss-cn-shanghai.aliyuncs.com", + "regionId": "cn-shanghai", "region": "oss-cn-shanghai", + "endpoint": "https://oss-cn-shanghai.aliyuncs.com", "accessKeyId": "LTAI5tKvzs7ed3UfSpNk3xwQ", "accessKeySecret": "zTIceGEShlZDGnLrCFfIGFE7TXVRio", "bucketName": "zyypacs", diff --git a/IRaCIS.Core.Application/Service/Document/EmailSendService.cs b/IRaCIS.Core.Application/Service/Document/EmailSendService.cs index f79613546..3ba1934e5 100644 --- a/IRaCIS.Core.Application/Service/Document/EmailSendService.cs +++ b/IRaCIS.Core.Application/Service/Document/EmailSendService.cs @@ -117,7 +117,7 @@ namespace IRaCIS.Core.Application.Service return (topicStr, htmlBodyStr, isEn_us, null); }; - await SendTrialEmailAsync(taskInfo.TrialId, businessScenarioEnum, topicAndHtmlFunc); + await SendTrialEmailAsync(taskInfo.TrialId, businessScenarioEnum, topicAndHtmlFunc,taskInfo.SiteId); } @@ -283,7 +283,7 @@ namespace IRaCIS.Core.Application.Service var isEn_us = _userInfo.IsEn_Us; - var info = await _repository.Where(t => t.Id == visitTaskId, ignoreQueryFilters: true).Select(t => new { t.TrialId, t.Trial.ResearchProgramNo, t.Trial.TrialCode, t.SourceSubjectVisit.VisitName, t.Subject.Code }).FirstOrDefaultAsync(); + var info = await _repository.Where(t => t.Id == visitTaskId, ignoreQueryFilters: true).Select(t => new { t.TrialId, t.Trial.ResearchProgramNo, t.Trial.TrialCode, t.SourceSubjectVisit.VisitName, t.Subject.SiteId, t.Subject.Code }).FirstOrDefaultAsync(); Func topicAndHtmlFunc = trialEmailConfig => @@ -294,7 +294,7 @@ namespace IRaCIS.Core.Application.Service return (topicStr, htmlBodyStr, isEn_us, null); }; - await SendTrialEmailAsync(info.TrialId, EmailBusinessScenario.ClinicalDataQuestion, topicAndHtmlFunc); + await SendTrialEmailAsync(info.TrialId, EmailBusinessScenario.ClinicalDataQuestion, topicAndHtmlFunc,info.SiteId); } @@ -302,7 +302,7 @@ namespace IRaCIS.Core.Application.Service { var isEn_us = _userInfo.IsEn_Us; - var info = await _repository.Where(t => t.Id == visitTaskId, ignoreQueryFilters: true).Select(t => new { t.TrialId, t.Trial.ResearchProgramNo, t.Trial.TrialCode, t.SourceSubjectVisit.VisitName, t.Subject.Code }).FirstOrDefaultAsync(); + var info = await _repository.Where(t => t.Id == visitTaskId, ignoreQueryFilters: true).Select(t => new { t.TrialId, t.Trial.ResearchProgramNo, t.Trial.TrialCode, t.SourceSubjectVisit.VisitName, t.Subject.SiteId, t.Subject.Code }).FirstOrDefaultAsync(); var answerList= await _repository.Where(t => t.Id == visitTaskId, ignoreQueryFilters: true).SelectMany(t=>t.ReadingTaskQuestionAnswerList).Where(t=>t.ReadingQuestionTrial.IsJudgeQuestion==true).Select(t=>new { QuestionName= isEn_us? t.ReadingQuestionTrial.QuestionEnName:t.ReadingQuestionTrial.QuestionName, t.ReadingQuestionTrial.DictionaryCode, t.Answer}).ToListAsync(); var template = "
{0}: {1}
"; @@ -337,12 +337,12 @@ namespace IRaCIS.Core.Application.Service return (topicStr, htmlBodyStr, isEn_us, null); }; - await SendTrialEmailAsync(info.TrialId, EmailBusinessScenario.PIAuditResutl, topicAndHtmlFunc); + await SendTrialEmailAsync(info.TrialId, EmailBusinessScenario.PIAuditResutl, topicAndHtmlFunc, info.SiteId); } - public async Task SendTrialEmailAsync(Guid trialId, EmailBusinessScenario businessScenario, Func topicAndHtmlFunc, Guid? trialReadingCriterionId = null, Guid? subjectId = null) + public async Task SendTrialEmailAsync(Guid trialId, EmailBusinessScenario businessScenario, Func topicAndHtmlFunc, Guid? siteId = null, Guid? trialReadingCriterionId = null) { //找到配置 var trialEmailConfig = await _trialEmailNoticeConfigRepository.Where(t => t.TrialId == trialId && t.TrialReadingCriterionId == trialReadingCriterionId && t.BusinessScenarioEnum == businessScenario, ignoreQueryFilters: true) @@ -366,7 +366,7 @@ namespace IRaCIS.Core.Application.Service var blackUserIdList = trialEmailConfig.TrialEmailBlackUserList.Select(t => t.UserId).ToList(); - //收件人 如果是CRC CRA 要按照中心发送 + var toUserTypeEnumList = trialEmailConfig.TrialEmailNoticeUserList.Where(t => t.EmailUserType == EmailUserType.To).Select(c => c.UserType).ToList(); var copyUserTypeEnumList = trialEmailConfig.TrialEmailNoticeUserList.Where(t => t.EmailUserType == EmailUserType.Copy).Select(c => c.UserType).ToList(); @@ -379,10 +379,18 @@ namespace IRaCIS.Core.Application.Service var toUserList = allUserList.Where(t => toUserTypeEnumList.Contains(t.UserTypeEnum)) .ToList(); - if (subjectId != null) + //收件人 有CRC CRA , CRC CRA的账户要按照中心发送 + if (siteId == null && toUserTypeEnumList.Any(t => t == UserTypeEnum.ClinicalResearchCoordinator || t == UserTypeEnum.CRA)) { - toUserList = _repository.Where(t => t.TrialId == trialId && toUserTypeEnumList.Contains(t.User.UserTypeEnum) && t.TrialSite.SubjectList.Any(c => c.Id == subjectId)).Select(t => new { t.UserId, t.User.EMail, t.User.FullName, t.User.UserTypeEnum }).ToList(); + throw new BusinessValidationFailedException("当前场景收件人包含CRC CRA,但是没有siteId,请联系后端开发"); } + if (siteId != null && toUserTypeEnumList.Any(t=>t==UserTypeEnum.ClinicalResearchCoordinator || t == UserTypeEnum.CRA)) + { + var curentSiteUserIdList= _repository.Where(t=>t.TrialId==trialId && t.SiteId==siteId).Select(t=>t.UserId).ToList(); + + toUserList=toUserList.Where(t=>(t.UserTypeEnum!=UserTypeEnum.CRA && t.UserTypeEnum != UserTypeEnum.ClinicalResearchCoordinator)|| curentSiteUserIdList.Contains(t.UserId)).ToList(); + } + //去除黑名单 toUserList = toUserList.Where(t => !blackUserIdList.Contains(t.UserId)).ToList();