using System;
|
using System.Collections.Generic;
|
using System.Text;
|
|
namespace Shared.Phone
|
{
|
/// <summary>
|
/// 门锁历史记录的逻辑
|
/// </summary>
|
public class HdlDeviceDoorLockLogic
|
{
|
#region ■ 变量声明___________________________
|
|
/// <summary>
|
/// 门锁历史记录的逻辑
|
/// </summary>
|
private static HdlDeviceDoorLockLogic m_Current = null;
|
/// <summary>
|
/// 门锁历史记录的逻辑
|
/// </summary>
|
public static HdlDeviceDoorLockLogic Current
|
{
|
get
|
{
|
if (m_Current == null)
|
{
|
m_Current = new HdlDeviceDoorLockLogic();
|
}
|
return m_Current;
|
}
|
}
|
|
#endregion
|
|
#region ■ 添加历史记录_______________________
|
|
/// <summary>
|
/// 添加历史记录
|
/// </summary>
|
/// <param name="i_doorLock">门锁对象</param>
|
/// <param name="OtherOpenLockMode">其他开锁方式 9001:常开打开 9002:常开取消 9003:常开持续 9004:常开自动化手动取消</param>
|
/// <param name="NormallyOpenContinuedTime">常开持续时间(1~72小时 OtherOpenLockMode=9003的时候有效)</param>
|
public void AddDoorHistoryLog(ZigBee.Device.DoorLock i_doorLock, int OtherOpenLockMode, string NormallyOpenContinuedTime)
|
{
|
HdlThreadLogic.Current.RunThread(() =>
|
{
|
var pra = new
|
{
|
doorLockId = i_doorLock.DeviceAddr + "_" + i_doorLock.DeviceEpoint,
|
unlockMode = OtherOpenLockMode,
|
homeId = Common.Config.Instance.Home.Id,
|
isUnlockSuccess = true,
|
normallyOpenContinuedTime = NormallyOpenContinuedTime,
|
unlockTime = DateTime.UtcNow.ToString()
|
};
|
//不管返回值
|
var result = HdlHttpLogic.Current.RequestResponseFromZigbeeHttps("home-wisdom/doorLockUnlockHistory/save", RestSharp.Method.POST, pra, null, null, CheckMode.A账号权限);
|
});
|
}
|
|
#endregion
|
|
#region ■ 获取历史记录_______________________
|
|
/// <summary>
|
/// 获取门锁的历史记录(不会返回null)
|
/// </summary>
|
/// <param name="i_doorKey">门锁的Mac + "_" + 端点</param>
|
/// <param name="i_dateTimeFrom">搜索时间From(不是utc时间)</param>
|
/// <param name="i_dateTimeTo">搜索时间To(不是utc时间)</param>
|
/// <returns></returns>
|
public List<DoorHistoryLogInfo> GetDoorHistoryLogInfo(string i_doorKey, DateTime i_dateTimeFrom, DateTime i_dateTimeTo)
|
{
|
var pra = new
|
{
|
doorLockId = i_doorKey,
|
homeId = Common.Config.Instance.Home.Id,
|
unlockBeginTime = i_dateTimeFrom.ToUniversalTime().ToString(),
|
unlockEndTime = i_dateTimeTo.ToUniversalTime().ToString()
|
};
|
var result = HdlHttpLogic.Current.RequestResponseFromZigbeeHttps("home-wisdom/doorLockUnlockHistory/list", RestSharp.Method.POST, pra, null, null, CheckMode.A账号权限, false, 5);
|
if (result == null || result.Code != HttpMessageEnum.A成功)
|
{
|
return new List<DoorHistoryLogInfo>();
|
}
|
var listData = Newtonsoft.Json.JsonConvert.DeserializeObject<List<DoorHistoryLogInfo>>(result.Data.ToString());
|
var listLog = new List<DoorHistoryLogInfo>();
|
|
foreach (var data in listData)
|
{
|
//不知道为什么会有上报了虚拟9000的那个特殊的东西(这是以前的注释,先放这里)
|
if (data.UserId == null)
|
{
|
data.UserId = string.Empty;
|
}
|
listLog.Add(data);
|
}
|
return listLog;
|
}
|
|
#endregion
|
|
#region ■ 清空历史记录_______________________
|
|
/// <summary>
|
/// 清空历史记录
|
/// </summary>
|
/// <param name="i_doorId">门锁的Mac + "_" + 端点</param>
|
/// <param name="i_dateTimeFrom">时间From(不是utc时间)</param>
|
/// <param name="i_dateTimeTo">时间To(不是utc时间)</param>
|
/// <param name="i_listOtherId">存在另一张表的消息记录的主键</param>
|
/// <returns></returns>
|
public bool ClearAllDoorHistoryLog(string i_doorId, DateTime i_dateTimeFrom, DateTime i_dateTimeTo, List<string> i_listOtherId)
|
{
|
var pra1 = new
|
{
|
doorLockId = i_doorId,
|
homeId = Common.Config.Instance.Home.Id,
|
unlockBeginTime = i_dateTimeFrom.ToUniversalTime().ToString(),
|
unlockEndTime = i_dateTimeTo.ToUniversalTime().ToString()
|
};
|
//清空记录
|
var result1 = HdlHttpLogic.Current.RequestResponseFromZigbeeHttps("home-wisdom/doorLockUnlockHistory/clear", RestSharp.Method.POST, pra1, null, null, CheckMode.A账号权限);
|
if (result1 == null || result1.Code != HttpMessageEnum.A成功)
|
{
|
return false;
|
}
|
//清空另外一张表的记录
|
foreach (var msgId in i_listOtherId)
|
{
|
var result2 = HdlMessageLogic.Current.DeleteCloundMessage(msgId);
|
if (result2 == false)
|
{
|
return false;
|
}
|
}
|
return true;
|
}
|
|
#endregion
|
}
|
}
|