From 2d6ebca32dd167bc3004498cfebdd259457deb98 Mon Sep 17 00:00:00 2001 From: LiuXin Date: Wed, 13 Aug 2025 11:39:53 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E4=B8=80=E4=B8=AA=E5=85=AC?= =?UTF-8?q?=E5=85=B1=E6=9C=8D=E5=8A=A1=E7=B1=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Alarm.DomainService.csproj | 2 +- .../DahAlarm/IDahuaGeneralCtlService.cs | 3 +- .../AlarmService.API/AlarmService.API.csproj | 1 - .../Common.Shared.Application/ApiResult.cs | 0 .../Common.Shared.Application.csproj | 0 .../DaHua/DaHApiResult.cs | 0 .../DaHua/RequestDto/DahuaVideoQueryDto.cs | 0 .../DaHua/ResponeDto/DahuaVideoResDto.cs | 0 .../MQTT/MQTTParamDto.cs | 74 ++++++++ .../Common.Shared.DomainService.csproj | 21 +++ .../MqttClient/IMqttClientService.cs | 28 +++ .../MqttClient/MQTTClient.cs | 93 ++++++++++ .../MqttClient/MqttClientListService.cs | 173 ++++++++++++++++++ .../MqttClient/MqttClientService.cs | 119 ++++++++++++ .../Video.DomainService.csproj | 2 +- .../WeiCloud.Core/BaseModels/LoggerWarp.cs | 35 ++++ WeiCloud.Fusion/WeiCloud.Fusion.sln | 23 ++- 17 files changed, 561 insertions(+), 13 deletions(-) rename WeiCloud.Fusion/{ => Common.SharedService}/Common.Shared.Application/ApiResult.cs (100%) rename WeiCloud.Fusion/{ => Common.SharedService}/Common.Shared.Application/Common.Shared.Application.csproj (100%) rename WeiCloud.Fusion/{ => Common.SharedService}/Common.Shared.Application/DaHua/DaHApiResult.cs (100%) rename WeiCloud.Fusion/{ => Common.SharedService}/Common.Shared.Application/DaHua/RequestDto/DahuaVideoQueryDto.cs (100%) rename WeiCloud.Fusion/{ => Common.SharedService}/Common.Shared.Application/DaHua/ResponeDto/DahuaVideoResDto.cs (100%) create mode 100644 WeiCloud.Fusion/Common.SharedService/Common.Shared.Application/MQTT/MQTTParamDto.cs create mode 100644 WeiCloud.Fusion/Common.SharedService/Common.Shared.DomainService/Common.Shared.DomainService.csproj create mode 100644 WeiCloud.Fusion/Common.SharedService/Common.Shared.DomainService/MqttClient/IMqttClientService.cs create mode 100644 WeiCloud.Fusion/Common.SharedService/Common.Shared.DomainService/MqttClient/MQTTClient.cs create mode 100644 WeiCloud.Fusion/Common.SharedService/Common.Shared.DomainService/MqttClient/MqttClientListService.cs create mode 100644 WeiCloud.Fusion/Common.SharedService/Common.Shared.DomainService/MqttClient/MqttClientService.cs create mode 100644 WeiCloud.Fusion/WeiCloud.Core/BaseModels/LoggerWarp.cs diff --git a/WeiCloud.Fusion/Alarm.DomainService/Alarm.DomainService.csproj b/WeiCloud.Fusion/Alarm.DomainService/Alarm.DomainService.csproj index 3a1cf0c..b2d4540 100644 --- a/WeiCloud.Fusion/Alarm.DomainService/Alarm.DomainService.csproj +++ b/WeiCloud.Fusion/Alarm.DomainService/Alarm.DomainService.csproj @@ -14,7 +14,7 @@ - + diff --git a/WeiCloud.Fusion/Alarm.DomainService/DahAlarm/IDahuaGeneralCtlService.cs b/WeiCloud.Fusion/Alarm.DomainService/DahAlarm/IDahuaGeneralCtlService.cs index 475c8df..4140c9c 100644 --- a/WeiCloud.Fusion/Alarm.DomainService/DahAlarm/IDahuaGeneralCtlService.cs +++ b/WeiCloud.Fusion/Alarm.DomainService/DahAlarm/IDahuaGeneralCtlService.cs @@ -1,5 +1,4 @@ -using Alarm.Application.RequestDto; -using Alarm.Application.ResponeDto; +using Alarm.Application.ResponeDto; using Common.Shared.Application.DaHua; namespace Alarm.DomainService.DahAlarm diff --git a/WeiCloud.Fusion/AlarmService/AlarmService.API/AlarmService.API.csproj b/WeiCloud.Fusion/AlarmService/AlarmService.API/AlarmService.API.csproj index 97918b8..a02dc02 100644 --- a/WeiCloud.Fusion/AlarmService/AlarmService.API/AlarmService.API.csproj +++ b/WeiCloud.Fusion/AlarmService/AlarmService.API/AlarmService.API.csproj @@ -8,7 +8,6 @@ - diff --git a/WeiCloud.Fusion/Common.Shared.Application/ApiResult.cs b/WeiCloud.Fusion/Common.SharedService/Common.Shared.Application/ApiResult.cs similarity index 100% rename from WeiCloud.Fusion/Common.Shared.Application/ApiResult.cs rename to WeiCloud.Fusion/Common.SharedService/Common.Shared.Application/ApiResult.cs diff --git a/WeiCloud.Fusion/Common.Shared.Application/Common.Shared.Application.csproj b/WeiCloud.Fusion/Common.SharedService/Common.Shared.Application/Common.Shared.Application.csproj similarity index 100% rename from WeiCloud.Fusion/Common.Shared.Application/Common.Shared.Application.csproj rename to WeiCloud.Fusion/Common.SharedService/Common.Shared.Application/Common.Shared.Application.csproj diff --git a/WeiCloud.Fusion/Common.Shared.Application/DaHua/DaHApiResult.cs b/WeiCloud.Fusion/Common.SharedService/Common.Shared.Application/DaHua/DaHApiResult.cs similarity index 100% rename from WeiCloud.Fusion/Common.Shared.Application/DaHua/DaHApiResult.cs rename to WeiCloud.Fusion/Common.SharedService/Common.Shared.Application/DaHua/DaHApiResult.cs diff --git a/WeiCloud.Fusion/Common.Shared.Application/DaHua/RequestDto/DahuaVideoQueryDto.cs b/WeiCloud.Fusion/Common.SharedService/Common.Shared.Application/DaHua/RequestDto/DahuaVideoQueryDto.cs similarity index 100% rename from WeiCloud.Fusion/Common.Shared.Application/DaHua/RequestDto/DahuaVideoQueryDto.cs rename to WeiCloud.Fusion/Common.SharedService/Common.Shared.Application/DaHua/RequestDto/DahuaVideoQueryDto.cs diff --git a/WeiCloud.Fusion/Common.Shared.Application/DaHua/ResponeDto/DahuaVideoResDto.cs b/WeiCloud.Fusion/Common.SharedService/Common.Shared.Application/DaHua/ResponeDto/DahuaVideoResDto.cs similarity index 100% rename from WeiCloud.Fusion/Common.Shared.Application/DaHua/ResponeDto/DahuaVideoResDto.cs rename to WeiCloud.Fusion/Common.SharedService/Common.Shared.Application/DaHua/ResponeDto/DahuaVideoResDto.cs diff --git a/WeiCloud.Fusion/Common.SharedService/Common.Shared.Application/MQTT/MQTTParamDto.cs b/WeiCloud.Fusion/Common.SharedService/Common.Shared.Application/MQTT/MQTTParamDto.cs new file mode 100644 index 0000000..458404b --- /dev/null +++ b/WeiCloud.Fusion/Common.SharedService/Common.Shared.Application/MQTT/MQTTParamDto.cs @@ -0,0 +1,74 @@ +using System; +using System.Collections.Generic; +using System.Text; + +namespace Common.Shared.Application.MQTT +{ + /// + /// Mqtt参数 + /// + public class MQTTParamDto + { + /// + /// mqtt的标识名称 + /// + public string MqttClientMark { get; set; } + + /// + /// 项目ID + /// + + public long ProjectId { get; set; } + + /// + /// 服务器Ip + /// + public string HostIp { get; set; } + + /// + /// 服务器端口号 + /// + public short HostPort { get; set; } + + /// + /// 超时时间 ms + /// + public int Timeout { get; set; } + + /// + /// 通讯质量等级 0至多一次 2一次 1 至少一次 + /// + public short Level { get; set; } + + /// + /// 用户名 + /// + public string UserName { get; set; } + + /// + /// 密码 + /// + + public string Password { get; set; } + + /// + /// 客户端ID + /// + public string? ClientId { get; set; } + + /// + /// 发布的topic + /// + public List? PublishTopics { get; set; } + + /// + /// 订阅的topic + /// + public List? SubscribeTopics { get; set; } + + /// + /// 物联网版本 1 是老版本 2是新版本 + /// + public short IotType { get; set; } + } +} \ No newline at end of file diff --git a/WeiCloud.Fusion/Common.SharedService/Common.Shared.DomainService/Common.Shared.DomainService.csproj b/WeiCloud.Fusion/Common.SharedService/Common.Shared.DomainService/Common.Shared.DomainService.csproj new file mode 100644 index 0000000..3530a2b --- /dev/null +++ b/WeiCloud.Fusion/Common.SharedService/Common.Shared.DomainService/Common.Shared.DomainService.csproj @@ -0,0 +1,21 @@ + + + + net8.0 + enable + enable + + + + + + + + + + + + + + + diff --git a/WeiCloud.Fusion/Common.SharedService/Common.Shared.DomainService/MqttClient/IMqttClientService.cs b/WeiCloud.Fusion/Common.SharedService/Common.Shared.DomainService/MqttClient/IMqttClientService.cs new file mode 100644 index 0000000..136e26a --- /dev/null +++ b/WeiCloud.Fusion/Common.SharedService/Common.Shared.DomainService/MqttClient/IMqttClientService.cs @@ -0,0 +1,28 @@ +using MQTTnet; +using MQTTnet.Client; + +namespace Common.Shared.DomainService.MqttClient +{ + public interface IMqttClientService + { + /// + Task SubscribeAsync(string topicName); + + /// + /// 取消订阅主题 + /// + /// + /// + Task UnSubscribeAsync(string topicName); + + /// + /// 发送消息 + /// + /// + /// + /// + Task PublishAsync(string topicName, string message); + + Task ReceiveAsync(Action action); + } +} \ No newline at end of file diff --git a/WeiCloud.Fusion/Common.SharedService/Common.Shared.DomainService/MqttClient/MQTTClient.cs b/WeiCloud.Fusion/Common.SharedService/Common.Shared.DomainService/MqttClient/MQTTClient.cs new file mode 100644 index 0000000..64addd6 --- /dev/null +++ b/WeiCloud.Fusion/Common.SharedService/Common.Shared.DomainService/MqttClient/MQTTClient.cs @@ -0,0 +1,93 @@ +using Microsoft.Extensions.Logging; +using MQTTnet; +using MQTTnet.Client; +using MQTTnet.Protocol; +using WeiCloud.Core.BaseModels; + +namespace Common.Shared.DomainService.MqttClient +{ + public class MQTTClient + { + private readonly ILogger _logger; + internal IMqttClient mqttClient; + + public MQTTClient(ILogger logger) + { + _logger = logger; + } + + private async Task Subscribe(string topicNameStrs) + { + if (!string.IsNullOrWhiteSpace(topicNameStrs)) + { + var topicNames = topicNameStrs.Split(","); + foreach (var topicName in topicNames) + { + await mqttClient.SubscribeAsync(topicName, MqttQualityOfServiceLevel.AtMostOnce); + } + } + } + + /// + /// 初始化 + /// + /// + /// + /// + /// + /// + /// + public async Task Init(string serverIp, int port, string authUser, string authPwd, string topicNameStrs, string clientId = "") + { + try + { + if (string.IsNullOrWhiteSpace(clientId)) + { + clientId = Guid.NewGuid().ToString(); + } + var factory = new MqttFactory(); + mqttClient = factory.CreateMqttClient(); + var options = new MqttClientOptionsBuilder() + .WithTcpServer(serverIp, port) + .WithCredentials(authUser, authPwd) + .WithCleanSession(false) + .WithClientId(clientId) + .Build(); + //mqttClient.UseApplicationMessageReceivedHandler(e => + //{ + // Console.WriteLine("###收到消息####"); + // Console.WriteLine($"Topic {e.ApplicationMessage.Topic}"); + // Console.WriteLine($"Payload {Encoding.UTF8.GetString(e.ApplicationMessage.Payload)}"); + // Console.WriteLine($"Qos {e.ApplicationMessage.QualityOfServiceLevel}"); + // Console.WriteLine($"Retain {e.ApplicationMessage.Retain}"); + // Console.WriteLine(); + //}); + mqttClient.DisconnectedAsync += async e => + { + Console.WriteLine($"{clientId}连接异常{serverIp} {port}"); + try + { + _logger.LogWarning(new LoggerWarp("Init", message: $"{clientId}连接异常{serverIp} {port}").GetMessage()); + await Task.Delay(TimeSpan.FromSeconds(5)); + await mqttClient.ConnectAsync(options); + //订阅 + await Subscribe(topicNameStrs); + Console.WriteLine($"{clientId}重新连接服务器成功{serverIp} {port}"); + _logger.LogWarning(new LoggerWarp("Init", message: $"{clientId}重新连接服务器{mqttClient.IsConnected}{serverIp} {port}").GetMessage()); + } + catch (Exception ex) + { + Console.WriteLine($"重新连接服务器异常 {ex.Message}"); + _logger.LogError(new LoggerWarp("Init", message: "重新连接服务器异常", ex: ex).GetMessage()); + } + }; + await mqttClient.ConnectAsync(options); + await Subscribe(topicNameStrs); + } + catch (Exception ex) + { + _logger.LogError(new LoggerWarp("Init", ex: ex).GetMessage()); + } + } + } +} \ No newline at end of file diff --git a/WeiCloud.Fusion/Common.SharedService/Common.Shared.DomainService/MqttClient/MqttClientListService.cs b/WeiCloud.Fusion/Common.SharedService/Common.Shared.DomainService/MqttClient/MqttClientListService.cs new file mode 100644 index 0000000..a5222f7 --- /dev/null +++ b/WeiCloud.Fusion/Common.SharedService/Common.Shared.DomainService/MqttClient/MqttClientListService.cs @@ -0,0 +1,173 @@ +using Common.Shared.Application.MQTT; +using Microsoft.Extensions.Logging; +using MQTTnet; +using MQTTnet.Client; +using MQTTnet.Protocol; +using System.Collections.Concurrent; +using System.Text; +using WeiCloud.Utils.Common; + +namespace Common.Shared.DomainService.MqttClient +{ + public class MqttClientListService + { + private readonly ILogger _logger; + + /// + /// mqttclient集合 + /// + public static ConcurrentDictionary _mqttClientList = new ConcurrentDictionary(); + + private MqttFactory _factory = new MqttFactory(); + + /// + /// DI + /// + /// + /// + /// + /// + /// + public MqttClientListService(ILogger logger) + { + _logger = logger; + } + + /// + /// 创建mqtt客户端 + /// + /// + /// + public async Task CreateMqttClient(MQTTParamDto mQTT) + { + try + { + var key = _mqttClientList.Keys.Where(x => x.MqttClientMark == mQTT.MqttClientMark).FirstOrDefault(); + if (key != null) + { + return _mqttClientList[key]; + } + + if (string.IsNullOrWhiteSpace(mQTT.ClientId)) + { + mQTT.ClientId = "robot_mqtt_" + UidGenerator.Uid().ToString(); + } + + var mqttClient = _factory.CreateMqttClient(); + var options = new MqttClientOptionsBuilder() + .WithTcpServer(mQTT.HostIp, mQTT.HostPort) + .WithCredentials(mQTT.UserName, mQTT.Password) + .WithCleanSession(false) + .WithClientId(mQTT.ClientId) + .Build(); + + mqttClient.ApplicationMessageReceivedAsync += delegate (MqttApplicationMessageReceivedEventArgs args) + { + //var key = _mqttClientList.Keys.Where(x => x.ClientId == ).FirstOrDefault(); + Console.WriteLine($"Topic {args.ApplicationMessage.Topic}"); + Console.WriteLine($"Payload {Encoding.UTF8.GetString(args.ApplicationMessage.Payload)}"); + Console.WriteLine($"Qos {args.ApplicationMessage.QualityOfServiceLevel}"); + //进行业务处理 + return Task.CompletedTask; + }; + + mqttClient.DisconnectedAsync += async e => + { + await Task.Delay(TimeSpan.FromSeconds(5)); + try + { + await mqttClient.ConnectAsync(options); + //订阅 + await Subscribe(mqttClient, mQTT.SubscribeTopics, mQTT.Level); + } + catch (Exception ex) + { + Console.WriteLine($"重新连接服务器异常 {ex.Message}"); + _logger.LogError($"Init 重新连接服务器异常{ex.Message}"); + } + }; + await mqttClient.ConnectAsync(options); + await Subscribe(mqttClient, mQTT.SubscribeTopics, mQTT.Level); + _mqttClientList.TryAdd(mQTT, mqttClient); + return mqttClient; + } + catch (Exception ex) + { + _logger.LogError($"create mqttclient error {ex.Message}"); + return null; + } + } + + /// + /// 订阅主题 + /// + /// + /// + /// + /// + private async Task Subscribe(IMqttClient mqttClient, List? topics, short level) + { + var mqttSubscribeOptions = _factory.CreateSubscribeOptionsBuilder(); + if (topics != null) + { + foreach (var topic in topics) + { + mqttSubscribeOptions.WithTopicFilter( + f => + { + f.WithTopic(topic); + if (level == 1) + { + f.WithAtLeastOnceQoS(); + } + else if (level == 0) + { + f.WithAtMostOnceQoS(); + } + else if (level == 2) + { + f.WithExactlyOnceQoS(); + } + }); + } + var response = await mqttClient.SubscribeAsync(mqttSubscribeOptions.Build(), CancellationToken.None); + } + } + + /// + /// 发布主题数据 + /// + /// + /// + /// + public async Task Publish(string mqttClientMark, List msgs) + { + IMqttClient mqttClient = null; + var key = _mqttClientList.Keys.Where(x => x.MqttClientMark == mqttClientMark).FirstOrDefault(); + if (key != null) + { + if (key.PublishTopics == null) + { + return; + } + mqttClient = _mqttClientList[key]; + } + if (mqttClient == null) + { + return; + } + foreach (var msg in msgs) + { + foreach (var topic in key.PublishTopics) + { + var applicationMessage = new MqttApplicationMessageBuilder() + .WithTopic(topic) + .WithPayload(msg) + .WithQualityOfServiceLevel(MqttQualityOfServiceLevel.AtMostOnce) + .Build(); + await mqttClient.PublishAsync(applicationMessage, CancellationToken.None); + } + } + } + } +} \ No newline at end of file diff --git a/WeiCloud.Fusion/Common.SharedService/Common.Shared.DomainService/MqttClient/MqttClientService.cs b/WeiCloud.Fusion/Common.SharedService/Common.Shared.DomainService/MqttClient/MqttClientService.cs new file mode 100644 index 0000000..912ffb1 --- /dev/null +++ b/WeiCloud.Fusion/Common.SharedService/Common.Shared.DomainService/MqttClient/MqttClientService.cs @@ -0,0 +1,119 @@ +using Common.Shared.DomainService.MqttClient; +using Microsoft.Extensions.Configuration; +using MQTTnet; +using MQTTnet.Client; + +namespace WeiCloud.SafetyFirePro.Services +{ + public class MqttClientService : IMqttClientService + { + private readonly MQTTClient _mQTTClient; + private readonly IConfiguration _configuration; + private string topicName = string.Empty; + private string mqttClientId = string.Empty; + + public MqttClientService(MQTTClient mQTTClient, IConfiguration configuration) + { + _mQTTClient = mQTTClient; + //_configuration = configuration; + //using var loggerFactory = LoggerFactory.Create(builder => + //{ + //}); + //var logger = loggerFactory.CreateLogger(); + //_mQTTClient = new MQTTClient(logger); + //string mqttHostIp = _configuration["MqttClientOption:HostIp"];//IP地址 + //short mqttHostPort = short.Parse(_configuration["MqttClientOption:HostPort"]);//端口号 + //int mqttTimeout = short.Parse(_configuration["MqttClientOption:Timeout"]);//超时时间 + //string mqttUsername = _configuration["MqttClientOption:UserName"];//用户名 + //string mqttPassword = _configuration["MqttClientOption:Password"];//密码 + ////string mqttClientId = _configuration["MqttClientOption:ClientId"]; + //string proid = _configuration["MqttClientOption:ProjectId"]; + + //topicName = $"weilink/v1/control/commandcallback/{proid}/#"; + //_mQTTClient.Init(mqttHostIp, mqttHostPort, mqttUsername, mqttPassword, topicName, mqttClientId); + } + + /// + /// 订阅主题 + /// + /// + /// + public async Task SubscribeAsync(string topicName) + { + if (string.IsNullOrEmpty(topicName)) + { + return -1; + } + if (!_mQTTClient.mqttClient.IsConnected) + { + return -2; + } + await _mQTTClient.mqttClient.SubscribeAsync(new MqttTopicFilterBuilder().WithTopic(topicName).Build()); + return 1; + } + + /// + /// 取消订阅主题 + /// + /// + /// + public async Task UnSubscribeAsync(string topicName) + { + if (string.IsNullOrEmpty(topicName)) + { + return -1; + } + if (!_mQTTClient.mqttClient.IsConnected) + { + return -2; + } + MqttClientUnsubscribeOptions mqttClientUnsubscribeOptions = new MqttClientUnsubscribeOptions() + { + TopicFilters = new List() { topicName } + }; + await _mQTTClient.mqttClient.UnsubscribeAsync(mqttClientUnsubscribeOptions); + return 1; + } + + /// + /// 发送消息 + /// + /// + /// + /// + public async Task PublishAsync(string topicName, string message) + { + if (string.IsNullOrEmpty(topicName)) + { + return new MqttClientPublishResult(); + } + if (!_mQTTClient.mqttClient.IsConnected) + { + return new MqttClientPublishResult(); + } + var messagebuilder = new MqttApplicationMessageBuilder() + .WithTopic(topicName) + .WithPayload(message) + .WithQualityOfServiceLevel(MQTTnet.Protocol.MqttQualityOfServiceLevel.AtLeastOnce) + //.WithExactlyOnceQoS() + //.WithAtLeastOnceQoS() + .WithRetainFlag(false) + .Build(); + MqttClientPublishResult mqttClientPublishResult = await _mQTTClient.mqttClient.PublishAsync(messagebuilder); + return mqttClientPublishResult; + } + + /// + /// 接收消息 + /// + /// + /// + public async Task ReceiveAsync(Action action) + { + _mQTTClient.mqttClient.ApplicationMessageReceivedAsync += async e => + { + action(e); + }; + } + } +} \ No newline at end of file diff --git a/WeiCloud.Fusion/VideoService/Video.DomainService/Video.DomainService.csproj b/WeiCloud.Fusion/VideoService/Video.DomainService/Video.DomainService.csproj index c611a6f..ca69cec 100644 --- a/WeiCloud.Fusion/VideoService/Video.DomainService/Video.DomainService.csproj +++ b/WeiCloud.Fusion/VideoService/Video.DomainService/Video.DomainService.csproj @@ -7,7 +7,7 @@ - + diff --git a/WeiCloud.Fusion/WeiCloud.Core/BaseModels/LoggerWarp.cs b/WeiCloud.Fusion/WeiCloud.Core/BaseModels/LoggerWarp.cs new file mode 100644 index 0000000..08370f4 --- /dev/null +++ b/WeiCloud.Fusion/WeiCloud.Core/BaseModels/LoggerWarp.cs @@ -0,0 +1,35 @@ +using System; +using System.Collections.Generic; +using System.Text; + +namespace WeiCloud.Core.BaseModels +{ + public class LoggerWarp + { + private readonly string _actionName; + private readonly string _message; + private readonly Exception _ex; + + public LoggerWarp(string actionName, string message = "", Exception ex = null) + { + _actionName = actionName; + _message = message; + _ex = ex; + } + + public string GetMessage() + { + StringBuilder messageString = new StringBuilder(); + messageString.Append(_actionName).Append("|"); + if (!string.IsNullOrEmpty(_message)) + { + messageString.Append(_message).Append("|"); + } + if (_ex != null) + { + messageString.Append($"抛出了异常信息:{_ex.Message} {_ex.StackTrace} {_ex.Source}"); + } + return messageString.ToString(); + } + } +} \ No newline at end of file diff --git a/WeiCloud.Fusion/WeiCloud.Fusion.sln b/WeiCloud.Fusion/WeiCloud.Fusion.sln index 4c1cf76..b0e6721 100644 --- a/WeiCloud.Fusion/WeiCloud.Fusion.sln +++ b/WeiCloud.Fusion/WeiCloud.Fusion.sln @@ -49,12 +49,14 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "AlarmService.API", "AlarmSe EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Alarm.DomainService", "Alarm.DomainService\Alarm.DomainService.csproj", "{3ED553C4-3A63-4613-B979-472FDA5EA346}" EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Common.Shared.Application", "Common.Shared.Application", "{80F3B34B-C334-44D2-A861-31FD403AD57D}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Common.Shared.Application", "Common.Shared.Application\Common.Shared.Application.csproj", "{6CE57FEC-4982-48AF-A9CB-4BCE93A84228}" +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Common.SharedService", "Common.SharedService", "{80F3B34B-C334-44D2-A861-31FD403AD57D}" EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Alarm.Application", "Alarm.Application\Alarm.Application.csproj", "{89367194-A636-41B9-81F0-283DCB84C296}" EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Common.Shared.Application", "Common.SharedService\Common.Shared.Application\Common.Shared.Application.csproj", "{9A5FBAFF-EBE8-3156-5547-FB3ED1DEB545}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Common.Shared.DomainService", "Common.SharedService\Common.Shared.DomainService\Common.Shared.DomainService.csproj", "{C2757FC0-54A9-BBD3-2E23-55F2F3912BA4}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -125,14 +127,18 @@ Global {3ED553C4-3A63-4613-B979-472FDA5EA346}.Debug|Any CPU.Build.0 = Debug|Any CPU {3ED553C4-3A63-4613-B979-472FDA5EA346}.Release|Any CPU.ActiveCfg = Release|Any CPU {3ED553C4-3A63-4613-B979-472FDA5EA346}.Release|Any CPU.Build.0 = Release|Any CPU - {6CE57FEC-4982-48AF-A9CB-4BCE93A84228}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {6CE57FEC-4982-48AF-A9CB-4BCE93A84228}.Debug|Any CPU.Build.0 = Debug|Any CPU - {6CE57FEC-4982-48AF-A9CB-4BCE93A84228}.Release|Any CPU.ActiveCfg = Release|Any CPU - {6CE57FEC-4982-48AF-A9CB-4BCE93A84228}.Release|Any CPU.Build.0 = Release|Any CPU {89367194-A636-41B9-81F0-283DCB84C296}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {89367194-A636-41B9-81F0-283DCB84C296}.Debug|Any CPU.Build.0 = Debug|Any CPU {89367194-A636-41B9-81F0-283DCB84C296}.Release|Any CPU.ActiveCfg = Release|Any CPU {89367194-A636-41B9-81F0-283DCB84C296}.Release|Any CPU.Build.0 = Release|Any CPU + {9A5FBAFF-EBE8-3156-5547-FB3ED1DEB545}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {9A5FBAFF-EBE8-3156-5547-FB3ED1DEB545}.Debug|Any CPU.Build.0 = Debug|Any CPU + {9A5FBAFF-EBE8-3156-5547-FB3ED1DEB545}.Release|Any CPU.ActiveCfg = Release|Any CPU + {9A5FBAFF-EBE8-3156-5547-FB3ED1DEB545}.Release|Any CPU.Build.0 = Release|Any CPU + {C2757FC0-54A9-BBD3-2E23-55F2F3912BA4}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {C2757FC0-54A9-BBD3-2E23-55F2F3912BA4}.Debug|Any CPU.Build.0 = Debug|Any CPU + {C2757FC0-54A9-BBD3-2E23-55F2F3912BA4}.Release|Any CPU.ActiveCfg = Release|Any CPU + {C2757FC0-54A9-BBD3-2E23-55F2F3912BA4}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE @@ -154,8 +160,9 @@ Global {9F2BD2C5-6496-419D-B87A-4F481E963C4D} = {19A25984-FFA8-49BE-A710-6F269A406C61} {2677EAF0-9F7F-4969-B8B1-3006F35EB93E} = {18791734-CA81-482D-964A-CA6D0F308B8E} {3ED553C4-3A63-4613-B979-472FDA5EA346} = {18791734-CA81-482D-964A-CA6D0F308B8E} - {6CE57FEC-4982-48AF-A9CB-4BCE93A84228} = {80F3B34B-C334-44D2-A861-31FD403AD57D} {89367194-A636-41B9-81F0-283DCB84C296} = {18791734-CA81-482D-964A-CA6D0F308B8E} + {9A5FBAFF-EBE8-3156-5547-FB3ED1DEB545} = {80F3B34B-C334-44D2-A861-31FD403AD57D} + {C2757FC0-54A9-BBD3-2E23-55F2F3912BA4} = {80F3B34B-C334-44D2-A861-31FD403AD57D} EndGlobalSection GlobalSection(ExtensibilityGlobals) = postSolution SolutionGuid = {379A56DA-D3F0-4E7E-8FF7-DA8E20015BF3}