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

50 lines
1.6 KiB
C#
Raw Normal View History

2025-11-28 13:39:02 +08:00
using Infrastructure.Cache;
using Infrastructure.CloudSdk.mqttmessagecenter;
using OpenAuth.App.ServiceApp;
using OpenAuth.Repository.Domain;
using System.Text.Json.Nodes;
namespace OpenAuth.WebApi.Model.mqtt
{
public class ThingOperationHandler : IMqttMessageHandler
{
AirportMaintenanceApp _app;
private readonly ICacheContext _cache;
public ThingOperationHandler(AirportMaintenanceApp app, ICacheContext cache)
{
_app = app;
_cache = cache;
}
public bool CanHandle(string topic)
{
return topic.Contains("/control-operation");
}
public async Task HandleAsync(string topic, string payload)
{
var root = JsonNode.Parse(payload)?.AsObject();
2025-12-01 09:54:00 +08:00
2025-12-04 10:24:34 +08:00
var dataNode = root?["Data"];
string dataJson = string.Empty;
if (dataNode != null)
2025-12-01 09:54:00 +08:00
{
2025-12-04 10:24:34 +08:00
dataJson = System.Text.Json.JsonSerializer.Serialize(
dataNode,
new System.Text.Json.JsonSerializerOptions
{
Encoder = System.Text.Encodings.Web.JavaScriptEncoder.UnsafeRelaxedJsonEscaping
});
}
2025-11-28 13:39:02 +08:00
await _app.AddOperationLog(new LasaControlOperation
{
Id = Guid.NewGuid().ToString(),
2025-12-04 10:24:34 +08:00
DeviceSn = root?["DeviceSn"]?.ToString() ?? "",
TaskId = root?["TaskId"]?.ToString() ?? "",
2025-11-28 13:39:02 +08:00
CreateTime = DateTime.Now,
2025-12-04 10:24:34 +08:00
CreateId = long.Parse(root?["CreateId"]?.ToString() ?? "0"),
2025-12-01 09:54:00 +08:00
Data = dataJson
2025-11-28 13:39:02 +08:00
});
}
}
}