黄学彪
2019-11-13 8b9ce384b26c414db32f98e94e088f5334869c2d
ZigbeeApp/Shared/Phone/UserCenter/DoorLock/DoorLockCommonInfo.cs
@@ -1,6 +1,7 @@
using System;
using System.Collections.Generic;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
using ZigBee.Device;
namespace Shared.Phone.UserCenter.DoorLock
@@ -24,13 +25,73 @@
        public static int InValidDateSecond = 0;
        #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 || UserCenterResourse.UserInfo.AuthorityNo == 2)
                //只有主人才有权限获取自己的子账户
                if (UserCenterResourse.UserInfo.AuthorityNo == 1)
                {
                    SubAccounList = await ZigBee.Device.DoorLock.GetSubAccountByDistributedMark();
                }
@@ -60,76 +121,76 @@
                 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)
                     if (getDoorLockInfo != null && getDoorLockInfo.doorLockUserDetailData != null)
                     {
                         var localDoorLockObj1 = new ZigBee.Device.DoorLock.LocaDoorLockObj()
                         var dataList = getDoorLockInfo.doorLockUserDetailData.UserObjList;
                         foreach (var doorData in dataList)
                         {
                             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 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.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;
                             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);
                             }
                         }
                     }
                     //获取云端存储的门锁成员信息
                     //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;
                     //    }
                     //  读取云端门锁设备中的信息
                     var localDoorLockObj = new ZigBee.Device.DoorLock.GetDoorLockData() { };
                     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.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);
                                     int i = 0;
                                 }
                             }
                         }
                         doorLock.ReSave();
                     }
                     //}
                     doorLock.ReSave();
                 }
                 return doorLock.localDoorLockUserList;
             }));
@@ -187,7 +248,7 @@
        }
        /// <summary>
        ///  获取云端存储的成员信息
        ///  获取云端存储的当前账户的门锁信息
        /// </summary>
        public static async System.Threading.Tasks.Task<List<ZigBee.Device.DoorLock.CloudDoorLockObj>> GetAccountDoorLockUserList(ZigBee.Device.DoorLock doorLock, string subAccountDistributedMark)
        {
@@ -283,7 +344,6 @@
                        {
                            doorLock.localDoorLockAccountList[curDoorLockUser.DoorLockLocalUserId] = doorLockObj;
                        }
                    }
                }
                return doorLock.localDoorLockUserList;