using System; using System.Collections.Generic; using System.Runtime.CompilerServices; using ZigBee.Device; namespace Shared.Phone.UserCenter.DoorLock { public class DoorLockCommonInfo : CommonDevice { #region 本地变量 public static bool IsModify = false; public static bool InTempPasswordVisiable = false; public static int ValidDateYear = 0; public static int ValidDateMonth = 0; public static int ValidDateDay = 0; public static int ValidDateHour = 100; public static int ValidDateMinute = 100; public static int ValidDateSecond = 0; public static int InValidDateYear = 0; public static int InValidDateMonth = 0; public static int InValidDateDay = 0; public static int InValidDateHour = 100; public static int InValidDateMinute = 100; public static int InValidDateSecond = 0; #endregion /// /// 获取门锁包含设备信息和账户信息 /// public static async System.Threading.Tasks.Task> GetLocaDoorLocklist(ZigBee.Device.DoorLock doorLock, Shared.Phone.UserCenter.MemberInfoRes curAccountObj) { return await System.Threading.Tasks.Task.Run((Func>>)(async () => { // 读取设备中的信息 doorLock.localDoorLockUserList.Clear(); var getDoorLockInfo = await doorLock.GetDoorlockUserInfoAsync(); if (getDoorLockInfo != null && getDoorLockInfo.doorLockUserDetailData != null) { var dataList = getDoorLockInfo.doorLockUserDetailData.UserObjList; foreach (var doorData in dataList) { var localDoorLockObj1 = new ZigBee.Device.DoorLock.LocaDoorLockObj() { UserID = doorData.UserId, UnlockType = doorData.UserType }; if ((doorLock.localDoorLockUserList.ContainsKey(localDoorLockObj1.UserID)) == false) { doorLock.localDoorLockUserList.Add(localDoorLockObj1.UserID, localDoorLockObj1); } } } // 读取云端门锁设备中的信息 var localDoorLockObj = new ZigBee.Device.DoorLock.GetDoorLockData() { }; if (UserCenterResourse.UserInfo.AuthorityNo != 1) { localDoorLockObj.LoginAccessToken = UserCenterLogic.GetConnectMainToken(); localDoorLockObj.IsOtherAccountCtrl = true; } localDoorLockObj.CloudAccountId = curAccountObj.SubAccountDistributedMark; { localDoorLockObj.DoorLockId = doorLock.DeviceAddr + "_" + doorLock.DeviceEpoint; } var getDoorLockInfoList = await ZigBee.Device.DoorLock.GetDoorLockInfoFromServer("DoorLock/GetDoorLockPager", localDoorLockObj); if (getDoorLockInfoList != null) { foreach (var curDoorLockUser in getDoorLockInfoList.PageData) { if (doorLock.localDoorLockUserList.ContainsKey(int.Parse(curDoorLockUser.DoorLockLocalUserId))) { var doorLockObj = new ZigBee.Device.DoorLock.LocaDoorLockObj() { }; doorLockObj.UserID = int.Parse(curDoorLockUser.DoorLockLocalUserId); doorLockObj.UnlockType = curDoorLockUser.OpenLockMode; doorLockObj.PrimaryId = curDoorLockUser.Id; doorLockObj.EntryTime = curDoorLockUser.EntryTime; doorLockObj.UserName = curDoorLockUser.UserIdRemarks; doorLockObj.ConnectedAccount = curDoorLockUser.CloudAccountId; doorLock.localDoorLockUserList[int.Parse(curDoorLockUser.DoorLockLocalUserId)] = doorLockObj; } else { //门锁中不存在用户ID,云端存在,需要在这里删除云端存在的数据 var deleteDoorLockData = new ZigBee.Device.DoorLock.DeleteDoorLockData(); if (UserCenterResourse.UserInfo.AuthorityNo != 1) { deleteDoorLockData.LoginAccessToken = UserCenterLogic.GetConnectMainToken(); deleteDoorLockData.IsOtherAccountCtrl = true; } if (doorLock.DeviceAddr != null) { deleteDoorLockData.DoorLockId = doorLock.DeviceAddr + "_" + doorLock.DeviceEpoint; } deleteDoorLockData.DoorLockLocalUserId = curDoorLockUser.DoorLockLocalUserId; deleteDoorLockData.PrimaryId = curDoorLockUser.Id; deleteDoorLockData.DelDoorLockDelType = 2; var result = await ZigBee.Device.DoorLock.SendDoorLockToServer("DoorLock/DelDoorLock", deleteDoorLockData); } } } return doorLock.localDoorLockUserList; })); } /// /// 生成6位临时密码 /// /// public static string GetTempPassword() { string password = ""; password = new Random().Next(100000, 999999).ToString(); return password; } /// /// 将UNIX时间戳转换成系统时间(精确到秒) /// public static DateTime GetLocalTime(int unixTimeStamp) { DateTime dtStart = TimeZone.CurrentTimeZone.ToLocalTime(new DateTime(1970, 1, 1)); long lTime = long.Parse(unixTimeStamp + "0000000"); TimeSpan toNow = new TimeSpan(lTime); DateTime dtResult = dtStart.Add(toNow); return dtResult; } /// /// 将系统时间转换成UNIX时间戳(精确到秒) /// /// 北京时间 /// 精确到毫秒,否到秒 /// 返回一个长整数时间戳 public static string GetUnixTimeStamp(DateTime dateTime) { DateTime dtStart = TimeZone.CurrentTimeZone.ToLocalTime(new DateTime(1970, 1, 1)); //DateTime dtNow = DateTime.Parse(DateTime.Now.ToString()); TimeSpan toNow = dateTime.Subtract(dtStart); string timeStamp = toNow.Ticks.ToString(); timeStamp = timeStamp.Substring(0, timeStamp.Length - 7); return timeStamp; } /// /// 门锁编程事件通知 /// [System.Serializable] public class LocaDoorLockObj { /// /// 用户id /// 管理员10个,0~9, ///普通用户220个,10~234 ///一次性用户10个,235~245 ///临时密码密码10个,245~255, ///其中指纹100,密码100,卡56 ///门锁本地录入的密码、指纹、感应卡都有唯一对应的用户Id /// public int UserID; /// /// 开锁类型 /// 常用: /// 0:Keypad(键盘/密码);3:RFID(射频卡);15:指纹 /// 不常用: /// 1:RF(Zigbee无线);2:Manual(手动);255:Indeterminate(不确定) /// public int UnlockType; /// /// 关联账户的ID /// public string ConnectedAccount = string.Empty; /// /// 门锁用户名 /// public string UserName = string.Empty; /// /// 门锁录入的时 /// public DateTime EntryTime = System.DateTime.MinValue; /// /// PrimaryId 门锁云端主 键(非更新字段,以下均为更新字段) -->键名 : PrimaryId默认值: null /// public string PrimaryId = ""; } } }