| | |
| | | public static int InValidDateSecond = 0; |
| | | #endregion |
| | | |
| | | public static async System.Threading.Tasks.Task<List<Shared.Phone.UserCenter.MemberInfoRes>> LocalAccountList() |
| | | { |
| | | return await System.Threading.Tasks.Task.Run(async () => |
| | | { |
| | | List<Shared.Phone.UserCenter.MemberInfoRes> localAccountList = new List<Shared.Phone.UserCenter.MemberInfoRes> { }; |
| | | List<Shared.Phone.UserCenter.MemberInfoRes> SubAccounList = new List<Shared.Phone.UserCenter.MemberInfoRes> { }; |
| | | if (UserCenterResourse.UserInfo.AuthorityNo == 1 || UserCenterResourse.UserInfo.AuthorityNo == 2) |
| | | { |
| | | SubAccounList = await ZigBee.Device.DoorLock.GetSubAccountByDistributedMark(); |
| | | } |
| | | |
| | | // 注意:SubAccountDistributedMark这个值很有用,“添加门锁”到云端信息中,CloudAccountId如果是子账户,则是SubAccountDistributedMark这个值很有用,如果是管理员或者主人则是登录到G |
| | | var masterAccount = new Shared.Phone.UserCenter.MemberInfoRes(); |
| | | masterAccount.Account = Shared.Common.Config.Instance.Account; |
| | | masterAccount.AccountType = Shared.Common.Config.Instance.AccountType; |
| | | masterAccount.SubAccountDistributedMark = Shared.Common.Config.Instance.Guid; |
| | | masterAccount.UserName = UserCenterResourse.UserInfo.UserName; |
| | | localAccountList.Add(masterAccount); |
| | | localAccountList.AddRange(SubAccounList); |
| | | return localAccountList; |
| | | }); |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 获取门锁包含设备信息和账户信息 |
| | | /// </summary> |
| | |
| | | // 读取设备中的信息 |
| | | doorLock.localDoorLockUserList.Clear(); |
| | | var getDoorLockInfo = await doorLock.GetDoorlockUserInfoAsync(); |
| | | if (getDoorLockInfo == null) |
| | | { |
| | | doorLock.IsFailedToGetDoorLockInfo[curAccountObj.SubAccountDistributedMark] = true; |
| | | } |
| | | else |
| | | { |
| | | doorLock.IsFailedToGetDoorLockInfo[curAccountObj.SubAccountDistributedMark] = false; |
| | | } |
| | | if (getDoorLockInfo != null && getDoorLockInfo.doorLockUserDetailData != null) |
| | | { |
| | | var dataList = getDoorLockInfo.doorLockUserDetailData.UserObjList; |
| | |
| | | |
| | | // 读取云端门锁设备中的信息 |
| | | 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); |
| | | |
| | | var getDoorLockInfoList = await Shared.Phone.UserCenter.DoorLock.DoorLockCommonInfo.GetDoorLockAllInfolist(doorLock, curAccountObj.SubAccountDistributedMark); |
| | | if (getDoorLockInfoList != null) |
| | | { |
| | | foreach (var curDoorLockUser in getDoorLockInfoList.PageData) |
| | | { |
| | | if (curDoorLockUser.DoorLockLocalUserId == null || curDoorLockUser.DoorLockLocalUserId == "") |
| | | { |
| | | continue; |
| | | } |
| | | if (doorLock.localDoorLockUserList.ContainsKey(int.Parse(curDoorLockUser.DoorLockLocalUserId))) |
| | | { |
| | | var doorLockObj = new ZigBee.Device.DoorLock.LocaDoorLockObj() { }; |
| | |
| | | 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); |
| | | } |
| | | } |
| | | |
| | | //获取云端存储的门锁成员信息 |
| | | //foreach (var curDoorLockUser in getDoorLockInfoList.PageData) |
| | | //{ |
| | | // var doorLockObj = new ZigBee.Device.DoorLock.LocaDoorLockObj(); |
| | | // if (curDoorLockUser.DoorLockLocalUserId != null) |
| | | // { |
| | | // doorLockObj.UserID = int.Parse(curDoorLockUser.DoorLockLocalUserId); |
| | | // doorLockObj.UnlockType = curDoorLockUser.OpenLockMode; |
| | | // doorLockObj.UserName = curDoorLockUser.UserIdRemarks; |
| | | // } |
| | | // doorLockObj.PrimaryId = curDoorLockUser.Id; |
| | | // doorLockObj.EntryTime = curDoorLockUser.EntryTime; |
| | | // doorLockObj.ConnectedAccount = curDoorLockUser.CloudAccountId; |
| | | // if (doorLock.localDoorLockAccountList.ContainsKey(curDoorLockUser.CloudAccountId) == false) |
| | | // { |
| | | // doorLock.localDoorLockAccountList.Add(doorLockObj.ConnectedAccount, doorLockObj); |
| | | // } |
| | | // else |
| | | // { |
| | | // doorLock.localDoorLockAccountList[doorLockObj.ConnectedAccount] = doorLockObj; |
| | | // } |
| | | |
| | | //} |
| | | doorLock.ReSave(); |
| | | } |
| | | return doorLock.localDoorLockUserList; |
| | | })); |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 获取云端存储的门锁信息 |
| | | /// </summary> |
| | | public static async System.Threading.Tasks.Task<Dictionary<int, LocaDoorLockObj>> GetCloudLocalDoorLocklist(ZigBee.Device.DoorLock doorLock, string subAccountDistributedMark) |
| | | { |
| | | return await System.Threading.Tasks.Task.Run((Func<System.Threading.Tasks.Task<Dictionary<int, LocaDoorLockObj>>>)(async () => |
| | | { |
| | | // 读取云端门锁设备中的信息 |
| | | var localDoorLockObj = new ZigBee.Device.DoorLock.GetDoorLockData() { }; |
| | | |
| | | if (UserCenterResourse.UserInfo.AuthorityNo != 1) |
| | | { |
| | | localDoorLockObj.LoginAccessToken = UserCenterLogic.GetConnectMainToken(); |
| | | localDoorLockObj.IsOtherAccountCtrl = true; |
| | | } |
| | | |
| | | localDoorLockObj.CloudAccountId = subAccountDistributedMark; |
| | | if (doorLock.DeviceAddr != null) |
| | | { |
| | | 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 (curDoorLockUser.DoorLockLocalUserId == null || curDoorLockUser.DoorLockLocalUserId == "") |
| | | { |
| | | continue; |
| | | } |
| | | 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; |
| | | } |
| | | } |
| | | |
| | | doorLock.ReSave(); |
| | | } |
| | | return doorLock.localDoorLockUserList; |
| | | })); |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 获取云端存储的成员信息 |
| | | /// </summary> |
| | | public static async System.Threading.Tasks.Task<List<ZigBee.Device.DoorLock.CloudDoorLockObj>> GetAccountDoorLockUserList(ZigBee.Device.DoorLock doorLock, string subAccountDistributedMark) |
| | | { |
| | | List<ZigBee.Device.DoorLock.CloudDoorLockObj> curAccountDoorLockUserList = new List<ZigBee.Device.DoorLock.CloudDoorLockObj> { }; |
| | | return await System.Threading.Tasks.Task.Run((Func<System.Threading.Tasks.Task<List<ZigBee.Device.DoorLock.CloudDoorLockObj>>>)(async () => |
| | | { |
| | | // 读取云端门锁设备中的信息 |
| | | var getDoorLockInfoList = await Shared.Phone.UserCenter.DoorLock.DoorLockCommonInfo.GetDoorLockAllInfolist(doorLock, subAccountDistributedMark); |
| | | if (getDoorLockInfoList != null) |
| | | { |
| | | //获取云端存储的门锁成员信息 |
| | | foreach (var curDoorLockUser in getDoorLockInfoList.PageData) |
| | | { |
| | | if (curDoorLockUser.CloudAccountId == "" || curDoorLockUser.CloudAccountId != subAccountDistributedMark) |
| | | { |
| | | continue; |
| | | } |
| | | else |
| | | { |
| | | curAccountDoorLockUserList.Add(curDoorLockUser); |
| | | } |
| | | } |
| | | } |
| | | return curAccountDoorLockUserList; |
| | | })); |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 获取当前账户门锁的所有信息 |
| | | /// </summary> |
| | | public static async System.Threading.Tasks.Task<ZigBee.Device.DoorLock.GetDoorLockDataRes> GetDoorLockAllInfolist(ZigBee.Device.DoorLock doorLock, string subAccountDistributedMark) |
| | | { |
| | | return await System.Threading.Tasks.Task.Run((Func<System.Threading.Tasks.Task<ZigBee.Device.DoorLock.GetDoorLockDataRes>>)(async () => |
| | | { |
| | | // 读取云端门锁设备中的信息 |
| | | var localDoorLockObj = new ZigBee.Device.DoorLock.GetDoorLockData() { }; |
| | | |
| | | if (UserCenterResourse.UserInfo.AuthorityNo != 1) |
| | | { |
| | | localDoorLockObj.LoginAccessToken = UserCenterLogic.GetConnectMainToken(); |
| | | localDoorLockObj.IsOtherAccountCtrl = true; |
| | | } |
| | | |
| | | localDoorLockObj.CloudAccountId = subAccountDistributedMark; |
| | | if (doorLock.DeviceAddr != null) |
| | | { |
| | | localDoorLockObj.DoorLockId = doorLock.DeviceAddr + "_" + doorLock.DeviceEpoint; |
| | | } |
| | | |
| | | var getDoorLockInfoList = await ZigBee.Device.DoorLock.GetDoorLockInfoFromServer("DoorLock/GetDoorLockPager", localDoorLockObj); |
| | | return getDoorLockInfoList; |
| | | })); |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 获取云端存储的门锁成员信息 |
| | | /// </summary> |
| | | public static async System.Threading.Tasks.Task<Dictionary<int, LocaDoorLockObj>> GetLocaDoorLockAccountlist(ZigBee.Device.DoorLock doorLock, Shared.Phone.UserCenter.MemberInfoRes curAccountObj) |
| | | { |
| | | return await System.Threading.Tasks.Task.Run((Func<System.Threading.Tasks.Task<Dictionary<int, LocaDoorLockObj>>>)(async () => |
| | | { |
| | | // 读取云端门锁设备中的信息 |
| | | 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) |
| | | { |
| | | var doorLockObj = new ZigBee.Device.DoorLock.LocaDoorLockObj() { }; |
| | | if (curDoorLockUser.DoorLockLocalUserId != null) |
| | | { |
| | | doorLockObj.UserID = int.Parse(curDoorLockUser.DoorLockLocalUserId); |
| | | doorLockObj.UnlockType = curDoorLockUser.OpenLockMode; |
| | | doorLockObj.UserName = curDoorLockUser.UserIdRemarks; |
| | | } |
| | | doorLockObj.PrimaryId = curDoorLockUser.Id; |
| | | doorLockObj.EntryTime = curDoorLockUser.EntryTime; |
| | | doorLockObj.ConnectedAccount = curDoorLockUser.CloudAccountId; |
| | | if (doorLock.localDoorLockAccountList.ContainsKey(curDoorLockUser.CloudAccountId) == false) |
| | | { |
| | | doorLock.localDoorLockAccountList.Add(doorLockObj.ConnectedAccount, doorLockObj); |
| | | } |
| | | else |
| | | { |
| | | doorLock.localDoorLockAccountList[curDoorLockUser.DoorLockLocalUserId] = doorLockObj; |
| | | } |
| | | |
| | | } |
| | | } |
| | | return doorLock.localDoorLockUserList; |
| | | })); |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 获取本地匹配成员的门锁用户信息列表 |
| | | /// </summary> |
| | | public static async System.Threading.Tasks.Task<Dictionary<int, LocaDoorLockObj>> GetMatchDoorlockAccountList(ZigBee.Device.DoorLock doorLock, Shared.Phone.UserCenter.MemberInfoRes curAccountObj) |
| | | { |
| | | return await System.Threading.Tasks.Task.Run((Func<System.Threading.Tasks.Task<Dictionary<int, LocaDoorLockObj>>>)(async () => |
| | | { |
| | | var curAccountDoorLockUserList = new Dictionary<int, ZigBee.Device.DoorLock.LocaDoorLockObj>(); |
| | | foreach (var curUserId in doorLock.localDoorLockAccountList.Keys) |
| | | { |
| | | var curDoorLockUser = doorLock.localDoorLockAccountList[curUserId]; |
| | | |
| | | if (curDoorLockUser.ConnectedAccount == "" || curDoorLockUser.ConnectedAccount != curAccountObj.SubAccountDistributedMark) |
| | | { |
| | | continue; |
| | | } |
| | | else |
| | | { |
| | | curAccountDoorLockUserList.Add(curDoorLockUser.UserID, curDoorLockUser); |
| | | } |
| | | } |
| | | return curAccountDoorLockUserList; |
| | | })); |
| | | } |
| | | |
| | | /// <summary> |
| | |
| | | /// <para>管理员10个,0~9,</para>
///<para>普通用户220个,10~234</para>
///<para>一次性用户10个,235~245</para>
///<para>临时密码密码10个,245~255,</para>
///<para>其中指纹100,密码100,卡56</para> |
| | | ///<para>门锁本地录入的密码、指纹、感应卡都有唯一对应的用户Id</para> |
| | | /// </summary> |
| | | public int UserID; |
| | | public int UserID = -1; |
| | | /// <summary> |
| | | /// 开锁类型 |
| | | /// <para>常用:</para> |