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 _logger; AirportMaintenanceApp _app; private readonly SysLogApp _logApp; public ThingEventHandler(ILogger 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(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; } } }