From 71376ba1531c0c5cb13135376ae5ee0ef1f1a42c Mon Sep 17 00:00:00 2001 From: LiuXin Date: Fri, 22 Aug 2025 19:52:40 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../DahAlarm/DahuaGeneralCtlService.cs | 15 ++-- .../DahAlarm/IDahuaGeneralCtlService.cs | 2 +- .../Controllers/AlarmController.cs | 2 +- .../AlarmService.API/appsettings.json | 2 +- .../DaHua/ResponeDto/EventEnvelopeDto.cs | 86 ++++--------------- 5 files changed, 29 insertions(+), 78 deletions(-) diff --git a/WeiCloud.Fusion/AlarmService/Alarm.DomainService/DahAlarm/DahuaGeneralCtlService.cs b/WeiCloud.Fusion/AlarmService/Alarm.DomainService/DahAlarm/DahuaGeneralCtlService.cs index ac3bb43..1b4b099 100644 --- a/WeiCloud.Fusion/AlarmService/Alarm.DomainService/DahAlarm/DahuaGeneralCtlService.cs +++ b/WeiCloud.Fusion/AlarmService/Alarm.DomainService/DahAlarm/DahuaGeneralCtlService.cs @@ -280,18 +280,17 @@ namespace Alarm.DomainService.DahAlarm /// /// /// - public async Task> GetEventList(string name = "alarm") + public async Task> GetEventList(string name = "alarm") { var clientId = _configuration["DahuaAuth:ClientId"]; var token = await _tokenProviderService.GetTokenAsync(clientId!); if (!_tokenProviderService.IsTokenValid(token)) { _logger.LogWarning("获取事件列表:token无效"); - return new DaHApiResult { Success = false, Code = "1009", Msg = "token无效" }; + return new DaHApiResult { Success = false, Code = "1009", Msg = "token无效" }; } - // var url = $"https://{_configuration["DahuaAuth:Host"]}/evo-apigw/evo-brm/1.0.0/device/1000021"; + // var url = $"http://demo.weienergy.cn:15230/open-api/token/v1/oauth/token?client_id=69591850&client_secret=WHcpAryKFc28suzL&grant_type=client_credentials"; var url = $"https://{_configuration["DahuaAuth:Host"]}/evo-apigw/evo-event/1.0.0/subscribe/subscribe-list?monitorType=url&category={name}"; - try { var request = new HttpRequestMessage(HttpMethod.Get, url); @@ -304,14 +303,14 @@ namespace Alarm.DomainService.DahAlarm if (!resp.IsSuccessStatusCode) { _logger.LogWarning("实时流请求 HTTP 失败: {Status}, Body: {Body}", (int)resp.StatusCode, body); - return new DaHApiResult { Success = false, Code = "1010", Msg = $"HTTP错误 {(int)resp.StatusCode}" }; + return new DaHApiResult { Success = false, Code = "1010", Msg = $"HTTP错误 {(int)resp.StatusCode}" }; } - var result = JsonSerializer.Deserialize>(body); + var result = JsonSerializer.Deserialize>(body); if (result == null || !result.Success) { _logger.LogWarning("实时流请求业务失败: {Body}", body); - return new DaHApiResult { Success = false, Code = "1010", Msg = "实时流请求失败" }; + return new DaHApiResult { Success = false, Code = "1010", Msg = "实时流请求失败" }; } return result; @@ -319,7 +318,7 @@ namespace Alarm.DomainService.DahAlarm catch (Exception ex) { _logger.LogError(ex, "大华实时流请求出错"); - return new DaHApiResult { Success = false, Code = "1010", Msg = "实时流请求失败" }; + return new DaHApiResult { Success = false, Code = "1010", Msg = "实时流请求失败" }; } } diff --git a/WeiCloud.Fusion/AlarmService/Alarm.DomainService/DahAlarm/IDahuaGeneralCtlService.cs b/WeiCloud.Fusion/AlarmService/Alarm.DomainService/DahAlarm/IDahuaGeneralCtlService.cs index 7a06401..e419693 100644 --- a/WeiCloud.Fusion/AlarmService/Alarm.DomainService/DahAlarm/IDahuaGeneralCtlService.cs +++ b/WeiCloud.Fusion/AlarmService/Alarm.DomainService/DahAlarm/IDahuaGeneralCtlService.cs @@ -16,7 +16,7 @@ namespace Alarm.DomainService.DahAlarm Task DeleteEvent(string name); - Task> GetEventList(string name = "alarm"); + Task> GetEventList(string name = "alarm"); /// /// AddSubscribeEvent回调函数处理 diff --git a/WeiCloud.Fusion/AlarmService/AlarmService.API/Controllers/AlarmController.cs b/WeiCloud.Fusion/AlarmService/AlarmService.API/Controllers/AlarmController.cs index 2f3665d..09e7dc8 100644 --- a/WeiCloud.Fusion/AlarmService/AlarmService.API/Controllers/AlarmController.cs +++ b/WeiCloud.Fusion/AlarmService/AlarmService.API/Controllers/AlarmController.cs @@ -48,7 +48,7 @@ namespace AlarmService.API.Controllers /// /// [HttpGet] - public async Task> GetEventList(string name = "alarm") + public async Task> GetEventList(string name = "alarm") { return await _generalCtlService.GetEventList(name); diff --git a/WeiCloud.Fusion/AlarmService/AlarmService.API/appsettings.json b/WeiCloud.Fusion/AlarmService/AlarmService.API/appsettings.json index ea44d24..3325ece 100644 --- a/WeiCloud.Fusion/AlarmService/AlarmService.API/appsettings.json +++ b/WeiCloud.Fusion/AlarmService/AlarmService.API/appsettings.json @@ -27,7 +27,7 @@ "ClientSecret": "6d6c78f8-3d4c-4e76-ab6b-827942a7b725", "Username": "system", "Password": "Admin123", - "Callback": "http://demo.weienergy.cn/axalarm/api/Alarm/DahuaAuthCallback", + "Callback": "http://192.168.21.42:18080/axalarm/api/Alarm/DahuaAuthCallback", "SubsystemName": "59.110.150.214_alarm", "SubsystemMagic": "59.110.150.214_12013" } diff --git a/WeiCloud.Fusion/Common.SharedService/Common.Shared.Application/DaHua/ResponeDto/EventEnvelopeDto.cs b/WeiCloud.Fusion/Common.SharedService/Common.Shared.Application/DaHua/ResponeDto/EventEnvelopeDto.cs index 299ec22..3ddd1a5 100644 --- a/WeiCloud.Fusion/Common.SharedService/Common.Shared.Application/DaHua/ResponeDto/EventEnvelopeDto.cs +++ b/WeiCloud.Fusion/Common.SharedService/Common.Shared.Application/DaHua/ResponeDto/EventEnvelopeDto.cs @@ -120,101 +120,53 @@ namespace Common.Shared.Application.DaHua public JsonElement? Extend { get; set; } } - /// - /// 订阅映射配置 - /// 用于定义不同服务节点的订阅参数配置 - /// - public class SubscriptionMapDto + public sealed class SubscribeDataDto { - /// - /// 订阅配置字典 - /// 键:服务节点标识(格式:IP地址_端口号) - /// 值:该节点的订阅参数列表 - /// - public Dictionary>? Items { get; set; } = new Dictionary>(); + [JsonPropertyName("subscribeMap")] + public SubscribeMap? SubscribeMap { get; set; } } /// - /// 订阅配置项 - /// 定义单个订阅的具体参数 + /// 语义化的字典类型:键为如 "59.110.150.214_alarm" 的分组名,值为该分组下的一组订阅项。 + /// 继承 Dictionary 便于序列化/反序列化,保持类型语义。 /// - public class SubscriptionConfig + public class SubscribeMap : Dictionary> + { + public SubscribeMap() : base() + { + } + } + + public sealed class SubscribeItem { /// - /// 订阅类型列表 - /// 可为空,表示订阅所有类型 + /// 事件类型编码;上游可能给字符串形式的数字,保持字符串列表以兼容。 /// [JsonPropertyName("types")] public List? Types { get; set; } - /// - /// 节点编码列表 - /// 可为空,表示订阅所有节点 - /// [JsonPropertyName("nodeCodes")] public List? NodeCodes { get; set; } - /// - /// 组织机构列表 - /// 可为空,表示订阅所有组织 - /// [JsonPropertyName("orgs")] public List? Orgs { get; set; } - /// - /// 等级列表 - /// 可为空,表示订阅所有等级 - /// [JsonPropertyName("grades")] public List? Grades { get; set; } - /// - /// 域订阅级别 - /// 枚举值: - /// 0 = 不订阅 - /// 1 = 订阅本域 - /// 2 = 订阅本域及下级域 - /// [JsonPropertyName("domainSubscribe")] - public int DomainSubscribe { get; set; } + public int? DomainSubscribe { get; set; } - /// - /// 传输方案 - /// 枚举值: - /// 0 = HTTP - /// 1 = HTTPS - /// 2 = WebSocket - /// 3 = MQTT - /// [JsonPropertyName("scheme")] - public int Scheme { get; set; } + public int? Scheme { get; set; } - /// - /// 事件类型 - /// 枚举值: - /// 0 = 所有事件 - /// 1 = 告警事件 - /// 2 = 状态事件 - /// 3 = 操作事件 - /// [JsonPropertyName("eventType")] - public int EventType { get; set; } + public int? EventType { get; set; } - /// - /// 监控回调地址 - /// 接收事件推送的目标URL - /// [JsonPropertyName("monitor")] - public string Monitor { get; set; } = string.Empty; + public string? Monitor { get; set; } - /// - /// 监控类型 - /// 枚举值: - /// "url" = HTTP/HTTPS 回调 - /// "websocket" = WebSocket 连接 - /// "queue" = 消息队列 - /// [JsonPropertyName("monitorType")] - public string MonitorType { get; set; } = string.Empty; + public string? MonitorType { get; set; } } } \ No newline at end of file