JLChen
2020-12-16 d724f7f21c5cc8c5dd5aa0cf7345a62a662eb2bf
HDL_ON/Common/HDLCommon.cs
@@ -5,6 +5,7 @@
using HDL_ON.DAL.Server;
using HDL_ON.UI;
using HDL_ON.Entity;
using System.Threading;
namespace HDL_ON
{
@@ -14,6 +15,11 @@
    /// </summary>
    public class HDLCommon
    {
        /// <summary>
        /// 收到推送Action事件
        /// </summary>
        public static Action GetPushMessageAction;
        #region ■ 变量声明___________________________
        /// <summary>
        /// 通用方法
@@ -69,7 +75,7 @@
        #endregion
        #region 检测更新
        #region ■ 检测更新_______________________
        /// <summary>
        /// 检测更新线程
        /// </summary>
@@ -166,7 +172,7 @@
            // 1.1 没有更新 返回
            if (mUpdateDialogInfo.UpdateType == 0) return;
            // 1.2 有新版本但是忽略过 返回
            if (mUpdateDialogInfo.UpdateType == 1 && (UserInfo.Current.IgnoreUpdateVersion == mUpdateDialogInfo.NewVersion)) return;
            if (mUpdateDialogInfo.UpdateType == 1 && (OnAppConfig.Instance.IgnoreUpdateVersion == mUpdateDialogInfo.NewVersion)) return;
            // 2.1 有新版本没有忽略过 提示更新
            if (mUpdateDialogInfo.UpdateType == 1)
            {
@@ -179,8 +185,8 @@
                Action cancelAction = () =>
                {
                    UserInfo.Current.IgnoreUpdateVersion = mUpdateDialogInfo.NewVersion;
                    UserInfo.Current.SaveUserInfo();
                    OnAppConfig.Instance.IgnoreUpdateVersion = mUpdateDialogInfo.NewVersion;
                    OnAppConfig.Instance.SaveConfig();
                };
                //1提示更新
@@ -223,22 +229,22 @@
        #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);
            }
        }
        ///// <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 推送处理
        #region ■ 推送处理_______________________
        /// <summary>
        /// 推送消息处理
        /// </summary>
@@ -253,8 +259,9 @@
                    {
                        //账号在别处登陆,被踢下线 跳转到登录页面
                        new Alert(Language.StringByID(StringId.Tip), Language.StringByID(StringId.LoggedOnOtherDevices), Language.StringByID(StringId.Close)).Show();
                        //2020-12-04 待增加退出登录操作
                        Logout();
                        //退出登录操作
                        CheckLogout();
                    });
                    return;
                }
@@ -263,9 +270,9 @@
                    Shared.Application.RunOnMainThread(() =>
                    {
                        new Alert(jpushMessageInfo.Title, jpushMessageInfo.Content, Language.StringByID(StringId.Close)).Show();
                        GetPushMessageAction?.Invoke();
                    });
                    return;
                }
            }
            catch
@@ -277,62 +284,88 @@
        /// <summary>
        /// 退出登录操作
        /// </summary>
        public void CheckLogout()
        {
            //未登录不用处理
            if (!UserInfo.Current.IsLogin) return;
#if DEBUG
            return;
#endif
            Logout();
        }
        /// <summary>
        /// 退出登录操作
        /// </summary>
        public void Logout()
        {
            try
            //加载Loading效果
            var waitPage = new Loading();
            MainPage.BasePageView.AddChidren(waitPage);
            waitPage.Start(Language.StringByID(StringId.PleaseWait));
            new Thread(() =>
            {
                //未登录不用处理
                if (!UserInfo.Current.IsLogin) return;
                Shared.Application.RunOnMainThread(() =>
                try
                {
                    #region 保存本地数据至文件夹
                    string oldRegionRootPath = FileUtils.CreateRegionBackup(DB_ResidenceData.residenceData.CurReginID.ToString());
                    new System.Threading.Thread(() =>
                    {
                        try
                        {
                            var backuplist = FileUtils.ReadFiles();
                            FileUtils.DeleteRegionFiles(oldRegionRootPath);
                            //移动文件
                            foreach (var fileName in backuplist)
                            {
                                System.IO.FileInfo fileInfo = new System.IO.FileInfo(FileUtils.RootPath + fileName);
                                if (fileInfo.Exists)
                                {
                                    fileInfo.MoveTo(oldRegionRootPath + fileName);
                                    MainPage.Log("move file : " + fileName);
                                }
                            }
                        }
                        catch (Exception ex)
                        {
                            MainPage.Log($"xxx:{ex.Message}");
                        }
                        finally
                        {
                            FileUtils.DeleteAllFile();
                        }
                    }).Start();
                    #endregion
                    ////2.注销推送
                    //2.注销推送
                    new HttpServerRequest().SignOutPush();
                    //3.跳转登录页面
                    UserInfo.Current.LastTime = DateTime.MinValue;
                    UserInfo.Current.headImagePagePath = "LoginIcon/2.png";//重置用户头像
                    UserInfo.Current.SaveUserInfo();
                    MainPage.GoLoginPage(UserInfo.Current);
                    DB_ResidenceData.residenceData.EixtAccount();
                });
            }
            catch (Exception ex)
            {
                MainPage.Log($"xxx:{ex.Message}");
            }
                    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();
        }
        #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;
            }
        }
        #endregion
    }
}