JLChen
2021-01-05 f500e14c0a994487070380c50c85e0929cbc8e63
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,7 +28,7 @@
                            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;
                        }
@@ -154,9 +154,17 @@
            set {
                currentRegion = value;
                CheckIfNeedGetMasterAccountToken ();
                //切换住宅 设置本地加密Key
                SetLocalEncryptKey ();
            }
            get {
                if (currentRegion == null) {
                    currentRegion = new RegionInfoRes ();
                }
                return currentRegion;
            }
        }
@@ -213,23 +221,100 @@
                if (CheckHomeGateways ()) {
                    currentRegion.HomeGateways [0].GatewayUniqueId = value;
                } else {
                    if (currentRegion != null && currentRegion.HomeGateways == null) {
                    //2020-01-11
                    if (currentRegion != null) {
                        var mHomeGateways = new HomeGateways () { GatewayUniqueId = value };
                        List<HomeGateways> HomeGateways = new List<HomeGateways> ();
                        HomeGateways.Add (mHomeGateways);
                        currentRegion.HomeGateways = HomeGateways;
                        var mList = new List<HomeGateways> ();
                        mList.Add (mHomeGateways);
                        currentRegion.HomeGateways = mList;
                    }
                }
            }
        }
        /// <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);
                        }
                        currentRegion.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>
        /// 设置为默认加密,并计算加密Key
        /// </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>
        /// 获取控制分享项目(住宅)请求信息
@@ -238,18 +323,19 @@
        /// <param name="mSharedHid"></param>
        public void CheckIfNeedGetMasterAccountToken ()
        {
            if (bGetting) return;
            //2020-01-08 判断是否分享过来的住宅
            if (CurrentRegion != null && CurrentRegion.IsOthreShare) {
            if (currentRegion != null && currentRegion.IsOthreShare) {
                //MainPage.IsAdministrator = UserConfig.Instance.CurrentRegion.IsOthreShare;
                //请求主账号token
                System.Threading.Tasks.Task.Run (() => {
                    try {
                        //var mMainAccountId = UserConfig.Instance.CurrentRegion.MainUserDistributedMark;
                        //var mSharedHid = UserConfig.Instance.CurrentRegion.Id;
                        bGetting = true;
                        var requestObj = new GetSharedHomeApiControlObj () {
                            LoginAccessToken = MainPage.LoginUser.LoginTokenString,
                            MainAccountId = UserConfig.Instance.CurrentRegion.MainUserDistributedMark,
                            SharedHid = UserConfig.Instance.CurrentRegion.Id,
                            MainAccountId = currentRegion.MainUserDistributedMark,
                            SharedHid = currentRegion.Id,
                        };
                        var requestJson = Newtonsoft.Json.JsonConvert.SerializeObject (requestObj);
@@ -263,6 +349,8 @@
                        }
                    } catch {
                    } finally {
                        bGetting = false;
                    }
                });
            }