From 3dcbd186c42c598c0c08d1cd37034cf2baa09e54 Mon Sep 17 00:00:00 2001
From: 黄学彪 <hxb@hdlchina.com.cn>
Date: 星期一, 30 十二月 2019 15:47:51 +0800
Subject: [PATCH] 合并了代码

---
 ZigbeeApp/Shared/Phone/UserCenter/DoorLock/MemberFrozenPage.cs | 1055 ++++++++++++++++++++++++++++------------------------------
 1 files changed, 504 insertions(+), 551 deletions(-)

diff --git a/ZigbeeApp/Shared/Phone/UserCenter/DoorLock/MemberFrozenPage.cs b/ZigbeeApp/Shared/Phone/UserCenter/DoorLock/MemberFrozenPage.cs
index 0386a10..15a960b 100755
--- a/ZigbeeApp/Shared/Phone/UserCenter/DoorLock/MemberFrozenPage.cs
+++ b/ZigbeeApp/Shared/Phone/UserCenter/DoorLock/MemberFrozenPage.cs
@@ -33,6 +33,24 @@
                     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;
+                    }
                 }
                 catch { }
                 finally
@@ -148,8 +166,7 @@
                     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);
+                    var result = doorLock.IsFreezeAccount[curAccountObj.SubAccountDistributedMark];
                     if (result == true)
                     {
                         btnRight.IsSelected = true;
@@ -172,7 +189,7 @@
                         btnRight.SelectedImagePath = "DoorLock/SwitchOn.png";
                         line2.Visible = false;
 
-                        var result1 = await Shared.Phone.UserCenter.DoorLock.DoorLockCommonInfo.GetDoorLockUnlockAccess(doorLock, curAccountObj.SubAccountDistributedMark);
+                        var result1 = doorLock.HasRemoteUnlockAccess[curAccountObj.SubAccountDistributedMark];
                         if (result1 == true)
                         {
                             btnRight.IsSelected = true;
@@ -247,585 +264,521 @@
             }
         }
 
-
         //鍐荤粨璐︽埛
         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];
-                                             //瑙e喕浜戠
-                                             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;
-                                 }
-                                 //鍐荤粨/瑙e喕鐢ㄦ埛
-                                 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];
-                                             //瑙e喕浜戠
-                                             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
-                             {
-                                 //娣诲姞浜戠瀛樺偍淇℃伅
-                                 //鍐荤粨/瑙e喕浜戠
-                                 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) =>
+            var dialog = new Dialog { };
+            string textFreeze = "";
+            if (isFreeze)
             {
-                if (e1)
-                {
-                    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);
+                textFreeze = Language.StringByID(R.MyInternationalizationString.SureToFreezeAccount);
+            }
+            else
+            {
+                textFreeze = Language.StringByID(R.MyInternationalizationString.SureToUnFreeze);
+            }
+            var doorDialog = new Shared.Phone.UserCenter.DoorLock.DoorlockDialog(dialog, Language.StringByID(R.MyInternationalizationString.Tip));
+            doorDialog.Show();
+            doorDialog.dialogMidFraFrameLayout.Height = Application.GetRealHeight(58);
+            doorDialog.dialogMidFraFrameLayout.X = Application.GetRealWidth(0);
+            doorDialog.dialogMidFraFrameLayout.Y = Application.GetRealHeight(202);
+            doorDialog.dialogMidFraFrameLayout.AddChidren(doorDialog.dialogMidText);
+            doorDialog.dialogMidText.Text = textFreeze;
+            doorDialog.dialogMidFraFrameLayout.AddChidren(doorDialog.dialogMidText);
+            doorDialog.dialogBtnConfirm.Text = Language.StringByID(R.MyInternationalizationString.DoorlockConfirm);
+            doorDialog.dialogBtnCancel.MouseUpEventHandler += (sender1, e1) =>
+            {
+                MidRefresh();
+                dialog.Close();
+            };
+            doorDialog.dialogBtnConfirm.MouseUpEventHandler += (sender1, 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> { };
+                            foreach (var curDoorLockUser in curAccountDoorLockUserList)
+                            {
+                                // 璐︽埛涓病鏈夐棬閿佺敤鎴�
+                                if (curDoorLockUser.DoorLockLocalUserId == null || curDoorLockUser.DoorLockLocalUserId == "")
+                                {
+                                    //
+                                }
+                                else
+                                {
+                                    if (tempUserIdList.Count == 9)
+                                    {
+                                        tempGroupId.Add(tempUserIdList);
+                                        tempUserIdList = new List<int>();
+                                    }
+                                    tempUserIdList.Add(int.Parse(curDoorLockUser.DoorLockLocalUserId));
                                 }
                             }
-                            var d = uList.Find((value) => { return value == curAccountObj.SubAccountDistributedMark; });
-                            if (d != null)
-                            {
-                                //淇敼浜戠瀛樺偍淇℃伅
-                                var curAccountDoorLockUserList = await Shared.Phone.UserCenter.DoorLock.DoorLockCommonInfo.GetAccountDoorLockUserList(doorLock, curAccountObj.SubAccountDistributedMark);
+                            tempGroupId.Add(tempUserIdList);
+                            //鎵归噺鍐荤粨闂ㄩ攣涓殑璐︽埛
+                            ZigBee.Device.DoorLock.AccessType accessType;
+                            if (isFreeze)
+                            {
+                                accessType = ZigBee.Device.DoorLock.AccessType.DisEnableMoreUsers;
+                            }
+                            else
+                            {
+                                accessType = ZigBee.Device.DoorLock.AccessType.EnableMoreUsers;
+                            }
+                            //鍐荤粨/瑙e喕鐢ㄦ埛
+                            int count1 = tempGroupId.Count;
+                            int count2 = 0;
 
-                                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
+                            int tempCount = 0;
+                            for (int i = 0; i < tempGroupId.Count; i++)
                             {
-                                //鏂板锛屼笖涓嶅喕缁� 
-                                var addLockInfo = new ZigBee.Device.DoorLock.AddDoorLockData();
-                                if (UserCenterResourse.UserInfo.AuthorityNo != 1)
+                                var tempUserIdList1 = tempGroupId[i];
+                                if (tempUserIdList1.Count == 0)
                                 {
-                                    addLockInfo.LoginAccessToken = UserCenterLogic.GetConnectMainToken();
-                                    addLockInfo.IsOtherAccountCtrl = true;
+                                    return;
                                 }
-                                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")
+                                var passData = doorLock.FreezeAccountData(tempUserIdList1, accessType);
+                                var resultData = await doorLock.DefaultControlAsync(passData);
+                                if (resultData != null && resultData.defaultControlResponseData != null)
+                                {
+                                    if (resultData.defaultControlResponseData.status == 32)
                                     {
-                                        operateConunt = 0;
+                                        count2++;
                                     }
-                                    else
+                                    else if (resultData.defaultControlResponseData.status == 33)
                                     {
-                                        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;
-                                        });
+                                        count2++;
                                     }
+                                    //if (tempCount == tempGroupId.Count - 1)
+                                    //{
+                                    System.Threading.Thread.Sleep(1000);
+                                    //}
                                 }
                                 else
                                 {
                                     Application.RunOnMainThread(() =>
                                     {
-                                        new Tip() { MaxWidth = 150, Text = Language.StringByID(R.MyInternationalizationString.CloudServerResponseOvertime), Direction = AMPopTipDirection.None, CloseTime = 1 }.Show(Common.CommonPage.Instance);
+                                        new Tip() { MaxWidth = 150, Text = Language.StringByID(R.MyInternationalizationString.GwResponseOvertime), Direction = AMPopTipDirection.None, CloseTime = 2 }.Show(Common.CommonPage.Instance);
+                                    });
+                                    return;
+                                }
+                                tempCount++;
+                            }
+
+                            // 鎵归噺鍐荤粨闂ㄩ攣涓殑璐︽埛鍚庯紝鍑嗗鍐荤粨浜戠璐︽埛
+                            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];
+                                        //瑙e喕浜戠
+                                        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
+                        {
+                            //娣诲姞浜戠瀛樺偍淇℃伅
+                            //鍐荤粨/瑙e喕浜戠
+                            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;
                                     });
                                 }
                             }
-
-                        }
-                        catch { }
-                        finally
-                        {
-                            if (operateConunt == successConunt)
+                            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();
+                        });
+                    }
+                });
+                dialog.Close();
+            };
+        }
+
+        //鏄惁缁欏瓙璐︽埛鎷ユ湁杩滅▼寮�閿佺殑鏉′欢
+        void HasRemoteUnlockAccessMethod(bool hasAccess)
+        {
+            var dialog = new Dialog { };
+            var doorDialog = new Shared.Phone.UserCenter.DoorLock.DoorlockDialog(dialog, Language.StringByID(R.MyInternationalizationString.Tip));
+            doorDialog.Show();
+            doorDialog.dialogMidFraFrameLayout.Height = Application.GetRealHeight(58);
+            doorDialog.dialogMidFraFrameLayout.X = Application.GetRealWidth(0);
+            doorDialog.dialogMidFraFrameLayout.Y = Application.GetRealHeight(202);
+            doorDialog.dialogMidFraFrameLayout.AddChidren(doorDialog.dialogMidText);
+            doorDialog.dialogMidText.Text = Language.StringByID(R.MyInternationalizationString.SureGiveAccessToSubaccount);
+            doorDialog.dialogMidFraFrameLayout.AddChidren(doorDialog.dialogMidText);
+            doorDialog.dialogBtnConfirm.Text = Language.StringByID(R.MyInternationalizationString.DoorlockConfirm);
+            doorDialog.dialogBtnCancel.MouseUpEventHandler += (sender1, e1) =>
+            {
+                MidRefresh();
+                dialog.Close();
+            };
+            doorDialog.dialogBtnConfirm.MouseUpEventHandler += (sender1, e1) =>
+            {
+                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)
                                 {
-                                    doorLock.HasRemoteUnlockAccess[curAccountObj.SubAccountDistributedMark] = true;
+                                    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
                                 {
-                                    doorLock.HasRemoteUnlockAccess[curAccountObj.SubAccountDistributedMark] = false;
+                                    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);
+                                        });
+                                    }
                                 }
-                                doorLock.ReSave();
                             }
-                            Application.RunOnMainThread(() =>
-                            {
-                                MidRefresh();
-                                CommonPage.Loading.Hide();
-                            });
                         }
-                    });
-                }
-                else
-                {
-                    MidRefresh();
-                }
+                        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();
+                        });
+                    }
+                });
+                dialog.Close();
             };
         }
 

--
Gitblit v1.8.0