From f732edfc6fba8f815f8b06ca90fb62762d2b840e Mon Sep 17 00:00:00 2001 From: hang <872297557@qq.com> Date: Fri, 23 Aug 2024 15:54:53 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E4=B8=8A=E4=BC=A0=E7=BC=93?= =?UTF-8?q?=E5=AD=98=E5=88=A4=E6=96=AD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Controllers/ExtraController.cs | 43 ++++++++++++++++++- IRaCIS.Core.API/IRaCIS.Core.API.csproj | 1 + .../Service/ImageAndDoc/StudyService.cs | 9 ++-- 3 files changed, 47 insertions(+), 6 deletions(-) diff --git a/IRaCIS.Core.API/Controllers/ExtraController.cs b/IRaCIS.Core.API/Controllers/ExtraController.cs index f2e7760d2..3c9875df9 100644 --- a/IRaCIS.Core.API/Controllers/ExtraController.cs +++ b/IRaCIS.Core.API/Controllers/ExtraController.cs @@ -34,6 +34,7 @@ using DocumentFormat.OpenXml.Spreadsheet; using AutoMapper.QueryableExtensions; using NetTopologySuite.Algorithm; using ZiggyCreatures.Caching.Fusion; +using AlibabaCloud.SDK.Sts20150401; namespace IRaCIS.Api.Controllers { @@ -255,9 +256,9 @@ namespace IRaCIS.Api.Controllers // 验证阅片休息时间 await readingImageTaskService.ResetReadingRestTime(returnModel.Data.BasicInfo.Id); - await _fusionCache.SetAsync(CacheKeys.UserToken(userId) , returnModel.Data.JWTStr, TimeSpan.FromDays(7)); + await _fusionCache.SetAsync(CacheKeys.UserToken(userId), returnModel.Data.JWTStr, TimeSpan.FromDays(7)); - await _fusionCache.SetAsync(CacheKeys.UserAutoLoginOut(userId) , DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"), TimeSpan.FromMinutes(_verifyConfig.CurrentValue.AutoLoginOutMinutes)); + await _fusionCache.SetAsync(CacheKeys.UserAutoLoginOut(userId), DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"), TimeSpan.FromMinutes(_verifyConfig.CurrentValue.AutoLoginOutMinutes)); } } @@ -354,6 +355,44 @@ namespace IRaCIS.Api.Controllers } } + [HttpGet("user/getUploadTempToken")] + public IResponseOutput GetUploadTempToken([FromServices] IOptionsMonitor options) + { + var ossOptions = options.CurrentValue; + + var client = new Client(new AlibabaCloud.OpenApiClient.Models.Config() + { + AccessKeyId = ossOptions.accessKeyId, + AccessKeySecret = ossOptions.accessKeySecret, + Endpoint = "sts.cn-hangzhou.aliyuncs.com" + }); + + var assumeRoleRequest = new AlibabaCloud.SDK.Sts20150401.Models.AssumeRoleRequest(); + // 将设置为自定义的会话名称,例如oss-role-session。 + assumeRoleRequest.RoleSessionName = $"session-name-{NewId.NextGuid()}"; + // 将替换为拥有上传文件到指定OSS Bucket权限的RAM角色的ARN。 + assumeRoleRequest.RoleArn = ossOptions.roleArn; + assumeRoleRequest.DurationSeconds = 3600; + var runtime = new AlibabaCloud.TeaUtil.Models.RuntimeOptions(); + var response = client.AssumeRoleWithOptions(assumeRoleRequest, runtime); + var credentials = response.Body.Credentials; + + return ResponseOutput.Ok(new + { + AccessKeyId = credentials.AccessKeyId, + AccessKeySecret = credentials.AccessKeySecret, + Expiration = credentials.Expiration, + SecurityToken = credentials.SecurityToken, + + + Region = ossOptions.region, + BucketName = ossOptions.bucketName, + ViewEndpoint = ossOptions.viewEndpoint, + + }); + } + + [HttpGet("user/GenerateSTS")] public IResponseOutput GenerateSTS([FromServices] IOptionsMonitor options) diff --git a/IRaCIS.Core.API/IRaCIS.Core.API.csproj b/IRaCIS.Core.API/IRaCIS.Core.API.csproj index 5a7be3fe9..6b067ed71 100644 --- a/IRaCIS.Core.API/IRaCIS.Core.API.csproj +++ b/IRaCIS.Core.API/IRaCIS.Core.API.csproj @@ -61,6 +61,7 @@ + diff --git a/IRaCIS.Core.Application/Service/ImageAndDoc/StudyService.cs b/IRaCIS.Core.Application/Service/ImageAndDoc/StudyService.cs index 47ecb65c6..971d487e8 100644 --- a/IRaCIS.Core.Application/Service/ImageAndDoc/StudyService.cs +++ b/IRaCIS.Core.Application/Service/ImageAndDoc/StudyService.cs @@ -646,7 +646,7 @@ namespace IRaCIS.Core.Application.Service.ImageAndDoc var result = new VerifyStudyUploadResult(); - if ( _fusionCache.GetOrDefault($"StudyUid_{trialId}_{studyInstanceUid}") != _userInfo.Id) + if (_fusionCache.GetOrDefault($"StudyUid_{trialId}_{studyInstanceUid}") != _userInfo.Id) { result.AllowUpload = false; @@ -729,7 +729,7 @@ namespace IRaCIS.Core.Application.Service.ImageAndDoc [HttpPost] public IResponseOutput> VerifyStudyAllowUpload(VerifyUploadOrReupload verifyInfo) { - var trialInfo = _trialRepository.Where().FirstOrDefault(t => t.Id == verifyInfo.TrialId).IfNullThrowException(); + var trialInfo = _trialRepository.Where().FirstOrDefault(t => t.Id == verifyInfo.TrialId).IfNullThrowException(); var result = new List(); @@ -773,7 +773,7 @@ namespace IRaCIS.Core.Application.Service.ImageAndDoc // 写入dicom 固定的信息,以及组织路径的信息 以及匿名化的信息 var otherData = GetSaveToDicomInfo(verifyInfo.SubjectVisitId); - var anonymizeList = _fusionCache.GetOrSetAsync(CacheKeys.SystemAnonymization, _ => CacheHelper.GetSystemAnonymizationListAsync(_systemAnonymizationRepository), TimeSpan.FromDays(7)).Result; + var anonymizeList = _fusionCache.GetOrSetAsync(CacheKeys.SystemAnonymization, _ => CacheHelper.GetSystemAnonymizationListAsync(_systemAnonymizationRepository), TimeSpan.FromDays(7)).Result; return ResponseOutput.Ok>(result, new { @@ -789,7 +789,8 @@ namespace IRaCIS.Core.Application.Service.ImageAndDoc var result = new VerifyStudyUploadResult(); - if (_fusionCache.GetOrDefault(CacheKeys.TrialStudyUidUploading(trialId, studyInstanceUid)) != _userInfo.Id) + if (_fusionCache.GetOrDefault(CacheKeys.TrialStudyUidUploading(trialId, studyInstanceUid)) != _userInfo.Id + && _fusionCache.GetOrDefault(CacheKeys.TrialStudyUidUploading(trialId, studyInstanceUid)) != Guid.Empty) { result.AllowUpload = false;