HDL Home App 第二版本 旧平台金堂用 正在使用
ZigbeeApp/Shared/Phone/UserCenter/DoorLock/MemberFrozenPage.cs
old mode 100755 new mode 100644
@@ -5,862 +5,787 @@
using ZigBee.Device;
namespace Shared.Phone.UserCenter.DoorLock
{
    public class MemberFrozenPage : DoorLockCommonLayout, ZigBee.Common.IStatus
  public class MemberFrozenPage : DoorLockCommonLayout
  {
    /// <summary>
    /// 构造函数
    /// </summary>
    /// <param name="doorLock"></param>
    public MemberFrozenPage(ZigBee.Device.DoorLock doorLock, Shared.Phone.UserCenter.MemberInfoRes accountObj)
    {
        /// <summary>
        /// 构造函数
        /// </summary>
        /// <param name="doorLock"></param>
        public MemberFrozenPage(ZigBee.Device.DoorLock doorLock, Shared.Phone.UserCenter.MemberInfoRes accountObj)
      this.doorLock = doorLock;
      this.curAccountObj = accountObj;
      BackgroundColor = Shared.Common.ZigbeeColor.Current.GXCTopViewBackgroundColor;
    }
    #region  变量申明
    /// <summary>
    /// 当前门锁
    /// </summary>
    ZigBee.Device.DoorLock doorLock;
    /// <summary>
    /// 当前成员对象v
    /// </summary>
    Shared.Phone.UserCenter.MemberInfoRes curAccountObj;
    /// <summary>
    /// 刷新View
    /// </summary>
    VerticalRefreshLayout bodyView;
    #endregion
    /// <summary>
    /// 初始化数据信息
    /// </summary>
    void ReadDoorLockUserInfo()
    {
      System.Threading.Tasks.Task.Run(async () =>
      {
        try
        {
            this.doorLock = doorLock;
            this.curAccountObj = accountObj;
            BackgroundColor = Shared.Common.ZigbeeColor.Current.GXCTopViewBackgroundColor;
          var list = await Shared.Phone.UserCenter.DoorLock.DoorLockCommonInfo.GetDoorLockAllAcountUserlist(doorLock);
          var result = await Shared.Phone.UserCenter.DoorLock.DoorLockCommonInfo.GetDoorLockOperateAccess(doorLock, curAccountObj.SubAccountDistributedMark);
          var result1 = await Shared.Phone.UserCenter.DoorLock.DoorLockCommonInfo.GetDoorLockUnlockAccess(doorLock, curAccountObj.SubAccountDistributedMark);
          var result2 = await Shared.Phone.UserCenter.DoorLock.DoorLockCommonInfo.GetDoorLockOperateAccess(doorLock, curAccountObj?.SubAccountDistributedMark);
          if (result2 == true)
          {
            doorLock.IsFreezeAccount[curAccountObj.SubAccountDistributedMark] = true;
          }
          else
          {
            doorLock.IsFreezeAccount[curAccountObj.SubAccountDistributedMark] = false;
          }
          var result3 = await Shared.Phone.UserCenter.DoorLock.DoorLockCommonInfo.GetDoorLockUnlockAccess(doorLock, curAccountObj.SubAccountDistributedMark);
          if (result3 == true)
          {
            doorLock.HasRemoteUnlockAccess[curAccountObj.SubAccountDistributedMark] = true;
          }
          else
          {
            doorLock.HasRemoteUnlockAccess[curAccountObj.SubAccountDistributedMark] = false;
          }
        }
        #region ◆ 变量申明__________________________
        ZigBee.Device.DoorLock doorLock;
        Shared.Phone.UserCenter.MemberInfoRes curAccountObj;
        VerticalRefreshLayout bodyView;
        #endregion
        void ReadDoorLockUserInfo()
        catch { }
        finally
        {
            System.Threading.Tasks.Task.Run(async () =>
            {
                try
          Application.RunOnMainThread(() =>
                {
                    var list = await Shared.Phone.UserCenter.DoorLock.DoorLockCommonInfo.GetDoorLockAllAcountUserlist(doorLock);
                    var result = await Shared.Phone.UserCenter.DoorLock.DoorLockCommonInfo.GetDoorLockOperateAccess(doorLock, curAccountObj.SubAccountDistributedMark);
                    var result1 = await Shared.Phone.UserCenter.DoorLock.DoorLockCommonInfo.GetDoorLockUnlockAccess(doorLock, curAccountObj.SubAccountDistributedMark);
                }
                catch { }
                finally
                {
                    Application.RunOnMainThread(() =>
                    {
                        MidRefresh();
                        bodyView.EndHeaderRefreshing();
                    });
                }
            });
                MidRefresh();
                bodyView.EndHeaderRefreshing();
              });
        }
      });
    }
        /// <summary>
        /// UI显示
        /// </summary>
        public void Show()
    /// <summary>
    /// UI显示
    /// </summary>
    public void Show()
    {
      string accountTitle = "";
      if (curAccountObj.UserName != null)
      {
        accountTitle = curAccountObj.UserName;
      }
      else
      {
        accountTitle = curAccountObj.Account;
      }
      this.TopFrameLayout(this, accountTitle);
      EventHandler<MouseEventArgs> eHandlerBack = (sender, e) =>
      {
        RemoveFromParent();
      };
      this.btnBack.MouseUpEventHandler += eHandlerBack;
      this.btnBackFrameLayout.MouseUpEventHandler += eHandlerBack;
      this.MidFrameLayout(this);
      bodyView = new VerticalRefreshLayout()
      {
      };
      this.midFrameLayout.AddChidren(bodyView);
      MidRefresh();
      bodyView.BeginHeaderRefreshingAction += () =>
      {
        bodyView.BeginHeaderRefreshing();
        ReadDoorLockUserInfo();
      };
    }
    /// <summary>
    /// 中部布局
    /// </summary>
    public async void MidRefresh()
    {
      bodyView.RemoveAll();
      for (int i = 0; i < 3; i++)
      {
        var RowView = new FrameLayout()
        {
            string accountTitle = "";
            if (curAccountObj.UserName != null)
          Height = Application.GetRealHeight(127 + 23),
          BackgroundColor = Shared.Common.ZigbeeColor.Current.XMWhite,
        };
        bodyView.AddChidren(RowView);
        var btnText = new Button()
        {
          X = Application.GetRealWidth(58),
          Width = Application.GetRealWidth(300),
          TextAlignment = TextAlignment.CenterLeft,
          TextColor = Shared.Common.ZigbeeColor.Current.XMTopTitleText,
          Gravity = Gravity.CenterVertical,
          TextSize = 14,
        };
        RowView.AddChidren(btnText);
        var btnRightFrameLayout = new FrameLayout()
        {
          Width = Application.GetRealWidth(204),
          X = Application.GetRealWidth(919 - 58),
          Y = Application.GetRealHeight(25),
        };
        RowView.AddChidren(btnRightFrameLayout);
        var btnRight = new Button()
        {
          Height = Application.GetMinRealAverage(60),
          Width = Application.GetMinRealAverage(60),
          X = Application.GetRealWidth(72),
          Y = Application.GetRealHeight(32),
          UnSelectedImagePath = "DoorLock/RightIcon.png",
        };
        btnRightFrameLayout.AddChidren(btnRight);
        var line2 = new Button()
        {
          Y = RowView.Height - 1,
          X = Application.GetRealWidth(58),
          Width = Application.GetRealWidth(962),
          Height = 1,
          BackgroundColor = Shared.Common.ZigbeeColor.Current.XMRowLine,
        };
        RowView.AddChidren(line2);
        if (i == 0)
        {
          btnText.Text = Language.StringByID(R.MyInternationalizationString.LockMethod);
        }
        else if (i == 1)
        {
          btnText.Text = Language.StringByID(R.MyInternationalizationString.FrozenUser);
          btnRight.X = Application.GetRealWidth(50);
          btnRight.Y = Application.GetRealHeight(32);
          btnRight.Height = Application.GetMinRealAverage(63);
          btnRight.Width = Application.GetMinRealAverage(104);
          btnRight.UnSelectedImagePath = "DoorLock/Switch.png";
          btnRight.SelectedImagePath = "DoorLock/SwitchOn.png";
          var result = doorLock.IsFreezeAccount[curAccountObj.SubAccountDistributedMark];
          if (result == true)
          {
            btnRight.IsSelected = true;
          }
          else
          {
            btnRight.IsSelected = false;
          }
        }
        else if (i == 2)
        {
          if (doorLock.IsFreezeAccount[curAccountObj.SubAccountDistributedMark] == false)
          {
            btnText.Text = Language.StringByID(R.MyInternationalizationString.TempUnlockPermission);
            btnRight.X = Application.GetRealWidth(50);
            btnRight.Y = Application.GetRealHeight(32);
            btnRight.Height = Application.GetMinRealAverage(63);
            btnRight.Width = Application.GetMinRealAverage(104);
            btnRight.UnSelectedImagePath = "DoorLock/Switch.png";
            btnRight.SelectedImagePath = "DoorLock/SwitchOn.png";
            line2.Visible = false;
            var result1 = doorLock.HasRemoteUnlockAccess[curAccountObj.SubAccountDistributedMark];
            if (result1 == true)
            {
                accountTitle = curAccountObj.UserName;
              btnRight.IsSelected = true;
            }
            else
            {
                accountTitle = curAccountObj.Account;
              btnRight.IsSelected = false;
            }
            this.TopFrameLayout(this, accountTitle);
            EventHandler<MouseEventArgs> eHandlerBack = (sender, e) =>
            {
                RemoveFromParent();
            };
            this.btnBack.MouseUpEventHandler += eHandlerBack;
            this.btnBackFrameLayout.MouseUpEventHandler += eHandlerBack;
            this.MidFrameLayout(this);
            bodyView = new VerticalRefreshLayout()
            {
            };
            this.midFrameLayout.AddChidren(bodyView);
            MidRefresh();
            bodyView.BeginHeaderRefreshingAction += () =>
            {
                bodyView.BeginHeaderRefreshing();
                ReadDoorLockUserInfo();
            };
          }
          else
          {
            btnText.Width = 0;
            btnRight.Width = 0;
            line2.Width = 0;
            RowView.BackgroundColor = Shared.Common.ZigbeeColor.Current.XMMidFrameLayout;
          }
        }
        public async void MidRefresh()
        int currentIndex = i;
        EventHandler<MouseEventArgs> eHandler = (sender, e) =>
        {
            bodyView.RemoveAll();
            for (int i = 0; i < 3; i++)
          if (currentIndex == 0)
          {
            var unLockMethod = new Shared.Phone.UserCenter.DoorLock.UnLockMethod(doorLock, curAccountObj);
            Shared.Phone.UserView.HomePage.Instance.AddChidren(unLockMethod);
            Shared.Phone.UserView.HomePage.Instance.PageIndex += 1;
            unLockMethod.Show();
          }
          else if (currentIndex == 1)
          {
            if (!btnRight.IsSelected)
            {
                var RowView = new FrameLayout()
                {
                    Height = Application.GetRealHeight(127 + 23),
                    BackgroundColor = Shared.Common.ZigbeeColor.Current.XMWhite,
                };
                bodyView.AddChidren(RowView);
                var btnText = new Button()
                {
                    X = Application.GetRealWidth(58),
                    Width = Application.GetRealWidth(300),
                    TextAlignment = TextAlignment.CenterLeft,
                    TextColor = Shared.Common.ZigbeeColor.Current.XMTopTitleText,
                    Gravity = Gravity.CenterVertical,
                    TextSize = 14,
                };
                RowView.AddChidren(btnText);
                var btnRightFrameLayout = new FrameLayout()
                {
                    Width = Application.GetRealWidth(204),
                    X = Application.GetRealWidth(919 - 58),
                    Y = Application.GetRealHeight(25),
                };
                RowView.AddChidren(btnRightFrameLayout);
                var btnRight = new Button()
                {
                    Height = Application.GetRealHeight(60),
                    Width = Application.GetRealWidth(60),
                    X = Application.GetRealWidth(72),
                    Y = Application.GetRealHeight(32),
                    UnSelectedImagePath = "DoorLock/RightIcon.png",
                };
                btnRightFrameLayout.AddChidren(btnRight);
                var line2 = new Button()
                {
                    Y = RowView.Height - 1,
                    X = Application.GetRealWidth(58),
                    Width = Application.GetRealWidth(962),
                    Height = 1,
                    BackgroundColor = Shared.Common.ZigbeeColor.Current.XMRowLine,
                };
                RowView.AddChidren(line2);
                if (i == 0)
                {
                    btnText.Text = Language.StringByID(R.MyInternationalizationString.LockMethod);
                }
                else if (i == 1)
                {
                    btnText.Text = Language.StringByID(R.MyInternationalizationString.FrozenUser);
                    btnRight.X = Application.GetRealWidth(50);
                    btnRight.Y = Application.GetRealHeight(32);
                    btnRight.Height = Application.GetRealHeight(63);
                    btnRight.Width = Application.GetRealWidth(104);
                    btnRight.UnSelectedImagePath = "DoorLock/Switch.png";
                    btnRight.SelectedImagePath = "DoorLock/SwitchOn.png";
                    var result = await Shared.Phone.UserCenter.DoorLock.DoorLockCommonInfo.GetDoorLockOperateAccess(doorLock, curAccountObj.SubAccountDistributedMark);
                    if (result == true)
                    {
                        btnRight.IsSelected = true;
                    }
                    else
                    {
                        btnRight.IsSelected = false;
                    }
                }
                else if (i == 2)
                {
                    if (doorLock.IsFreezeAccount[curAccountObj.SubAccountDistributedMark] == false)
                    {
                        btnText.Text = Language.StringByID(R.MyInternationalizationString.TempUnlockPermission);
                        btnRight.X = Application.GetRealWidth(50);
                        btnRight.Y = Application.GetRealHeight(32);
                        btnRight.Height = Application.GetRealHeight(63);
                        btnRight.Width = Application.GetRealWidth(104);
                        btnRight.UnSelectedImagePath = "DoorLock/Switch.png";
                        btnRight.SelectedImagePath = "DoorLock/SwitchOn.png";
                        line2.Visible = false;
                        var result1 = await Shared.Phone.UserCenter.DoorLock.DoorLockCommonInfo.GetDoorLockUnlockAccess(doorLock, curAccountObj.SubAccountDistributedMark);
                        if (result1 == true)
                        {
                            btnRight.IsSelected = true;
                        }
                        else
                        {
                            btnRight.IsSelected = false;
                        }
                    }
                    else
                    {
                        btnText.Width = 0;
                        btnRight.Width = 0;
                        line2.Width = 0;
                        RowView.BackgroundColor = Shared.Common.ZigbeeColor.Current.XMMidFrameLayout;
                    }
                }
                int currentIndex = i;
                EventHandler<MouseEventArgs> eHandler = (sender, e) =>
                {
                    if (currentIndex == 0)
                    {
                        var unLockMethod = new Shared.Phone.UserCenter.DoorLock.UnLockMethod(doorLock, curAccountObj);
                        Shared.Phone.UserView.HomePage.Instance.AddChidren(unLockMethod);
                        Shared.Phone.UserView.HomePage.Instance.PageIndex += 1;
                        unLockMethod.Show();
                    }
                    else if (currentIndex == 1)
                    {
                        btnRight.IsSelected = !btnRight.IsSelected;
                        if (btnRight.IsSelected)
                        {
                            FreezeUser(true);
                        }
                        else
                        {
                            FreezeUser(false);
                        }
                    }
                    else if (currentIndex == 2)
                    {
                        btnRight.IsSelected = !btnRight.IsSelected;
                        if (btnRight.IsSelected)
                        {
                            HasRemoteUnlockAccessMethod(true);
                        }
                        else
                        {
                            HasRemoteUnlockAccessMethod(false);
                        }
                    }
                };
                if (i == 0)
                {
                    btnRightFrameLayout.MouseUpEventHandler += eHandler;
                    btnRight.MouseUpEventHandler += eHandler;
                    RowView.MouseUpEventHandler += eHandler;
                    btnText.MouseUpEventHandler += eHandler;
                }
                else if (i == 1)
                {
                    btnRightFrameLayout.MouseUpEventHandler += eHandler;
                    btnRight.MouseUpEventHandler += eHandler;
                }
                else if (i == 2)
                {
                    btnRightFrameLayout.MouseUpEventHandler += eHandler;
                    btnRight.MouseUpEventHandler += eHandler;
                }
              FreezeUser(true);
            }
        }
        //冻结账户
        void FreezeUser(bool isFreeze)
        {
            var alert = new Alert(Language.StringByID(R.MyInternationalizationString.Tip), Language.StringByID(R.MyInternationalizationString.SureToFreezeAccount),
                                                 Language.StringByID(R.MyInternationalizationString.Cancel), Language.StringByID(R.MyInternationalizationString.Confrim));
            alert.Show();
            alert.ResultEventHandler += (sender1, e1) =>
             {
                 if (e1)
                 {
                     System.Threading.Tasks.Task.Run(async () =>
                     {
                         int successConunt = 0;
                         int operateConunt = -1;
                         Application.RunOnMainThread(() => { CommonPage.Loading.Start(""); });
                         try
                         {
                             var doorLockId = doorLock.DeviceAddr + "_" + doorLock.DeviceEpoint;
                             var curAccountDoorLockUserList = await Shared.Phone.UserCenter.DoorLock.DoorLockCommonInfo.GetAccountDoorLockUserList(doorLock, curAccountObj.SubAccountDistributedMark);
                             if (curAccountDoorLockUserList.Count != 0)
                             {
                                 //修改云端存储信息
                                 operateConunt = curAccountDoorLockUserList.Count;
                                 var tempGroupId = new List<List<int>>();
                                 var tempUserIdList = new List<int> { };
                                 var tempUserObjList = new List<ZigBee.Device.DoorLock.CloudDoorLockObj> { };
                                 foreach (var curDoorLockUser in curAccountDoorLockUserList)
                                 {
                                     // 账户中没有门锁用户
                                     if (curDoorLockUser.DoorLockLocalUserId == null || curDoorLockUser.DoorLockLocalUserId == "")
                                     {
                                         if (isFreeze)
                                         {
                                             var refreshDoorLockData = new ZigBee.Device.DoorLock.RefreshDoorLockData();
                                             if (UserCenterResourse.UserInfo.AuthorityNo != 1)
                                             {
                                                 refreshDoorLockData.LoginAccessToken = UserCenterLogic.GetConnectMainToken();
                                                 refreshDoorLockData.IsOtherAccountCtrl = true;
                                             }
                                             if (doorLock.DeviceAddr != null)
                                             {
                                                 refreshDoorLockData.DoorLockId = doorLock.DeviceAddr + "_" + doorLock.DeviceEpoint;
                                             }
                                             refreshDoorLockData.PrimaryId = curDoorLockUser.Id;
                                             refreshDoorLockData.IsFreezeUser = true;
                                             refreshDoorLockData.IsTempUnlockAuthority = doorLock.HasRemoteUnlockAccess[curAccountObj.SubAccountDistributedMark];
                                             //冻结云端
                                             var result = await ZigBee.Device.DoorLock.SendDoorLockToServer("DoorLock/UpdateDoorLock", refreshDoorLockData);
                                             if (result != null)
                                             {
                                                 if (result.StateCode == "Success")
                                                 {
                                                     successConunt++;
                                                 }
                                                 else
                                                 {
                                                     Application.RunOnMainThread(() =>
                                                     {
                                                         if (isFreeze)
                                                         {
                                                             new Tip() { MaxWidth = 150, Text = Language.StringByID(R.MyInternationalizationString.FreezeFailed), Direction = AMPopTipDirection.None, CloseTime = 1 }.Show(Common.CommonPage.Instance);
                                                         }
                                                         else
                                                         {
                                                             new Tip() { MaxWidth = 150, Text = Language.StringByID(R.MyInternationalizationString.UnFreezeFailed), Direction = AMPopTipDirection.None, CloseTime = 1 }.Show(Common.CommonPage.Instance);
                                                         }
                                                         return;
                                                     });
                                                 }
                                             }
                                             else
                                             {
                                                 Application.RunOnMainThread(() =>
                                                 {
                                                     new Tip() { MaxWidth = 150, Text = Language.StringByID(R.MyInternationalizationString.CloudServerResponseOvertime), Direction = AMPopTipDirection.None, CloseTime = 1 }.Show(Common.CommonPage.Instance);
                                                 });
                                             }
                                         }
                                         else
                                         {
                                             var refreshDoorLockData = new ZigBee.Device.DoorLock.RefreshDoorLockData();
                                             if (UserCenterResourse.UserInfo.AuthorityNo != 1)
                                             {
                                                 refreshDoorLockData.LoginAccessToken = UserCenterLogic.GetConnectMainToken();
                                                 refreshDoorLockData.IsOtherAccountCtrl = true;
                                             }
                                             if (doorLock.DeviceAddr != null)
                                             {
                                                 refreshDoorLockData.DoorLockId = doorLock.DeviceAddr + "_" + doorLock.DeviceEpoint;
                                             }
                                             refreshDoorLockData.PrimaryId = curDoorLockUser.Id;
                                             refreshDoorLockData.IsFreezeUser = false;
                                             refreshDoorLockData.IsTempUnlockAuthority = doorLock.HasRemoteUnlockAccess[curAccountObj.SubAccountDistributedMark];
                                             //解冻云端
                                             var result = await ZigBee.Device.DoorLock.SendDoorLockToServer("DoorLock/UpdateDoorLock", refreshDoorLockData);
                                             if (result != null)
                                             {
                                                 if (result.StateCode == "Success")
                                                 {
                                                     successConunt++;
                                                 }
                                                 else
                                                 {
                                                     Application.RunOnMainThread(() =>
                                                     {
                                                         new Tip() { MaxWidth = 150, Text = Language.StringByID(R.MyInternationalizationString.FreezeFailed), Direction = AMPopTipDirection.None, CloseTime = 1 }.Show(Common.CommonPage.Instance);
                                                     });
                                                 }
                                             }
                                             else
                                             {
                                                 Application.RunOnMainThread(() =>
                                                 {
                                                     new Tip() { MaxWidth = 150, Text = Language.StringByID(R.MyInternationalizationString.CloudServerResponseOvertime), Direction = AMPopTipDirection.None, CloseTime = 1 }.Show(Common.CommonPage.Instance);
                                                 });
                                             }
                                         }
                                     }
                                     else
                                     {
                                         if (tempUserIdList.Count == 9)
                                         {
                                             tempGroupId.Add(tempUserIdList);
                                             tempUserIdList = new List<int>();
                                         }
                                         tempUserIdList.Add(int.Parse(curDoorLockUser.DoorLockLocalUserId));
                                         tempUserObjList.Add(curDoorLockUser);
                                     }
                                 }
                                 tempGroupId.Add(tempUserIdList);
                                 //批量冻结门锁中的账户
                                 ZigBee.Device.DoorLock.AccessType accessType;
                                 if (isFreeze)
                                 {
                                     accessType = ZigBee.Device.DoorLock.AccessType.DisEnableMoreUsers;
                                 }
                                 else
                                 {
                                     accessType = ZigBee.Device.DoorLock.AccessType.EnableMoreUsers;
                                 }
                                 //冻结/解冻用户
                                 int count1 = tempGroupId.Count;
                                 int count2 = 0;
                                 for (int i = 0; i < tempGroupId.Count; i++)
                                 {
                                     var tempUserIdList1 = tempGroupId[i];
                                     if (tempUserIdList1.Count == 0)
                                     {
                                         return;
                                     }
                                     var passData = doorLock.FreezeAccountData(tempUserIdList1, accessType);
                                     var resultData = await doorLock.DefaultControlAsync(passData);
                                     if (resultData != null && resultData.defaultControlResponseData != null)
                                     {
                                         if (resultData.defaultControlResponseData.status == 32)
                                         {
                                             count2++;
                                         }
                                         else if (resultData.defaultControlResponseData.status == 33)
                                         {
                                             count2++;
                                         }
                                         System.Threading.Thread.Sleep(3000);
                                     }
                                     else
                                     {
                                         Application.RunOnMainThread(() =>
                                         {
                                             new Tip() { MaxWidth = 150, Text = Language.StringByID(R.MyInternationalizationString.GwResponseOvertime), Direction = AMPopTipDirection.None, CloseTime = 2 }.Show(Common.CommonPage.Instance);
                                         });
                                         return;
                                     }
                                 }
                                 // 批量冻结门锁中的账户后,准备冻结云端账户
                                 if (count2 == count1)
                                 {
                                     foreach (var curDoorLockUser in tempUserObjList)
                                     {
                                         if (isFreeze)
                                         {
                                             var refreshDoorLockData = new ZigBee.Device.DoorLock.RefreshDoorLockData();
                                             if (UserCenterResourse.UserInfo.AuthorityNo != 1)
                                             {
                                                 refreshDoorLockData.LoginAccessToken = UserCenterLogic.GetConnectMainToken();
                                                 refreshDoorLockData.IsOtherAccountCtrl = true;
                                             }
                                             if (doorLock.DeviceAddr != null)
                                             {
                                                 refreshDoorLockData.DoorLockId = doorLock.DeviceAddr + "_" + doorLock.DeviceEpoint;
                                             }
                                             refreshDoorLockData.OpenLockMode = curDoorLockUser.OpenLockMode;
                                             refreshDoorLockData.DoorLockLocalUserId = curDoorLockUser.DoorLockLocalUserId;
                                             refreshDoorLockData.PrimaryId = curDoorLockUser.Id;
                                             refreshDoorLockData.IsFreezeUser = true;
                                             refreshDoorLockData.IsTempUnlockAuthority = doorLock.HasRemoteUnlockAccess[curAccountObj.SubAccountDistributedMark];
                                             //冻结云端
                                             var result = await ZigBee.Device.DoorLock.SendDoorLockToServer("DoorLock/UpdateDoorLock", refreshDoorLockData);
                                             if (result != null)
                                             {
                                                 if (result.StateCode == "Success")
                                                 {
                                                     successConunt++;
                                                 }
                                                 else
                                                 {
                                                     Application.RunOnMainThread(() =>
                                                     {
                                                         if (isFreeze)
                                                         {
                                                             new Tip() { MaxWidth = 150, Text = Language.StringByID(R.MyInternationalizationString.FreezeFailed), Direction = AMPopTipDirection.None, CloseTime = 1 }.Show(Common.CommonPage.Instance);
                                                         }
                                                         else
                                                         {
                                                             new Tip() { MaxWidth = 150, Text = Language.StringByID(R.MyInternationalizationString.UnFreezeFailed), Direction = AMPopTipDirection.None, CloseTime = 1 }.Show(Common.CommonPage.Instance);
                                                         }
                                                         return;
                                                     });
                                                 }
                                             }
                                             else
                                             {
                                                 Application.RunOnMainThread(() =>
                                                 {
                                                     new Tip() { MaxWidth = 150, Text = Language.StringByID(R.MyInternationalizationString.CloudServerResponseOvertime), Direction = AMPopTipDirection.None, CloseTime = 2 }.Show(Common.CommonPage.Instance);
                                                 });
                                             }
                                         }
                                         else
                                         {
                                             var refreshDoorLockData = new ZigBee.Device.DoorLock.RefreshDoorLockData();
                                             if (UserCenterResourse.UserInfo.AuthorityNo != 1)
                                             {
                                                 refreshDoorLockData.LoginAccessToken = UserCenterLogic.GetConnectMainToken();
                                                 refreshDoorLockData.IsOtherAccountCtrl = true;
                                             }
                                             if (doorLock.DeviceAddr != null)
                                             {
                                                 refreshDoorLockData.DoorLockId = doorLock.DeviceAddr + "_" + doorLock.DeviceEpoint;
                                             }
                                             refreshDoorLockData.OpenLockMode = curDoorLockUser.OpenLockMode;
                                             refreshDoorLockData.DoorLockLocalUserId = curDoorLockUser.DoorLockLocalUserId;
                                             refreshDoorLockData.PrimaryId = curDoorLockUser.Id;
                                             refreshDoorLockData.IsFreezeUser = false;
                                             refreshDoorLockData.IsTempUnlockAuthority = doorLock.HasRemoteUnlockAccess[curAccountObj.SubAccountDistributedMark];
                                             //解冻云端
                                             var result = await ZigBee.Device.DoorLock.SendDoorLockToServer("DoorLock/UpdateDoorLock", refreshDoorLockData);
                                             if (result != null)
                                             {
                                                 if (result.StateCode == "Success")
                                                 {
                                                     successConunt++;
                                                 }
                                                 else
                                                 {
                                                     Application.RunOnMainThread(() =>
                                                     {
                                                         new Tip() { MaxWidth = 150, Text = Language.StringByID(R.MyInternationalizationString.FreezeFailed), Direction = AMPopTipDirection.None, CloseTime = 1 }.Show(Common.CommonPage.Instance);
                                                     });
                                                 }
                                             }
                                             else
                                             {
                                                 Application.RunOnMainThread(() =>
                                                 {
                                                     new Tip() { MaxWidth = 150, Text = Language.StringByID(R.MyInternationalizationString.CloudServerResponseOvertime), Direction = AMPopTipDirection.None, CloseTime = 2 }.Show(Common.CommonPage.Instance);
                                                 });
                                             }
                                         }
                                     }
                                 }
                                 else
                                 {
                                     Application.RunOnMainThread(() =>
                                     {
                                         if (isFreeze)
                                         {
                                             new Tip() { MaxWidth = 150, Text = Language.StringByID(R.MyInternationalizationString.FreezeFailed) + ".", Direction = AMPopTipDirection.None, CloseTime = 2 }.Show(Common.CommonPage.Instance);
                                         }
                                         else
                                         {
                                             new Tip() { MaxWidth = 150, Text = Language.StringByID(R.MyInternationalizationString.UnFreezeFailed) + ".", Direction = AMPopTipDirection.None, CloseTime = 2 }.Show(Common.CommonPage.Instance);
                                         }
                                         return;
                                     });
                                 }
                             }
                             else
                             {
                                 //添加云端存储信息
                                 //冻结/解冻云端
                                 var addLockInfo = new ZigBee.Device.DoorLock.AddDoorLockData();
                                 if (UserCenterResourse.UserInfo.AuthorityNo != 1)
                                 {
                                     addLockInfo.LoginAccessToken = UserCenterLogic.GetConnectMainToken();
                                     addLockInfo.IsOtherAccountCtrl = true;
                                 }
                                 addLockInfo.CloudAccountId = curAccountObj.SubAccountDistributedMark;
                                 if (doorLock.DeviceAddr != null)
                                 {
                                     addLockInfo.DoorLockId = doorLock.DeviceAddr + "_" + doorLock.DeviceEpoint;
                                 }
                                 addLockInfo.EntryTime = System.DateTime.Now;
                                 if (isFreeze)
                                 {
                                     addLockInfo.IsFreezeUser = true;
                                 }
                                 else
                                 {
                                     addLockInfo.IsFreezeUser = false;
                                 }
                                 addLockInfo.IsTempUnlockAuthority = doorLock.HasRemoteUnlockAccess[curAccountObj.SubAccountDistributedMark];
                                 var result = await ZigBee.Device.DoorLock.SendDoorLockToServer("DoorLock/AddDoorLock", addLockInfo);
                                 if (result != null)
                                 {
                                     if (result.StateCode == "Success")
                                     {
                                         operateConunt = 0;
                                     }
                                     else
                                     {
                                         Application.RunOnMainThread(() =>
                                         {
                                             if (isFreeze)
                                             {
                                                 new Tip() { MaxWidth = 150, Text = Language.StringByID(R.MyInternationalizationString.FreezeFailed), Direction = AMPopTipDirection.None, CloseTime = 1 }.Show(Common.CommonPage.Instance);
                                             }
                                             else
                                             {
                                                 new Tip() { MaxWidth = 150, Text = Language.StringByID(R.MyInternationalizationString.UnFreezeFailed), Direction = AMPopTipDirection.None, CloseTime = 1 }.Show(Common.CommonPage.Instance);
                                             }
                                             return;
                                         });
                                     }
                                 }
                                 else
                                 {
                                     Application.RunOnMainThread(() =>
                                     {
                                         new Tip() { MaxWidth = 150, Text = Language.StringByID(R.MyInternationalizationString.CloudServerResponseOvertime), Direction = AMPopTipDirection.None, CloseTime = 1 }.Show(Common.CommonPage.Instance);
                                     });
                                 }
                             }
                         }
                         catch { }
                         finally
                         {
                             if (operateConunt == successConunt)
                             {
                                 if (isFreeze)
                                 {
                                     doorLock.IsFreezeAccount[curAccountObj.SubAccountDistributedMark] = true;
                                 }
                                 else
                                 {
                                     doorLock.IsFreezeAccount[curAccountObj.SubAccountDistributedMark] = false;
                                 }
                                 doorLock.ReSave();
                             }
                             Application.RunOnMainThread(() =>
                             {
                                 MidRefresh();
                                 CommonPage.Loading.Hide();
                             });
                         }
                     });
                 }
                 else
                 {
                     MidRefresh();
                 }
             };
        }
        //是否给子账户拥有远程开锁的条件
        void HasRemoteUnlockAccessMethod(bool hasAccess)
        {
            var alert = new Alert(Language.StringByID(R.MyInternationalizationString.Tip), Language.StringByID(R.MyInternationalizationString.SureGiveAccessToSubaccount),
                                                 Language.StringByID(R.MyInternationalizationString.Cancel), Language.StringByID(R.MyInternationalizationString.Confrim));
            alert.Show();
            alert.ResultEventHandler += (sender1, e1) =>
            else
            {
                if (e1)
              FreezeUser(false);
            }
          }
          else if (currentIndex == 2)
          {
            if (!btnRight.IsSelected)
            {
              HasRemoteUnlockAccessMethod(true);
            }
            else
            {
              HasRemoteUnlockAccessMethod(false);
            }
          }
        };
        if (i == 0)
        {
          btnRightFrameLayout.MouseUpEventHandler += eHandler;
          btnRight.MouseUpEventHandler += eHandler;
          RowView.MouseUpEventHandler += eHandler;
          btnText.MouseUpEventHandler += eHandler;
        }
        else if (i == 1)
        {
          btnRightFrameLayout.MouseUpEventHandler += eHandler;
          btnRight.MouseUpEventHandler += eHandler;
        }
        else if (i == 2)
        {
          btnRightFrameLayout.MouseUpEventHandler += eHandler;
          btnRight.MouseUpEventHandler += eHandler;
        }
      }
    }
    /// <summary>
    /// 冻结账户
    /// </summary>
    /// <param name="isFreeze"></param>
    void FreezeUser(bool isFreeze)
    {
      var dialog = new Dialog { };
      string textFreeze = "";
      if (isFreeze)
      {
        textFreeze = Language.StringByID(R.MyInternationalizationString.SureToFreezeAccount);
      }
      else
      {
        textFreeze = Language.StringByID(R.MyInternationalizationString.SureToUnFreeze);
      }
      string msg = Language.StringByID(R.MyInternationalizationString.GoPersonalCenter);
      var alert = new Shared.Phone.UserCenter.ShowMsgControl(ShowMsgType.Confirm, textFreeze, Language.StringByID(R.MyInternationalizationString.DoorlockConfirm));
      alert.Show();
      //使用确认型弹框时,的回调函数
      alert.ConfirmClickEvent += () =>
      {
        System.Threading.Tasks.Task.Run(async () =>
              {
            int successConunt = 0;
            int operateConunt = -1;
            Application.RunOnMainThread(() => { CommonPage.Loading.Start(""); });
            try
            {
              var doorLockId = doorLock.DeviceAddr + "_" + doorLock.DeviceEpoint;
              var curAccountDoorLockUserList = await Shared.Phone.UserCenter.DoorLock.DoorLockCommonInfo.GetAccountDoorLockUserList(doorLock, curAccountObj.SubAccountDistributedMark);
              if (curAccountDoorLockUserList.Count != 0)
              {
                      //修改云端存储信息
                      operateConunt = curAccountDoorLockUserList.Count;
                var tempGroupId = new List<List<int>>();
                var tempUserIdList = new List<int> { };
                foreach (var curDoorLockUser in curAccountDoorLockUserList)
                {
                    System.Threading.Tasks.Task.Run(async () =>
                        // 账户中没有门锁用户
                        if (string.IsNullOrEmpty(curDoorLockUser.DoorLockLocalUserId))
                  {
                  }
                  else
                  {
                    if (tempUserIdList.Count == 9)
                    {
                        int successConunt = 0;
                        int operateConunt = -1;
                        Application.RunOnMainThread(() => { CommonPage.Loading.Start("Loading..."); });
                        try
                        {
                            var resultList = await Shared.Phone.UserCenter.DoorLock.DoorLockCommonInfo.GetAccountDoorLockUserList(doorLock, curAccountObj.SubAccountDistributedMark);
                            var uList = new List<string> { };
                            if (resultList != null)
                            {
                                foreach (var a in resultList)
                                {
                                    uList.Add(a.CloudAccountId);
                                }
                            }
                            var d = uList.Find((value) => { return value == curAccountObj.SubAccountDistributedMark; });
                            if (d != null)
                            {
                                //修改云端存储信息
                                var curAccountDoorLockUserList = await Shared.Phone.UserCenter.DoorLock.DoorLockCommonInfo.GetAccountDoorLockUserList(doorLock, curAccountObj.SubAccountDistributedMark);
                                foreach (var curDoorLockUser in curAccountDoorLockUserList)
                                {
                                    operateConunt = curAccountDoorLockUserList.Count;
                                    if (hasAccess)
                                    {
                                        var refreshDoorLockData = new ZigBee.Device.DoorLock.RefreshDoorLockData();
                                        if (UserCenterResourse.UserInfo.AuthorityNo != 1)
                                        {
                                            refreshDoorLockData.LoginAccessToken = UserCenterLogic.GetConnectMainToken();
                                            refreshDoorLockData.IsOtherAccountCtrl = true;
                                        }
                                        if (doorLock.DeviceAddr != null)
                                        {
                                            refreshDoorLockData.DoorLockId = doorLock.DeviceAddr + "_" + doorLock.DeviceEpoint;
                                        }
                                        refreshDoorLockData.PrimaryId = curDoorLockUser.Id;
                                        refreshDoorLockData.IsFreezeUser = false;
                                        refreshDoorLockData.IsTempUnlockAuthority = true;
                                        // 授权
                                        var result = await ZigBee.Device.DoorLock.SendDoorLockToServer("DoorLock/UpdateDoorLock", refreshDoorLockData);
                                        if (result != null)
                                        {
                                            if (result.StateCode == "Success")
                                            {
                                                successConunt++;
                                            }
                                            else
                                            {
                                                Application.RunOnMainThread(() =>
                                                {
                                                    new Tip() { MaxWidth = 150, Text = Language.StringByID(R.MyInternationalizationString.GiveAccessToSubaccountFailed), Direction = AMPopTipDirection.None, CloseTime = 1 }.Show(Common.CommonPage.Instance);
                                                });
                                            }
                                        }
                                        else
                                        {
                                            Application.RunOnMainThread(() =>
                                            {
                                                new Tip() { MaxWidth = 150, Text = Language.StringByID(R.MyInternationalizationString.CloudServerResponseOvertime), Direction = AMPopTipDirection.None, CloseTime = 1 }.Show(Common.CommonPage.Instance);
                                            });
                                        }
                                    }
                                    else
                                    {
                                        var refreshDoorLockData = new ZigBee.Device.DoorLock.RefreshDoorLockData();
                                        if (UserCenterResourse.UserInfo.AuthorityNo != 1)
                                        {
                                            refreshDoorLockData.LoginAccessToken = UserCenterLogic.GetConnectMainToken();
                                            refreshDoorLockData.IsOtherAccountCtrl = true;
                                        }
                                        if (doorLock.DeviceAddr != null)
                                        {
                                            refreshDoorLockData.DoorLockId = doorLock.DeviceAddr + "_" + doorLock.DeviceEpoint;
                                        }
                                        refreshDoorLockData.PrimaryId = curDoorLockUser.Id;
                                        refreshDoorLockData.IsFreezeUser = false;
                                        refreshDoorLockData.IsTempUnlockAuthority = false;
                                        //取消权限
                                        var result = await ZigBee.Device.DoorLock.SendDoorLockToServer("DoorLock/UpdateDoorLock", refreshDoorLockData);
                                        if (result != null)
                                        {
                                            if (result.StateCode == "Success")
                                            {
                                                successConunt++;
                                            }
                                            else
                                            {
                                                Application.RunOnMainThread(() =>
                                                {
                                                    new Tip() { MaxWidth = 150, Text = Language.StringByID(R.MyInternationalizationString.CancelAccessToSubaccountFailed), Direction = AMPopTipDirection.None, CloseTime = 1 }.Show(Common.CommonPage.Instance);
                                                });
                                            }
                                        }
                                        else
                                        {
                                            Application.RunOnMainThread(() =>
                                            {
                                                new Tip() { MaxWidth = 150, Text = Language.StringByID(R.MyInternationalizationString.CloudServerResponseOvertime), Direction = AMPopTipDirection.None, CloseTime = 1 }.Show(Common.CommonPage.Instance);
                                            });
                                        }
                                    }
                                }
                            }
                            else
                            {
                                //新增,且不冻结
                                var addLockInfo = new ZigBee.Device.DoorLock.AddDoorLockData();
                                if (UserCenterResourse.UserInfo.AuthorityNo != 1)
                                {
                                    addLockInfo.LoginAccessToken = UserCenterLogic.GetConnectMainToken();
                                    addLockInfo.IsOtherAccountCtrl = true;
                                }
                                addLockInfo.CloudAccountId = curAccountObj.SubAccountDistributedMark;
                                if (doorLock.DeviceAddr != null)
                                {
                                    addLockInfo.DoorLockId = doorLock.DeviceAddr + "_" + doorLock.DeviceEpoint;
                                }
                                addLockInfo.EntryTime = System.DateTime.Now;
                                addLockInfo.IsFreezeUser = false;
                                if (hasAccess)
                                {
                                    addLockInfo.IsTempUnlockAuthority = true;
                                }
                                else
                                {
                                    addLockInfo.IsTempUnlockAuthority = false;
                                }
                                var result = await ZigBee.Device.DoorLock.SendDoorLockToServer("DoorLock/AddDoorLock", addLockInfo);
                                if (result != null)
                                {
                                    if (result.StateCode == "Success")
                                    {
                                        operateConunt = 0;
                                    }
                                    else
                                    {
                                        Application.RunOnMainThread(() =>
                                        {
                                            if (hasAccess)
                                            {
                                                new Tip() { MaxWidth = 150, Text = Language.StringByID(R.MyInternationalizationString.GiveAccessToSubaccountFailed), Direction = AMPopTipDirection.None, CloseTime = 1 }.Show(Common.CommonPage.Instance);
                                            }
                                            else
                                            {
                                                new Tip() { MaxWidth = 150, Text = Language.StringByID(R.MyInternationalizationString.CancelAccessToSubaccountFailed), Direction = AMPopTipDirection.None, CloseTime = 1 }.Show(Common.CommonPage.Instance);
                                            }
                                            return;
                                        });
                                    }
                                }
                                else
                                {
                                    Application.RunOnMainThread(() =>
                                    {
                                        new Tip() { MaxWidth = 150, Text = Language.StringByID(R.MyInternationalizationString.CloudServerResponseOvertime), Direction = AMPopTipDirection.None, CloseTime = 1 }.Show(Common.CommonPage.Instance);
                                    });
                                }
                            }
                        }
                        catch { }
                        finally
                        {
                            if (operateConunt == successConunt)
                            {
                                if (hasAccess)
                                {
                                    doorLock.HasRemoteUnlockAccess[curAccountObj.SubAccountDistributedMark] = true;
                                }
                                else
                                {
                                    doorLock.HasRemoteUnlockAccess[curAccountObj.SubAccountDistributedMark] = false;
                                }
                                doorLock.ReSave();
                            }
                            Application.RunOnMainThread(() =>
                            {
                                MidRefresh();
                                CommonPage.Loading.Hide();
                            });
                        }
                    });
                      tempGroupId.Add(tempUserIdList);
                      tempUserIdList = new List<int>();
                    }
                    tempUserIdList.Add(int.Parse(curDoorLockUser.DoorLockLocalUserId));
                  }
                }
                tempGroupId.Add(tempUserIdList);
                      //批量冻结门锁中的账户
                      ZigBee.Device.DoorLock.AccessType accessType;
                if (isFreeze)
                {
                  accessType = ZigBee.Device.DoorLock.AccessType.DisEnableMoreUsers;
                }
                else
                {
                    MidRefresh();
                  accessType = ZigBee.Device.DoorLock.AccessType.EnableMoreUsers;
                }
            };
        }
                      //冻结/解冻用户
                      int count1 = tempGroupId.Count;
                if (tempGroupId.Count == 1)
                {
                  foreach (var a in tempGroupId)
                  {
                    if (a.Count == 0)
                    {
                      count1 = 0;
                      break;
                    }
                  }
                }
                int count2 = 0;
        #region ◆ 接口实现__________________________
        /// <summary>
        /// 处理变化事件 --将弃用 改用DeviceInfoChange()
        /// </summary>
        /// <returns>The changed.</returns>
        /// <param name="common">Common.</param>
        public void Changed(CommonDevice common)
        {
                int tempCount = 0;
                for (int i = 0; i < tempGroupId.Count; i++)
                {
                  var tempUserIdList1 = tempGroupId[i];
                  if (tempUserIdList1.Count == 0)
                  {
                    break;
                  }
                  var passData = doorLock.FreezeAccountData(tempUserIdList1, accessType);
                  var resultData = await doorLock.DefaultControlAsync(passData);
                  if (resultData != null && resultData.defaultControlResponseData != null)
                  {
                    if (resultData.defaultControlResponseData.status == 32)
                    {
                      count2++;
                    }
                    else if (resultData.defaultControlResponseData.status == 33)
                    {
                      count2++;
                    }
                    System.Threading.Thread.Sleep(1000);
                  }
                  else
                  {
                    Application.RunOnMainThread(() =>
                          {
                                new Tip() { MaxWidth = 150, Text = Language.StringByID(R.MyInternationalizationString.GwResponseOvertime), Direction = AMPopTipDirection.None, CloseTime = 2 }.Show(Common.CommonPage.Instance);
                              });
                    return;
                  }
                  tempCount++;
                }
        }
        /// <summary>
        /// 处理变化事件
        /// </summary>
        /// <param name="common"></param>
        /// <param name="typeTag"></param>
        public void DeviceInfoChange(CommonDevice common, string typeTag)
        {
        }
        /// <summary>
        /// Changeds the IL ogic status.
        /// </summary>
        /// <param name="logic">Logic.</param>
        public void ChangedILogicStatus(ZigBee.Device.Logic logic)
        {
        }
        /// <summary>
        /// Changeds the IS cene status.
        /// </summary>
        /// <param name="scene">Scene.</param>
        public void ChangedISceneStatus(Scene scene)
        {
        }
        #endregion
                      // 批量冻结门锁中的账户后,准备冻结云端账户
                      if (count2 == count1)
                {
                  foreach (var curDoorLockUser in curAccountDoorLockUserList)
                  {
                    if (isFreeze)
                    {
                      var refreshDoorLockData = new ZigBee.Device.DoorLock.RefreshDoorLockData();
                      if (UserCenterResourse.UserInfo.AuthorityNo != 1)
                      {
                        refreshDoorLockData.LoginAccessToken = UserCenterLogic.GetConnectMainToken();
                        refreshDoorLockData.IsOtherAccountCtrl = true;
                      }
                      if (doorLock.DeviceAddr != null)
                      {
                        refreshDoorLockData.DoorLockId = doorLock.DeviceAddr + "_" + doorLock.DeviceEpoint;
                      }
                      refreshDoorLockData.OpenLockMode = curDoorLockUser.OpenLockMode;
                      refreshDoorLockData.DoorLockLocalUserId = curDoorLockUser.DoorLockLocalUserId;
                      refreshDoorLockData.PrimaryId = curDoorLockUser.Id;
                      refreshDoorLockData.IsFreezeUser = true;
                      refreshDoorLockData.IsTempUnlockAuthority = doorLock.HasRemoteUnlockAccess[curAccountObj.SubAccountDistributedMark];
                            //冻结云端
                            var result = await ZigBee.Device.DoorLock.SendDoorLockToServer("DoorLock/UpdateDoorLock", refreshDoorLockData);
                      if (result != null)
                      {
                        if (result.StateCode == "Success")
                        {
                          successConunt++;
                        }
                        else
                        {
                          Application.RunOnMainThread(() =>
                                {
                                            if (isFreeze)
                                            {
                                              new Tip() { MaxWidth = 150, Text = Language.StringByID(R.MyInternationalizationString.FreezeFailed), Direction = AMPopTipDirection.None, CloseTime = 1 }.Show(Common.CommonPage.Instance);
                                            }
                                            else
                                            {
                                              new Tip() { MaxWidth = 150, Text = Language.StringByID(R.MyInternationalizationString.UnFreezeFailed), Direction = AMPopTipDirection.None, CloseTime = 1 }.Show(Common.CommonPage.Instance);
                                            }
                                            return;
                                          });
                        }
                      }
                      else
                      {
                        Application.RunOnMainThread(() =>
                              {
                                        new Tip() { MaxWidth = 150, Text = Language.StringByID(R.MyInternationalizationString.CloudServerResponseOvertime), Direction = AMPopTipDirection.None, CloseTime = 2 }.Show(Common.CommonPage.Instance);
                                      });
                      }
                    }
                    else
                    {
                      var refreshDoorLockData = new ZigBee.Device.DoorLock.RefreshDoorLockData();
                      if (UserCenterResourse.UserInfo.AuthorityNo != 1)
                      {
                        refreshDoorLockData.LoginAccessToken = UserCenterLogic.GetConnectMainToken();
                        refreshDoorLockData.IsOtherAccountCtrl = true;
                      }
                      if (doorLock.DeviceAddr != null)
                      {
                        refreshDoorLockData.DoorLockId = doorLock.DeviceAddr + "_" + doorLock.DeviceEpoint;
                      }
                      refreshDoorLockData.OpenLockMode = curDoorLockUser.OpenLockMode;
                      refreshDoorLockData.DoorLockLocalUserId = curDoorLockUser.DoorLockLocalUserId;
                      refreshDoorLockData.PrimaryId = curDoorLockUser.Id;
                      refreshDoorLockData.IsFreezeUser = false;
                      refreshDoorLockData.IsTempUnlockAuthority = doorLock.HasRemoteUnlockAccess[curAccountObj.SubAccountDistributedMark];
                            //解冻云端
                            var result = await ZigBee.Device.DoorLock.SendDoorLockToServer("DoorLock/UpdateDoorLock", refreshDoorLockData);
                      if (result != null)
                      {
                        if (result.StateCode == "Success")
                        {
                          successConunt++;
                        }
                        else
                        {
                          Application.RunOnMainThread(() =>
                                {
                                            new Tip() { MaxWidth = 150, Text = Language.StringByID(R.MyInternationalizationString.FreezeFailed), Direction = AMPopTipDirection.None, CloseTime = 1 }.Show(Common.CommonPage.Instance);
                                          });
                        }
                      }
                      else
                      {
                        Application.RunOnMainThread(() =>
                              {
                                        new Tip() { MaxWidth = 150, Text = Language.StringByID(R.MyInternationalizationString.CloudServerResponseOvertime), Direction = AMPopTipDirection.None, CloseTime = 2 }.Show(Common.CommonPage.Instance);
                                      });
                      }
                    }
                  }
                }
                else
                {
                  Application.RunOnMainThread(() =>
                        {
                            if (isFreeze)
                            {
                              new Tip() { MaxWidth = 150, Text = Language.StringByID(R.MyInternationalizationString.FreezeFailed) + ".", Direction = AMPopTipDirection.None, CloseTime = 2 }.Show(Common.CommonPage.Instance);
                            }
                            else
                            {
                              new Tip() { MaxWidth = 150, Text = Language.StringByID(R.MyInternationalizationString.UnFreezeFailed) + ".", Direction = AMPopTipDirection.None, CloseTime = 2 }.Show(Common.CommonPage.Instance);
                            }
                          });
                }
              }
              else
              {
                      //添加云端存储信息
                      //冻结/解冻云端
                      var addLockInfo = new ZigBee.Device.DoorLock.AddDoorLockData();
                if (UserCenterResourse.UserInfo.AuthorityNo != 1)
                {
                  addLockInfo.LoginAccessToken = UserCenterLogic.GetConnectMainToken();
                  addLockInfo.IsOtherAccountCtrl = true;
                }
                addLockInfo.CloudAccountId = curAccountObj.SubAccountDistributedMark;
                if (doorLock.DeviceAddr != null)
                {
                  addLockInfo.DoorLockId = doorLock.DeviceAddr + "_" + doorLock.DeviceEpoint;
                }
                addLockInfo.EntryTime = System.DateTime.Now;
                if (isFreeze)
                {
                  addLockInfo.IsFreezeUser = true;
                }
                else
                {
                  addLockInfo.IsFreezeUser = false;
                }
                addLockInfo.IsTempUnlockAuthority = doorLock.HasRemoteUnlockAccess[curAccountObj.SubAccountDistributedMark];
                var result = await ZigBee.Device.DoorLock.SendDoorLockToServer("DoorLock/AddDoorLock", addLockInfo);
                if (result != null)
                {
                  if (result.StateCode == "Success")
                  {
                    operateConunt = 0;
                  }
                  else
                  {
                    Application.RunOnMainThread(() =>
                          {
                                if (isFreeze)
                                {
                                  new Tip() { MaxWidth = 150, Text = Language.StringByID(R.MyInternationalizationString.FreezeFailed), Direction = AMPopTipDirection.None, CloseTime = 1 }.Show(Common.CommonPage.Instance);
                                }
                                else
                                {
                                  new Tip() { MaxWidth = 150, Text = Language.StringByID(R.MyInternationalizationString.UnFreezeFailed), Direction = AMPopTipDirection.None, CloseTime = 1 }.Show(Common.CommonPage.Instance);
                                }
                                return;
                              });
                  }
                }
                else
                {
                  Application.RunOnMainThread(() =>
                        {
                            new Tip() { MaxWidth = 150, Text = Language.StringByID(R.MyInternationalizationString.CloudServerResponseOvertime), Direction = AMPopTipDirection.None, CloseTime = 1 }.Show(Common.CommonPage.Instance);
                          });
                }
              }
            }
            catch { }
            finally
            {
              if (operateConunt == successConunt)
              {
                if (isFreeze)
                {
                  doorLock.IsFreezeAccount[curAccountObj.SubAccountDistributedMark] = true;
                }
                else
                {
                  doorLock.IsFreezeAccount[curAccountObj.SubAccountDistributedMark] = false;
                }
                doorLock.ReSave();
              }
              Application.RunOnMainThread(() =>
                    {
                    MidRefresh();
                    CommonPage.Loading.Hide();
                  });
            }
          });
      };
    }
    /// <summary>
    /// 是否给子账户拥有远程开锁的条件
    /// </summary>
    /// <param name="hasAccess"></param>
    void HasRemoteUnlockAccessMethod(bool hasAccess)
    {
      string msg = Language.StringByID(R.MyInternationalizationString.SureGiveAccessToSubaccount);
      if (!hasAccess)
      {
        msg = Language.StringByID(R.MyInternationalizationString.SureCancelAccessToSubaccount);
      }
      var alert = new Shared.Phone.UserCenter.ShowMsgControl(ShowMsgType.Confirm, msg, Language.StringByID(R.MyInternationalizationString.DoorlockConfirm));
      alert.Show();
      //使用确认型弹框时,的回调函数
      alert.ConfirmClickEvent += () =>
      {
        System.Threading.Tasks.Task.Run(async () =>
              {
            int successConunt = 0;
            int operateConunt = -1;
            Application.RunOnMainThread(() => { CommonPage.Loading.Start("Loading..."); });
            try
            {
              var resultList = await Shared.Phone.UserCenter.DoorLock.DoorLockCommonInfo.GetAccountDoorLockUserList(doorLock, curAccountObj.SubAccountDistributedMark);
              var uList = new List<string> { };
              if (resultList != null)
              {
                foreach (var a in resultList)
                {
                  uList.Add(a.CloudAccountId);
                }
              }
              var d = uList.Find((value) => { return value == curAccountObj.SubAccountDistributedMark; });
              if (d != null)
              {
                      //修改云端存储信息
                      var curAccountDoorLockUserList = await Shared.Phone.UserCenter.DoorLock.DoorLockCommonInfo.GetAccountDoorLockUserList(doorLock, curAccountObj.SubAccountDistributedMark);
                foreach (var curDoorLockUser in curAccountDoorLockUserList)
                {
                  operateConunt = curAccountDoorLockUserList.Count;
                  if (hasAccess)
                  {
                    var refreshDoorLockData = new ZigBee.Device.DoorLock.RefreshDoorLockData();
                    if (UserCenterResourse.UserInfo.AuthorityNo != 1)
                    {
                      refreshDoorLockData.LoginAccessToken = UserCenterLogic.GetConnectMainToken();
                      refreshDoorLockData.IsOtherAccountCtrl = true;
                    }
                    if (doorLock.DeviceAddr != null)
                    {
                      refreshDoorLockData.DoorLockId = doorLock.DeviceAddr + "_" + doorLock.DeviceEpoint;
                    }
                    refreshDoorLockData.PrimaryId = curDoorLockUser.Id;
                    refreshDoorLockData.IsFreezeUser = false;
                    refreshDoorLockData.IsTempUnlockAuthority = true;
                          // 授权
                          var result = await ZigBee.Device.DoorLock.SendDoorLockToServer("DoorLock/UpdateDoorLock", refreshDoorLockData);
                    if (result != null)
                    {
                      if (result.StateCode == "Success")
                      {
                        successConunt++;
                      }
                      else
                      {
                        Application.RunOnMainThread(() =>
                              {
                                        new Tip() { MaxWidth = 150, Text = Language.StringByID(R.MyInternationalizationString.GiveAccessToSubaccountFailed), Direction = AMPopTipDirection.None, CloseTime = 1 }.Show(Common.CommonPage.Instance);
                                      });
                      }
                    }
                    else
                    {
                      Application.RunOnMainThread(() =>
                            {
                                    new Tip() { MaxWidth = 150, Text = Language.StringByID(R.MyInternationalizationString.CloudServerResponseOvertime), Direction = AMPopTipDirection.None, CloseTime = 1 }.Show(Common.CommonPage.Instance);
                                  });
                    }
                  }
                  else
                  {
                    var refreshDoorLockData = new ZigBee.Device.DoorLock.RefreshDoorLockData();
                    if (UserCenterResourse.UserInfo.AuthorityNo != 1)
                    {
                      refreshDoorLockData.LoginAccessToken = UserCenterLogic.GetConnectMainToken();
                      refreshDoorLockData.IsOtherAccountCtrl = true;
                    }
                    if (doorLock.DeviceAddr != null)
                    {
                      refreshDoorLockData.DoorLockId = doorLock.DeviceAddr + "_" + doorLock.DeviceEpoint;
                    }
                    refreshDoorLockData.PrimaryId = curDoorLockUser.Id;
                    refreshDoorLockData.IsFreezeUser = false;
                    refreshDoorLockData.IsTempUnlockAuthority = false;
                          //取消权限
                          var result = await ZigBee.Device.DoorLock.SendDoorLockToServer("DoorLock/UpdateDoorLock", refreshDoorLockData);
                    if (result != null)
                    {
                      if (result.StateCode == "Success")
                      {
                        successConunt++;
                      }
                      else
                      {
                        Application.RunOnMainThread(() =>
                              {
                                        new Tip() { MaxWidth = 150, Text = Language.StringByID(R.MyInternationalizationString.CancelAccessToSubaccountFailed), Direction = AMPopTipDirection.None, CloseTime = 1 }.Show(Common.CommonPage.Instance);
                                      });
                      }
                    }
                    else
                    {
                      Application.RunOnMainThread(() =>
                            {
                                    new Tip() { MaxWidth = 150, Text = Language.StringByID(R.MyInternationalizationString.CloudServerResponseOvertime), Direction = AMPopTipDirection.None, CloseTime = 1 }.Show(Common.CommonPage.Instance);
                                  });
                    }
                  }
                }
              }
              else
              {
                      //新增,且不冻结
                      var addLockInfo = new ZigBee.Device.DoorLock.AddDoorLockData();
                if (UserCenterResourse.UserInfo.AuthorityNo != 1)
                {
                  addLockInfo.LoginAccessToken = UserCenterLogic.GetConnectMainToken();
                  addLockInfo.IsOtherAccountCtrl = true;
                }
                addLockInfo.CloudAccountId = curAccountObj.SubAccountDistributedMark;
                if (doorLock.DeviceAddr != null)
                {
                  addLockInfo.DoorLockId = doorLock.DeviceAddr + "_" + doorLock.DeviceEpoint;
                }
                addLockInfo.EntryTime = System.DateTime.Now;
                addLockInfo.IsFreezeUser = false;
                if (hasAccess)
                {
                  addLockInfo.IsTempUnlockAuthority = true;
                }
                else
                {
                  addLockInfo.IsTempUnlockAuthority = false;
                }
                var result = await ZigBee.Device.DoorLock.SendDoorLockToServer("DoorLock/AddDoorLock", addLockInfo);
                if (result != null)
                {
                  if (result.StateCode == "Success")
                  {
                    operateConunt = 0;
                  }
                  else
                  {
                    Application.RunOnMainThread(() =>
                          {
                                if (hasAccess)
                                {
                                  new Tip() { MaxWidth = 150, Text = Language.StringByID(R.MyInternationalizationString.GiveAccessToSubaccountFailed), Direction = AMPopTipDirection.None, CloseTime = 1 }.Show(Common.CommonPage.Instance);
                                }
                                else
                                {
                                  new Tip() { MaxWidth = 150, Text = Language.StringByID(R.MyInternationalizationString.CancelAccessToSubaccountFailed), Direction = AMPopTipDirection.None, CloseTime = 1 }.Show(Common.CommonPage.Instance);
                                }
                                return;
                              });
                  }
                }
                else
                {
                  Application.RunOnMainThread(() =>
                        {
                            new Tip() { MaxWidth = 150, Text = Language.StringByID(R.MyInternationalizationString.CloudServerResponseOvertime), Direction = AMPopTipDirection.None, CloseTime = 1 }.Show(Common.CommonPage.Instance);
                          });
                }
              }
            }
            catch { }
            finally
            {
              if (operateConunt == successConunt)
              {
                if (hasAccess)
                {
                  doorLock.HasRemoteUnlockAccess[curAccountObj.SubAccountDistributedMark] = true;
                }
                else
                {
                  doorLock.HasRemoteUnlockAccess[curAccountObj.SubAccountDistributedMark] = false;
                }
                doorLock.ReSave();
              }
              Application.RunOnMainThread(() =>
                    {
                    MidRefresh();
                    CommonPage.Loading.Hide();
                  });
            }
          });
      };
    }
  }
}