CNCEC_SUBQHSE_WUHUAN/SGGL/BLL/ZHGL/DataSync/ServerService.cs

303 lines
11 KiB
C#
Raw Normal View History

2022-12-26 14:34:56 +08:00
using Model;
using Newtonsoft.Json;
2024-12-24 19:04:32 +08:00
using Newtonsoft.Json.Linq;
2022-12-26 14:34:56 +08:00
using RestSharp;
using System;
using System.Collections.Generic;
using System.Linq;
2023-07-10 15:00:56 +08:00
using System.Net;
2024-12-24 19:04:32 +08:00
using System.Net.Configuration;
2022-12-26 14:34:56 +08:00
using System.Security.Policy;
using System.Text;
using System.Threading.Tasks;
2024-12-24 19:04:32 +08:00
using ResponeData = Model.ResponeData;
2022-12-26 14:34:56 +08:00
namespace BLL
{
2024-12-24 19:04:32 +08:00
/// <summary>
/// 集团服务类
/// </summary>
2024-10-25 18:17:05 +08:00
public static class ServerService
2022-12-26 14:34:56 +08:00
{
2024-12-24 19:04:32 +08:00
/// <summary>
/// 获取集团token
/// </summary>
/// <returns></returns>
2022-12-26 14:34:56 +08:00
public static Model.TokenItem GetCNCECToken()
{
string CNCECPath = SysConstSetService.CNCECPath;
string baseurl = CNCECPath + "/api/Common/GetToken";
var client = new RestClient(baseurl);
2024-12-24 19:04:32 +08:00
client.Timeout = 2000;//获取token设置超时时间为3秒
2022-12-26 14:34:56 +08:00
var request = new RestRequest(Method.POST);
2023-07-10 15:00:56 +08:00
ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;
2023-08-10 11:40:02 +08:00
var thisUnit = CommonService.GetIsThisUnit();
2022-12-26 14:34:56 +08:00
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();
2024-12-24 19:04:32 +08:00
try
2022-12-26 14:34:56 +08:00
{
2024-12-24 19:04:32 +08:00
var responeData = JsonConvert.DeserializeObject<Model.ResponeData>(response.Content.ToString());
if (responeData != null && responeData.code == 1 && string.IsNullOrEmpty(responeData.message))
{
var token = JsonConvert.DeserializeObject<Model.TokenItem>(responeData.data.ToString());
tokenItem.Token = token.Token.ToString();
tokenItem.ExpiryTime = token.ExpiryTime.ToString();
SysConstSetService.SetToken(tokenItem.Token);
SysConstSetService.SetTokenExpirationTime(tokenItem.ExpiryTime);
}
2022-12-26 14:34:56 +08:00
}
2024-12-24 19:04:32 +08:00
catch (Exception e)
{
}
2022-12-26 14:34:56 +08:00
return tokenItem;
2024-10-25 18:17:05 +08:00
2022-12-26 14:34:56 +08:00
}
2024-12-24 19:04:32 +08:00
/// <summary>
/// 推送数据至集团post接口
/// </summary>
/// <param name="JsonBody"></param>
/// <param name="apiurl"></param>
/// <returns></returns>
2024-10-25 18:17:05 +08:00
public static Model.ReturnData PushCNCEC(string JsonBody, string apiurl)
2022-12-26 14:34:56 +08:00
{
2024-10-25 18:17:05 +08:00
try
2022-12-26 14:34:56 +08:00
{
2024-10-25 18:17:05 +08:00
Model.ReturnData responeData = new Model.ReturnData();
string CNCECPath = SysConstSetService.CNCECPath;
2024-12-24 19:04:32 +08:00
//CNCECPath = "http://localhost:7143";
2024-10-25 18:17:05 +08:00
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<Model.ResponeData>(response.Content.ToString());
responeData.code = returnData.code;
2022-12-26 14:34:56 +08:00
responeData.message = returnData.message;
return responeData;
2024-10-25 18:17:05 +08:00
}
catch (Exception ex)
{
2023-05-09 19:56:06 +08:00
2024-10-25 18:17:05 +08:00
throw;
2022-12-26 14:34:56 +08:00
}
}
2024-12-24 19:04:32 +08:00
/// <summary>
/// 获取token
/// </summary>
/// <returns></returns>
2022-12-26 14:34:56 +08:00
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();
2024-10-25 18:17:05 +08:00
}
2022-12-26 14:34:56 +08:00
else if (DateTime.Parse(SysConstSetService.CNCECTTokenExTime).AddMinutes(-10) < DateTime.Now)
{
tokenItem = GetCNCECToken();
}
return tokenItem;
}
2024-12-24 19:04:32 +08:00
/// <summary>
/// 从集团获取数据Get接口
/// </summary>
/// <param name="apiurl">接口地址</param>
/// <param name="parameters">parameters参数</param>
/// <param name="timeout">超时时间</param>
/// <returns></returns>
public static Model.ResponeData GerDataFromCncec(string apiurl, Dictionary<string, string> 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;
}
2022-12-26 14:34:56 +08:00
2024-12-24 19:04:32 +08:00
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<Model.ResponeData>(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;
}
}
/// <summary>
/// 获取安全合规列表
/// </summary>
/// <param name="type">类型1-法律法规2-标准规范3-规章制度4-管理规定)</param>
/// <returns></returns>
public static async Task<List<Model.SafeLawItem>> GetSafeLawListByTypeAsync(string type)
{
// 使用 lambda 表达式来调用 getSafeLawListByType
return await Task.Run(() => GetSafeLawListByType(type));
}
/// <summary>
/// 获取安全合规列表
/// </summary>
/// <param name="type">类型1-法律法规2-标准规范3-规章制度4-管理规定)</param>
/// <returns></returns>
public static List<Model.SafeLawItem> GetSafeLawListByType(string type)
{
List<SafeLawItem> result = new List<SafeLawItem>();
string baseurl = "/api/Resources/getSafeLawListByType";
Dictionary<string, string> dic = new Dictionary<string, string>()
{
{"type",type},
{"pageIndex","0"}
};
var returnData = GerDataFromCncec(baseurl, dic, 3000);
if (returnData != null && returnData.code == 1)
{
JObject jt = Newtonsoft.Json.JsonConvert.DeserializeObject<JObject>(returnData.data.ToString());
var data = jt["getDataList"].ToString();
result = JsonConvert.DeserializeObject<List<Model.SafeLawItem>>(data);
}
return result;
}
/// <summary>
/// 获取公告列表
/// </summary>
/// <returns></returns>
public static List<Model.NoticeOutput> GetNoticeList()
{
List<NoticeOutput> result = new List<NoticeOutput>();
string baseurl = "/api/Notice/getNoticeList";
Dictionary<string, string> dic = new Dictionary<string, string>()
{
{"pageIndex","0"}
};
var returnData = GerDataFromCncec(baseurl, dic, 4000);
if (returnData != null && returnData.code == 1)
{
JObject jt = Newtonsoft.Json.JsonConvert.DeserializeObject<JObject>(returnData.data.ToString());
var data = jt["getDataList"].ToString();
result = JsonConvert.DeserializeObject<List<Model.NoticeOutput>>(data);
}
return result;
}
/// <summary>
/// 获取公告列表
/// </summary>
/// <returns></returns>
public static async Task<List<Model.NoticeOutput>> GetNoticeListAsync()
{
return await Task.Run(() => GetNoticeList());
}
/// <summary>
/// 获取新闻列表
/// </summary>
/// <returns></returns>
public static List<Model.NoticeOutput> GetNewsList()
{
List<NoticeOutput> result = new List<NoticeOutput>();
string baseurl = "/api/Notice/getNewsList";
Dictionary<string, string> dic = new Dictionary<string, string>()
{
{"pageIndex","0"}
};
var returnData = GerDataFromCncec(baseurl, dic, 3000);
if (returnData != null && returnData.code == 1)
{
JObject jt = Newtonsoft.Json.JsonConvert.DeserializeObject<JObject>(returnData.data.ToString());
var data = jt["getDataList"].ToString();
result = JsonConvert.DeserializeObject<List<Model.NoticeOutput>>(data);
}
return result;
}
/// <summary>
/// 获取新闻列表
/// </summary>
/// <returns></returns>
public static async Task<List<Model.NoticeOutput>> GetNewsListAsync()
{
return await Task.Run(() => GetNewsList());
}
/// <summary>
/// 获取QHSEUrl
/// </summary>
/// <returns></returns>
public static string GetQHSEUrl()
{
var result = GerDataFromCncec("/api/Data/GetWebUrl", null, 3000).data?.ToString();
return result;
}
2022-12-26 14:34:56 +08:00
}
}