医院修改,导致配置修改
continuous-integration/drone/push Build is passing Details

Test_HIR_Net8
hang 2025-03-28 14:38:23 +08:00
parent 008a909f5b
commit 5beacacc0f
7 changed files with 46 additions and 37 deletions

View File

@ -31,7 +31,6 @@ public static class ServiceCollectionSetup
services.AddOptions().Configure<IRCEncreptOption>(_configuration.GetSection("EncrypteResponseConfig")); services.AddOptions().Configure<IRCEncreptOption>(_configuration.GetSection("EncrypteResponseConfig"));
services.AddOptions().Configure<SystemPacsConfig>(_configuration.GetSection("SystemPacsConfig")); services.AddOptions().Configure<SystemPacsConfig>(_configuration.GetSection("SystemPacsConfig"));
services.Configure<IRaCISBasicConfigOption>(_configuration.GetSection("IRaCISBasicConfig")); services.Configure<IRaCISBasicConfigOption>(_configuration.GetSection("IRaCISBasicConfig"));
services.AddOptions().Configure<SystemHospitalOption>(_configuration.GetSection("SystemHospitalConfig"));
services.Configure<ServiceVerifyConfigOption>(_configuration.GetSection("BasicSystemConfig")); services.Configure<ServiceVerifyConfigOption>(_configuration.GetSection("BasicSystemConfig"));

View File

@ -38,21 +38,8 @@
"AESKey": "HIR_System_AES_Key_Info", "AESKey": "HIR_System_AES_Key_Info",
"CmoveIntervalMinutes": 1, "CmoveIntervalMinutes": 1,
"CmoveInstanceIntervalMinutes": 1 "CmoveInstanceIntervalMinutes": 1
},
},
"SystemHospitalConfig": {
"HospitalCode": "EI",
"HospitalLogoPath": "/System/GeneralDocuments/1732515108701_肿瘤医院logo 新.jpg",
"TrialKeepCount": 60,
"HospitalName": "上海展影医疗科技有限公司",
"HospitalAliasName": "展影医疗",
"Country": "中国",
"City": "上海",
"Province": "上海",
"Address": "上海市杨浦区国泰路复旦科技园",
"Phone": "021-60702575",
"IsCanConnectInternet": false
},
"SystemEmailSendConfig": { "SystemEmailSendConfig": {
"Port": 465, "Port": 465,
"Host": "smtp.qiye.aliyun.com", "Host": "smtp.qiye.aliyun.com",

View File

@ -19,7 +19,8 @@ namespace IRaCIS.Core.Application.Filter;
public class TrialGlobalLimitActionFilter(IFusionCache _fusionCache, IUserInfo _userInfo, IRepository<Trial> _trialRepository, public class TrialGlobalLimitActionFilter(IFusionCache _fusionCache, IUserInfo _userInfo, IRepository<Trial> _trialRepository,
IOptionsMonitor<ServiceVerifyConfigOption> _basicSystemConfigConfig, IOptionsMonitor<ServiceVerifyConfigOption> _basicSystemConfigConfig,
IOptionsMonitor<SystemHospitalOption> _hospitalOption, IStringLocalizer _localizer) : IAsyncActionFilter IRepository<HIRHospital> _hirHospitalRepository,
IStringLocalizer _localizer) : IAsyncActionFilter
{ {
public async Task OnActionExecutionAsync(ActionExecutingContext context, ActionExecutionDelegate next) public async Task OnActionExecutionAsync(ActionExecutingContext context, ActionExecutionDelegate next)
{ {
@ -152,6 +153,9 @@ public class TrialGlobalLimitActionFilter(IFusionCache _fusionCache, IUserInfo _
if (!string.IsNullOrWhiteSpace(trialIdStr)) if (!string.IsNullOrWhiteSpace(trialIdStr))
{ {
var trialInfo = await _fusionCache.GetOrSetAsync(CacheKeys.Trial(trialIdStr), _ => CacheHelper.GetTrialStatusAsync(Guid.Parse(trialIdStr), _trialRepository), TimeSpan.FromDays(7)); var trialInfo = await _fusionCache.GetOrSetAsync(CacheKeys.Trial(trialIdStr), _ => CacheHelper.GetTrialStatusAsync(Guid.Parse(trialIdStr), _trialRepository), TimeSpan.FromDays(7));
var hospitalInfo = await _fusionCache.GetOrSetAsync(CacheKeys.Hospital, _ => CacheHelper.GetHospitalCode(_hirHospitalRepository), TimeSpan.FromDays(7));
var trialStatusStr = string.Empty; var trialStatusStr = string.Empty;
if (trialInfo != null) if (trialInfo != null)
@ -181,7 +185,7 @@ public class TrialGlobalLimitActionFilter(IFusionCache _fusionCache, IUserInfo _
} }
var hospitalCode = _hospitalOption.CurrentValue.HospitalCode; var hospitalCode = hospitalInfo.HospitalCode;
var authInfo = JsonConvert.DeserializeObject<TrialAuthorizationInfo>(decodedText); var authInfo = JsonConvert.DeserializeObject<TrialAuthorizationInfo>(decodedText);
if (authInfo != null) if (authInfo != null)

View File

@ -1,4 +1,5 @@
using IRaCIS.Application.Contracts; using IRaCIS.Application.Contracts;
using IRaCIS.Core.Application.ViewModel;
namespace IRaCIS.Core.Application.Helper; namespace IRaCIS.Core.Application.Helper;
@ -61,6 +62,8 @@ public static class CacheKeys
public static string CmoveStudyId(string studyIdStr) => $"CmoveStudyId:{studyIdStr}"; public static string CmoveStudyId(string studyIdStr) => $"CmoveStudyId:{studyIdStr}";
public static string Hospital => $"Hospital";
} }
public static class CacheHelper public static class CacheHelper
@ -79,4 +82,10 @@ public static class CacheHelper
return list; return list;
} }
public static async Task<HIRHospital> GetHospitalCode(IRepository<HIRHospital> _hirHospitalRepository)
{
return await _hirHospitalRepository.Where(t => t.IsDefault == true).FirstNotNullAsync();
}
} }

View File

@ -18257,19 +18257,18 @@
<returns></returns> <returns></returns>
<exception cref="T:IRaCIS.Core.Infrastructure.BusinessValidationFailedException"></exception> <exception cref="T:IRaCIS.Core.Infrastructure.BusinessValidationFailedException"></exception>
</member> </member>
<member name="M:IRaCIS.Application.Services.PatientService.GetTrialAuthorizationCode(IRaCIS.Application.Contracts.TrialAuthorizationInfo,Microsoft.Extensions.Options.IOptionsMonitor{IRaCIS.Application.Contracts.SystemHospitalOption})"> <member name="M:IRaCIS.Application.Services.PatientService.GetTrialAuthorizationCode(IRaCIS.Application.Contracts.TrialAuthorizationInfo)">
<summary> <summary>
获取项目授权码 获取项目授权码
</summary> </summary>
<param name="authInfo"></param> <param name="authInfo"></param>
<returns></returns> <returns></returns>
</member> </member>
<member name="M:IRaCIS.Application.Services.PatientService.GetAuthorizationCodeInfo(System.String,Microsoft.Extensions.Options.IOptionsMonitor{IRaCIS.Application.Contracts.SystemHospitalOption})"> <member name="M:IRaCIS.Application.Services.PatientService.GetAuthorizationCodeInfo(System.String)">
<summary> <summary>
获取授权码明文信息 获取授权码明文信息
</summary> </summary>
<param name="authorizationCode"></param> <param name="authorizationCode"></param>
<param name="_hospitalOption"></param>
<returns></returns> <returns></returns>
</member> </member>
<member name="M:IRaCIS.Application.Services.PatientService.GetTrialActivationCode(IRaCIS.Application.Contracts.TrialAuthorizationInfo,Microsoft.Extensions.Options.IOptionsMonitor{IRaCIS.Core.Domain.Share.ServiceVerifyConfigOption})"> <member name="M:IRaCIS.Application.Services.PatientService.GetTrialActivationCode(IRaCIS.Application.Contracts.TrialAuthorizationInfo,Microsoft.Extensions.Options.IOptionsMonitor{IRaCIS.Core.Domain.Share.ServiceVerifyConfigOption})">
@ -18280,7 +18279,7 @@
<param name="_basicSystemConfigConfig"></param> <param name="_basicSystemConfigConfig"></param>
<returns></returns> <returns></returns>
</member> </member>
<member name="M:IRaCIS.Application.Services.PatientService.GetActivationCodeInfo(System.String,Microsoft.Extensions.Options.IOptionsMonitor{IRaCIS.Application.Contracts.SystemHospitalOption},Microsoft.Extensions.Options.IOptionsMonitor{IRaCIS.Core.Domain.Share.ServiceVerifyConfigOption})"> <member name="M:IRaCIS.Application.Services.PatientService.GetActivationCodeInfo(System.String,Microsoft.Extensions.Options.IOptionsMonitor{IRaCIS.Core.Domain.Share.ServiceVerifyConfigOption})">
<summary> <summary>
激活码获取明文信息 激活码获取明文信息
</summary> </summary>
@ -18289,7 +18288,7 @@
<param name="_basicSystemConfigConfig"></param> <param name="_basicSystemConfigConfig"></param>
<returns></returns> <returns></returns>
</member> </member>
<member name="M:IRaCIS.Application.Services.PatientService.ActivateTrial(System.Guid,System.String,Microsoft.Extensions.Options.IOptionsMonitor{IRaCIS.Core.Domain.Share.ServiceVerifyConfigOption},ZiggyCreatures.Caching.Fusion.IFusionCache,Microsoft.Extensions.Options.IOptionsMonitor{IRaCIS.Application.Contracts.SystemHospitalOption})"> <member name="M:IRaCIS.Application.Services.PatientService.ActivateTrial(System.Guid,System.String,Microsoft.Extensions.Options.IOptionsMonitor{IRaCIS.Core.Domain.Share.ServiceVerifyConfigOption},ZiggyCreatures.Caching.Fusion.IFusionCache)">
<summary> <summary>
设置项目授权信息 设置项目授权信息
</summary> </summary>

View File

@ -28,12 +28,13 @@ namespace IRaCIS.Core.Application.Service
IRepository<Trial> _trialRepository, IRepository<Trial> _trialRepository,
IOptionsMonitor<ServiceVerifyConfigOption> _verifyConfig, IOptionsMonitor<ServiceVerifyConfigOption> _verifyConfig,
IOptionsMonitor<SystemEmailSendConfig> systemEmailConfig, IOptionsMonitor<SystemEmailSendConfig> systemEmailConfig,
IOptionsMonitor<SystemHospitalOption> _systemHospitalConfig, IRepository<HIRHospital> _hirHospitalRepository,
ISearcher _searcher, IMapper _mapper, IUserInfo _userInfo, IStringLocalizer _localizer, IFusionCache _fusionCache) : BaseService, IUserService ISearcher _searcher, IMapper _mapper, IUserInfo _userInfo, IStringLocalizer _localizer, IFusionCache _fusionCache) : BaseService, IUserService
{ {
private SystemEmailSendConfig _systemEmailConfig = systemEmailConfig.CurrentValue; private SystemEmailSendConfig _systemEmailConfig = systemEmailConfig.CurrentValue;
private async Task VerifyUserNameAsync(Guid? userId, string userName) private async Task VerifyUserNameAsync(Guid? userId, string userName)
{ {
if (await _userRepository.WhereIf(userId != null, t => t.Id != userId).AnyAsync(t => t.UserName == userName)) if (await _userRepository.WhereIf(userId != null, t => t.Id != userId).AnyAsync(t => t.UserName == userName))
@ -274,12 +275,14 @@ namespace IRaCIS.Core.Application.Service
[UnitOfWork] [UnitOfWork]
public async Task<IResponseOutput> ResetPassword(Guid userId) public async Task<IResponseOutput> ResetPassword(Guid userId)
{ {
var hospitalInfo = await _fusionCache.GetOrSetAsync(CacheKeys.Hospital, _ => CacheHelper.GetHospitalCode(_hirHospitalRepository), TimeSpan.FromDays(7));
//var pwd = IRCEmailPasswordHelper.GenerateRandomPassword(10); //var pwd = IRCEmailPasswordHelper.GenerateRandomPassword(10);
var pwd = "123456"; var pwd = "123456";
if (_systemHospitalConfig.CurrentValue.IsCanConnectInternet) if (hospitalInfo.IsCanConnectInternet)
{ {
await _mailVerificationService.AdminResetPwdSendEmailAsync(userId, pwd); await _mailVerificationService.AdminResetPwdSendEmailAsync(userId, pwd);
} }
@ -413,7 +416,7 @@ namespace IRaCIS.Core.Application.Service
var result = await (userQuery.FirstOrDefaultAsync()).IfNullThrowException(); var result = await (userQuery.FirstOrDefaultAsync()).IfNullThrowException();
result.AccountList = _userRepository.Where(t => t.EMail == result.EMail && t.UserTypeEnum != UserTypeEnum.SuperAdmin) result.AccountList = _userRepository.Where(t => t.EMail == result.EMail && t.UserTypeEnum != UserTypeEnum.SuperAdmin)
.ProjectTo<UserAccountInfo>(_mapper.ConfigurationProvider).OrderBy(t=>t.UserTypeShortName).ToList(); .ProjectTo<UserAccountInfo>(_mapper.ConfigurationProvider).OrderBy(t => t.UserTypeShortName).ToList();
return result; return result;
} }
@ -426,6 +429,7 @@ namespace IRaCIS.Core.Application.Service
[UnitOfWork] [UnitOfWork]
public async Task<IResponseOutput<UserAddedReturnDTO>> AddUser(UserCommand userAddModel) public async Task<IResponseOutput<UserAddedReturnDTO>> AddUser(UserCommand userAddModel)
{ {
var hospitalInfo = await _fusionCache.GetOrSetAsync(CacheKeys.Hospital, _ => CacheHelper.GetHospitalCode(_hirHospitalRepository), TimeSpan.FromDays(7));
await VerifyUserNameAsync(null, userAddModel.UserName); await VerifyUserNameAsync(null, userAddModel.UserName);
@ -461,7 +465,7 @@ namespace IRaCIS.Core.Application.Service
var success = await _userRepository.SaveChangesAsync(); var success = await _userRepository.SaveChangesAsync();
} }
if (_systemHospitalConfig.CurrentValue.IsCanConnectInternet) if (hospitalInfo.IsCanConnectInternet)
{ {
await _mailVerificationService.AddUserSendEmailAsync(saveItem.Id, userAddModel.BaseUrl, userAddModel.RouteUrl); await _mailVerificationService.AddUserSendEmailAsync(saveItem.Id, userAddModel.BaseUrl, userAddModel.RouteUrl);
@ -830,7 +834,9 @@ namespace IRaCIS.Core.Application.Service
[HttpGet("{email}/{verifyCode}")] [HttpGet("{email}/{verifyCode}")]
public async Task<List<UserAccountDto>> VerifyAnonymousVerifyCode(string email, string verifyCode) public async Task<List<UserAccountDto>> VerifyAnonymousVerifyCode(string email, string verifyCode)
{ {
if (_systemHospitalConfig.CurrentValue.IsCanConnectInternet) var hospitalInfo = await _fusionCache.GetOrSetAsync(CacheKeys.Hospital, _ => CacheHelper.GetHospitalCode(_hirHospitalRepository), TimeSpan.FromDays(7));
if (hospitalInfo.IsCanConnectInternet)
{ {
var verificationRecord = await _verificationCodeRepository var verificationRecord = await _verificationCodeRepository
.Where(t => t.UserId == Guid.Empty && t.Code == verifyCode && t.CodeType == VerifyType.Email && t.EmailOrPhone == email).OrderByDescending(t => t.CreateTime).FirstOrDefaultAsync(); .Where(t => t.UserId == Guid.Empty && t.Code == verifyCode && t.CodeType == VerifyType.Email && t.EmailOrPhone == email).OrderByDescending(t => t.CreateTime).FirstOrDefaultAsync();

View File

@ -380,8 +380,13 @@ namespace IRaCIS.Application.Services
public async Task<IResponseOutput<TrialAuthorizationInfo>> GetTrialAuthorizationInfo(Guid trialId, [FromServices] IOptionsMonitor<SystemHospitalOption> _hospitalOption) public async Task<IResponseOutput<TrialAuthorizationInfo>> GetTrialAuthorizationInfo(Guid trialId)
{ {
var query = _hIRHospitalRepository.Where(t => t.IsDefault == true).ProjectTo<HIRHospitalView>(_mapper.ConfigurationProvider);
var hospitalInfo= await query.FirstNotNullAsync();
var trialInfo = _trialRepository.Where(t => t.Id == trialId, ignoreQueryFilters: true).FirstOrDefault(); var trialInfo = _trialRepository.Where(t => t.Id == trialId, ignoreQueryFilters: true).FirstOrDefault();
var authInfo = new TrialAuthorizationInfo() var authInfo = new TrialAuthorizationInfo()
@ -392,8 +397,8 @@ namespace IRaCIS.Application.Services
PurchaseDuration = 1, PurchaseDuration = 1,
CriterionTypeList = trialInfo.CriterionTypeList, CriterionTypeList = trialInfo.CriterionTypeList,
//CriterionTypes = trialInfo.CriterionTypes, //CriterionTypes = trialInfo.CriterionTypes,
HospitalName = _hospitalOption.CurrentValue.HospitalName, HospitalName = hospitalInfo.HospitalName,
HospitalCode = _hospitalOption.CurrentValue.HospitalCode, HospitalCode = hospitalInfo.HospitalCode,
}; };
return ResponseOutput.Ok(authInfo); return ResponseOutput.Ok(authInfo);
@ -405,7 +410,7 @@ namespace IRaCIS.Application.Services
/// <param name="authInfo"></param> /// <param name="authInfo"></param>
/// <returns></returns> /// <returns></returns>
[HttpPost] [HttpPost]
public async Task<IResponseOutput> GetTrialAuthorizationCode(TrialAuthorizationInfo authInfo, [FromServices] IOptionsMonitor<SystemHospitalOption> _hospitalOption) public async Task<IResponseOutput> GetTrialAuthorizationCode(TrialAuthorizationInfo authInfo)
{ {
// 将明文信息转换成 Base64 编码 // 将明文信息转换成 Base64 编码
@ -419,10 +424,9 @@ namespace IRaCIS.Application.Services
/// 获取授权码明文信息 /// 获取授权码明文信息
/// </summary> /// </summary>
/// <param name="authorizationCode"></param> /// <param name="authorizationCode"></param>
/// <param name="_hospitalOption"></param>
/// <returns></returns> /// <returns></returns>
[AllowAnonymous] [AllowAnonymous]
public async Task<IResponseOutput> GetAuthorizationCodeInfo(string authorizationCode, [FromServices] IOptionsMonitor<SystemHospitalOption> _hospitalOption) public async Task<IResponseOutput> GetAuthorizationCodeInfo(string authorizationCode)
{ {
// 解密 Base64 编码后的数据 // 解密 Base64 编码后的数据
byte[] base64DecodedBytes = Convert.FromBase64String(authorizationCode); byte[] base64DecodedBytes = Convert.FromBase64String(authorizationCode);
@ -464,7 +468,6 @@ namespace IRaCIS.Application.Services
/// <param name="_basicSystemConfigConfig"></param> /// <param name="_basicSystemConfigConfig"></param>
/// <returns></returns> /// <returns></returns>
public async Task<IResponseOutput> GetActivationCodeInfo(string activationCode, public async Task<IResponseOutput> GetActivationCodeInfo(string activationCode,
[FromServices] IOptionsMonitor<SystemHospitalOption> _hospitalOption,
[FromServices] IOptionsMonitor<ServiceVerifyConfigOption> _basicSystemConfigConfig) [FromServices] IOptionsMonitor<ServiceVerifyConfigOption> _basicSystemConfigConfig)
{ {
@ -505,10 +508,12 @@ namespace IRaCIS.Application.Services
[HttpPut] [HttpPut]
public async Task<IResponseOutput> ActivateTrial(Guid trialId, string activationCode, public async Task<IResponseOutput> ActivateTrial(Guid trialId, string activationCode,
[FromServices] IOptionsMonitor<ServiceVerifyConfigOption> _basicSystemConfigConfig, [FromServices] IOptionsMonitor<ServiceVerifyConfigOption> _basicSystemConfigConfig,
[FromServices] IFusionCache _provider, [FromServices] IFusionCache _provider)
[FromServices] IOptionsMonitor<SystemHospitalOption> _hospitalOption)
{ {
var hospitalCode = _hospitalOption.CurrentValue.HospitalCode; var query = _hIRHospitalRepository.Where(t => t.IsDefault == true).ProjectTo<HIRHospitalView>(_mapper.ConfigurationProvider);
var hospitalInfo = await query.FirstNotNullAsync();
var hospitalCode = hospitalInfo.HospitalCode;
var trialInfo = _trialRepository.Where(t => t.Id == trialId, ignoreQueryFilters: true).FirstOrDefault(); var trialInfo = _trialRepository.Where(t => t.Id == trialId, ignoreQueryFilters: true).FirstOrDefault();
var decodedText = string.Empty; var decodedText = string.Empty;