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