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