diff --git a/IRaCIS.Core.API/Controllers/ExtraController.cs b/IRaCIS.Core.API/Controllers/ExtraController.cs index 7ee7324aa..8a9bc6b12 100644 --- a/IRaCIS.Core.API/Controllers/ExtraController.cs +++ b/IRaCIS.Core.API/Controllers/ExtraController.cs @@ -395,10 +395,10 @@ namespace IRaCIS.Api.Controllers /// 后端通过这个code ,带上客户端信息,和授权类型 可以向单点登录提供商,获取厂商token /// /// 但是单点登录提供商提供的token 和我们系统的token 是有区别的,我们的token里面有我们业务系统的UserId,涉及到很多业务操作,所以在此出现了两种方案 - /// 1、前段使用厂商的Token。 后端通过code 获取厂商的Token 返回前端的同时返回我们系统的UserId,前段在http 请求头加上一个自定义参数,带上UserId 后端取用户Id的地方变动下, + /// 1、前端使用厂商的Token。 后端通过code 获取厂商的Token 返回前端的同时返回我们系统的UserId,前段在http 请求头加上一个自定义参数,带上UserId 后端取用户Id的地方变动下, /// 但是除了UserId外,后端还有其他信息也是从Token取的,所以在请求头也需要带上,此外后端认证Token的方式也需要变化,改造成本稍大(如果是微服务,做这种处理还是可以的)。 - /// 2、前段还是使用我们后台自己的Token。后端通过code 获取厂商Token的同时,后端做一个隐藏登录,返回厂商的Token的同时,也返回我们系统的Token。 - /// (像我们单体,这种方式最简单,我们用单点登录,无非就是不想记多个系统的密码,自动登录而已,其他不支持的项目改造陈本也是最低的) + /// 2、前端还是使用我们后台自己的Token。后端通过code 获取厂商Token的同时,后端做一个隐藏登录,返回厂商的Token的同时,也返回我们系统的Token。 + /// (像我们单体,这种方式最简单,我们用单点登录,无非就是不想记多个系统的密码,自动登录而已,其他不支持的项目改造成本也是最低的) /// /// 回调的厂商类型 比如github, google, 我们用的logto ,不同的厂商回调到前端的地址可以不同的,但是请求后端的接口可以是同一个 /// 在第三方平台登录成功后,回调前端的时候会返回一个code diff --git a/IRaCIS.Core.API/IRaCIS.Core.API.xml b/IRaCIS.Core.API/IRaCIS.Core.API.xml index f1145cb26..99b7643fa 100644 --- a/IRaCIS.Core.API/IRaCIS.Core.API.xml +++ b/IRaCIS.Core.API/IRaCIS.Core.API.xml @@ -39,10 +39,10 @@ 后端通过这个code ,带上客户端信息,和授权类型 可以向单点登录提供商,获取厂商token 但是单点登录提供商提供的token 和我们系统的token 是有区别的,我们的token里面有我们业务系统的UserId,涉及到很多业务操作,所以在此出现了两种方案 - 1、前段使用厂商的Token。 后端通过code 获取厂商的Token 返回前端的同时返回我们系统的UserId,前段在http 请求头加上一个自定义参数,带上UserId 后端取用户Id的地方变动下, + 1、前端使用厂商的Token。 后端通过code 获取厂商的Token 返回前端的同时返回我们系统的UserId,前段在http 请求头加上一个自定义参数,带上UserId 后端取用户Id的地方变动下, 但是除了UserId外,后端还有其他信息也是从Token取的,所以在请求头也需要带上,此外后端认证Token的方式也需要变化,改造成本稍大(如果是微服务,做这种处理还是可以的)。 - 2、前段还是使用我们后台自己的Token。后端通过code 获取厂商Token的同时,后端做一个隐藏登录,返回厂商的Token的同时,也返回我们系统的Token。 - (像我们单体,这种方式最简单,我们用单点登录,无非就是不想记多个系统的密码,自动登录而已,其他不支持的项目改造陈本也是最低的) + 2、前端还是使用我们后台自己的Token。后端通过code 获取厂商Token的同时,后端做一个隐藏登录,返回厂商的Token的同时,也返回我们系统的Token。 + (像我们单体,这种方式最简单,我们用单点登录,无非就是不想记多个系统的密码,自动登录而已,其他不支持的项目改造成本也是最低的) 回调的厂商类型 比如github, google, 我们用的logto ,不同的厂商回调到前端的地址可以不同的,但是请求后端的接口可以是同一个 在第三方平台登录成功后,回调前端的时候会返回一个code diff --git a/IRaCIS.Core.Application/Helper/OtherTool/RestClientAPI.cs b/IRaCIS.Core.Application/Helper/OtherTool/RestClientAPI.cs new file mode 100644 index 000000000..f51a01db5 --- /dev/null +++ b/IRaCIS.Core.Application/Helper/OtherTool/RestClientAPI.cs @@ -0,0 +1,90 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Net.Security; +using System.Net; +using System.Security.Cryptography.X509Certificates; +using System.Text; +using System.Threading.Tasks; +using RestSharp; +using Newtonsoft.Json; +using IRaCIS.Core.Infrastructure.Extention; +using NPOI.SS.Formula.Functions; + +namespace IRaCIS.Core.Application.Helper.OtherTool +{ + public static class RestClientAPI + { + public static async Task GetAsync(string api, Dictionary query = null, Dictionary headers = null) + { + using var _client = new RestClient(); + + var request = new RestRequest(api, Method.Get); + + if (query != null) + { + foreach (var kv in query) + { + request.AddParameter(kv.Key, kv.Value); + } + } + + if (headers != null) + { + foreach (var header in headers) + { + request.AddHeader(header.Key, header.Value); + } + } + + + var response = await _client.ExecuteAsync(request); + + if (response.IsSuccessful) + { + return JsonConvert.DeserializeObject(response.Content ?? string.Empty); + + } + else + { + Console.WriteLine($"请求失败,错误代码: {response.StatusCode}, 错误消息: {response.ErrorMessage}"); + return JsonConvert.DeserializeObject(string.Empty); + } + + } + + public static async Task PostAsync(string api, object jsonObj = null, Dictionary headers = null) + { + using var _client = new RestClient(); + + var request = new RestRequest(api, Method.Post); + + if (jsonObj != null) + { + request.AddJsonBody(jsonObj); + } + + if (headers != null) + { + foreach (var header in headers) + { + request.AddHeader(header.Key, header.Value); + } + } + + + var response = await _client.ExecuteAsync(request); + + if (response.IsSuccessful) + { + return JsonConvert.DeserializeObject(response.Content ?? string.Empty); + + } + else + { + Console.WriteLine($"请求失败,错误代码: {response.StatusCode}, 错误消息: {response.ErrorMessage}"); + return JsonConvert.DeserializeObject(string.Empty); + } + } + } +} diff --git a/IRaCIS.Core.Application/MassTransit/Consumer/ConsistencyCheckConsumer.cs b/IRaCIS.Core.Application/MassTransit/Consumer/ConsistencyCheckConsumer.cs index 30e8faaab..0efce758d 100644 --- a/IRaCIS.Core.Application/MassTransit/Consumer/ConsistencyCheckConsumer.cs +++ b/IRaCIS.Core.Application/MassTransit/Consumer/ConsistencyCheckConsumer.cs @@ -236,7 +236,7 @@ namespace IRaCIS.Core.Application.MassTransit.Consumer } dialogMsg.AppendLine($"
"); - dialogMsg.AppendLine(@$"
{_localizer["ConsistencyVerification_Desc"]}
"); + dialogMsg.AppendLine(@$"
{_localizer["ConsistencyVerification_Desc"]}
"); dbSV.CheckResult = _localizer["ConsistencyVerification_Conf"] + String.Join(" | ", dbExceptExcel.Select(t => $"{_localizer["ConsistencyVerification_EdcL", t.StudyDate, t.Modality]}")) + " | " diff --git a/IRaCIS.Core.Application/Service/QC/DTO/QCListViewModel.cs b/IRaCIS.Core.Application/Service/QC/DTO/QCListViewModel.cs index 729cbdbe4..baca35733 100644 --- a/IRaCIS.Core.Application/Service/QC/DTO/QCListViewModel.cs +++ b/IRaCIS.Core.Application/Service/QC/DTO/QCListViewModel.cs @@ -352,7 +352,8 @@ namespace IRaCIS.Core.Application.Contracts public string Content { get; set; } - public string ContentReplaced => Content.Replace("
", "").Replace("
", "").Replace("
", "").Replace("
", "").Replace("
", ""); + public string ContentReplaced => Content.Replace("
", "").Replace("
", "").Replace("
", "") + .Replace("
", "").Replace("
", "").Replace("
", ""); }