From 320d7cc8feb394d0ce3db2ec1d01593b554d990f Mon Sep 17 00:00:00 2001
From: JLChen <551775569@qq.com>
Date: 星期三, 23 十二月 2020 10:57:13 +0800
Subject: [PATCH] 2020-12-23 1.更新

---
 HDL_ON/Common/HDLCommon.cs |  586 +++++++++++++++++++++++++++++++++++++++++++--------------
 1 files changed, 439 insertions(+), 147 deletions(-)

diff --git a/HDL_ON/Common/HDLCommon.cs b/HDL_ON/Common/HDLCommon.cs
index 95bf73c..31e2c5f 100644
--- a/HDL_ON/Common/HDLCommon.cs
+++ b/HDL_ON/Common/HDLCommon.cs
@@ -2,30 +2,44 @@
 using Shared;
 using HDL_ON;
 using HDL_ON.UI.CSS;
+using HDL_ON.DAL.Server;
+using HDL_ON.UI;
+using HDL_ON.Entity;
+using System.Threading;
+using HDL_ON.DriverLayer;
 
 namespace HDL_ON
 {
+    /// <summary>
+    /// HDLCommon
+    /// 鏆傛椂娌$敤
+    /// </summary>
     public class HDLCommon
     {
-		#region 鈻� 鍙橀噺澹版槑___________________________
-		/// <summary>
-		/// 閫氱敤鏂规硶
-		/// </summary>
-		private static HDLCommon m_Current = null;
-		/// <summary>
-		/// 閫氱敤鏂规硶
-		/// </summary>
-		public static HDLCommon Current
-		{
-			get
-			{
-				if (m_Current == null)
-				{
-					m_Current = new HDLCommon();
-				}
-				return m_Current;
-			}
-		}
+        /// <summary>
+        /// 鏀跺埌鎺ㄩ�丄ction浜嬩欢
+        /// </summary>
+        public static Action GetPushMessageAction;
+
+        #region 鈻� 鍙橀噺澹版槑___________________________
+        /// <summary>
+        /// 閫氱敤鏂规硶
+        /// </summary>
+        private static HDLCommon m_Current = null;
+        /// <summary>
+        /// 閫氱敤鏂规硶
+        /// </summary>
+        public static HDLCommon Current
+        {
+            get
+            {
+                if (m_Current == null)
+                {
+                    m_Current = new HDLCommon();
+                }
+                return m_Current;
+            }
+        }
         #endregion
 
         #region 鈻� Alter寮圭獥鎻愮ず_______________________
@@ -46,7 +60,8 @@
         public void ShowActionAlert(string mes, Action okAction)
         {
             Alert alert = new Alert("", mes, Language.StringByID(StringId.Cancel), Language.StringByID(StringId.Confirm));
-            alert.ResultEventHandler += (sender2, e2) => {
+            alert.ResultEventHandler += (sender2, e2) =>
+            {
                 if (e2)
                 {
                     okAction?.Invoke();
@@ -58,136 +73,413 @@
         #endregion
 
         #region 鈻� 閫氱敤Dialog_______________________
-        /// <summary>
-        /// 鍔犺浇鎻愮ずDialog
-        /// </summary>
-        /// <param name="titleId"></param>
-        /// <param name="msgId"></param>
-        /// <param name="callBackAction"></param>
-        void ShowConfirmDialogBase(int titleId, int msgId, Action okAction, Action cancelAction, int cancelID = StringId.Cancel, int confirmID = StringId.Confirm)
-        {
-            Dialog dialog = new Dialog()
-            {
-                BackgroundColor = CSS_Color.DialogTransparentColor1,
-            };
 
-            FrameLayout contentView = new FrameLayout()
-            {
-                Gravity = Gravity.Center,
-                Width = Application.GetRealWidth(270),
-                Height = Application.GetRealHeight(140),
-                BackgroundColor = CSS_Color.MainBackgroundColor,
-                BorderColor = 0x00000000,
-                BorderWidth = 0,
-                Radius = (uint)Application.GetMinRealAverage(10),
-            };
-            dialog.AddChidren(contentView);
-
-            Button btnTitle = new Button()
-            {
-                Y = Application.GetRealHeight(16),
-                Height = Application.GetRealHeight(30),
-                TextColor = CSS_Color.MainColor,
-                TextSize = CSS_FontSize.SubheadingFontSize,
-                TextAlignment = TextAlignment.Center,
-                IsBold = true,
-                TextID = titleId,
-            };
-            contentView.AddChidren(btnTitle);
-
-            Button btnMsg = new Button()
-            {
-                Gravity = Gravity.CenterHorizontal,
-                Height = Application.GetRealHeight(25),
-                Y = btnTitle.Bottom,
-                Width = Application.GetRealHeight(200),
-                TextAlignment = TextAlignment.Center,
-                TextColor = CSS_Color.TextualColor,
-                TextSize = CSS_FontSize.PromptFontSize_FirstLevel,
-                TextID = msgId,
-            };
-            contentView.AddChidren(btnMsg);
-
-            Button btnLine = new Button()
-            {
-                Y = Application.GetRealHeight(96),
-                Height = Application.GetRealHeight(1),
-                Width = Application.GetRealWidth(270 / 2),
-                BackgroundColor = CSS_Color.DividingLineColor,
-            };
-            contentView.AddChidren(btnLine);
-
-            Button btnCancel = new Button()
-            {
-                Y = btnLine.Bottom,
-                Width = Application.GetRealWidth(135),
-                Height = Application.GetRealHeight(43),
-                TextAlignment = TextAlignment.Center,
-                TextColor = CSS_Color.TextualColor,
-                TextSize = CSS_FontSize.SubheadingFontSize,
-                TextID = cancelID,
-            };
-            contentView.AddChidren(btnCancel);
-
-            Button btnConfirm = new Button()
-            {
-                X = btnCancel.Right,
-                Y = btnLine.Y,
-                Width = Application.GetRealWidth(135),
-                Height = Application.GetRealHeight(45),
-                TextAlignment = TextAlignment.Center,
-                //TextColor = CSS_Color.TextualColor,
-                TextSize = CSS_FontSize.SubheadingFontSize,
-                TextColor = CSS_Color.MainBackgroundColor,
-                BackgroundColor = CSS_Color.MainColor,
-                TextID = confirmID,
-            };
-            contentView.AddChidren(btnConfirm);
-            //渚嬶細鍙充笅鍦嗚 澶у皬涓�50
-            int mRectCornerID = HDLUtils.RectCornerBottomRight;
-            btnConfirm.SetCornerWithSameRadius((uint)Application.GetMinRealAverage(10), mRectCornerID);
-            dialog.Show();
-            btnCancel.MouseUpEventHandler += (sender, e) =>
-            {
-                dialog.Close();
-                cancelAction?.Invoke();
-            };
-         
-            btnConfirm.MouseUpEventHandler += (sender, e) =>
-            {
-                dialog.Close();
-                okAction?.Invoke();
-            };
-
-        }
-
-        /// <summary>
-        /// 鍔犺浇鎻愮ずDialog
-        /// </summary>
-        /// <param name="titleId"></param>
-        /// <param name="msgId"></param>
-        /// <param name="callBackAction"></param>
-        public void ShowConfirmDialog(int titleId, int msgId, Action okAction, Action cancelAction = null)
-        {
-            ShowConfirmDialogBase(titleId, msgId, okAction, cancelAction);
-        }
-
-        /// <summary>
-        /// 鍔犺浇鎻愮ずDialog
-        /// 鍙互鑷畾涔夋寜閽枃瀛�
-        /// </summary>
-        /// <param name="titleId"></param>
-        /// <param name="msgId"></param>
-        /// <param name="okAction"></param>
-        /// <param name="cancelAction"></param>
-        /// <param name="cancelID"></param>
-        /// <param name="confirmID"></param>
-        public void ShowConfirmDialog(int titleId, int msgId, Action okAction, Action cancelAction, int cancelID, int confirmID)
-        {
-            ShowConfirmDialogBase(titleId, msgId, okAction, cancelAction, cancelID, confirmID);
-        }
         #endregion
 
+        #region 鈻� 妫�娴嬫洿鏂癬______________________
+        /// <summary>
+        /// 妫�娴嬫洿鏂扮嚎绋�
+        /// </summary>
+        public void CheckIfNeedForceUpdate()
+        {
+            System.Threading.Tasks.Task.Run(() =>
+            {
+                try
+                {
+                    var revertObj = new HttpServerRequest().CheckAppVersion();
+                    if (revertObj.Code == StateCode.SUCCESS)
+                    {
+                        if (revertObj.Data != null)
+                        {
+                            var appVersionRes = Newtonsoft.Json.JsonConvert.DeserializeObject<AppVersionRes>(revertObj.Data.ToString());
+                            if (appVersionRes != null)
+                            {
 
+                                var mForceUpdateInfo = new UpdateDialogInfo()
+                                {
+                                    UpdateType = appVersionRes.isEnforce ? 2 : 1,
+                                    NewVersion = appVersionRes.version,
+                                    NewVersionUrl = appVersionRes.androidUrl
+                                };
+#if __IOS__
+                                mForceUpdateInfo.NewVersionUrl = appVersionRes.iosUrl;
+#endif
+                                //瑙f瀽鏇存柊鍐呭璇︽儏
+                                var reasonStrJson = GetReasonStrJson(appVersionRes.updateDescription);
+                                if (reasonStrJson != null)
+                                {
+                                    if (Language.CurrentLanguage == "Chinese")
+                                    {
+                                        mForceUpdateInfo.ReasonStr = reasonStrJson.Chinese;
+                                    }
+                                    else
+                                    {
+                                        mForceUpdateInfo.ReasonStr = reasonStrJson.English;
+                                    }
+                                }
+
+                                Application.RunOnMainThread(() =>
+                                {
+                                    ShowForceUpdateDialog(mForceUpdateInfo);
+                                });
+                            }
+                        }
+                    }
+                    else
+                    {
+                        Utlis.WriteLine("璇锋眰澶辫触");
+                    }
+                }
+                catch (Exception ex)
+                {
+                    //Shared.Utlis.WriteLine (ex.ToString ());
+                }
+                finally
+                {
+
+                }
+
+            });
+
+        }
+
+        /// <summary>
+        /// 
+        /// </summary>
+        /// <param name="jsonStr"></param>
+        /// <returns></returns>
+        public ReasonStrJson GetReasonStrJson(string jsonStr)
+        {
+            try
+            {
+                if (!string.IsNullOrEmpty(jsonStr))
+                {
+                    return Newtonsoft.Json.JsonConvert.DeserializeObject<ReasonStrJson>(jsonStr);
+                }
+                return null;
+            }
+            catch
+            {
+                return null;
+            }
+        }
+
+        /// <summary>
+        /// 鎻愮ず寮哄埗鏇存柊Dialog
+        /// 鐐瑰嚮纭璺宠浆娴忚鍣�
+        /// </summary>
+        public void ShowForceUpdateDialog(UpdateDialogInfo mUpdateDialogInfo)
+        {
+            // 1.1 娌℃湁鏇存柊 杩斿洖
+            if (mUpdateDialogInfo.UpdateType == 0) return;
+            // 1.2 鏈夋柊鐗堟湰浣嗘槸蹇界暐杩� 杩斿洖
+            if (mUpdateDialogInfo.UpdateType == 1 && (OnAppConfig.Instance.IgnoreUpdateVersion == mUpdateDialogInfo.NewVersion)) return;
+            // 2.1 鏈夋柊鐗堟湰娌℃湁蹇界暐杩� 鎻愮ず鏇存柊
+            if (mUpdateDialogInfo.UpdateType == 1)
+            {
+                Action okAction = () =>
+                {
+                    if (string.IsNullOrEmpty(mUpdateDialogInfo.NewVersionUrl)) return;
+
+                    HDLUtils.OpenUrl(mUpdateDialogInfo.NewVersionUrl);
+                };
+
+                Action cancelAction = () =>
+                {
+                    OnAppConfig.Instance.IgnoreUpdateVersion = mUpdateDialogInfo.NewVersion;
+                    OnAppConfig.Instance.SaveConfig();
+                };
+
+                //1鎻愮ず鏇存柊
+                var dialog = new UpdateTipDialog();
+                var tipStr = Language.StringByID(StringId.VersionNumber) + mUpdateDialogInfo.NewVersion;
+                dialog.ShowUpdateDialog(Language.StringByID(StringId.DiscoverNewVersion), tipStr, mUpdateDialogInfo.ReasonStr, okAction, cancelAction);
+
+            }
+            else if (mUpdateDialogInfo.UpdateType == 2) //2.2 闇�瑕佸己鍒舵洿鏂�
+            {
+                //2寮哄埗鏇存柊
+                //"1.鍙戠幇鏂扮増鏈珹pp,褰撳墠鐗堟湰宸插仠鐢�,椹笂鏇存柊!\n2.璇蜂笅杞藉拰瀹夎鏂扮増鏈�!....."
+                Action okAction = () =>
+                {
+                    if (string.IsNullOrEmpty(mUpdateDialogInfo.NewVersionUrl))
+                    {
+                        Utlis.ShowTip(Language.StringByID(StringId.DataExceptionPleaseTryAgain));
+                        return;
+                    };
+
+                    HDLUtils.OpenUrl(mUpdateDialogInfo.NewVersionUrl);
+                };
+
+                //1鎻愮ず鏇存柊
+                var dialog = new UpdateTipDialog();
+                var tipStr = Language.StringByID(StringId.VersionNumber) + mUpdateDialogInfo.NewVersion;
+                dialog.ShowForcedUpdateDialog(Language.StringByID(StringId.DiscoverNewVersion), tipStr, mUpdateDialogInfo.ReasonStr, okAction);
+            }
+            else //3. 鍙渶鎻愮ず
+            {
+                //3鎻愮ず閫氱煡
+                Action okAction = () =>
+                {
+
+                };
+                var dialog = new UpdateTipDialog();
+                dialog.ShowTipDialog(Language.StringByID(StringId.Tip), mUpdateDialogInfo.ReasonStr, okAction);
+            }
+        }
+
+        #endregion
+
+        ///// <summary>
+        ///// 鎭㈠浣忓畢
+        ///// 2020-12-03 寰呮祴璇曟湭妫�娴�
+        ///// </summary>
+        //public void RestoreHomeBackup(string RegionID)
+        //{
+        //    var isExist = FileUtils.ExistRegion(RegionID);
+        //    if (isExist)
+        //    {
+        //        //瀛樺湪鍒欐仮澶�
+        //        string newRegionRootPath = FileUtils.CreateRegionBackup(RegionID);
+        //        FileUtils.RestoreRegionFiles(newRegionRootPath);
+        //    }
+        //}
+
+        #region 鈻� 鎺ㄩ�佸鐞哶______________________
+        /// <summary>
+        /// 鎺ㄩ�佹秷鎭鐞�
+        /// </summary>
+        /// <param name="jpushMessageInfo"></param>
+        public void AdjustPushMessage(JPushMessageInfo jpushMessageInfo)
+        {
+            try
+            {
+                if (jpushMessageInfo.Extras != null && jpushMessageInfo.Extras.Contains("OffLine"))
+                {
+                    Shared.Application.RunOnMainThread(() =>
+                    {
+                        ////璐﹀彿鍦ㄥ埆澶勭櫥闄嗭紝琚涪涓嬬嚎 璺宠浆鍒扮櫥褰曢〉闈�
+                        //new Alert(Language.StringByID(StringId.Tip), Language.StringByID(StringId.LoggedOnOtherDevices), Language.StringByID(StringId.Close)).Show();
+                        //閫�鍑虹櫥褰曟搷浣�
+                        CheckLogout();
+
+                    });
+                    return;
+                }
+                else
+                {
+                    Shared.Application.RunOnMainThread(() =>
+                    {
+                        GetPushMessageAction?.Invoke();
+                        //鎶ヨ鎺ㄩ�佹墠寮圭獥鎻愮ず锛坢essageType鍖呭惈Alarm鍏抽敭瀛楃殑锛�
+                        if (jpushMessageInfo.messageType != null && jpushMessageInfo.messageType.Contains("Alarm"))
+                        {
+                            //鎶ヨ鎺ㄩ�佸脊绐楁彁绀�
+                            ShowAlarmPushMessage(jpushMessageInfo);
+                            //new Alert(jpushMessageInfo.Title, jpushMessageInfo.Content, Language.StringByID(StringId.Close)).Show();
+                        }
+                       
+                    });
+                    return;
+                }
+            }
+            catch
+            {
+
+            }
+        }
+
+        /// <summary>
+        /// 璐﹀彿鍦ㄥ埆澶勭櫥闄嗭紝琚涪涓嬬嚎 璺宠浆鍒扮櫥褰曢〉闈�
+        /// 瑕佸湪涓荤嚎绋嬭皟鐢�
+        /// 閫�鍑虹櫥褰曟搷浣�
+        /// </summary>
+        public void CheckLogout()
+        {
+            //鏈櫥褰曚笉鐢ㄥ鐞�
+            if (!UserInfo.Current.IsLogin) return;
+
+            //璐﹀彿鍦ㄥ埆澶勭櫥闄嗭紝琚涪涓嬬嚎 璺宠浆鍒扮櫥褰曢〉闈�
+            new Alert(Language.StringByID(StringId.Tip), Language.StringByID(StringId.LoggedOnOtherDevices), Language.StringByID(StringId.Close)).Show();
+
+#if DEBUG
+            return;
+#endif
+
+            Logout();
+        }
+
+        /// <summary>
+        /// 閫�鍑虹櫥褰曟搷浣�
+        /// </summary>
+        public void Logout()
+        {
+            //鍔犺浇Loading鏁堟灉
+            var waitPage = new Loading();
+            MainPage.BaseView.AddChidren(waitPage);
+            waitPage.Start(Language.StringByID(StringId.PleaseWait));
+
+            new Thread(() =>
+            {
+                try
+                {
+                    //2.娉ㄩ攢鎺ㄩ��
+                    new HttpServerRequest().SignOutPush();
+                    //3.璺宠浆鐧诲綍椤甸潰
+                    UserInfo.Current.LastTime = DateTime.MinValue;
+                    UserInfo.Current.SaveUserInfo();
+                    DB_ResidenceData.Instance.EixtAccount();
+                }
+                catch (Exception ex)
+                {
+                    MainPage.Log($"xxx:{ex.Message}");
+                }
+                finally
+                {
+                    Application.RunOnMainThread(() =>
+                    {
+                        if (waitPage != null)
+                        {
+                            waitPage.RemoveFromParent();
+                            waitPage = null;
+                        }
+                        MainPage.GoLoginPage(UserInfo.Current);
+                    });
+                }
+            }).Start();
+        }
+
+        /// <summary>
+        /// 
+        /// </summary>
+        ConfirmDialog alarmPushConfirmDialog;
+        /// <summary>
+        /// 鎶ヨ鎺ㄩ�佸脊绐楁彁绀�,鐐瑰嚮鏌ョ湅璺宠浆淇℃伅涓績
+        /// </summary>
+        /// <param name="jpushMessageInfo"></param>
+        public void ShowAlarmPushMessage(JPushMessageInfo jpushMessageInfo)
+        {
+            //娌$櫥褰曚笉澶勭悊
+            if (UserInfo.Current == null || !UserInfo.Current.IsLogin || MainPage.BasePageView == null)
+            {
+                return;
+            }
+
+            //璺宠浆淇℃伅涓績椤甸潰
+            Action goAction = () =>
+            {
+                //Dialog
+                alarmPushConfirmDialog = null;
+                Action backAction = () => {
+                   
+                };
+                var skipPage = new MessageCenterPage();
+                MainPage.BasePageView.AddChidren(skipPage);
+                skipPage.LoadPage(backAction);
+                MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1;
+            };
+
+            //鍙栨秷浜嬩欢
+            Action cancelAction = () =>
+            {
+                alarmPushConfirmDialog = null;
+            };
+
+            //闃叉澶氭寮圭獥澶勭悊
+            if (alarmPushConfirmDialog == null)
+            {
+                alarmPushConfirmDialog = new ConfirmDialog();
+                alarmPushConfirmDialog.ShowDialog(Language.StringByID(StringId.Tip), jpushMessageInfo.Content, goAction, cancelAction, StringId.Cancel, StringId.LookOver);
+            }
+            else
+            {
+                alarmPushConfirmDialog.RefreshDialog(Language.StringByID(StringId.Tip), jpushMessageInfo.Content, goAction, cancelAction, StringId.Cancel, StringId.LookOver);
+
+            }
+
+        }
+
+        #endregion
+
+        #region 鈻� 甯哥敤鏂规硶_______________________
+        /// <summary>
+        /// 璁剧疆涓嬪垝绾挎寜閽姸鎬�
+        /// 缁熶竴灏佽璁剧疆鏂规硶
+        /// </summary>
+        /// <param name="button">涓嬪垝绾挎寜閽�</param>
+        /// <param name="bottomLineType">鐘舵��</param>
+        public void BottomLineShowType(Button button, BottomLineType bottomLineType)
+        {
+            switch (bottomLineType)
+            {
+                case BottomLineType.GotFocus:
+                    button.BackgroundColor = CSS_Color.MainColor;
+                    button.Height = Application.GetRealHeight(2);
+                    break;
+                case BottomLineType.Error:
+                    button.BackgroundColor = CSS_Color.AuxiliaryColor2;
+                    button.Height = Application.GetRealHeight(2);
+                    break;
+                case BottomLineType.Normal:
+                    button.BackgroundColor = CSS_Color.DividingLineColor;
+                    button.Height = Application.GetRealHeight(1);
+                    break;
+                default:
+                    button.BackgroundColor = CSS_Color.DividingLineColor;
+                    button.Height = Application.GetRealHeight(1);
+                    break;
+            }
+        }
+
+
+        /// <summary>
+        /// 
+        /// </summary>
+        /// <param name="userName"></param>
+        /// <returns></returns>
+        public string GetUserName(string userName)
+        {
+            return string.IsNullOrEmpty(userName) ? Language.StringByID(StringId.UsersWhoNameIsEmpty) : userName;
+        }
+
+
+        /// <summary>
+        /// 鐩戝惉缃戠粶鍙樺寲鍚庡鐞嗕簨浠�
+        /// 鍒锋柊缃戠粶鐘舵��
+        /// </summary>
+        /// <param name="internetStatus">缃戠粶鍙樺寲</param>
+        /// <param name="IsEnterBackground">鏄惁杩涘叆浜嗗悗鍙�</param>
+        public void UpdateInternetStatus(int internetStatus, bool IsEnterBackground = false)
+        {
+            MainPage.Log($"缃戠粶鐘舵�佸彉鍖栵紝褰撳墠缃戠粶:{internetStatus} 鏄惁鍚庡彴:{IsEnterBackground.ToString()}");
+            //缃戠粶鐘舵�佸彉鍖� 閲嶇疆缃戝叧鐘舵�侀噸鏂版悳绱�
+            Control.Ins.GatewayOnline = false;
+
+            //缃戠粶鍙樺寲锛屾柇寮�閲嶈繛涓�娆�
+            if (Control.Ins.IsRemote)
+            {
+                Control.Ins.IsRemote = false;
+                DAL.Mqtt.MqttClient.DisConnectRemote("UpdateInternetStatus", false);
+            }
+
+            if (internetStatus == 0)//娌℃湁缃戠粶杩炴帴 0
+            {
+                Control.Ins.GatewayOnline = false;
+                Control.Ins.IsRemote = false;
+                MainPage.InternetStatus = 0;
+            }
+            else if (internetStatus == 1)//3,4G鐨勭綉缁滆繛鎺� 1
+            {
+                MainPage.InternetStatus = 1;
+                Control.Ins.SearchLoaclGateway();
+                
+            }
+            else if (internetStatus == 2)//WiFi缃戠粶
+            {
+                MainPage.InternetStatus = 2;
+                Control.Ins.SearchLoaclGateway();
+            }
+        }
+        #endregion
     }
 }

--
Gitblit v1.8.0