From 365eadb33ee86b05ac74d408025d102a758c2efd Mon Sep 17 00:00:00 2001
From: 陈嘉乐 <cjl@hdlchina.com.cn>
Date: 星期五, 10 一月 2020 15:27:17 +0800
Subject: [PATCH] 2020-01-10 2020-01-10 1.修改切换本地和远程问题。 2.修改判断住宅网关方案。 3.其它优化修改。

---
 Crabtree/SmartHome/UI/SimpleControl/Phone/Guide/GuideSettingGateway.cs |  169 ++++++++++++++++++++++++++++++++++++++++++++------------
 1 files changed, 133 insertions(+), 36 deletions(-)

diff --git a/Crabtree/SmartHome/UI/SimpleControl/Phone/Guide/GuideSettingGateway.cs b/Crabtree/SmartHome/UI/SimpleControl/Phone/Guide/GuideSettingGateway.cs
index 2b4e0ac..ff4698b 100644
--- a/Crabtree/SmartHome/UI/SimpleControl/Phone/Guide/GuideSettingGateway.cs
+++ b/Crabtree/SmartHome/UI/SimpleControl/Phone/Guide/GuideSettingGateway.cs
@@ -1009,7 +1009,7 @@
                 //byte [] currentRegionIdBytes = CommonPage.MyEncodingGB2312.GetBytes (UserConfig.Instance.CurrentRegion.RegionID);
                 byte [] currentRegionIdBytes = CommonPage.MyEncodingGB2312.GetBytes (UserConfig.Instance.CurrentRegion.Id.ToString ());
                 byte [] sendBytes = new byte [36];
-                Array.Copy (currentRegionIdBytes, 0, sendBytes, 2, 36 < currentRegionIdBytes.Length ? 36 : currentRegionIdBytes.Length);
+                Array.Copy (currentRegionIdBytes, 0, sendBytes, 0, 36 < currentRegionIdBytes.Length ? 36 : currentRegionIdBytes.Length);
 
                 //var currentRegionIdBytes = Utlis.IntToByteArray (UserConfig.Instance.CurrentRegion.RegionID);
                 var bindReginIdStatus = Control.ControlBytesSendHasReturn (Command.Write_APP_Data_STORE_1D5E_CMD, gatewayDeicve.SubnetID, gatewayDeicve.DeviceID, sendBytes);
@@ -1044,28 +1044,42 @@
             var gatewayMAC = gatewayDeicve.MAC.Replace (".", "");
             var oldMac = "";
             if (UserConfig.Instance.CheckHomeGateways () && !string.IsNullOrEmpty (UserConfig.Instance.CurrentRegion.HomeGateways [0].GatewayUniqueId)) {
+
+
                 //淇敼MAC鎺ュ彛
                 oldMac = UserConfig.Instance.CurrentRegion.HomeGateways [0].GatewayUniqueId;
+                if(oldMac == gatewayMAC) {//鍜岀粦瀹歮ac涓�鑷达紝涓嶇敤淇敼
+                    AddMacToUserConfig (gatewayMAC);
+                    return;
+                }
+
                 var mUpdateMacObj = new UpdateMacObj () {
                     LoginAccessToken = MainPage.LoginUser.LoginTokenString,
                     HomeId = UserConfig.Instance.CurrentRegion.Id,
                     NewMac = gatewayMAC,
                     OldMac = oldMac
                 };
+                string urlHead = MainPage.RequestHttpsHost;
+                if (mUpdateMacObj.IsOtherAccountCtrl) {
+                    urlHead = UserConfig.Instance.MasterAccountRequestBaseUrl;
+                    mUpdateMacObj.LoginAccessToken = UserConfig.Instance.MasterAccountToken;
+                }
+
                 var requestJson = Newtonsoft.Json.JsonConvert.SerializeObject (mUpdateMacObj);
 
                 //var requestJson = Newtonsoft.Json.JsonConvert.SerializeObject (new EditMACByHomeId { RegionID = UserConfig.Instance.CurrentRegion.Id, MAC = gatewayMAC, IsReBind = true });
-                var respone = MainPage.RequestHttps (API.UpdateMac, requestJson);
+                var respone = MainPage.RequestHttps (API.UpdateMac, requestJson, urlHead);
                 if (respone.StateCode.ToUpper () != "SUCCESS") {
                     Application.RunOnMainThread (() => {
-                        new Alert ("", "Communication abnormality,gateway failed to bind residence!", Language.StringByID (R.MyInternationalizationString.Close)).Show ();
+                        new Alert ("", "Failed to update Mac address, gateway binding failed!", Language.StringByID (R.MyInternationalizationString.Close)).Show ();
                         if (MainPage.LoginUser.AccountString == "464027401@qq.com") {
                             new Alert (respone.StateCode, respone.ErrorInfo, Language.StringByID (R.MyInternationalizationString.Close)).Show ();
                         }
                     });
                     return;
                 }
-                GetAllBindGatewarysPagger ();
+                //GetNowHomeGateway ();
+                AddMacToUserConfig (gatewayMAC);
             } else {
                 //璧版柊缁戝畾鎺ュ彛
                 var mBindMacObj = new BindGatewayToHomeObj () {
@@ -1074,57 +1088,140 @@
 
                 };
                 mBindMacObj.BindGateways.Add (gatewayMAC);
+                string urlHead = MainPage.RequestHttpsHost;
+                if (mBindMacObj.IsOtherAccountCtrl) {
+                    urlHead = UserConfig.Instance.MasterAccountRequestBaseUrl;
+                    mBindMacObj.LoginAccessToken = UserConfig.Instance.MasterAccountToken;
+                }
+
 
                 var requestJson = Newtonsoft.Json.JsonConvert.SerializeObject (mBindMacObj);
 
                 //var requestJson = Newtonsoft.Json.JsonConvert.SerializeObject (new EditMACByHomeId { RegionID = UserConfig.Instance.CurrentRegion.Id, MAC = gatewayMAC, IsReBind = true });
-                var respone = MainPage.RequestHttps (API.BindGatewayToHome, requestJson);
+                var respone = MainPage.RequestHttps (API.BindGatewayToHome, requestJson, urlHead);
                 if (respone.StateCode.ToUpper () != "SUCCESS" && respone.StateCode != "BindGatewaysExists") {
                     Application.RunOnMainThread (() => {
-                        new Alert ("", "Communication abnormality,gateway failed to bind residence!", Language.StringByID (R.MyInternationalizationString.Close)).Show ();
+                        new Alert ("", "Failed to bind Mac address, gateway binding failed!", Language.StringByID (R.MyInternationalizationString.Close)).Show ();
                         if (MainPage.LoginUser.AccountString == "464027401@qq.com") {
                             new Alert (respone.StateCode, respone.ErrorInfo, Language.StringByID (R.MyInternationalizationString.Close)).Show ();
                         }
                     });
                     return;
                 }
-                GetAllBindGatewarysPagger ();
-
+                //GetNowHomeGateway ();
+                AddMacToUserConfig (gatewayMAC);
             }
 
         }
 
-        void GetAllBindGatewarysPagger () {
-            var gatewayListObj = new GetAllBindGatewarysPaggerObj ();
-            gatewayListObj.ReqDto.LoginAccessToken = MainPage.LoginUser.LoginTokenString;
-            var gatewayListJson = Newtonsoft.Json.JsonConvert.SerializeObject (gatewayListObj);
-            var gatewayListRevertObj = MainPage.RequestHttps (API.GetAllBindGatewarysPagger, gatewayListJson);
-            if (gatewayListRevertObj.StateCode.ToUpper () == "SUCCESS") {
-                var mGateRes = Newtonsoft.Json.JsonConvert.DeserializeObject<AllBindGatewarysPaggerRes> (gatewayListRevertObj.ResponseData.ToString ());
-                var responseGatewayDataObj = mGateRes.PageData;
-                if (responseGatewayDataObj.Count > 0) {
-                    UserConfig.Instance.GatewayList.Clear ();
-                    UserConfig.Instance.GatewayList.AddRange (responseGatewayDataObj);
-                    UserConfig.Instance.GatewayMAC = gatewayDeicve.MAC;
-                    UserConfig.Instance.SaveUserConfig ();
-                    MainPage.LoginUser.LastTime = DateTime.Now;
-                    Application.RunOnMainThread (() => {
-                        UserMiddle.Init (true);
-                    });
-                } else {
-                    Application.RunOnMainThread (() => {
-                        new Alert ("", "Communication abnormality,gateway failed to bind residence.Please try again.", Language.StringByID (R.MyInternationalizationString.Close)).Show ();
-                        if (MainPage.LoginUser.AccountString == "464027401@qq.com") {
-                            new Alert ("22:" + gatewayListRevertObj.StateCode, gatewayListRevertObj.ErrorInfo, Language.StringByID (R.MyInternationalizationString.Close)).Show ();
-                        }
-                    });
-                }
-            } else {
+        //void GetAllBindGatewarysPagger ()
+        //{
+        //    var gatewayListObj = new GetAllBindGatewarysPaggerObj ();
+        //    gatewayListObj.ReqDto.LoginAccessToken = MainPage.LoginUser.LoginTokenString;
+        //    var gatewayListJson = Newtonsoft.Json.JsonConvert.SerializeObject (gatewayListObj);
+        //    var gatewayListRevertObj = MainPage.RequestHttps (API.GetAllBindGatewarysPagger, gatewayListJson);
+        //    if (gatewayListRevertObj.StateCode.ToUpper () == "SUCCESS") {
+        //        var mGateRes = Newtonsoft.Json.JsonConvert.DeserializeObject<AllBindGatewarysPaggerRes> (gatewayListRevertObj.ResponseData.ToString ());
+        //        var responseGatewayDataObj = mGateRes.PageData;
+        //        if (responseGatewayDataObj.Count > 0) {
+        //            UserConfig.Instance.GatewayList.Clear ();
+        //            UserConfig.Instance.GatewayList.AddRange (responseGatewayDataObj);
+        //            UserConfig.Instance.GatewayMAC = gatewayDeicve.MAC;
+        //            UserConfig.Instance.SaveUserConfig ();
+        //            MainPage.LoginUser.LastTime = DateTime.Now;
+        //            Application.RunOnMainThread (() => {
+        //                UserMiddle.Init (true);
+        //            });
+        //        } else {
+        //            Application.RunOnMainThread (() => {
+        //                new Alert ("", "Communication abnormality, gateway failed to bind residence.Please try again.", Language.StringByID (R.MyInternationalizationString.Close)).Show ();
+        //                if (MainPage.LoginUser.AccountString == "464027401@qq.com") {
+        //                    new Alert ("22:" + gatewayListRevertObj.StateCode, gatewayListRevertObj.ErrorInfo, Language.StringByID (R.MyInternationalizationString.Close)).Show ();
+        //                }
+        //            });
+        //        }
+        //    } else {
 
-                ShowGetAllBindGatewarysPaggerErrorInfo (gatewayListRevertObj.StateCode);
-            }
+        //        ShowGetAllBindGatewarysPaggerErrorInfo (gatewayListRevertObj.StateCode);
+        //    }
+
+        //}
+
+        /// <summary>
+        /// 淇敼鍒囨崲鏈湴浣忓畢 缃戝叧
+        /// </summary>
+        void AddMacToUserConfig (string gatewayMAC)
+        {
+         
+            UserConfig.Instance.GatewayMAC = gatewayMAC;
+            UserConfig.Instance.SaveUserConfig ();
+            MainPage.LoginUser.LastTime = DateTime.Now;
+            Application.RunOnMainThread (() => {
+                bodyView.RemoveAll ();
+                UserMiddle.Init (true);
+            });
+
         }
 
+        ///// <summary>
+        ///// 鏌ヨ褰撳墠浣忓畢 缃戝叧鍒楄〃
+        ///// </summary>
+        //void GetNowHomeGateway ()
+        //{
+
+        //    var requestObj3 = new GetSingleHomeGatewayPaggerObj ();
+        //    requestObj3.ReqDto.LoginAccessToken = MainPage.LoginUser.LoginTokenString;
+        //    requestObj3.ReqDto.HomeId = UserConfig.Instance.CurrentRegion.Id;
+        //    requestObj3.ReqDto.PageSetting.Page = 1;
+        //    requestObj3.ReqDto.PageSetting.PageSize = 999;
+        //    string urlHead = MainPage.RequestHttpsHost;
+        //    if (requestObj3.IsOtherAccountCtrl) {
+        //        urlHead = UserConfig.Instance.MasterAccountRequestBaseUrl;
+        //        requestObj3.ReqDto.LoginAccessToken = UserConfig.Instance.MasterAccountToken;
+        //    }
+
+
+        //    //var requestObj3 = new GatewayByRegionListObj () { RegionID = UserConfig.Instance.CurrentRegion.Id };
+        //    var requestJson3 = Newtonsoft.Json.JsonConvert.SerializeObject (requestObj3);
+        //    var revertObj3 = MainPage.RequestHttps (API.GetSingleHomeGatewayPagger, requestJson3, urlHead);
+        //    if (revertObj3.StateCode.ToUpper () == "SUCCESS") {
+        //        var infoResult = Newtonsoft.Json.JsonConvert.DeserializeObject<GetGatewayResult> (revertObj3.ResponseData.ToString ());
+        //        var responseGatewayDataObj = infoResult.PageData;
+        //        if (responseGatewayDataObj != null && responseGatewayDataObj.Count > 0) {
+
+        //            UserConfig.Instance.GatewayList.Clear ();
+        //            UserConfig.Instance.GatewayList.AddRange (responseGatewayDataObj);
+        //            UserConfig.Instance.GatewayMAC = gatewayDeicve.MAC;
+        //            UserConfig.Instance.SaveUserConfig ();
+        //            MainPage.LoginUser.LastTime = DateTime.Now;
+        //            Application.RunOnMainThread (() => {
+        //                bodyView.RemoveAll ();
+        //                UserMiddle.Init (true);
+        //            });
+        //        } else {
+        //            Application.RunOnMainThread (() => {
+        //                new Alert ("", "Query gateway failed, gateway failed to bind residence.Please try again.", Language.StringByID (R.MyInternationalizationString.Close)).Show ();
+        //                if (MainPage.LoginUser.AccountString == "464027401@qq.com") {
+        //                    new Alert ("22:" + revertObj3.StateCode, revertObj3.ErrorInfo, Language.StringByID (R.MyInternationalizationString.Close)).Show ();
+        //                }
+        //            });
+        //        }
+        //    } else {
+
+        //        Application.RunOnMainThread (() => {
+        //            new Alert ("", "Query gateway failed, gateway failed to bind residence.Please try again.", Language.StringByID (R.MyInternationalizationString.Close)).Show ();
+        //            if (MainPage.LoginUser.AccountString == "464027401@qq.com") {
+        //                new Alert ("22:" + revertObj3.StateCode, revertObj3.ErrorInfo, Language.StringByID (R.MyInternationalizationString.Close)).Show ();
+        //            }
+        //        });
+        //    }
+
+
+        //}
+
+
+
+
         /// <summary>
         /// 
         /// </summary>

--
Gitblit v1.8.0