From 66a9965c44ecc32a6696abca876ab9d1cd091584 Mon Sep 17 00:00:00 2001
From: gxc <guoxuecheng@guoxuechengdeMacBook-Pro.local>
Date: 星期五, 28 二月 2020 15:25:13 +0800
Subject: [PATCH] 2020.2.28

---
 ZigbeeApp/Shared/Phone/ZigBee/Device/DoorLock.cs |  737 +++++++++++++++++++++++++++++++++++++++++++++----------
 1 files changed, 597 insertions(+), 140 deletions(-)

diff --git a/ZigbeeApp/Shared/Phone/ZigBee/Device/DoorLock.cs b/ZigbeeApp/Shared/Phone/ZigBee/Device/DoorLock.cs
old mode 100755
new mode 100644
index bb3cf89..4379054
--- a/ZigbeeApp/Shared/Phone/ZigBee/Device/DoorLock.cs
+++ b/ZigbeeApp/Shared/Phone/ZigBee/Device/DoorLock.cs
@@ -11,7 +11,7 @@
 
 namespace ZigBee.Device
 {
-    public class DoorLock : CommonDevice
+    public class DoorLock : Shared.Phone.UserCenter.DoorLock.DoorLockCommonInfo
     {
         public DoorLock()
         {
@@ -20,77 +20,65 @@
 
         #region 闂ㄩ攣鏈湴鍙橀噺
         /// <summary>
-        /// 闂ㄩ攣鏈湴鐢ㄦ埛鍒楄〃
+        /// 鏈湴闂ㄩ攣鐢ㄦ埛鍜岃处鎴峰垪琛�
+        /// key:闂ㄩ攣鐢ㄦ埛ID
         /// </summary>
         /// <returns></returns>
         public Dictionary<int, LocaDoorLockObj> localDoorLockUserList = new Dictionary<int, LocaDoorLockObj>();
-        public string currentUserDisplayMethod = string.Empty;
+        /// <summary>
+        /// 鏈湴闂ㄨ处鎴峰垪琛�
+        /// key:璐︽埛ID锛堜富璐︽埛鏄疓UID锛屽瓙璐︽埛鏄垎浜繃鏉ョ殑璐︽埛ID锛�
+        /// </summary>
+        /// <returns></returns>
+        public Dictionary<string, LocaDoorLockObj> localDoorLockAccountList = new Dictionary<string, LocaDoorLockObj>();
+
+        public string currentUserDisplayMethod = string.Empty;//褰撳墠鐢ㄦ埛鏄剧ず鏂瑰紡
+        //鏈湴鎵�鏈夎处鎴峰垪琛�
         public List<Shared.Phone.UserCenter.MemberInfoRes> localAllAccountList = new List<Shared.Phone.UserCenter.MemberInfoRes> { };
-        public static int RemoteUnlockCount = 3;//杩滅▼寮�閿佹鏁伴檺鍒�
-        public static string RemoteUnlockPassword = string.Empty;//杩滅▼寮�閿佸瘑鐮�
-        public static string LocalTempPassword = string.Empty;//鏈湴鐢熸垚鐨勪复鏃跺瘑鐮�
+        public string LocalTempPassword = string.Empty;//鏈湴鐢熸垚鐨勪复鏃跺瘑鐮�
+        public Dictionary<string, bool> IsFreezeAccount = new Dictionary<string, bool> { };//鏄惁鍐荤粨瀛愯处鎴�
+        public Dictionary<string, bool> HasRemoteUnlockAccess = new Dictionary<string, bool> { };//鏄惁缁欏瓙璐︽埛鎷ユ湁杩滅▼寮�閿佺殑鏉′欢
+        public Dictionary<string, bool> IsFailedToGetDoorLockInfo = new Dictionary<string, bool> { };//鏄惁鑾峰彇闂ㄩ攣鏁版嵁澶辫触
+        public string RemoteUnlockPassword = string.Empty;//杩滅▼寮�閿佸瘑鐮�
+
+        public static int RemoteUnlockCount = 5;//杩滅▼寮�閿佹鏁伴檺鍒�
+        public static int failedCount = 3;//杩滅▼寮�閿佸け璐ユ鏁�
         public static DateTime maxValue = DateTime.MaxValue;
         public static DateTime minValue = DateTime.MinValue;
 
-
         #region 涓存椂瀵嗙爜淇℃伅
         /// <summary>
-        /// 涓存椂瀵嗙爜鏈湴瀛樺偍瀵硅薄
+        /// 鐢ㄦ埛绠$悊鍙戦�佹暟鎹洖澶�
         /// </summary>
-        public TempPasswordObj tempPasswordObj = new TempPasswordObj();
+        public TempPasswordObject tempPasswordObject;
         /// <summary>
         /// 涓存椂瀵嗙爜鏈湴瀵硅薄
         /// </summary>
         [System.Serializable]
-        public class TempPasswordObj
+        public class TempPasswordObject
         {
             /// <summary>
-            /// 闂ㄩ攣鏈夋晥鏃堕棿
+            ///  涓存椂瀵嗙爜ID
             /// </summary>
-            public int validTime;
-            /// <summary>
-            /// 闂ㄩ攣鏃堕棿
-            /// </summary>
-            public int times;
-        }
-        #endregion
-
-        /// <summary>
-        /// 闂ㄩ攣缂栫▼浜嬩欢閫氱煡
-        /// </summary>
-        [System.Serializable]
-        public class LocaDoorLockObj
-        {
-            /// <summary>
-            /// 鐢ㄦ埛id
-            ///闂ㄩ攣鏈湴褰曞叆鐨勫瘑鐮併�佹寚绾广�佹劅搴斿崱閮芥湁鍞竴瀵瑰簲鐨勭敤鎴稩d
-            /// </summary>
-            public int UserID;
-            /// <summary> 
-            /// 寮�閿佺被鍨�
-            /// 甯哥敤锛�
-            /// 0:Keypad(閿洏/瀵嗙爜)锛�3:RFID(灏勯鍗�)锛�15:鎸囩汗
-            ///涓嶅父鐢細
-            /// 1:RF(Zigbee鏃犵嚎)锛�2:Manual(鎵嬪姩)锛�255:Indeterminate(涓嶇‘瀹�)
-            /// </summary>
-            public int UnlockType;
-            /// <summary>
-            ///  鍏宠仈璐︽埛鐨処D
-            /// </summary>
-            public string ConnectedAccount = string.Empty;
-            /// <summary>
-            ///  闂ㄩ攣鐢ㄦ埛鍚�
-            /// </summary>
-            public string UserName = string.Empty;
-            /// <summary>
-            /// 闂ㄩ攣褰曞叆鐨勬椂
-            /// </summary>
-            public DateTime EntryTime = System.DateTime.MinValue;
+            public int UserId;
             /// <summary>
             /// PrimaryId 闂ㄩ攣浜戠涓� 閿�(闈炴洿鏂板瓧娈�,浠ヤ笅鍧囦负鏇存柊瀛楁) -->閿悕 : PrimaryId榛樿鍊�: null
             /// </summary>
-            public string PrimaryId = "";
+            //public string PrimaryId;
+            /// <summary>
+            ///  6浣嶆湁鍔ㄦ�佷复鏃跺瘑鐮�
+            /// </summary>
+            public string TempPassword;
+            /// <summary>
+            /// 闂ㄩ攣鏈夋晥鏃堕棿
+            /// </summary>
+            public DateTime ValidTime;
+            /// <summary>
+            /// 闂ㄩ攣澶辨晥鏃堕棿
+            /// </summary>
+            public DateTime InValidTime;
         }
+        #endregion
 
         #endregion
 
@@ -121,6 +109,11 @@
             /// 闂ㄩ攣鏈湴鐢ㄦ埛Id -->閿悕 : DoorLockLocalUserId
             /// </summary>
             public string DoorLockLocalUserId = "";
+
+            /// <summary>
+            /// IsOtherAccountCtrl 鏄惁涓哄瓙甯愬彿鎺у埗杩囨潵 -->閿悕 : IsOtherAccountCtrl
+            /// </summary>
+            public bool IsOtherAccountCtrl = false;
         }
         #endregion
 
@@ -191,10 +184,6 @@
             /// </summary>
             public string PrimaryId = "";
             /// <summary>
-            /// 浜戠甯愬彿Id -->閿悕 : CloudAccountId
-            /// </summary>
-            public string CloudAccountId = "";
-            /// <summary>
             /// OpenLockMode 寮�閿佹柟寮�(瀵嗙爜銆佹寚绾广�両C鍗�) -->閿悕 : OpenLockMode (鍙��)
             /// </summary>
             public int OpenLockMode = 0;
@@ -230,8 +219,266 @@
             public string PrimaryId = "";
             /// <summary>
             /// 闂ㄩ攣Id -->閿悕 : DoorLockId (鍙��)
+            /// DelDoorLockDelType 闂ㄩ攣鍒犻櫎绫诲瀷(0: 鏍规闂ㄩ攣涓婚敭(浜戠涓婚敭)鍒犻櫎(鍗曟潯鍒犻櫎)銆�1:鏍规闂ㄩ攣Id鎵归噺鍒犻櫎(鍑℃槸涓庨棬閿両d鐩稿悓閮戒細鍒犻櫎)銆�2锛氭牴妞愰棬閿両d鍙婇棬閿佹湰鍦扮敤鎴稩d鎵归噺鍒犻櫎(杩欎釜闂ㄩ攣Id杩欎釜闂ㄩ攣鏈湴鐢ㄦ埛Id鍧囦細琚垹闄�)) -->閿悕 : DelDoorLockDelType 榛樿鍊�: 0
             /// </summary>
             public int DelDoorLockDelType;
+        }
+        #endregion
+
+        #region 娣诲姞闂ㄩ攣涓存椂瀵嗙爜
+        /// <summary>
+        ///  娣诲姞闂ㄩ攣
+        /// </summary>
+        public class AddDoorLockTempPasswordData
+        {
+            /// <summary>
+            /// RequestVersion
+            /// </summary>
+            public string RequestVersion = Shared.Common.CommonPage.RequestVersion;
+            /// <summary>
+            /// LoginAccessToken
+            /// </summary>
+            public string LoginAccessToken = Shared.Common.Config.Instance.Token;
+            /// <summary>
+            /// 浣忓畢Id -->閿悕 : HomeId
+            /// </summary>
+            public string HomeId = Shared.Common.Config.Instance.HomeId;
+            /// <summary>
+            /// 闂ㄩ攣Id -->閿悕 : DoorLockId
+            /// </summary>
+            public string LocalDoorLockId = "";
+            /// <summary>
+            /// 涓存椂瀵嗙爜Id -->閿悕 : TempPwdId
+            /// </summary>
+            public string TempPwdId = "";
+            /// <summary>
+            /// 涓存椂瀵嗙爜 -->閿悕 : TempPwd
+            /// </summary>
+            public string TempPwd = "";
+            /// <summary>
+            /// 0:00:00] ValidBeginTime 鏈夋晥寮�濮嬫椂闂� -->閿悕 : ValidBeginTime  榛樿鍊�: 0001/1/1
+            /// </summary>
+            public DateTime ValidBeginTime;
+            /// <summary>
+            /// 0:00:00] ValidEndTime 鏈夋晥缁撴潫鏃堕棿 -->閿悕 : ValidEndTime
+            /// </summary>
+            public DateTime ValidEndTime;
+            /// <summary>
+            /// IsOtherAccountCtrl 鏄惁涓哄瓙甯愬彿鎺у埗杩囨潵 -->閿悕 : IsOtherAccountCtrl
+            /// </summary>
+            public bool IsOtherAccountCtrl = false;
+        }
+
+        /// <summary>
+        /// 娣诲姞闂ㄩ攣缁撴灉
+        /// </summary>
+        public class AddDoorLockTempPasswordDataRes : AddDoorLockDataRes
+        {
+        }
+        #endregion
+
+        #region 鍒犻櫎闂ㄩ攣涓存椂瀵嗙爜
+        /// <summary>
+        ///  鍒犻櫎闂ㄩ攣
+        /// </summary>
+        public class DelDoorLockTempPasswordData
+        {
+            /// <summary>
+            /// RequestVersion
+            /// </summary>
+            public string RequestVersion = Shared.Common.CommonPage.RequestVersion;
+            /// <summary>
+            /// LoginAccessToken
+            /// </summary>
+            public string LoginAccessToken = Shared.Common.Config.Instance.Token;
+            /// <summary>
+            /// 浣忓畢Id -->閿悕 : HomeId
+            /// </summary>
+            public string HomeId = Shared.Common.Config.Instance.HomeId;
+            /// <summary>
+            /// LocalDoorLockId 鎼滅储鏈湴闂ㄩ攣Id -->閿悕 : LocalDoorLockId  榛樿鍊�: null
+            /// </summary>
+            public string LocalDoorLockId = "";
+            /// <summary>
+            /// IsOtherAccountCtrl 鏄惁涓哄瓙甯愬彿鎺у埗杩囨潵 -->閿悕 : IsOtherAccountCtrl
+            /// </summary>
+            public bool IsOtherAccountCtrl = false;
+        }
+
+        /// <summary>
+        /// 鍒犻櫎闂ㄩ攣缁撴灉
+        /// </summary>
+        public class DelDoorLockTempPasswordDataRes : AddDoorLockDataRes
+        {
+        }
+        #endregion
+
+        #region 鏇存柊闂ㄩ攣涓存椂瀵嗙爜
+        /// <summary>
+        ///  鏇存柊闂ㄩ攣
+        /// </summary>
+        public class ModifyDoorLockTempPasswordData
+        {
+            /// <summary>
+            /// RequestVersion
+            /// </summary>
+            public string RequestVersion = Shared.Common.CommonPage.RequestVersion;
+            /// <summary>
+            /// LoginAccessToken
+            /// </summary>
+            public string LoginAccessToken = Shared.Common.Config.Instance.Token;
+            /// <summary>
+            /// 浣忓畢Id -->閿悕 : HomeId
+            /// </summary>
+            public string HomeId = Shared.Common.Config.Instance.HomeId;
+            /// <summary>
+            /// 闂ㄩ攣瀵嗙爜涓婚敭(鑾峰彇闂ㄩ攣瀵嗙爜鍒嗛〉涓殑Id) -->閿悕 : DoorLockPwdId
+            /// </summary>
+            public string DoorLockPwdId = "";
+            /// <summary>
+            /// 闂ㄩ攣Id -->閿悕 : DoorLockId
+            /// </summary>
+            public string LocalDoorLockId = "";
+            /// <summary>
+            /// 涓存椂瀵嗙爜Id -->閿悕 : TempPwdId
+            /// </summary>
+            public string TempPwdId = "";
+            /// <summary>
+            /// 涓存椂瀵嗙爜 -->閿悕 : TempPwd
+            /// </summary>
+            public string TempPwd = "";
+            /// <summary>
+            /// 0:00:00] ValidBeginTime 鏈夋晥寮�濮嬫椂闂� -->閿悕 : ValidBeginTime  榛樿鍊�: 0001/1/1
+            /// </summary>
+            public DateTime ValidBeginTime;
+            /// <summary>
+            /// 0:00:00] ValidEndTime 鏈夋晥缁撴潫鏃堕棿 -->閿悕 : ValidEndTime
+            /// </summary>
+            public DateTime ValidEndTime;
+            /// <summary>
+            /// IsOtherAccountCtrl 鏄惁涓哄瓙甯愬彿鎺у埗杩囨潵 -->閿悕 : IsOtherAccountCtrl
+            /// </summary>
+            public bool IsOtherAccountCtrl = false;
+        }
+
+        /// <summary>
+        /// 娣诲姞闂ㄩ攣缁撴灉
+        /// </summary>
+        public class ModigDoorLockTempPasswordDataRes : AddDoorLockDataRes
+        {
+        }
+        #endregion
+
+        #region 鑾峰彇闂ㄩ攣涓存椂瀵嗙爜
+        /// <summary>
+        ///  鑾峰彇闂ㄩ攣
+        /// </summary>
+        public class GetDoorLockTempPasswordData
+        {
+            /// <summary>
+            /// RequestVersion
+            /// </summary>
+            public string RequestVersion = Shared.Common.CommonPage.RequestVersion;
+            /// <summary>
+            /// LoginAccessToken
+            /// </summary>
+            public string LoginAccessToken = Shared.Common.Config.Instance.Token;
+            /// <summary>
+            /// 浣忓畢Id -->閿悕 : HomeId
+            /// </summary>
+            public string HomeId = Shared.Common.Config.Instance.HomeId;
+            /// <summary>
+            /// 闂ㄩ攣Id -->閿悕 : DoorLockId
+            /// </summary>
+            public string LocalDoorLockId = "";
+            /// <summary>
+            /// 涓存椂瀵嗙爜Id -->閿悕 : TempPwdId
+            /// </summary>
+            public string TempPwdId = "";
+            /// <summary>
+            /// 涓存椂瀵嗙爜 -->閿悕 : TempPwd
+            /// </summary>
+            public string TempPwd = "";
+            /// <summary>
+            /// 0:00:00] ValidBeginTime 鏈夋晥寮�濮嬫椂闂� -->閿悕 : ValidBeginTime  榛樿鍊�: 0001/1/1
+            /// </summary>
+            public DateTime? ValidBeginTime;
+            /// <summary>
+            /// 0:00:00] ValidEndTime 鏈夋晥缁撴潫鏃堕棿 -->閿悕 : ValidEndTime
+            /// </summary>
+            public DateTime? ValidEndTime;
+            /// <summary>
+            /// IsOtherAccountCtrl 鏄惁涓哄瓙甯愬彿鎺у埗杩囨潵 -->閿悕 : IsOtherAccountCtrl
+            /// </summary>
+            public bool IsOtherAccountCtrl = false;
+        }
+
+        /// <summary>
+        /// 鑾峰彇闂ㄩ攣涓存椂瀵嗙爜缁撴灉
+        /// </summary>
+        [Serializable]
+        public class GetDoorLockTempPasswordDataRes
+        {
+            public List<CloudDoorLockTempPasswordObj> PageData = new List<CloudDoorLockTempPasswordObj>();
+            public int PageIndex;
+            public int PageSize;
+            public int TotalCount;
+            public int TotalPages;
+            public bool HasPreviousPage;
+            public bool HasNextPage;
+        }
+        [Serializable]
+        public class CloudDoorLockTempPasswordObj
+        {
+            /// <summary>
+            /// 闂ㄩ攣Id -->閿悕 : DoorLockId
+            /// </summary>
+            public string LocalDoorLockId = "";
+            /// <summary>
+            /// 涓存椂瀵嗙爜Id -->閿悕 : TempPwdId
+            /// </summary>
+            public string TempPwdId = "";
+            /// <summary>
+            /// 涓存椂瀵嗙爜 -->閿悕 : TempPwd
+            /// </summary>
+            public string TempPwd = "";
+            /// <summary>
+            /// 0:00:00] ValidBeginTime 鏈夋晥寮�濮嬫椂闂� -->閿悕 : ValidBeginTime  榛樿鍊�: 0001/1/1
+            /// </summary>
+            public DateTime ValidBeginTime;
+            /// <summary>
+            /// 0:00:00] ValidEndTime 鏈夋晥缁撴潫鏃堕棿 -->閿悕 : ValidEndTime
+            /// </summary>
+            public DateTime ValidEndTime;
+            /// <summary>
+            /// 銆愰棬閿佷簯绔富閿��,鐢ㄤ簬銆愭坊鍔犻棬閿佸巻鍙层�戞帴鍙d腑鐨凞oorLockId鍙傛暟鍙娿�愬垹闄ら棬閿併�戞帴鍙d腑鐨凱rimaryId鍙傛暟,娉ㄦ剰涓嶆槸缃戝叧涓殑銆愰棬閿両d
+            /// </summary>
+            public string Id;
+            /// <summary>
+            /// 鍒涘缓鏃堕棿
+            /// </summary>
+            public DateTime CreatedOnUtc;
+        }
+
+        /// <summary>
+        /// 浠庝簯鏈嶅姟鍣ㄤ腑鑾峰彇闂ㄩ攣涓存椂瀵嗙爜
+        /// </summary>
+        public static async System.Threading.Tasks.Task<GetDoorLockTempPasswordDataRes> GetDoorLockTempPasswordFromServer(string RequestName, GetDoorLockTempPasswordData getDoorLockTempPasswordData)
+        {
+            return await System.Threading.Tasks.Task.Run((Func<System.Threading.Tasks.Task<GetDoorLockTempPasswordDataRes>>)(async () =>
+            {
+                GetDoorLockTempPasswordDataRes listInfo = null;
+                var revertObj = await SendDoorLockToServer(RequestName, getDoorLockTempPasswordData);
+                if (revertObj != null && revertObj.ResponseData != null)
+                {
+                    var result = revertObj.ResponseData.ToString();
+                    if (result != null)
+                    {
+                        listInfo = Newtonsoft.Json.JsonConvert.DeserializeObject<GetDoorLockTempPasswordDataRes>(result);
+                    }
+                }
+                return listInfo;
+            }));
         }
         #endregion
 
@@ -246,9 +493,24 @@
             /// </summary>
             public string CloudAccountId = "";
             /// <summary>
-            /// OpenLockMode 寮�閿佹柟寮�(瀵嗙爜銆佹寚绾广�両C鍗�) -->閿悕 : OpenLockMode (鍙��)
+            /// 绗嚑椤�
             /// </summary>
-            //public int OpenLockMode = 0;
+            public PageSetting pageSetting = new PageSetting();
+        }
+
+        /// <summary>
+        ///  鑾峰彇闂ㄩ攣
+        /// </summary>
+        public class PageSetting
+        {
+            /// <summary>
+            /// 绗嚑椤�
+            /// </summary>
+            public int Page = 1;
+            /// <summary>
+            /// 绗嚑椤�
+            /// </summary>
+            public int PageSize = 10;
         }
 
         [Serializable]
@@ -266,23 +528,23 @@
         public class CloudDoorLockObj
         {
             /// <summary>
-            /// 闂ㄩ攣Id  
+            /// 闂ㄩ攣Id
             /// </summary>
             public string DoorLockId;
             /// <summary>
-            /// 浜戠甯愬彿Id  
+            /// 浜戠甯愬彿Id
             /// </summary>
             public string CloudAccountId;
             /// <summary>
-            /// OpenLockMode 寮�閿佹柟寮�(瀵嗙爜銆佹寚绾广�両C鍗�)  
+            /// OpenLockMode 寮�閿佹柟寮�(瀵嗙爜銆佹寚绾广�両C鍗�)
             /// </summary>
             public int OpenLockMode;
             /// <summary>
-            /// 闂ㄩ攣鏈湴鐢ㄦ埛Id  
+            /// 闂ㄩ攣鏈湴鐢ㄦ埛Id
             /// </summary>
             public string DoorLockLocalUserId;
             /// <summary>
-            /// 浣忓畢Id 
+            /// 浣忓畢Id
             /// </summary>
             public byte[] Data;
             /// <summary>
@@ -302,11 +564,11 @@
             /// </summary>
             public bool IsTempUnlockAuthority;
             /// <summary>
-            /// 褰曞叆鏃堕棿  
+            /// 褰曞叆鏃堕棿
             /// </summary>
             public DateTime EntryTime;
             /// <summary>
-            /// 鏈�鍚庢洿鏂版椂闂� 
+            /// 鏈�鍚庢洿鏂版椂闂�
             /// </summary>
             public string LastChangeTime;
             /// <summary>
@@ -320,8 +582,8 @@
         }
 
         /// <summary>
-        /// 鑾峰彇闂ㄩ攣缁欎簯鏈嶅姟鍣�
-        /// </summary> 
+        /// 鑾峰彇闂ㄩ攣浜戞湇鍔″櫒
+        /// </summary>
         public static async System.Threading.Tasks.Task<GetDoorLockDataRes> GetDoorLockInfoFromServer(string RequestName, GetDoorLockData getDoorLockData)
         {
             return await System.Threading.Tasks.Task.Run((Func<System.Threading.Tasks.Task<GetDoorLockDataRes>>)(async () =>
@@ -334,7 +596,6 @@
                     if (result != null)
                     {
                         listInfo = Newtonsoft.Json.JsonConvert.DeserializeObject<GetDoorLockDataRes>(result);
-                        int i = 0;
                     }
                 }
                 return listInfo;
@@ -354,10 +615,27 @@
             {
                 //搴忓垪鍖栧璞�
                 var requestJson = JsonConvert.SerializeObject(obj);
+                var byteData = System.Text.Encoding.UTF8.GetBytes(requestJson);
+                byte[] result1 = null;
                 //璁块棶鎺ュ彛
-                var result = await CommonPage.Instance.RequestHttpsZigbeeAsync(RequestName, System.Text.Encoding.UTF8.GetBytes(requestJson));
-
-                return result;
+                if (UserCenterResourse.UserInfo.AuthorityNo == 1)
+                {
+                    result1 = await CommonPage.Instance.RequestHttpsZigbeeBytesResultAsync(RequestName, byteData);
+                }
+                else
+                {
+                    result1 = await CommonPage.Instance.RequestZigbeeHttpsByAdmin(RequestName, byteData);
+                }
+                if (result1 != null)
+                {
+                    var result2 = Encoding.UTF8.GetString(result1);
+                    if (result2 != null)
+                    {
+                        var result = Newtonsoft.Json.JsonConvert.DeserializeObject<Shared.Common.ResponseEntity.ResponsePack>(result2);
+                        return result;
+                    }
+                }
+                return null;
             }
             catch (Exception ex)
             {
@@ -368,18 +646,18 @@
 
         /// <summary>
         /// 鑾峰彇瀛愯处鎴蜂俊鎭�
-        /// </summary> 
+        /// </summary>
         static List<Shared.Phone.UserCenter.MemberInfoRes> DoorLockAccountList = new List<Shared.Phone.UserCenter.MemberInfoRes> { };
         public static async System.Threading.Tasks.Task<List<Shared.Phone.UserCenter.MemberInfoRes>> GetSubAccountByDistributedMark()
         {
             DoorLockAccountList.Clear();
             return await System.Threading.Tasks.Task.Run((Func<System.Threading.Tasks.Task<List<Shared.Phone.UserCenter.MemberInfoRes>>>)(async () =>
-           {
-               var pra = new Shared.Phone.UserCenter.MemberListInfoPra();
-               string result = await UserCenterLogic.GetResponseDataByRequestHttps("ZigbeeUsers/GetSubAccountByDistributedMark", false, pra);
-               var listInfo = Newtonsoft.Json.JsonConvert.DeserializeObject<List<Shared.Phone.UserCenter.MemberInfoRes>>(result);
-               return listInfo;
-           }));
+            {
+                var pra = new Shared.Phone.UserCenter.MemberListInfoPra();
+                string result = await UserCenterLogic.GetResponseDataByRequestHttps("ZigbeeUsers/GetSubAccountByDistributedMark", false, pra);
+                var listInfo = Newtonsoft.Json.JsonConvert.DeserializeObject<List<Shared.Phone.UserCenter.MemberInfoRes>>(result);
+                return listInfo;
+            }));
         }
 
         /// <summary>
@@ -419,7 +697,7 @@
             ///涓嶅父鐢細
             /// 1:RF(Zigbee鏃犵嚎)锛�2:Manual(鎵嬪姩)锛�255:Indeterminate(涓嶇‘瀹�)
             /// </summary>
-            public int OperationEventSource;
+            public int OperationEventSoure;
             /// <summary>
             /// 浜嬩欢鐮�
             /// 甯哥敤锛�
@@ -670,7 +948,7 @@
             ///  淇濈暀
             /// </summary>
             public int UserStatus;
-            /// <summary> 
+            /// <summary>
             /// 缂栫▼浜嬩欢瑙﹀彂婧�
             /// 甯哥敤锛�
             /// 0:Keypad(閿洏/瀵嗙爜)锛�3:RFID(灏勯鍗�)锛�15:鎸囩汗
@@ -683,7 +961,7 @@
             /// 甯哥敤锛�
             /// 閿洏/瀵嗙爜锛屾寚绾广�佹劅搴斿崱锛�1:Lock鍛戒护鎴愬姛浜嬩欢锛�2:Unlock鍛戒护鎴愬姛浜嬩欢
             ///涓嶅父鐢細
-            /// 璇锋煡鐪嬫灇涓� 
+            /// 璇锋煡鐪嬫灇涓�
             /// </summary>
             public int ProgramEventCode;
             /// <summary>
@@ -701,7 +979,7 @@
         /// <summary>
         /// 鐭闂ㄩ攣鏃堕棿
         /// </summary>
-        /// <returns>The writable value async.</returns>  
+        /// <returns>The writable value async.</returns>
         /// <param name="timestamp">鐭闂ㄩ攣鐨勬椂闂�</param>
         public async System.Threading.Tasks.Task<SetWritableValueResponAllData> RectifyDoorLockTimeAsync(int timestamp)
         {
@@ -874,7 +1152,7 @@
                             result = new DefaultControlResponseAllData { errorMessageBase = "缃戝叧杩斿洖鐨勬暟鎹负绌�" };
                         }
                         else
-                        {
+                        {
                             if (gatewayTemp.clientDataPassthroughResponseData?.PassData != null)
                             {
                                 var data = gatewayTemp.clientDataPassthroughResponseData.PassData;
@@ -884,10 +1162,10 @@
                                     if (command == "0002")
                                     {
                                         var tempD = new DefaultControlResponseData();
-                                        tempD.command = Convert.ToInt32(data[10].ToString() + data[11].ToString() + data[12].ToString() + data[13].ToString(), 16);
+                                        tempD.command = data[12].ToString() + data[13].ToString() + data[10].ToString() + data[11].ToString();
                                         tempD.status = Convert.ToInt32(data[14].ToString() + data[15].ToString(), 16);
                                         result = new DefaultControlResponseAllData { defaultControlResponseData = tempD };
-                                        DebugPrintLog($"UI鏀跺埌閫氱煡鍚庣殑涓婚_command:0402_{ topic}");
+                                        DebugPrintLog($"UI鏀跺埌閫氱煡鍚庣殑涓婚_command:0450_{ topic}");
                                     }
                                 }
                             }
@@ -916,7 +1194,7 @@
                         break;
                     }
                 }
-                if ((DateTime.Now - dateTime).TotalMilliseconds > WaitReceiveDataTime)
+                if ((DateTime.Now - dateTime).TotalMilliseconds > 9000)
                 {
                     result = new DefaultControlResponseAllData { errorMessageBase = " 鍥炲瓒呮椂锛岃閲嶆柊鎿嶄綔" };
                 }
@@ -925,6 +1203,109 @@
 
                 return result;
             });
+        }
+
+        /// <summary>
+        /// 鐢ㄦ埛绠$悊鍙戦�佹暟鎹�
+        /// userIdList:涓暟涓嶈兘瓒呰繃10涓�
+        /// </summary>
+        public string FreezeAccountData(List<int> userIdList, AccessType accessType)
+        {
+            string data = "";
+            string dataLength = "";
+            string dataComand1 = "50";
+            string dataComand2 = "04";
+            string dataSerialNum = "01";
+            string addDataLength = "";
+            string delUserTypeStr = "";
+            string userIdStr = "";
+            try
+            {
+                if (userIdList.Count == 0)
+                {
+                    return null;
+                }
+                if (userIdList.Count > 9)
+                {
+                    return null;
+                }
+                var tempLength = 5 + userIdList.Count * 2;
+                string tempLength1 = Convert.ToString(tempLength, 16);
+                switch (tempLength1.Length)
+                {
+                    case 1:
+                        dataLength = "0" + tempLength1.ToUpper();
+                        break;
+                    case 2:
+                        dataLength = tempLength1.ToUpper();
+                        break;
+                }
+
+                var tempAddDataLength = 1 + userIdList.Count * 2;
+                string tempAddDataLength1 = Convert.ToString(tempAddDataLength, 16);
+                switch (tempAddDataLength1.Length)
+                {
+                    case 1:
+                        addDataLength = "0" + tempAddDataLength1.ToUpper();
+                        break;
+                    case 2:
+                        addDataLength = tempAddDataLength1.ToUpper();
+                        break;
+                }
+
+                switch ((int)accessType)
+                {
+                    case 0:
+                        delUserTypeStr = "00";
+                        break;
+                    case 1:
+                        delUserTypeStr = "01";
+                        break;
+                    case 2:
+                        delUserTypeStr = "20";
+                        break;
+                    case 3:
+                        delUserTypeStr = "21";
+                        break;
+                    case 4:
+                        delUserTypeStr = "10";
+                        break;
+                    case 5:
+                        delUserTypeStr = "30";
+                        break;
+                    case 6:
+                        delUserTypeStr = "31";
+                        break;
+                }
+
+                var sbString = new System.Text.StringBuilder();
+                foreach (var userId in userIdList)
+                {
+                    string temp = Convert.ToString(userId, 16);
+                    switch (temp.Length)
+                    {
+                        case 1:
+                            userIdStr = "0" + temp + "00";
+                            break;
+                        case 2:
+                            userIdStr = temp + "00";
+                            break;
+                        case 3:
+                            var thirdBit = temp.Substring(temp.Length - 2, 1);
+                            userIdStr = temp + "0" + thirdBit;
+                            break;
+                        case 4:
+                            userIdStr = temp;
+                            break;
+                    }
+                    sbString.Append(userIdStr.ToString().ToUpper());
+                }
+                data = dataLength + dataComand1 + dataComand2 + dataSerialNum + addDataLength +
+                   delUserTypeStr + sbString;
+            }
+            catch { };
+
+            return data;
         }
 
         /// <summary>
@@ -1016,7 +1397,7 @@
             /// <summary>
             ///鍝嶅簲鎿嶄綔鐮侊紙0-ffff锛�
             /// </summary>
-            public int command = -1;
+            public string command = "";
             /// <summary>
             /// 鐘舵�佸��
             /// <para>榛樿鍝嶅簲缁撴灉锛�
@@ -1026,7 +1407,7 @@
             ///<para>32 鍐荤粨鎴愬姛</para>
             ///<para>34 鍐荤粨澶辫触</para>
             ///<para>33 瑙e喕鎴愬姛</para>
-            ///<para>35 瑙e喕澶辫触</para> 
+            ///<para>35 瑙e喕澶辫触</para>
             /// </summary>
             public int status = -1;
         }
@@ -1034,7 +1415,7 @@
         public enum AccessType
         {
             /// <summary>
-            /// 0x00 鍒犻櫎鍏ㄩ儴鍗曟鐢ㄦ埛
+            /// 0x00 鍒犻櫎鍏ㄩ儴涓存椂鐢ㄦ埛
             /// </summary>
             DelAllUsers = 0,
             /// <summary>
@@ -1049,13 +1430,25 @@
             /// 0x21 瑙e喕鎸囧畾鐢ㄦ埛
             /// </summary>
             Enable = 3,
+            /// <summary>
+            /// 0x10 澶氫釜鎸囧畾鐢ㄦ埛鍒犻櫎
+            /// </summary>
+            DelMoreUsers = 4,
+            /// <summary>
+            /// 0x30 澶氫釜鎸囧畾鐢ㄦ埛鍐荤粨
+            /// </summary>
+            DisEnableMoreUsers = 5,
+            /// <summary>
+            /// 0x31 澶氫釜鎸囧畾鐢ㄦ埛瑙e喕
+            /// </summary>
+            EnableMoreUsers = 6,
         }
         #endregion
 
         #region 楠岃瘉闂ㄩ攣瀵嗙爜
         ///<summary >
         ///楠岃瘉闂ㄩ攣瀵嗙爜
-        ///<para>inputPassword:杈撳叆鐨勯棬閿佸瘑鐮�</para> 
+        ///<para>inputPassword:杈撳叆鐨勯棬閿佸瘑鐮�</para>
         /// </summary>
         public async System.Threading.Tasks.Task<VerifyPasswordResponseAllData> VerifyPasswordAsync(string inputPassword)
         {
@@ -1108,7 +1501,7 @@
                                     {
                                         var result1 = Convert.ToInt32(data[10].ToString() + data[11].ToString(), 16);
                                         result = new VerifyPasswordResponseAllData { result = result1 };
-                                        DebugPrintLog($"UI鏀跺埌閫氱煡鍚庣殑涓婚_command:0402_{ topic}");
+                                        DebugPrintLog($"UI鏀跺埌閫氱煡鍚庣殑涓婚_command:0454_{ topic}");
                                     }
                                 }
                             }
@@ -1134,7 +1527,7 @@
                 while ((DateTime.Now - dateTime).TotalMilliseconds < 9000)// WaitReceiveDataTime)
                 {
                     await System.Threading.Tasks.Task.Delay(10);
-                    if (result != null)
+                    if (result != null && result.result == 0)
                     {
                         break;
                     }
@@ -1202,17 +1595,17 @@
         }
         #endregion
 
-        #region 杩滅▼寮�閿� 
+        #region 杩滅▼寮�閿�
         ///<summary >
-        ///杩滅▼寮�閿� 
-        ///<para>inputPassword: 杈撳叆瀵嗙爜/para> 
+        ///杩滅▼寮�閿�
+        ///<para>inputPassword: 杈撳叆瀵嗙爜/para>
         /// </summary>
-        public async System.Threading.Tasks.Task<ResponseAllData> RemoteControlAsync(string inputPassword)
+        public async System.Threading.Tasks.Task<RemoteResponseAllData> RemoteControlAsync(string inputPassword)
         {
-            ResponseAllData result = null;
+            RemoteResponseAllData result = null;
             if (Gateway == null)
             {
-                result = new ResponseAllData { errorMessageBase = "褰撳墠娌℃湁缃戝叧" };
+                result = new RemoteResponseAllData { errorMessageBase = "褰撳墠娌℃湁缃戝叧" };
                 return result;
             }
             return await System.Threading.Tasks.Task.Run(async () =>
@@ -1229,22 +1622,33 @@
 
                         if (temp == null)
                         {
-                            result = new ResponseAllData { errorMessageBase = "缃戝叧閿欒鍥炲锛屼笖鏁版嵁鏄┖" };
+                            result = new RemoteResponseAllData { errorMessageBase = "缃戝叧閿欒鍥炲锛屼笖鏁版嵁鏄┖" };
                         }
 
                         else
                         {
-                            result = new ResponseAllData { errorResponData = temp, errorMessageBase = ErrorMess(temp.Error) };
+                            result = new RemoteResponseAllData { errorResponData = temp, errorMessageBase = ErrorMess(temp.Error) };
                         }
                     }
-                    if (topic == gatewayID + "/" + "ZbDataPassthrough")
+                    else if (topic == $"{gatewayID}/DoorLock/DoorLockOperatingEventNotificationCommand")
+                    {
+                        var OperatingEventNotificationDatad = Newtonsoft.Json.JsonConvert.DeserializeObject<ZigBee.Device.DoorLock.DoorLockOperatingEventNotificationCommand>(jobject["Data"].ToString());
+                        if (OperatingEventNotificationDatad != null)
+                        {
+                            if (OperatingEventNotificationDatad.OperationEventSoure == 1 && OperatingEventNotificationDatad.OperationEventCode == 5)
+                            {
+                                result = new RemoteResponseAllData { IsPawDispear = true };
+                            }
+                        }
+                    }
+                    else if (topic == gatewayID + "/" + "ZbDataPassthrough")
                     {
                         var gatewayTemp = new ZbGateway() { DataID = jobject.Value<int>("Data_ID") };
                         gatewayTemp.clientDataPassthroughResponseData = Newtonsoft.Json.JsonConvert.DeserializeObject<ClientDataPassthroughResponseData>(jobject["Data"].ToString());
 
                         if (gatewayTemp.clientDataPassthroughResponseData == null)
                         {
-                            result = new ResponseAllData { errorMessageBase = "缃戝叧杩斿洖鐨勬暟鎹负绌�" };
+                            result = new RemoteResponseAllData { errorMessageBase = "缃戝叧杩斿洖鐨勬暟鎹负绌�" };
                         }
                         else
                         {
@@ -1256,18 +1660,17 @@
                                     var command = data[4].ToString() + data[5].ToString() + data[2].ToString() + data[3].ToString();
                                     if (command == "0002")
                                     {
-                                        var tempD = new ResponseData();
-                                        tempD.command = Convert.ToInt32(data[10].ToString() + data[11].ToString() + data[12].ToString() + data[13].ToString(), 16);
+                                        var tempD = new RemoteResponseData();
+                                        tempD.command = data[12].ToString() + data[13].ToString() + data[10].ToString() + data[11].ToString();
                                         tempD.status = Convert.ToInt32(data[14].ToString() + data[15].ToString(), 16);
-                                        result = new ResponseAllData { responseData = tempD };
-                                        DebugPrintLog($"UI鏀跺埌閫氱煡鍚庣殑涓婚_command:0400_{ topic}");
+                                        result = new RemoteResponseAllData { responseData = tempD };
+                                        DebugPrintLog($"UI鏀跺埌閫氱煡鍚庣殑涓婚_command:0462_{ topic}");
                                     }
                                 }
                             }
                         }
                     }
                 };
-
                 Gateway.Actions += action;
                 DebugPrintLog("ClientDataPassthrough_Actions 鍚姩" + System.DateTime.Now.ToString());
 
@@ -1283,17 +1686,25 @@
                 catch { }
 
                 var dateTime = DateTime.Now;
-                while ((DateTime.Now - dateTime).TotalMilliseconds < 9000)// WaitReceiveDataTime)
+                while ((DateTime.Now - dateTime).TotalMilliseconds < 5000)// WaitReceiveDataTime)
                 {
                     await System.Threading.Tasks.Task.Delay(10);
-                    if (result != null)
+                    if (result == null)
+                    {
+                        continue;
+                    }
+                    if (result.responseData != null && result.responseData.command == "0462")
+                    {
+                        break;
+                    }
+                    if (result.IsPawDispear == true)
                     {
                         break;
                     }
                 }
                 if ((DateTime.Now - dateTime).TotalMilliseconds > WaitReceiveDataTime)
                 {
-                    result = new ResponseAllData { errorMessageBase = " 鍥炲瓒呮椂锛岃閲嶆柊鎿嶄綔" };
+                    result = new RemoteResponseAllData { errorMessageBase = " 鍥炲瓒呮椂锛岃閲嶆柊鎿嶄綔" };
                 }
                 Gateway.Actions -= action;
                 DebugPrintLog("ClientDataPassthrough_Actions 閫�鍑�" + System.DateTime.Now.ToString());
@@ -1329,12 +1740,57 @@
 
             return data;
         }
+
+        /// <summary>
+        ///  杩滅▼鍥炲鏁版嵁
+        /// </summary>
+        public RemoteResponseAllData remoteResponseAllData;
+        [System.Serializable]
+        public class RemoteResponseAllData
+        {
+            /// <summary>
+            /// 閿欒淇℃伅
+            /// </summary> 
+            public string errorMessageBase;
+            /// <summary>
+            /// 缃戝叧淇℃伅閿欒鍙嶉
+            /// <para>褰撶綉鍏虫帴鏀跺埌瀹㈡埛绔俊鎭悗锛屽嚭鐜颁互涓嬪紓甯告儏鍐靛皢鍙嶉閿欒銆�</para>
+            /// </summary>
+            public ErrorResponData errorResponData;
+            /// <summary>
+            /// 涓存椂瀵嗙爜鍥炲鏁版嵁
+            /// </summary>
+            public RemoteResponseData responseData;
+            /// <summary>
+            /// 鏄惁瀵嗙爜琚垹闄�
+            /// </summary>
+            public bool IsPawDispear = false;
+        }
+
+        /// <summary>
+        /// 鐢ㄦ埛绠$悊鏁版嵁鍥炲
+        /// </summary>
+        [System.Serializable]
+        public class RemoteResponseData
+        {
+            /// <summary>
+            ///鍝嶅簲鎿嶄綔鐮侊紙0-ffff锛�
+            /// </summary>
+            public string command = "";
+            /// <summary>
+            /// 鐘舵�佸��
+            /// <para>榛樿鍝嶅簲缁撴灉锛�
+            ///<para>0 鎴愬姛</para>
+            ///<para>1 澶辫触</para> 
+            /// </summary>
+            public int status = -1;
+        }
         #endregion
 
         #region 涓存椂瀵嗙爜鍙戦�佹暟鎹�
         ///<summary >
-        ///杩滅▼寮�閿� 
-        ///<para>inputPassword: 杈撳叆瀵嗙爜/para> 
+        ///杩滅▼寮�閿�
+        ///<para>inputPassword: 杈撳叆瀵嗙爜/para>
         /// </summary>
         public async System.Threading.Tasks.Task<TempPasswordResponseAllData> TempPasswordAsync(string inputPassword, System.DateTime startTime, System.DateTime endTime, string fixedPassword = "190605")
         {
@@ -1386,10 +1842,10 @@
                                     if (command == "0002")
                                     {
                                         var tempD = new TempPasswordResponseData();
-                                        tempD.command = Convert.ToInt32(data[10].ToString() + data[11].ToString() + data[12].ToString() + data[13].ToString(), 16);
+                                        tempD.command = data[12].ToString() + data[13].ToString() + data[10].ToString() + data[11].ToString();
                                         tempD.status = Convert.ToInt32(data[14].ToString() + data[15].ToString(), 16);
                                         result = new TempPasswordResponseAllData { responseData = tempD };
-                                        DebugPrintLog($"UI鏀跺埌閫氱煡鍚庣殑涓婚_command:0400_{ topic}");
+                                        DebugPrintLog($"UI鏀跺埌閫氱煡鍚庣殑涓婚_command:0463_{ topic}");
                                     }
                                 }
                             }
@@ -1415,12 +1871,12 @@
                 while ((DateTime.Now - dateTime).TotalMilliseconds < 9000)// WaitReceiveDataTime)
                 {
                     await System.Threading.Tasks.Task.Delay(10);
-                    if (result != null)
+                    if (result != null && result.responseData != null && result.responseData.command == "0463")
                     {
                         break;
                     }
                 }
-                if ((DateTime.Now - dateTime).TotalMilliseconds > WaitReceiveDataTime)
+                if ((DateTime.Now - dateTime).TotalMilliseconds > 9000)
                 {
                     result = new TempPasswordResponseAllData
                     { errorMessageBase = " 鍥炲瓒呮椂锛岃閲嶆柊鎿嶄綔" };
@@ -1455,46 +1911,36 @@
                     passwordStr += pawStr.Substring(i, 2);
                 }
 
-                double dStartTimeStr = startTime.ToOADate();
-                Byte[] bStartTimeStr = BitConverter.GetBytes(dStartTimeStr);
-                StringBuilder sb = new StringBuilder();
-                Array.Reverse(bStartTimeStr);
-                foreach (byte b in bStartTimeStr)
-                    sb.AppendFormat("{0:x2}", b);
-                var startTimeStr = sb.ToString();
+                var startTimeStr = Shared.Phone.UserCenter.DoorLock.DoorLockCommonInfo.GetUnixTimeStamp(startTime);
+                var endTimeStr = Shared.Phone.UserCenter.DoorLock.DoorLockCommonInfo.GetUnixTimeStamp(endTime);
+                startTimeStr = string.Format("{0:X}", System.Convert.ToInt64(startTimeStr));
+                endTimeStr = string.Format("{0:X}", System.Convert.ToInt64(endTimeStr));
                 for (int i = 6; i >= 0; i = i - 2)
                 {
                     vaildTimeStr += startTimeStr.Substring(i, 2);
-                    //invalidTimeStr += endTimeStr.Substring(i, 2);
+                    invalidTimeStr += endTimeStr.Substring(i, 2);
                 }
 
-                //var startTimeStr = Shared.Phone.UserCenter.DoorLock.DoorLockCommonInfo.GetUnixTimeStamp(startTime);
-                //var endTimeStr = Shared.Phone.UserCenter.DoorLock.DoorLockCommonInfo.GetUnixTimeStamp(startTime);
-                //var startTimeInt = System.Convert.ToInt64(startTimeStr, 16).ToString();
-                //var endTimeInt = System.Convert.ToInt64(endTimeStr, 16).ToString();
-
-
                 data = dataLength + dataComand1 + dataComand2 + dataSerialNum + addDataLength +
-                   passwordStr + vaildTimeStr + vaildTimeStr;
+                   passwordStr + vaildTimeStr + invalidTimeStr;
             }
             catch (Exception ex)
             {
                 var mess = ex.Message;
             };
-
             return data;
         }
 
         /// <summary>
         /// 涓存椂瀵嗙爜鍥炲鏁版嵁
         /// </summary>
-        public TempPasswordResponseAllData keyColorDataResponseAllData;
+        public TempPasswordResponseAllData tempPasswordResponseAllData;
         [System.Serializable]
         public class TempPasswordResponseAllData
         {
             /// <summary>
             /// 閿欒淇℃伅
-            /// </summary>
+            /// </summary> 
             public string errorMessageBase;
             /// <summary>
             /// 缃戝叧淇℃伅閿欒鍙嶉
@@ -1516,7 +1962,7 @@
             /// <summary>
             ///鍝嶅簲鎿嶄綔鐮侊紙0-ffff锛�
             /// </summary>
-            public int command = -1;
+            public string command = "";
             /// <summary>
             /// 鐘舵�佸��
             /// <para>0--娉ㄥ唽鎴愬姛</para>
@@ -1539,7 +1985,7 @@
         {
             string passwordStr = "";
             var result = await GetKeyPassworAsync();
-            //杩斿洖灏忕 
+            //杩斿洖灏忕
             if (result == null || result.keyPassword == null)
             {
                 return 0;
@@ -1721,6 +2167,8 @@
         public async System.Threading.Tasks.Task<DoorlockUserInfo> GetDoorlockUserInfoAsync()
         {
             DoorlockUserInfo result = null;
+            int totalNum = 0;
+            int currentNum = -1;
             DoorLockUserDetailData doorLockUserDetailData = new DoorLockUserDetailData { };
             if (Gateway == null)
             {
@@ -1768,6 +2216,8 @@
                                     doorLockUserDetailData.userType = Convert.ToInt32(data[10].ToString() + data[11].ToString(), 16);
                                     doorLockUserDetailData.totalNum = Convert.ToInt32(data[12].ToString() + data[13].ToString(), 16);
                                     doorLockUserDetailData.currentNum = Convert.ToInt32(data[14].ToString() + data[15].ToString(), 16);
+                                    totalNum = doorLockUserDetailData.totalNum;
+                                    currentNum = doorLockUserDetailData.currentNum;
                                     result = new DoorlockUserInfo { doorLockUserDetailData = doorLockUserDetailData };
                                     DebugPrintLog($"UI鏀跺埌閫氱煡鍚庣殑涓婚_command:0451_{ topic}");
                                 }
@@ -1789,12 +2239,19 @@
                 }
                 catch { }
 
-                //鎺ユ敹涓�涓寘鏈�澶氱瓑5绉掞紝娌℃湁鏀跺埌灏遍��鍑�
-                while ((DateTime.Now - dateTime).TotalMilliseconds < 5000)
+                //鎺ユ敹涓�涓寘鏈�澶氱瓑3绉掞紝娌℃湁鏀跺埌灏遍��鍑�,鍗曟鏁版嵁鍖呬笉瓒呰繃30涓敤鎴�
+                while ((DateTime.Now - dateTime).TotalMilliseconds < 3000)
                 {
                     await System.Threading.Tasks.Task.Delay(100);
+                    if (totalNum == currentNum)
+                    {
+                        break;
+                    }
                 }
-
+                //if ((DateTime.Now - dateTime).TotalMilliseconds > 3000)
+                //{
+                //    result = new DoorlockUserInfo { errorMessageBase = " 鍥炲瓒呮椂锛岃閲嶆柊鎿嶄綔" };
+                //}
                 Gateway.Actions -= action;
                 DebugPrintLog("ClientDataPassthrough_Actions 閫�鍑�" + System.DateTime.Now.ToString());
 
@@ -1851,7 +2308,7 @@
         public class DoorLockUserDetailData
         {
             /// <summary>
-            /// 绫诲瀷
+            /// 绫诲瀷(璇诲彇閿佷笂宸叉湁鐢ㄦ埛)
             /// </summary>
             public int userType;
             /// <summary>
@@ -1885,4 +2342,4 @@
 
         #endregion
     }
-}
+}
\ No newline at end of file

--
Gitblit v1.8.0