|
|
|
|
using Infrastructure;
|
|
|
|
|
using Infrastructure.CloudSdk.mqttmessagecenter;
|
|
|
|
|
using Microsoft.AspNetCore.Mvc;
|
|
|
|
|
using NetTopologySuite.Mathematics;
|
|
|
|
|
using OpenAuth.App;
|
|
|
|
|
using OpenAuth.App.Interface;
|
|
|
|
|
using OpenAuth.App.ServiceApp;
|
|
|
|
|
using OpenAuth.Repository.Domain;
|
|
|
|
|
using OpenAuth.WebApi.Model.mqtt.ModelResponse;
|
|
|
|
|
using System.Collections.Generic;
|
|
|
|
|
using System.Text.Json;
|
|
|
|
|
|
|
|
|
|
namespace OpenAuth.WebApi.Model.mqtt
|
|
|
|
|
{
|
|
|
|
|
public class ThingEventHandler : IMqttMessageHandler
|
|
|
|
|
{
|
|
|
|
|
private readonly ILogger<ThingRequestHandler> _logger;
|
|
|
|
|
AirportMaintenanceApp _app;
|
|
|
|
|
private readonly SysLogApp _logApp;
|
|
|
|
|
public ThingEventHandler(ILogger<ThingRequestHandler> logger, AirportMaintenanceApp app, SysLogApp logApp)
|
|
|
|
|
{
|
|
|
|
|
_logger = logger;
|
|
|
|
|
_app = app;
|
|
|
|
|
_logApp = logApp;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public bool CanHandle(string topic)
|
|
|
|
|
{
|
|
|
|
|
return topic.Contains("/events1");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public Task HandleAsync(string topic, string payload)
|
|
|
|
|
{
|
|
|
|
|
_logger.LogError($"[osd] Topic={topic}, Payload={payload}");
|
|
|
|
|
Console.WriteLine($"[osd] Topic={topic}, Payload={payload}");
|
|
|
|
|
if (payload.Contains("hms"))//健康告警
|
|
|
|
|
{
|
|
|
|
|
var jsondata = JsonSerializer.Deserialize<HmsMessage>(payload);
|
|
|
|
|
if (jsondata.data != null && jsondata.data.list.Count > 0)
|
|
|
|
|
{
|
|
|
|
|
var path = Path.Combine(AppContext.BaseDirectory, "hms.json");
|
|
|
|
|
var parser = new HmsAlarmParser(path);
|
|
|
|
|
var alarmMessages = parser.ParseAlarmMessages(payload);
|
|
|
|
|
_app.AddManageDeviceHms(alarmMessages);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
if (payload.Contains("log"))//例子
|
|
|
|
|
{
|
|
|
|
|
_logApp.Add(new SysLog
|
|
|
|
|
{
|
|
|
|
|
Content = $"用户更新无人机设备",
|
|
|
|
|
Href = topic,
|
|
|
|
|
CreateName = "",
|
|
|
|
|
CreateId = 1,
|
|
|
|
|
CreateTime = DateTime.Now,
|
|
|
|
|
TypeName = "无人机"
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
return Task.CompletedTask;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|