From db196464ea74daaffb35860eef8c80cf254ce578 Mon Sep 17 00:00:00 2001
From: gxc <guoxuecheng@guoxuechengdeMacBook-Pro.local>
Date: 星期二, 14 一月 2020 13:56:25 +0800
Subject: [PATCH] 2020.1.14
---
ZigbeeApp/Shared/Phone/UserCenter/DoorLock/MemberFrozenPage.cs | 1002 ++++++++++++++++++++++++++++------------------------------
1 files changed, 489 insertions(+), 513 deletions(-)
diff --git a/ZigbeeApp/Shared/Phone/UserCenter/DoorLock/MemberFrozenPage.cs b/ZigbeeApp/Shared/Phone/UserCenter/DoorLock/MemberFrozenPage.cs
old mode 100755
new mode 100644
index 2a71d4b..f2a7d2c
--- 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
@@ -40,13 +58,14 @@
Application.RunOnMainThread(() =>
{
MidRefresh();
+ bodyView.EndHeaderRefreshing();
});
}
});
}
/// <summary>
- /// UI鏄剧ず
+ /// UI鏄剧ず
/// </summary>
public void Show()
{
@@ -79,7 +98,6 @@
{
bodyView.BeginHeaderRefreshing();
ReadDoorLockUserInfo();
- bodyView.EndHeaderRefreshing();
};
}
@@ -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;
@@ -203,9 +220,7 @@
}
else if (currentIndex == 1)
{
- btnRight.IsSelected = !btnRight.IsSelected;
-
- if (btnRight.IsSelected)
+ if (!btnRight.IsSelected)
{
FreezeUser(true);
}
@@ -216,8 +231,7 @@
}
else if (currentIndex == 2)
{
- btnRight.IsSelected = !btnRight.IsSelected;
- if (btnRight.IsSelected)
+ if (!btnRight.IsSelected)
{
HasRemoteUnlockAccessMethod(true);
}
@@ -247,544 +261,506 @@
}
}
-
//鍐荤粨璐︽埛
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("Loading..."); });
- 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;
- 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
- {
- ZigBee.Device.DoorLock.AccessType accessType;
- if (isFreeze)
- {
- accessType = ZigBee.Device.DoorLock.AccessType.DisEnable;
- }
- else
- {
- accessType = ZigBee.Device.DoorLock.AccessType.Enable;
- }
- //鍐荤粨/瑙e喕鐢ㄦ埛
- var passData = doorLock.SetUserAccessData(int.Parse(curDoorLockUser.DoorLockLocalUserId), accessType);
- var resultData = await doorLock.DefaultControlAsync(passData);
- if (resultData != null && resultData.defaultControlResponseData != null)
- {
- if (resultData.defaultControlResponseData.status == 32)
- {
- 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 if (resultData.defaultControlResponseData.status == 33)
- {
- 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
- {
- Application.RunOnMainThread(() =>
- {
- new Tip() { MaxWidth = 150, Text = Language.StringByID(R.MyInternationalizationString.GwResponseOvertime), 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;
- });
- }
- }
- 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);
- }
- }
- var d = uList.Find((value) => { return value == curAccountObj.SubAccountDistributedMark; });
- if (d != null)
- {
- //淇敼浜戠瀛樺偍淇℃伅
- var curAccountDoorLockUserList = await Shared.Phone.UserCenter.DoorLock.DoorLockCommonInfo.GetAccountDoorLockUserList(doorLock, curAccountObj.SubAccountDistributedMark);
+ textFreeze = Language.StringByID(R.MyInternationalizationString.SureToFreezeAccount);
+ }
+ else
+ {
+ textFreeze = Language.StringByID(R.MyInternationalizationString.SureToUnFreeze);
+ }
- foreach (var curDoorLockUser in curAccountDoorLockUserList)
- {
- operateConunt = curAccountDoorLockUserList.Count;
- if (hasAccess)
+ string msg = Language.StringByID(R.MyInternationalizationString.GoPersonalCenter);
+ var alert = new Shared.Phone.UserCenter.ShowMsgControl(ShowMsgType.Confirm, textFreeze, Language.StringByID(R.MyInternationalizationString.DoorlockConfirm));
+ alert.Show();
+ //浣跨敤纭鍨嬪脊妗嗘椂,鐨勫洖璋冨嚱鏁�
+ alert.ConfirmClickEvent += () =>
+ {
+ System.Threading.Tasks.Task.Run(async () =>
+ {
+ int successConunt = 0;
+ int operateConunt = -1;
+ Application.RunOnMainThread(() => { CommonPage.Loading.Start(""); });
+ try
+ {
+ var doorLockId = doorLock.DeviceAddr + "_" + doorLock.DeviceEpoint;
+ var curAccountDoorLockUserList = await Shared.Phone.UserCenter.DoorLock.DoorLockCommonInfo.GetAccountDoorLockUserList(doorLock, curAccountObj.SubAccountDistributedMark);
+ if (curAccountDoorLockUserList.Count != 0)
+ {
+ //淇敼浜戠瀛樺偍淇℃伅
+ operateConunt = curAccountDoorLockUserList.Count;
+ var tempGroupId = new List<List<int>>();
+ var tempUserIdList = new List<int> { };
+ foreach (var curDoorLockUser in curAccountDoorLockUserList)
+ {
+ // 璐︽埛涓病鏈夐棬閿佺敤鎴�
+ if (string.IsNullOrEmpty(curDoorLockUser.DoorLockLocalUserId))
+ {
+ }
+ else
+ {
+ if (tempUserIdList.Count == 9)
{
- 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);
- });
- }
+ tempGroupId.Add(tempUserIdList);
+ tempUserIdList = new List<int>();
}
- else
+ tempUserIdList.Add(int.Parse(curDoorLockUser.DoorLockLocalUserId));
+ }
+ }
+ 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;
+ if (tempGroupId.Count == 1)
+ {
+ foreach (var a in tempGroupId)
+ {
+ if (a.Count == 0)
{
- 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);
- });
- }
+ count1 = 0;
+ break;
}
}
}
- else
+ int count2 = 0;
+
+ 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;
+ break;
}
- 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++;
}
+ 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();
+ });
+ }
+ });
+ };
+ }
+
+ //鏄惁缁欏瓙璐︽埛鎷ユ湁杩滅▼寮�閿佺殑鏉′欢
+ void HasRemoteUnlockAccessMethod(bool hasAccess)
+ {
+ string msg = Language.StringByID(R.MyInternationalizationString.SureGiveAccessToSubaccount);
+ var alert = new Shared.Phone.UserCenter.ShowMsgControl(ShowMsgType.Confirm, msg, Language.StringByID(R.MyInternationalizationString.DoorlockConfirm));
+ alert.Show();
+ //浣跨敤纭鍨嬪脊妗嗘椂,鐨勫洖璋冨嚱鏁�
+ alert.ConfirmClickEvent += () =>
+ {
+ System.Threading.Tasks.Task.Run(async () =>
+ {
+ int successConunt = 0;
+ int operateConunt = -1;
+ Application.RunOnMainThread(() => { CommonPage.Loading.Start("Loading..."); });
+ try
+ {
+ var resultList = await Shared.Phone.UserCenter.DoorLock.DoorLockCommonInfo.GetAccountDoorLockUserList(doorLock, curAccountObj.SubAccountDistributedMark);
+ var uList = new List<string> { };
+ if (resultList != null)
+ {
+ foreach (var a in resultList)
+ {
+ uList.Add(a.CloudAccountId);
+ }
+ }
+ var d = uList.Find((value) => { return value == curAccountObj.SubAccountDistributedMark; });
+ if (d != null)
+ {
+ //淇敼浜戠瀛樺偍淇℃伅
+ var curAccountDoorLockUserList = await Shared.Phone.UserCenter.DoorLock.DoorLockCommonInfo.GetAccountDoorLockUserList(doorLock, curAccountObj.SubAccountDistributedMark);
+
+ foreach (var curDoorLockUser in curAccountDoorLockUserList)
+ {
+ operateConunt = curAccountDoorLockUserList.Count;
if (hasAccess)
{
- 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();
+ });
+ }
+ });
};
}
--
Gitblit v1.8.0