From 30edf87bc00a99b07e4ee4be0d139fb6d5060acc Mon Sep 17 00:00:00 2001 From: hang <872297557@qq.com> Date: Mon, 18 Aug 2025 10:41:31 +0800 Subject: [PATCH 1/6] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E7=99=BB=E5=BD=95?= =?UTF-8?q?=E8=AE=A4=E8=AF=81=E6=8E=88=E6=9D=83?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- IRaCIS.Core.API/IRaCIS.Core.API.csproj | 3 +-- IRaCIS.Core.API/Progranm.cs | 1 - .../LogDashboard/LogDashBoardAuthFilter.cs | 15 ----------- .../Authorization/JWTAuthSetup.cs | 2 ++ .../_ServiceExtensions/LogDashboardSetup.cs | 25 ------------------- IRaCIS.Core.API/appsettings.json | 2 +- .../IRaCIS.Core.Application.xml | 4 +-- .../MinimalApiService/FileToPDFService.cs | 9 ++++++- .../ReadingMedicalReviewService.cs | 3 +-- .../ReadingImageTaskService.cs | 1 - .../ReadingJudgeTaskService.cs | 1 - 11 files changed, 15 insertions(+), 51 deletions(-) delete mode 100644 IRaCIS.Core.API/_PipelineExtensions/LogDashboard/LogDashBoardAuthFilter.cs delete mode 100644 IRaCIS.Core.API/_ServiceExtensions/LogDashboardSetup.cs diff --git a/IRaCIS.Core.API/IRaCIS.Core.API.csproj b/IRaCIS.Core.API/IRaCIS.Core.API.csproj index 2fb16ca58..011a7b74c 100644 --- a/IRaCIS.Core.API/IRaCIS.Core.API.csproj +++ b/IRaCIS.Core.API/IRaCIS.Core.API.csproj @@ -69,6 +69,7 @@ + all @@ -79,8 +80,6 @@ - - diff --git a/IRaCIS.Core.API/Progranm.cs b/IRaCIS.Core.API/Progranm.cs index 532873b62..278484648 100644 --- a/IRaCIS.Core.API/Progranm.cs +++ b/IRaCIS.Core.API/Progranm.cs @@ -7,7 +7,6 @@ using IRaCIS.Core.Application.Service; using IRaCIS.Core.Application.Service.BusinessFilter; using IRaCIS.Core.Infra.EFCore; using IRaCIS.Core.Infrastructure.Extention; -using LogDashboard; using MassTransit; using MassTransit.NewIdProviders; using Microsoft.AspNetCore.Builder; diff --git a/IRaCIS.Core.API/_PipelineExtensions/LogDashboard/LogDashBoardAuthFilter.cs b/IRaCIS.Core.API/_PipelineExtensions/LogDashboard/LogDashBoardAuthFilter.cs deleted file mode 100644 index b644df0e3..000000000 --- a/IRaCIS.Core.API/_PipelineExtensions/LogDashboard/LogDashBoardAuthFilter.cs +++ /dev/null @@ -1,15 +0,0 @@ -using LogDashboard; -using LogDashboard.Authorization; - -namespace IRaCIS.Core.API.Filter -{ - - public class LogDashBoardAuthFilter : ILogDashboardAuthorizationFilter - { - //在此可以利用 本系统的UerTypeEnum 判断 - public bool Authorization(LogDashboardContext context) - { - return context.HttpContext.User.Identity.IsAuthenticated; - } - } -} \ No newline at end of file diff --git a/IRaCIS.Core.API/_ServiceExtensions/Authorization/JWTAuthSetup.cs b/IRaCIS.Core.API/_ServiceExtensions/Authorization/JWTAuthSetup.cs index b6e6c509b..696c2da6d 100644 --- a/IRaCIS.Core.API/_ServiceExtensions/Authorization/JWTAuthSetup.cs +++ b/IRaCIS.Core.API/_ServiceExtensions/Authorization/JWTAuthSetup.cs @@ -46,6 +46,8 @@ namespace IRaCIS.Core.API OnMessageReceived = (context) => { + + if (context.Request.Query.TryGetValue("access_token", out StringValues values)) { var queryToken = values.FirstOrDefault(); diff --git a/IRaCIS.Core.API/_ServiceExtensions/LogDashboardSetup.cs b/IRaCIS.Core.API/_ServiceExtensions/LogDashboardSetup.cs deleted file mode 100644 index 208d0672b..000000000 --- a/IRaCIS.Core.API/_ServiceExtensions/LogDashboardSetup.cs +++ /dev/null @@ -1,25 +0,0 @@ - -using LogDashboard; -using Microsoft.Extensions.DependencyInjection; - -namespace IRaCIS.Core.API -{ - public static class LogDashboardSetup - { - public static void AddLogDashboardSetup(this IServiceCollection services) - { - //IIS 配置虚拟路径部署,会出现IIS静态文件404 - services.AddLogDashboard(opt => - { - //opt.PathMatch = "/api/LogDashboard"; - opt.PathMatch = "/LogDashboard"; - - //opt.AddAuthorizationFilter(new LogDashboardBasicAuthFilter("admin", "zhizhun2018")); - - //opt.AddAuthorizationFilter(new LogDashBoardAuthFilter()); - - }); - - } - } -} diff --git a/IRaCIS.Core.API/appsettings.json b/IRaCIS.Core.API/appsettings.json index c575d4113..54112c6ae 100644 --- a/IRaCIS.Core.API/appsettings.json +++ b/IRaCIS.Core.API/appsettings.json @@ -3,7 +3,7 @@ "SecurityKey": "ShangHaiZhanYing_SecurityKey_SHzyyl@2021", "Issuer": "Extimaging", "Audience": "EICS", - "TokenExpireDays": "7" + "TokenExpireMinute": "10080" //7天 }, "IpRateLimiting": { "EnableEndpointRateLimiting": true, diff --git a/IRaCIS.Core.Application/IRaCIS.Core.Application.xml b/IRaCIS.Core.Application/IRaCIS.Core.Application.xml index 43b70bb67..0bdeb936a 100644 --- a/IRaCIS.Core.Application/IRaCIS.Core.Application.xml +++ b/IRaCIS.Core.Application/IRaCIS.Core.Application.xml @@ -11851,7 +11851,7 @@ 阅片医学审核 - + 阅片医学审核 @@ -12622,7 +12622,7 @@ - + IR影像阅片 diff --git a/IRaCIS.Core.Application/Service/MinimalApiService/FileToPDFService.cs b/IRaCIS.Core.Application/Service/MinimalApiService/FileToPDFService.cs index 1a899fbc6..bb087173f 100644 --- a/IRaCIS.Core.Application/Service/MinimalApiService/FileToPDFService.cs +++ b/IRaCIS.Core.Application/Service/MinimalApiService/FileToPDFService.cs @@ -16,6 +16,12 @@ using System.Threading.Tasks; namespace IRaCIS.Core.Application.Service.MinimalApiService { + public class UploadFileRequest + { + public IFormFile File { get; set; } + } + + /// /// 上传文件转PDF 或者给url 这边下载然后转PDF /// @@ -27,8 +33,9 @@ namespace IRaCIS.Core.Application.Service.MinimalApiService [AllowAnonymous] [RoutePattern(HttpMethod = "Post")] - public async Task UploadFileAsync([FromForm] IFormFile file) + public async Task UploadFileAsync([FromForm] UploadFileRequest request) { + var file = request.File; var tempFileName = NewId.NextGuid() + file.FileName; var tempPDFName = Path.GetFileNameWithoutExtension(tempFileName) + ".pdf"; diff --git a/IRaCIS.Core.Application/Service/Reading/MedicalAudit/ReadingMedicalReviewService.cs b/IRaCIS.Core.Application/Service/Reading/MedicalAudit/ReadingMedicalReviewService.cs index 2ca4eb1bb..73bf9a7b3 100644 --- a/IRaCIS.Core.Application/Service/Reading/MedicalAudit/ReadingMedicalReviewService.cs +++ b/IRaCIS.Core.Application/Service/Reading/MedicalAudit/ReadingMedicalReviewService.cs @@ -29,7 +29,7 @@ namespace IRaCIS.Core.Application.Service IRepository _readingMedicalReviewDialogRepository, IRepository _readingQuestionCriterionTrial, IRepository _readingMedicineQuestionAnswerRepository, - ITrialEmailNoticeConfigService _trialEmailNoticeConfigService, IMapper _mapper, IUserInfo _userInfo, IStringLocalizer _localizer) : BaseService, IReadingMedicalReviewService + IMapper _mapper, IUserInfo _userInfo, IStringLocalizer _localizer) : BaseService, IReadingMedicalReviewService { @@ -681,7 +681,6 @@ namespace IRaCIS.Core.Application.Service if (allMedicalAuditList.All(t => t.IsApplyHeavyReading == false && t.AuditSignTime != null && t.AuditState == MedicalReviewAuditState.HaveSigned)) { //自动发送 - await _trialEmailNoticeConfigService.BaseBusinessScenarioSendEmailAsync(medicalReviewInfo.VisitTaskId, false); } diff --git a/IRaCIS.Core.Application/Service/Reading/ReadingImageTask/ReadingImageTaskService.cs b/IRaCIS.Core.Application/Service/Reading/ReadingImageTask/ReadingImageTaskService.cs index b4177a46b..0ee271d36 100644 --- a/IRaCIS.Core.Application/Service/Reading/ReadingImageTask/ReadingImageTaskService.cs +++ b/IRaCIS.Core.Application/Service/Reading/ReadingImageTask/ReadingImageTaskService.cs @@ -61,7 +61,6 @@ namespace IRaCIS.Core.Application.Service IRepository _readingQuestionTrialRepository, IRepository _taskStudyRepository, IDownloadAndUploadService _downloadAndUploadService, - ITrialEmailNoticeConfigService _trialEmailNoticeConfigService, IMapper _mapper, IUserInfo _userInfo, IStringLocalizer _localizer, IFusionCache _fusionCache) : BaseService, IReadingImageTaskService { diff --git a/IRaCIS.Core.Application/Service/Reading/ReadingImageTask/ReadingJudgeTaskService.cs b/IRaCIS.Core.Application/Service/Reading/ReadingImageTask/ReadingJudgeTaskService.cs index 6a5a598f3..9d74a496c 100644 --- a/IRaCIS.Core.Application/Service/Reading/ReadingImageTask/ReadingJudgeTaskService.cs +++ b/IRaCIS.Core.Application/Service/Reading/ReadingImageTask/ReadingJudgeTaskService.cs @@ -501,7 +501,6 @@ namespace IRaCIS.Core.Application.Service // 创建任务关联关系 await this.CreateTaskRelated(inDto.VisitTaskId); - await _trialEmailNoticeConfigService.BaseBusinessScenarioSendEmailAsync(inDto.VisitTaskId); return ResponseOutput.Ok(result); } From 5ea6d221e390862a92b7073b73f6f22305880ae4 Mon Sep 17 00:00:00 2001 From: hang <872297557@qq.com> Date: Mon, 18 Aug 2025 11:44:52 +0800 Subject: [PATCH 2/6] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E8=B4=A6=E6=88=B7?= =?UTF-8?q?=E8=A7=A6=E5=8F=91=E6=97=A5=E5=BF=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- IRaCIS.Core.API/_ServiceExtensions/EFSetup.cs | 3 +- .../IRaCIS.Core.Application.xml | 14 +++ .../Service/Management/_MapConfig.cs | 3 +- .../Visit/DTO/HospitalGroupViewModel.cs | 52 +++++++++++ .../Service/Visit/HospitalGroupService.cs | 88 ++++++++++++++++++ .../Visit/Interface/IHospitalGroupService.cs | 26 ++++++ .../Service/Visit/_MapConfig.cs | 5 + .../IdenttiyUserRoleInfoTrigger.cs | 35 +++++++ .../BeforeSaveTrigger/UserLogTrigger.cs | 91 ++----------------- IRaCIS.Core.Domain.Share/User/UserType.cs | 35 +++---- 10 files changed, 252 insertions(+), 100 deletions(-) create mode 100644 IRaCIS.Core.Application/Service/Visit/DTO/HospitalGroupViewModel.cs create mode 100644 IRaCIS.Core.Application/Service/Visit/HospitalGroupService.cs create mode 100644 IRaCIS.Core.Application/Service/Visit/Interface/IHospitalGroupService.cs create mode 100644 IRaCIS.Core.Application/Triggers/AfterSaveTrigger/IdenttiyUserRoleInfoTrigger.cs diff --git a/IRaCIS.Core.API/_ServiceExtensions/EFSetup.cs b/IRaCIS.Core.API/_ServiceExtensions/EFSetup.cs index 0b7ed2b8b..acbdea6db 100644 --- a/IRaCIS.Core.API/_ServiceExtensions/EFSetup.cs +++ b/IRaCIS.Core.API/_ServiceExtensions/EFSetup.cs @@ -1,5 +1,6 @@ using EntityFramework.Exceptions.SqlServer; using IRaCIS.Core.Application.Triggers; +using IRaCIS.Core.Application.Triggers.AfterSaveTrigger; using IRaCIS.Core.Domain.Share; using IRaCIS.Core.Infra.EFCore; using IRaCIS.Core.Infra.EFCore.Interceptor; @@ -81,7 +82,7 @@ namespace IRaCIS.Core.API triggerOptions.AddTrigger(); - triggerOptions.AddTrigger(); + triggerOptions.AddTrigger(); diff --git a/IRaCIS.Core.Application/IRaCIS.Core.Application.xml b/IRaCIS.Core.Application/IRaCIS.Core.Application.xml index 0bdeb936a..87569ee7c 100644 --- a/IRaCIS.Core.Application/IRaCIS.Core.Application.xml +++ b/IRaCIS.Core.Application/IRaCIS.Core.Application.xml @@ -17348,6 +17348,20 @@ + + + 维护用户角色表中的账户信息 + + + + + + + 维护用户角色表中的账户信息 + + + + 因为可能先一致性核查通过,生成其他标准的任务了,新签名的标准也需要产生任务 diff --git a/IRaCIS.Core.Application/Service/Management/_MapConfig.cs b/IRaCIS.Core.Application/Service/Management/_MapConfig.cs index eb4c972ef..52e2c578d 100644 --- a/IRaCIS.Core.Application/Service/Management/_MapConfig.cs +++ b/IRaCIS.Core.Application/Service/Management/_MapConfig.cs @@ -141,7 +141,8 @@ namespace IRaCIS.Core.Application.Service CreateMap() .ForMember(d => d.IdentityUserId, c => c.MapFrom(t => t.Id)); - + CreateMap() + .ForMember(d => d.UserTypeShortName, c => c.MapFrom(t => t.UserTypeRole.UserTypeShortName)); } diff --git a/IRaCIS.Core.Application/Service/Visit/DTO/HospitalGroupViewModel.cs b/IRaCIS.Core.Application/Service/Visit/DTO/HospitalGroupViewModel.cs new file mode 100644 index 000000000..17cc81945 --- /dev/null +++ b/IRaCIS.Core.Application/Service/Visit/DTO/HospitalGroupViewModel.cs @@ -0,0 +1,52 @@ + +//-------------------------------------------------------------------- +// 此代码由liquid模板自动生成 byzhouhang 20240909 +// 生成时间 2025-08-18 03:23:09Z +// 对此文件的更改可能会导致不正确的行为,并且如果重新生成代码,这些更改将会丢失。 +//-------------------------------------------------------------------- +using System; +using IRaCIS.Core.Domain.Share; +using System.Collections.Generic; +namespace IRaCIS.Core.Application.ViewModel; + +public class HospitalGroupView : HospitalGroupAddOrEdit +{ + + public DateTime CreateTime { get; set; } + + public DateTime UpdateTime { get; set; } + +} + + +public class HospitalGroupAddOrEdit +{ + public Guid? Id { get; set; } + + public string Affiliation { get; set; } + + public string Code { get; set; } + + public string ContactName { get; set; } + + public string ContactPhone { get; set; } + + public string Name { get; set; } +} + +public class HospitalGroupQuery : PageInput +{ + public string? Affiliation { get; set; } + + public string? Code { get; set; } + + public string? ContactName { get; set; } + + public string? ContactPhone { get; set; } + + public string? Name { get; set; } +} + + + + diff --git a/IRaCIS.Core.Application/Service/Visit/HospitalGroupService.cs b/IRaCIS.Core.Application/Service/Visit/HospitalGroupService.cs new file mode 100644 index 000000000..967b17e4d --- /dev/null +++ b/IRaCIS.Core.Application/Service/Visit/HospitalGroupService.cs @@ -0,0 +1,88 @@ + +//-------------------------------------------------------------------- +// 此代码由liquid模板自动生成 byzhouhang 20240909 +// 生成时间 2025-08-18 03:23:01Z +// 对此文件的更改可能会导致不正确的行为,并且如果重新生成代码,这些更改将会丢失。 +//-------------------------------------------------------------------- +using IRaCIS.Core.Domain.Models; +using Microsoft.AspNetCore.Mvc; +using IRaCIS.Core.Application.Interfaces; +using IRaCIS.Core.Application.ViewModel; +using IRaCIS.Core.Infrastructure.Extention; +using System.Threading.Tasks; +using IRaCIS.Core.Infra.EFCore; +using IRaCIS.Application.Contracts; +namespace IRaCIS.Core.Application.Service; + +[ApiExplorerSettings(GroupName = "Test")] +public class HospitalGroupService(IRepository _hospitalGroupRepository, + IMapper _mapper, IUserInfo _userInfo, IStringLocalizer _localizer) : BaseService, IHospitalGroupService +{ + + + + + [HttpPost] + public async Task> GetHospitalGroupList(HospitalGroupQuery inQuery) + { + + var hospitalGroupQueryable = _hospitalGroupRepository + .WhereIf(!string.IsNullOrWhiteSpace(inQuery.Code), t => t.Code.Contains(inQuery.Code)) + .WhereIf(!string.IsNullOrWhiteSpace(inQuery.Name), t => t.Name.Contains(inQuery.Name)) + .WhereIf(!string.IsNullOrWhiteSpace(inQuery.Affiliation), t => t.Affiliation.Contains(inQuery.Affiliation)) + .WhereIf(!string.IsNullOrWhiteSpace(inQuery.ContactPhone), t => t.ContactPhone.Contains(inQuery.ContactPhone)) + .WhereIf(!string.IsNullOrWhiteSpace(inQuery.ContactName), t => t.ContactName.Contains(inQuery.ContactName)) + .ProjectTo(_mapper.ConfigurationProvider); + + var pageList = await hospitalGroupQueryable.SortToListAsync(inQuery); + + return pageList; + } + + + [HttpPost] + public async Task> GetHospitalGroupPageList(HospitalGroupQuery inQuery) + { + + var hospitalGroupQueryable = _hospitalGroupRepository + .WhereIf(!string.IsNullOrWhiteSpace(inQuery.Code), t => t.Code.Contains(inQuery.Code)) + .WhereIf(!string.IsNullOrWhiteSpace(inQuery.Name), t => t.Name.Contains(inQuery.Name)) + .WhereIf(!string.IsNullOrWhiteSpace(inQuery.Affiliation), t => t.Affiliation.Contains(inQuery.Affiliation)) + .WhereIf(!string.IsNullOrWhiteSpace(inQuery.ContactPhone), t => t.ContactPhone.Contains(inQuery.ContactPhone)) + .WhereIf(!string.IsNullOrWhiteSpace(inQuery.ContactName), t => t.ContactName.Contains(inQuery.ContactName)) + .ProjectTo(_mapper.ConfigurationProvider); + + var pageList = await hospitalGroupQueryable.ToPagedListAsync(inQuery); + + return pageList; + } + + + + public async Task AddOrUpdateHospitalGroup(HospitalGroupAddOrEdit addOrEditHospitalGroup) + { + var verifyExp1 = new EntityVerifyExp() + { + VerifyExp = u => u.Code == addOrEditHospitalGroup.Code, + VerifyMsg = _localizer["HospitalGroup_DuplicateCode"] + }; + + + var entity = await _hospitalGroupRepository.InsertOrUpdateAsync(addOrEditHospitalGroup, true, verifyExp1); + + return ResponseOutput.Ok(entity.Id.ToString()); + + } + + + [HttpDelete("{hospitalGroupId:guid}")] + public async Task DeleteHospitalGroup(Guid hospitalGroupId) + { + var success = await _hospitalGroupRepository.DeleteFromQueryAsync(t => t.Id == hospitalGroupId, true); + return ResponseOutput.Ok(); + } + +} + + + diff --git a/IRaCIS.Core.Application/Service/Visit/Interface/IHospitalGroupService.cs b/IRaCIS.Core.Application/Service/Visit/Interface/IHospitalGroupService.cs new file mode 100644 index 000000000..afca2de1f --- /dev/null +++ b/IRaCIS.Core.Application/Service/Visit/Interface/IHospitalGroupService.cs @@ -0,0 +1,26 @@ + +//-------------------------------------------------------------------- +// 此代码由liquid模板自动生成 byzhouhang 20240909 +// 生成时间 2025-08-18 03:23:09Z +// 对此文件的更改可能会导致不正确的行为,并且如果重新生成代码,这些更改将会丢失。 +//-------------------------------------------------------------------- +using System; +using IRaCIS.Core.Infrastructure.Extention; +using System.Threading.Tasks; +using IRaCIS.Core.Application.ViewModel; +namespace IRaCIS.Core.Application.Interfaces; + +public interface IHospitalGroupService +{ + + + Task> GetHospitalGroupList(HospitalGroupQuery inQuery); + + Task> GetHospitalGroupPageList(HospitalGroupQuery inQuery); + + Task AddOrUpdateHospitalGroup(HospitalGroupAddOrEdit addOrEditHospitalGroup); + + Task DeleteHospitalGroup(Guid hospitalGroupId); +} + + diff --git a/IRaCIS.Core.Application/Service/Visit/_MapConfig.cs b/IRaCIS.Core.Application/Service/Visit/_MapConfig.cs index b7bec2939..4f96e4055 100644 --- a/IRaCIS.Core.Application/Service/Visit/_MapConfig.cs +++ b/IRaCIS.Core.Application/Service/Visit/_MapConfig.cs @@ -199,6 +199,11 @@ namespace IRaCIS.Core.Application.Service CreateMap(); CreateMap().ReverseMap(); + + + + CreateMap(); + CreateMap().ReverseMap(); } } diff --git a/IRaCIS.Core.Application/Triggers/AfterSaveTrigger/IdenttiyUserRoleInfoTrigger.cs b/IRaCIS.Core.Application/Triggers/AfterSaveTrigger/IdenttiyUserRoleInfoTrigger.cs new file mode 100644 index 000000000..eee6976d3 --- /dev/null +++ b/IRaCIS.Core.Application/Triggers/AfterSaveTrigger/IdenttiyUserRoleInfoTrigger.cs @@ -0,0 +1,35 @@ +using EntityFrameworkCore.Triggered; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace IRaCIS.Core.Application.Triggers.AfterSaveTrigger +{ + + /// + /// 维护用户角色表中的账户信息 + /// + /// + /// + public class IdenttiyUserRoleInfoTrigger(IRepository _identityUserRepository, IRepository _userRoleRepository) : IAfterSaveTrigger + { + public async Task AfterSave(ITriggerContext context, CancellationToken cancellationToken) + { + var identityUser = context.Entity; + + //保持用户角色表和用户表信息一致 + await _userRoleRepository.BatchUpdateNoTrackingAsync(t => t.IdentityUserId == identityUser.Id, u => new UserRole() + { + UserName = identityUser.UserName, + FirstName = identityUser.FirstName, + LastName = identityUser.LastName, + EMail = identityUser.EMail, + }); + } + } + + + +} diff --git a/IRaCIS.Core.Application/Triggers/BeforeSaveTrigger/UserLogTrigger.cs b/IRaCIS.Core.Application/Triggers/BeforeSaveTrigger/UserLogTrigger.cs index ed2bd9d99..4b1887460 100644 --- a/IRaCIS.Core.Application/Triggers/BeforeSaveTrigger/UserLogTrigger.cs +++ b/IRaCIS.Core.Application/Triggers/BeforeSaveTrigger/UserLogTrigger.cs @@ -1,10 +1,10 @@ using EntityFrameworkCore.Triggered; using IP2Region.Net.Abstractions; +using IRaCIS.Core.Application.Helper; namespace IRaCIS.Core.Application.Triggers { - public class UserLogTrigger( - ISearcher _searcher) : IBeforeSaveTrigger + public class UserLogTrigger : IBeforeSaveTrigger { @@ -18,102 +18,31 @@ namespace IRaCIS.Core.Application.Triggers if (context.ChangeType == ChangeType.Added) { - var ipinfo = _searcher.Search(userLog.IP); + //var ipinfo = _searcher.Search(userLog.IP); - userLog.IPRegion = string.Join('|', ipinfo.Split('|').TakeLast(3)); + //userLog.IPRegion = string.Join('|', ipinfo.Split('|').TakeLast(3)); + userLog.IPRegion = IPCityHelper.GetCityResponse(userLog.IP); } } } - public class UserAddTrigger(IUserInfo _userInfo, IRepository _userLogReposiotry) : IBeforeSaveTrigger + public class UserAddTrigger(IUserInfo _userInfo, IRepository _userLogReposiotry) : IBeforeSaveTrigger { - public async Task BeforeSave(ITriggerContext context, CancellationToken cancellationToken) + public async Task BeforeSave(ITriggerContext context, CancellationToken cancellationToken) { var user = context.Entity; if (context.ChangeType == ChangeType.Added) { - await _userLogReposiotry.AddAsync(new UserLog() { OptType = UserOptType.AddUser, OptUserId = user.Id, LoginUserId = _userInfo.UserRoleId, IP = _userInfo.IP }); + await _userLogReposiotry.AddAsync(new UserLog() { IP = _userInfo.IP, ActionIdentityUserId = _userInfo.IdentityUserId, ActionUserName = _userInfo.UserName, TargetIdentityUserId = user.Id, OptType = UserOptType.AddUser }, true); + + } } } - public class UserModifyTrigger(IUserInfo _userInfo, IRepository _userReposiotry) : IBeforeSaveTrigger - { - public async Task BeforeSave(ITriggerContext context, CancellationToken cancellationToken) - { - var user = context.Entity; - - var beforeUser = context.UnmodifiedEntity; - - if (context.ChangeType == ChangeType.Modified) - { - - if (beforeUser.IsFirstAdd == false && user.IsFirstAdd == true) - { - - await _userReposiotry.BatchUpdateNoTrackingAsync(t => t.EMail == user.EMail, u => new UserRole() { IsFirstAdd = true }); - } - - //只用初始化其中一个 - if (beforeUser.IsFirstAdd == true && user.IsFirstAdd == false) - { - - await _userReposiotry.BatchUpdateNoTrackingAsync(t => t.EMail == user.EMail, u => new UserRole() { IsFirstAdd = false }); - } - - if (beforeUser.Password != user.Password) - { - await _userReposiotry.BatchUpdateNoTrackingAsync(t => t.EMail == user.EMail, u => new UserRole() { Password = user.Password }); - } - - - if (beforeUser.EMail != user.EMail) - { - await _userReposiotry.BatchUpdateNoTrackingAsync(t => t.EMail == beforeUser.EMail, u => new UserRole() { EMail = user.EMail }); - } - - if (beforeUser.CheckCode != user.CheckCode) - { - await _userReposiotry.BatchUpdateNoTrackingAsync(t => t.EMail == user.EMail, u => new UserRole() { CheckCode = user.CheckCode }); - } - - if (beforeUser.FirstName != user.FirstName || beforeUser.LastName != user.LastName) - { - await _userReposiotry.BatchUpdateNoTrackingAsync(t => t.EMail == user.EMail, u => new UserRole() { FirstName = user.FirstName, LastName = user.LastName }); - } - - if (beforeUser.Phone != user.Phone) - { - await _userReposiotry.BatchUpdateNoTrackingAsync(t => t.EMail == user.EMail, u => new UserRole() { Phone = user.Phone }); - } - - if (beforeUser.Sex != user.Sex) - { - await _userReposiotry.BatchUpdateNoTrackingAsync(t => t.EMail == user.EMail, u => new UserRole() { Sex = user.Sex }); - } - - if (beforeUser.IsZhiZhun != user.IsZhiZhun) - { - await _userReposiotry.BatchUpdateNoTrackingAsync(t => t.EMail == user.EMail, u => new UserRole() { IsZhiZhun = user.IsZhiZhun, OrganizationName = user.OrganizationName }); - } - - if (beforeUser.OrganizationName != user.OrganizationName) - { - await _userReposiotry.BatchUpdateNoTrackingAsync(t => t.EMail == user.EMail, u => new UserRole() { OrganizationName = user.OrganizationName }); - } - - if (beforeUser.DepartmentName != user.DepartmentName || beforeUser.PositionName != user.PositionName) - { - await _userReposiotry.BatchUpdateNoTrackingAsync(t => t.EMail == user.EMail, u => new UserRole() { DepartmentName = user.DepartmentName, PositionName = user.PositionName }); - } - - } - - } - } } diff --git a/IRaCIS.Core.Domain.Share/User/UserType.cs b/IRaCIS.Core.Domain.Share/User/UserType.cs index ee05258e0..b42cd328b 100644 --- a/IRaCIS.Core.Domain.Share/User/UserType.cs +++ b/IRaCIS.Core.Domain.Share/User/UserType.cs @@ -60,28 +60,29 @@ Undefined = 0, - - EA=16, - MW=17, + EA = 16, + + MW = 17, - SMM=18, + SMM = 18, - CMM=19, + CMM = 19, - ZYSS=26, + ZYSS = 26, - ZYBS=27, + ZYBS = 27, - MC=30, + MC = 30, - + //课题组管理员 + GA = 35, } @@ -89,16 +90,16 @@ public enum UserTypeSelectEnum { - None=0, + None = 0, - ExternalUser=1, + ExternalUser = 1, - InnerUser=2, + InnerUser = 2, - SiteSurvey=3, + SiteSurvey = 3, - EnrollOrPD_EmailReceive=4, - EnrollOrPD_EMailCopy=5, + EnrollOrPD_EmailReceive = 4, + EnrollOrPD_EMailCopy = 5, //HIR TrialDoc = 6, @@ -106,9 +107,9 @@ public enum UserMFAType { - Login=0, + Login = 0, - Unlock=1, + Unlock = 1, } From 73f1f2938f294d0a5274e187542c86d4979257c9 Mon Sep 17 00:00:00 2001 From: hang <872297557@qq.com> Date: Mon, 18 Aug 2025 13:42:04 +0800 Subject: [PATCH 3/6] =?UTF-8?q?HIR=20=E8=AF=BE=E9=A2=98=E7=BB=84=E5=88=97?= =?UTF-8?q?=E8=A1=A8=E5=A2=9E=E5=8A=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../_ServiceExtensions/SwaggerSetup.cs | 4 +- .../IRaCIS.Core.Application.xml | 20 +++++++ .../Service/Management/UserService.cs | 2 +- .../Visit/DTO/HospitalGroupViewModel.cs | 19 ++++++ .../Service/Visit/HospitalGroupService.cs | 59 ++++++++++++++++--- .../Service/Visit/PatientService.cs | 2 +- .../Service/Visit/_MapConfig.cs | 26 +++++--- .../Management/HospitalGroup.cs | 19 ++++++ 8 files changed, 132 insertions(+), 19 deletions(-) diff --git a/IRaCIS.Core.API/_ServiceExtensions/SwaggerSetup.cs b/IRaCIS.Core.API/_ServiceExtensions/SwaggerSetup.cs index e2878576b..2552950d0 100644 --- a/IRaCIS.Core.API/_ServiceExtensions/SwaggerSetup.cs +++ b/IRaCIS.Core.API/_ServiceExtensions/SwaggerSetup.cs @@ -16,8 +16,8 @@ namespace IRaCIS.Core.API; public enum SwaggerVersion { - [Description("测试")] - Test = -1, + [Description("HIR修改")] + HIR = -1, [Description("医生模块")] Reviewer = 1, diff --git a/IRaCIS.Core.Application/IRaCIS.Core.Application.xml b/IRaCIS.Core.Application/IRaCIS.Core.Application.xml index 87569ee7c..72bead5d5 100644 --- a/IRaCIS.Core.Application/IRaCIS.Core.Application.xml +++ b/IRaCIS.Core.Application/IRaCIS.Core.Application.xml @@ -13564,6 +13564,26 @@ + + + GA用户列表 + + + + + + 不分页课题组列表 + + + + + + + 分页课题组列表 + + + + 添加或更新受试者信息[New] diff --git a/IRaCIS.Core.Application/Service/Management/UserService.cs b/IRaCIS.Core.Application/Service/Management/UserService.cs index 00e8d1f84..b65c6ec47 100644 --- a/IRaCIS.Core.Application/Service/Management/UserService.cs +++ b/IRaCIS.Core.Application/Service/Management/UserService.cs @@ -23,7 +23,7 @@ using LoginReturnDTO = IRaCIS.Application.Contracts.LoginReturnDTO; namespace IRaCIS.Core.Application.Service { - [ApiExplorerSettings(GroupName = "Management")] + [ApiExplorerSettings(GroupName = "HIR")] public class UserService(IRepository _userRoleRepository, IMailVerificationService _mailVerificationService, IRepository _verificationCodeRepository, diff --git a/IRaCIS.Core.Application/Service/Visit/DTO/HospitalGroupViewModel.cs b/IRaCIS.Core.Application/Service/Visit/DTO/HospitalGroupViewModel.cs index 17cc81945..0518e0ae4 100644 --- a/IRaCIS.Core.Application/Service/Visit/DTO/HospitalGroupViewModel.cs +++ b/IRaCIS.Core.Application/Service/Visit/DTO/HospitalGroupViewModel.cs @@ -16,6 +16,8 @@ public class HospitalGroupView : HospitalGroupAddOrEdit public DateTime UpdateTime { get; set; } + public List GAUserList { get; set; } + } @@ -32,6 +34,8 @@ public class HospitalGroupAddOrEdit public string ContactPhone { get; set; } public string Name { get; set; } + + public List IdentityUserIdList { get; set; } } public class HospitalGroupQuery : PageInput @@ -50,3 +54,18 @@ public class HospitalGroupQuery : PageInput +public class HospitalGroupAdminUserInfo +{ + public Guid Id { get; set; } + + public string UserName { get; set; } + + public string FullName { get; set; } + + public string Email { get; set; } + +} + + + + diff --git a/IRaCIS.Core.Application/Service/Visit/HospitalGroupService.cs b/IRaCIS.Core.Application/Service/Visit/HospitalGroupService.cs index 967b17e4d..0753d5dad 100644 --- a/IRaCIS.Core.Application/Service/Visit/HospitalGroupService.cs +++ b/IRaCIS.Core.Application/Service/Visit/HospitalGroupService.cs @@ -14,14 +14,29 @@ using IRaCIS.Core.Infra.EFCore; using IRaCIS.Application.Contracts; namespace IRaCIS.Core.Application.Service; -[ApiExplorerSettings(GroupName = "Test")] +[ApiExplorerSettings(GroupName = "HIR")] public class HospitalGroupService(IRepository _hospitalGroupRepository, + IRepository _identityUserRepository, IRepository _hospitalGroupIdentityUserRepository, IMapper _mapper, IUserInfo _userInfo, IStringLocalizer _localizer) : BaseService, IHospitalGroupService { + /// + /// GA用户列表 + /// + /// + + public async Task> GetGAUserList() + { + var list = await _identityUserRepository.Where(t => t.UserRoleList.Any(t => t.UserTypeEnum == UserTypeEnum.GA)).ProjectTo(_mapper.ConfigurationProvider).ToListAsync(); + + return list; + } - - + /// + /// 不分页课题组列表 + /// + /// + /// [HttpPost] public async Task> GetHospitalGroupList(HospitalGroupQuery inQuery) { @@ -32,14 +47,18 @@ public class HospitalGroupService(IRepository _hospitalGroupRepos .WhereIf(!string.IsNullOrWhiteSpace(inQuery.Affiliation), t => t.Affiliation.Contains(inQuery.Affiliation)) .WhereIf(!string.IsNullOrWhiteSpace(inQuery.ContactPhone), t => t.ContactPhone.Contains(inQuery.ContactPhone)) .WhereIf(!string.IsNullOrWhiteSpace(inQuery.ContactName), t => t.ContactName.Contains(inQuery.ContactName)) - .ProjectTo(_mapper.ConfigurationProvider); + .ProjectTo(_mapper.ConfigurationProvider); var pageList = await hospitalGroupQueryable.SortToListAsync(inQuery); return pageList; } - + /// + /// 分页课题组列表 + /// + /// + /// [HttpPost] public async Task> GetHospitalGroupPageList(HospitalGroupQuery inQuery) { @@ -50,7 +69,7 @@ public class HospitalGroupService(IRepository _hospitalGroupRepos .WhereIf(!string.IsNullOrWhiteSpace(inQuery.Affiliation), t => t.Affiliation.Contains(inQuery.Affiliation)) .WhereIf(!string.IsNullOrWhiteSpace(inQuery.ContactPhone), t => t.ContactPhone.Contains(inQuery.ContactPhone)) .WhereIf(!string.IsNullOrWhiteSpace(inQuery.ContactName), t => t.ContactName.Contains(inQuery.ContactName)) - .ProjectTo(_mapper.ConfigurationProvider); + .ProjectTo(_mapper.ConfigurationProvider); var pageList = await hospitalGroupQueryable.ToPagedListAsync(inQuery); @@ -67,10 +86,34 @@ public class HospitalGroupService(IRepository _hospitalGroupRepos VerifyMsg = _localizer["HospitalGroup_DuplicateCode"] }; + if (addOrEditHospitalGroup.Id == null) + { - var entity = await _hospitalGroupRepository.InsertOrUpdateAsync(addOrEditHospitalGroup, true, verifyExp1); + var addEntity = _mapper.Map(addOrEditHospitalGroup); - return ResponseOutput.Ok(entity.Id.ToString()); + addEntity.IdentityUserList = addOrEditHospitalGroup.IdentityUserIdList.Select(t => new HospitalGroupIdentityUser() { IdentityUserId = t }).ToList(); + + var newEntity = await _hospitalGroupRepository.AddAsync(addEntity, true, verifyExp1); + + return ResponseOutput.Ok(newEntity.Id.ToString()); + } + else + { + await _hospitalGroupIdentityUserRepository.BatchDeleteNoTrackingAsync(t => t.HospitalGroupId == addOrEditHospitalGroup.Id && t.IsManager); + + //var find = await _hospitalGroupRepository.FirstOrDefaultAsync(t => t.Id == addOrEditHospitalGroup.Id); + + //_mapper.Map(addOrEditHospitalGroup, find); + + var adminUserList = addOrEditHospitalGroup.IdentityUserIdList.Select(t => new HospitalGroupIdentityUser() { IdentityUserId = t, HospitalGroupId = (Guid)addOrEditHospitalGroup.Id }).ToList(); + + await _hospitalGroupIdentityUserRepository.AddRangeAsync(adminUserList); + var entity = await _hospitalGroupRepository.UpdateFromDTOAsync(addOrEditHospitalGroup, false, false, verifyExp1); + + + } + + return ResponseOutput.Ok(); } diff --git a/IRaCIS.Core.Application/Service/Visit/PatientService.cs b/IRaCIS.Core.Application/Service/Visit/PatientService.cs index 7225513d2..2eb3b178c 100644 --- a/IRaCIS.Core.Application/Service/Visit/PatientService.cs +++ b/IRaCIS.Core.Application/Service/Visit/PatientService.cs @@ -57,7 +57,7 @@ using IRaCIS.Core.Application.Helper.OtherTool; namespace IRaCIS.Application.Services { - [ApiExplorerSettings(GroupName = "Trial")] + [ApiExplorerSettings(GroupName = "HIR")] public class PatientService(IRepository _studySubjectVisitRepository, IRepository _subjectPatientRepository, IRepository _trialRepository, diff --git a/IRaCIS.Core.Application/Service/Visit/_MapConfig.cs b/IRaCIS.Core.Application/Service/Visit/_MapConfig.cs index 4f96e4055..120ec68fb 100644 --- a/IRaCIS.Core.Application/Service/Visit/_MapConfig.cs +++ b/IRaCIS.Core.Application/Service/Visit/_MapConfig.cs @@ -32,7 +32,7 @@ namespace IRaCIS.Core.Application.Service .ForMember(d => d.UserTypeEnum, u => u.MapFrom(s => s.CreateUserRole.UserTypeEnum)); CreateMap(); - + CreateMap() .ForMember(d => d.CreateUser, u => u.MapFrom(g => g.CreateUserRole.LastName + " / " + g.CreateUserRole.FirstName)); @@ -114,7 +114,7 @@ namespace IRaCIS.Core.Application.Service .ForMember(d => d.CallingAEList, u => u.MapFrom(s => s.SCPStudyList.Select(t => t.CallingAE).Distinct())) .ForMember(d => d.PatientId, u => u.MapFrom(s => s.Id)); - CreateMap().IncludeMembers(t=>t.SCPStudy) + CreateMap().IncludeMembers(t => t.SCPStudy) .ForMember(d => d.VisitName, u => u.MapFrom(s => s.SubjectVisit.VisitName)); CreateMap() @@ -136,13 +136,13 @@ namespace IRaCIS.Core.Application.Service CreateMap() .ForMember(d => d.TrialId, u => u.MapFrom(s => s.Id)) - .ForMember(d => d.UnSubmitCount, u => u.MapFrom(s => s.SubjectVisitList.Count(t=>t.SubmitState==SubmitStateEnum.ToSubmit))) - .ForMember(d => d.UnReadCount, u => u.MapFrom(s => s.VisitTaskList.Count(t=>t.TaskState==TaskState.Effect && t.SignTime==null))) + .ForMember(d => d.UnSubmitCount, u => u.MapFrom(s => s.SubjectVisitList.Count(t => t.SubmitState == SubmitStateEnum.ToSubmit))) + .ForMember(d => d.UnReadCount, u => u.MapFrom(s => s.VisitTaskList.Count(t => t.TaskState == TaskState.Effect && t.SignTime == null))) ; CreateMap() .ForMember(d => d.DictionaryList, u => u.MapFrom(s => s.TrialDicList.Select(t => t.Dictionary).OrderBy(t => t.ShowOrder))); - + CreateMap() .ForMember(d => d.SCPStudyId, u => u.MapFrom(s => s.Id)); @@ -161,7 +161,7 @@ namespace IRaCIS.Core.Application.Service .ForMember(d => d.ExperimentName, u => u.MapFrom(s => s.Subject.Trial.ExperimentName)); CreateMap(); - + CreateMap(); @@ -202,8 +202,20 @@ namespace IRaCIS.Core.Application.Service - CreateMap(); + CreateMap() + .ForMember(d => d.GAUserList, u => u.MapFrom(s => s.IdentityUserList.Where(t => t.IsManager).Select(t => t.IdentityUser))) + .ForMember(d => d.IdentityUserIdList, u => u.MapFrom(s => s.IdentityUserList.Where(t => t.IsManager).Select(t => t.IdentityUser.Id))); + + CreateMap().ReverseMap(); + + + CreateMap(); + + + + + } } diff --git a/IRaCIS.Core.Domain/Management/HospitalGroup.cs b/IRaCIS.Core.Domain/Management/HospitalGroup.cs index e72625fcc..8dff639a0 100644 --- a/IRaCIS.Core.Domain/Management/HospitalGroup.cs +++ b/IRaCIS.Core.Domain/Management/HospitalGroup.cs @@ -12,6 +12,13 @@ namespace IRaCIS.Core.Domain.Models [Comment("课题组")] public class HospitalGroup : BaseFullAuditEntity { + #region 导航属性 + [JsonIgnore] + public List IdentityUserList { get; set; } + + #endregion + + public string Name { get; set; } public string Code { get; set; } @@ -23,11 +30,23 @@ namespace IRaCIS.Core.Domain.Models public string ContactPhone { get; set; } + + + } [Comment("用户课题组中间关系表")] public class HospitalGroupIdentityUser : BaseFullAuditEntity { + #region 导航属性 + [JsonIgnore] + public HospitalGroup HospitalGroup { get; set; } + + [JsonIgnore] + public IdentityUser IdentityUser { get; set; } + #endregion + + public Guid HospitalGroupId { get; set; } From b8d9cf1630e7ce8fc1b0d5929f0b02ef4790da9e Mon Sep 17 00:00:00 2001 From: hang <872297557@qq.com> Date: Mon, 18 Aug 2025 14:03:47 +0800 Subject: [PATCH 4/6] =?UTF-8?q?=E8=AF=BE=E9=A2=98=E7=BB=84=E4=BF=AE?= =?UTF-8?q?=E6=94=B9=E7=AE=A1=E7=90=86=E5=91=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Service/Management/UserService.cs | 15 +++++++++++++++ .../Service/Visit/HospitalGroupService.cs | 4 ++-- 2 files changed, 17 insertions(+), 2 deletions(-) diff --git a/IRaCIS.Core.Application/Service/Management/UserService.cs b/IRaCIS.Core.Application/Service/Management/UserService.cs index b65c6ec47..0c1e9ffbf 100644 --- a/IRaCIS.Core.Application/Service/Management/UserService.cs +++ b/IRaCIS.Core.Application/Service/Management/UserService.cs @@ -426,6 +426,7 @@ namespace IRaCIS.Core.Application.Service var success = await _identityUserRepository.BatchUpdateNoTrackingAsync(t => t.Id == _userInfo.IdentityUserId, u => new IdentityUser() { Password = editPwModel.NewPassWord, + CheckCode=editPwModel.CheckCode, LastChangePassWordTime = DateTime.Now, IsFirstAdd = false }); @@ -1011,6 +1012,20 @@ namespace IRaCIS.Core.Application.Service return list; } + [HttpPut("{newCheckCode}")] + public async Task SetNewCheckCode(string newCheckCode) + { + var user = await _userRoleRepository.FirstOrDefaultNoTrackingAsync(t => t.Id == _userInfo.UserRoleId); + + await _userRoleRepository.UpdatePartialFromQueryAsync(t => t.EMail == user.EMail, u => new UserRole() + { + CheckCode = newCheckCode + }); + + await _userLogRepository.AddAsync(new UserLog() { IP = _userInfo.IP, LoginUserId = _userInfo.UserRoleId, OptUserId = _userInfo.UserRoleId, OptType = UserOptType.ModifyCheckCode }, true); + return ResponseOutput.Ok(); + } + #region 多账号修改 /// diff --git a/IRaCIS.Core.Application/Service/Visit/HospitalGroupService.cs b/IRaCIS.Core.Application/Service/Visit/HospitalGroupService.cs index 0753d5dad..90e5a4e01 100644 --- a/IRaCIS.Core.Application/Service/Visit/HospitalGroupService.cs +++ b/IRaCIS.Core.Application/Service/Visit/HospitalGroupService.cs @@ -91,7 +91,7 @@ public class HospitalGroupService(IRepository _hospitalGroupRepos var addEntity = _mapper.Map(addOrEditHospitalGroup); - addEntity.IdentityUserList = addOrEditHospitalGroup.IdentityUserIdList.Select(t => new HospitalGroupIdentityUser() { IdentityUserId = t }).ToList(); + addEntity.IdentityUserList = addOrEditHospitalGroup.IdentityUserIdList.Select(t => new HospitalGroupIdentityUser() { IdentityUserId = t, IsManager = true }).ToList(); var newEntity = await _hospitalGroupRepository.AddAsync(addEntity, true, verifyExp1); @@ -105,7 +105,7 @@ public class HospitalGroupService(IRepository _hospitalGroupRepos //_mapper.Map(addOrEditHospitalGroup, find); - var adminUserList = addOrEditHospitalGroup.IdentityUserIdList.Select(t => new HospitalGroupIdentityUser() { IdentityUserId = t, HospitalGroupId = (Guid)addOrEditHospitalGroup.Id }).ToList(); + var adminUserList = addOrEditHospitalGroup.IdentityUserIdList.Select(t => new HospitalGroupIdentityUser() { IdentityUserId = t, HospitalGroupId = (Guid)addOrEditHospitalGroup.Id, IsManager = true }).ToList(); await _hospitalGroupIdentityUserRepository.AddRangeAsync(adminUserList); var entity = await _hospitalGroupRepository.UpdateFromDTOAsync(addOrEditHospitalGroup, false, false, verifyExp1); From 5527f51880e66cebdd762dfdbdcafab6e5e1d02d Mon Sep 17 00:00:00 2001 From: hang <872297557@qq.com> Date: Mon, 18 Aug 2025 14:23:25 +0800 Subject: [PATCH 5/6] =?UTF-8?q?=E9=AA=8C=E8=AF=81=E9=80=9A=E8=BF=87?= =?UTF-8?q?=EF=BC=8C=E8=BF=94=E5=9B=9E=E8=B4=A6=E6=88=B7=E4=BF=A1=E6=81=AF?= =?UTF-8?q?Id?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- IRaCIS.Core.Application/Service/Management/UserService.cs | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/IRaCIS.Core.Application/Service/Management/UserService.cs b/IRaCIS.Core.Application/Service/Management/UserService.cs index 0c1e9ffbf..c446a2bf0 100644 --- a/IRaCIS.Core.Application/Service/Management/UserService.cs +++ b/IRaCIS.Core.Application/Service/Management/UserService.cs @@ -12,6 +12,7 @@ using IRaCIS.Core.Infrastructure; using MassTransit; using Medallion.Threading; using Microsoft.AspNetCore.Authorization; +using Microsoft.AspNetCore.Identity; using Microsoft.AspNetCore.Mvc; using Microsoft.Extensions.Options; using Org.BouncyCastle.Utilities.Encoders; @@ -960,7 +961,7 @@ namespace IRaCIS.Core.Application.Service /// [AllowAnonymous] [HttpGet("{email}/{verifyCode}")] - public async Task> VerifyAnonymousVerifyCode(string email, string verifyCode) + public async Task> VerifyAnonymousVerifyCode(string email, string verifyCode) { var hospitalInfo = await _fusionCache.GetOrSetAsync(CacheKeys.Hospital, async _ => await CacheHelper.GetHospitalCode(_hirHospitalRepository), TimeSpan.FromDays(7)); @@ -1004,10 +1005,7 @@ namespace IRaCIS.Core.Application.Service } - - var list = await _userRoleRepository.Where(t => t.EMail == email).Select(t => new UserAccountDto() { UserId = t.Id, UserName = t.UserName, UserRealName = t.FullName, UserType = t.UserTypeRole.UserTypeShortName }).ToListAsync(); - - + var list = await _userRoleRepository.Where(t => t.EMail == email).ProjectTo(_mapper.ConfigurationProvider).OrderBy(t => t.UserTypeShortName).ToListAsync(); return list; } From a2deb93b6c69b012ff4a24080b1314a42711008a Mon Sep 17 00:00:00 2001 From: hang <872297557@qq.com> Date: Mon, 18 Aug 2025 14:24:34 +0800 Subject: [PATCH 6/6] x --- IRaCIS.Core.Application/Service/Management/UserService.cs | 1 - 1 file changed, 1 deletion(-) diff --git a/IRaCIS.Core.Application/Service/Management/UserService.cs b/IRaCIS.Core.Application/Service/Management/UserService.cs index c446a2bf0..36d6f5184 100644 --- a/IRaCIS.Core.Application/Service/Management/UserService.cs +++ b/IRaCIS.Core.Application/Service/Management/UserService.cs @@ -12,7 +12,6 @@ using IRaCIS.Core.Infrastructure; using MassTransit; using Medallion.Threading; using Microsoft.AspNetCore.Authorization; -using Microsoft.AspNetCore.Identity; using Microsoft.AspNetCore.Mvc; using Microsoft.Extensions.Options; using Org.BouncyCastle.Utilities.Encoders;