using System; using System.Collections.Generic; namespace Shared.Common { [System.Serializable] public class Config { static readonly string fileName = "Config.json"; static Config config; public static Config Instance { get { if (config == null) { ReFresh(); } return config; } } /// /// 账户登录成功的MqttKey /// public string MqttKey { get { if (Phone.UserCenter.UserCenterResourse.UserInfo.AuthorityNo == 2 || Phone.UserCenter.UserCenterResourse.UserInfo.AuthorityNo == 3) { return AdminMqttKey; } return MeMqttKey; } set { MeMqttKey = value; } } /// /// 当前需要连接云端ZigbeeMqttBroker的连接地址 /// public string ZigbeeMqttBrokerLoadSubDomain { get { if (Phone.UserCenter.UserCenterResourse.UserInfo.AuthorityNo == 2 || Phone.UserCenter.UserCenterResourse.UserInfo.AuthorityNo == 3) { return AdminZigbeeMqttBrokerLoadSubDomain; } return MeZigbeeMqttBrokerLoadSubDomain; } set { MeZigbeeMqttBrokerLoadSubDomain = value; } } /// /// 当前需要连接云端ZigbeeMqttBroker的连接的ClientId /// public string ConnectZigbeeMqttClientId { get { if (Phone.UserCenter.UserCenterResourse.UserInfo.AuthorityNo == 2 || Phone.UserCenter.UserCenterResourse.UserInfo.AuthorityNo == 3) { return AdminConnectZigbeeMqttClientId; } return MeConnectZigbeeMqttClientId; } set { MeConnectZigbeeMqttClientId = value; } } /// /// 当前需要连接云端ZigbeeMqttBroker的连接的密码 /// public string ConnectZigbeeMqttBrokerPwd { get { if (Phone.UserCenter.UserCenterResourse.UserInfo.AuthorityNo == 2 || Phone.UserCenter.UserCenterResourse.UserInfo.AuthorityNo == 3) { return AdminConnectZigbeeMqttBrokerPwd; } return MeConnectZigbeeMqttBrokerPwd; } set { MeConnectZigbeeMqttBrokerPwd = value; } } /// /// 当前需要连接云端ZigbeeMqttBroker的连接的密码 /// public string ConnectZigbeeMqttBrokerName { get { if (Phone.UserCenter.UserCenterResourse.UserInfo.AuthorityNo == 2 || Phone.UserCenter.UserCenterResourse.UserInfo.AuthorityNo == 3) { return AdminConnectZigbeeMqttBrokerName; } return Config.Instance.Account; } } /// /// 当前需要连接云端ZigbeeMqttBroker的连接的密码 /// public string ConnectGuid { get { if (Phone.UserCenter.UserCenterResourse.UserInfo.AuthorityNo == 2 || Phone.UserCenter.UserCenterResourse.UserInfo.AuthorityNo == 3) { return AdminConnectZigbeeMqttBrokerName; } return Config.Instance.Guid; } } /// /// 账户登录成功的MqttKey /// private string MeMqttKey = string.Empty; /// /// 当前需要连接云端ZigbeeMqttBroker的连接地址 /// private string MeZigbeeMqttBrokerLoadSubDomain = string.Empty; /// /// 当前需要连接云端ZigbeeMqttBroker的连接的ClientId /// private string MeConnectZigbeeMqttClientId = string.Empty; /// /// 当前需要连接云端ZigbeeMqttBroker的连接的密码 /// [Newtonsoft.Json.JsonIgnore] private string MeConnectZigbeeMqttBrokerPwd = string.Empty; /// /// 账户登录成功的MqttKey(管理员身份用) /// public string AdminMqttKey = string.Empty; /// /// 当前需要连接云端ZigbeeMqttBroker的连接地址(管理员身份用) /// public string AdminZigbeeMqttBrokerLoadSubDomain = string.Empty; /// /// 当前需要连接云端ZigbeeMqttBroker的连接的ClientId(管理员身份用) /// public string AdminConnectZigbeeMqttClientId = string.Empty; /// /// 应该是叫远程连接的名字吧 /// public string AdminConnectZigbeeMqttBrokerName = string.Empty; /// /// 当前需要连接云端ZigbeeMqttBroker的连接的密码(管理员身份用) /// [Newtonsoft.Json.JsonIgnore] public string AdminConnectZigbeeMqttBrokerPwd = string.Empty; /// /// 服务器注册ID /// public string RegistrationID = string.Empty; /// /// 账户登录成功时的时间 /// public DateTime LoginDateTime = DateTime.MinValue; /// /// Gets a value indicating whether this is login. /// /// true if is login; otherwise, false. public bool IsLogin { get { return (DateTime.Now - LoginDateTime).Days < 7; } } /// /// 账户登录成功的账户类型 /// public int AccountType = 0; /// /// 账户登录成功的主ID /// public int MasterID = 0; public static void ReFresh() { var file = Shared.IO.FileUtils.ReadFile(fileName); config = Newtonsoft.Json.JsonConvert.DeserializeObject(System.Text.Encoding.UTF8.GetString(file)); if (config == null) { config = new Config { }; } } /// /// 当前登录的帐号 /// public string Account = string.Empty; /// /// 当前帐号密码 /// public string Password = string.Empty; /// /// 短信登录返回的md5后的密码 /// public string MD5PWD = string.Empty; /// /// 登陆账号的Guid /// public string Guid = string.Empty; /// /// 是否是管理员权限(为什么会声明这样变量,因为有些接口必须使用原来的Token) /// public bool isAdministrator = false; /// /// 成员请求控制主帐号此住宅时请求基地址 /// public string AdminRequestBaseUrl = string.Empty; /// /// 成员请求控制主帐号此住宅时请求基地址的LoginAccessToken的值 /// public string AdminRequestToken = string.Empty; /// /// 固件名称 /// //public string Name = string.Empty; ///// ///// 固件唯一标识 ///// //public string DistributedMark = string.Empty; ///// ///// 固件版本 ///// //public string FirmwareVersion = string.Empty; ///// ///// 固件备注 ///// //public string Remarks = string.Empty; ///// ///// 固件ID ///// //public string Id; [Newtonsoft.Json.JsonIgnore] /// /// 当前帐号的Token /// private string Token1 = ""; public string Token { get { string md5Password; if (string.IsNullOrEmpty(Password)) { //用于短信登录密码为 md5Password = MD5PWD; } else { var result = System.Text.Encoding.UTF8.GetBytes(Password); var md5 = new System.Security.Cryptography.MD5CryptoServiceProvider(); var output = md5.ComputeHash(result); md5Password = BitConverter.ToString(output).Replace("-", ""); } var account_md5Pssword = Account + ":" + md5Password; var tokenBytes = System.Text.Encoding.UTF8.GetBytes(account_md5Pssword); return Convert.ToBase64String(tokenBytes).Replace("=", "%3D"); } } /// /// 登录过的帐号信息 /// public List AccountList = new List { }; public List HomeFilePathList = new List { }; public string HomeId = string.Empty; [Newtonsoft.Json.JsonIgnore] private House m_Home = null; /// /// 当前住宅 /// /// The home. [Newtonsoft.Json.JsonIgnore] public House Home { get { if (m_Home != null) { return m_Home; } m_Home = House.GetHouseByHouseId(HomeId); if (m_Home == null) { m_Home = new House(); } return m_Home; } set { m_Home = value; } } /// /// 全路径 /// 使用方法: FullPath + FileName /// /// The full path. [Newtonsoft.Json.JsonIgnore] public string FullPath { get { return System.IO.Path.Combine(Shared.IO.FileUtils.RootPath, Instance.Guid, Instance.HomeId); } } /// /// 保存当前对象 /// public void Save() { var bytes = System.Text.Encoding.UTF8.GetBytes(Newtonsoft.Json.JsonConvert.SerializeObject(this)); Shared.IO.FileUtils.WriteFileByBytes(fileName, bytes); ReFresh(); } } }