From fdff676466b696215d72e154959e3edf90091b7e Mon Sep 17 00:00:00 2001 From: zhangbin <460190368@qq.com> Date: Wed, 2 Jul 2025 15:05:59 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E8=AE=BE=E5=A4=87=E5=B1=9E?= =?UTF-8?q?=E6=80=A7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../BaseApp/Subscribe/ConfigSubscribe.cs | 2 +- .../Model/mqtt/MqttHostedService.cs | 4 +- .../Model/mqtt/ThingRequestHandler.cs | 2 +- .../Model/mqtt/ThingStateHandler.cs | 39 ------------- .../Model/mqtt/ThingStatusHandler.cs | 57 +++++++++++++++++++ OpenAuth.WebApi/Startup.cs | 3 +- 6 files changed, 63 insertions(+), 44 deletions(-) delete mode 100644 OpenAuth.WebApi/Model/mqtt/ThingStateHandler.cs create mode 100644 OpenAuth.WebApi/Model/mqtt/ThingStatusHandler.cs diff --git a/OpenAuth.App/BaseApp/Subscribe/ConfigSubscribe.cs b/OpenAuth.App/BaseApp/Subscribe/ConfigSubscribe.cs index 3f93ad8..85a0f04 100644 --- a/OpenAuth.App/BaseApp/Subscribe/ConfigSubscribe.cs +++ b/OpenAuth.App/BaseApp/Subscribe/ConfigSubscribe.cs @@ -287,7 +287,7 @@ public class ConfigSubscribe : IJob { if (!method.Equals("hms")) { - Console.WriteLine($"未处理事件events:{message}"); + //Console.WriteLine($"未处理事件events:{message}"); } break; diff --git a/OpenAuth.WebApi/Model/mqtt/MqttHostedService.cs b/OpenAuth.WebApi/Model/mqtt/MqttHostedService.cs index 81dffb2..26958b4 100644 --- a/OpenAuth.WebApi/Model/mqtt/MqttHostedService.cs +++ b/OpenAuth.WebApi/Model/mqtt/MqttHostedService.cs @@ -26,7 +26,7 @@ namespace OpenAuth.WebApi.Model.mqtt handlers, server: "175.27.168.120", port: 6011, - clientId: "mqtt_client_1582", + clientId: "mqtt_client_15823456", username: "sdhc", password: "" ); @@ -44,7 +44,7 @@ namespace OpenAuth.WebApi.Model.mqtt $"thing/product/{gateway}/services_reply", //$"thing/product/{gateway}/drc/up", //$"thing/product/{gateway}/drc/down", - $"thing/product/{gateway}/state" + $"thing/product/{gateway}/status" }); } await _mqttCenter.ConnectAndSubscribeAsync(topics.ToArray()); diff --git a/OpenAuth.WebApi/Model/mqtt/ThingRequestHandler.cs b/OpenAuth.WebApi/Model/mqtt/ThingRequestHandler.cs index 400d1d7..b2395d7 100644 --- a/OpenAuth.WebApi/Model/mqtt/ThingRequestHandler.cs +++ b/OpenAuth.WebApi/Model/mqtt/ThingRequestHandler.cs @@ -30,7 +30,7 @@ namespace OpenAuth.WebApi.Model.mqtt public async Task HandleAsync(string topic, string payload) { _logger.LogError($"[Request] Topic={topic}, Payload={payload}"); - if (payload.Contains("config")) + if (payload.Contains("update_topo")) { var root = JsonNode.Parse(payload)?.AsObject(); if (root == null) diff --git a/OpenAuth.WebApi/Model/mqtt/ThingStateHandler.cs b/OpenAuth.WebApi/Model/mqtt/ThingStateHandler.cs deleted file mode 100644 index 99a5ac8..0000000 --- a/OpenAuth.WebApi/Model/mqtt/ThingStateHandler.cs +++ /dev/null @@ -1,39 +0,0 @@ -using Infrastructure.CloudSdk.mqttmessagecenter; -using OpenAuth.App.ServiceApp; -using OpenAuth.Repository.Domain; -using System.Text.Json.Nodes; - -namespace OpenAuth.WebApi.Model.mqtt -{ - public class ThingStateHandler : IMqttMessageHandler - { - private readonly ILogger _logger; - AirportMaintenanceApp _app; - public ThingStateHandler(ILogger logger, AirportMaintenanceApp app) - { - _logger = logger; - _app = app; - } - - public bool CanHandle(string topic) - { - return topic.Contains("/state"); - } - - public Task HandleAsync(string topic, string payload) - { - _logger.LogError($"[Service] Topic={topic}, Payload={payload}"); - Console.WriteLine($"[Service] Topic={topic}, Payload={payload}"); - var root = JsonNode.Parse(payload)?.AsObject(); - _app.AddLog(new LasaLog - { - Id = Guid.NewGuid().ToString(), - Topic = topic, - Method = root["method"]?.ToString() ?? "", - CreateTime = DateTime.Now, - Data = root - }); - return Task.CompletedTask; - } - } -} diff --git a/OpenAuth.WebApi/Model/mqtt/ThingStatusHandler.cs b/OpenAuth.WebApi/Model/mqtt/ThingStatusHandler.cs new file mode 100644 index 0000000..f113fa0 --- /dev/null +++ b/OpenAuth.WebApi/Model/mqtt/ThingStatusHandler.cs @@ -0,0 +1,57 @@ +using Infrastructure.CloudSdk.mqttmessagecenter; +using OpenAuth.App.ServiceApp; +using OpenAuth.Repository.Domain; +using System.Text.Json; +using System.Text.Json.Nodes; + +namespace OpenAuth.WebApi.Model.mqtt +{ + public class ThingStatusHandler : IMqttMessageHandler + { + private readonly ILogger _logger; + AirportMaintenanceApp _app; + private readonly MqttClientManager _mqttClientManager; + public ThingStatusHandler(ILogger logger, AirportMaintenanceApp app, MqttClientManager mqttClientManager) + { + _logger = logger; + _app = app; + _mqttClientManager = mqttClientManager; + } + + public bool CanHandle(string topic) + { + return topic.Contains("/status"); + } + string bid, tid, previousgateway; + public async Task HandleAsync(string topic, string payload) + { + _logger.LogError($"[Service] Topic={topic}, Payload={payload}"); + Console.WriteLine($"[Service] Topic={topic}, Payload={payload}"); + + if (payload.Contains("update_topo")) + { + var root = JsonNode.Parse(payload)?.AsObject(); + if (root == null) + { + return; + } + bid = root["bid"]?.ToString() ?? ""; + tid = root["tid"]?.ToString() ?? ""; + var requestData = new + { + bid = bid, + method = "update_topo", + tid = tid, + timestamp = DateTimeOffset.UtcNow.ToUnixTimeMilliseconds(), + data = new + { + result = 0, + } + }; + string getway = topic.Split('/')[2]; + string payloadreq = JsonSerializer.Serialize(requestData); + await _mqttClientManager.PublishAsync($"thing/product/{getway}/status_reply", payloadreq); + } + } + } +} diff --git a/OpenAuth.WebApi/Startup.cs b/OpenAuth.WebApi/Startup.cs index c9bb2f9..13c4c32 100644 --- a/OpenAuth.WebApi/Startup.cs +++ b/OpenAuth.WebApi/Startup.cs @@ -176,7 +176,8 @@ namespace OpenAuth.WebApi services.AddSingleton(); services.AddSingleton(); services.AddSingleton(); - //services.AddSingleton(); + services.AddSingleton(); + services.AddSingleton(); services.AddHostedService(); #endregion