JLChen
2020-12-09 e87985ec1dcb69beedaf9f95e8e7aba14b7c08d6
HDL_ON/UI/UI1-Login/LoginPageBLL.cs
@@ -5,6 +5,7 @@
using HDL_ON.UI.CSS;
using Shared;
using HDL_ON.Entity;
using HDL_ON.DAL.Server;
namespace HDL_ON.UI.UI1Login
{
@@ -27,13 +28,32 @@
        }
        /// <summary>
        /// 检测当前配置域名是否一致,不一致则替换
        /// </summary>
        /// <param name="result"></param>
        void CheckAndSetUserRequestHost(ResponsePackNew result)
        {
            try
            {
                var mGlobalRegionListObj = Newtonsoft.Json.JsonConvert.DeserializeObject<GlobalRegionListRes>(result.Data.ToString());
                if (UserInfo.Current.RequestHttpsHost != mGlobalRegionListObj.regionUrl)
                {
                    UserInfo.Current.RequestHttpsHost = mGlobalRegionListObj.regionUrl;
                    UserInfo.Current.GlobalRegion = mGlobalRegionListObj;
                    UserInfo.Current.SaveUserInfo();
                }
            }
            catch { }
        }
        /// <summary>
        /// 点击按钮获取验证码
        /// </summary>
        void GetVerificationCode()
        {
            btnGetVerificationCode.MouseUpEventHandler += (sender, e) =>
            btnGetVerificationCode.MouseUpEventHandler = (sender, e) =>
            {
                if (!btnGetVerificationCode.IsSelected)
                if (btnGetVerificationCode.IsSelected)
                {
                    string phoneNumber = etAccount.Text.Trim();
                    if (string.IsNullOrEmpty(phoneNumber))
@@ -41,7 +61,7 @@
                        var tip = new Tip()
                        {
                            Text = Language.StringByID(StringId.PlsEntryPhoneNumber),
                            CloseTime = 3,
                            CloseTime = 1,
                            Direction = AMPopTipDirection.None
                        };
                        tip.Show(bodyView);
@@ -50,12 +70,12 @@
                        btnAccountViewBottomLine.Height = Application.GetRealHeight(2);
                        return;
                    }
                    if (!Regex.IsMatch(account, @"^[1]+\d{10}"))
                    if (!Utlis.CheckPhoneNumber(phoneNumber, phoneZoneCode))
                    {
                        var tip = new Tip()
                        {
                            Text = Language.StringByID(StringId.PlsEntryCorrectMobilNeumber),
                            CloseTime = 3,
                            CloseTime = 1,
                            Direction = AMPopTipDirection.None
                        };
                        tip.Show(bodyView);
@@ -64,101 +84,102 @@
                        btnAccountViewBottomLine.Height = Application.GetRealHeight(2);
                        return;
                    }
                    btnGetVerificationCode.IsSelected = true;
                    btnGetVerificationCode.TextColor = CSS_Color.PromptingColor1;
                    //加载Loading效果
                    var waitPage = new Loading();
                    bodyView.AddChidren(waitPage);
                    waitPage.Start(Language.StringByID(StringId.PleaseWait));
                    int time = 60;
                    new Thread(() =>
                    {
                        while (time < 0)
                        try
                        {
                            time--;
                            Application.RunOnMainThread(() =>
                            //1.先检查账号是否注册过
                            var result = pm.GetRegionByAccount(account);
                            if (result.Code != StateCode.SUCCESS)
                            {
                                btnGetVerificationCode.Text = time.ToString() + "s";
                            });
                            Thread.Sleep(1000);
                        }
                        Application.RunOnMainThread(() =>
                        {
                            btnGetVerificationCode.IsSelected = false;
                            btnGetVerificationCode.TextID = StringId.GetVerificationCode;
                        });
                    })
                    { IsBackground = true }.Start();
                    new Thread(() =>
                    {
                        //获取验证码
                        var result = pm.GetPhoneLoginVerCode(phoneNumber);
                        if (result.StateCode == "SUCCESS")
                        {
                        }
                        //登录失败
                        else
                        {
                            Application.RunOnMainThread(() =>
                                IMessageCommon.Current.ShowErrorInfoAlter(result.Code);
                                ShowBtnAccountViewBottomLineError();
                                return;
                            }
                            else
                            {
                                btnGetVerificationCode.IsSelected = false;
                                btnGetVerificationCode.TextID = StringId.GetVerificationCode;
                            });
                            string tipStr = "Sever erorr";
                            switch (result.StateCode.ToUpper())
                            {
                                case "USERNAMEORPWDERROR":
                                    tipStr = Language.StringByID(StringId.LoginFailed_AccountOrPasswordError);
                                //检测当前配置域名是否一致,不一致则替换
                                CheckAndSetUserRequestHost(result);
                                //2.1请求获取验证码
                                var resultObj = pm.VerificationCodeSend(VerifyType.VERIFY_LOGIN, account, true, phoneZoneCode);
                                if (resultObj.Code != StateCode.SUCCESS)
                                {
                                    //2.2请求获取验证码失败
                                    Application.RunOnMainThread(() =>
                                    {
                                        btnPasswordViewBottomLine.BackgroundColor = CSS_Color.AuxiliaryColor2;
                                        btnPasswordViewBottomLine.Height = Application.GetRealHeight(2);
                                    });
                                    break;
                                case "ACCOUNTNOEXISTS":
                                    tipStr = Language.StringByID(StringId.ACCOUNTNOEXISTS);
                                    // 提示错误
                                    IMessageCommon.Current.ShowErrorInfoAlter(resultObj.Code);
                                }
                                else
                                {
                                    Application.RunOnMainThread(() =>
                                    {
                                        btnAccountViewBottomLine.BackgroundColor = CSS_Color.AuxiliaryColor2;
                                        btnAccountViewBottomLine.Height = Application.GetRealHeight(2);
                                        btnGetVerificationCode.IsSelected = false;
                                        btnGetVerificationCode.TextColor = CSS_Color.PromptingColor1;
                                    });
                                    break;
                                case "SENDFAIL":
                                    tipStr = Language.StringByID(StringId.FailedToSendVerificationCode);
                                    Application.RunOnMainThread(() =>
                                    new Thread(() =>
                                    {
                                        btnAccountViewBottomLine.BackgroundColor = CSS_Color.AuxiliaryColor2;
                                        btnAccountViewBottomLine.Height = Application.GetRealHeight(2);
                                    });
                                    break;
                                case "Self:Net_Error":
                                    tipStr = Language.StringByID(StringId.NetworkAnomaly);
                                    break;
                                        while (time > 0)
                                        {
                                            time--;
                                            Application.RunOnMainThread(() =>
                                            {
                                                btnGetVerificationCode.Text = time.ToString() + "s";
                                            });
                                            Thread.Sleep(1000);
                                        }
                                        Application.RunOnMainThread(() =>
                                        {
                                            btnGetVerificationCode.IsSelected = true;
                                            btnGetVerificationCode.TextID = StringId.GetVerificationCode;
                                        });
                                    })
                                    { IsBackground = true }.Start();
                                }
                            }
                        }
                        catch { }
                        finally
                        {
                            Application.RunOnMainThread(() =>
                            {
                                //提示原因
                                var tip = new Tip()
                                if (waitPage != null)
                                {
                                    Text = tipStr,
                                    CloseTime = 3,
                                    Direction = AMPopTipDirection.None
                                };
                                tip.Show(bodyView);
                                btnGetVerificationCode.IsSelected = false;
                                    waitPage.RemoveFromParent();
                                    waitPage = null;
                                }
                            });
                        }
                    })
                    { IsBackground = true }.Start();
                }
            };
        }
        /// <summary>
        /// 切换登录类型
        ///
        /// </summary>
        void LoadPage_SwitchLoginType()
        /// <param name="type">是否选择手机登录</param>
        void LoginTypeChange(bool isPhone)
        {
            //选择手机登录
            btnPhoneLogin.MouseUpEventHandler += (sender, e) =>
            if(isPhone)
            {
                if (loginType == 0)
                    return;
                etAccount.Text = registerPhone;
                etPassword.Text = "";
                #region 切换选中按钮
                btnEmailLogin.TextColor = CSS_Color.PromptingColor1;
                btnEmailLogin.TextSize = CSS_FontSize.TextFontSize;
@@ -168,7 +189,7 @@
                #endregion
                #region 切换登录方式及图标
                logintType = 0;
                loginType = 0;
                if (btnAccountIcon.Parent != null)
                {
                    btnAccountIcon.RemoveFromParent();
@@ -177,79 +198,17 @@
                //显示验证码登录方式,手机登录有验证码登录
                btnSwitchLoginMode.Visible = true;
                #endregion
            };
            //选择邮箱登录
            btnEmailLogin.MouseUpEventHandler += (sender, e) =>
            {
                #region 切换选中按钮
                btnPhoneLogin.TextColor = CSS_Color.PromptingColor1;
                btnPhoneLogin.TextSize = CSS_FontSize.TextFontSize;
                btnEmailLogin.TextColor = CSS_Color.MainColor;
                btnEmailLogin.TextSize = CSS_FontSize.EmphasisFontSize_Secondary;
                etAccount.PlaceholderText = Language.StringByID(StringId.PlsEntryEmailAddress);
                #endregion
                #region 切换登录类型及图标
                logintType = 1;
                if (btnGlobalRoaming.Parent != null)
                #region
                if (logintMode == 1)
                {
                    btnGlobalRoaming.RemoveFromParent();
                }
                accountView.AddChidren(btnAccountIcon);
                #endregion
                //邮箱只有密码登录模式
                logintMode = 0;
                //密码登录
                btnSwitchLoginMode.TextID = StringId.VerificationCodeLogin;
                passwordView.AddChidren(btnVisiblePassword);
                passwordView.AddChidren(btnDividingLineVertical_PasswordView2);
                passwordView.AddChidren(btnForgetPassword);
                btnPasswordIcon.IsSelected = false;
                if (btnGetVerificationCode.Parent != null)
                {
                    btnGetVerificationCode.RemoveFromParent();
                }
                //隐藏密码
                etPassword.SecureTextEntry = true;
                //隐藏验证码登录方式,邮箱登录没有验证码登录
                btnSwitchLoginMode.Visible = false;
            };
        }
        /// <summary>
        /// 切换登录方式
        /// 验证码/密码
        /// </summary>
        void LoadPage_SwitchLoginMode()
        {
            btnSwitchLoginMode.MouseUpEventHandler += (sender, e) =>
            {
                logintMode = logintMode == 0 ? 1 : 0;
                //清除密码框文本数据
                etPassword.Text = "";
                //密码登录
                if (logintMode == 0)
                {
                    btnSwitchLoginMode.TextID = StringId.VerificationCodeLogin;
                    passwordView.AddChidren(btnVisiblePassword);
                    passwordView.AddChidren(btnDividingLineVertical_PasswordView2);
                    passwordView.AddChidren(btnForgetPassword);
                    btnPasswordIcon.IsSelected = false;
                    if (btnGetVerificationCode.Parent != null)
                    if (Regex.IsMatch(account, @"^[1]+\d{10}") && (account.Length == 11) && btnGetVerificationCode.Text == Language.StringByID(StringId.GetVerificationCode))
                    {
                        btnGetVerificationCode.RemoveFromParent();
                        btnGetVerificationCode.IsSelected = true;
                    }
                    //隐藏密码
                    etPassword.SecureTextEntry = true;
                }
                //验证码登录
                else if (logintMode == 1)
                {
                    btnSwitchLoginMode.TextID = StringId.PasswordLogin;
                    passwordView.AddChidren(btnGetVerificationCode);
                    //passwordView.AddChidren(btnGetVerificationCode);
                    btnGetVerificationCode.Visible = true;
                    etPassword.PlaceholderText = Language.StringByID(StringId.PlsEntryVerificationCode);
                    btnPasswordIcon.IsSelected = true;
                    if (btnVisiblePassword.Parent != null)
@@ -267,6 +226,133 @@
                    //验证码不需要隐藏
                    etPassword.SecureTextEntry = false;
                }
                #endregion
            }
            else
            {
                if (loginType == 1)
                    return;
                etAccount.Text = registerEmail;
                etPassword.Text = "";
                #region 切换选中按钮
                btnPhoneLogin.TextColor = CSS_Color.PromptingColor1;
                btnPhoneLogin.TextSize = CSS_FontSize.TextFontSize;
                btnEmailLogin.TextColor = CSS_Color.MainColor;
                btnEmailLogin.TextSize = CSS_FontSize.EmphasisFontSize_Secondary;
                etAccount.PlaceholderText = Language.StringByID(StringId.PlsEntryEmailAddress);
                #endregion
                #region 切换登录类型及图标
                loginType = 1;
                if (btnGlobalRoaming.Parent != null)
                {
                    btnGlobalRoaming.RemoveFromParent();
                }
                accountView.AddChidren(btnAccountIcon);
                #endregion
                //邮箱只有密码登录模式
                //logintMode = 0;
                //密码登录
                btnSwitchLoginMode.TextID = StringId.VerificationCodeLogin;
                passwordView.AddChidren(btnVisiblePassword);
                passwordView.AddChidren(btnDividingLineVertical_PasswordView2);
                passwordView.AddChidren(btnForgetPassword);
                btnPasswordIcon.IsSelected = false;
                //if (btnGetVerificationCode.Parent != null)
                //{
                //btnGetVerificationCode.RemoveFromParent();
                btnGetVerificationCode.Visible = false;
                //}
                //隐藏密码
                etPassword.SecureTextEntry = true;
                //隐藏验证码登录方式,邮箱登录没有验证码登录
                btnSwitchLoginMode.Visible = false;
            }
        }
        /// <summary>
        /// 切换登录类型
        /// </summary>
        void LoadPage_SwitchLoginType()
        {
            //选择手机登录
            btnPhoneLogin.MouseUpEventHandler = (sender, e) =>
            {
                LoginTypeChange(true);
            };
            //选择邮箱登录
            btnEmailLogin.MouseUpEventHandler += (sender, e) =>
            {
                LoginTypeChange(false);
            };
        }
        /// <summary>
        /// 切换登录方式 验证码/密码
        /// </summary>
        void LoginModeChange()
        {
            //清除密码框文本数据
            etPassword.Text = "";
            //密码登录
            if (logintMode == 0)
            {
                btnSwitchLoginMode.TextID = StringId.VerificationCodeLogin;
                passwordView.AddChidren(btnVisiblePassword);
                passwordView.AddChidren(btnDividingLineVertical_PasswordView2);
                etPassword.PlaceholderText = Language.StringByID(StringId.PlsEntryPassword);
                passwordView.AddChidren(btnForgetPassword);
                btnPasswordIcon.IsSelected = false;
                //if (btnGetVerificationCode.Parent != null)
                //{
                //btnGetVerificationCode.RemoveFromParent();
                btnGetVerificationCode.Visible = false;
                //}
                //隐藏密码
                etPassword.SecureTextEntry = true;
            }
            //验证码登录
            else if (logintMode == 1)
            {
                if (Regex.IsMatch(account, @"^[1]+\d{10}") && (account.Length == 11) && btnGetVerificationCode.Text == Language.StringByID(StringId.GetVerificationCode))
                {
                    btnGetVerificationCode.IsSelected = true;
                }
                btnSwitchLoginMode.TextID = StringId.PasswordLogin;
                //passwordView.AddChidren(btnGetVerificationCode);
                btnGetVerificationCode.Visible = true;
                etPassword.PlaceholderText = Language.StringByID(StringId.PlsEntryVerificationCode);
                btnPasswordIcon.IsSelected = true;
                if (btnVisiblePassword.Parent != null)
                {
                    btnVisiblePassword.RemoveFromParent();
                }
                if (btnDividingLineVertical_PasswordView2.Parent != null)
                {
                    btnDividingLineVertical_PasswordView2.RemoveFromParent();
                }
                if (btnForgetPassword.Parent != null)
                {
                    btnForgetPassword.RemoveFromParent();
                }
                //验证码不需要隐藏
                etPassword.SecureTextEntry = false;
            }
        }
        /// <summary>
        /// 切换登录方式
        /// 验证码/密码
        /// </summary>
        void LoadPage_SwitchLoginMode()
        {
            btnSwitchLoginMode.MouseUpEventHandler = (sender, e) =>
            {
                logintMode = logintMode == 0 ? 1 : 0;
                LoginModeChange();
            };
        }
@@ -276,7 +362,7 @@
        void LoadPage_SelectionEditText()
        {
            //当焦点在账号文本框时,文本框底线点亮
            etAccount.FoucsChanged += (sender, e) =>
            etAccount.FoucsChanged = (sender, e) =>
            {
                if (etAccount.Foucs)
                {
@@ -288,16 +374,24 @@
                    btnAccountViewBottomLine.BackgroundColor = CSS_Color.DividingLineColor;
                    btnAccountViewBottomLine.Height = Application.GetRealHeight(1);
                    account = etAccount.Text.Trim();
                    if (loginType == 0)
                    {
                        registerPhone = account;
                    }
                    else
                    {
                        registerEmail = account;
                    }
                    if (account.Length == 0)
                        return;
                    if (logintType == 0)
                    if (loginType == 0)
                    {
                        if (!Regex.IsMatch(account, @"^[1]+\d{10}"))
                        if (!Utlis.CheckPhoneNumber(registerPhone, phoneZoneCode))
                        {
                            var tip = new Tip()
                            {
                                Text = Language.StringByID(StringId.PlsEntryCorrectMobilNeumber),
                                CloseTime = 3,
                                CloseTime = 1,
                                Direction = AMPopTipDirection.None
                            };
                            tip.Show(bodyView);
@@ -305,15 +399,22 @@
                            btnAccountViewBottomLine.BackgroundColor = CSS_Color.AuxiliaryColor2;
                            btnAccountViewBottomLine.Height = Application.GetRealHeight(2);
                        }
                        else
                        {
                            if (btnGetVerificationCode.Text == Language.StringByID(StringId.GetVerificationCode))
                            {
                                btnGetVerificationCode.IsSelected = true;
                            }
                        }
                    }
                    else
                    {
                        if (!Regex.IsMatch(account, "([a-zA-Z0-9_\\.\\-])+\\@(([a-zA-Z0-9\\-])+\\.)+([a-zA-Z0-9]{2,5})+"))
                        if (!Utlis.CheckEmail(registerEmail))
                        {
                            var tip = new Tip()
                            {
                                Text = Language.StringByID(StringId.PlsEntryCorrectEmailAddress),
                                CloseTime = 3,
                                CloseTime = 1,
                                Direction = AMPopTipDirection.None
                            };
                            tip.Show(bodyView);
@@ -324,7 +425,7 @@
                }
            };
            //当焦点在密码文本框时,文本框底线点亮
            etPassword.FoucsChanged += (sender, e) =>
            etPassword.FoucsChanged = (sender, e) =>
            {
                if (etPassword.Foucs)
                {
@@ -346,8 +447,13 @@
            //当焦点在密码文本框时,点击键盘回撤按键,触发的事件
            etPassword.EditorEnterAction += (obj) =>
            {
                etPassword.Foucs = false;
                Application.HideSoftInput();
            };
            etPassword.MouseUpEventHandler = (sender, e) =>
            {
                etPassword.Foucs = true;
            };
        }
        /// <summary>
@@ -378,17 +484,20 @@
            {
                if (btnLogin.IsSelected)
                {
                    //判断是否同意了隐私政策
                    if (CheckPrivacyPolicy() == false) return;
                    account = etAccount.Text.Trim();
                    password = etPassword.Text.Trim();
                    if (logintType == 0)
                    if (loginType == 0)
                    {
                        if (!Regex.IsMatch(account, @"^[1]+\d{10}"))
                        if (!Utlis.CheckPhoneNumber(account, phoneZoneCode))
                        {
                            var tip = new Tip()
                            {
                                Text = Language.StringByID(StringId.PlsEntryCorrectMobilNeumber),
                                CloseTime = 3,
                                CloseTime = 1,
                                Direction = AMPopTipDirection.None
                            };
                            tip.Show(bodyView);
@@ -397,12 +506,12 @@
                    }
                    else
                    {
                        if (!Regex.IsMatch(account, "([a-zA-Z0-9_\\.\\-])+\\@(([a-zA-Z0-9\\-])+\\.)+([a-zA-Z0-9]{2,5})+"))
                        if (!Utlis.CheckEmail(account))
                        {
                            var tip = new Tip()
                            {
                                Text = Language.StringByID(StringId.PlsEntryCorrectEmailAddress),
                                CloseTime = 3,
                                CloseTime = 1,
                                Direction = AMPopTipDirection.None
                            };
                            tip.Show(bodyView);
@@ -414,19 +523,29 @@
                    var loginThread = LoadThread_Login();
                    waitPage = new Loading();
                    new PublicAssmebly().LoadPage_WaitPage(loginThread, bodyView, waitPage);
                }
            };
            #region 当账号密码都输入时,才能点击登录按钮
            etAccount.TextChangeEventHandler += (sender, e) =>
            etAccount.TextChangeEventHandler = (sender, e) =>
            {
                if (etAccount.Text.Trim().Length > 0 && etPassword.Text.Trim().Length > 0)
                account = etAccount.Text.Trim();
                if (account.Length > 0 && etPassword.Text.Trim().Length > 0)
                {
                    btnLogin.IsSelected = true;
                }
                else
                {
                    btnLogin.IsSelected = false;
                }
                if (Regex.IsMatch(account, @"^[1]+\d{10}"))//&& account.Length == 11)
                {
                    btnGetVerificationCode.IsSelected = true;
                    btnGetVerificationCode.TextColor = CSS_Color.MainBackgroundColor;
                }
                else
                {
                    btnGetVerificationCode.IsSelected = false;
                    btnGetVerificationCode.TextColor = CSS_Color.PromptingColor1;
                }
            };
            etPassword.TextChangeEventHandler += (sender, e) =>
@@ -452,8 +571,39 @@
            {
                try
                {
                    //如果是账号密码登录,先检查一次账号是否注册过
                    if (logintMode == 0)
                    {
                        //1.先检查账号是否注册过
                        var result = pm.GetRegionByAccount(account);
                        if (result.Code != StateCode.SUCCESS)
                        {
                            IMessageCommon.Current.ShowErrorInfoAlter(result.Code);
                            ShowBtnAccountViewBottomLineError();
                            return;
                        }
                        else
                        {
                            //设置用户所注册地区的域名,用户相关操作都用这个域名
                            CheckAndSetUserRequestHost(result);
                        }
                    }
                    //登录
                    var loginResult = LoadMethod_Login();
                    if (!string.IsNullOrEmpty(verAccount))//验证登录账号
                    {
                        Application.RunOnMainThread(() =>
                        {
                            if (verAccount == etPassword.Text.Trim())
                            {
                                //跳转页面----
                                MainPage.GoUserPage();
                                MainPage.InitializationData();
                                return;
                            }
                        });
                    }
                    if (loginResult)
                    {
                        //获取住宅信息
@@ -464,20 +614,53 @@
                             * Wait : 推送注册
                             */
                            /*
                             查看本地是否存在数据
                             存在则导出
                             */
                            var isExis = FileUtils.IsExisFolder(DB_ResidenceData.residenceData.CurReginID);
                            if (isExis)
                            {
                                FileUtils.DeleteAllFile();
                                string regionRootPath = FileUtils.CreateRegionBackup(DB_ResidenceData.residenceData.CurReginID);
                                FileUtils.RestoreRegionFiles(regionRootPath);
                                DB_ResidenceData.residenceData.EixtAccount();
                                OnAppConfig.Instance.RefreshUserConfig();
                                SpatialInfo.CurrentSpatial.InitRoomFunction();
                            }
                            Application.RunOnMainThread(() =>
                            {
                                waitPage.RemoveFromParent();
                                waitPage = null;
                                //跳转页面----
                                MainPage.GoUserPage();
                                MainPage.InitializationData();
                            });
                        }
                        else
                        {
                            //2020-11-13 待确认
                            //获取住宅失败,重新标记为未登录状态
                            UserInfo.Current.LastTime = DateTime.MinValue;
                            UserInfo.Current.SaveUserInfo();
                            //登录失败,请先添加住宅!
                            Utlis.ShowAlertOnMainThread(Language.StringByID(StringId.FailedGetHomeList));
                        }
                    }
                }
                catch (Exception ex)
                {
                    MainPage.Log($"LoginPage : {ex.Message}");
                }
                finally
                {
                    Application.RunOnMainThread(() =>
                    {
                        if (waitPage != null)
                        {
                            waitPage.RemoveFromParent();
                            waitPage = null;
                        }
                    });
                }
            })
            { IsBackground = true };
@@ -489,85 +672,80 @@
        bool LoadMethod_Login()
        {
            var result = false;
            ResponsePack loginResult;
            if (logintMode == 0)
            ResponsePackNew loginResult;
            if (logintMode == 0 || loginType == 1)
            {
                //调用登录接口
                loginResult = pm.LoginByPassword(account, password);
            }
            else
            {
                //调用登录接口
                //调用验证码登录接口
                loginResult = pm.LoginValidCode(account, password);
            }
            if (loginResult.StateCode == "SUCCESS")
            if (loginResult.Code == StateCode.SUCCESS)
            {
                var loginDataStr = Newtonsoft.Json.Linq.JObject.FromObject(loginResult.ResponseData);
                //记录用户数据
                MainPage.LoginUser = new UserInfo
                {
                    ID = (int)loginDataStr.GetValue("UserID"),
                    masterID = (int)loginDataStr.GetValue("MainUserID"),
                    accountType = (int)loginDataStr.GetValue("UserType"),
                    accountString = account,
                    password = password,
                    lastTime = DateTime.Now,
                    SIP_Account = loginDataStr.GetValue("AllVisionRegisterDevUserNameGuid").ToString(),
                    userName = loginDataStr.GetValue("Remark").ToString(),
                };
                MainPage.LoginUser.SaveUserInfo();
                var revertData = Newtonsoft.Json.JsonConvert.DeserializeObject<UserLoginRes>(loginResult.Data.ToString());
                // UserInfo.Current = new UserInfo
                //{
                //    userType = revertData.userType,
                //    accountString = account,
                //    password = password,
                //    lastTime = DateTime.Now,
                //    ID = revertData.userId,
                //    loginTokenString = revertData.headerPrefix + revertData.accessToken,
                //    refreshToken = revertData.refreshToken,
                //    userName = revertData.name
                //};
                UserInfo.Current.userType = revertData.userType;
                UserInfo.Current.AccountString = account;
                //UserInfo.Current.password = password;
                UserInfo.Current.LastTime = DateTime.Now;
                UserInfo.Current.ID = revertData.userId;
                UserInfo.Current.LoginTokenString = revertData.headerPrefix + revertData.accessToken;
                UserInfo.Current.RefreshToken = revertData.refreshToken;
                UserInfo.Current.userName = revertData.name;
                UserInfo.Current.userMobileInfo = "";//重置用户手机
                UserInfo.Current.userEmailInfo = "";//重置用户邮箱
                UserInfo.Current.headImagePagePath = "LoginIcon/2.png";//重置用户头像
                UserInfo.Current.SaveUserInfo();
                MainPage.Log("登录成功。");
                result = true;
                //获取用户信息
                new Thread(() =>
                {
                    pm.GetUserInfo();
                    pm.GetUserHeadImage(revertData.userId);
                    pm.GetUserInfo(false);
                })
                { IsBackground = true }.Start();
            }
            //登录失败
            else
            {
                string tipStr = "Sever erorr";
                switch (loginResult.StateCode)
                {
                    case "USERNAMEORPWDERROR":
                        tipStr = Language.StringByID(StringId.LoginFailed_AccountOrPasswordError);
                        Application.RunOnMainThread(() =>
                        {
                            btnPasswordViewBottomLine.BackgroundColor = CSS_Color.AuxiliaryColor2;
                            btnPasswordViewBottomLine.Height = Application.GetRealHeight(2);
                        });
                        break;
                    case "ACCOUNTNOEXISTS":
                        tipStr = Language.StringByID(StringId.ACCOUNTNOEXISTS);
                        Application.RunOnMainThread(() =>
                        {
                            btnAccountViewBottomLine.BackgroundColor = CSS_Color.AuxiliaryColor2;
                            btnAccountViewBottomLine.Height = Application.GetRealHeight(2);
                        });
                        break;
                    case "NoRecord":
                        tipStr = Language.StringByID(StringId.PlsGetTheVerificationCode);
                        break;
                    case "Self:Net_Error":
                        tipStr = Language.StringByID(StringId.NetworkAnomaly);
                        break;
                }
                //账号或者密码错误
                Application.RunOnMainThread(() =>
                {
                    waitPage.Hide();
                    //提示原因
                    var tip = new Tip()
                    if (loginResult.Code == "10008")
                    {
                        Text = tipStr,
                        CloseTime = 3,
                        Direction = AMPopTipDirection.None
                    };
                    tip.Show(bodyView);
                        //用户名或密码错误
                        btnPasswordViewBottomLine.BackgroundColor = CSS_Color.AuxiliaryColor2;
                        btnPasswordViewBottomLine.Height = Application.GetRealHeight(2);
                    }
                    else if (loginResult.Code == "10010")
                    {
                        //用户不存在
                        btnAccountViewBottomLine.BackgroundColor = CSS_Color.AuxiliaryColor2;
                        btnAccountViewBottomLine.Height = Application.GetRealHeight(2);
                    }
                    else if (loginResult.Code == StateCode.VERIFICATION_CODE_WRONG)
                    {
                        btnPasswordViewBottomLine.BackgroundColor = CSS_Color.AuxiliaryColor2;
                        btnPasswordViewBottomLine.Height = Application.GetRealHeight(2);
                    }
                    waitPage.Hide();
                });
                IMessageCommon.Current.ShowErrorInfoAlter(loginResult.Code);
            }
            return result;
        }
@@ -579,56 +757,19 @@
        {
            var result = false;
            var responsePack = pm.GetHomePager();
            if (responsePack.StateCode == "Success")
            if (responsePack == StateCode.SUCCESS)
            {
                var dataStr = Newtonsoft.Json.Linq.JObject.FromObject(responsePack.ResponseData);
                //没有住宅
                if (dataStr.GetValue("PageData").ToString() == "[]")
                //2020-11-13 待确认,没有住宅,不算登录成功
                if (UserInfo.Current.regionList != null && UserInfo.Current.regionList.Count > 0)
                {
                    result = true;
                }
                else
                {
                    MainPage.LoginUser.regionList = new List<RegionInfoRes>();
                    foreach (var jsonData in dataStr.GetValue("PageData"))
                    {
                        var homeJsonStr = Newtonsoft.Json.Linq.JObject.FromObject(jsonData);
                        var home = new RegionInfoRes()
                        {
                            RegionID = homeJsonStr.GetValue("Id").ToString(),
                            RegionName = homeJsonStr.GetValue("RegionName").ToString(),
                            Name = homeJsonStr.GetValue("Name").ToString(),
                            Address = homeJsonStr.GetValue("Address").ToString(),
                        };
                        MainPage.LoginUser.regionList.Add(home);
                    }
                    DB_ResidenceData.residenceData.residecenInfo = MainPage.LoginUser.regionList[0];
                    DB_ResidenceData.residenceData.SaveResidenceData();
                    MainPage.LoginUser.SaveUserInfo();
                }
                result = true;
                //result = true;
            }
            else
            {
                var tipStr = "Server erorr";
                switch (responsePack.StateCode)
                {
                    case "NoLogin":
                        tipStr = Language.StringByID(StringId.InvalidLoginCertificate);
                        break;
                }
                Application.RunOnMainThread(() =>
                {
                    //提示原因
                    var tip = new Tip()
                    {
                        Text = tipStr,
                        CloseTime = 3,
                        Direction = AMPopTipDirection.None
                    };
                    tip.Show(bodyView);
                });
                // 提示错误
                IMessageCommon.Current.ShowErrorInfoAlter(responsePack);
            }
            return result;
        }
@@ -640,22 +781,22 @@
        {
            btnRegister.MouseUpEventHandler += (sender, e) =>
            {
                //回调事件
                //Action callBackAction = () =>
                //{
                //    Application.RunOnMainThread(() =>
                //    {
                //        try
                //        {
                //        }
                //        catch (Exception ex)
                //        {
                //            MainPage.Log($"login callBackAction : {ex.Message}");
                //        }
                //    });
                //};
                //判断是否同意了隐私政策
                if (CheckPrivacyPolicy() == false) return;
                var registerPage = new RegisterPage();
                Action<string, string, bool> autoLoginAction = (account, password, isPhone) =>
                {
                    try
                    {
                        AutoLoginAction(account, password, isPhone);
                    }
                    catch (Exception ex)
                    {
                        MainPage.Log($"login callBackAction : {ex.Message}");
                    }
                };
                var registerPage = new RegisterPage(autoLoginAction);
                registerPage.Show();
                registerPage.ShowDialog();
            };
@@ -668,25 +809,64 @@
        {
            btnForgetPassword.MouseUpEventHandler += (sender, e) =>
            {
                Action<string> callBackAction = (callBackPar_Action) =>
                //判断是否同意了隐私政策
                if (CheckPrivacyPolicy() == false) return;
                Action<string, string, bool> autoLoginAction = (account, password, isPhone) =>
                {
                    Application.RunOnMainThread(() =>
                    try
                    {
                        try
                        {
                            etAccount.Text = callBackPar_Action;
                        }
                        catch (Exception ex)
                        {
                            MainPage.Log($"login callBackAction : {ex.Message}");
                        }
                    });
                        AutoLoginAction(account, password, isPhone);
                    }
                    catch (Exception ex)
                    {
                        MainPage.Log($"login callBackAction : {ex.Message}");
                    }
                };
                var forgetPasswordDialog = new ForgetPasswordPage(callBackAction);
                var forgetPasswordDialog = new ForgetPasswordPage(autoLoginAction);
                forgetPasswordDialog.Show();
                forgetPasswordDialog.ShowDialog();
            };
        }
        /// <summary>
        /// 用户不存在
        /// </summary>
        void ShowBtnAccountViewBottomLineError()
        {
            Application.RunOnMainThread(() =>
            {
                //用户不存在
                btnAccountViewBottomLine.BackgroundColor = CSS_Color.AuxiliaryColor2;
                btnAccountViewBottomLine.Height = Application.GetRealHeight(2);
            });
        }
        /// <summary>
        /// 自动登录回调事件
        /// </summary>
        /// <param name="mAccount"></param>
        /// <param name="mPassword"></param>
        /// <param name="isPhone"></param>
        void AutoLoginAction(string mAccount, string mPassword, bool isPhone)
        {
            //切换回手机或者邮箱登录
            LoginTypeChange(isPhone);
            //切换回密码登录1
            logintMode = 0;
            //切换回密码登录2
            LoginModeChange();
            //设置账户名和密码
            etAccount.Text = account;
            etPassword.Text = password;
            this.account = mAccount;
            this.password = mPassword;
            //创建登录线程
            var loginThread = LoadThread_Login();
            waitPage = new Loading();
            new PublicAssmebly().LoadPage_WaitPage(loginThread, bodyView, waitPage);
        }
    }
}
}