using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; using System.Net.Http.Json; using System.Text; using System.Text.Json; namespace VolPro.Warehouse.Services; public class GatewayClient { private readonly HttpClient _http; private readonly IConfiguration _config; public GatewayClient(IHttpClientFactory factory, IConfiguration config) { _http = factory.CreateClient("IntegrationGateway"); _config = config; } /// 检查网关健康状态 public async Task?> HealthCheckAsync(string gatewayBaseUrl) { var resp = await _http.GetAsync($"{gatewayBaseUrl}/api/gateway/health"); resp.EnsureSuccessStatusCode(); var json = await resp.Content.ReadAsStringAsync(); return JsonSerializer.Deserialize(json)?.Adapters; } /// 获取实时数据 public async Task GetRealtimeAsync(string gatewayBaseUrl, string adapter, string deviceId) { var resp = await _http.GetAsync($"{gatewayBaseUrl}/api/gateway/realtime/{adapter}/{deviceId}"); resp.EnsureSuccessStatusCode(); return await resp.Content.ReadAsStringAsync(); } /// 设备控制 public async Task ControlDeviceAsync(string gatewayBaseUrl, string adapter, string deviceId, int pointIndex, double value) { var resp = await _http.PostAsJsonAsync($"{gatewayBaseUrl}/api/gateway/realtime/{adapter}/control", new { deviceSourceId = deviceId, pointIndex, value }); resp.EnsureSuccessStatusCode(); } private class GatewayHealth { public string Gateway { get; set; } = ""; public Dictionary Adapters { get; set; } = new(); } }