using System; using System.Collections.Generic; using Shared.SimpleControl; namespace Shared { [System.Serializable] public class UserConfig { public static string configFile = "UserConfig"; static UserConfig instance; public static UserConfig Instance { get { if (instance == null) { try { var userConfigBytes = IO.FileUtils.ReadFile (configFile); var userConfigString = CommonPage.MyEncodingUTF8.GetString (userConfigBytes); UserConfig temp = null; if (userConfigString != null) { temp = Newtonsoft.Json.JsonConvert.DeserializeObject (userConfigString); } if (temp == null) { 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); //instance.HideDeviceTypes.Add (SimpleControl.R.MyInternationalizationString.UniversalDevice); } else { instance = temp; } } 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; } } public int internetStatus = 2; byte [] GetUserConfigBytes () { return CommonPage.MyEncodingUTF8.GetBytes (Newtonsoft.Json.JsonConvert.SerializeObject (this)); } public void RefreshUserConfig () { instance = null; } public void SaveUserConfig () { IO.FileUtils.WriteFileByBytes (configFile, GetUserConfigBytes ()); } //public void RefeshUserConfig() //{ //} /// /// 存放不用调光功能的调光设备 /// public List UnEnableDimmingLight = new List (); /// /// 插座开关列表 /// public List SocketList = new List (); /// /// 手机appID /// public string tokenID = string.Empty; /// /// 手机别名 /// public string phoneName = string.Empty; /// /// 用户界面进入时是否显示的是全局场景界面 /// public bool SceneOfGloba = false; /// /// 保存远程连接的网络设备文件名 /// public string RemoteModeFile = string.Empty; /// /// 是否展开房间灯光列表 /// public bool ShowRoomLightList = true; /// /// 是否展开房间窗帘列表 /// public bool ShowRoomCurtainList = true; /// /// 隐藏没有场景的房间 /// public bool HideInvalidRoomScene = false; public List HideDeviceTypes = new List (); public Dictionary SkinVision = new Dictionary (); public Dictionary DowlaodSkinVision = new Dictionary (); /// /// 当前使用的皮肤 /// public string CurrentSkinName { get { string skinPath = "Phone"; if (SkinCode == 0) { skinPath = "Phone"; } else if (SkinCode == 1) { skinPath = "Phone2"; } return skinPath; } } public string VersionNumber { get { return MainPage.RequestVersion; } } public string TipVersionBackup = string.Empty; /// /// 安防密码 /// public string ArmPW = "85521566"; /// /// 是否显示场景列表 /// public bool ShowAlternativeScene = true; //门锁密码保存 public Dictionary RemoteDoorLockPasswordList = new Dictionary (); //public string CountryCode = "CN"; /// /// /// public int SkinCode = 1; /// /// 住宅列表 /// public List HomeLists = new List (); /// /// 当前住宅 /// RegionInfoRes currentRegion = new RegionInfoRes (); public RegionInfoRes CurrentRegion { set { currentRegion = value; //CheckIfNeedGetMasterAccountToken (); //切换住宅 设置本地加密Key SetLocalEncryptKey (); //清空之前网关的信息,重新获取 HomeGateway = null; GetHomeGatewayList (); } get { if (currentRegion == null) { currentRegion = new RegionInfoRes (); } return currentRegion; } } #region HomeGateway /// /// 是否获取中 /// 2020-01-11 /// bool bGettingMac = false; //public static List LocalFiles = IO.FileUtils.ReadFiles (); /// /// 检查是否需要获取控制分享项目(住宅)请求信息 /// /// /// public void GetHomeGatewayList () { //System.Threading.Tasks.Task.Run (() => { //if (bGettingMac) return; HttpServerRequest.Current.GetHomeGatewayList (); //}); } /// /// 网关详细信息 /// public HomeGatewayInfo HomeGateway; /// /// 是否允许远程控制 /// public bool AllowRemoteControl { get { if (HomeIsOtherShare) { //等于0是允许远程控制 return UserConfig.Instance.CurrentRegion.isRemoteControl; } else { //住宅是自己本人的允许控制 return true; } } } /// /// 是否是管理员权限(变更了,成员的时候,这个也为ture。为什么会声明这样变量,因为有些接口必须使用原来的Token) /// public bool HomeIsOtherShare { get { if (UserConfig.Instance == null || UserConfig.Instance.CurrentRegion == null) { return false; } else { return UserConfig.Instance.CurrentRegion.IsOthreShare; } } } /// /// 检测住宅是否绑定了网关 /// gatewayId 判空 /// /// public bool CheckWhetherGatewayIdNotNull () { if (HomeGateway != null && !string.IsNullOrEmpty (HomeGateway.gatewayId)) { return true; } else { return false; } } /// /// 检测住宅是否绑定了网关 /// /// public bool CheckHomeGatewaysNotEmpty () { if (HomeGateway != null && !string.IsNullOrEmpty (HomeGateway.mac)) { return true; } else { return false; } } /// /// /// public string GatewayMAC { get { if (CheckHomeGatewaysNotEmpty ()) { return HomeGateway.mac; } else { return ""; } } set { if (CheckHomeGatewaysNotEmpty()) { HomeGateway.mac = value; } else { //2020-01-11 if (HomeGateway != null) { HomeGateway.mac = value; } else { HomeGateway = new HomeGatewayInfo () { mac = value}; } } } } #endregion ///// ///// 更新设置当前住宅网关 ///// 2020-01-11 ///// ///// //public void SetNowHomeGateways (List mGatewayDataList) { // try { // if (currentRegion != null) { // if (mGatewayDataList != null && mGatewayDataList.Count > 0) { // var mMacList = new List (); // foreach (var mGatewayRes in mGatewayDataList) { // var mac = new HomeGateways (); // mac.GatewayUniqueId = mGatewayRes.GatewayUniqueId; // mMacList.Add (mac); // } // //HomeGateways = mMacList; // } // } // } catch { // } //} //public List RometoUserInfoKeys = new List (); /// /// 本地通信加密Key /// public string LocalEncryptKey = string.Empty; /// /// 是否加密密码验证通过 /// public bool EncryptedPasswordCorrect = true; /// /// 是否加密 /// public bool IsLocalEncrypt = false; /// /// 设置为默认加密,并计算加密Key /// private void SetLocalEncryptKey () { if (currentRegion != null) { IsLocalEncrypt = true; GenerateLocalEncryptionKey (); //LocalEncryptKey = CommonPage.MyEncodingUTF8.GetString (GenerateLocalEncryptionKey ()); } } /// /// 获取16位的key byte [] /// /// 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 = ""; /// /// 是否获取中 /// 2020-01-11 /// bool bGetting = false; //public static List LocalFiles = IO.FileUtils.ReadFiles (); /// /// 获取控制分享项目(住宅)请求信息 /// /// /// public void CheckIfNeedGetMasterAccountToken () { if (bGetting) return; ////2020-01-08 判断是否分享过来的住宅 //if (currentRegion != null && currentRegion.IsOthreShare) { // //MainPage.IsAdministrator = UserConfig.Instance.CurrentRegion.IsOthreShare; // //请求主账号token // 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 (revertObj.ResponseData.ToString ()); // if (responseDataObj != null) { // MasterAccountToken = responseDataObj.RequestToken; // MasterAccountRequestBaseUrl = responseDataObj.RequestBaseUrl; // } // } // } catch { // } finally { // bGetting = false; // } // }); //} } } }