修改激活逻辑
continuous-integration/drone/push Build is passing Details

Test_HIR_Net8
hang 2025-04-18 09:54:44 +08:00
parent 52dc6e05d4
commit e43dce220c
2 changed files with 35 additions and 23 deletions

View File

@ -30,7 +30,8 @@ public class TrialGlobalLimitAttribute : Attribute
public class TrialGlobalLimitEndpointFilter(IFusionCache _fusionCache, IUserInfo _userInfo, IRepository<Trial> _trialRepository,
IOptionsMonitor<ServiceVerifyConfigOption> _basicSystemConfigConfig,
IOptionsMonitor<SystemHospitalOption> _hospitalOption, IStringLocalizer _localizer) : IEndpointFilter
IRepository<HIRHospital> _hirHospitalRepository,
IStringLocalizer _localizer) : IEndpointFilter
{
public async ValueTask<object?> InvokeAsync(EndpointFilterInvocationContext context, EndpointFilterDelegate next)
@ -158,6 +159,9 @@ public class TrialGlobalLimitEndpointFilter(IFusionCache _fusionCache, IUserInfo
if (!string.IsNullOrWhiteSpace(trialIdStr))
{
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;
@ -187,7 +191,7 @@ public class TrialGlobalLimitEndpointFilter(IFusionCache _fusionCache, IUserInfo
}
var hospitalCode = _hospitalOption.CurrentValue.HospitalCode;
var hospitalCode = hospitalInfo.HospitalCode;
var authInfo = JsonConvert.DeserializeObject<TrialAuthorizationInfo>(decodedText);
if (authInfo != null)

View File

@ -44,7 +44,7 @@ namespace IRaCIS.Core.Application
IRepository<TrialStateChange> _trialStateChangeRepository,
IRepository<ReadingTableQuestionTrial> _readingTableQuestionTrialRepository,
IOptionsMonitor<ServiceVerifyConfigOption> _basicSystemConfigConfig,
IOptionsMonitor<SystemHospitalOption> _hospitalOption,
IRepository<HIRHospital> _hIRHospitalRepository,
IMapper _mapper, IUserInfo _userInfo, IStringLocalizer _localizer, IFusionCache _fusionCache) : BaseService, ITrialConfigService
{
@ -1243,30 +1243,38 @@ namespace IRaCIS.Core.Application
#region 自动激活一个月
var hospitalCode = _hospitalOption.CurrentValue.HospitalCode;
var hospitalName = _hospitalOption.CurrentValue.HospitalName;
var deadLineDate = DateTime.Now.Date.AddMonths(1).AddDays(1).AddSeconds(-1);
var authorizationInfo = new TrialAuthorizationInfo()
if (trial.AuthorizationDate == null && trial.AuthorizationEncrypt.IsNotNullOrEmpty())
{
ActiveTime = DateTime.Now,
PurchaseDuration = 1,
CriterionTypeList = trial.CriterionTypeList,
HospitalCode = hospitalCode,
HospitalName = hospitalName,
CreateUserId = trial.CreateUserId,
TrialId = trial.Id,
TrialCode = trial.TrialCode,
AuthorizationDeadLineDate = deadLineDate,
ActiveDeadLineDate = DateTime.Now.Date.AddDays(8).AddSeconds(-1)
};
var newActivationCode = AesEncryption.Encrypt($"{JsonConvert.SerializeObject(authorizationInfo)}", _basicSystemConfigConfig.CurrentValue.AESKey, "Trial_AuthorizationEncrypt");
var query = _hIRHospitalRepository.Where(t => t.IsDefault == true).ProjectTo<HIRHospitalView>(_mapper.ConfigurationProvider);
trial.AuthorizationEncrypt = newActivationCode;
trial.AuthorizationDate = deadLineDate;
var hospitalInfo = await query.FirstNotNullAsync();
//await _trialRepository.BatchUpdateNoTrackingAsync(t => t.Id == trialId, u => new Trial() { AuthorizationEncrypt = newActivationCode, AuthorizationDate = deadLineDate });
var hospitalCode = hospitalInfo.HospitalCode;
var hospitalName = hospitalInfo.HospitalName;
var deadLineDate = DateTime.Now.Date.AddMonths(1).AddDays(1).AddSeconds(-1);
var authorizationInfo = new TrialAuthorizationInfo()
{
ActiveTime = DateTime.Now,
PurchaseDuration = 1,
CriterionTypeList = trial.CriterionTypeList,
HospitalCode = hospitalCode,
HospitalName = hospitalName,
CreateUserId = trial.CreateUserId,
TrialId = trial.Id,
TrialCode = trial.TrialCode,
AuthorizationDeadLineDate = deadLineDate,
ActiveDeadLineDate = DateTime.Now.Date.AddDays(8).AddSeconds(-1)
};
var newActivationCode = AesEncryption.Encrypt($"{JsonConvert.SerializeObject(authorizationInfo)}", _basicSystemConfigConfig.CurrentValue.AESKey, "Trial_AuthorizationEncrypt");
trial.AuthorizationEncrypt = newActivationCode;
trial.AuthorizationDate = deadLineDate;
//await _trialRepository.BatchUpdateNoTrackingAsync(t => t.Id == trialId, u => new Trial() { AuthorizationEncrypt = newActivationCode, AuthorizationDate = deadLineDate });
}
#endregion