From 48ba446936b51fffafa7c3600c0dadc6ac0e8c20 Mon Sep 17 00:00:00 2001 From: 陈嘉乐 <cjl@hdlchina.com.cn> Date: 星期五, 10 七月 2020 10:52:13 +0800 Subject: [PATCH] 2020-07-10-01 --- ZigbeeApp/Shared/Phone/UserCenter/DoorLock/DoorLockCommonInfo.cs | 658 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++--- 1 files changed, 625 insertions(+), 33 deletions(-) diff --git a/ZigbeeApp/Shared/Phone/UserCenter/DoorLock/DoorLockCommonInfo.cs b/ZigbeeApp/Shared/Phone/UserCenter/DoorLock/DoorLockCommonInfo.cs index 8be3906..61e1041 100755 --- a/ZigbeeApp/Shared/Phone/UserCenter/DoorLock/DoorLockCommonInfo.cs +++ b/ZigbeeApp/Shared/Phone/UserCenter/DoorLock/DoorLockCommonInfo.cs @@ -2,6 +2,7 @@ using System.Collections.Generic; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; +using Shared.Common; using ZigBee.Device; namespace Shared.Phone.UserCenter.DoorLock @@ -9,22 +10,531 @@ public class DoorLockCommonInfo : CommonDevice { #region 鏈湴鍙橀噺 + /// <summary> + /// 鏇存柊鈥滈�昏緫甯稿紑鈥濈晫闈㈢殑鍥炶皟 + /// </summary> + public static Action<bool> LogicAction = null; + /// <summary> + /// 鏇存柊褰撳墠闂ㄩ攣娑夊強鐨勭姸鎬併�愪富瑕佺敤浜庨棬閿佹搷浣滃父寮�妯″紡鐨勫洖璋冦�� + /// </summary> + public static Action<string, bool> UpdateCurrentDoorlockAction = null; + /// <summary> + /// 缃戝叧锛堥棬閿侊級鎵�鍦ㄧ殑鏃堕棿 + /// </summary> + public static DateTime DoorlockZoneTime = DateTime.Now; + /// <summary> + /// 鎵�鏈夐棬閿佷腑鐨勫父寮�妯″紡鍊糩鐢ㄤ簬鎺ㄩ�佹煡璇紝鎻愮ず闂ㄩ攣澶辨晥锛� + /// keys:闂ㄩ攣mac+epoint value:鏄惁甯稿紑妯″紡 + /// ture:甯稿紑锛� false:鍏抽棴 + /// </summary> + public static Dictionary<string, bool?> DoorLockNormallyMode = new Dictionary<string, bool?> { }; + /// <summary> + /// 甯稿紑妯″紡鎵ц鏃堕棿 + /// </summary> + public static int NormallyOpenModeInvalidTime = 12; + /// <summary> + /// 鏄惁鏀寔淇敼 + /// </summary> public static bool IsModify = false; + /// <summary> + /// 鏄惁鏄剧ず涓存椂瀵嗙爜 + /// </summary> public static bool InTempPasswordVisiable = false; + /// <summary> + /// 鏈夋晥鏃ユ湡鈥滃勾鈥� + /// </summary> public static int ValidDateYear = 0; + /// <summary> + /// 鏈夋晥鏃ユ湡鈥滄湀鈥� + /// </summary> public static int ValidDateMonth = 0; + /// <summary> + /// 鏈夋晥鏃ユ湡鈥滄棩鈥� + /// </summary> public static int ValidDateDay = 0; + /// <summary> + /// 鏈夋晥鏃ユ湡鈥滄椂鈥� + /// </summary> public static int ValidDateHour = 100; + /// <summary> + /// 鏈夋晥鏃ユ湡鈥滃垎鈥� + /// </summary> public static int ValidDateMinute = 100; + /// <summary> + /// 鏈夋晥鏃ユ湡鈥滅鈥� + /// </summary> public static int ValidDateSecond = 0; + /// <summary> + /// 澶辨晥鏁堟棩鏈熲�滃勾鈥� + /// </summary> public static int InValidDateYear = 0; + /// <summary> + /// 澶辨晥鏁堟棩鏈熲�滄湀鈥� + /// </summary> public static int InValidDateMonth = 0; + /// <summary> + /// 澶辨晥鏁堟棩鏈熲�滄棩鈥� + /// </summary> public static int InValidDateDay = 0; + /// <summary> + /// 澶辨晥鏁堟棩鏈熲�滄椂鈥� + /// </summary> public static int InValidDateHour = 100; + /// <summary> + /// 澶辨晥鏁堟棩鏈熲�滃垎鈥� + /// </summary> public static int InValidDateMinute = 100; + /// <summary> + /// 澶辨晥鏁堟棩鏈熲�滅鈥� + /// </summary> public static int InValidDateSecond = 0; + + /// <summary> + /// 闂ㄩ攣鎿嶄綔绫诲瀷 + /// </summary> + public enum DoorLockMessType + { + /// <summary> + /// app鎿嶄綔 + /// </summary> + AppOperate = 0, + /// <summary> + /// 閫氳繃闂ㄩ攣鎿嶄綔璁惧涓婃姤 + /// </summary> + DeviceReport = 1, + /// <summary> + /// 閫氳繃鏈嶅姟鍣ㄦ帹閫� + /// </summary> + ServicePush = 2, + } #endregion + #region 甯稿紑妯″紡 API + /// <summary> + /// 鑾峰彇褰撳墠闂ㄩ攣鐨勫父寮�妯″紡 + /// </summary> + /// <param name="doorLock:褰撳墠闂ㄩ攣"></param> + /// <returns>null:娌℃湁鍥炲 锛� true:闂ㄩ攣甯稿紑锛沠alse锛氶棬閿佸父鍏�</returns> + public static async System.Threading.Tasks.Task<bool?> GetNormallyOpenMode(ZigBee.Device.DoorLock doorLock) + { + bool? IsDoorLockNormallyMode = null; + var result = await doorLock.ReadNormallyOpenModeFuncAsync(); + //鍏遍�氶敊璇娴� + string error = HdlCheckLogic.Current.CheckCommonErrorCode(result); + + if (result == null || result.errorMessageBase != null || result.errorResponData != null) + { + IsDoorLockNormallyMode = null; + } + + if (result.command == "10") + { + IsDoorLockNormallyMode = true; + } + if (result.command == "11") + { + IsDoorLockNormallyMode = false; + } + return IsDoorLockNormallyMode; + } + + /// <summary> + /// 闂ㄩ攣鏄惁鏀寔甯稿紑[杩欓噷鏆傛椂鍙湁S-One闂ㄩ攣鏀寔锛孒06C涓嶆敮鎸�, 鍚庢湡閫氳繃鑳藉姏鍊兼敮鎸乚 + /// </summary> + /// <param name="doorLock:褰撳墠闂ㄩ攣"></param> + /// <returns>true:鏀寔甯稿紑锛沠alse锛� 涓嶆敮鎸佸父寮�</returns> + public static bool CanNormallyOpen(ZigBee.Device.DoorLock doorLock) + { + var listDevice = new List<CommonDevice> { }; + listDevice.Add(doorLock); + var devTemp = Common.LocalDevice.Current.GetMyDeviceEnumInfo(listDevice); + if (devTemp.ConcreteType == DeviceConcreteType.IntelligentLocks_Sone) + { + return true; + } + return false; + } + + /// <summary> + /// 璁剧疆鏈湴闂ㄩ攣鐨勫父寮�妯″紡鍊� + /// </summary> + public static void NormallyOpenModeValue(ZigBee.Device.DoorLock doorLock, bool value) + { + doorLock.IsDoorLockNormallyMode = value; + if (DoorLockCommonInfo.DoorLockNormallyMode.ContainsKey(doorLock.DeviceAddr + doorLock.DeviceEpoint)) + { + DoorLockCommonInfo.DoorLockNormallyMode[doorLock.DeviceAddr + doorLock.DeviceEpoint] = value; + } + else + { + DoorLockCommonInfo.DoorLockNormallyMode.Add(doorLock.DeviceAddr + doorLock.DeviceEpoint, value); + } + } + + /// <summary> + /// 甯稿紑妯″紡澶辨晥澶勭悊銆愬脊绐椼�� + /// </summary> + /// <param name="doorLock">褰撳墠闂ㄩ攣</param> + /// <param name="doorLockMessType">瀵艰嚧闂ㄩ攣澶辨晥鐨勬搷浣滅被鍨�</param> + /// <param name="haveLogic">缃戝叧涓槸鍚﹀瓨鍦ㄩ�昏緫甯稿紑妯″紡</param> + /// <param name="action">鍥炶皟澶勭悊鏇存柊鍐呭</param> + /// <param name="type">1:纭甯稿紑妯″紡宸茬粡寮�鍚紱0:甯稿紑妯″紡澶辨晥鎻愮ず</param> + public static async void NomallyOpenModeInvalidDialog(ZigBee.Device.DoorLock doorLock, DoorLockMessType doorLockMessType, bool haveLogic, Action<bool> action = null, int type = 0) + { + //甯稿紑妯″紡鍙兘涓讳汉鎿嶄綔 + if (UserCenterResourse.UserInfo.AuthorityNo != 1) + { + Application.RunOnMainThread(() => + { + string msg0 = Language.StringByID(R.MyInternationalizationString.OnlyMasterOperate); + ShowTipMsg(msg0); + }); + return; + } + + //甯稿紑妯″紡灏嗚鍙栨秷寮圭獥 + string msg = Language.StringByID(R.MyInternationalizationString.NomallyModeIsCanceled).Replace("{0}", "\r\n"); + var confirm = Language.StringByID(R.MyInternationalizationString.SureCancel); + var alert = new ShowDoorLockMsgControl(ShowDoorLockMsgControl.DoorLockMsgType.NomallyOpenMode, msg, confirm); + + if (haveLogic) + { + //鏈夐�昏緫璁剧疆鐨勫脊绐� + alert = new ShowDoorLockMsgControl(ShowDoorLockMsgControl.DoorLockMsgType.CancelNomallyOpenModeWithLogic, msg, confirm); + } + alert.Show(); + + alert.MsgControlClickEvent += async () => + { + if (doorLockMessType == DoorLockMessType.DeviceReport || doorLockMessType == DoorLockMessType.ServicePush) + { + //涓婃姤鈥滃父寮�妯″紡鈥濆凡琚彇娑堬紝app榛樿浜嗏�滃父寮�妯″紡鈥濊鍙栨秷 + DoorLockCommonInfo.NormallyOpenModeValue(doorLock, false); + if (LogicAction != null) + { + LogicAction(false); + } + if (haveLogic) + { + //姝ゅ鍒犻櫎娓╁眳鍩庣殑甯稿紑妯″紡鐗规畩閫昏緫 + var resTemp1 = await Shared.Phone.Device.Logic.SkipView.DelAllLogic(doorLock); + } + } + else + { + //淇濇寔甯稿紑 + NormallyOpenModeValue(doorLock, true); + } + action?.Invoke(doorLock.IsDoorLockNormallyMode); + action = null; + }; + + alert.CancelClickEvent += async () => + { + if (doorLockMessType == DoorLockMessType.DeviceReport || doorLockMessType == DoorLockMessType.ServicePush) + { + //涓婃姤鈥滃父寮�妯″紡鈥濆凡琚彇娑� + Application.RunOnMainThread(() => { CommonPage.Loading.Start(""); }); + + //app閲嶆柊寮�鍚�滃父寮�妯″紡鈥� + var result = await doorLock.SetNormallyOpenModeFuncAsync(true); + if (result == null || result.defaultControlResponseData == null) + { + Application.RunOnMainThread(() => + { + string msg0 = Language.StringByID(R.MyInternationalizationString.GwResponseOvertime); + ShowTipMsg(msg0); + NormallyOpenModeValue(doorLock, false); + CommonPage.Loading.Hide(); + }); + action?.Invoke(doorLock.IsDoorLockNormallyMode); + action = null; + if (LogicAction != null) + { + LogicAction(false); + } + return; + } + if (result.defaultControlResponseData.status != 0) + { + Application.RunOnMainThread(() => + { + string msg1 = Language.StringByID(R.MyInternationalizationString.OpenNormallyOpenModeFailed); + ShowTipMsg(msg1); + NormallyOpenModeValue(doorLock, false); + CommonPage.Loading.Hide(); + }); + + action?.Invoke(doorLock.IsDoorLockNormallyMode); + action = null; + if (LogicAction != null) + { + LogicAction(false); + } + return; + } + else + { + Application.RunOnMainThread(() => + { + string msg0 = Language.StringByID(R.MyInternationalizationString.OpenNormallyOpenModeSuccess); + ShowTipMsg(msg0); + NormallyOpenModeValue(doorLock, true); + CommonPage.Loading.Hide(); + if (LogicAction != null) + { + LogicAction(true); + } + }); + } + } + else + { + //app鎿嶄綔涓嶅彇娑堚�滃父寮�妯″紡鈥� + DoorLockCommonInfo.NormallyOpenModeValue(doorLock, true); + } + action?.Invoke(doorLock.IsDoorLockNormallyMode); + action = null; + }; + + alert.ConfirmClickEvent += async () => + { + if (doorLockMessType == DoorLockMessType.DeviceReport || doorLockMessType == DoorLockMessType.ServicePush) + { + NormallyOpenModeValue(doorLock, false); + if (LogicAction != null) + { + LogicAction(false); + } + if (haveLogic) + { + //姝ゅ鍒犻櫎娓╁眳鍩庣殑甯稿紑妯″紡鐗规畩閫昏緫 + var resTemp1 = await Shared.Phone.Device.Logic.SkipView.DelAllLogic(doorLock); + } + } + else + { + //app鎿嶄綔鍙栨秷鈥滃父寮�妯″紡鈥� + Application.RunOnMainThread(() => { CommonPage.Loading.Start(""); }); + var result = await doorLock.SetNormallyOpenModeFuncAsync(false); + if (result == null || result.defaultControlResponseData == null) + { + Application.RunOnMainThread(() => + { + ShowTipMsg(Language.StringByID(R.MyInternationalizationString.GwResponseOvertime)); + CommonPage.Loading.Hide(); + }); + action?.Invoke(doorLock.IsDoorLockNormallyMode); + action = null; + if (LogicAction != null) + { + LogicAction(false); + } + return; + } + if (result.defaultControlResponseData.status != 0) + { + Application.RunOnMainThread(() => + { + string msg1 = Language.StringByID(R.MyInternationalizationString.CloseNormallyOpenModeFailed); + ShowTipMsg(msg1); + CommonPage.Loading.Hide(); + }); + action?.Invoke(doorLock.IsDoorLockNormallyMode); + action = null; + if (LogicAction != null) + { + LogicAction(false); + } + return; + } + else + { + //娣诲姞App寮�鍚父寮�妯″紡鐨勫巻鍙茶褰� + HdlDeviceDoorLockLogic.Current.AddDoorHistoryLog(doorLock, 9002, string.Empty); + //app纭鍙栨秷鈥滃父寮�妯″紡鈥濇垚鍔� + NormallyOpenModeValue(doorLock, false); + //鍒犻櫎璁剧疆甯稿紑妯″紡鍒涘缓鐨勯�昏緫 + if (haveLogic) + { + //姝ゅ鍒犻櫎娓╁眳鍩庣殑甯稿紑妯″紡鐗规畩閫昏緫 + var resTemp1 = await Shared.Phone.Device.Logic.SkipView.DelAllLogic(doorLock); + } + Application.RunOnMainThread(() => + { + string msg2 = Language.StringByID(R.MyInternationalizationString.CloseNormallyOpenModeSuccess); + ShowTipMsg(msg2); + CommonPage.Loading.Hide(); + }); + if (LogicAction != null) + { + LogicAction(false); + } + } + } + action?.Invoke(doorLock.IsDoorLockNormallyMode); + action = null; + }; + } + + /// <summary> + /// 鍒犻櫎甯稿紑妯″紡 + /// </summary> + /// <param name="doorLock">褰撳墠闂ㄩ攣</param> + /// <param name="action">鍥炶皟澶勭悊鏇存柊鍐呭</param> + /// <returns></returns> + public static async System.Threading.Tasks.Task<bool> DelNormallyOpenMode(ZigBee.Device.DoorLock doorLock, Action action = null) + { + //app鎿嶄綔鍙栨秷鈥滃父寮�妯″紡鈥� + var result = await doorLock.SetNormallyOpenModeFuncAsync(false); + if (result == null || result.defaultControlResponseData == null || result.defaultControlResponseData.status != 0) + { + action?.Invoke(); + return false; + } + + if (result.defaultControlResponseData.status == 0) + { + //app纭鍙栨秷鈥滃父寮�妯″紡鈥濇垚鍔� + NormallyOpenModeValue(doorLock, false); + action?.Invoke(); + return true; + } + return false; + } + + /// <summary> + /// 璁剧疆甯稿紑妯″紡 + /// </summary> + /// <param name="doorLock">褰撳墠闂ㄩ攣</param> + /// <param name="action">鍥炶皟澶勭悊鏇存柊鍐呭</param> + /// <returns></returns> + public static async System.Threading.Tasks.Task<bool> SetNormallyOpenModeFuncAsync(ZigBee.Device.DoorLock doorLock) + { + //app璁剧疆鈥滃父寮�妯″紡鈥濆け璐� + var result = await doorLock.SetNormallyOpenModeFuncAsync(true); + if (result == null || result.defaultControlResponseData == null || result.defaultControlResponseData.status != 0) + { + return false; + } + + if (result.defaultControlResponseData.status == 0) + { + //app璁剧疆鈥滃父寮�妯″紡鈥濇垚鍔� + NormallyOpenModeValue(doorLock, false); + return true; + } + return false; + } + + /// <summary> + /// 鍚姩甯稿紑妯″紡銆愬脊绐椼�� + /// </summary> + /// <param name="doorLock">褰撳墠闂ㄩ攣</param> + /// <param name="action">鍥炶皟澶勭悊鏇存柊鍐呭</param> + public static async void NomallyOpenModeStartDialog(ZigBee.Device.DoorLock doorLock, Action action) + { + //甯稿紑妯″紡鍙兘涓讳汉鎿嶄綔ZigBee.Device.DoorLock doorLock + if (UserCenterResourse.UserInfo.AuthorityNo != 1) + { + Application.RunOnMainThread(() => + { + string msg0 = Language.StringByID(R.MyInternationalizationString.OnlyMasterOperate); + ShowTipMsg(msg0); + }); + return; + } + + //璁剧疆甯稿紑妯″紡鍚庯紝鎮ㄧ殑闂ㄩ攣灏嗗缁堝浜庢墦寮�鐘舵�侊紝纭寮�鍚紵 + string msg = Language.StringByID(R.MyInternationalizationString.SetDoorLockNomallyOpen).Replace("{0}", "\r\n"); + var confirm = Language.StringByID(R.MyInternationalizationString.Confrim); + var alert = new ShowDoorLockMsgControl(ShowDoorLockMsgControl.DoorLockMsgType.Confirm, msg, confirm); + alert.Show(); + + alert.ConfirmClickEvent += async () => + { + NomallyOpenModeInvalidTimeDialog(doorLock, action); + }; + } + + /// <summary> + /// 甯稿紑妯″紡澶辨晥鏃堕棿澶勭悊銆愬脊绐椼�� + /// </summary> + public static async void NomallyOpenModeInvalidTimeDialog(ZigBee.Device.DoorLock doorLock, Action action) + { + //澶辨晥璁剧疆 + string msgTimeInValidSetting = Language.StringByID(R.MyInternationalizationString.DoorLockOpenAllTheTime); + var timeConfrim = Language.StringByID(R.MyInternationalizationString.Confrim); + var alertTimeInValidSetting = new ShowDoorLockMsgControl(ShowDoorLockMsgControl.DoorLockMsgType.InValid, msgTimeInValidSetting, timeConfrim); + alertTimeInValidSetting.Show(); + + alertTimeInValidSetting.InvalidTimeAction += async (obj) => + { + //甯稿紑妯″紡澶辨晥鏃堕棿璁剧疆鎴愬姛 + var temp = int.Parse(obj); + DoorLockCommonInfo.NormallyOpenModeInvalidTime = temp; + + Application.RunOnMainThread(() => { CommonPage.Loading.Start(""); }); + var result = await doorLock.SetNormallyOpenModeFuncAsync(true); + if (result == null || result.defaultControlResponseData == null) + { + Application.RunOnMainThread(() => + { + string msg0 = Language.StringByID(R.MyInternationalizationString.GwResponseOvertime); + ShowTipMsg(msg0); + CommonPage.Loading.Hide(); + }); + return; + } + if (result.defaultControlResponseData.status != 0) + { + Application.RunOnMainThread(() => + { + string msg1 = Language.StringByID(R.MyInternationalizationString.OpenNormallyOpenModeFailed); + ShowTipMsg(msg1); + CommonPage.Loading.Hide(); + }); + return; + } + else + { + //娣诲姞App寮�鍚父寮�妯″紡鐨勫巻鍙茶褰� + HdlDeviceDoorLockLogic.Current.AddDoorHistoryLog(doorLock, 9001, string.Empty); + DoorLockCommonInfo.NormallyOpenModeValue(doorLock, true); + action?.Invoke(); + Application.RunOnMainThread(() => + { + CommonPage.Loading.Hide(); + }); + } + + //娓╁眳鍩庢柟娉曪紵锛燂紵 + //姝ゅ鏄惁瑕佸垱寤哄父寮�妯″紡鐨勭壒娈婇�昏緫 + }; + } + #endregion + + #region 闊抽噺 + /// <summary> + /// 闂ㄩ攣鏄惁鏀寔闊抽噺[杩欓噷鏆傛椂鍙湁S-One闂ㄩ攣鏀寔锛孒06C涓嶆敮鎸侊紝鍚庢湡閫氳繃鑳藉姏鍊兼敮鎸乚 + /// </summary> + /// <param name="doorLock:褰撳墠闂ㄩ攣"></param> + /// <returns></returns> + public static bool CanVolume(ZigBee.Device.DoorLock doorLock) + { + var listDevice = new List<CommonDevice> { }; + listDevice.Add(doorLock); + var devTemp = Common.LocalDevice.Current.GetMyDeviceEnumInfo(listDevice); + if (devTemp.ConcreteType == DeviceConcreteType.IntelligentLocks_Sone) + { + return true; + } + return false; + } + + #endregion + + #region 浠庝簯绔幏鍙栫殑鏂规硶 /// <summary> /// 鑾峰彇褰撳墠璐︽埛闂ㄩ攣鎿嶄綔鏉冮檺锛堟槸鍚﹁鍐荤粨锛� /// </summary> @@ -97,26 +607,28 @@ var SubAccounListTemp = await ZigBee.Device.DoorLock.GetSubAccountByDistributedMark(); var SubAccounListDictionary = new Dictionary<string, Shared.Phone.UserCenter.MemberInfoRes> { }; - foreach (var member in SubAccounListTemp) - { - //鍒ゆ柇涓�涓处鎴风粦瀹氫簡閭鐨勬儏鍐� - if (SubAccounListDictionary.ContainsKey(member.DistributedMark) == true - || member.Account == UserCenterResourse.UserInfo.Phone - || member.Account == UserCenterResourse.UserInfo.Email) - { - //濡傛灉鏄畠鑷繁鐨勮瘽锛屼笉鏄剧ず,璐︽埛鍜岀粦瀹氱殑閭鍙樉绀哄叾涓箣涓� - continue; + if (SubAccounListTemp != null) + { + foreach (var member in SubAccounListTemp) + { + //鍒ゆ柇涓�涓处鎴风粦瀹氫簡閭鐨勬儏鍐� + if (SubAccounListDictionary.ContainsKey(member.DistributedMark) == true + || member.Account == UserCenterResourse.UserInfo.Phone + || member.Account == UserCenterResourse.UserInfo.Email) + { + //濡傛灉鏄畠鑷繁鐨勮瘽锛屼笉鏄剧ず,璐︽埛鍜岀粦瀹氱殑閭鍙樉绀哄叾涓箣涓� + continue; + } + //鍘绘帀瀛愯处鎴蜂腑鏅�氭垚鍛橈紝鐣欎笅鎷ユ湁绠$悊鍛樻潈闄愮殑鎴愬憳 + //锛堝洜涓哄垎閰嶈处鎴风粰鏅�氭垚鍛橈紝鏅�氭垚鍛樺湪app涓笉鑳借繘鍏ヨ澶囩鐞嗛偅閲岋紝鎵�浠ユ病鍙戞煡鐪嬩富浜哄垎閰嶅璐︽埛锛� + if (member.AccountType != 1) + { + continue; + } + + SubAccounListDictionary.Add(member.DistributedMark, member); } - //鍘绘帀瀛愯处鎴蜂腑鏅�氭垚鍛橈紝鐣欎笅鎷ユ湁绠$悊鍛樻潈闄愮殑鎴愬憳 - //锛堝洜涓哄垎閰嶈处鎴风粰鏅�氭垚鍛橈紝鏅�氭垚鍛樺湪app涓笉鑳借繘鍏ヨ澶囩鐞嗛偅閲岋紝鎵�浠ユ病鍙戞煡鐪嬩富浜哄垎閰嶅璐︽埛锛� - if (member.AccountType != 1) - { - continue; - } - - SubAccounListDictionary.Add(member.DistributedMark, member); } - foreach (var addMemberID in SubAccounListDictionary.Keys) { SubAccounList.Add(SubAccounListDictionary[addMemberID]); @@ -478,24 +990,32 @@ } var getDoorLockInfoList = await ZigBee.Device.DoorLock.GetDoorLockInfoFromServer("DoorLock/GetDoorLockPager", localDoorLockObj); - if (getDoorLockInfoList != null) + + if (getDoorLockInfoList == null) { - if (getDoorLockInfoList.PageData.Count != 0) - { - getDoorLockInfoAllList.Add(getDoorLockInfoList); - } + getDoorLockInfoAllList = null; } - if (getDoorLockInfoList.TotalPages > 1) + else { - for (int j = 1; j < getDoorLockInfoList.TotalPages; j++) + if (getDoorLockInfoList != null) { - var pageSetting = new ZigBee.Device.DoorLock.PageSetting() { }; - pageSetting.Page = j + 1; - localDoorLockObj.pageSetting = pageSetting; - var getDoorLockInfoListTemp = await ZigBee.Device.DoorLock.GetDoorLockInfoFromServer("DoorLock/GetDoorLockPager", localDoorLockObj); - if (getDoorLockInfoListTemp != null) + if (getDoorLockInfoList.PageData.Count != 0) { - getDoorLockInfoAllList.Add(getDoorLockInfoListTemp); + getDoorLockInfoAllList.Add(getDoorLockInfoList); + } + } + if (getDoorLockInfoList.TotalPages > 1) + { + for (int j = 1; j < getDoorLockInfoList.TotalPages; j++) + { + var pageSetting = new ZigBee.Device.DoorLock.PageSetting() { }; + pageSetting.Page = j + 1; + localDoorLockObj.pageSetting = pageSetting; + var getDoorLockInfoListTemp = await ZigBee.Device.DoorLock.GetDoorLockInfoFromServer("DoorLock/GetDoorLockPager", localDoorLockObj); + if (getDoorLockInfoListTemp != null) + { + getDoorLockInfoAllList.Add(getDoorLockInfoListTemp); + } } } } @@ -634,18 +1154,59 @@ /// <summary> /// 灏嗙郴缁熸椂闂磋浆鎹㈡垚UNIX鏃堕棿鎴�(绮剧‘鍒扮) - /// </summary> /// <param name="dateTime">鍖椾含鏃堕棿</param> /// <param name="accurateToMilliseconds">绮剧‘鍒版绉掞紝鍚﹀埌绉�</param> + /// </summary> + /// <param name="dateTime"></param> /// <returns>杩斿洖涓�涓暱鏁存暟鏃堕棿鎴�</returns> public static string GetUnixTimeStamp(DateTime dateTime) { DateTime dtStart = TimeZone.CurrentTimeZone.ToLocalTime(new DateTime(1970, 1, 1)); - //DateTime dtNow = DateTime.Parse(DateTime.Now.ToString()); TimeSpan toNow = dateTime.Subtract(dtStart); string timeStamp = toNow.Ticks.ToString(); timeStamp = timeStamp.Substring(0, timeStamp.Length - 7); return timeStamp; + } + + /// <summary> + /// 鑾峰彇鏃跺尯鐨勬椂闂� + /// </summary> + /// <returns></returns> + public static DateTime GetDoorLockZoneTime() + { + //閫氳繃缁忓害鑾峰彇鏃跺尯 + var gwZone = int.Parse(CaculateTimeZone(Common.Config.Instance.Home.Longitude)); + //灏嗘湰鍦版椂闂磋浆鎹㈡垚涓栫晫鏃� + var utc = DateTime.Now.AddHours(-gwZone); + //涓栫晫鏃惰浆鎹㈡垚鏃堕棿鎴� + var utcUnix = GetUnixTimeStamp(utc); + //鏃跺尯鐨勬椂闂存埑 + var zoneUnix = int.Parse(utcUnix) + gwZone * 3600; + var zoneDateTime = GetLocalTime(zoneUnix); + DoorlockZoneTime = zoneDateTime; + return zoneDateTime; + } + + /// <summary> + /// 鑾峰彇鏃跺尯 + /// </summary> + /// <param name="currentLon">currentLon:"+"涓轰笢鍖猴紝鈥�-鈥濅负瑗垮尯</param> + /// <returns></returns> + public static String CaculateTimeZone(double currentLon) + { + int timeZone; + int shangValue = (int)(currentLon / 15); + double yushuValue = Math.Abs(currentLon % 15); + if (yushuValue <= 7.5) + { + timeZone = shangValue; + } + else + { + timeZone = shangValue + (currentLon > 0 ? 1 : -1); + } + return timeZone >= 0 ? "+" + Math.Abs(timeZone) : "-" + Math.Abs(timeZone); + } /// <summary> @@ -685,5 +1246,36 @@ /// </summary> public string PrimaryId = ""; } + + #endregion + + #region 涓�鑸柟娉� + /// <summary> + /// 鏄剧ず閿欒淇℃伅绐楀彛 + /// </summary> + /// <param name="msg"></param> + private static void ShowErrorMsg(string msg) + { + Application.RunOnMainThread(() => + { + var contr = new ShowMsgControl(ShowMsgType.Error, msg); + contr.Show(); + }); + } + + /// <summary> + /// 鏄剧ずTip淇℃伅绐楀彛 + /// </summary> + /// <param name="msg"></param> + private static void ShowTipMsg(string msg) + { + Application.RunOnMainThread(() => + { + var contr = new ShowMsgControl(ShowMsgType.Tip, msg); + contr.Show(); + }); + } + + #endregion } } -- Gitblit v1.8.0