You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

219 lines
10 KiB
C#

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

using DS.Module.Core;
using DS.Module.Core.Extensions;
using Microsoft.Extensions.DependencyInjection;
using Newtonsoft.Json;
using NLog;
using Org.BouncyCastle.Ocsp;
namespace DS.Module.DjyServiceStatus
{
/// <summary>
///
/// </summary>
public class DjyServiceStatusService: IDjyServiceStatusService
{
private readonly IServiceProvider _serviceProvider;
private readonly string ip;
private readonly int port;
private readonly string accessKey;
private readonly string accessSecret;
private readonly string saveServiceProjectUrl;
private readonly string cancelServiceProjectUrl;
private readonly string getServiceProjectListUrl;
private readonly string getServiceStatusListUrl;
private readonly string saveServiceStatusUrl;
private readonly string cancelServiceStatusUrl;
private readonly string enableProjectDictTreeListUrl;
private static readonly Logger Logger = LogManager.GetCurrentClassLogger();
/// <summary>
/// 构造函数
/// </summary>
/// <param name="serviceProvider"></param>
public DjyServiceStatusService(IServiceProvider serviceProvider)
{
_serviceProvider = serviceProvider;
ip = AppSetting.app(new string[] { "DjyService", "IP" }).ObjToString();
port = AppSetting.app(new string[] { "DjyService", "Port" }).ToInt();
accessKey = AppSetting.app(new string[] { "DjyService", "AccessKey" }).ObjToString();
accessSecret = AppSetting.app(new string[] { "DjyService", "AccessSecret" }).ObjToString();
saveServiceProjectUrl = AppSetting.app(new string[] { "DjyService", "SaveServiceProjectUrl" }).ObjToString();
cancelServiceProjectUrl = AppSetting.app(new string[] { "DjyService", "CancelServiceProjectUrl" }).ObjToString();
getServiceProjectListUrl = AppSetting.app(new string[] { "DjyService", "GetServiceProjectListUrl" }).ObjToString();
getServiceStatusListUrl = AppSetting.app(new string[] { "DjyService", "GetServiceStatusListUrl" }).ObjToString();
saveServiceStatusUrl = AppSetting.app(new string[] { "DjyService", "SaveServiceStatusUrl" }).ObjToString();
cancelServiceStatusUrl = AppSetting.app(new string[] { "DjyService", "CancelServiceStatusUrl" }).ObjToString();
enableProjectDictTreeListUrl = AppSetting.app(new string[] { "DjyService", "GetEnableProjectDictTreeList" }).ObjToString();
}
/// <summary>
/// 保存服务状态
/// </summary>
/// <param name="req">修改服务状态详情</param>
/// <returns>返回回执</returns>
public async Task<DjyResult> SaveServiceProject(EmbedServiceProjectDto req)
{
// 只要平台信息参数一致,多个请求只需设置一次参数
DjyHttpUtillib.SetPlatformInfo(accessKey, accessSecret, ip, port, false);
// 发起POST请求超时时间15秒返回响应字节数组
string result = DjyHttpUtillib.HttpPost(saveServiceProjectUrl, JsonConvert.SerializeObject(req), 30);
if (null == result)
{
return await Task.FromResult(DjyResult.Failed("请求失败,请联系管理员"));
}
else
{
var res = JsonConvert.DeserializeObject<DjyResult>(result);
// Console.WriteLine(System.Text.Encoding.UTF8.GetString(result));
return await Task.FromResult(res);
}
}
/// <summary>
/// 取消服务状态
/// </summary>
/// <param name="req">修改服务状态详情</param>
/// <returns>返回回执</returns>
public async Task<DjyResult> CancelServiceProject(EmbedServiceProjectDto req)
{
// 只要平台信息参数一致,多个请求只需设置一次参数
DjyHttpUtillib.SetPlatformInfo(accessKey, accessSecret, ip, port, false);
// 发起POST请求超时时间15秒返回响应字节数组
string result = DjyHttpUtillib.HttpPost(cancelServiceProjectUrl, JsonConvert.SerializeObject(req), 30);
if (null == result)
{
return await Task.FromResult(DjyResult.Failed("请求失败,请联系管理员"));
}
else
{
var res = JsonConvert.DeserializeObject<DjyResult>(result);
// Console.WriteLine(System.Text.Encoding.UTF8.GetString(result));
return await Task.FromResult(res);
}
}
/// <summary>
/// 获取服务项目列表
/// </summary>
/// <param name="req">查询服务项目和状态详情</param>
/// <returns>返回回执</returns>
public async Task<DjyResult> GetServiceProjectList(EmbedQueryServiceProjectWithStatus req)
{
// 只要平台信息参数一致,多个请求只需设置一次参数
DjyHttpUtillib.SetPlatformInfo(accessKey, accessSecret, ip, port, false);
// 发起POST请求超时时间15秒返回响应字节数组
string result = DjyHttpUtillib.HttpPost(getServiceProjectListUrl, JsonConvert.SerializeObject(req), 30);
if (null == result)
{
return await Task.FromResult(DjyResult.Failed("请求失败,请联系管理员"));
}
else
{
var res = JsonConvert.DeserializeObject<DjyResult>(result);
// Console.WriteLine(System.Text.Encoding.UTF8.GetString(result));
return await Task.FromResult(res);
}
}
/// <summary>
/// 获取服务项目下的状态列表
/// </summary>
/// <param name="req">查询服务项目和状态详情</param>
/// <returns>返回回执</returns>
public async Task<DjyResult> GetServiceStatusList(EmbedQueryServiceProjectWithStatus req)
{
// 只要平台信息参数一致,多个请求只需设置一次参数
DjyHttpUtillib.SetPlatformInfo(accessKey, accessSecret, ip, port, false);
// 发起POST请求超时时间15秒返回响应字节数组
string result = DjyHttpUtillib.HttpPost(getServiceStatusListUrl, JsonConvert.SerializeObject(req), 30);
if (null == result)
{
return await Task.FromResult(DjyResult.Failed("请求失败,请联系管理员"));
}
else
{
var res = JsonConvert.DeserializeObject<DjyResult>(result);
// Console.WriteLine(System.Text.Encoding.UTF8.GetString(result));
return await Task.FromResult(res);
}
}
/// <summary>
/// 保存服务状态
/// </summary>
/// <param name="req">修改服务状态详情</param>
/// <returns>返回回执</returns>
public async Task<DjyResult> SaveServiceStatus(EmbedServiceProjectStatusDto req)
{
// 只要平台信息参数一致,多个请求只需设置一次参数
DjyHttpUtillib.SetPlatformInfo(accessKey, accessSecret, ip, port, false);
// 发起POST请求超时时间15秒返回响应字节数组
string result = DjyHttpUtillib.HttpPost(saveServiceStatusUrl, JsonConvert.SerializeObject(req), 30);
if (null == result)
{
return await Task.FromResult(DjyResult.Failed("请求失败,请联系管理员"));
}
else
{
var res = JsonConvert.DeserializeObject<DjyResult>(result);
// Console.WriteLine(System.Text.Encoding.UTF8.GetString(result));
return await Task.FromResult(res);
}
}
/// <summary>
/// 取消服务状态
/// </summary>
/// <param name="req">修改服务状态详情</param>
/// <returns>返回回执</returns>
public async Task<DjyResult> CancelServiceStatus(EmbedServiceProjectStatusDto req)
{
// 只要平台信息参数一致,多个请求只需设置一次参数
DjyHttpUtillib.SetPlatformInfo(accessKey, accessSecret, ip, port, false);
// 发起POST请求超时时间15秒返回响应字节数组
string result = DjyHttpUtillib.HttpPost(cancelServiceStatusUrl, JsonConvert.SerializeObject(req), 30);
if (null == result)
{
return await Task.FromResult(DjyResult.Failed("请求失败,请联系管理员"));
}
else
{
var res = JsonConvert.DeserializeObject<DjyResult>(result);
// Console.WriteLine(System.Text.Encoding.UTF8.GetString(result));
return await Task.FromResult(res);
}
}
/// <summary>
/// 获取可用的服务项目字典列表
/// </summary>
/// <param name="isAvoidCache">是否重新加载缓存</param>
/// <returns></returns>
public async Task<DjyResult> GetEnableProjectDictTreeList(bool isAvoidCache = false)
{
// 只要平台信息参数一致,多个请求只需设置一次参数
DjyHttpUtillib.SetPlatformInfo(accessKey, accessSecret, ip, port, false);
// 发起POST请求超时时间15秒返回响应字节数组
string result = DjyHttpUtillib.HttpGet(enableProjectDictTreeListUrl+ $"?isAvoidCache={(isAvoidCache?"true":"false")}", 30);
if (null == result)
{
return await Task.FromResult(DjyResult.Failed("请求失败,请联系管理员"));
}
else
{
var res = JsonConvert.DeserializeObject<DjyResult>(result);
// Console.WriteLine(System.Text.Encoding.UTF8.GetString(result));
return await Task.FromResult(res);
}
}
}
}