From 4f0ab0ad21ce450b7856d50f98322a7899361386 Mon Sep 17 00:00:00 2001
From: 黄学彪 <hxb@hdlchina.com.cn>
Date: 星期二, 22 九月 2020 10:30:01 +0800
Subject: [PATCH] 不要下载这个备份
---
ZigbeeApp/Shared/Phone/UserCenter/DoorLock/MemberFrozenPage.cs | 723 ++++++++++++++++++++++++++++++++++++++++++++++++++-----
1 files changed, 657 insertions(+), 66 deletions(-)
diff --git a/ZigbeeApp/Shared/Phone/UserCenter/DoorLock/MemberFrozenPage.cs b/ZigbeeApp/Shared/Phone/UserCenter/DoorLock/MemberFrozenPage.cs
index 6248e90..e694c22 100755
--- a/ZigbeeApp/Shared/Phone/UserCenter/DoorLock/MemberFrozenPage.cs
+++ b/ZigbeeApp/Shared/Phone/UserCenter/DoorLock/MemberFrozenPage.cs
@@ -5,7 +5,7 @@
using ZigBee.Device;
namespace Shared.Phone.UserCenter.DoorLock
{
- public class MemberFrozenPage : DoorLockCommonLayout, ZigBee.Common.IStatus
+ public class MemberFrozenPage : DoorLockCommonLayout
{
/// <summary>
/// 鏋勯�犲嚱鏁�
@@ -14,14 +14,67 @@
public MemberFrozenPage(ZigBee.Device.DoorLock doorLock, Shared.Phone.UserCenter.MemberInfoRes accountObj)
{
this.doorLock = doorLock;
- this.accountObj = accountObj;
+ this.curAccountObj = accountObj;
BackgroundColor = Shared.Common.ZigbeeColor.Current.GXCTopViewBackgroundColor;
}
- #region 鈼� 鍙橀噺鐢虫槑__________________________
+ #region 鍙橀噺鐢虫槑
+ /// <summary>
+ /// 褰撳墠闂ㄩ攣
+ /// </summary>
ZigBee.Device.DoorLock doorLock;
- Shared.Phone.UserCenter.MemberInfoRes accountObj;
+ /// <summary>
+ /// 褰撳墠鎴愬憳瀵硅薄v
+ /// </summary>
+ Shared.Phone.UserCenter.MemberInfoRes curAccountObj;
+ /// <summary>
+ /// 鍒锋柊View
+ /// </summary>
+ VerticalRefreshLayout bodyView;
#endregion
+
+ /// <summary>
+ /// 鍒濆鍖栨暟鎹俊鎭�
+ /// </summary>
+ void ReadDoorLockUserInfo()
+ {
+ System.Threading.Tasks.Task.Run(async () =>
+ {
+ try
+ {
+ 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
+ {
+ Application.RunOnMainThread(() =>
+ {
+ MidRefresh();
+ bodyView.EndHeaderRefreshing();
+ });
+ }
+ });
+ }
/// <summary>
/// UI鏄剧ず
@@ -29,13 +82,13 @@
public void Show()
{
string accountTitle = "";
- if (accountObj.UserName != null)
+ if (curAccountObj.UserName != null)
{
- accountTitle = accountObj.UserName;
+ accountTitle = curAccountObj.UserName;
}
else
{
- accountTitle = accountObj.Account;
+ accountTitle = curAccountObj.Account;
}
this.TopFrameLayout(this, accountTitle);
@@ -47,22 +100,31 @@
this.btnBackFrameLayout.MouseUpEventHandler += eHandlerBack;
this.MidFrameLayout(this);
- MidFrameLayoutContent();
- }
-
- public void MidFrameLayoutContent()
- {
- var bodyView = new VerticalScrolViewLayout()
+ bodyView = new VerticalRefreshLayout()
{
};
this.midFrameLayout.AddChidren(bodyView);
+ MidRefresh();
+
+ bodyView.BeginHeaderRefreshingAction += () =>
+ {
+ bodyView.BeginHeaderRefreshing();
+ ReadDoorLockUserInfo();
+ };
+ }
+ /// <summary>
+ /// 涓儴甯冨眬
+ /// </summary>
+ public async void MidRefresh()
+ {
+ bodyView.RemoveAll();
for (int i = 0; i < 3; i++)
{
var RowView = new FrameLayout()
{
- Height = Application.GetRealHeight(127 + 20),
- BackgroundColor = Shared.Common.ZigbeeColor.Current.XMTopFrameLayout,
+ Height = Application.GetRealHeight(127 + 23),
+ BackgroundColor = Shared.Common.ZigbeeColor.Current.XMWhite,
};
bodyView.AddChidren(RowView);
@@ -112,28 +174,52 @@
else if (i == 1)
{
btnText.Text = Language.StringByID(R.MyInternationalizationString.FrozenUser);
- btnRight.Height = Application.GetRealHeight(0);
- var btnSwitch = new Button()
- {
- X = Application.GetRealWidth(50),
- Y = Application.GetRealHeight(32),
- Height = Application.GetRealHeight(60),
- Width = Application.GetRealWidth(60),
- UnSelectedImagePath = "DoorLock/Switch.png",
- SelectedImagePath = "DoorLock/SwitchOn.png",
- };
- btnRightFrameLayout.AddChidren(btnSwitch);
- }
- else if (i == 2)
- {
- btnText.Text = Language.StringByID(R.MyInternationalizationString.TempUnlockPermission);
btnRight.X = Application.GetRealWidth(50);
btnRight.Y = Application.GetRealHeight(32);
btnRight.Height = Application.GetRealHeight(63);
btnRight.Width = Application.GetRealWidth(104);
btnRight.UnSelectedImagePath = "DoorLock/Switch.png";
btnRight.SelectedImagePath = "DoorLock/SwitchOn.png";
- line2.Visible = false;
+ var result = doorLock.IsFreezeAccount[curAccountObj.SubAccountDistributedMark];
+ if (result == true)
+ {
+ btnRight.IsSelected = true;
+ }
+ else
+ {
+ btnRight.IsSelected = false;
+ }
+ }
+ else if (i == 2)
+ {
+ if (doorLock.IsFreezeAccount[curAccountObj.SubAccountDistributedMark] == false)
+ {
+ btnText.Text = Language.StringByID(R.MyInternationalizationString.TempUnlockPermission);
+ btnRight.X = Application.GetRealWidth(50);
+ btnRight.Y = Application.GetRealHeight(32);
+ btnRight.Height = Application.GetRealHeight(63);
+ btnRight.Width = Application.GetRealWidth(104);
+ btnRight.UnSelectedImagePath = "DoorLock/Switch.png";
+ btnRight.SelectedImagePath = "DoorLock/SwitchOn.png";
+ line2.Visible = false;
+
+ var result1 = doorLock.HasRemoteUnlockAccess[curAccountObj.SubAccountDistributedMark];
+ if (result1 == true)
+ {
+ btnRight.IsSelected = true;
+ }
+ else
+ {
+ btnRight.IsSelected = false;
+ }
+ }
+ else
+ {
+ btnText.Width = 0;
+ btnRight.Width = 0;
+ line2.Width = 0;
+ RowView.BackgroundColor = Shared.Common.ZigbeeColor.Current.XMMidFrameLayout;
+ }
}
int currentIndex = i;
@@ -141,60 +227,565 @@
{
if (currentIndex == 0)
{
- var unLockMethod = new Shared.Phone.UserCenter.DoorLock.UnLockMethod(doorLock, accountObj);
+ var unLockMethod = new Shared.Phone.UserCenter.DoorLock.UnLockMethod(doorLock, curAccountObj);
Shared.Phone.UserView.HomePage.Instance.AddChidren(unLockMethod);
Shared.Phone.UserView.HomePage.Instance.PageIndex += 1;
unLockMethod.Show();
}
else if (currentIndex == 1)
{
- btnRight.IsSelected = !btnRight.IsSelected;
+ if (!btnRight.IsSelected)
+ {
+ FreezeUser(true);
+ }
+ else
+ {
+ FreezeUser(false);
+ }
}
else if (currentIndex == 2)
{
-
+ if (!btnRight.IsSelected)
+ {
+ HasRemoteUnlockAccessMethod(true);
+ }
+ else
+ {
+ HasRemoteUnlockAccessMethod(false);
+ }
}
};
- btnRightFrameLayout.MouseUpEventHandler += eHandler;
- btnRight.MouseUpEventHandler += eHandler;
- RowView.MouseUpEventHandler += eHandler;
- btnText.MouseUpEventHandler += eHandler;
+ if (i == 0)
+ {
+ btnRightFrameLayout.MouseUpEventHandler += eHandler;
+ btnRight.MouseUpEventHandler += eHandler;
+ RowView.MouseUpEventHandler += eHandler;
+ btnText.MouseUpEventHandler += eHandler;
+ }
+ else if (i == 1)
+ {
+ btnRightFrameLayout.MouseUpEventHandler += eHandler;
+ btnRight.MouseUpEventHandler += eHandler;
+ }
+ else if (i == 2)
+ {
+ btnRightFrameLayout.MouseUpEventHandler += eHandler;
+ btnRight.MouseUpEventHandler += eHandler;
+ }
+ }
+ }
+
+ /// <summary>
+ /// 鍐荤粨璐︽埛
+ /// </summary>
+ /// <param name="isFreeze"></param>
+ void FreezeUser(bool isFreeze)
+ {
+ var dialog = new Dialog { };
+ string textFreeze = "";
+ if (isFreeze)
+ {
+ textFreeze = Language.StringByID(R.MyInternationalizationString.SureToFreezeAccount);
+ }
+ else
+ {
+ textFreeze = Language.StringByID(R.MyInternationalizationString.SureToUnFreeze);
}
+ string msg = Language.StringByID(R.MyInternationalizationString.GoPersonalCenter);
+ var alert = new Shared.Phone.UserCenter.ShowMsgControl(ShowMsgType.Confirm, textFreeze, Language.StringByID(R.MyInternationalizationString.DoorlockConfirm));
+ alert.Show();
+ //浣跨敤纭鍨嬪脊妗嗘椂,鐨勫洖璋冨嚱鏁�
+ alert.ConfirmClickEvent += () =>
+ {
+ System.Threading.Tasks.Task.Run(async () =>
+ {
+ int successConunt = 0;
+ int operateConunt = -1;
+ Application.RunOnMainThread(() => { CommonPage.Loading.Start(""); });
+ try
+ {
+ var doorLockId = doorLock.DeviceAddr + "_" + doorLock.DeviceEpoint;
+ var curAccountDoorLockUserList = await Shared.Phone.UserCenter.DoorLock.DoorLockCommonInfo.GetAccountDoorLockUserList(doorLock, curAccountObj.SubAccountDistributedMark);
+ if (curAccountDoorLockUserList.Count != 0)
+ {
+ //淇敼浜戠瀛樺偍淇℃伅
+ operateConunt = curAccountDoorLockUserList.Count;
+ var tempGroupId = new List<List<int>>();
+ var tempUserIdList = new List<int> { };
+ foreach (var curDoorLockUser in curAccountDoorLockUserList)
+ {
+ // 璐︽埛涓病鏈夐棬閿佺敤鎴�
+ if (string.IsNullOrEmpty(curDoorLockUser.DoorLockLocalUserId))
+ {
+ }
+ else
+ {
+ if (tempUserIdList.Count == 9)
+ {
+ tempGroupId.Add(tempUserIdList);
+ tempUserIdList = new List<int>();
+ }
+ tempUserIdList.Add(int.Parse(curDoorLockUser.DoorLockLocalUserId));
+ }
+ }
+ tempGroupId.Add(tempUserIdList);
+ //鎵归噺鍐荤粨闂ㄩ攣涓殑璐︽埛
+ ZigBee.Device.DoorLock.AccessType accessType;
+ if (isFreeze)
+ {
+ accessType = ZigBee.Device.DoorLock.AccessType.DisEnableMoreUsers;
+ }
+ else
+ {
+ accessType = ZigBee.Device.DoorLock.AccessType.EnableMoreUsers;
+ }
+ //鍐荤粨/瑙e喕鐢ㄦ埛
+ int count1 = tempGroupId.Count;
+ if (tempGroupId.Count == 1)
+ {
+ foreach (var a in tempGroupId)
+ {
+ if (a.Count == 0)
+ {
+ count1 = 0;
+ break;
+ }
+ }
+ }
+ int count2 = 0;
+
+ int tempCount = 0;
+ for (int i = 0; i < tempGroupId.Count; i++)
+ {
+ var tempUserIdList1 = tempGroupId[i];
+ if (tempUserIdList1.Count == 0)
+ {
+ break;
+ }
+ var passData = doorLock.FreezeAccountData(tempUserIdList1, accessType);
+ var resultData = await doorLock.DefaultControlAsync(passData);
+ if (resultData != null && resultData.defaultControlResponseData != null)
+ {
+ if (resultData.defaultControlResponseData.status == 32)
+ {
+ count2++;
+ }
+ else if (resultData.defaultControlResponseData.status == 33)
+ {
+ count2++;
+ }
+ System.Threading.Thread.Sleep(1000);
+ }
+ else
+ {
+ Application.RunOnMainThread(() =>
+ {
+ new Tip() { MaxWidth = 150, Text = Language.StringByID(R.MyInternationalizationString.GwResponseOvertime), Direction = AMPopTipDirection.None, CloseTime = 2 }.Show(Common.CommonPage.Instance);
+ });
+ return;
+ }
+ tempCount++;
+ }
+
+ // 鎵归噺鍐荤粨闂ㄩ攣涓殑璐︽埛鍚庯紝鍑嗗鍐荤粨浜戠璐︽埛
+ 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;
+ });
+ }
+ }
+ 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();
+ });
+ }
+ });
+ };
}
- #region 鈼� 鎺ュ彛瀹炵幇__________________________
/// <summary>
- /// 澶勭悊鍙樺寲浜嬩欢 --灏嗗純鐢� 鏀圭敤DeviceInfoChange()
+ /// 鏄惁缁欏瓙璐︽埛鎷ユ湁杩滅▼寮�閿佺殑鏉′欢
/// </summary>
- /// <returns>The changed.</returns>
- /// <param name="common">Common.</param>
- public void Changed(CommonDevice common)
+ /// <param name="hasAccess"></param>
+ void HasRemoteUnlockAccessMethod(bool hasAccess)
{
+ string msg = Language.StringByID(R.MyInternationalizationString.SureGiveAccessToSubaccount);
+ if (!hasAccess)
+ {
+ msg = Language.StringByID(R.MyInternationalizationString.SureCancelAccessToSubaccount);
+ }
+ var alert = new Shared.Phone.UserCenter.ShowMsgControl(ShowMsgType.Confirm, msg, Language.StringByID(R.MyInternationalizationString.DoorlockConfirm));
+ alert.Show();
+ //浣跨敤纭鍨嬪脊妗嗘椂,鐨勫洖璋冨嚱鏁�
+ alert.ConfirmClickEvent += () =>
+ {
+ System.Threading.Tasks.Task.Run(async () =>
+ {
+ int successConunt = 0;
+ int operateConunt = -1;
+ Application.RunOnMainThread(() => { CommonPage.Loading.Start("Loading..."); });
+ try
+ {
+ var resultList = await Shared.Phone.UserCenter.DoorLock.DoorLockCommonInfo.GetAccountDoorLockUserList(doorLock, curAccountObj.SubAccountDistributedMark);
+ var uList = new List<string> { };
+ if (resultList != null)
+ {
+ foreach (var a in resultList)
+ {
+ uList.Add(a.CloudAccountId);
+ }
+ }
+ var d = uList.Find((value) => { return value == curAccountObj.SubAccountDistributedMark; });
+ if (d != null)
+ {
+ //淇敼浜戠瀛樺偍淇℃伅
+ var curAccountDoorLockUserList = await Shared.Phone.UserCenter.DoorLock.DoorLockCommonInfo.GetAccountDoorLockUserList(doorLock, curAccountObj.SubAccountDistributedMark);
+ foreach (var curDoorLockUser in curAccountDoorLockUserList)
+ {
+ operateConunt = curAccountDoorLockUserList.Count;
+ if (hasAccess)
+ {
+ var refreshDoorLockData = new ZigBee.Device.DoorLock.RefreshDoorLockData();
+ if (UserCenterResourse.UserInfo.AuthorityNo != 1)
+ {
+ refreshDoorLockData.LoginAccessToken = UserCenterLogic.GetConnectMainToken();
+ refreshDoorLockData.IsOtherAccountCtrl = true;
+ }
+ if (doorLock.DeviceAddr != null)
+ {
+ refreshDoorLockData.DoorLockId = doorLock.DeviceAddr + "_" + doorLock.DeviceEpoint;
+ }
+ refreshDoorLockData.PrimaryId = curDoorLockUser.Id;
+ refreshDoorLockData.IsFreezeUser = false;
+ refreshDoorLockData.IsTempUnlockAuthority = true;
+ // 鎺堟潈
+ var result = await ZigBee.Device.DoorLock.SendDoorLockToServer("DoorLock/UpdateDoorLock", refreshDoorLockData);
+ if (result != null)
+ {
+ if (result.StateCode == "Success")
+ {
+ successConunt++;
+ }
+ else
+ {
+ Application.RunOnMainThread(() =>
+ {
+ new Tip() { MaxWidth = 150, Text = Language.StringByID(R.MyInternationalizationString.GiveAccessToSubaccountFailed), Direction = AMPopTipDirection.None, CloseTime = 1 }.Show(Common.CommonPage.Instance);
+ });
+ }
+ }
+ else
+ {
+ Application.RunOnMainThread(() =>
+ {
+ new Tip() { MaxWidth = 150, Text = Language.StringByID(R.MyInternationalizationString.CloudServerResponseOvertime), Direction = AMPopTipDirection.None, CloseTime = 1 }.Show(Common.CommonPage.Instance);
+ });
+ }
+ }
+ else
+ {
+ var refreshDoorLockData = new ZigBee.Device.DoorLock.RefreshDoorLockData();
+ if (UserCenterResourse.UserInfo.AuthorityNo != 1)
+ {
+ refreshDoorLockData.LoginAccessToken = UserCenterLogic.GetConnectMainToken();
+ refreshDoorLockData.IsOtherAccountCtrl = true;
+ }
+ if (doorLock.DeviceAddr != null)
+ {
+ refreshDoorLockData.DoorLockId = doorLock.DeviceAddr + "_" + doorLock.DeviceEpoint;
+ }
+ refreshDoorLockData.PrimaryId = curDoorLockUser.Id;
+ refreshDoorLockData.IsFreezeUser = false;
+ refreshDoorLockData.IsTempUnlockAuthority = false;
+ //鍙栨秷鏉冮檺
+ var result = await ZigBee.Device.DoorLock.SendDoorLockToServer("DoorLock/UpdateDoorLock", refreshDoorLockData);
+ if (result != null)
+ {
+ if (result.StateCode == "Success")
+ {
+ successConunt++;
+ }
+ else
+ {
+ Application.RunOnMainThread(() =>
+ {
+ new Tip() { MaxWidth = 150, Text = Language.StringByID(R.MyInternationalizationString.CancelAccessToSubaccountFailed), Direction = AMPopTipDirection.None, CloseTime = 1 }.Show(Common.CommonPage.Instance);
+ });
+ }
+ }
+ else
+ {
+ Application.RunOnMainThread(() =>
+ {
+ new Tip() { MaxWidth = 150, Text = Language.StringByID(R.MyInternationalizationString.CloudServerResponseOvertime), Direction = AMPopTipDirection.None, CloseTime = 1 }.Show(Common.CommonPage.Instance);
+ });
+ }
+ }
+ }
+ }
+ else
+ {
+ //鏂板锛屼笖涓嶅喕缁�
+ var addLockInfo = new ZigBee.Device.DoorLock.AddDoorLockData();
+ if (UserCenterResourse.UserInfo.AuthorityNo != 1)
+ {
+ addLockInfo.LoginAccessToken = UserCenterLogic.GetConnectMainToken();
+ addLockInfo.IsOtherAccountCtrl = true;
+ }
+ addLockInfo.CloudAccountId = curAccountObj.SubAccountDistributedMark;
+ if (doorLock.DeviceAddr != null)
+ {
+ addLockInfo.DoorLockId = doorLock.DeviceAddr + "_" + doorLock.DeviceEpoint;
+ }
+ addLockInfo.EntryTime = System.DateTime.Now;
+ addLockInfo.IsFreezeUser = false;
+ if (hasAccess)
+ {
+ addLockInfo.IsTempUnlockAuthority = true;
+ }
+ else
+ {
+ addLockInfo.IsTempUnlockAuthority = false;
+ }
+ var result = await ZigBee.Device.DoorLock.SendDoorLockToServer("DoorLock/AddDoorLock", addLockInfo);
+ if (result != null)
+ {
+ if (result.StateCode == "Success")
+ {
+ operateConunt = 0;
+ }
+ else
+ {
+ Application.RunOnMainThread(() =>
+ {
+ if (hasAccess)
+ {
+ new Tip() { MaxWidth = 150, Text = Language.StringByID(R.MyInternationalizationString.GiveAccessToSubaccountFailed), Direction = AMPopTipDirection.None, CloseTime = 1 }.Show(Common.CommonPage.Instance);
+ }
+ else
+ {
+ new Tip() { MaxWidth = 150, Text = Language.StringByID(R.MyInternationalizationString.CancelAccessToSubaccountFailed), Direction = AMPopTipDirection.None, CloseTime = 1 }.Show(Common.CommonPage.Instance);
+ }
+ return;
+ });
+ }
+ }
+ else
+ {
+ Application.RunOnMainThread(() =>
+ {
+ new Tip() { MaxWidth = 150, Text = Language.StringByID(R.MyInternationalizationString.CloudServerResponseOvertime), Direction = AMPopTipDirection.None, CloseTime = 1 }.Show(Common.CommonPage.Instance);
+ });
+ }
+ }
+
+ }
+ catch { }
+ finally
+ {
+ if (operateConunt == successConunt)
+ {
+ if (hasAccess)
+ {
+ doorLock.HasRemoteUnlockAccess[curAccountObj.SubAccountDistributedMark] = true;
+ }
+ else
+ {
+ doorLock.HasRemoteUnlockAccess[curAccountObj.SubAccountDistributedMark] = false;
+ }
+ doorLock.ReSave();
+ }
+ Application.RunOnMainThread(() =>
+ {
+ MidRefresh();
+ CommonPage.Loading.Hide();
+ });
+ }
+ });
+ };
}
- /// <summary>
- /// 澶勭悊鍙樺寲浜嬩欢
- /// </summary>
- /// <param name="common"></param>
- /// <param name="typeTag"></param>
- public void DeviceInfoChange(CommonDevice common, string typeTag)
- {
- }
- /// <summary>
- /// Changeds the IL ogic status.
- /// </summary>
- /// <param name="logic">Logic.</param>
- public void ChangedILogicStatus(ZigBee.Device.Logic logic)
- {
- }
- /// <summary>
- /// Changeds the IS cene status.
- /// </summary>
- /// <param name="scene">Scene.</param>
- public void ChangedISceneStatus(Scene scene)
- {
- }
- #endregion
}
}
--
Gitblit v1.8.0