Merge remote-tracking branch 'origin/main'

feature-flyModify
陈伟 2025-06-18 15:49:51 +08:00
commit b6f659ae47
12 changed files with 414 additions and 77 deletions

View File

@ -89,9 +89,84 @@ namespace OpenAuth.App.ServiceApp
return false; return false;
} }
}
//使用网关
public async Task<Response<LasaGateway>> GetGateway()
{
RefAsync<int> totalCount = 0;
using (var db = UnitWork.CreateContext())
{
var info = await db.LasaGateway.AsQueryable().Where(r => r.BindStatus == 0).FirstAsync();
if (info != null)
{
return new Response<LasaGateway>
{
Code = 200,
Message = "获取设备绑定码成功",
Result = info
};
}
else
{
//如果网关不存在,则创建一个新的
var newGateway = new LasaGateway
{
Id = Guid.NewGuid().ToString(),
CreateTime = DateTime.Now,
GatewayAccount="sdhc",
GatewaySn = Guid.NewGuid().ToString("N").Substring(0, 8).ToUpper(), // 生成一个新的
MqttGateway= "175.27.168.120:6011",
MqttPassword = "",
OrgId = "371300", // 默认组织ID
BindStatus = 0 // 未绑定状态
};
await db.LasaGateway.InsertAsync(newGateway);
if (db.Commit())
{
return new Response<LasaGateway>
{
Code = 200,
Message = "获取设备绑定码成功",
Result = newGateway
};
}
else
{
return new Response<LasaGateway>
{
Code = 500,
Message = "获取设备绑定码失败",
};
}
}
}
}
public async Task<bool> UpdateGateway(string gateway,string did)
{
using (var db = UnitWork.CreateContext())
{
var flag = await db.LasaGateway.UpdateAsync(it => new LasaGateway()
{
BindStatus = 1,
Did = did,
UpdateTime = DateTime.Now,
}, it => it.GatewaySn == gateway);
if (db.Commit())
return true;
else
return false;
}
} }
#region 健康报警 #region 健康报警
//添加健康报警 /// <summary>
/// 添加健康报警
/// </summary>
/// <param name="info"></param>
/// <returns></returns>
public bool AddManageDeviceHms(List<LasaManageDeviceHms> info) public bool AddManageDeviceHms(List<LasaManageDeviceHms> info)
{ {
using (var db = UnitWork.CreateContext()) using (var db = UnitWork.CreateContext())
@ -104,5 +179,24 @@ namespace OpenAuth.App.ServiceApp
} }
} }
#endregion #endregion
#region 日志
/// <summary>
/// 添加日志
/// </summary>
/// <param name="info"></param>
/// <returns></returns>
public bool AddLog(LasaLog info)
{
using (var db = UnitWork.CreateContext())
{
var flag = db.LasaLog.Insert(info);
if (db.Commit())
return true;
else
return false;
}
}
#endregion
} }
} }

View File

@ -96,6 +96,18 @@ namespace OpenAuth.App.ServiceApp
} }
} }
//添加机场信息
public bool AddDronePort(LasaDronePort info)
{
using (var db = UnitWork.CreateContext())
{
var flag = db.LasaDronePort.Insert(info);
if (db.Commit())
return true;
else
return false;
}
}
#endregion #endregion
/// <summary> /// <summary>
@ -155,6 +167,18 @@ namespace OpenAuth.App.ServiceApp
return new Response<bool> { Result = false, Message = "删除失败" }; return new Response<bool> { Result = false, Message = "删除失败" };
} }
} }
//添加无人机
public bool AddLasaUav(LasaUav info)
{
using (var db = UnitWork.CreateContext())
{
var flag = db.LasaUav.Insert(info);
if (db.Commit())
return true;
else
return false;
}
}
/// <summary> /// <summary>
/// 获取任务列表 /// 获取任务列表

View File

@ -12,8 +12,9 @@ namespace OpenAuth.Repository.Domain
public string SerialNumber { get; set; } public string SerialNumber { get; set; }
public string FirmwareVersion { get; set; } public string FirmwareVersion { get; set; }
public int BindStatus { get; set; } public int BindStatus { get; set; }
public DateTime? UpdateTime { get; set; } public DateTime? UpdateTime { get; set; }
public long OrgId { get; set; } public DateTime? CreateTime { get; set; }
public string OrgId { get; set; }
public string Sn { get; set; } public string Sn { get; set; }
public string DevicePicUrl { get; set; } public string DevicePicUrl { get; set; }
public string Did { get; set; } public string Did { get; set; }

View File

@ -0,0 +1,60 @@
using SqlSugar;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace OpenAuth.Repository.Domain
{
[SugarTable("lasa_gateway")]
public class LasaGateway
{
/// <summary>
/// 主键
/// </summary>
[SugarColumn(IsPrimaryKey = true)]
public string Id { get; set; }
/// <summary>
/// 绑定状态
/// </summary>
public int BindStatus { get; set; }
/// <summary>
/// 创建时间
/// </summary>
public DateTime? CreateTime { get; set; }
/// <summary>
/// Did
/// </summary>
public string Did { get; set; }
/// <summary>
/// 网关编号
/// </summary>
public string GatewayAccount { get; set; }
/// <summary>
/// 网关sn
/// </summary>
public string GatewaySn { get; set; }
/// <summary>
/// 网关地址
/// </summary>
public string MqttGateway { get; set; }
/// <summary>
/// 网关密码
/// </summary>
public string MqttPassword { get; set; }
/// <summary>
/// 网关账号
/// </summary>
public string MqttUserName { get; set; }
/// <summary>
/// 组织id
/// </summary>
public string OrgId { get; set; }
/// <summary>
/// 更新时间
/// </summary>
public DateTime UpdateTime { get; set; }
}
}

View File

@ -0,0 +1,50 @@
using SqlSugar;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Text.Json.Nodes;
using System.Threading.Tasks;
namespace OpenAuth.Repository.Domain
{
[SugarTable("lasa_log")]
public class LasaLog
{
/// <summary>
/// Desc:标识
/// Default:
/// Nullable:False
/// </summary>
[SugarColumn(IsPrimaryKey = true)]
public string Id { get; set; }
/// <summary>
/// Desc:专题
/// Default:
/// Nullable:False
/// </summary>
public string Topic { get; set; }
/// <summary>
/// Desc:方法
/// Default:
/// Nullable:False
/// </summary>
public string Method { get; set; }
/// <summary>
/// Desc:创建时间
/// Default:
/// Nullable:True
/// </summary>
public DateTime CreateTime { get; set; }
/// <summary>
/// Desc:数据
/// Default:
/// Nullable:True
/// </summary>
[SugarColumn(IsJson = true)]
public JsonObject Data { get; set; }
}
}

View File

@ -71,7 +71,9 @@ namespace OpenAuth.Repository
public SugarRepositiry<LasaSpaceLockFly> LasaSpaceLockFly { get; set; } public SugarRepositiry<LasaSpaceLockFly> LasaSpaceLockFly { get; set; }
public SugarRepositiry<LasaDeviceBindingCode> LasaDeviceBindingCode { get; set; } public SugarRepositiry<LasaDeviceBindingCode> LasaDeviceBindingCode { get; set; }
public SugarRepositiry<LasaGateway> LasaGateway { get; set; }
public SugarRepositiry<LasaManageDeviceHms> LasaManageDeviceHms { get; set; } public SugarRepositiry<LasaManageDeviceHms> LasaManageDeviceHms { get; set; }
public SugarRepositiry<LasaLog> LasaLog { get; set; }
#endregion #endregion
} }
} }

View File

@ -1,5 +1,6 @@
using DocumentFormat.OpenXml.Math; using DocumentFormat.OpenXml.Math;
using Infrastructure; using Infrastructure;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc;
using MQTTnet; using MQTTnet;
using OpenAuth.App.ServiceApp; using OpenAuth.App.ServiceApp;
@ -29,6 +30,7 @@ namespace OpenAuth.WebApi.Controllers.ServiceControllers
/// </summary> /// </summary>
/// <returns></returns> /// <returns></returns>
[HttpPost] [HttpPost]
[Obsolete]
public async Task<Response<LasaDeviceBindingCode>> GetDeviceBindingCode() public async Task<Response<LasaDeviceBindingCode>> GetDeviceBindingCode()
{ {
var result = new Response<LasaDeviceBindingCode>(); var result = new Response<LasaDeviceBindingCode>();
@ -72,6 +74,27 @@ namespace OpenAuth.WebApi.Controllers.ServiceControllers
return result; return result;
} }
/// <summary>
/// 机场注册 注册码生成
/// </summary>
/// <returns></returns>
[HttpPost]
[AllowAnonymous]
public async Task<Response<LasaGateway>> GetGateway()
{
var result = new Response<LasaGateway>();
try
{
result = await _app.GetGateway();
}
catch (Exception ex)
{
result.Code = 500;
result.Message = ex.Message;
}
return result;
}
/// <summary> /// <summary>
/// 切换相机 /// 切换相机
@ -83,31 +106,31 @@ namespace OpenAuth.WebApi.Controllers.ServiceControllers
Response<int> response = new Response<int>(); Response<int> response = new Response<int>();
try try
{ {
var videoids = zhiboReq.videoId.Split("/"); var videoids = zhiboReq.videoId.Split("/");
var topicRequest = $"thing/product/" + videoids[0] +"/services"; var topicRequest = $"thing/product/" + videoids[0] + "/services";
var requestData = new var requestData = new
{
bid = Guid.NewGuid().ToString(),
method = "live_camera_change",
tid = Guid.NewGuid().ToString(),
timestamp = DateTimeOffset.UtcNow.ToUnixTimeMilliseconds(),
data = new
{ {
bid = Guid.NewGuid().ToString(), camera_position = zhiboReq.position,
method = "live_camera_change", video_id = zhiboReq.videoId
tid = Guid.NewGuid().ToString(), }
timestamp = DateTimeOffset.UtcNow.ToUnixTimeMilliseconds(), };
data = new string payload = JsonSerializer.Serialize(requestData);
{ await _mqttClientManager.PublishAsync(topicRequest, payload);
camera_position = zhiboReq.position,
video_id = zhiboReq.videoId
}
};
string payload = JsonSerializer.Serialize(requestData);
await _mqttClientManager.PublishAsync(topicRequest, payload);
var topicRequest1 = $"thing/product/" + videoids[0] +"/services_reply"; var topicRequest1 = $"thing/product/" + videoids[0] + "/services_reply";
await _mqttClientManager.SubscribeAsync(topicRequest1, async (args) => await _mqttClientManager.SubscribeAsync(topicRequest1, async (args) =>
{ {
var payload = args.ApplicationMessage.Payload; var payload = args.ApplicationMessage.Payload;
var message = Encoding.UTF8.GetString(payload); var message = Encoding.UTF8.GetString(payload);
Console.WriteLine($"收到主题 [{args.ApplicationMessage.Topic}] 的消息: {message}"); Console.WriteLine($"收到主题 [{args.ApplicationMessage.Topic}] 的消息: {message}");
await Task.CompletedTask; await Task.CompletedTask;
}); });
response.Result = 0; response.Result = 0;
@ -118,7 +141,7 @@ namespace OpenAuth.WebApi.Controllers.ServiceControllers
response.Message = ex.Message; response.Message = ex.Message;
} }
return response; ; return response; ;
} }
@ -169,7 +192,7 @@ namespace OpenAuth.WebApi.Controllers.ServiceControllers
response.Code = 500; response.Code = 500;
response.Message = ex.Message; response.Message = ex.Message;
} }
return response; return response;
} }
@ -219,7 +242,7 @@ namespace OpenAuth.WebApi.Controllers.ServiceControllers
response.Code = 500; response.Code = 500;
response.Message = ex.Message; response.Message = ex.Message;
} }
return response; return response;
} }
@ -229,7 +252,7 @@ namespace OpenAuth.WebApi.Controllers.ServiceControllers
/// </summary> /// </summary>
/// <returns></returns> /// <returns></returns>
[HttpPost] [HttpPost]
public async Task<Response<int>> EndLive( Zhibo zhiboReq) public async Task<Response<int>> EndLive(Zhibo zhiboReq)
{ {
Response<int> response = new Response<int>(); Response<int> response = new Response<int>();
try try
@ -237,19 +260,19 @@ namespace OpenAuth.WebApi.Controllers.ServiceControllers
var videoids = zhiboReq.videoId.Split("/"); var videoids = zhiboReq.videoId.Split("/");
var topicRequest = $"thing/product/" + videoids[0] + "/services"; var topicRequest = $"thing/product/" + videoids[0] + "/services";
var requestData = new var requestData = new
{
bid = Guid.NewGuid().ToString(),
method = "live_stop_push",
tid = Guid.NewGuid().ToString(),
timestamp = DateTimeOffset.UtcNow.ToUnixTimeMilliseconds(),
data = new
{ {
bid = Guid.NewGuid().ToString(),
method = "live_stop_push", video_id = zhiboReq.videoId
tid = Guid.NewGuid().ToString(), }
timestamp = DateTimeOffset.UtcNow.ToUnixTimeMilliseconds(), };
data = new string payload = JsonSerializer.Serialize(requestData);
{ await _mqttClientManager.PublishAsync(topicRequest, payload);
video_id = zhiboReq.videoId
}
};
string payload = JsonSerializer.Serialize(requestData);
await _mqttClientManager.PublishAsync(topicRequest, payload);
var topicRequest1 = $"thing/product/" + videoids[0] + "/services_reply"; var topicRequest1 = $"thing/product/" + videoids[0] + "/services_reply";
@ -262,8 +285,8 @@ namespace OpenAuth.WebApi.Controllers.ServiceControllers
}); });
response.Result = 0; response.Result = 0;
} }
catch (Exception ex) catch (Exception ex)

View File

@ -26,9 +26,13 @@ namespace OpenAuth.WebApi.Model.mqtt
); );
await mqttCenter.ConnectAndSubscribeAsync( await mqttCenter.ConnectAndSubscribeAsync(
//"thing/product/8UUXN5400A079H/osd", // "thing/product/8UUXN5400A079H/osd",
//"thing/product/8UUXN5400A079H/services", // "thing/product/1581F8HGX254V00A0BUY/osd"
"thing/product/8UUXN5400A079H/events1" // "thing/product/8UUXN5400A079H/services",
//"thing/product/8UUXN5400A079H/services_reply"
"thing/product/8UUXN5400A079H/requests",
"thing/product/8UUXN5400A079H/services_reply"
//"thing/product/8UUXN5400A079H/events"
); );
} }

View File

@ -1,14 +1,21 @@
using Infrastructure.CloudSdk.mqttmessagecenter; 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 namespace OpenAuth.WebApi.Model.mqtt
{ {
public class ThingOsdHandler : IMqttMessageHandler public class ThingOsdHandler : IMqttMessageHandler
{ {
private readonly ILogger<ThingRequestHandler> _logger; private readonly ILogger<ThingRequestHandler> _logger;
AirportMaintenanceApp _app;
public ThingOsdHandler(ILogger<ThingRequestHandler> logger) private readonly ICacheContext _cache;
public ThingOsdHandler(ILogger<ThingRequestHandler> logger, AirportMaintenanceApp app, ICacheContext cache)
{ {
_logger = logger; _logger = logger;
_app = app;
_cache = cache;
} }
public bool CanHandle(string topic) public bool CanHandle(string topic)
@ -20,10 +27,26 @@ namespace OpenAuth.WebApi.Model.mqtt
{ {
_logger.LogError($"[osd] Topic={topic}, Payload={payload}"); _logger.LogError($"[osd] Topic={topic}, Payload={payload}");
Console.WriteLine($"[osd] Topic={topic}, Payload={payload}"); Console.WriteLine($"[osd] Topic={topic}, Payload={payload}");
if (payload.Contains("")) 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
});
var sub_device = root["data"]?["sub_device"]?.ToString() ?? "";
if (!string.IsNullOrEmpty(sub_device))
{
var data = new
{
device_sn = root["data"]?["sub_device"]?["device_sn"]?.ToString() ?? "",
device_online_status = root["data"]?["sub_device"]?["device_online_status"]?.ToString() ?? "",
mode_code = root["data"]?["mode_code"]?.ToString() ?? "",
};
var a = _cache.Set("DeviceState", data, DateTime.Now.AddMinutes(1));
}
// 自定义处理逻辑 // 自定义处理逻辑
return Task.CompletedTask; return Task.CompletedTask;
} }

View File

@ -1,5 +1,6 @@
using Infrastructure.CloudSdk.mqttmessagecenter; using Infrastructure.CloudSdk.mqttmessagecenter;
using OpenAuth.App.ServiceApp; using OpenAuth.App.ServiceApp;
using OpenAuth.Repository.Domain;
using System.Text.Json; using System.Text.Json;
using System.Text.Json.Nodes; using System.Text.Json.Nodes;
@ -10,12 +11,14 @@ namespace OpenAuth.WebApi.Model.mqtt
private readonly ILogger<ThingRequestHandler> _logger; private readonly ILogger<ThingRequestHandler> _logger;
private readonly MqttClientManager _mqttClientManager; private readonly MqttClientManager _mqttClientManager;
AirportMaintenanceApp _app; AirportMaintenanceApp _app;
ManageApp _manageApp;
public ThingRequestHandler(ILogger<ThingRequestHandler> logger, MqttClientManager mqttClientManager, AirportMaintenanceApp app) public ThingRequestHandler(ILogger<ThingRequestHandler> logger, MqttClientManager mqttClientManager, AirportMaintenanceApp app, ManageApp manageApp)
{ {
_logger = logger; _logger = logger;
_mqttClientManager = mqttClientManager; _mqttClientManager = mqttClientManager;
_app = app; _app = app;
_manageApp = manageApp;
} }
public bool CanHandle(string topic) public bool CanHandle(string topic)
@ -23,7 +26,7 @@ namespace OpenAuth.WebApi.Model.mqtt
return topic.Contains("/requests"); return topic.Contains("/requests");
} }
string bid, tid, previousgateway; string bid, tid, previousgateway;
int timestamp; long timestamp;
public async Task HandleAsync(string topic, string payload) public async Task HandleAsync(string topic, string payload)
{ {
_logger.LogError($"[Request] Topic={topic}, Payload={payload}"); _logger.LogError($"[Request] Topic={topic}, Payload={payload}");
@ -41,13 +44,13 @@ namespace OpenAuth.WebApi.Model.mqtt
} }
bid = root["bid"]?.ToString() ?? ""; bid = root["bid"]?.ToString() ?? "";
tid = root["tid"]?.ToString() ?? ""; tid = root["tid"]?.ToString() ?? "";
timestamp = int.Parse(root["timestamp"]?.ToString() ?? "0"); timestamp = long.Parse(root["timestamp"]?.ToString() ?? "0");
var requestData = new var requestData = new
{ {
bid = bid, bid = bid,
method = "config", method = "config",
tid = tid, tid = tid,
timestamp = timestamp, timestamp = DateTimeOffset.UtcNow.ToUnixTimeMilliseconds(),
gateway = gateway, gateway = gateway,
data = new data = new
{ {
@ -61,11 +64,33 @@ namespace OpenAuth.WebApi.Model.mqtt
}; };
string payloadreq = JsonSerializer.Serialize(requestData); string payloadreq = JsonSerializer.Serialize(requestData);
await _mqttClientManager.PublishAsync($"thing/product/{gateway}/requests_reply", payloadreq); await _mqttClientManager.PublishAsync($"thing/product/{gateway}/requests_reply", payloadreq);
await _app.UpdateCodeStatus(gateway); await _app.UpdateGateway(gateway, tid);
} }
if (payload.Contains("airport_bind_status")) if (payload.Contains("airport_bind_status"))
{ {
//解析返回的设备sn 先不解析,先测试绑定 //解析返回的设备sn 先不解析,先测试绑定
var root = JsonNode.Parse(payload)?.AsObject();
if (root == null)
{
return;
}
// 从 data.devices 中提取 sn 列表
var snList = root?["data"]?["devices"]?.AsArray()
.Select(d => d?["sn"]?.ToString())
.Where(sn => !string.IsNullOrEmpty(sn))
.ToList();
// 生成 bind_status 对象列表
var bindStatusList = snList?.Select(sn => new
{
device_callsign = "山东慧创",
is_device_bind_organization = true,
organization_id = "379",
organization_name = "山东慧创",
sn = sn
}).ToArray();
// 构造最终请求对象
var requestData = new var requestData = new
{ {
bid = Guid.NewGuid().ToString(), bid = Guid.NewGuid().ToString(),
@ -73,25 +98,7 @@ namespace OpenAuth.WebApi.Model.mqtt
{ {
output = new output = new
{ {
bind_status = new[] bind_status = bindStatusList
{
new
{
device_callsign = "山东慧创",
is_device_bind_organization = true,
organization_id = "379",
organization_name = "山东慧创",
sn = "8UUXN5400A079H"
},
new
{
device_callsign = "山东慧创",
is_device_bind_organization = true,
organization_id = "379",
organization_name = "山东慧创",
sn = "1581F8HGX254V00A0BUY"
}
}
}, },
result = 0 result = 0
}, },
@ -104,8 +111,10 @@ namespace OpenAuth.WebApi.Model.mqtt
await _mqttClientManager.PublishAsync($"thing/product/{getway}/requests_reply", payloadreq); await _mqttClientManager.PublishAsync($"thing/product/{getway}/requests_reply", payloadreq);
} }
if (payload.Contains("airport_organization_get")) if (payload.Contains("airport_organization_get"))//
{ {
var root = JsonNode.Parse(payload)?.AsObject();
var requestData = new var requestData = new
{ {
bid = Guid.NewGuid().ToString(), bid = Guid.NewGuid().ToString(),
@ -128,6 +137,46 @@ namespace OpenAuth.WebApi.Model.mqtt
} }
if (payload.Contains("airport_organization_bind")) if (payload.Contains("airport_organization_bind"))
{ {
// 解析 JSON
var root = JsonNode.Parse(payload)?.AsObject();
// 获取 bind_devices 数组
var bindDevices = root?["data"]?["bind_devices"]?.AsArray();
string dronesn = "", uavsn = "";
LasaDronePort lasaDronePort = new LasaDronePort();
LasaUav lasaUav = new LasaUav();
if (bindDevices != null)
{
foreach (var device in bindDevices)
{
var obj = device?.AsObject();
if (obj["device_model_key"].ToString().Contains("3-"))
{
lasaDronePort.Id = Guid.NewGuid().ToString();
lasaDronePort.OrgId = obj["organization_id"]?.ToString();
lasaDronePort.CreateTime = DateTime.Now;
lasaDronePort.IsDelete = false;
lasaDronePort.TypeId = "Dock 3";
lasaDronePort.Sn = obj["sn"].ToString();
lasaDronePort.BindStatus = 1;
lasaDronePort.Name = "机场";
dronesn = obj["sn"].ToString();
}
else
{
lasaUav.Id = Guid.NewGuid().ToString();
lasaUav.IsDelete = false;
//lasaUav.TypeId = obj["device_model_key"].ToString();
lasaUav.TypeId = "M4TD";
lasaUav.Sn = obj["sn"].ToString();
lasaUav.PId = lasaDronePort.Id;
lasaUav.Name = "飞行器";
uavsn = obj["sn"].ToString();
}
}
}
_manageApp.AddDronePort(lasaDronePort);
_manageApp.AddLasaUav(lasaUav);
var requestData = new var requestData = new
{ {
bid = Guid.NewGuid().ToString(), bid = Guid.NewGuid().ToString(),
@ -140,12 +189,12 @@ namespace OpenAuth.WebApi.Model.mqtt
new new
{ {
err_code = 210231, err_code = 210231,
sn = "8UUXN5400A079H" sn = dronesn
}, },
new new
{ {
err_code = 210231, err_code = 210231,
sn = "1581F8HGX254V00A0BUY" sn = uavsn
} }
} }
}, },

View File

@ -1,4 +1,7 @@
using Infrastructure.CloudSdk.mqttmessagecenter; using Infrastructure.CloudSdk.mqttmessagecenter;
using OpenAuth.WebApi.Model.mqtt.ModelResponse;
using System.Text.Json;
using System.Text.Json.Nodes;
namespace OpenAuth.WebApi.Model.mqtt namespace OpenAuth.WebApi.Model.mqtt
{ {
@ -13,13 +16,17 @@ namespace OpenAuth.WebApi.Model.mqtt
public bool CanHandle(string topic) public bool CanHandle(string topic)
{ {
return topic.Contains("/services"); return topic.Contains("/services_reply");
} }
public Task HandleAsync(string topic, string payload) public Task HandleAsync(string topic, string payload)
{ {
_logger.LogError($"[Service] Topic={topic}, Payload={payload}"); _logger.LogError($"[Service] Topic={topic}, Payload={payload}");
Console.WriteLine($"[Service] Topic={topic}, Payload={payload}"); Console.WriteLine($"[Service] Topic={topic}, Payload={payload}");
if (payload.Contains("live_start_push"))//直播
{
var root = JsonNode.Parse(payload)?.AsObject();
}
return Task.CompletedTask; return Task.CompletedTask;
} }
} }

View File

@ -336,7 +336,7 @@ namespace OpenAuth.WebApi
//services.AddSingleton<IMqttMessageHandler, ThingRequestHandler>(); //services.AddSingleton<IMqttMessageHandler, ThingRequestHandler>();
//services.AddSingleton<IMqttMessageHandler, ThingServiceHandler>(); //services.AddSingleton<IMqttMessageHandler, ThingServiceHandler>();
//services.AddSingleton<IMqttMessageHandler, ThingOsdHandler>(); services.AddSingleton<IMqttMessageHandler, ThingOsdHandler>();
//services.AddSingleton<IMqttMessageHandler, ThingEventHandler>(); //services.AddSingleton<IMqttMessageHandler, ThingEventHandler>();
services.AddHostedService<MqttHostedService>(); services.AddHostedService<MqttHostedService>();