using FastReport.Cloud.OAuth; using Model; using Newtonsoft.Json; using Newtonsoft.Json.Linq; using RestSharp; using System; using System.Collections.Generic; using System.Linq; using System.Net; using System.Net.Configuration; using System.Security.Policy; using System.Text; using System.Threading.Tasks; using ResponeData = Model.ResponeData; namespace BLL { /// /// 集团服务类 /// public static class ServerService { /// /// 获取集团token /// /// public static Model.TokenItem GetCNCECToken() { string CNCECPath = SysConstSetService.CNCECPath; string baseurl = CNCECPath + "/api/Common/GetToken"; var client = new RestClient(baseurl); client.Timeout = 2000;//获取token设置超时时间为3秒 var request = new RestRequest(Method.POST); ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12; var thisUnit = CommonService.GetIsThisUnit(); request.AddParameter("UnitName", thisUnit.UnitName); request.AddParameter("CollCropCode", thisUnit.CollCropCode); //request.AddJsonBody(JsonBody); IRestResponse response = client.Execute(request); Console.WriteLine(response.Content); TokenItem tokenItem = new TokenItem(); try { var responeData = JsonConvert.DeserializeObject(response.Content.ToString()); if (responeData != null && responeData.code == 1 && string.IsNullOrEmpty(responeData.message)) { var token = JsonConvert.DeserializeObject(responeData.data.ToString()); tokenItem.Token = token.Token.ToString(); tokenItem.ExpiryTime = token.ExpiryTime.ToString(); SysConstSetService.SetToken(tokenItem.Token); SysConstSetService.SetTokenExpirationTime(tokenItem.ExpiryTime); } } catch (Exception e) { } return tokenItem; } /// /// 推送数据至集团(post接口) /// /// /// /// public static Model.ReturnData PushCNCEC(string JsonBody, string apiurl) { try { Model.ReturnData responeData = new Model.ReturnData(); string CNCECPath = SysConstSetService.CNCECPath; //CNCECPath = "http://localhost:7143"; if (string.IsNullOrEmpty(CNCECPath)) { responeData.code = 0; responeData.message = "接口地址为空,请配置!"; return responeData; } string baseurl = CNCECPath + apiurl; var client = new RestClient(baseurl); client.Timeout = -1; var request = new RestRequest(Method.POST); ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12; var tokenItem = GetToken(); request.AddHeader("token", tokenItem.Token); request.AddJsonBody(JsonBody); IRestResponse response = client.Execute(request); APICommonService.SaveSysHttpLog("api_Out", baseurl, response.Content); var returnData = JsonConvert.DeserializeObject(response.Content.ToString()); responeData.code = returnData.code; responeData.message = returnData.message; return responeData; } catch (Exception ex) { throw; } } /// /// 获取token /// /// public static Model.TokenItem GetToken() { Model.TokenItem tokenItem = new Model.TokenItem(); tokenItem.Token = BLL.SysConstSetService.CNCECToken; tokenItem.ExpiryTime = BLL.SysConstSetService.CNCECTTokenExTime; if (string.IsNullOrEmpty(tokenItem.Token) || string.IsNullOrEmpty(tokenItem.ExpiryTime)) { //DateTime.Parse(SysConstSetService.CNCECTTokenExTime).AddMinutes(-10) > DateTime.Now tokenItem = GetCNCECToken(); } else if (DateTime.Parse(SysConstSetService.CNCECTTokenExTime).AddMinutes(-10) < DateTime.Now) { tokenItem = GetCNCECToken(); } return tokenItem; } /// /// 从集团获取数据(Get接口) /// /// 接口地址 /// parameters参数 /// 超时时间 /// public static Model.ResponeData GerDataFromCncec(string apiurl, Dictionary parameters, int? timeout = null) { Model.ResponeData responeData = new Model.ResponeData(); try { string CNCECPath = SysConstSetService.CNCECPath; if (string.IsNullOrEmpty(CNCECPath)) { responeData.code = 0; responeData.message = "接口地址为空,请配置!"; return responeData; } string baseurl = CNCECPath + apiurl; var client = new RestClient(baseurl); client.Timeout = timeout ?? -1; var request = new RestRequest(Method.GET); ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12; var tokenItem = GetToken(); if (tokenItem == null || string.IsNullOrEmpty(tokenItem.Token)) { responeData.code = 0; responeData.message = "token 不存在!"; return responeData; } request.AddHeader("token", tokenItem.Token); if (parameters != null) { foreach (var parameter in parameters) { request.AddParameter(parameter.Key, parameter.Value); } } IRestResponse response = client.Execute(request); APICommonService.SaveSysHttpLog("api_Out", baseurl, response.Content); var returnData = JsonConvert.DeserializeObject(response.Content.ToString()); if (returnData != null) { responeData.code = returnData.code; responeData.message = returnData.message; responeData.data = returnData.data; } else { responeData.code = -1; responeData.message = "接口有误"; } return responeData; } catch (Exception ex) { responeData.code = 0; responeData.message = ex.ToString(); return responeData; } } /// /// 获取安全合规列表 /// /// 类型(1-法律法规;2-标准规范;3-规章制度;4-管理规定) /// public static async Task> GetSafeLawListByTypeAsync(string type) { // 使用 lambda 表达式来调用 getSafeLawListByType return await Task.Run(() => GetSafeLawListByType(type)); } /// /// 获取安全合规列表 /// /// 类型(1-法律法规;2-标准规范;3-规章制度;4-管理规定) /// public static List GetSafeLawListByType(string type) { List result = new List(); string baseurl = "/api/Resources/getSafeLawListByType"; Dictionary dic = new Dictionary() { {"type",type}, {"pageIndex","0"} }; var returnData = GerDataFromCncec(baseurl, dic, 3000); if (returnData != null && returnData.code == 1) { JObject jt = Newtonsoft.Json.JsonConvert.DeserializeObject(returnData.data.ToString()); var data = jt["getDataList"].ToString(); result = JsonConvert.DeserializeObject>(data); } return result; } /// /// 获取公告列表 /// /// public static List GetNoticeList() { List result = new List(); string baseurl = "/api/Notice/getNoticeList"; Dictionary dic = new Dictionary() { {"pageIndex","0"} }; var returnData = GerDataFromCncec(baseurl, dic, 4000); if (returnData != null && returnData.code == 1) { JObject jt = Newtonsoft.Json.JsonConvert.DeserializeObject(returnData.data.ToString()); var data = jt["getDataList"].ToString(); result = JsonConvert.DeserializeObject>(data); } return result; } /// /// 获取公告列表 /// /// public static async Task> GetNoticeListAsync() { return await Task.Run(() => GetNoticeList()); } /// /// 获取新闻列表 /// /// public static List GetNewsList() { List result = new List(); string baseurl = "/api/Notice/getNewsList"; Dictionary dic = new Dictionary() { {"pageIndex","0"} }; var returnData = GerDataFromCncec(baseurl, dic, 3000); if (returnData != null && returnData.code == 1) { JObject jt = Newtonsoft.Json.JsonConvert.DeserializeObject(returnData.data.ToString()); var data = jt["getDataList"].ToString(); result = JsonConvert.DeserializeObject>(data); } return result; } /// /// 获取新闻列表 /// /// public static async Task> GetNewsListAsync() { return await Task.Run(() => GetNewsList()); } /// /// 获取QHSEUrl /// /// public static string GetQHSEUrl() { var result = GerDataFromCncec("/api/Data/GetWebUrl", null, 3000).data?.ToString(); return result; } } }