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();
}
}
}