diff --git a/IRaCIS.Core.API/appsettings.Prod_Event_IRC.json b/IRaCIS.Core.API/appsettings.Prod_Event_IRC.json index 47936737a..b4d3027b1 100644 --- a/IRaCIS.Core.API/appsettings.Prod_Event_IRC.json +++ b/IRaCIS.Core.API/appsettings.Prod_Event_IRC.json @@ -117,7 +117,7 @@ }, "RequestDuplicationOptions": { "IsEnabled": true, - "DuplicationWindowMs": 200, + "DuplicationWindowMs": 500, "CacheTimeSeconds": 5, "ExcludedPaths": [ ] diff --git a/IRaCIS.Core.API/appsettings.Prod_IRC.json b/IRaCIS.Core.API/appsettings.Prod_IRC.json index db86245af..671c9e50b 100644 --- a/IRaCIS.Core.API/appsettings.Prod_IRC.json +++ b/IRaCIS.Core.API/appsettings.Prod_IRC.json @@ -117,7 +117,7 @@ }, "RequestDuplicationOptions": { "IsEnabled": true, - "DuplicationWindowMs": 200, + "DuplicationWindowMs": 500, "CacheTimeSeconds": 5, "ExcludedPaths": [ ] diff --git a/IRaCIS.Core.API/appsettings.Test_IRC.json b/IRaCIS.Core.API/appsettings.Test_IRC.json index 3e3eea57b..01c61ee21 100644 --- a/IRaCIS.Core.API/appsettings.Test_IRC.json +++ b/IRaCIS.Core.API/appsettings.Test_IRC.json @@ -206,7 +206,7 @@ // 是否启用重复请求检测 "IsEnabled": true, // 重复请求时间窗口(毫秒) - "DuplicationWindowMs": 200, + "DuplicationWindowMs": 500, // 缓存请求时间(秒) "CacheTimeSeconds": 5, "ExcludedPaths": [ diff --git a/IRaCIS.Core.API/appsettings.Test_IRC_PGSQL.json b/IRaCIS.Core.API/appsettings.Test_IRC_PGSQL.json index ebd2c44fe..22ca28136 100644 --- a/IRaCIS.Core.API/appsettings.Test_IRC_PGSQL.json +++ b/IRaCIS.Core.API/appsettings.Test_IRC_PGSQL.json @@ -97,7 +97,7 @@ }, "RequestDuplicationOptions": { "IsEnabled": true, - "DuplicationWindowMs": 200, + "DuplicationWindowMs": 500, "CacheTimeSeconds": 5, "ExcludedPaths": [ ] diff --git a/IRaCIS.Core.API/appsettings.US_Prod_IRC.json b/IRaCIS.Core.API/appsettings.US_Prod_IRC.json index 14b84eaf0..25dd2dc87 100644 --- a/IRaCIS.Core.API/appsettings.US_Prod_IRC.json +++ b/IRaCIS.Core.API/appsettings.US_Prod_IRC.json @@ -122,7 +122,7 @@ }, "RequestDuplicationOptions": { "IsEnabled": true, - "DuplicationWindowMs": 200, + "DuplicationWindowMs": 500, "CacheTimeSeconds": 5, "ExcludedPaths": [ ] diff --git a/IRaCIS.Core.API/appsettings.US_Test_IRC.json b/IRaCIS.Core.API/appsettings.US_Test_IRC.json index b455bdf8c..dd3b6a562 100644 --- a/IRaCIS.Core.API/appsettings.US_Test_IRC.json +++ b/IRaCIS.Core.API/appsettings.US_Test_IRC.json @@ -102,7 +102,7 @@ }, "RequestDuplicationOptions": { "IsEnabled": true, - "DuplicationWindowMs": 200, + "DuplicationWindowMs": 500, "CacheTimeSeconds": 5, "ExcludedPaths": [ ] diff --git a/IRaCIS.Core.API/appsettings.US_Uat_IRC.json b/IRaCIS.Core.API/appsettings.US_Uat_IRC.json index d9408c07b..73d2c1a1b 100644 --- a/IRaCIS.Core.API/appsettings.US_Uat_IRC.json +++ b/IRaCIS.Core.API/appsettings.US_Uat_IRC.json @@ -107,7 +107,7 @@ }, "RequestDuplicationOptions": { "IsEnabled": true, - "DuplicationWindowMs": 200, + "DuplicationWindowMs": 500, "CacheTimeSeconds": 5, "ExcludedPaths": [ ] diff --git a/IRaCIS.Core.API/appsettings.Uat_IRC.json b/IRaCIS.Core.API/appsettings.Uat_IRC.json index 2186b76d6..015052fe4 100644 --- a/IRaCIS.Core.API/appsettings.Uat_IRC.json +++ b/IRaCIS.Core.API/appsettings.Uat_IRC.json @@ -134,7 +134,7 @@ }, "RequestDuplicationOptions": { "IsEnabled": true, - "DuplicationWindowMs": 200, + "DuplicationWindowMs": 500, "CacheTimeSeconds": 5, "ExcludedPaths": [ ] diff --git a/IRaCIS.Core.API/appsettings.json b/IRaCIS.Core.API/appsettings.json index 4889af5de..c0f519a6e 100644 --- a/IRaCIS.Core.API/appsettings.json +++ b/IRaCIS.Core.API/appsettings.json @@ -77,7 +77,7 @@ }, "RequestDuplicationOptions": { "IsEnabled": true, - "DuplicationWindowMs": 200, + "DuplicationWindowMs": 500, "CacheTimeSeconds": 5, "ExcludedPaths": [ ] diff --git a/IRaCIS.Core.Application/BusinessFilter/LegacyController/RequestDuplicationFilter.cs b/IRaCIS.Core.Application/BusinessFilter/LegacyController/RequestDuplicationFilter.cs index a64d098bd..d462948dd 100644 --- a/IRaCIS.Core.Application/BusinessFilter/LegacyController/RequestDuplicationFilter.cs +++ b/IRaCIS.Core.Application/BusinessFilter/LegacyController/RequestDuplicationFilter.cs @@ -8,6 +8,7 @@ namespace IRaCIS.Core.Application.BusinessFilter.LegacyController { using Database.Api; using DocumentFormat.OpenXml.InkML; + using IRaCIS.Core.Application.Helper.OtherTool; using IRaCIS.Core.Application.Service.Common; using IRaCIS.Core.Infrastructure; using IRaCIS.Core.Infrastructure.Extention; @@ -17,6 +18,7 @@ namespace IRaCIS.Core.Application.BusinessFilter.LegacyController using Microsoft.AspNetCore.Mvc.Controllers; using Microsoft.AspNetCore.Mvc.Filters; using Microsoft.AspNetCore.Mvc.ModelBinding; + using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Logging; using Microsoft.Extensions.Options; @@ -35,7 +37,7 @@ namespace IRaCIS.Core.Application.BusinessFilter.LegacyController /// /// logger /// loggerHelper - public class RequestDuplicationFilter(ILogger logger, IHttpContextAccessor accessor, IUserInfo _userInfo, IStringLocalizer _localizer, IOptionsMonitor RequestDuplicationOptionsMonitor) : ExceptionFilterAttribute, IAsyncActionFilter + public class RequestDuplicationFilter(ILogger logger, IHttpContextAccessor accessor, IUserInfo _userInfo, IStringLocalizer _localizer, IOptionsMonitor RequestDuplicationOptionsMonitor, IConfiguration _config) : ExceptionFilterAttribute, IAsyncActionFilter { /// /// 传入的参数 @@ -118,11 +120,51 @@ namespace IRaCIS.Core.Application.BusinessFilter.LegacyController RequestDuplicationOptionsMonitor.CurrentValue.DuplicationWindowMs); if (!isAdded) { + SendRequestDuplicationWeComNotice(requestPath); + logger.LogError($"重复请求出现错误:{this.Intoparam}"); throw new BusinessValidationFailedException(_localizer["RequestDuplicationFilter_RequestDuplication"], ApiResponseCodeEnum.BusinessValidationFailed); } } } + private void SendRequestDuplicationWeComNotice(string requestPath) + { + try + { + bool isOpenWeComNotice = _config.GetValue("WeComNoticeConfig:IsOpenWeComNotice"); + + if (isOpenWeComNotice) + { + string webhook = _config["WeComNoticeConfig:WebhookUrl"] ?? string.Empty; + + var uri = new Uri(_config["SystemEmailSendConfig:SiteUrl"]); + var baseUrl = uri.GetLeftPart(UriPartial.Authority); + + var userList = _config.GetSection("WeComNoticeConfig:APINoticeUserList").Get(); + + var request = accessor?.HttpContext?.Request; + + _ = WeComNotifier.SendAlertAsync( + webhook: webhook, + alert: new WeComAlert + { + Env = baseUrl, + UserName = _userInfo.UserName.IsNotNullOrEmpty() ? $"{_userInfo.UserName}({_userInfo.UserTypeShortName})" : "匿名", + Api = $"{request?.Method} {requestPath}", + Message = "重复请求拦截", + JsonData = this.Intoparam, + Stack = string.Empty, + AtUsers = userList ?? [] + } + ); + } + } + catch (Exception ex) + { + logger.LogError($"重复请求过滤器里发送企业微信出现错误:{ex.Message}"); + } + } + public string GenerateParameterHash(string parameters) { if (string.IsNullOrEmpty(parameters)) diff --git a/IRaCIS.Core.Application/IRaCIS.Core.Application.xml b/IRaCIS.Core.Application/IRaCIS.Core.Application.xml index 2d1cb6b88..fb63be48d 100644 --- a/IRaCIS.Core.Application/IRaCIS.Core.Application.xml +++ b/IRaCIS.Core.Application/IRaCIS.Core.Application.xml @@ -16282,7 +16282,7 @@ logger loggerHelper - + 请求拦截 请求前后的操作 diff --git a/IRaCIS.Core.Application/MassTransit/Recurring/SystemDocumentConsumer.cs b/IRaCIS.Core.Application/MassTransit/Recurring/SystemDocumentConsumer.cs index b07ec8da6..d9361c315 100644 --- a/IRaCIS.Core.Application/MassTransit/Recurring/SystemDocumentConsumer.cs +++ b/IRaCIS.Core.Application/MassTransit/Recurring/SystemDocumentConsumer.cs @@ -51,11 +51,13 @@ namespace IRaCIS.Core.Application.MassTransit.Recurring var systemDocQuery = from sysDoc in _systemDocumentRepository.AsQueryable(false) - from identityUser in _identityUserRepository.AsQueryable(false).Where(t => t.Status == UserStateEnum.Enable&&!t.IsTestUser).Where(t => t.UserRoleList.Where(t => t.IsUserRoleDisabled == false).Any(t => sysDoc.NeedConfirmedUserTypeList.AsQueryable().Any(c => c.NeedConfirmUserTypeId == t.UserTypeId))) + from identityUser in _identityUserRepository.AsQueryable(false).Where(t => t.Status == UserStateEnum.Enable).Where(t => t.UserRoleList.Where(t => t.IsUserRoleDisabled == false).Any(t => sysDoc.NeedConfirmedUserTypeList.AsQueryable().Any(c => c.NeedConfirmUserTypeId == t.UserTypeId))) join confirmc in _systemDocConfirmedUserRepository.Where() on new { ConfirmUserId = identityUser.Id, SystemDocumentId = sysDoc.Id } equals new { confirmc.ConfirmUserId, confirmc.SystemDocumentId } into cc from confirm in cc.DefaultIfEmpty() - select new UnionDocumentWithConfirmInfoView() + select new TriaAndSystemlSignDocView() { + DocLanguageType=sysDoc.DocLanguageType, + UserWorkLanguage=identityUser.UserWorkLanguage, IsSystemDoc = true, Id = sysDoc.Id, CreateTime = sysDoc.CreateTime, @@ -79,7 +81,9 @@ namespace IRaCIS.Core.Application.MassTransit.Recurring }; var datalist = await systemDocQuery.IgnoreQueryFilters().Where(t => t.IsDeleted == false && t.ConfirmTime == null) .ToListAsync(); - datalist = datalist.Where(x => x.SuggestFinishTime != null && x.SuggestFinishTime.Value.Date == DateTime.Now.Date) + datalist = datalist + .Where(x=>x.DocLanguageType == DocLanguageType.CN_US || (int)x.DocLanguageType == (int)x.UserWorkLanguage) + .Where(x => x.SuggestFinishTime != null && x.SuggestFinishTime.Value.Date == DateTime.Now.Date) .Where(x => x.IsNeedSendEmial).ToList(); var confirmUserIdList = datalist.Select(t => t.ConfirmUserId).Distinct().ToList(); var userinfoList = await _identityUserRepository.Where(x => confirmUserIdList.Contains(x.Id)).ToListAsync(); @@ -168,7 +172,7 @@ namespace IRaCIS.Core.Application.MassTransit.Recurring Console.WriteLine($"只发送给新增的角色,角色数量: {context.Message.NewUserTypeIds.Count}"); } // 构建查询 - IQueryable systemDocQuery; + IQueryable systemDocQuery; if (context.Message.NewUserTypeIds != null && context.Message.NewUserTypeIds.Any()) { @@ -176,12 +180,14 @@ namespace IRaCIS.Core.Application.MassTransit.Recurring systemDocQuery = from sysDoc in _systemDocumentRepository.AsQueryable(false).Where(x => context.Message.Ids.Contains(x.Id)) from identityUser in _identityUserRepository.AsQueryable(false) - .Where(t => t.Status == UserStateEnum.Enable && !t.IsTestUser && + .Where(t => t.Status == UserStateEnum.Enable && t.UserRoleList.Where(t => t.IsUserRoleDisabled == false) .Any(t => context.Message.NewUserTypeIds.Contains(t.UserTypeId) && sysDoc.NeedConfirmedUserTypeList.AsQueryable().Any(c => c.NeedConfirmUserTypeId == t.UserTypeId))) - select new UnionDocumentWithConfirmInfoView() + select new TriaAndSystemlSignDocView() { + DocLanguageType = sysDoc.DocLanguageType, + UserWorkLanguage = identityUser.UserWorkLanguage, IsSystemDoc = true, Id = sysDoc.Id, CreateTime = sysDoc.CreateTime, @@ -204,11 +210,13 @@ namespace IRaCIS.Core.Application.MassTransit.Recurring systemDocQuery = from sysDoc in _systemDocumentRepository.AsQueryable(false).Where(x => context.Message.Ids.Contains(x.Id)) from identityUser in _identityUserRepository.AsQueryable(false) - .Where(t => t.Status == UserStateEnum.Enable && !t.IsTestUser && + .Where(t => t.Status == UserStateEnum.Enable && t.UserRoleList.Where(t => t.IsUserRoleDisabled == false) .Any(t => sysDoc.NeedConfirmedUserTypeList.AsQueryable().Any(c => c.NeedConfirmUserTypeId == t.UserTypeId))) - select new UnionDocumentWithConfirmInfoView() + select new TriaAndSystemlSignDocView() { + DocLanguageType = sysDoc.DocLanguageType, + UserWorkLanguage = identityUser.UserWorkLanguage, IsSystemDoc = true, Id = sysDoc.Id, CreateTime = sysDoc.CreateTime, @@ -226,7 +234,7 @@ namespace IRaCIS.Core.Application.MassTransit.Recurring }; } var datalist = await systemDocQuery.IgnoreQueryFilters().Where(x => x.IsNeedSendEmial).ToListAsync(); - + datalist = datalist.Where(x => x.DocLanguageType == DocLanguageType.CN_US || (int)x.DocLanguageType == (int)x.UserWorkLanguage).ToList(); var confirmUserIdList = datalist.Select(t => t.ConfirmUserId).Distinct().ToList(); var userinfoList = await _identityUserRepository.Where(x => confirmUserIdList.Contains(x.Id)).ToListAsync(); diff --git a/IRaCIS.Core.Application/MassTransit/Recurring/TrialDocumentConsumer.cs b/IRaCIS.Core.Application/MassTransit/Recurring/TrialDocumentConsumer.cs index 1a555bc73..0a2bc5fa1 100644 --- a/IRaCIS.Core.Application/MassTransit/Recurring/TrialDocumentConsumer.cs +++ b/IRaCIS.Core.Application/MassTransit/Recurring/TrialDocumentConsumer.cs @@ -52,7 +52,7 @@ namespace IRaCIS.Core.Application.MassTransit.Recurring var trialDocQuery = from trialDoc in _trialDocumentRepository.AsQueryable(true) - + join trial in _trialRepository.Where(x => x.IsDeleted == false) on trialDoc.TrialId equals trial.Id join trialIdentityUser in _trialIdentityUserRepository.Where(x => x.IsDeleted == false) on trialDoc.TrialId equals trialIdentityUser.TrialId join trialUserRole in _trialUserRoleRepository.Where(x => x.IsDeleted == false) on trialIdentityUser.Id equals trialUserRole.TrialUserId join identityUser in _identityUserRepository.AsQueryable(false).Where(u => u.Status == UserStateEnum.Enable && !u.IsTestUser) @@ -64,15 +64,18 @@ namespace IRaCIS.Core.Application.MassTransit.Recurring from confirm in cc.DefaultIfEmpty() where trialIdentityUser.TrialUserRoleList.Any(ur => !ur.IsDeleted && trialDoc.NeedConfirmedUserTypeList.Any(c => c.NeedConfirmUserTypeId == ur.UserRole.UserTypeId)) - select new TrialSignDocView() + select new TriaAndSystemlSignDocView() { + TrialCode = trialDoc.Trial.TrialCode, ResearchProgramNo = trialDoc.Trial.ResearchProgramNo, ExperimentName = trialDoc.Trial.ExperimentName, CurrentStaffTrainDays = trialDoc.CurrentStaffTrainDays, NewStaffTrainDays = trialDoc.NewStaffTrainDays, Id = trialDoc.Id, - TrialId= trialDoc.TrialId, + TrialType= trial.TrialType, + IsTestUser= identityUser.IsTestUser, + TrialId = trialDoc.TrialId, IsSystemDoc = false, CreateTime = trialDoc.CreateTime, FullFilePath = trialDoc.Path, @@ -94,7 +97,11 @@ namespace IRaCIS.Core.Application.MassTransit.Recurring }; var datalist = await trialDocQuery.IgnoreQueryFilters().Where(t => t.IsDeleted == false && t.ConfirmTime == null&&t.ConfirmTime==null) .ToListAsync(); - datalist = datalist.Where(x => x.SuggestFinishTime != null && x.SuggestFinishTime.Value.Date == DateTime.Now.Date) + + + datalist = datalist + .Where(x=>((x.TrialType== TrialType.OfficialTrial|| x.TrialType== TrialType.Training) && !x.IsTestUser) || (x.TrialType==TrialType.NoneOfficial &&x.IsTestUser)) + .Where(x => x.SuggestFinishTime != null && x.SuggestFinishTime.Value.Date == DateTime.Now.Date) .ToList(); var confirmUserIdList = datalist.Select(t => t.ConfirmUserId).Distinct().ToList(); var userinfoList = await _identityUserRepository.Where(x => confirmUserIdList.Contains(x.Id)).ToListAsync(); @@ -203,20 +210,21 @@ namespace IRaCIS.Core.Application.MassTransit.Recurring Console.WriteLine($"只发送给新增项目的角色,角色数量: {context.Message.NewUserTypeIds.Count}"); } // 构建查询 - IQueryable systemDocQuery; + IQueryable trialDocQuery; if (context.Message.NewUserTypeIds != null && context.Message.NewUserTypeIds.Any()) { // 只查询新增角色的用户 - systemDocQuery = + trialDocQuery = from trialDoc in _trialDocumentRepository.AsQueryable(false).Where(x => context.Message.Ids.Contains(x.Id)) + join trial in _trialRepository.Where(x => x.IsDeleted == false) on trialDoc.TrialId equals trial.Id join trialIdentityUser in _trialIdentityUserRepository.Where(x=>x.IsDeleted==false) on trialDoc.TrialId equals trialIdentityUser.TrialId join trialUserRole in _trialUserRoleRepository.Where(x => x.IsDeleted == false) on trialIdentityUser.Id equals trialUserRole.TrialUserId join identityUser in _identityUserRepository.AsQueryable(false).Where(u => u.Status == UserStateEnum.Enable && !u.IsTestUser) on trialIdentityUser.IdentityUserId equals identityUser.Id where trialIdentityUser.TrialUserRoleList.Any(ur => !ur.IsDeleted && context.Message.NewUserTypeIds.Contains(ur.UserRole.UserTypeId) && trialDoc.NeedConfirmedUserTypeList.Any(c => c.NeedConfirmUserTypeId == ur.UserRole.UserTypeId)) - select new UnionDocumentWithConfirmInfoView() + select new TriaAndSystemlSignDocView() { IsSystemDoc = true, Id = trialDoc.Id, @@ -224,6 +232,8 @@ namespace IRaCIS.Core.Application.MassTransit.Recurring CreateTime = trialDoc.CreateTime, IsDeleted = trialDoc.IsDeleted, SignViewMinimumMinutes = trialDoc.SignViewMinimumMinutes, + TrialType = trial.TrialType, + IsTestUser = identityUser.IsTestUser, Name = trialDoc.Name, Path = trialDoc.Path, FileTypeId = trialDoc.FileTypeId, @@ -238,8 +248,9 @@ namespace IRaCIS.Core.Application.MassTransit.Recurring else { // 查询所有相关角色的用户 - systemDocQuery = + trialDocQuery = from trialDoc in _trialDocumentRepository.AsQueryable(false).Where(x => context.Message.Ids.Contains(x.Id)) + join trialIdentityUser in _trialIdentityUserRepository.Where(x => x.IsDeleted == false) on trialDoc.TrialId equals trialIdentityUser.TrialId join trialUserRole in _trialUserRoleRepository.Where(x=>x.IsDeleted==false) on trialIdentityUser.Id equals trialUserRole.TrialUserId @@ -249,7 +260,7 @@ namespace IRaCIS.Core.Application.MassTransit.Recurring where trialIdentityUser.TrialUserRoleList.Any(ur => !ur.IsDeleted &&trialDoc.NeedConfirmedUserTypeList.Any(c => c.NeedConfirmUserTypeId == ur.UserRole.UserTypeId)) - select new UnionDocumentWithConfirmInfoView() + select new TriaAndSystemlSignDocView() { IsSystemDoc = false, Id = trialDoc.Id, @@ -258,6 +269,8 @@ namespace IRaCIS.Core.Application.MassTransit.Recurring CreateTime = trialDoc.CreateTime, IsDeleted = trialDoc.IsDeleted, SignViewMinimumMinutes = trialDoc.SignViewMinimumMinutes, + TrialType = trial.TrialType, + IsTestUser = identityUser.IsTestUser, Name = trialDoc.Name, Path = trialDoc.Path, FileTypeId = trialDoc.FileTypeId, @@ -270,7 +283,9 @@ namespace IRaCIS.Core.Application.MassTransit.Recurring }; } - var datalist = await systemDocQuery.IgnoreQueryFilters().ToListAsync(); + var datalist = await trialDocQuery + .IgnoreQueryFilters().Where(x => ((x.TrialType == TrialType.OfficialTrial || x.TrialType == TrialType.Training) && !x.IsTestUser) || (x.TrialType == TrialType.NoneOfficial && x.IsTestUser)) + .ToListAsync(); var confirmUserIdList = datalist.Select(t => t.ConfirmUserId).Distinct().ToList(); var userinfoList = await _identityUserRepository.Where(x => confirmUserIdList.Contains(x.Id)).ToListAsync(); diff --git a/IRaCIS.Core.Application/Service/Document/DTO/SystemDocumentViewModel.cs b/IRaCIS.Core.Application/Service/Document/DTO/SystemDocumentViewModel.cs index 02e7e2dde..e192c1bfd 100644 --- a/IRaCIS.Core.Application/Service/Document/DTO/SystemDocumentViewModel.cs +++ b/IRaCIS.Core.Application/Service/Document/DTO/SystemDocumentViewModel.cs @@ -80,14 +80,18 @@ namespace IRaCIS.Core.Application.Contracts } - public class TrialSignDocView : UnionDocumentWithConfirmInfoView + public class TriaAndSystemlSignDocView : UnionDocumentWithConfirmInfoView { public string TrialCode { get; set; } public string ResearchProgramNo { get; set; } public string ExperimentName { get; set; } + public TrialType TrialType { get; set; } + public bool IsTestUser { get; set; } + + public UserWorkLanguage UserWorkLanguage { get; set; } } @@ -365,6 +369,8 @@ namespace IRaCIS.Core.Application.Contracts public DocLanguageType DocLanguageType { get; set; } + + } diff --git a/IRaCIS.Core.Application/Service/Document/SystemDocumentService.cs b/IRaCIS.Core.Application/Service/Document/SystemDocumentService.cs index 4e70aa087..cb1da9823 100644 --- a/IRaCIS.Core.Application/Service/Document/SystemDocumentService.cs +++ b/IRaCIS.Core.Application/Service/Document/SystemDocumentService.cs @@ -216,6 +216,8 @@ namespace IRaCIS.Core.Application.Services return ResponseOutput.Result(true); } + + /// /// 下线系统文档 /// diff --git a/IRaCIS.Core.Application/Service/Document/TrialDocumentService.cs b/IRaCIS.Core.Application/Service/Document/TrialDocumentService.cs index 680450732..ed708e630 100644 --- a/IRaCIS.Core.Application/Service/Document/TrialDocumentService.cs +++ b/IRaCIS.Core.Application/Service/Document/TrialDocumentService.cs @@ -153,7 +153,7 @@ namespace IRaCIS.Core.Application.Services } [HttpPost] - public async Task> GetTrialSignDocumentList(TrialDocQuery inQuery) + public async Task> GetTrialSignDocumentList(TrialDocQuery inQuery) { var trialDocQueryable = from trialDoc in _trialDocumentRepository.Where(t => t.IsPublish) .WhereIf(inQuery.TrialId != null, t => t.TrialId == inQuery.TrialId) @@ -164,7 +164,7 @@ namespace IRaCIS.Core.Application.Services new { trialUser.IdentityUserId, TrialDocumentId = trialDoc.Id } equals new { IdentityUserId = confirm.ConfirmUserId, confirm.TrialDocumentId } into cc from confirm in cc.DefaultIfEmpty() - select new TrialSignDocView() + select new TriaAndSystemlSignDocView() { TrialCode = trialDoc.Trial.TrialCode, ResearchProgramNo = trialDoc.Trial.ResearchProgramNo,