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:常开持续 /// 常开持续时间(1~72小时 OtherOpenLockMode=9003的时候有效) public void AddDoorHistoryLog(ZigBee.Device.DoorLock i_doorLock, int OtherOpenLockMode, string NormallyOpenContinuedTime) { HdlThreadLogic.Current.RunThread(async () => { //获取门锁的主键ID var DoorLockId = await this.GetDoorHistoryDoorLockId(i_doorLock); var pra = new AddDoorHistoryLogPra(); pra.LoginAccessToken = UserCenterLogic.GetConnectMainToken(); pra.DoorLockId = DoorLockId; pra.OtherOpenLockMode = OtherOpenLockMode; pra.NormallyOpenContinuedTime = NormallyOpenContinuedTime; //不二次发送,不检测错误码 var listCheck = new List() { "NotSetAgain", "NotCheck" }; var result = await UserCenterLogic.GetResultStatuByRequestHttps("DoorLock/AddDoorLockHistory", true, pra, listCheck); if (result == false) { } }); } /// /// 获取添加门锁历史记录的DoorLockId /// /// 门锁对象 /// private async System.Threading.Tasks.Task GetDoorHistoryDoorLockId(ZigBee.Device.DoorLock i_doorLock) { var pra = new GetDoorIdPra(); pra.LoginAccessToken = UserCenterLogic.GetConnectMainToken(); pra.DoorLockId = i_doorLock.DeviceAddr + "_200"; //不二次发送,不检测错误码 var listCheck = new List() { "NotSetAgain", "NotCheck" }; var result = await UserCenterLogic.GetResponseDataByRequestHttps("DoorLock/GetDoorLockPager", true, pra, listCheck); if (result == null) { 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 + "_200"; var result2 = await 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 } }