From 9f326f4000847e6167d8166fa2f6a66f53cb3734 Mon Sep 17 00:00:00 2001 From: 黄学彪 <hxb@hdlchina.com.cn> Date: 星期四, 17 十二月 2020 09:07:13 +0800 Subject: [PATCH] 新云端Ver1.3 --- ZigbeeApp/Shared/Phone/Common/Logic/HdlUserCenterLogic.cs | 290 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 290 insertions(+), 0 deletions(-) diff --git a/ZigbeeApp/Shared/Phone/Common/Logic/HdlUserCenterLogic.cs b/ZigbeeApp/Shared/Phone/Common/Logic/HdlUserCenterLogic.cs new file mode 100644 index 0000000..0e4b896 --- /dev/null +++ b/ZigbeeApp/Shared/Phone/Common/Logic/HdlUserCenterLogic.cs @@ -0,0 +1,290 @@ +锘縰sing System; +using Shared.Common; +using Newtonsoft.Json; +using System.Collections.Generic; +using System.Text; + +namespace Shared.Phone +{ + /// <summary> + /// 涓汉涓績閫昏緫绫� + /// </summary> + public class HdlUserCenterLogic + { + #region 鈻� 鍙橀噺澹版槑___________________________ + + /// <summary> + /// 涓汉涓績閫昏緫绫� + /// </summary> + private static HdlUserCenterLogic m_Current = null; + /// <summary> + /// 涓汉涓績閫昏緫绫� + /// </summary> + public static HdlUserCenterLogic Current + { + get + { + if (m_Current == null) + { + m_Current = new HdlUserCenterLogic(); + } + return m_Current; + } + } + + #endregion + + #region 鈻� 鍒锋柊鏈湴缂撳瓨_______________________ + + /// <summary> + /// 鍒锋柊鏈湴鎵�鏈夌紦瀛�(鐩墠姝ゆ柟娉曞彧鎻愪緵缁欐仮澶嶅浠芥暟鎹娇鐢�) + /// </summary> + public void RefreshAllMemory() + { + //鍒锋柊浣忓畢瀵硅薄 + RefreshHomeObject(); + //鏍规嵁妯℃澘鏂囦欢,鎭㈠鏁版嵁 + HdlTemplateCommonLogic.Current.RecoverDataByTemplateBinFile(); + //寮哄埗鐢熸垚璁惧鍜岀綉鍏虫枃浠� + HdlTemplateCommonLogic.Current.CreatDeviceAndGatewayFileFromMemoryByForce(); + //鍒锋柊鏈湴缃戝叧鏂囦欢 + HdlGatewayLogic.Current.ReFreshByLocal(); + //鍒锋柊鏈湴璁惧 + HdlDeviceCommonLogic.Current.ReFreshByLocal(); + //闇�浼樺厛浜庡埛鏂版埧闂�,鍚屾浜戠鐨勭綉鍏砳d锛屽鏋滄湰鍦版嫢鏈変簯绔笉瀛樺湪鐨刬d锛屽垯琛ㄧず搴旇琚崲缁戜簡锛岀洿鎺ュ垹闄� + HdlGatewayLogic.Current.SynchronizeDbGateway(); + //浠庢湰鍦伴噸鏂板姞杞藉叏閮ㄧ殑鎴块棿 + HdlRoomLogic.Current.RefreshAllRoomByLocation(); + //鏂紑杩滅▼Mqtt杩炴帴,閲嶆柊杩炴帴 + HdlThreadLogic.Current.RunThread(async () => + { + HdlGatewayLogic.Current.ClearAllRealGatewayConection(true); + await ZigBee.Device.ZbGateway.CloseRemoteConnectionOnForce(); + }, ShowErrorMode.NO); + } + + /// <summary> + /// 鍒锋柊浣忓畢瀵硅薄 + /// </summary> + public void RefreshHomeObject() + { + var home = HdlResidenceLogic.Current.GetHouseByHouseId(Config.Instance.Home.Id); + + //鍒锋柊妤煎眰 + Config.Instance.Home.FloorDics = home.FloorDics; + Config.Instance.Home.CurrentFloorId = string.Empty; + if (Config.Instance.Home.TemplateMode == -1) + { + Config.Instance.Home.TemplateMode = home.TemplateMode; + if (Config.Instance.Home.TemplateMode == -1) + { + //榛樿鍒濆鍊� + Config.Instance.Home.TemplateMode = 1; + } + } + + Config.Instance.Home.Save(false); + + //涓婚〉闇�瑕侀噸鏂板埛鏂� + UserView.UserPage.Instance.RefreshAllForm = true; + } + + #endregion + + #region 鈻� 鍒锋柊涓汉涓績鐨勫唴瀛樺強绾跨▼___________ + + /// <summary> + /// 鍒锋柊涓汉涓績鐨勫唴瀛樺強绾跨▼(浠呴檺鍒囨崲浣忓畢鏃惰皟鐢�) + /// </summary> + /// <param name="i_isLogin">鏄惁鏄櫥闄嗘搷浣�</param> + /// <returns></returns> + public bool InitUserCenterMenmoryAndThread(bool i_isLogin) + { + //璋冪敤杩欎釜鏂规硶,閮介渶瑕侀噸鏂板埛鏂颁富椤� + UserView.UserPage.Instance.RefreshAllForm = true; + + //娣诲姞缃戠粶鐘舵�佺洃鍚� + HdlWifiLogic.Current.StartListenNetWork(); + + //濡傛灉鏄櫄鎷熶綇瀹� + if (Config.Instance.Home.IsVirtually == true) + { + //鍒濆鍖栬櫄鎷熶綇瀹呯殑涓汉涓績鐨勬暟鎹�(鍒囨崲浣忓畢浣跨敤) + InitUserCenterMenmoryByVirtualHome(); + return true; + } + + //APP缂撳瓨鍔犺浇寮�濮� + HdlUserCenterResourse.AccountOption.AppCanSignout = false; + + //鏄惁鏈夌綉缁�,鍒濆鍊间负:鏈� + int hadNet = 1; + if (i_isLogin == true) + { + //鐧婚檰鐨勬椂鍊�,鑾峰彇浜戠浣忓畢鍒楄〃(0:褰撳墠娌℃湁缃戠粶鐨勬儏鍐典笅鍔犺浇鏈湴浣忓畢 1:閫氳繃鑱旂綉鍔犺浇鍙婃牎楠屾湰鍦颁綇瀹�) + hadNet = HdlResidenceLogic.Current.GetHomeListsFromDbOnLogin(); + } + + //娓呯┖鎵�鏈夋垚鍛樼紦瀛� + this.ClearAllMemberMemory(); + + //鍔犺浇浣忓畢閰嶇疆淇℃伅 + HdlUserCenterResourse.ResidenceOption = HdlUserCenterResourse.ResidenceOption.Load(); + + //棰勫垱寤轰釜浜轰腑蹇冨叏閮ㄧ殑鏂囦欢澶� + HdlFileLogic.Current.CreatAllUserCenterDirectory(); + + //妫�娴嬪綋鍓嶈处鍙风殑鏉冮檺鐨勫悎娉曟�� + this.CheckNowAuthority(); + + //濡傛灉鏈夌綉缁滅殑璇� + if (hadNet == 1) + { + //鍒濆鍖栦富浜虹殑Token(绠$悊鍛樹笓鐢�,涓嶇敤绠″け璐ヨ繕鏄垚鍔�,鍑洪棶棰�,搴曞眰鎺ュ彛浼氳涪鍒扮櫥闄嗙晫闈�) + HdlAccountLogic.Current.InitMasterToken(); + + //閲嶆柊鍙戦�佸懡浠ゅ幓缁戝畾鏂綉鎯呭喌涓嬪浠界殑缃戝叧 + HdlGatewayLogic.Current.ResetComandToBindBackupGateway(); + //璇诲彇闅愬尶閰嶇疆 + HdlBackupLogic.Current.LoadHideOption(); + //璋冭瘯锛氬己鍒跺紑鍚悗鍙拌皟璇旳pp鍔熻兘 + if (HdlUserCenterResourse.HideOption.StartDebugApp == 1) + { + HdlThreadLogic.Current.RunMain(() => + { + var form = new UserCenter.HideOption.HideOptionMainForm(); + form.AddForm(); + }); + ProgressBar.Close(true); + return false; + } + } + + //鍏抽棴鎵�鏈夋帴鏀� + HdlGatewayReceiveLogic.Current.RemoveAllEvent(); + //鍒锋柊瀹夐槻涓婃姤淇℃伅 + HdlAlarmsLogic.Current.RefreshAlarmInfo(); + + //鍚屾鏁版嵁(浜屾璋冪敤娌″叧绯�) + int result = -1; + if (hadNet == 1) + { + result = HdlBackupLogic.Current.SynchronizeDbAutoBackupData(); + } + + //鍒濆鍖栨湰鍦扮殑缃戝叧淇℃伅 + HdlGatewayLogic.Current.ReFreshByLocal(); + //鍒濆鍖栨湰鍦扮殑璁惧淇℃伅 + HdlDeviceCommonLogic.Current.ReFreshByLocal(); + + //鍒濆鍖栨埧闂�(閮洩鍩庨偅杈逛笉鍋氬鐞�,闇�瑕佽繖閲岀壒娈婃墽琛屼竴姝�) + HdlRoomLogic.Current.RefreshAllRoomByLocation(); + + if (hadNet == 1) + { + //鍚屾浜戠鐨勭綉鍏砳d锛屽鏋滄湰鍦版嫢鏈変簯绔笉瀛樺湪鐨刬d锛屽垯琛ㄧず搴旇琚崲缁戜簡锛岀洿鎺ュ垹闄� + //HdlGatewayLogic.Current.SynchronizeDbGateway(); + } + + //鏂紑杩滅▼Mqtt杩炴帴,閲嶆柊杩炴帴 + HdlThreadLogic.Current.RunThread(async () => + { + HdlGatewayLogic.Current.ClearAllRealGatewayConection(true); + await ZigBee.Device.ZbGateway.CloseRemoteConnectionOnForce(); + }, ShowErrorMode.NO); + + //鍒锋柊APP鍓嶄竴娆¢�夋嫨鐨勭綉鍏矷D(鍙互鍙嶅璋冪敤,闇�瑕佸湪缃戝叧鍒濆鍖栧畬浜嗕箣鍚庢墠鑳借皟鐢�) + HdlGatewayLogic.Current.RefreshAppOldSelectGatewayId(); + + //0:宸茬粡鍚屾杩囷紝涓嶉渶瑕佸悓姝�,杩欎釜鏃跺�欓渶瑕佹彁绀哄浠� + if (result == 0 && i_isLogin == true) + { + //寮�鍚嚜鍔ㄥ浠� + HdlBackupLogic.Current.ShowAutoBackupPromptedForm(); + } + //鏄剧ず寮曞鐣岄潰 + HdlFormLogic.Current.ShowGuideForm(result); + + //APP缂撳瓨鍔犺浇瀹屾垚 + HdlUserCenterResourse.AccountOption.AppCanSignout = true; + + if (Shared.Phone.Device.Logic.Send.If_Exist == "1") + { + //浠ユ湰鍦扮姸鎬佷负涓绘墦寮�GPS鏈嶅姟 + Application.StartGPSLocationService(); + } + + return true; + } + + /// <summary> + /// 鍒濆鍖栬櫄鎷熶綇瀹呯殑涓汉涓績鐨勬暟鎹�(鍒囨崲浣忓畢浣跨敤) + /// </summary> + private void InitUserCenterMenmoryByVirtualHome() + { + //娓呯┖鎵�鏈夋垚鍛樼紦瀛� + ClearAllMemberMemory(); + //棰勫垱寤轰釜浜轰腑蹇冨叏閮ㄧ殑鏂囦欢澶� + HdlFileLogic.Current.CreatAllUserCenterDirectory(); + //鍏抽棴鎵�鏈夋帴鏀� + HdlGatewayReceiveLogic.Current.RemoveAllEvent(); + //鍒濆鍖栨湰鍦扮殑缃戝叧淇℃伅 + HdlGatewayLogic.Current.ReFreshByLocal(); + //鍒濆鍖栨湰鍦扮殑璁惧淇℃伅 + HdlDeviceCommonLogic.Current.ReFreshByLocal(); + //鍒濆鍖栨埧闂�(閮洩鍩庨偅杈逛笉鍋氬鐞�,闇�瑕佽繖閲岀壒娈婃墽琛屼竴姝�) + HdlRoomLogic.Current.RefreshAllRoomByLocation(); + //鍒锋柊宸﹁竟鍒锋柊鎴块棿瑙嗗浘鍒楄〃 + HdlRoomLogic.Current.RefreshRoomListView(); + } + + /// <summary> + /// 娓呯┖鎵�鏈夋垚鍛樼紦瀛� + /// </summary> + private void ClearAllMemberMemory() + { + //娑堟伅璁板綍閲嶆柊璇诲彇鍙婃娴� + HdlControlResourse.ReadMessageAgain = true; + HdlControlResourse.HadNewMessage = false; + HdlThreadLogic.Current.RunMain(() => + { + for (int i = 0; i < HdlControlResourse.listMessageManaContr.Count; i++) + { + //鏄剧ず瑙掓爣鐗规晥 + HdlControlResourse.listMessageManaContr[i].IsSelected = false; + } + }); + + //鍒囨崲浣忓畢娓呴櫎涔嬪墠閫昏緫缂撳瓨鏁版嵁; + Common.Logic.LogicList.Clear(); + Common.Logic.LockLogicList.Clear(); + Common.Logic.SoneLogicList.Clear(); + } + + /// <summary> + /// 妫�娴嬪綋鍓嶈处鍙风殑鏉冮檺鐨勫悎娉曟�� + /// </summary> + private void CheckNowAuthority() + { + var result = HdlAccountLogic.Current.RefreshAccountAuthority(); + if (result == AccountStatu.AuthorityChangd) + { + //濡傛灉鐧婚檰鐨勮处鍙风殑鏉冮檺鍜屼笂涓�娆$殑涓嶄竴鏍�,鍒欏垹闄ゆ湰鍦拌繖涓綇瀹呭叏閮ㄧ殑鏂囦欢,浠庡ご鍐嶆潵 + string dirPath = Config.Instance.FullPath; + if (System.IO.Directory.Exists(dirPath) == true) + { + //鍚屾鏁版嵁鐨勫垽鏂枃浠�(浠ラ槻涓囦竴鍒犻櫎鏁翠釜鏂囦欢澶瑰け璐ョ殑鏃跺��,杩欎釜鏂囦欢琚垹鐨勮瘽,搴旇娌′粈涔堝ぇ闂) + HdlFileLogic.Current.DeleteFile(HdlFileNameResourse.AutoDownLoadBackupCheckFile); + //濡傛灉鏈湴宸茬粡鎷ユ湁浜嗚繖涓枃浠讹紝鍒欒鏄庝笉鏄柊鎵嬫満锛屼笉鍐嶈嚜鍔ㄨ繕鍘� + HdlFileLogic.Current.DeleteDirectory(dirPath); + //鍒涘缓浣忓畢鏂囦欢澶� + Global.CreateHomeDirectory(Config.Instance.HomeId); + //棰勫垱寤轰釜浜轰腑蹇冨叏閮ㄧ殑鏂囦欢澶� + HdlFileLogic.Current.CreatAllUserCenterDirectory(); + } + } + } + + #endregion + } +} -- Gitblit v1.8.0