From 63a1e0dd7fcda5948c26490d5d7e4c84d6dbf99f Mon Sep 17 00:00:00 2001
From: wei <kaede@kaededeMacBook-Air.local>
Date: 星期二, 16 三月 2021 17:06:19 +0800
Subject: [PATCH] 4

---
 HDL_ON/DAL/Mqtt/MqttClient.cs |  147 +++++++++++++++++++++++++++++++++++++++++++++++--
 1 files changed, 141 insertions(+), 6 deletions(-)

diff --git a/HDL_ON/DAL/Mqtt/MqttClient.cs b/HDL_ON/DAL/Mqtt/MqttClient.cs
index d6b5871..61ca982 100644
--- a/HDL_ON/DAL/Mqtt/MqttClient.cs
+++ b/HDL_ON/DAL/Mqtt/MqttClient.cs
@@ -11,6 +11,7 @@
 using HDL_ON.DriverLayer;
 using HDL_ON.Entity;
 using HDL_ON.UI;
+using HDL_ON.DAL.Server;
 
 namespace HDL_ON.DAL.Mqtt
 {
@@ -191,9 +192,45 @@
                         Topic = $"/user/{DB_ResidenceData.Instance.CurrentRegion.RegionID}/app/thing/property/send",
                         QualityOfServiceLevel = MQTTnet.Protocol.MqttQualityOfServiceLevel.AtMostOnce
                     };
+                    //App璁㈤槄绾㈠瀹� / 缃戝叧閬ユ帶鍣ㄦ坊鍔犳垚鍔熼�氱煡
+                    var pirStatus = new MqttTopicFilter()
+                    {
+                        Topic = $"/user/{DB_ResidenceData.Instance.CurrentRegion.RegionID}/app/thing/topo/found",
+                        QualityOfServiceLevel = MQTTnet.Protocol.MqttQualityOfServiceLevel.AtMostOnce
+                    };
+                    //App璁㈤槄閬ユ帶鍣ㄨ嚜瀛︽寜閿涔犳垚鍔熼�氱煡
+                    var pirStudy = new MqttTopicFilter()
+                    {
+                        Topic = $"/user/{DB_ResidenceData.Instance.CurrentRegion.RegionID}/app/thing/event/irCodeStudyDone/up",
+                        QualityOfServiceLevel = MQTTnet.Protocol.MqttQualityOfServiceLevel.AtMostOnce
+                    };
+                    #region 鏁版嵁鏇存柊鎺ㄩ�佷富棰�
+                    //appHomeRefresh锛氫綇瀹呮暟鎹埛鏂伴�氱煡
+                    var appHomeRefresh = new MqttTopicFilter()
+                    {
+                        Topic = $"/user/{DB_ResidenceData.Instance.CurrentRegion.RegionID}/app/thing/event/appHomeRefresh/up",
+                        QualityOfServiceLevel = MQTTnet.Protocol.MqttQualityOfServiceLevel.AtMostOnce
+                    };
+                    //appRoomRefresh锛氭埧闂存暟鎹埛鏂伴�氱煡
+                    var appRoomRefresh = new MqttTopicFilter()
+                    {
+                        Topic = $"/user/{DB_ResidenceData.Instance.CurrentRegion.RegionID}/app/thing/event/appRoomRefresh/up",
+                        QualityOfServiceLevel = MQTTnet.Protocol.MqttQualityOfServiceLevel.AtMostOnce
+                    };
+                    //appDeviceRefresh锛氳澶囨暟鎹埛鏂伴�氱煡
+                    var appDeviceRefresh = new MqttTopicFilter()
+                    {
+                        Topic = $"/user/{DB_ResidenceData.Instance.CurrentRegion.RegionID}/app/thing/event/appDeviceRefresh/up",
+                        QualityOfServiceLevel = MQTTnet.Protocol.MqttQualityOfServiceLevel.AtMostOnce
+                    };
+                    #endregion
+
 
                     Utlis.WriteLine("寮�濮嬭闃咃紒");
-                    var result = await RemoteMqttClient.SubscribeAsync(new MqttTopicFilter[] {  topicFilterPush2, topicAlinkStatus });
+                    var result = await RemoteMqttClient.SubscribeAsync(new MqttTopicFilter[] {
+                        pirStatus,pirStudy,
+                        appDeviceRefresh,appHomeRefresh,appRoomRefresh,
+                        topicFilterPush2, topicAlinkStatus });
                     if (result.Items[0].ResultCode == MQTTnet.Client.Subscribing.MqttClientSubscribeResultCode.GrantedQoS0)
                     {
                         isSubscribeSuccess = true;
@@ -221,6 +258,10 @@
             {
                 return;
             }
+            if(DB_ResidenceData.Instance.CurrentRegion == null || DB_ResidenceData.Instance.CurrentRegion.RegionID == null)
+            {
+                return;
+            }
 
             //杩藉姞锛氭病鏈夎繙绋嬭繛鎺ョ殑鏉冮檺
             if (RemoteMqttIsConnecting || remoteIsConnected)
@@ -230,7 +271,7 @@
 
             Utlis.WriteLine($"StartCloudMqtt: 寮�濮�");
 
-            await Task.Factory.StartNew(async () => {
+            await Task.Factory.StartNew((Func<Task>)(async () => {
                 try
                 {
                     #region 鍒濆鍖栬繙绋婱qtt
@@ -242,7 +283,7 @@
                     if (RemoteMqttClient.ApplicationMessageReceivedHandler == null)
                     {
                         //澶勭悊鎺ユ敹鍒扮殑鏁版嵁
-                        RemoteMqttClient.UseApplicationMessageReceivedHandler((e) => {
+                        RemoteMqttClient.UseApplicationMessageReceivedHandler((Action<MqttApplicationMessageReceivedEventArgs>)((e) => {
                             try
                             {
                                 var topic = e.ApplicationMessage.Topic;
@@ -272,12 +313,106 @@
                                     }
                                 }
 
+                                //涓�浜涚壒娈婄殑涓婚澶勭悊(涓轰簡鎵ц閫熷害,灏藉彲鑳界殑鍒姞鑰楁椂鐨勬搷浣� true:鎵ц浜嗙壒娈婂鐞� false:娌℃湁鎵ц鐗规畩澶勭悊)
+                                if (Stan.HdlCloudReceiveLogic.Current.CloudOverallMsgReceiveEx(topic, e.ApplicationMessage.Payload, mqttEncryptKey, tuyaEncryptKey) == true)
+                                {
+                                    return;
+                                }
+
                                 if (topic == $"/BusGateWayToClient/{UserInfo.Current.ID}" + PushNotifySqueeze)
                                 {
                                     var mMes = Encoding.UTF8.GetString(e.ApplicationMessage.Payload);
                                     //鏂版尋涓嬬嚎涓婚鏂规 鏀跺埌鎸や笅绾夸富棰�
                                     ReceiveNotifySqueezeAsync(mMes);
                                 }
+                                //App璁㈤槄绾㈠瀹�/缃戝叧閬ユ帶鍣ㄦ坊鍔犳垚鍔熼�氱煡
+                                else if (topic == $"/user/{DB_ResidenceData.Instance.CurrentRegion.RegionID}/app/thing/topo/found")
+                                {
+                                    var bytes = Securitys.EncryptionService.AesDecryptPayload(e.ApplicationMessage.Payload, tuyaEncryptKey);
+                                    var revString = Encoding.UTF8.GetString(bytes);
+                                    HDL_ON.UI.UI2.PersonalCenter.PirDevice.Method.controldata = revString;
+                                }
+                                //App璁㈤槄閬ユ帶鍣ㄨ嚜瀛︽寜閿涔犳垚鍔熼�氱煡
+                                else if (topic == $"/user/{DB_ResidenceData.Instance.CurrentRegion.RegionID}/app/thing/event/irCodeStudyDone/up")
+                                {
+                                    var bytes = Securitys.EncryptionService.AesDecryptPayload(e.ApplicationMessage.Payload, tuyaEncryptKey);
+                                    var revString = Encoding.UTF8.GetString(bytes);
+                                    UI.UI2.PersonalCenter.PirDevice.Method.controldata = revString;
+                                }
+                                #region 鏁版嵁鏇存柊鎺ㄩ�佷富棰�
+                                //appHomeRefresh锛氫綇瀹呮暟鎹埛鏂伴�氱煡
+                                else if (topic == $"/user/{DB_ResidenceData.Instance.CurrentRegion.RegionID}/app/thing/event/appHomeRefresh/up") {
+                                    MainPage.Log("浣忓畢鏁版嵁鍒锋柊閫氱煡");
+                                    new HttpServerRequest().GetHomePager();
+                                }
+                                //appRoomRefresh锛氭埧闂存暟鎹埛鏂伴�氱煡
+                                else if (topic == $"/user/{DB_ResidenceData.Instance.CurrentRegion.RegionID}/app/thing/event/appRoomRefresh/up"){
+                                    MainPage.Log("鎴块棿鏁版嵁鍒锋柊閫氱煡");
+                                    var roomResult = new HttpServerRequest().GetRoomList();
+                                    if (roomResult.Code == StateCode.SUCCESS)
+                                    {
+                                        MainPage.Log($"璇诲彇鎴块棿淇℃伅鎴愬姛");
+                                        var revData = Newtonsoft.Json.JsonConvert.DeserializeObject<SpatialApiPack>(roomResult.Data.ToString());
+                                        if (revData == null)
+                                        {
+                                            revData = new SpatialApiPack();
+                                        }
+                                        {
+                                            SpatialInfo.CurrentSpatial.UpdateSpatialList(revData.list);
+                                        }
+                                    }
+                                    else
+                                    {
+                                        MainPage.Log($"璇诲彇鎴块棿鏁版嵁澶辫触:Code:{roomResult.Code}; msg:{roomResult.message}");
+                                    }
+                                }
+                                //appDeviceRefresh锛氳澶囨暟鎹埛鏂伴�氱煡
+                                else if (topic == $"/user/{DB_ResidenceData.Instance.CurrentRegion.RegionID}/app/thing/event/appDeviceRefresh/up") {
+                                    MainPage.Log("璁惧鏁版嵁鍒锋柊閫氱煡");
+                                    var deviceResult = new HttpServerRequest().GetDeviceList();
+                                    if (deviceResult.Code == StateCode.SUCCESS)
+                                    {
+                                        MainPage.Log($"璇诲彇璁惧淇℃伅鎴愬姛");
+                                        var deviceList = Newtonsoft.Json.JsonConvert.DeserializeObject<DevcieApiPack>(deviceResult.Data.ToString());
+                                        if (deviceList == null)
+                                        {
+                                            deviceList = new DevcieApiPack();
+                                        }
+                                        string delFile = "";
+                                        if (FunctionList.List.GetDeviceFunctionList().Count > 0)
+                                        {
+                                            for (int i = 0; i < FunctionList.List.GetDeviceFunctionList().Count;)
+                                            {
+                                                var localFunction = FunctionList.List.GetDeviceFunctionList()[i];
+                                                if (localFunction.Spk_Prefix == FunctionCategory.Music || string.IsNullOrEmpty(localFunction.Spk_Prefix))
+                                                {
+                                                    i++;
+                                                    continue;
+                                                }
+                                                var newFunction = deviceList.list.Find((obj) => obj.deviceId == localFunction.deviceId);
+
+                                                if (delFile == localFunction.savePath)
+                                                {
+                                                    i++;
+                                                    continue;
+                                                }
+                                                delFile = localFunction.savePath;
+                                                FunctionList.List.DeleteFunction(localFunction);
+                                            }
+                                        }
+                                        //澶勭悊鍓╀笅鐨勬柊澧炲姛鑳�
+                                        foreach (var newFunction in deviceList.list)
+                                        {
+                                            newFunction.SaveFunctionFile();
+                                            FunctionList.List.IniFunctionList(newFunction.savePath);
+                                        }
+                                    }
+                                    else
+                                    {
+                                        MainPage.Log($"璇诲彇浜戠璁惧鏁版嵁澶辫触:Code:{deviceResult.Code};  Msg:{deviceResult.message}");
+                                    }
+                                }
+                                #endregion
                                 //A缃戝叧璁惧鐘舵��-鍖呭惈娑傞甫璁惧
                                 else if (topic == $"/user/{DB_ResidenceData.Instance.CurrentRegion.RegionID}/app/thing/property/send")
                                 {
@@ -289,7 +424,7 @@
                                 else
                                 {
                                     //SetGatewayOnlineResetCheck();
-                                    var bytes = Securitys.EncryptionService.AesDecryptPayload(e.ApplicationMessage.Payload, mqttEncryptKey);
+                                    //var bytes = Securitys.EncryptionService.AesDecryptPayload(e.ApplicationMessage.Payload, mqttEncryptKey);
                                     //bus鏁版嵁瑙f瀽
                                     var packet = new Packet();
 
@@ -305,7 +440,7 @@
                                 }
                             }
                             catch { }
-                        });
+                        }));
                     }
 
                     //(2)DisconnectedHandler
@@ -356,7 +491,7 @@
                     Utlis.WriteLine($"StartCloudMqtt: 缁撴潫");
                 }
 
-            });
+            }));
         }
 
 

--
Gitblit v1.8.0