From c7df85937f73fb347ee0b19e9c052d2d00a6df6c Mon Sep 17 00:00:00 2001
From: 黄学彪 <hxb@hdlchina.com.cn>
Date: 星期五, 18 九月 2020 13:58:19 +0800
Subject: [PATCH] 新版本

---
 ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Logic/HdlGatewayLogic.cs |  163 +++++++++++++++++++++++++++++++++++-------------------
 1 files changed, 106 insertions(+), 57 deletions(-)

diff --git a/ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Logic/HdlGatewayLogic.cs b/ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Logic/HdlGatewayLogic.cs
index fc831b0..9631ac2 100755
--- a/ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Logic/HdlGatewayLogic.cs
+++ b/ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Logic/HdlGatewayLogic.cs
@@ -178,6 +178,10 @@
                     //灏嗙綉鍏崇殑鏁版嵁璁剧疆鍒版湰鍦扮紦瀛樹腑
                     this.SetGatewayDataToLocalMemmory(gateway, result);
                 }
+                if (gateway.HomeId == string.Empty)
+                {
+                    gateway.HomeId = Config.Instance.Home.Id;
+                }
                 return gateway;
             }
             catch (Exception ex)
@@ -196,7 +200,7 @@
         /// </summary>
         /// <param name="zbGateway">缃戝叧</param>
         /// <param name="mode">鏄惁鏄剧ず閿欒</param>
-        public async Task<bool> AddNewGateway(ZbGateway zbGateway, ShowErrorMode mode)
+        public bool AddNewGateway(ZbGateway zbGateway, ShowErrorMode mode)
         {
             //璁剧疆缃戝叧鐨勭粡绾害
             bool falge = this.SetGatewaySite(zbGateway, Common.Config.Instance.Home.Longitude, Common.Config.Instance.Home.Latitude, ShowErrorMode.NO);
@@ -205,7 +209,7 @@
                 return falge;
             }
             //鎵ц娣诲姞缃戝叧鍒板唴瀛�
-            var result = await this.DoAddGatewayToMemory(zbGateway, mode);
+            var result = this.DoAddGatewayToMemory(zbGateway, mode);
             //鍓嶇殑缃戝叧缁戝畾鍦ㄤ簡褰撳墠璐﹀彿涓嬬殑涓嶅悓浣忓畢閲岄潰
             if (result == 0)
             {
@@ -250,7 +254,7 @@
         /// <param name="zbGateway">缃戝叧瀵硅薄</param>
         /// <param name="mode">鏄惁鏄剧ず閿欒</param>
         /// <returns></returns>
-        private async Task<int> DoAddGatewayToMemory(ZbGateway zbGateway, ShowErrorMode mode)
+        private int DoAddGatewayToMemory(ZbGateway zbGateway, ShowErrorMode mode)
         {
             if (zbGateway == null)
             {
@@ -278,7 +282,7 @@
             //璁剧疆浣忓畢ID鍒扮綉鍏�
             if (result.HomeId != Common.Config.Instance.HomeId)
             {
-                bool flage2 = await this.SetHomeIdToGateway(zbGateway, Common.Config.Instance.HomeId, mode);
+                bool flage2 = this.SetHomeIdToGateway(zbGateway, Common.Config.Instance.HomeId, mode);
                 if (flage2 == false)
                 {
                     if (mode == ShowErrorMode.YES)
@@ -337,10 +341,28 @@
         /// <param name="zbGateway"></param>
         /// <param name="HomeId"></param>
         /// <returns></returns>
-        public async Task<bool> SetHomeIdToGateway(ZbGateway zbGateway, string HomeId, ShowErrorMode mode)
+        public bool SetHomeIdToGateway(ZbGateway zbGateway, string HomeId, ShowErrorMode mode)
         {
-            ZbGateway realWay = null;
-            if (this.GetRealGateway(ref realWay, zbGateway) == false)
+            //璐﹀彿ID
+            string accountId = string.Empty;
+            if (HomeId != string.Empty)
+            {
+                if (UserCenterResourse.UserInfo.AuthorityNo == 1)
+                {
+                    //涓昏处鍙�
+                    accountId = Config.Instance.Guid;
+                }
+                else
+                {
+                    accountId = Config.Instance.Home.MainUserDistributedMark;
+                }
+            }
+            var jObject = new Newtonsoft.Json.Linq.JObject { { "Cluster_ID", 0 }, { "Command", 82 } };
+            var data = new Newtonsoft.Json.Linq.JObject { { "HomeId", HomeId }, { "AccountId", accountId } };
+            jObject.Add("Data", data);
+            //浣忓畢ID鐨勮缃�,鍥哄畾浣跨敤灞�鍩熺綉,涓嶅瓨鍦ㄨ繙绋嬬殑璇存硶
+            var result = this.SendJobjectDataToGateway(zbGateway, "GwSetHomeId", jObject.ToString(), "GwSetHomeId_Respon", 5, true);
+            if (result.ErrorMsgDiv == -1)
             {
                 if (mode == ShowErrorMode.YES)
                 {
@@ -350,13 +372,11 @@
                 }
                 return false;
             }
-
-            var info = await realWay.GwSetHomeIdAsync(HomeId);
-            if (info != null && info.gwSetHomeIdData != null)
+            if (result.ErrorMsgDiv == 0)
             {
-                return true;
+                return false;
             }
-            return false;
+            return true;
         }
 
         /// <summary>
@@ -372,7 +392,7 @@
             //鑾峰彇鎺у埗涓讳汉璐﹀彿鐨凾oken
             bindGateway.LoginAccessToken = UserCenterLogic.GetConnectMainToken();
 
-            var result = UserCenterLogic.GetResultCodeByRequestHttps("App/BindGatewayToHome", true, bindGateway, new List<string> { "NotCheck" });
+            var result = UserCenterLogic.GetResultCodeByRequestHttps("App/BindGatewayToHome", true, bindGateway, new List<string> { "NotCheck" }, false);
             if (result == "Error")
             {
                 return -1;
@@ -418,7 +438,7 @@
         /// </summary>
         /// <param name="zbGateway">缃戝叧</param>
         /// <param name="btnMsg">娑堟伅鎺т欢</param>
-        public async Task<int> ReBindNewGateway(ZbGateway zbGateway, NormalViewControl btnMsg = null)
+        public int ReBindNewGateway(ZbGateway zbGateway, NormalViewControl btnMsg = null)
         {
             if (zbGateway == null)
             {
@@ -435,7 +455,7 @@
             }
 
             //璁剧疆浣忓畢ID鍒扮綉鍏�
-            bool flage2 = await this.SetHomeIdToGateway(zbGateway, Common.Config.Instance.HomeId, ShowErrorMode.YES);
+            bool flage2 = this.SetHomeIdToGateway(zbGateway, Common.Config.Instance.HomeId, ShowErrorMode.YES);
             if (flage2 == false)
             {
                 //鍚戠綉鍏宠缃綇瀹匢D澶辫触
@@ -470,7 +490,7 @@
                     btnMsg.TextID = R.MyInternationalizationString.uGatewayDataIsChangingPleaseWhait;
                 });
             }
-            await Task.Delay(8000);
+            System.Threading.Thread.Sleep(8000);
 
             //鑾峰彇缃戝叧鐨勪俊鎭�
             ZbGatewayData.GetGwData result = null;
@@ -484,7 +504,7 @@
                 }
                 count--;
                 //鏈�澶氬啀绛�20绉�
-                await Task.Delay(4000);
+                System.Threading.Thread.Sleep(4000);
             }
             if (result == null)
             {
@@ -579,12 +599,10 @@
         /// 鎵ц鍒囨崲缃戝叧鎿嶄綔
         /// </summary>
         /// <param name="gatewayId"></param>
-        public async Task<bool> DoSwitchGateway(string gatewayId)
+        public bool DoSwitchGateway(string gatewayId)
         {
-            var zbGateway = this.GetLocalGateway(gatewayId);
-
             //閲嶆柊鑾峰彇鍦ㄧ嚎缃戝叧鐨勪俊鎭�
-            var result = await this.GetOnlineGatewayInfo(gatewayId);
+            var result = this.GetOnlineGatewayInfo(gatewayId);
             if (result == false)
             {
                 return false;
@@ -603,7 +621,7 @@
         /// </summary>
         /// <param name="gatewayId"></param>
         /// <returns></returns>
-        private async Task<bool> GetOnlineGatewayInfo(string gatewayId)
+        private bool GetOnlineGatewayInfo(string gatewayId)
         {
             //鏄剧ず杩涘害鏉�
             ProgressBar.Show();
@@ -616,7 +634,7 @@
                 //閲嶆柊璁剧疆浣忓畢ID(杩欎釜搴旇鏄笉缁忚繃APP,鐩存帴鎶婄綉鍏虫仮澶嶄簡鍑哄巶璁剧疆)
                 if (this.HomeIdIsEmpty(realWay.HomeId) == true)
                 {
-                    int result2 = await this.ReBindNewGateway(realWay);
+                    int result2 = this.ReBindNewGateway(realWay);
                     if (result2 == 0)
                     {
                         //鍑虹幇鏈煡閿欒,璇风◢鍚庡啀璇�
@@ -645,6 +663,11 @@
                     ProgressBar.Close();
                     return false;
                 }
+            }
+            //鍒锋柊鍏ㄩ儴鍦烘櫙
+            if (this.IsMainGateway(realWay) == 1)
+            {
+                HdlSceneLogic.Current.RefreshSceneUIList(false);
             }
 
             //鑾峰彇鍏ㄩ儴璁惧
@@ -675,25 +698,15 @@
         /// <summary>
         /// 鍒犻櫎缃戝叧锛屽寘鎷簯绔拰鏈湴(澶辫触鏃朵笉浼氭樉绀轰俊鎭紝骞朵笖浼氳繑鍥瀟rue)
         /// </summary>
-        /// <param name="zbGateway"></param>
-        public async Task<bool> DeleteGateway(ZbGateway zbGateway)
-        {
-            //绉婚櫎鏈湴缃戝叧淇℃伅
-            return await this.DeleteGateway(zbGateway.GwId);
-        }
-
-        /// <summary>
-        /// 鍒犻櫎缃戝叧锛屽寘鎷簯绔拰鏈湴(澶辫触鏃朵笉浼氭樉绀轰俊鎭紝骞朵笖浼氳繑鍥瀟rue)
-        /// </summary>
         /// <param name="zbGatewayID"></param>
-        public async Task<bool> DeleteGateway(string zbGatewayID)
+        public bool DeleteGateway(string zbGatewayID)
         {
             ZbGateway realWay = null;
             this.GetRealGateway(ref realWay, zbGatewayID);
             //娓呯┖缃戝叧鐨勪綇瀹匢D 缃戝叧瑙g粦澶辫触  涓嶇悊瀹�,鍥犱负缃戝叧鍙互鎸夋寜閿己鍒舵悳绱㈠緱鍒�
             if (realWay != null)
             {
-                await this.SetHomeIdToGateway(realWay, string.Empty, ShowErrorMode.NO);
+                this.SetHomeIdToGateway(realWay, string.Empty, ShowErrorMode.NO);
             }
 
             //鍒犻櫎浜戠鐨勭綉鍏�
@@ -1487,24 +1500,39 @@
 
         #endregion
 
-        #region 鈻� 娓呯┖鐪熷疄缃戝叧鍒楄〃___________________
+        #region 鈻� 娓呯┖鐪熷疄缃戝叧閾炬帴___________________
 
         /// <summary>
-        /// 娓呯┖鍏ㄩ儴鐨勭湡瀹炵墿鐞嗙綉鍏冲璞�
+        /// 娓呯┖鍏ㄩ儴鐨勭湡瀹炵墿鐞嗙綉鍏崇殑閾炬帴
         /// </summary>
-        public void ClearAllRealGateway()
+        /// <param name="roadGateway">鏄惁鍔犺浇鏈湴鐨勭綉鍏冲璞″埌鐪熷疄鍒楄〃涓�</param>
+        public void ClearAllRealGatewayConection(bool roadGateway)
         {
-            //鍥犱负閭d竴鐬棿锛屾湁鍙兘mqtt浼氬姞鍥炴潵,鎵�浠ュ厛鍔犵紦瀛�
-            var list = new List<ZbGateway>();
-            list.AddRange(ZbGateway.GateWayList);
-            //鐒跺悗娓呯┖鎺�
-            ZbGateway.GateWayList.Clear();
-            //鏈�鍚庡啀鏂紑mqtt杩炴帴
-            for (int i = 0; i < list.Count; i++)
+            //鏂紑mqtt杩炴帴(鍗充娇淇濆瓨鍦ㄥ唴瀛樺綋涓篃娌¢棶棰�,鍥犱负濡傛灉骞挎挱涓嶅埌,鍒欏畠涓嶄細寤虹珛閾炬帴)
+            for (int i = 0; i < ZbGateway.GateWayList.Count; i++)
             {
-                list[i].DisConnectLocalMqttClient("G");
+                ZbGateway.GateWayList[i].DisConnectLocalMqttClient("G");
             }
-            list.Clear();
+            //鍔犺浇鏈湴缃戝叧瀵硅薄
+            if (roadGateway == true)
+            {
+                List<string> listFile = this.GetAllGatewayFile();
+                //鍙嶅簭鍒楀寲娣诲姞鍒扮紦瀛�
+                foreach (string file in listFile)
+                {
+                    //浠庢枃浠朵腑鍙嶅簭鍒楀寲鍑虹綉鍏冲璞�
+                    var gateway = this.GetGatewayFromFile(file);
+                    if (gateway == null)
+                    {
+                        continue;
+                    }
+                    var tempWay = ZbGateway.GateWayList.Find(obj => (obj != null) && (obj.GwId == gateway.GwId));
+                    if (tempWay == null)
+                    {
+                        ZbGateway.GateWayList.Add(gateway);
+                    }
+                }
+            }
         }
 
         #endregion
@@ -1519,6 +1547,11 @@
         /// <returns></returns>
         public List<FirmwareVersionInfo> GetGatewayAllNewVersion(ZbGateway zbGateway, ShowErrorMode mode = ShowErrorMode.YES)
         {
+            //濡傛灉鏄睍绀烘ā鏉�,鎴栬�呮槸铏氭嫙浣忓畢鐨勮瘽,娌℃湁浠�涔堟柊鐗堟湰鐨勮娉�
+            if (Common.Config.Instance.Home.IsVirtually == true || Common.Config.Instance.Home.IsShowTemplate == true)
+            {
+                return new List<FirmwareVersionInfo> { null, null, null };
+            }
             //鑾峰彇缃戝叧鐗堟湰淇℃伅
             var result = this.GetGatewayInfo(zbGateway, false, mode);
             if (result == null)
@@ -1541,7 +1574,7 @@
             if (flage == 1)
             {
                 //娌$綉鐨勬椂鍊欎笉鍐嶅鐞�
-                HdlFirmwareUpdateLogic.AddFirmwareVersionInfo(FirmwareLevelType.Coordinator,
+                HdlFirmwareUpdateLogic.AddFirmwareVersionInfo(FirmwareLevelType.A鍗忚皟鍣�,
                     localWay.CoordinatorHardVersion.ToString(),
                     localWay.CoordinatorImageId.ToString());
             }
@@ -1553,7 +1586,7 @@
                 localWay.LinuxFirmwareVersion);
 
             //鍗忚皟鍣ㄧ増鏈�
-            var coordinatorFirmware = HdlFirmwareUpdateLogic.GetFirmwareMostVersionInfo(FirmwareLevelType.Coordinator,
+            var coordinatorFirmware = HdlFirmwareUpdateLogic.GetFirmwareMostVersionInfo(FirmwareLevelType.A鍗忚皟鍣�,
                 localWay.CoordinatorHardVersion.ToString(),
                 localWay.CoordinatorImageId.ToString(),
                 localWay.CoordinatorFirmwareVersion);
@@ -1571,13 +1604,13 @@
                     //娣诲姞铏氭嫙椹卞姩鐨勫崌绾у浐浠�(鎴愪笉鎴愬姛閮芥棤鎵�璋�) 蹇呴』鑳藉鑱旂綉鎵嶈
                     if (flage == 1)
                     {
-                        HdlFirmwareUpdateLogic.AddFirmwareVersionInfo(FirmwareLevelType.VirtualDevice,
+                        HdlFirmwareUpdateLogic.AddFirmwareVersionInfo(FirmwareLevelType.A铏氭嫙椹卞姩,
                            data.DriveHwVersion.ToString(),
                            data.DriveImageType.ToString());
                     }
 
                     //铏氭嫙椹卞姩
-                    var virtualFirmware = HdlFirmwareUpdateLogic.GetFirmwareMostVersionInfo(FirmwareLevelType.VirtualDevice,
+                    var virtualFirmware = HdlFirmwareUpdateLogic.GetFirmwareMostVersionInfo(FirmwareLevelType.A铏氭嫙椹卞姩,
                         data.DriveHwVersion.ToString(),
                         data.DriveImageType.ToString(),
                         data.DriveFwVersion);
@@ -1604,6 +1637,13 @@
         /// <returns></returns>
         public List<ZbGatewayData.DriveCodeObj> GetListVDDriveCode(ZbGateway zbGateway)
         {
+            //濡傛灉鏄睍绀烘ā鏉�,鎴栬�呮槸铏氭嫙浣忓畢鐨勮瘽,鐩存帴鍙栫紦瀛�
+            if (Common.Config.Instance.Home.IsVirtually == true || Common.Config.Instance.Home.IsShowTemplate == true)
+            {
+                //鍙栨湰鍦板璞�
+                var localgw = this.GetLocalGateway(zbGateway.GwId);
+                return localgw != null ? zbGateway.DriveCodeList : zbGateway.DriveCodeList;
+            }
             var jObject = new Newtonsoft.Json.Linq.JObject { { "Cluster_ID", 0 }, { "Command", 505 } };
             var result = this.SendJobjectDataToGateway(zbGateway, "VirtualDrive/CatDriveCode", jObject.ToString(), "VirtualDrive/CatDriveCode_Respon");
             if (result.ErrorMsg != null)
@@ -1639,12 +1679,16 @@
         /// <returns></returns>
         public int IsMainGateway(string waiID)
         {
-            ZbGateway zbGateway = null;
-            if (this.GetRealGateway(ref zbGateway, waiID) == false)
+            var realWay = ZbGateway.GateWayList.Find((obj) =>
+            {
+                return obj.GwId == waiID;
+            });
+            //铏氭嫙缃戝叧涔熻繑鍥� 0
+            if (realWay == null || realWay.IsVirtual == true)
             {
                 return 0;
             }
-            return zbGateway.IsMainGateWay == true ? 1 : 2;
+            return realWay.IsMainGateWay == true ? 1 : 2;
         }
 
         #endregion
@@ -1811,7 +1855,7 @@
                 //鑾峰彇鎺у埗涓讳汉璐﹀彿鐨凾oken
                 pra.ReqDto.LoginAccessToken = UserCenterLogic.GetConnectMainToken();
 
-                var result = UserCenterLogic.GetResponseDataByRequestHttps("App/GetSingleHomeGatewayPagger", true, pra, list);
+                var result = UserCenterLogic.GetResponseDataByRequestHttps("App/GetSingleHomeGatewayPagger", true, pra, list, false);
                 if (string.IsNullOrEmpty(result) == true)
                 {
                     canBreak = true;
@@ -1867,6 +1911,11 @@
                     this.ShowTipMsg(msg);
                 }
                 return false;
+            }
+            if (((decimal)Longitude) == 0 && ((decimal)Latitude) == 0)
+            {
+                //娌℃湁閰嶇疆杩囩粡绾害
+                return true;
             }
 
             int result = -1;
@@ -1943,7 +1992,7 @@
 
             List<string> listNotShowError = new List<string>() { "NoExist", "NoBind", "NoRecord", "NotCheck" };
 
-            bool result = UserCenterLogic.GetResultStatuByRequestHttps("App/ReleaseGatewayToHome", true, Pra, listNotShowError);
+            bool result = UserCenterLogic.GetResultStatuByRequestHttps("App/ReleaseGatewayToHome", true, Pra, listNotShowError, false);
             if (result == false)
             {
                 return false;
@@ -1996,7 +2045,7 @@
                 {
                     bindGateway.BindGateways.Clear();
                     bindGateway.BindGateways.Add(gwId);
-                    var result = UserCenterLogic.GetResultCodeByRequestHttps("App/BindGatewayToHome", true, bindGateway, new List<string> { "NotCheck" });
+                    var result = UserCenterLogic.GetResultCodeByRequestHttps("App/BindGatewayToHome", true, bindGateway, new List<string> { "NotCheck" }, false);
                     if (result == "Success")
                     {
                         this.listBackupGwId.Remove(gwId);

--
Gitblit v1.8.0