From 5a5a2b696866f947b6025d26c3302e8ffef46435 Mon Sep 17 00:00:00 2001
From: JLChen <551775569@qq.com>
Date: 星期一, 11 一月 2021 16:11:20 +0800
Subject: [PATCH] 2021-01-11 1.更新MQTT连接和本地搜索网关方法。2.子账号相关接口完善

---
 Crabtree/SmartHome/HDL/Operation/UserConfig.cs |  269 +++++++++++++++++++++++++++++++++++++++++------------
 1 files changed, 208 insertions(+), 61 deletions(-)

diff --git a/Crabtree/SmartHome/HDL/Operation/UserConfig.cs b/Crabtree/SmartHome/HDL/Operation/UserConfig.cs
index ac01c14..a51d781 100644
--- a/Crabtree/SmartHome/HDL/Operation/UserConfig.cs
+++ b/Crabtree/SmartHome/HDL/Operation/UserConfig.cs
@@ -7,7 +7,7 @@
     [System.Serializable]
     public class UserConfig
     {
-        static string configFile = "UserConfig";
+        public static string configFile = "UserConfig";
 
         static UserConfig instance;
         public static UserConfig Instance {
@@ -28,11 +28,19 @@
                             instance.HideDeviceTypes.Add (SimpleControl.R.MyInternationalizationString.Sensor);
                             instance.HideDeviceTypes.Add (SimpleControl.R.MyInternationalizationString.Environmental);
                             instance.HideDeviceTypes.Add (SimpleControl.R.MyInternationalizationString.MusicModel);
-                            instance.HideDeviceTypes.Add (SimpleControl.R.MyInternationalizationString.UniversalDevice);
+                            //instance.HideDeviceTypes.Add (SimpleControl.R.MyInternationalizationString.UniversalDevice);
                         } else {
                             instance = temp;
                         }
-                    } catch{}
+                    } catch{
+                        instance = new UserConfig { };
+                        instance.HideDeviceTypes.Add (SimpleControl.R.MyInternationalizationString.Projector);
+                        instance.HideDeviceTypes.Add (SimpleControl.R.MyInternationalizationString.DoorLock);
+                        instance.HideDeviceTypes.Add (SimpleControl.R.MyInternationalizationString.FreshAir);
+                        instance.HideDeviceTypes.Add (SimpleControl.R.MyInternationalizationString.Sensor);
+                        instance.HideDeviceTypes.Add (SimpleControl.R.MyInternationalizationString.Environmental);
+                        instance.HideDeviceTypes.Add (SimpleControl.R.MyInternationalizationString.MusicModel);
+                    }
                 }
                 return instance;
             }
@@ -144,83 +152,219 @@
         public Dictionary<string, string> RemoteDoorLockPasswordList = new Dictionary<string, string> ();
 
         //public string CountryCode = "CN";
+        /// <summary>
+        /// 
+        /// </summary>
         public int SkinCode = 1;
-
-
+        /// <summary>
+        /// 浣忓畢鍒楄〃
+        /// </summary>
         public List<RegionInfoRes> HomeLists = new List<RegionInfoRes> ();
-
+        /// <summary>
+        /// 褰撳墠浣忓畢
+        /// </summary>
         RegionInfoRes currentRegion = new RegionInfoRes ();
         public RegionInfoRes CurrentRegion {
             set {
                 currentRegion = value;
-                CheckIfNeedGetMasterAccountToken ();
+                //CheckIfNeedGetMasterAccountToken ();
+                //鍒囨崲浣忓畢 璁剧疆鏈湴鍔犲瘑Key
+                SetLocalEncryptKey ();
+                //娓呯┖涔嬪墠缃戝叧鐨勪俊鎭紝閲嶆柊鑾峰彇
+                HomeGateway = null;
+                GetHomeGatewayList ();
             }
             get {
+                if (currentRegion == null) {
+                    currentRegion = new RegionInfoRes ();
+                }
                 return currentRegion;
             }
-
         }
 
-        public bool CheckHomeGateways ()
+        #region HomeGateway
+        /// <summary>
+        /// 鏄惁鑾峰彇涓�
+        /// 2020-01-11 
+        /// </summary>
+        bool bGettingMac = false;
+        //public static List<string> LocalFiles = IO.FileUtils.ReadFiles ();
+        /// <summary>
+        /// 妫�鏌ユ槸鍚﹂渶瑕佽幏鍙栨帶鍒跺垎浜」鐩�(浣忓畢)璇锋眰淇℃伅
+        /// </summary>
+        /// <param name="mMainAccountId"></param>
+        /// <param name="mSharedHid"></param>
+        public void GetHomeGatewayList ()
         {
-            if (CurrentRegion != null && CurrentRegion.HomeGateways != null && CurrentRegion.HomeGateways.Count > 0) {
+            //System.Threading.Tasks.Task.Run (() => {
+            //if (bGettingMac) return;
+            HttpServerRequest.Current.GetHomeGatewayList ();
+            //});
+        }
+        /// <summary>
+        /// 缃戝叧璇︾粏淇℃伅
+        /// </summary>
+        public HomeGatewayInfo HomeGateway;
+        /// <summary>
+        /// 鏄惁鍏佽杩滅▼鎺у埗
+        /// </summary>
+        public bool AllowRemoteControl {
+            get {
+                if (HomeIsOtherShare) {
+                    //绛変簬0鏄厑璁歌繙绋嬫帶鍒�
+                    return UserConfig.Instance.CurrentRegion.isRemoteControl;
+                } else {
+                    //浣忓畢鏄嚜宸辨湰浜虹殑鍏佽鎺у埗
+                    return true;
+                }
+            }
+        }
+
+        /// <summary>
+        /// 鏄惁鏄鐞嗗憳鏉冮檺(鍙樻洿浜�,鎴愬憳鐨勬椂鍊�,杩欎釜涔熶负ture銆備负浠�涔堜細澹版槑杩欐牱鍙橀噺,鍥犱负鏈変簺鎺ュ彛蹇呴』浣跨敤鍘熸潵鐨凾oken)
+        /// </summary>
+        public bool HomeIsOtherShare {
+            get {
+                if (UserConfig.Instance == null || UserConfig.Instance.CurrentRegion == null) {
+                    return false;
+                } else {
+                    return UserConfig.Instance.CurrentRegion.IsOthreShare;
+                }
+            }
+        }
+
+        /// <summary>
+        /// 妫�娴嬩綇瀹呮槸鍚︾粦瀹氫簡缃戝叧
+        /// gatewayId 鍒ょ┖
+        /// </summary>
+        /// <returns></returns>
+        public bool CheckWhetherGatewayIdNotNull ()
+        {
+            if (HomeGateway != null && !string.IsNullOrEmpty (HomeGateway.gatewayId)) {
                 return true;
             } else {
                 return false;
             }
         }
 
+        /// <summary>
+        /// 妫�娴嬩綇瀹呮槸鍚︾粦瀹氫簡缃戝叧
+        /// </summary>
+        /// <returns></returns>
         public bool CheckHomeGatewaysNotEmpty ()
         {
-            if (CheckHomeGateways () && !string.IsNullOrEmpty (currentRegion.HomeGateways [0].GatewayUniqueId)) {
+            if (HomeGateway != null && !string.IsNullOrEmpty (HomeGateway.mac)) {
                 return true;
             } else {
                 return false;
             }
         }
 
-        //public List<GatewayRes> GatewayList = new List<GatewayRes> ();
-
-        //public List<string> GatewayMACList {
-        //    get {
-        //        List<string> macList = new List<string> ();
-        //        foreach (var mac in GatewayList) {
-        //            macList.Add (mac.GatewayUniqueId);
-        //        }
-        //        return macList;
-        //    }
-        //}
-        //public string GatewayMAC = "";
-
+        /// <summary>
+        /// 
+        /// </summary>
         public string GatewayMAC {
             get {
                 if (CheckHomeGatewaysNotEmpty ()) {
-                    return currentRegion.HomeGateways [0].GatewayUniqueId;
+                    return HomeGateway.mac;
                 } else {
                     return "";
                 }
             }
             set {
-                if (CheckHomeGateways ()) {
-                    currentRegion.HomeGateways [0].GatewayUniqueId = value;
+                if (CheckHomeGatewaysNotEmpty()) {
+                    HomeGateway.mac = value;
                 } else {
-                    if (currentRegion != null && currentRegion.HomeGateways == null) {
-                        var mHomeGateways = new HomeGateways () { GatewayUniqueId = value };
-                        List<HomeGateways> HomeGateways = new List<HomeGateways> ();
-                        HomeGateways.Add (mHomeGateways);
-                        currentRegion.HomeGateways = HomeGateways;
+                    //2020-01-11 
+                    if (HomeGateway != null) {
+                        HomeGateway.mac = value;
+                    } else {
+                        HomeGateway = new HomeGatewayInfo () { mac = value};
                     }
                 }
             }
 
         }
-        
 
-        public List<string> RometoUserInfoKeys = new List<string> ();
+        #endregion
+
+        ///// <summary>
+        ///// 鏇存柊璁剧疆褰撳墠浣忓畢缃戝叧
+        ///// 2020-01-11 
+        ///// </summary>
+        ///// <param name="mGatewayDataList"></param>
+        //public void SetNowHomeGateways (List<GatewayRes> mGatewayDataList) {
+        //    try {
+        //        if (currentRegion != null) {
+        //            if (mGatewayDataList != null && mGatewayDataList.Count > 0) {
+        //                var mMacList = new List<HomeGateways> ();
+        //                foreach (var mGatewayRes in mGatewayDataList) {
+        //                    var mac = new HomeGateways ();
+        //                    mac.GatewayUniqueId = mGatewayRes.GatewayUniqueId;
+        //                    mMacList.Add (mac);
+        //                }
+        //                //HomeGateways = mMacList;
+        //            }
+        //        }
+        //    } catch {
+
+        //    }
+        //}
+
+        //public List<string> RometoUserInfoKeys = new List<string> ();
+
+        /// <summary>
+        /// 鏈湴閫氫俊鍔犲瘑Key
+        /// </summary>
+        public string LocalEncryptKey = string.Empty;
+
+        /// <summary>
+        /// 鏄惁鍔犲瘑瀵嗙爜楠岃瘉閫氳繃
+        /// </summary>
+        public bool EncryptedPasswordCorrect = true;
+        /// <summary>
+        /// 鏄惁鍔犲瘑
+        /// </summary>
+        public bool IsLocalEncrypt = false;
+        /// <summary>
+        /// 璁剧疆涓洪粯璁ゅ姞瀵嗭紝骞惰绠楀姞瀵咾ey
+        /// </summary>
+        private void SetLocalEncryptKey ()
+        {
+            if (currentRegion != null) {
+                IsLocalEncrypt = true;
+                GenerateLocalEncryptionKey ();
+                //LocalEncryptKey = CommonPage.MyEncodingUTF8.GetString (GenerateLocalEncryptionKey ());
+            }
+        }
+
+        /// <summary>
+        /// 鑾峰彇16浣嶇殑key byte []
+        /// </summary>
+        /// <returns></returns>
+        public byte [] GenerateLocalEncryptionKey ()
+        {
+            byte [] aseKey = new byte [16];
+            try {
+                //鐢熸垚鍔犲瘑Key
+                byte [] homeId =  System.Text.Encoding.ASCII.GetBytes (currentRegion.Id);
+                Array.Copy (homeId, 0, aseKey, 0, 16 < homeId.Length ? 16 : homeId.Length);
+                LocalEncryptKey = System.Text.Encoding.ASCII.GetString (aseKey);
+                return aseKey;
+
+            } catch {
+                return aseKey;
+            }
+
+        }
 
         public string MasterAccountToken = "";
         public string MasterAccountRequestBaseUrl = "";
-
+        /// <summary>
+        /// 鏄惁鑾峰彇涓�
+        /// 2020-01-11 
+        /// </summary>
+        bool bGetting = false;
         //public static List<string> LocalFiles = IO.FileUtils.ReadFiles ();
         /// <summary>
         /// 鑾峰彇鎺у埗鍒嗕韩椤圭洰(浣忓畢)璇锋眰淇℃伅
@@ -229,34 +373,37 @@
         /// <param name="mSharedHid"></param>
         public void CheckIfNeedGetMasterAccountToken ()
         {
-            //2020-01-08 鍒ゆ柇鏄惁鍒嗕韩杩囨潵鐨勪綇瀹�
-            if (CurrentRegion != null && CurrentRegion.IsOthreShare) {
-                //MainPage.IsAdministrator = UserConfig.Instance.CurrentRegion.IsOthreShare;
-                //璇锋眰涓昏处鍙穞oken
-                System.Threading.Tasks.Task.Run (() => {
-                    try {
-                        //var mMainAccountId = UserConfig.Instance.CurrentRegion.MainUserDistributedMark;
-                        //var mSharedHid = UserConfig.Instance.CurrentRegion.Id;
-                        var requestObj = new GetSharedHomeApiControlObj () {
-                            LoginAccessToken = MainPage.LoginUser.LoginTokenString,
-                            MainAccountId = UserConfig.Instance.CurrentRegion.MainUserDistributedMark,
-                            SharedHid = UserConfig.Instance.CurrentRegion.Id,
+            if (bGetting) return;
 
-                        };
-                        var requestJson = Newtonsoft.Json.JsonConvert.SerializeObject (requestObj);
-                        var revertObj = MainPage.RequestHttps (API.GetSharedHomeApiControl, requestJson);
-                        if (revertObj.StateCode.ToUpper () == "SUCCESS") {
-                            var responseDataObj = Newtonsoft.Json.JsonConvert.DeserializeObject<MemberAdministratorResult> (revertObj.ResponseData.ToString ());
-                            if (responseDataObj != null) {
-                                MasterAccountToken = responseDataObj.RequestToken;
-                                MasterAccountRequestBaseUrl = responseDataObj.RequestBaseUrl;
-                            }
-                        }
-                    } catch {
+            ////2020-01-08 鍒ゆ柇鏄惁鍒嗕韩杩囨潵鐨勪綇瀹�
+            //if (currentRegion != null && currentRegion.IsOthreShare) {
+            //    //MainPage.IsAdministrator = UserConfig.Instance.CurrentRegion.IsOthreShare;
+            //    //璇锋眰涓昏处鍙穞oken
+            //    System.Threading.Tasks.Task.Run (() => {
+            //        try {
+            //            bGetting = true;
+            //            var requestObj = new GetSharedHomeApiControlObj () {
+            //                LoginAccessToken = MainPage.LoginUser.LoginTokenString,
+            //                MainAccountId = currentRegion.MainUserDistributedMark,
+            //                SharedHid = currentRegion.Id,
 
-                    }
-                });
-            }
+            //            };
+            //            var requestJson = Newtonsoft.Json.JsonConvert.SerializeObject (requestObj);
+            //            var revertObj = MainPage.RequestHttps (API.GetSharedHomeApiControl, requestJson);
+            //            if (revertObj.StateCode.ToUpper () == StateCode.SUCCESS) {
+            //                var responseDataObj = Newtonsoft.Json.JsonConvert.DeserializeObject<MemberAdministratorResult> (revertObj.ResponseData.ToString ());
+            //                if (responseDataObj != null) {
+            //                    MasterAccountToken = responseDataObj.RequestToken;
+            //                    MasterAccountRequestBaseUrl = responseDataObj.RequestBaseUrl;
+            //                }
+            //            }
+            //        } catch {
+
+            //        } finally {
+            //            bGetting = false;
+            //        }
+            //    });
+            //}
         }
 
         }

--
Gitblit v1.8.0