using System; using System.Collections.Generic; using System.Text; namespace Shared.Phone.UserCenter { /// /// 门锁历史记录的逻辑 /// public class HdlDeviceDoorLockLogic { #region ■ 变量声明___________________________ /// /// 门锁历史记录的逻辑 /// private static HdlDeviceDoorLockLogic m_Current = null; /// /// 门锁历史记录的逻辑 /// public static HdlDeviceDoorLockLogic Current { get { if (m_Current == null) { m_Current = new HdlDeviceDoorLockLogic(); } return m_Current; } } #endregion #region ■ 添加历史记录_______________________ /// /// 添加历史记录 /// /// 门锁对象 /// 其他开锁方式 9001:常开打开 9002:常开取消 9003:常开持续 9004:常开自动化手动取消 /// 常开持续时间(1~72小时 OtherOpenLockMode=9003的时候有效) public void AddDoorHistoryLog(ZigBee.Device.DoorLock i_doorLock, int OtherOpenLockMode, string NormallyOpenContinuedTime) { HdlThreadLogic.Current.RunThread(() => { //获取门锁的主键ID var DoorLockId = this.GetDoorHistoryDoorLockId(i_doorLock); if (string.IsNullOrEmpty(DoorLockId) == true) { //网络不通 return; } var pra = new AddDoorHistoryLogPra(); pra.LoginAccessToken = UserCenterLogic.GetConnectMainToken(); pra.DoorLockId = DoorLockId; pra.OtherOpenLockMode = OtherOpenLockMode; pra.NormallyOpenContinuedTime = NormallyOpenContinuedTime; //不检测错误码 var listCheck = new List() { "NotCheck" }; var result = UserCenterLogic.GetResultStatuByRequestHttps("DoorLock/AddDoorLockHistory", true, pra, listCheck); if (result == false) { } }); } /// /// 获取添加门锁历史记录的DoorLockId /// /// 门锁对象 /// private string GetDoorHistoryDoorLockId(ZigBee.Device.DoorLock i_doorLock) { var pra = new GetDoorIdPra(); pra.LoginAccessToken = UserCenterLogic.GetConnectMainToken(); pra.DoorLockId = i_doorLock.DeviceAddr + "_" + i_doorLock.DeviceEpoint; //不检测错误码 var listCheck = new List() { "NotCheck" }; var result = UserCenterLogic.GetResponseDataByRequestHttps("DoorLock/GetDoorLockPager", true, pra, listCheck); if (string.IsNullOrEmpty(result) == true) { return null; } //如果已经创建了,则不再创建 var myData = Newtonsoft.Json.JsonConvert.DeserializeObject(result); if (myData.PageData.Count > 0) { return myData.PageData[0].Id; } //如果还没有创建,则虚拟一个特殊的东西出来 var pra2 = new AddDoorPra(); pra2.LoginAccessToken = UserCenterLogic.GetConnectMainToken(); pra2.DoorLockId = i_doorLock.DeviceAddr + "_" + i_doorLock.DeviceEpoint; var result2 = UserCenterLogic.GetResponseDataByRequestHttps("DoorLock/AddDoorLock", true, pra2, listCheck); //云端是直接返回创建的主键字符串 return result2; } /// /// 添加历史记录的参数 /// private class AddDoorHistoryLogPra : IfacePraCommon { /// /// RequestVersion /// public string RequestVersion = Common.CommonPage.RequestVersion; /// /// LoginAccessToken /// public string LoginAccessToken = string.Empty; /// /// ZigbeeHomeId /// public string HomeId = Common.Config.Instance.Home.Id; /// /// 门锁云端主键(在(获取某个住宅门锁分页)接口响应中的Id值) /// public string DoorLockId = string.Empty; /// /// 其他开锁方式 9001:常开打开 9002:常开取消 9003:常开持续 /// public int OtherOpenLockMode = -1; /// /// 常开持续时间(1~72小时 OtherOpenLockMode=9003的时候有效) /// public string NormallyOpenContinuedTime = string.Empty; /// /// 开锁时间(历史记录的时间From-To检索的对象) /// public string UnlockTime = DateTime.UtcNow.ToString(); } /// /// 获取添加门锁历史记录的DoorLockId的参数 /// private class GetDoorIdPra : IfacePraCommon { /// /// RequestVersion /// public string RequestVersion = Common.CommonPage.RequestVersion; /// /// LoginAccessToken /// public string LoginAccessToken = string.Empty; /// /// ZigbeeHomeId /// public string HomeId = Common.Config.Instance.Home.Id; /// /// 填GUID /// public string CloudAccountId = Common.Config.Instance.Guid; /// /// 这个是门锁的 Mac_端点 /// public string DoorLockId = string.Empty; /// /// 开锁方式:固定9000 /// public int OpenLockMode = 9000; } /// /// 添加门锁的参数 /// private class AddDoorPra : IfacePraCommon { /// /// RequestVersion /// public string RequestVersion = Common.CommonPage.RequestVersion; /// /// LoginAccessToken /// public string LoginAccessToken = string.Empty; /// /// ZigbeeHomeId /// public string HomeId = Common.Config.Instance.Home.Id; /// /// 填GUID /// public string CloudAccountId = Common.Config.Instance.Guid; /// /// 这个是门锁的 Mac_端点 /// public string DoorLockId = string.Empty; /// /// 其他开锁方式 固定9000 /// public int OpenLockMode = 9000; /// /// 录入时间 /// public string EntryTime = DateTime.Now.ToString(); } /// /// 接收云端ID的结果 /// private class GetListIdResult { /// /// 云端返回的主键ID /// public List PageData = new List(); } /// /// 接收云端ID的结果 /// private class GetIdResult { /// /// 云端返回的主键ID /// public string Id = string.Empty; } #endregion } }