Merge branch 'Test_IRC_Net8' of https://gitea.frp.extimaging.com/XCKJ/irc-netcore-api into Test_IRC_Net8
continuous-integration/drone/push Build is passing Details

Uat_IRC_Net8
he 2025-01-24 12:28:56 +08:00
commit 66819a1e89
12 changed files with 64 additions and 68 deletions

View File

@ -850,13 +850,13 @@ namespace IRaCIS.Core.API.Controllers
throw new BusinessValidationFailedException(_localizer["UploadDownLoad_InvalidCenters"]); throw new BusinessValidationFailedException(_localizer["UploadDownLoad_InvalidCenters"]);
} }
foreach (var item in excelList.GroupBy(t => t.Email)) foreach (var item in excelList.GroupBy(t => t.Email.Trim()))
{ {
var itemList = item.ToList(); var itemList = item.ToList();
var first = item.First(); var first = item.First();
if (itemList.Any(t => t.Email != first.Email || t.Phone != first.Phone || t.OrganizationName != first.OrganizationName || t.FirstName != first.FirstName || t.LastName != first.LastName)) if (itemList.Any(t => t.Email.Trim() != first.Email.Trim() || t.Phone.Trim() != first.Phone.Trim() || t.OrganizationName.Trim() != first.OrganizationName.Trim() || t.FirstName.Trim() != first.FirstName.Trim() || t.LastName.Trim() != first.LastName.Trim()))
{ {
//同一邮箱,用户信息应该保持一致! //同一邮箱,用户信息应该保持一致!
@ -886,7 +886,7 @@ namespace IRaCIS.Core.API.Controllers
foreach (var item in excelList) foreach (var item in excelList)
{ {
switch (item.UserTypeStr.ToUpper()) switch (item.UserTypeStr.Trim().ToUpper())
{ {
case "CRC": case "CRC":
@ -903,7 +903,7 @@ namespace IRaCIS.Core.API.Controllers
} }
item.TrialSiteId = siteList.FirstOrDefault(t => t.TrialSiteCode.ToUpper() == item.TrialSiteCode.ToUpper()).TrialSiteId; item.TrialSiteId = siteList.FirstOrDefault(t => t.TrialSiteCode.Trim().ToUpper() == item.TrialSiteCode.Trim().ToUpper()).TrialSiteId;
} }
var list = excelList.Where(t => t.UserTypeEnum == UserTypeEnum.ClinicalResearchCoordinator || t.UserTypeEnum == UserTypeEnum.CRA).ToList(); var list = excelList.Where(t => t.UserTypeEnum == UserTypeEnum.ClinicalResearchCoordinator || t.UserTypeEnum == UserTypeEnum.CRA).ToList();

View File

@ -43,25 +43,22 @@
"OpenLoginLimit": true, "OpenLoginLimit": true,
"LoginMaxFailCount": 5, "LoginMaxFailCount": 5,
"LoginFailLockMinutes": 30, "LoginFailLockMinutes": 30,
"AutoLoginOutMinutes": 360, "AutoLoginOutMinutes": 360,
"OpenLoginMFA": false, "OpenLoginMFA": false,
"ContinuousReadingTimeMin": 120, "ContinuousReadingTimeMin": 120,
"ReadingRestTimeMin": 10, "ReadingRestTimeMin": 10,
"IsNeedChangePassWord": true, "IsNeedChangePassWord": true,
"ChangePassWordDays": 90 "ChangePassWordDays": 90
}, },
"SystemEmailSendConfig": { "SystemEmailSendConfig": {
"Port": 465, "Port": 465,
"Host": "smtp.qiye.aliyun.com", "Host": "smtp.qiye.aliyun.com",
"FromEmail": "IRC@extimaging.com", "FromEmail": "irc@extimaging.com",
"FromName": "IRC", "FromName": "irc",
"AuthorizationCode": "ExtImg@2022", "AuthorizationCode": "ExtImg@2022",
"SiteUrl": "http://irc.extimaging.com/login", "SiteUrl": "http://irc.extimaging.com/login",
"OrganizationName": "Extlmaging", "OrganizationName": "Extlmaging",

View File

@ -52,28 +52,24 @@
"BasicSystemConfig": { "BasicSystemConfig": {
"OpenUserComplexPassword": false, "OpenUserComplexPassword": false,
"OpenSignDocumentBeforeWork": false, "OpenSignDocumentBeforeWork": false,
"OpenTrialRelationDelete": true,
"OpenLoginLimit": false, "OpenLoginLimit": false,
"LoginMaxFailCount": 5, "LoginMaxFailCount": 5,
"LoginFailLockMinutes": 1, "LoginFailLockMinutes": 1,
"AutoLoginOutMinutes": 10,
"AutoLoginOutMinutes": 1,
"OpenLoginMFA": false, "OpenLoginMFA": false,
"ContinuousReadingTimeMin": 120, "ContinuousReadingTimeMin": 120,
"ReadingRestTimeMin": 10, "ReadingRestTimeMin": 10,
"IsNeedChangePassWord": true,
"IsNeedChangePassWord": true,
"ChangePassWordDays": 90, "ChangePassWordDays": 90,
"OpenTrialRelationDelete": true,
"ThirdPdfUrl": "http://106.14.89.110:30088/api/v1/convert/file/pdf" "ThirdPdfUrl": "http://106.14.89.110:30088/api/v1/convert/file/pdf"
}, },

View File

@ -7,8 +7,8 @@
} }
}, },
"ConnectionStrings": { "ConnectionStrings": {
"RemoteNew": "Server=us-prod-mssql-service,1433;Database=US_IRC;User ID=sa;Password=xc@123456;TrustServerCertificate=true", "RemoteNew": "Server=us-mssql-prod,1433;Database=US_IRC;User ID=sa;Password=xc@123456;TrustServerCertificate=true",
"Hangfire": "Server=us-prod-mssql-service,1433;Database=US_IRC_Hangfire;User ID=sa;Password=xc@123456;TrustServerCertificate=true" "Hangfire": "Server=us-mssql-prod,1433;Database=US_IRC_Hangfire;User ID=sa;Password=xc@123456;TrustServerCertificate=true"
//"RemoteNew": "Server=44.210.231.169,1435;Database=US_IRC;User ID=sa;Password=xc@123456;TrustServerCertificate=true", //"RemoteNew": "Server=44.210.231.169,1435;Database=US_IRC;User ID=sa;Password=xc@123456;TrustServerCertificate=true",
//"Hangfire": "Server=44.210.231.169,1435;Database=US_IRC_Hangfire;User ID=sa;Password=xc@123456;TrustServerCertificate=true", //"Hangfire": "Server=44.210.231.169,1435;Database=US_IRC_Hangfire;User ID=sa;Password=xc@123456;TrustServerCertificate=true",
}, },
@ -39,25 +39,25 @@
}, },
"BasicSystemConfig": { "BasicSystemConfig": {
"OpenUserComplexPassword": false, "OpenUserComplexPassword": true,
"OpenSignDocumentBeforeWork": true,
"OpenSignDocumentBeforeWork": false,
"OpenTrialRelationDelete": true,
"OpenLoginLimit": false,
"OpenLoginLimit": true,
"LoginMaxFailCount": 5, "LoginMaxFailCount": 5,
"LoginFailLockMinutes": 30, "LoginFailLockMinutes": 30,
"AutoLoginOutMinutes": 60, "AutoLoginOutMinutes": 120,
"OpenLoginMFA": true,
"ContinuousReadingTimeMin": 120, "ContinuousReadingTimeMin": 120,
"ReadingRestTimeMin": 10, "ReadingRestTimeMin": 10,
"IsNeedChangePassWord": true,
"ChangePassWordDays": 90 "IsNeedChangePassWord": true,
"ChangePassWordDays": 90,
"OpenTrialRelationDelete": false
}, },
"SystemEmailSendConfig": { "SystemEmailSendConfig": {
@ -75,7 +75,7 @@
"CompanyShortNameCN": "展影医疗", "CompanyShortNameCN": "展影医疗",
"SiteUrl": "https://lili.elevateimaging.ai/login", "SiteUrl": "https://lili.elevateimaging.ai/login",
"IsEnv_US": true, "IsEnv_US": true,
"IsOpenErrorNoticeEmail": true, "IsOpenErrorNoticeEmail": false,
"ErrorNoticeEmailList": [ "872297557@qq.com" ] "ErrorNoticeEmailList": [ "872297557@qq.com" ]
}, },

View File

@ -50,26 +50,20 @@
"BasicSystemConfig": { "BasicSystemConfig": {
"OpenUserComplexPassword": true, "OpenUserComplexPassword": true,
"OpenSignDocumentBeforeWork": true, "OpenSignDocumentBeforeWork": true,
"OpenTrialRelationDelete": true, "OpenLoginLimit": true,
"OpenLoginLimit": false,
"LoginMaxFailCount": 5, "LoginMaxFailCount": 5,
"LoginFailLockMinutes": 30, "LoginFailLockMinutes": 30,
"AutoLoginOutMinutes": 60, "AutoLoginOutMinutes": 120,
"OpenLoginMFA": true,
"ContinuousReadingTimeMin": 120, "ContinuousReadingTimeMin": 120,
"ReadingRestTimeMin": 10, "ReadingRestTimeMin": 10,
"IsNeedChangePassWord": true, "IsNeedChangePassWord": true,
"ChangePassWordDays": 90
"ChangePassWordDays": 90,
"OpenLoginMFA": false
}, },
"SystemEmailSendConfig": { "SystemEmailSendConfig": {
@ -85,7 +79,7 @@
"CompanyNameCN": "上海展影医疗科技有限公司", "CompanyNameCN": "上海展影医疗科技有限公司",
"CompanyShortName": "Elevate Imaging", "CompanyShortName": "Elevate Imaging",
"CompanyShortNameCN": "展影医疗", "CompanyShortNameCN": "展影医疗",
"SiteUrl": "https://lili.test.elevateimaging.ai/login", "SiteUrl": "https://lili.uat.elevateimaging.ai/login",
"IsEnv_US": true, "IsEnv_US": true,
"IsOpenErrorNoticeEmail": false, "IsOpenErrorNoticeEmail": false,
"ErrorNoticeEmailList": [ "872297557@qq.com" ] "ErrorNoticeEmailList": [ "872297557@qq.com" ]

View File

@ -56,7 +56,6 @@
"BasicSystemConfig": { "BasicSystemConfig": {
"OpenUserComplexPassword": true, "OpenUserComplexPassword": true,
"OpenSignDocumentBeforeWork": true, "OpenSignDocumentBeforeWork": true,
"OpenLoginLimit": true, "OpenLoginLimit": true,
@ -64,13 +63,13 @@
"LoginFailLockMinutes": 30, "LoginFailLockMinutes": 30,
"AutoLoginOutMinutes": 60, "AutoLoginOutMinutes": 60,
"OpenLoginMFA": false, "OpenLoginMFA": false,
"ContinuousReadingTimeMin": 120, "ContinuousReadingTimeMin": 120,
"ReadingRestTimeMin": 10, "ReadingRestTimeMin": 10,
"IsNeedChangePassWord": true,
"IsNeedChangePassWord": true,
"ChangePassWordDays": 90 "ChangePassWordDays": 90
}, },

View File

@ -25,10 +25,10 @@ namespace IRaCIS.Core.Application.Service
var exploreRecommendQueryable = var exploreRecommendQueryable =
_exploreRecommendRepository.Where().IgnoreQueryFilters() _exploreRecommendRepository.Where().IgnoreQueryFilters()
.WhereIf(string.IsNullOrEmpty(inQuery.Title), t => t.Title.Contains(inQuery.Title)) .WhereIf(!string.IsNullOrEmpty(inQuery.Title), t => t.Title.Contains(inQuery.Title))
.WhereIf(string.IsNullOrEmpty(inQuery.FileName), t => t.Title.Contains(inQuery.FileName)) .WhereIf(!string.IsNullOrEmpty(inQuery.FileName), t => t.Title.Contains(inQuery.FileName))
.WhereIf(string.IsNullOrEmpty(inQuery.DownloadUrl), t => t.Title.Contains(inQuery.DownloadUrl)) .WhereIf(!string.IsNullOrEmpty(inQuery.DownloadUrl), t => t.Title.Contains(inQuery.DownloadUrl))
.WhereIf(string.IsNullOrEmpty(inQuery.Version), t => t.Title.Contains(inQuery.Version)) .WhereIf(!string.IsNullOrEmpty(inQuery.Version), t => t.Title.Contains(inQuery.Version))
.WhereIf(inQuery.IsDeleted != null, t => t.IsDeleted == t.IsDeleted) .WhereIf(inQuery.IsDeleted != null, t => t.IsDeleted == t.IsDeleted)
.ProjectTo<ExploreRecommendView>(_mapper.ConfigurationProvider); .ProjectTo<ExploreRecommendView>(_mapper.ConfigurationProvider);

View File

@ -5,6 +5,7 @@
//-------------------------------------------------------------------- //--------------------------------------------------------------------
using IRaCIS.Core.Application.Contracts; using IRaCIS.Core.Application.Contracts;
using IRaCIS.Core.Infrastructure.Extention;
using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc;
namespace IRaCIS.Core.Application.Services namespace IRaCIS.Core.Application.Services
{ {
@ -25,7 +26,10 @@ namespace IRaCIS.Core.Application.Services
[HttpPost] [HttpPost]
public async Task<PageOutput<SystemBasicDataView>> GetSystemBasicDataList(SystemBasicDataQuery inQuery) public async Task<PageOutput<SystemBasicDataView>> GetSystemBasicDataList(SystemBasicDataQuery inQuery)
{ {
var systemBasicDataQueryable = _systemBasicDataRepository.Where(t => t.ParentId == null) var systemBasicDataQueryable = _systemBasicDataRepository
.Where(t => t.ParentId == null)
.WhereIf(inQuery.Code != null, t => t.Code.Contains(inQuery.Code))
.WhereIf(inQuery.Name != null, t => t.Name.Contains(inQuery.Name))
.ProjectTo<SystemBasicDataView>(_mapper.ConfigurationProvider); .ProjectTo<SystemBasicDataView>(_mapper.ConfigurationProvider);
return await systemBasicDataQueryable.ToPagedListAsync(inQuery, nameof(SystemBasicDataView.Code)); return await systemBasicDataQueryable.ToPagedListAsync(inQuery, nameof(SystemBasicDataView.Code));

View File

@ -439,6 +439,7 @@ namespace IRaCIS.Core.Application.Services
var needSignSystemDocCount = await _systemDocumentRepository.AsQueryable(true) var needSignSystemDocCount = await _systemDocumentRepository.AsQueryable(true)
.WhereIf(isInternal == false, t => t.DocUserSignType == DocUserSignType.InnerAndOuter)
.Where(t => t.IsDeleted == false && !t.SystemDocConfirmedUserList.Any(t => t.ConfirmUserId == _userInfo.IdentityUserId && t.ConfirmTime != null) && t.NeedConfirmedUserTypeList.Any(u => u.NeedConfirmUserTypeId == _userInfo.UserTypeId)) .Where(t => t.IsDeleted == false && !t.SystemDocConfirmedUserList.Any(t => t.ConfirmUserId == _userInfo.IdentityUserId && t.ConfirmTime != null) && t.NeedConfirmedUserTypeList.Any(u => u.NeedConfirmUserTypeId == _userInfo.UserTypeId))
.CountAsync(); .CountAsync();

View File

@ -1160,17 +1160,18 @@ namespace IRaCIS.Core.Application.Service
} }
} }
else
{
await _fusionCache.SetAsync(CacheKeys.UserToken(identityUserId), userLoginReturnModel.JWTStr, TimeSpan.FromDays(7));
await _fusionCache.SetAsync(CacheKeys.UserAutoLoginOut(identityUserId), DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"), TimeSpan.FromMinutes(_verifyConfig.CurrentValue.AutoLoginOutMinutes)); await _fusionCache.SetAsync(CacheKeys.UserToken(identityUserId), userLoginReturnModel.JWTStr, TimeSpan.FromDays(7));
}
await _fusionCache.SetAsync(CacheKeys.UserAutoLoginOut(identityUserId), DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"), TimeSpan.FromMinutes(_verifyConfig.CurrentValue.AutoLoginOutMinutes));
userLoginReturnModel.BasicInfo.AccountList = await _userRoleRepository.Where(t => t.IdentityUserId == identityUserId).ProjectTo<UserAccountInfo>(_mapper.ConfigurationProvider).ToListAsync(); userLoginReturnModel.BasicInfo.AccountList = await _userRoleRepository.Where(t => t.IdentityUserId == identityUserId).ProjectTo<UserAccountInfo>(_mapper.ConfigurationProvider).ToListAsync();
userLoginReturnModel.CompanyInfo = companyInfo; userLoginReturnModel.CompanyInfo = companyInfo;
return ResponseOutput.Ok(userLoginReturnModel); return ResponseOutput.Ok(userLoginReturnModel);
} }

View File

@ -87,11 +87,12 @@ namespace IRaCIS.Core.Application.Service
if (updateTrialUserCommand.IsDeleted) if (updateTrialUserCommand.IsDeleted)
{ {
if (await _trialSiteUserRoleRepository.AnyAsync(t => t.UserRole.IdentityUserId == trialUser.IdentityUserId && t.TrialId == trialUser.TrialId)) //可以直接退出不管中心下的CRC CRA 状态
{ //if (await _trialSiteUserRoleRepository.AnyAsync(t => t.UserRole.IdentityUserId == trialUser.IdentityUserId && t.TrialId == trialUser.TrialId))
// ----人员已加入现场维护 //{
return ResponseOutput.NotOk(_localizer["TrialMaint_PersonnelJoined"]); // // ----人员已加入现场维护
} // return ResponseOutput.NotOk(_localizer["TrialMaint_PersonnelJoined"]);
//}
var findQC = await _trialUseRoleRepository.FirstOrDefaultAsync(t => t.UserRole.IdentityUserId == trialUser.IdentityUserId && t.UserRole.UserTypeEnum == UserTypeEnum.IQC); var findQC = await _trialUseRoleRepository.FirstOrDefaultAsync(t => t.UserRole.IdentityUserId == trialUser.IdentityUserId && t.UserRole.UserTypeEnum == UserTypeEnum.IQC);
@ -161,10 +162,13 @@ namespace IRaCIS.Core.Application.Service
var query = _userRoleRepository.Where(t => t.UserTypeEnum != UserTypeEnum.SuperAdmin && t.IdentityUser.Status == UserStateEnum.Enable).IgnoreQueryFilters() var query = _userRoleRepository.Where(t => t.UserTypeEnum != UserTypeEnum.SuperAdmin && t.IdentityUser.Status == UserStateEnum.Enable).IgnoreQueryFilters()
//正式或者培训的项目 不能允许测试用户(必须正式用户) 同时必须是内部的用户 //正式或者培训的项目 不能允许测试用户(必须正式用户) 同时必须是内部的用户
.WhereIf(trialType == TrialType.OfficialTrial || trialType == TrialType.Training, t => t.IdentityUser.IsTestUser == false /*&& t.IdentityUser.IsZhiZhun*/) .WhereIf(trialType == TrialType.OfficialTrial || trialType == TrialType.Training, t => t.IdentityUser.IsTestUser == false
&& (t.IdentityUser.IsZhiZhun
|| t.UserTypeRole.UserTypeEnum == UserTypeEnum.IQC
|| t.UserTypeRole.UserTypeEnum == UserTypeEnum.MIM))
//测试项目 可以加入 测试用户 或者内部正式用户 //测试项目 可以加入 测试用户 或者内部正式用户
.WhereIf(trialType == TrialType.NoneOfficial, t => t.IdentityUser.IsTestUser == true /*|| (t.IdentityUser.IsTestUser == false && t.IdentityUser.IsZhiZhun)*/) .WhereIf(trialType == TrialType.NoneOfficial, t => t.IdentityUser.IsTestUser == true || (t.IdentityUser.IsTestUser == false && t.IdentityUser.IsZhiZhun))
.Where(t => userTypeEnums.Contains(t.UserTypeEnum)) .Where(t => userTypeEnums.Contains(t.UserTypeEnum))
.WhereIf(inQuery.UserTypeEnum != null, t => t.UserTypeEnum == inQuery.UserTypeEnum) .WhereIf(inQuery.UserTypeEnum != null, t => t.UserTypeEnum == inQuery.UserTypeEnum)
.WhereIf(!string.IsNullOrWhiteSpace(inQuery.UserRealName), t => t.IdentityUser.FullName.Contains(inQuery.UserRealName)) .WhereIf(!string.IsNullOrWhiteSpace(inQuery.UserRealName), t => t.IdentityUser.FullName.Contains(inQuery.UserRealName))

View File

@ -125,8 +125,8 @@ namespace IRaCIS.Core.Application.Service
CreateMap<TrialSite, SiteStatDTO>() CreateMap<TrialSite, SiteStatDTO>()
.ForMember(d => d.TrialSiteId, u => u.MapFrom(s => s.Id)) .ForMember(d => d.TrialSiteId, u => u.MapFrom(s => s.Id))
.ForMember(d => d.VisitCount, u => u.MapFrom(s => s.SubjectVisitList.Count())) .ForMember(d => d.VisitCount, u => u.MapFrom(s => s.SubjectVisitList.Count(t=>t.IsDeleted==false)))
.ForMember(d => d.SubjectCount, u => u.MapFrom(s => s.SubjectList.Count())) .ForMember(d => d.SubjectCount, u => u.MapFrom(s => s.SubjectList.Count(t=>t.IsDeleted==false)))
//.ForMember(d => d.UserCount, u => u.MapFrom(s => s.CRCUserList.Count())) //.ForMember(d => d.UserCount, u => u.MapFrom(s => s.CRCUserList.Count()))
.ForMember(d => d.UserNameList, u => u.MapFrom(s => s.CRCUserList.Where(t => t.IsDeleted == false).Select(u => u.UserRole.IdentityUser.FullName))); .ForMember(d => d.UserNameList, u => u.MapFrom(s => s.CRCUserList.Where(t => t.IsDeleted == false).Select(u => u.UserRole.IdentityUser.FullName)));
#endregion #endregion