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
}
}