添加项目文件。
This commit is contained in:
155
MoviconHub.App/Services/ApiService.cs
Normal file
155
MoviconHub.App/Services/ApiService.cs
Normal file
@@ -0,0 +1,155 @@
|
||||
using MoviconHub.App.Models;
|
||||
using Newtonsoft.Json;
|
||||
using NLog;
|
||||
using RestSharp;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace MoviconHub.App.Services
|
||||
{
|
||||
/// <summary>
|
||||
/// Api 服务类
|
||||
/// </summary>
|
||||
public class ApiService
|
||||
{
|
||||
private static readonly Logger Logger = LogManager.GetCurrentClassLogger();
|
||||
private readonly string _baseUrl;
|
||||
private readonly RestClient _client;
|
||||
|
||||
/// <summary>
|
||||
/// 实例化函数
|
||||
/// </summary>
|
||||
/// <param name="baseUrl"></param>
|
||||
public ApiService(string baseUrl)
|
||||
{
|
||||
_baseUrl = baseUrl;
|
||||
_client = new RestClient(baseUrl);
|
||||
}
|
||||
|
||||
private string GetFullRequestUrl(RestRequest request)
|
||||
{
|
||||
var resource = request.Resource;
|
||||
var queryParams = string.Join("&", request.Parameters
|
||||
.Where(p => p.Type == ParameterType.QueryString)
|
||||
.Select(p => $"{p.Name}={Uri.EscapeDataString(p.Value?.ToString() ?? "")}"));
|
||||
|
||||
return $"{_baseUrl.TrimEnd('/')}/{resource.TrimStart('/')}{(string.IsNullOrEmpty(queryParams) ? "" : "?" + queryParams)}";
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 获取部件信息
|
||||
/// </summary>
|
||||
/// <param name="partQrCodeId">二维码零件ID</param>
|
||||
/// <param name="deviceCode">设备编码</param>
|
||||
/// <returns>部件信息</returns>
|
||||
public async Task<PartInfoResponse> GetPartInfoAsync(string partQrCodeId, string deviceCode)
|
||||
{
|
||||
try
|
||||
{
|
||||
var request = new RestRequest("/mes/order/iotPartInfo/getPartInfo", Method.Get);
|
||||
request.AddParameter("PartQRCodeId", partQrCodeId);
|
||||
//request.AddParameter("DeviceCode", deviceCode);
|
||||
|
||||
var response = await _client.ExecuteAsync(request);
|
||||
|
||||
if (response.IsSuccessful)
|
||||
{
|
||||
Logger.Info($"{response.Content}");
|
||||
var Data = JsonConvert.DeserializeObject<PartInfoResponse>(response.Content);
|
||||
Logger.Info($"{Data.ToString()}");
|
||||
return JsonConvert.DeserializeObject<PartInfoResponse>(response.Content);
|
||||
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
Logger.Error($"获取部件信息失败:{response.ErrorMessage}, 状态码:{response.StatusCode}");
|
||||
return new PartInfoResponse
|
||||
{
|
||||
Status = (int)response.StatusCode,
|
||||
Message = response.ErrorMessage,
|
||||
Data = null
|
||||
};
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Logger.Error(ex, "获取部件信息时发生异常");
|
||||
return new PartInfoResponse
|
||||
{
|
||||
Status = 500,
|
||||
Message = $"发生异常:{ex.Message}",
|
||||
Data = null
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 获取测试数据
|
||||
/// </summary>
|
||||
/// <param name="partQrCodeId">二维码零件ID</param>
|
||||
/// <param name="deviceCode">设备编码</param>
|
||||
/// <returns>测试数据</returns>
|
||||
public async Task<TestDataResponse> GetTestDataAsync(string partQrCodeId, string deviceCode)
|
||||
{
|
||||
try
|
||||
{
|
||||
var request = new RestRequest("getTestdata", Method.Get);
|
||||
request.AddParameter("PartQRCodeId", partQrCodeId);
|
||||
request.AddParameter("DeviceCode", deviceCode);
|
||||
|
||||
var response = await _client.ExecuteAsync(request);
|
||||
|
||||
if (response.IsSuccessful)
|
||||
{
|
||||
return JsonConvert.DeserializeObject<TestDataResponse>(response.Content);
|
||||
}
|
||||
else
|
||||
{
|
||||
Logger.Error($"获取测试数据失败:{response.ErrorMessage}, 状态码:{response.StatusCode}");
|
||||
return new TestDataResponse
|
||||
{
|
||||
Status = (int)response.StatusCode,
|
||||
Message = response.ErrorMessage,
|
||||
Data = null
|
||||
};
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Logger.Error(ex, "获取测试数据时发生异常");
|
||||
return new TestDataResponse
|
||||
{
|
||||
Status = 500,
|
||||
Message = $"发生异常:{ex.Message}",
|
||||
Data = null
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 配置服务器地址和端口
|
||||
/// </summary>
|
||||
/// <param name="serverAddress">服务器地址</param>
|
||||
/// <param name="port">端口号</param>
|
||||
public void ConfigureServerAddress(string serverAddress, int port)
|
||||
{
|
||||
string newBaseUrl = $"http://{serverAddress}:{port}/";
|
||||
// 创建新的RestClient实例
|
||||
var newClient = new RestClient(newBaseUrl);
|
||||
|
||||
// 使用反射替换私有字段,因为RestClient实例不能直接修改BaseUrl
|
||||
var clientType = _client.GetType();
|
||||
var baseUrlField = clientType.GetField("_baseUrl", System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Instance);
|
||||
if (baseUrlField != null)
|
||||
{
|
||||
baseUrlField.SetValue(_client, newBaseUrl);
|
||||
}
|
||||
|
||||
Logger.Info($"服务器地址已更新为:{newBaseUrl}");
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user