LASAPlatform/OpenAuth.WebApi/Model/mqtt/ThingStatusHandler.cs

66 lines
2.6 KiB
C#
Raw Permalink Normal View History

2025-07-02 15:05:59 +08:00
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<ThingStatusHandler> _logger;
AirportMaintenanceApp _app;
private readonly MqttClientManager _mqttClientManager;
public ThingStatusHandler(ILogger<ThingStatusHandler> logger, AirportMaintenanceApp app, MqttClientManager mqttClientManager)
{
_logger = logger;
_app = app;
_mqttClientManager = mqttClientManager;
}
public bool CanHandle(string topic)
{
return topic.Contains("/status");
}
2025-07-02 15:05:59 +08:00
public async Task HandleAsync(string topic, string payload)
{
2025-10-09 10:35:27 +08:00
_logger.LogError($"[Service] Topic={topic}, Payload={payload}");
//Console.WriteLine($"[Service] Topic={topic}, Payload={payload}");
2025-07-02 15:05:59 +08:00
if (payload.Contains("update_topo"))
{
2026-02-10 14:47:57 +08:00
string getway = topic.Split('/')[2];
2025-07-02 15:05:59 +08:00
var root = JsonNode.Parse(payload)?.AsObject();
if (root == null)
{
return;
}
2026-02-10 14:47:57 +08:00
////可以更新或添加无人机信息
//var uav = root["data"]["sub_devices"]["sn"]?.ToString() ?? "";
//string domain = root["data"]["sub_devices"]["domain"]?.ToString() ?? "";
//string type = root["data"]["sub_devices"]["type"]?.ToString() ?? "";
//string sub_type = root["data"]["sub_devices"]["sub_type"]?.ToString() ?? "";
var bid = root["bid"]?.ToString() ?? "";
var tid = root["tid"]?.ToString() ?? "";
var timestamp = long.Parse(root["timestamp"]?.ToString() ?? "0");
2025-07-02 15:05:59 +08:00
var requestData = new
{
bid = bid,
method = "update_topo",
tid = tid,
timestamp = DateTimeOffset.UtcNow.ToUnixTimeMilliseconds(),
data = new
{
result = 0,
2025-07-02 15:05:59 +08:00
}
2026-02-10 14:47:57 +08:00
};
2025-07-02 15:05:59 +08:00
string payloadreq = JsonSerializer.Serialize(requestData);
await _mqttClientManager.PublishAsync($"sys/product/{getway}/status_reply", payloadreq);
2026-02-10 14:47:57 +08:00
//await _app.AddOrUpdateUav(getway, uav, domain, type, sub_type);
2025-07-02 15:05:59 +08:00
}
}
}
}