| | |
| | | using System; |
| | | using System.Collections.Generic; |
| | | using System.Runtime.CompilerServices; |
| | | using System.Runtime.InteropServices; |
| | | using ZigBee.Device; |
| | | |
| | | namespace Shared.Phone.UserCenter.DoorLock |
| | |
| | | #endregion |
| | | |
| | | /// <summary> |
| | | /// 获取门锁包含设备信息和账户信息 |
| | | /// 获取当前账户门锁操作权限(是否被冻结) |
| | | /// </summary> |
| | | /// <param name="doorLock:当前门锁"></param> |
| | | /// <param name="subAccountDistributedMark:登录账户的GUID"></param> |
| | | /// <returns></returns> |
| | | public static async System.Threading.Tasks.Task<bool> GetDoorLockOperateAccess(ZigBee.Device.DoorLock doorLock, string subAccountDistributedMark) |
| | | { |
| | | return await System.Threading.Tasks.Task.Run((Func<System.Threading.Tasks.Task<bool>>)(async () => |
| | | { |
| | | if (doorLock.IsFreezeAccount.ContainsKey(subAccountDistributedMark) == false) |
| | | { |
| | | doorLock.IsFreezeAccount.Add(subAccountDistributedMark, false); |
| | | } |
| | | var resultList = await Shared.Phone.UserCenter.DoorLock.DoorLockCommonInfo.GetAccountDoorLockUserList(doorLock, subAccountDistributedMark); |
| | | var d = resultList.Find((obj) => { return obj.IsFreezeUser == true; }); |
| | | if (d != null) |
| | | { |
| | | doorLock.IsFreezeAccount[subAccountDistributedMark] = true; |
| | | } |
| | | else |
| | | { |
| | | doorLock.IsFreezeAccount[subAccountDistributedMark] = false; |
| | | } |
| | | return doorLock.IsFreezeAccount[subAccountDistributedMark]; |
| | | })); |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 获取当前账户门锁远程开锁权限(是否被拥有远程开锁权限) |
| | | /// </summary> |
| | | /// <param name="doorLock:当前门锁"></param> |
| | | /// <param name="subAccountDistributedMark:登录账户的GUID"></param> |
| | | /// <returns></returns> |
| | | public static async System.Threading.Tasks.Task<bool> GetDoorLockUnlockAccess(ZigBee.Device.DoorLock doorLock, string subAccountDistributedMark) |
| | | { |
| | | return await System.Threading.Tasks.Task.Run((Func<System.Threading.Tasks.Task<bool>>)(async () => |
| | | { |
| | | if (doorLock.HasRemoteUnlockAccess.ContainsKey(subAccountDistributedMark) == false) |
| | | { |
| | | doorLock.HasRemoteUnlockAccess.Add(subAccountDistributedMark, false); |
| | | } |
| | | var resultList = await Shared.Phone.UserCenter.DoorLock.DoorLockCommonInfo.GetAccountDoorLockUserList(doorLock, subAccountDistributedMark); |
| | | var d = resultList.Find((obj) => { return obj.IsTempUnlockAuthority == true; }); |
| | | if (d != null) |
| | | { |
| | | doorLock.HasRemoteUnlockAccess[subAccountDistributedMark] = true; |
| | | } |
| | | else |
| | | { |
| | | doorLock.HasRemoteUnlockAccess[subAccountDistributedMark] = false; |
| | | } |
| | | return doorLock.HasRemoteUnlockAccess[subAccountDistributedMark]; |
| | | })); |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 获取当前账户列表(门锁只对主人和拥有管理员权限对成员用) |
| | | /// </summary> |
| | | 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) |
| | | { |
| | | var SubAccounListTemp = await ZigBee.Device.DoorLock.GetSubAccountByDistributedMark(); |
| | | var SubAccounListDictionary = new Dictionary<string, Shared.Phone.UserCenter.MemberInfoRes> { }; |
| | | |
| | | foreach (var member in SubAccounListTemp) |
| | | { |
| | | //判断一个账户绑定了邮箱的情况 |
| | | if (SubAccounListDictionary.ContainsKey(member.DistributedMark) == true |
| | | || member.Account == UserCenterResourse.UserInfo.Phone |
| | | || member.Account == UserCenterResourse.UserInfo.Email) |
| | | { |
| | | //如果是它自己的话,不显示,账户和绑定的邮箱只显示其中之一 |
| | | continue; |
| | | } |
| | | //去掉子账户中普通成员,留下拥有管理员权限的成员 |
| | | //(因为分配账户给普通成员,普通成员在app中不能进入设备管理那里,所以没发查看主人分配对账户) |
| | | if (member.AccountType != 1) |
| | | { |
| | | continue; |
| | | } |
| | | |
| | | SubAccounListDictionary.Add(member.DistributedMark, member); |
| | | } |
| | | |
| | | foreach (var addMemberID in SubAccounListDictionary.Keys) |
| | | { |
| | | SubAccounList.Add(SubAccounListDictionary[addMemberID]); |
| | | } |
| | | } |
| | | |
| | | // 注意: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> |
| | | public static async System.Threading.Tasks.Task<Dictionary<int, LocaDoorLockObj>> GetDoorLockAllAcountUserlist(ZigBee.Device.DoorLock doorLock) |
| | | { |
| | | return await System.Threading.Tasks.Task.Run((Func<System.Threading.Tasks.Task<Dictionary<int, LocaDoorLockObj>>>)(async () => |
| | | { |
| | | //1、读取门锁信息 |
| | | var getDoorLockInfo = await doorLock.GetDoorlockUserInfoAsync(); |
| | | |
| | | //本地门锁列表处理 |
| | | foreach (var curAccountObj in doorLock.localAllAccountList) |
| | | { |
| | | if (getDoorLockInfo == null) |
| | | { |
| | | doorLock.IsFailedToGetDoorLockInfo[curAccountObj.SubAccountDistributedMark] = true; |
| | | } |
| | | else |
| | | { |
| | | doorLock.IsFailedToGetDoorLockInfo[curAccountObj.SubAccountDistributedMark] = false; |
| | | } |
| | | } |
| | | // 用户信息处理 |
| | | if (getDoorLockInfo != null && getDoorLockInfo.doorLockUserDetailData != null) |
| | | { |
| | | doorLock.localDoorLockUserList.Clear(); |
| | | 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); |
| | | } |
| | | } |
| | | |
| | | |
| | | //2、读取云端门锁信息 |
| | | var getDoorLockInfoAllList = new List<ZigBee.Device.DoorLock.CloudDoorLockObj> { }; |
| | | var getDoorLockInfoList = await Shared.Phone.UserCenter.DoorLock.DoorLockCommonInfo.GetDoorLockAllAccountInfolist(doorLock); |
| | | if (getDoorLockInfoList != null) |
| | | { |
| | | if (getDoorLockInfoList.PageData.Count != 0) |
| | | { |
| | | getDoorLockInfoAllList = getDoorLockInfoList.PageData; |
| | | } |
| | | } |
| | | if (getDoorLockInfoList.TotalPages > 1) |
| | | { |
| | | for (int j = 1; j < getDoorLockInfoList.TotalPages; j++) |
| | | { |
| | | var getDoorLockInfoListTemp = await Shared.Phone.UserCenter.DoorLock.DoorLockCommonInfo.GetDoorLockAllAccountInfolist(doorLock, j + 1); |
| | | if (getDoorLockInfoListTemp != null) |
| | | { |
| | | if (getDoorLockInfoListTemp.PageData.Count != 0) |
| | | { |
| | | foreach (var curDoorLockUser in getDoorLockInfoListTemp.PageData) |
| | | { |
| | | getDoorLockInfoAllList.Add(curDoorLockUser); |
| | | } |
| | | } |
| | | } |
| | | } |
| | | } |
| | | |
| | | if (getDoorLockInfoAllList.Count != 0) |
| | | { |
| | | foreach (var curDoorLockUser in getDoorLockInfoAllList) |
| | | { |
| | | if (string.IsNullOrEmpty(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; |
| | | } |
| | | else |
| | | { |
| | | if (curDoorLockUser.DoorLockLocalUserId != null) |
| | | { |
| | | //门锁中没有,云端有用户ID,后台删除云端这些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); |
| | | } |
| | | } |
| | | } |
| | | doorLock.ReSave(); |
| | | } |
| | | } |
| | | return doorLock.localDoorLockUserList; |
| | | })); |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 获取当前账户中门锁信息 |
| | | /// </summary> |
| | | public static async System.Threading.Tasks.Task<Dictionary<int, LocaDoorLockObj>> GetLocaDoorLocklist(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 () => |
| | | { |
| | | // 读取设备中的信息 |
| | | 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); |
| | | } |
| | | } |
| | | } |
| | | { |
| | | //读取设备中的信息 |
| | | 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; |
| | | 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() { }; |
| | | // 读取云端门锁设备中的信息 |
| | | var getDoorLockInfoAllList = await Shared.Phone.UserCenter.DoorLock.DoorLockCommonInfo.GetDoorLockAllInfolist(doorLock, curAccountObj.SubAccountDistributedMark); |
| | | if (getDoorLockInfoAllList.Count != 0) |
| | | { |
| | | foreach (var getDoorLockInfoList in getDoorLockInfoAllList) |
| | | { |
| | | if (getDoorLockInfoList != null) |
| | | { |
| | | foreach (var curDoorLockUser in getDoorLockInfoList.PageData) |
| | | { |
| | | if (string.IsNullOrEmpty(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; |
| | | } |
| | | else |
| | | { |
| | | if (curDoorLockUser.DoorLockLocalUserId != null) |
| | | { |
| | | //门锁中没有,云端有用户ID,后台删除云端这些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); |
| | | } |
| | | } |
| | | } |
| | | doorLock.ReSave(); |
| | | } |
| | | } |
| | | } |
| | | } |
| | | return doorLock.localDoorLockUserList; |
| | | })); |
| | | } |
| | | |
| | | if (UserCenterResourse.UserInfo.AuthorityNo != 1) |
| | | { |
| | | localDoorLockObj.LoginAccessToken = UserCenterLogic.GetConnectMainToken(); |
| | | localDoorLockObj.IsOtherAccountCtrl = true; |
| | | } |
| | | /// <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 getDoorLockInfoAllList = new List<ZigBee.Device.DoorLock.CloudDoorLockObj> { }; |
| | | // 读取云端门锁设备中的信息 |
| | | var localDoorLockObj = new ZigBee.Device.DoorLock.GetDoorLockData() { }; |
| | | |
| | | localDoorLockObj.CloudAccountId = curAccountObj.SubAccountDistributedMark; |
| | | if (UserCenterResourse.UserInfo.AuthorityNo != 1) |
| | | { |
| | | localDoorLockObj.LoginAccessToken = UserCenterLogic.GetConnectMainToken(); |
| | | localDoorLockObj.IsOtherAccountCtrl = true; |
| | | } |
| | | |
| | | { |
| | | localDoorLockObj.DoorLockId = doorLock.DeviceAddr + "_" + doorLock.DeviceEpoint; |
| | | } |
| | | var getDoorLockInfoList = await ZigBee.Device.DoorLock.GetDoorLockInfoFromServer("DoorLock/GetDoorLockPager", localDoorLockObj); |
| | | localDoorLockObj.CloudAccountId = subAccountDistributedMark; |
| | | if (doorLock.DeviceAddr != null) |
| | | { |
| | | localDoorLockObj.DoorLockId = doorLock.DeviceAddr + "_" + doorLock.DeviceEpoint; |
| | | } |
| | | |
| | | 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; |
| | | })); |
| | | var getDoorLockInfoList = await ZigBee.Device.DoorLock.GetDoorLockInfoFromServer("DoorLock/GetDoorLockPager", localDoorLockObj); |
| | | if (getDoorLockInfoList != null) |
| | | { |
| | | if (getDoorLockInfoList.PageData.Count != 0) |
| | | { |
| | | getDoorLockInfoAllList = getDoorLockInfoList.PageData; |
| | | } |
| | | } |
| | | if (getDoorLockInfoList.TotalPages > 1) |
| | | { |
| | | for (int j = 1; j < getDoorLockInfoList.TotalPages; j++) |
| | | { |
| | | var pageSetting = new ZigBee.Device.DoorLock.PageSetting() { }; |
| | | pageSetting.Page = j + 1; |
| | | localDoorLockObj.pageSetting = pageSetting; |
| | | var getDoorLockInfoListTemp = await ZigBee.Device.DoorLock.GetDoorLockInfoFromServer("DoorLock/GetDoorLockPager", localDoorLockObj); |
| | | if (getDoorLockInfoListTemp != null) |
| | | { |
| | | if (getDoorLockInfoListTemp.PageData.Count != 0) |
| | | { |
| | | foreach (var curDoorLockUser in getDoorLockInfoListTemp.PageData) |
| | | { |
| | | getDoorLockInfoAllList.Add(curDoorLockUser); |
| | | } |
| | | } |
| | | } |
| | | } |
| | | } |
| | | |
| | | if (getDoorLockInfoAllList.Count != 0) |
| | | { |
| | | foreach (var curDoorLockUser in getDoorLockInfoAllList) |
| | | { |
| | | if (string.IsNullOrEmpty(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 getAllDoorLockInfoList = await Shared.Phone.UserCenter.DoorLock.DoorLockCommonInfo.GetDoorLockAllInfolist(doorLock, subAccountDistributedMark); |
| | | if (getAllDoorLockInfoList != null) |
| | | { |
| | | foreach (var getDoorLockInfoList in getAllDoorLockInfoList) |
| | | { |
| | | //获取云端存储的门锁成员信息 |
| | | foreach (var curDoorLockUser in getDoorLockInfoList.PageData) |
| | | { |
| | | if (string.IsNullOrEmpty(curDoorLockUser.CloudAccountId) || curDoorLockUser.CloudAccountId != subAccountDistributedMark) |
| | | { |
| | | continue; |
| | | } |
| | | else |
| | | { |
| | | curAccountDoorLockUserList.Add(curDoorLockUser); |
| | | } |
| | | } |
| | | } |
| | | } |
| | | return curAccountDoorLockUserList; |
| | | })); |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 获取当前账户门锁的所有信息 |
| | | /// </summary> |
| | | public static async System.Threading.Tasks.Task<List<ZigBee.Device.DoorLock.GetDoorLockDataRes>> GetDoorLockAllInfolist(ZigBee.Device.DoorLock doorLock, string subAccountDistributedMark) |
| | | { |
| | | return await System.Threading.Tasks.Task.Run((Func<System.Threading.Tasks.Task<List<ZigBee.Device.DoorLock.GetDoorLockDataRes>>>)(async () => |
| | | { |
| | | var getDoorLockInfoAllList = new List<ZigBee.Device.DoorLock.GetDoorLockDataRes> { }; |
| | | |
| | | // 读取云端门锁设备中的信息 |
| | | 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) |
| | | { |
| | | if (getDoorLockInfoList.PageData.Count != 0) |
| | | { |
| | | getDoorLockInfoAllList.Add(getDoorLockInfoList); |
| | | } |
| | | } |
| | | if (getDoorLockInfoList.TotalPages > 1) |
| | | { |
| | | for (int j = 1; j < getDoorLockInfoList.TotalPages; j++) |
| | | { |
| | | var pageSetting = new ZigBee.Device.DoorLock.PageSetting() { }; |
| | | pageSetting.Page = j + 1; |
| | | localDoorLockObj.pageSetting = pageSetting; |
| | | var getDoorLockInfoListTemp = await ZigBee.Device.DoorLock.GetDoorLockInfoFromServer("DoorLock/GetDoorLockPager", localDoorLockObj); |
| | | if (getDoorLockInfoListTemp != null) |
| | | { |
| | | getDoorLockInfoAllList.Add(getDoorLockInfoListTemp); |
| | | } |
| | | } |
| | | } |
| | | return getDoorLockInfoAllList; |
| | | })); |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 获取当前账户门锁的所有信息 |
| | | /// </summary> |
| | | public static async System.Threading.Tasks.Task<ZigBee.Device.DoorLock.GetDoorLockDataRes> GetDoorLockAllAccountInfolist(ZigBee.Device.DoorLock doorLock, int curPage = 1) |
| | | { |
| | | 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; |
| | | } |
| | | if (doorLock.DeviceAddr != null) |
| | | { |
| | | localDoorLockObj.DoorLockId = doorLock.DeviceAddr + "_" + doorLock.DeviceEpoint; |
| | | } |
| | | var pageSetting = new ZigBee.Device.DoorLock.PageSetting() { }; |
| | | pageSetting.Page = curPage; |
| | | localDoorLockObj.pageSetting = pageSetting; |
| | | 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, int curPage) |
| | | { |
| | | 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; |
| | | } |
| | | if (doorLock.DeviceAddr != null) |
| | | { |
| | | localDoorLockObj.DoorLockId = doorLock.DeviceAddr + "_" + doorLock.DeviceEpoint; |
| | | } |
| | | var pageSetting = new ZigBee.Device.DoorLock.PageSetting() { }; |
| | | pageSetting.Page = curPage; |
| | | localDoorLockObj.pageSetting = pageSetting; |
| | | 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 (string.IsNullOrEmpty(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> |