Merge branch 'Test.Study' of http://192.168.3.68:2000/XCKJ/irc-netcore-api into Test.Study
continuous-integration/drone/push Build is passing Details

Uat_Study
he 2023-12-13 09:45:48 +08:00
commit b8ad8085cd
11 changed files with 130 additions and 128 deletions

View File

@ -1,16 +1,16 @@
// 使proto3
// 使proto3
syntax = "proto3";
//
//
option csharp_namespace = "gRPC.ZHiZHUN.AuthServer.protos";
/*
message
tag message(tag),
message
tag message(tag),
*/
//
//
message GetTokenReuqest{
string id=1;
string userName=2;
@ -22,48 +22,48 @@ message GetTokenReuqest{
}
//
//
message GetTokenResponse {
int32 code=1;
string token =2;
}
// service
// service
service TokenGrpcService{
// token
// token
rpc GetUserToken(GetTokenReuqest) returns (GetTokenResponse);
}
/*
//
//
message AddUserReuqest{
string name=1;
int32 age=2;
bool isBoy=3;
}
//
//
message ResultResponse {
int32 code=1;
string msg =2;
}
//
//
message QueryUserReuqest{
string name=1;
}
//
//
message UserInfoResponse {
string name=1;
int32 age=2;
string gender=3;
}
// service
// service
service UserService{
//
//
rpc AddUser(AddUserReuqest) returns (ResultResponse);
//
//
rpc GetAllUser(QueryUserReuqest) returns (UserInfoResponse);
}
*/

View File

@ -1,4 +1,4 @@
using System;
using System;
using Autofac.Extensions.DependencyInjection;
using Microsoft.AspNetCore.Hosting;
using Microsoft.Extensions.Hosting;
@ -24,7 +24,7 @@ namespace IRaCIS.Core.API
{
try
{
//以配置文件为准,否则 从url中取环境值(服务以命令行传递参数启动,配置文件配置了就不需要传递环境参数)
//以配置文件为准,否则 从url中取环境值(服务以命令行传递参数启动,配置文件配置了就不需要传递环境参数)
var config = new ConfigurationBuilder()
.AddEnvironmentVariables()
.Build();
@ -40,11 +40,11 @@ namespace IRaCIS.Core.API
: "Development";
}
//Dicom 浏览
//Dicom 浏览
//ImageManager.SetImplementation(WinFormsImageManager.Instance);
var host = CreateHostBuilder(args)
.UseEnvironment(enviromentName) //命令行传入环境
.UseEnvironment(enviromentName) //命令行传入环境
.ConfigureAppConfiguration((hostContext, config) =>
{
@ -58,20 +58,20 @@ namespace IRaCIS.Core.API
//// Serilog
SerilogExtension.AddSerilogSetup(enviromentName, host.Services);
Log.Logger.Warning($"当前环境:{enviromentName}");
Log.Logger.Warning($"当前环境:{enviromentName}");
if (RuntimeInformation.IsOSPlatform(OSPlatform.Windows))
{
Log.Logger.Warning($"当前部署平台环境windows");
Log.Logger.Warning($"当前部署平台环境windows");
}
else if (RuntimeInformation.IsOSPlatform(OSPlatform.Linux))
{
Log.Logger.Warning($"当前部署平台环境linux");
Log.Logger.Warning($"当前部署平台环境linux");
}
else
{
Log.Logger.Warning($"当前部署平台环境OSX or FreeBSD");
Log.Logger.Warning($"当前部署平台环境OSX or FreeBSD");
}
NewId.SetProcessIdProvider(new CurrentProcessIdProvider());
@ -97,13 +97,13 @@ namespace IRaCIS.Core.API
{
webBuilder.ConfigureKestrel((context, options) =>
{
//设置应用服务器Kestrel请求体最大为1GB // if don't set default value is: 30 MB
//设置应用服务器Kestrel请求体最大为1GB // if don't set default value is: 30 MB
options.Limits.MaxRequestBodySize = long.MaxValue;
options.Limits.KeepAliveTimeout = TimeSpan.FromMinutes(30);
options.Limits.RequestHeadersTimeout = TimeSpan.FromMinutes(20);
});
//webBuilder.UseSerilog();//在宿主机启动的时候配置serilog,与微软ILogger进行整合
//webBuilder.UseSerilog();//在宿主机启动的时候配置serilog,与微软ILogger进行整合
webBuilder.UseStartup<Startup>();
}).UseSerilog()
.UseServiceProviderFactory(new AutofacServiceProviderFactory());
@ -113,7 +113,7 @@ namespace IRaCIS.Core.API
{
var _repository = host.Services.GetService(typeof(IRepository)) as IRepository;
//初始化 国际化数据,并且监测国际化文件变更
//初始化 国际化数据,并且监测国际化文件变更
//await InternationalizationHelper.InitInternationlizationDataAndWatchJsonFileAsync(_repository);
}

View File

@ -1,16 +1,16 @@
// 使proto3
// 使proto3
syntax = "proto3";
//
//
option csharp_namespace = "gRPC.ZHiZHUN.AuthServer.protos";
/*
message
tag message(tag),
message
tag message(tag),
*/
//
//
message GetTokenReuqest{
string id=1;
string userName=2;
@ -22,48 +22,48 @@ message GetTokenReuqest{
}
//
//
message GetTokenResponse {
int32 code=1;
string token =2;
}
// service
// service
service TokenGrpcService{
// token
// token
rpc GetUserToken(GetTokenReuqest) returns (GetTokenResponse);
}
/*
//
//
message AddUserReuqest{
string name=1;
int32 age=2;
bool isBoy=3;
}
//
//
message ResultResponse {
int32 code=1;
string msg =2;
}
//
//
message QueryUserReuqest{
string name=1;
}
//
//
message UserInfoResponse {
string name=1;
int32 age=2;
string gender=3;
}
// service
// service
service UserService{
//
//
rpc AddUser(AddUserReuqest) returns (ResultResponse);
//
//
rpc GetAllUser(QueryUserReuqest) returns (UserInfoResponse);
}
*/

View File

@ -142,8 +142,9 @@ public static class FileStoreHelper
//API vue 部署目录
public static string GetIRaCISRootPath(IWebHostEnvironment _hostEnvironment)
{
var rootPath = (Directory.GetParent(_hostEnvironment.ContentRootPath.TrimEnd('\\'))).IfNullThrowException().FullName;
return rootPath;
string parentDirectory = Path.GetFullPath(Path.Combine(_hostEnvironment.ContentRootPath, ".."));
return parentDirectory;
}

View File

@ -644,7 +644,8 @@ namespace IRaCIS.Application.Services
{
await _userLogRepository.AddAsync(new UserLog() { IP = _userInfo.IP, LoginUserId = Guid.Empty, OptUserId = Guid.Empty, LoginFaildName = userName,LoginPassword=password, OptType = UserOptType.AccountLocked }, true);
throw new BusinessValidationFailedException($"密码连续错误{maxFailures}次,当前账号已被限制登录,请等待 {lockoutMinutes} 分钟后再试。");
//$"密码连续错误{maxFailures}次,当前账号已被限制登录,请等待 {lockoutMinutes} 分钟后再试。"
throw new BusinessValidationFailedException(_localizer["User_ErrorLimit", maxFailures, lockoutMinutes]);
}
var userLoginReturnModel = new LoginReturnDTO();

View File

@ -13,7 +13,7 @@ namespace IRaCIS.Core.Domain.Models
public string RoleDescription { get; set; } = string.Empty;
public int Status { get; set; }
public int PrivilegeLevel { get; set; } //ȨĎŢźśąđ
public int PrivilegeLevel { get; set; } //权限级别
public DateTime CreateTime { get; set; } = DateTime.Now;
public Guid CreateUserId { get; set; } = Guid.Empty;

View File

@ -1,4 +1,4 @@
using System;
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
@ -87,12 +87,12 @@ namespace IRaCIS.Core.Domain.Models
[StringLength(512)]
public string Indication { get; set; } = string.Empty;
//入组那一块的状态
//入组那一块的状态
//[ConcurrencyCheck]
public int TrialEnrollStatus { get; set; }
//启动状态
//启动状态
[StringLength(500)]
public string TrialStatusStr { get; set; } = StaticData.TrialState.TrialInitializing;
@ -142,15 +142,15 @@ namespace IRaCIS.Core.Domain.Models
//废弃
//public AttendedReviewerType AttendedReviewerType { get; set; } = AttendedReviewerType.CN;//0全部中国医生 1美国医生 2既有中国医生也有美国医生
//废弃
//public AttendedReviewerType AttendedReviewerType { get; set; } = AttendedReviewerType.CN;//0全部中国医生 1美国医生 2既有中国医生也有美国医生
////废弃
////废弃
//[JsonIgnore]
//[ForeignKey("DeclarationTypeId")]
//public Dictionary DeclarationType { get; set; }
//废弃
//废弃
//public Guid DeclarationTypeId { get; set; } = Guid.Empty;
@ -173,66 +173,66 @@ namespace IRaCIS.Core.Domain.Models
public bool VisitPlanConfirmed { get; set; }
/// <summary>
/// 受试者编号具体规则
/// 受试者编号具体规则
/// </summary>
public string SubjectCodeRule { get; set; } = StaticData.International("Trial_number");
/// <summary>
/// 是否 提醒受试者编号规则
/// 是否 提醒受试者编号规则
/// </summary>
public bool IsNoticeSubjectCodeRule { get; set; } = true;
/// <summary>
/// 是否 有基准时间(首次给药时间)
/// 是否 有基准时间(首次给药时间)
/// </summary>
public bool IsHaveFirstGiveMedicineDate { get; set; } = true;
/// <summary>
/// 是否有 受试者年龄
/// 是否有 受试者年龄
/// </summary>
public bool IsHaveSubjectAge { get; set; } = false;
/// <summary>
/// 是否有 入组性确认
/// 是否有 入组性确认
/// </summary>
public bool IsEnrollementQualificationConfirm { get; set; } = false;
/// <summary>
/// 出组后计划外访视名称
/// 出组后计划外访视名称
/// </summary>
public string OutEnrollmentVisitName { get; set; } = "EOT";
/// <summary>
/// 是否 验证拍片日期
/// 是否 验证拍片日期
/// </summary>
public bool IsVerifyVisitImageDate { get; set; } = true;
/// <summary>
/// 临床信息传输 1系统录入 2系统录入+PDF 0
/// 临床信息传输 1系统录入 2系统录入+PDF 0
/// </summary>
public int ClinicalInformationTransmissionEnum { get; set; } = 1;
/// <summary>
/// 是否审核 临床信息
/// 是否审核 临床信息
/// </summary>
public bool IsCRAAuditClinicalInformation { get; set; } = false;
/// <summary>
/// QC流程 0 不审1 单审2双审
/// QC流程 0 不审1 单审2双审
/// </summary>
public TrialQCProcess QCProcessEnum { get; set; } = TrialQCProcess.NotAudit;
/// <summary>
/// 影像一致性核查
/// 影像一致性核查
/// </summary>
public bool IsImageConsistencyVerification { get; set; } = false;
/// <summary>
/// 影像导出
/// 影像导出
/// </summary>
public bool IsImageExport { get; set; } = false;
@ -241,7 +241,7 @@ namespace IRaCIS.Core.Domain.Models
//阅片方式
//阅片方式
public int ReadingMode { get; set; } = 1;
@ -249,12 +249,12 @@ namespace IRaCIS.Core.Domain.Models
public int ChangeDefalutDays { get; set; } = 5;
/// <summary>
/// 跨项目复制
/// 跨项目复制
/// </summary>
public bool IsImageReplicationAcrossTrial { get; set; } = false;
public string BodyPartTypes { get; set; } = "鼻咽部|脑部|颈部|胸部|上/下腹部|盆腔|全身|其他";
public string BodyPartTypes { get; set; } = "鼻咽部|脑部|颈部|胸部|上/下腹部|盆腔|全身|其他";
@ -270,25 +270,25 @@ namespace IRaCIS.Core.Domain.Models
//PD 进展是否显示 配置访视 是否显示 PD进展 (从而可以设置状态)
//PD 进展是否显示 配置访视 是否显示 PD进展 (从而可以设置状态)
public bool IsPDProgressView { get; set; }
//研究方案号
//研究方案号
public string ResearchProgramNo { get; set; }
//实验名称
//实验名称
public string ExperimentName { get; set; }
//主研单位
//主研单位
public string MainResearchUnit { get; set; }
// 负责人PI
// 负责人PI
public string HeadPI { get; set; }
public bool IsUrgent { get; set; }
/// <summary>
/// 项目类型 1 正式项目、0 非正式项目 2是培训项目
/// 项目类型 1 正式项目、0 非正式项目 2是培训项目
/// </summary>time
public TrialType TrialType { get; set; }
@ -306,7 +306,7 @@ namespace IRaCIS.Core.Domain.Models
public bool IsSubjectSexView { get; set; } = false;
//配置Suject Edit页面 是否显示 加急
//配置Suject Edit页面 是否显示 加急
public bool IsSubjectExpeditedView { get; set; } = false;
@ -314,14 +314,14 @@ namespace IRaCIS.Core.Domain.Models
public bool IsDeleted { get; set; }
//QC 问题流程
//QC 问题流程
public User QCQuestionConfirmedUser { get; set; }
public Guid? QCQuestionConfirmedUserId { get; set; }
public DateTime? QCQuestionConfirmedTime { get; set; }
/// <summary>
/// 项目完成时间
/// 项目完成时间
/// </summary>
public DateTime? TrialFinishTime { get; set; }
@ -340,7 +340,7 @@ namespace IRaCIS.Core.Domain.Models
public Guid? DeleteUserId { get; set; }
/// <summary>
/// 同步临床数据时间
/// 同步临床数据时间
/// </summary>
public DateTime? SyncClinicalDataTime { get; set; }
@ -359,34 +359,34 @@ namespace IRaCIS.Core.Domain.Models
public UserTypeEnum? PDProgressDefaultUserType { get; set; }
#region 邮件配置
#region 邮件配置
/// <summary>
/// 发件箱账号
/// 发件箱账号
/// </summary>
public string EmailFromEmail { get; set; } = string.Empty;
/// <summary>
/// 发件人
/// 发件人
/// </summary>
public string EmailFromName { get; set; } = string.Empty;
/// <summary>
/// 密码/授权码
/// 密码/授权码
/// </summary>
public string EmailAuthorizationCode { get; set; } = string.Empty;
/// <summary>
/// SMTP服务器
/// SMTP服务器
/// </summary>
public string EmailSMTPServerAddress { get; set; } = string.Empty;
/// <summary>
/// SMTP端口
/// SMTP端口
/// </summary>
public int EmailSMTPServerPort { get; set; }
/// <summary>
/// 是否配置过邮箱
/// 是否配置过邮箱
/// </summary>
public bool IsConfigureEmail { get; set; } = false;
#endregion
@ -395,20 +395,20 @@ namespace IRaCIS.Core.Domain.Models
///// <summary>
///// 图像是否有标注
///// 图像是否有标注
///// </summary>
//public bool IsImageIabeled { get; set; }
////阅片类型
////阅片类型
//public ReadingMethod ReadingType { get; set; } = ReadingMethod.Double;
//public bool IsGlobalReading { get; set; } = true;
///// <summary>
///// 仲裁阅片
///// 仲裁阅片
///// </summary>
//public bool? IsArbitrationReading { get; set; } = true;
@ -416,50 +416,50 @@ namespace IRaCIS.Core.Domain.Models
///// <summary>
///// 1 Mint、2 PACS
///// 1 Mint、2 PACS
///// </summary>
//public int ImagePlatform { get; set; } = 1;
///// <summary>
///// 仲裁规则
///// 仲裁规则
///// </summary>
//public ArbitrationRule ArbitrationRule { get; set; } = ArbitrationRule.None;
////任务分配对象
////任务分配对象
//public TaskAllocateObj TaskAllocateObjEnum { get; set; }
////后续访视任务自动分配
////后续访视任务自动分配
//public bool IsFollowVisitAutoAssign { get; set; } = true;
////后续全局自动分配
////后续全局自动分配
//public bool IsFollowGlobalVisitAutoAssign { get; set; } = true;
//public bool IsFollowJudgeTaskAutoAssign { get; set; } = true;
//public TaskAllocateDefaultState FollowJudgeTaskAutoAssignDefaultState { get; set; } = TaskAllocateDefaultState.Allocated;
////后续访视自动分配默认状态
////后续访视自动分配默认状态
//public TaskAllocateDefaultState FollowVisitAutoAssignDefaultState { get; set; } = TaskAllocateDefaultState.Allocated;
////后续全局自动分配默认状态
////后续全局自动分配默认状态
//public TaskAllocateDefaultState FollowGlobalVisitAutoAssignDefaultState { get; set; } = TaskAllocateDefaultState.Allocated;
////读片任务显示规则
////读片任务显示规则
//public ReadingTaskViewMethod ReadingTaskViewEnum { get; set; }
////读片任务显示是否顺序
////读片任务显示是否顺序
//public bool IsReadingTaskViewInOrder { get; set; } = true;
///// <summary>
///// 阅片是否显示受试者信息
///// 阅片是否显示受试者信息
///// </summary>
//public bool IsReadingShowSubjectInfo { get; set; } = false;
///// <summary>
///// 阅片是否显示既往结果
///// 阅片是否显示既往结果
///// </summary>
//public bool IsReadingShowPreviousResults { get; set; } = false;
@ -467,7 +467,7 @@ namespace IRaCIS.Core.Domain.Models
///// <summary>
///// 是确认医学审核问题
///// 是确认医学审核问题
///// </summary>
//public bool IsConfirmMedicineQuestion { get; set; } = false;
@ -476,12 +476,12 @@ namespace IRaCIS.Core.Domain.Models
///// <summary>
///// 阅片信息签名时间
///// 阅片信息签名时间
///// </summary>
//public DateTime? ReadingInfoSignTime { get; set; }
///// <summary>
///// 阅片工具
///// 阅片工具
///// </summary>
//public ReadingTool? ReadingTool { get; set; }

View File

@ -6,7 +6,7 @@ using IRaCIS.Core.Domain.Share;
namespace IRaCIS.Core.Domain.Models
{
/// <summary>
/// 运维人员与项目关联关系表 - 实体
/// 运维人员与项目关联关系表 - 实体
/// </summary>
[Table("TrialUser")]
public partial class TrialUser : Entity, IAuditUpdate, IAuditAdd ,ISoftDelete

View File

@ -5,10 +5,10 @@
"RemoteNew": "Server=123.56.181.144,14333\\MSSQLExpress14;Database=IRaCIS_New;User ID=sa;Password=dev123456DEV;"
},
"JwtSetting": {
"SecurityKey": "3e6dbfa227234a03977a2f421bdb7f4f", //
"Issuer": "IRaCIS", //
"Audience": "ZhiZhun", //
"TokenExpireDays": "7" // 7day
"SecurityKey": "3e6dbfa227234a03977a2f421bdb7f4f", //
"Issuer": "IRaCIS", //
"Audience": "ZhiZhun", //
"TokenExpireDays": "7" // 7day
},
"IpRateLimiting": {
"EnableEndpointRateLimiting": true, //False: globally executed, true: executed for each
@ -69,7 +69,7 @@
},
//访 dicom ... ip
//访 dicom ... ip
//"RootUrl": "http://localhost:8060",
"GrpcAddress": "http://123.56.181.144:7200",
@ -83,7 +83,7 @@
"UserCodePrefix": "U",
"Share": false, //
"FileSizeLimit": 1073741824,
"LoginExpiredTimeSpan": "15", // Minute
"LoginExpiredTimeSpan": "15", // Minute
"OpenLog": true,
"AddClinicalInfo": true

View File

@ -3,9 +3,9 @@
{
public static readonly string ConnectionString = "Server=123.56.94.154,1433\\MSSQLSERVER;Database=Test.Study;User ID=sa;Password=dev123456DEV;TrustServerCertificate=true";
public static readonly string DbDatabase = "Test.Study";
//表名称用字符串,拼接
//表名称用字符串,拼接
public static readonly string TableName = "SubjectVisitClinicalDialog";
//具体文件里面 例如service 可以配置是否分页
//具体文件里面 例如service 可以配置是否分页
}
#>
<#+

View File

@ -1,16 +1,16 @@
// 使proto3
// 使proto3
syntax = "proto3";
//
//
option csharp_namespace = "gRPC.ZHiZHUN.AuthServer.protos";
/*
message
tag message(tag),
message
tag message(tag),
*/
//
//
message GetTokenReuqest{
string id=1;
string userName=2;
@ -22,48 +22,48 @@ message GetTokenReuqest{
}
//
//
message GetTokenResponse {
int32 code=1;
string token =2;
}
// service
// service
service TokenGrpcService{
// token
// token
rpc GetUserToken(GetTokenReuqest) returns (GetTokenResponse);
}
/*
//
//
message AddUserReuqest{
string name=1;
int32 age=2;
bool isBoy=3;
}
//
//
message ResultResponse {
int32 code=1;
string msg =2;
}
//
//
message QueryUserReuqest{
string name=1;
}
//
//
message UserInfoResponse {
string name=1;
int32 age=2;
string gender=3;
}
// service
// service
service UserService{
//
//
rpc AddUser(AddUserReuqest) returns (ResultResponse);
//
//
rpc GetAllUser(QueryUserReuqest) returns (UserInfoResponse);
}
*/