wxr
2020-04-21 f718d23a262a5a8e1241fdeaeb4153399f95e79d
HDL_ON/UI/UI1-Login/ForgetPasswordPageBLL.cs
@@ -18,7 +18,8 @@
            LoadEvent_EditTextFcousChange();
            LoadEvent_ChangeTextVisble();
            LoadEvent_GetVerificationCode();
            LoadEvent_Register();
            LoadEvent_Reset();
            LoadEvent_TextChange();
        }
        /// <summary>
@@ -34,8 +35,7 @@
                btnEmailLogin.TextSize = CSS_FontSize.TextFontSize;
                btnPhoneLogin.TextColor = CSS_Color.MainColor;
                btnPhoneLogin.TextSize = CSS_FontSize.EmphasisFontSize_Secondary;
                btnChooseBottomLine.X = btnPhoneLogin.X + Application.GetRealWidth(27);
                etAccount.PlaceholderText = Language.StringByID(R.InternationalizationString.PlsEntryCorrectMobilNeumber);
                etAccount.PlaceholderText = Language.StringByID(StringId.PlsEntryCorrectMobilNeumber);
                #endregion
                #region 切换方式方式及图标
@@ -56,8 +56,7 @@
                btnPhoneLogin.TextSize = CSS_FontSize.TextFontSize;
                btnEmailLogin.TextColor = CSS_Color.MainColor;
                btnEmailLogin.TextSize = CSS_FontSize.EmphasisFontSize_Secondary;
                btnChooseBottomLine.X = btnEmailLogin.X + Application.GetRealWidth(27);
                etAccount.PlaceholderText = Language.StringByID(R.InternationalizationString.PlsEntryEmailAddress);
                etAccount.PlaceholderText = Language.StringByID(StringId.PlsEntryEmailAddress);
                #endregion
                #region 切换修改方式及图标
@@ -69,6 +68,29 @@
                accountView.AddChidren(btnAccountIcon);
                #endregion
            };
        }
        /// <summary>
        /// 加载文本变化事件
        /// </summary>
        void LoadEvent_TextChange()
        {
            etAccount.TextChangeEventHandler += (sender, e) =>
            {
                Regex reg = new Regex(@"^[1]+\d{10}");
                var mFalg = reg.Match(etAccount.Text.Trim());
                if (!mFalg.Success || (btnGlobalRoaming.Text == "+86" && etAccount.Text.Trim().Length != 11))
                {
                    btnGetVerificationCode.IsSelected = false;
                }
                else
                {
                    if (btnGetVerificationCode.Text == Language.StringByID(StringId.GetVerificationCode))
                    {
                        btnGetVerificationCode.IsSelected = true;
                    }
                }
            };
        }
@@ -94,7 +116,7 @@
                    //手机方式-验证手机号码是否正确
                    if (registerType == 0)
                    {
                        Regex reg = new Regex("^\\d+$");
                        Regex reg = new Regex(@"^[1]+\d{9}");
                        var mFalg = reg.Match(etAccount.Text.Trim());
                        if (!mFalg.Success || (btnGlobalRoaming.Text == "+86" && etAccount.Text.Trim().Length != 11))
                        {
@@ -103,19 +125,17 @@
                            new Tip()
                            {
                                CloseTime = 3,
                                Text = Language.StringByID(R.InternationalizationString.PlsEntryCorrectMobilNeumber),
                                Text = Language.StringByID(StringId.PlsEntryCorrectMobilNeumber),
                                Direction = AMPopTipDirection.None,
                            }.Show(bodyView);
                        }
                        else
                        {
                            //标记手机号码有效
                            btnGetVerificationCode.IsSelected = true;
                            //账号有效、密码有效、验证码输入了,才能点击方式
                            if (btnGetVerificationCode.IsSelected && ValidPassword && string.IsNullOrEmpty(etVerificationCode.Text.Trim()))
                            if (btnGetVerificationCode.Text == Language.StringByID( StringId.GetVerificationCode))
                            {
                                btnRegister.IsSelected = true;
                                btnGetVerificationCode.IsSelected = true;
                            }
                            LoadMothed_EnableResetButton();
                        }
                    }
                    else if (registerType == 1)
@@ -123,33 +143,32 @@
                        //邮箱方式-验证邮箱是否正确
                        var reg = new Regex("^\\s*([A-Za-z0-9_-]+(\\.\\w+)*@(\\w+\\.)+\\w{2,5})\\s*$");
                        var mFalg = reg.Match(etAccount.Text.Trim());
                        if (!mFalg.Success || (btnGlobalRoaming.Text == "+86" && etAccount.Text.Trim().Length != 11))
                        if (!mFalg.Success )
                        {
                            btnAccountViewBottomLine.BackgroundColor = CSS_Color.AuxiliaryColor2;
                            btnAccountViewBottomLine.Height = Application.GetRealHeight(2);
                            new Tip()
                            {
                                CloseTime = 3,
                                Text = Language.StringByID(R.InternationalizationString.PlsEntryCorrectEmailAddress),
                                Text = Language.StringByID(StringId.PlsEntryCorrectEmailAddress),
                                Direction = AMPopTipDirection.None,
                            }.Show(bodyView);
                        }
                        else
                        {
                            //标记手机号码有效
                            btnGetVerificationCode.IsSelected = true;
                            //账号有效、密码有效、验证码输入了,才能点击方式
                            if (btnGetVerificationCode.IsSelected && ValidPassword && string.IsNullOrEmpty(etVerificationCode.Text.Trim()))
                            if (btnGetVerificationCode.Text == Language.StringByID(StringId.GetVerificationCode))
                            {
                                btnRegister.IsSelected = true;
                                btnGetVerificationCode.IsSelected = true;
                            }
                            LoadMothed_EnableResetButton();
                        }
                    }
                }
            };
            //密码文本框焦点变化事件
            etPassword.FoucsChanged += (sender, e) => {
            etPassword.FoucsChanged += (sender, e) =>
            {
                if (etPassword.Foucs)
                {
                    btnPasswordViewBottomLine.BackgroundColor = CSS_Color.MainColor;
@@ -160,20 +179,21 @@
                    btnPasswordViewBottomLine.BackgroundColor = CSS_Color.DividingLineColor;
                    btnPasswordViewBottomLine.Height = Application.GetRealHeight(1);
                    //校验密码是否符合要求
                    if (etPassword.Text.Trim().Length < 6)
                    if (etPassword.Text.Trim().Length < 6 || etPassword.Text.Trim().Length > 13)
                    {
                        new Tip()
                        {
                            CloseTime = 3,
                            Direction = AMPopTipDirection.None,
                            Text = Language.StringByID(R.InternationalizationString.IncorrectRepeatPassword)
                            Text = Language.StringByID(StringId.PasswordIsUnqualified)
                        }.Show(bodyView);
                    }
                }
            };
            //确认密码文本框焦点变化事件
            etRepeatPassword.FoucsChanged += (sender, e) => {
            etRepeatPassword.FoucsChanged += (sender, e) =>
            {
                if (etRepeatPassword.Foucs)
                {
                    btnRepeatPasswordViewBottomLine.BackgroundColor = CSS_Color.MainColor;
@@ -192,23 +212,19 @@
                        {
                            CloseTime = 3,
                            Direction = AMPopTipDirection.None,
                            Text = Language.StringByID(R.InternationalizationString.IncorrectRepeatPassword)
                            Text = Language.StringByID(StringId.IncorrectRepeatPassword)
                        }.Show(bodyView);
                    }
                    else
                    {
                        ValidPassword = true;
                        //账号有效、密码有效、验证码输入了,才能点击方式
                        if (btnGetVerificationCode.IsSelected && ValidPassword && string.IsNullOrEmpty(etVerificationCode.Text.Trim()))
                        {
                            btnRegister.IsSelected = true;
                        }
                        LoadMothed_EnableResetButton();
                    }
                }
            };
            //验证码文本框焦点变化事件
            etVerificationCode.FoucsChanged += (sender, e) => {
            etVerificationCode.FoucsChanged += (sender, e) =>
            {
                if (etVerificationCode.Foucs)
                {
                    btnVerificationCodeViewBottomLine.BackgroundColor = CSS_Color.MainColor;
@@ -220,15 +236,12 @@
                    btnVerificationCodeViewBottomLine.Height = Application.GetRealHeight(1);
                    if (etVerificationCode.Text.Length > 4)
                    {
                        //账号有效、密码有效、验证码输入了,才能点击方式
                        if (btnGetVerificationCode.IsSelected && ValidPassword && string.IsNullOrEmpty(etVerificationCode.Text.Trim()))
                        {
                            btnRegister.IsSelected = true;
                        }
                        LoadMothed_EnableResetButton();
                    }
                }
            };
        }
        /// <summary>
        /// 更改密码可见性
@@ -236,12 +249,14 @@
        void LoadEvent_ChangeTextVisble()
        {
            //密码文本可见性变化
            btnVisiblePassword.MouseUpEventHandler += (sender, e) => {
            btnVisiblePassword.MouseUpEventHandler += (sender, e) =>
            {
                btnVisiblePassword.IsSelected = !btnVisiblePassword.IsSelected;
                etPassword.SecureTextEntry = !btnVisiblePassword.IsSelected;
            };
            //重复密码文本可见性变化
            btnRepeatVisiblePassword.MouseUpEventHandler += (sender, e) => {
            btnRepeatVisiblePassword.MouseUpEventHandler += (sender, e) =>
            {
                btnRepeatVisiblePassword.IsSelected = !btnRepeatVisiblePassword.IsSelected;
                etRepeatPassword.SecureTextEntry = !btnRepeatVisiblePassword.IsSelected;
            };
@@ -252,15 +267,18 @@
        /// </summary>
        void LoadEvent_GetVerificationCode()
        {
            btnGetVerificationCode.MouseUpEventHandler += (sender, e) => {
            btnGetVerificationCode.MouseUpEventHandler += (sender, e) =>
            {
                var account = etAccount.Text.Trim();
                if (btnGetVerificationCode.IsSelected)
                {
                    //短信发送间隔60s
                    btnGetVerificationCode.IsSelected = false;
                    int time = 60;
                    new Thread(() =>
                    {
                        while (time == 0)
                    etVerificationCode.Foucs = true;
                    //获取验证码
                        int time = 60;
                    new Thread(() => {
                        while (time > 0)
                        {
                            time--;
                            Application.RunOnMainThread(() =>
@@ -273,27 +291,46 @@
                        {
                            //回复获取短信按钮事件
                            btnGetVerificationCode.IsSelected = true;
                            btnGetVerificationCode.TextID = StringId.GetVerificationCode;
                        });
                    }){ IsBackground = true}.Start();
                    new Thread(() =>
                    {
                        var result = pm.SendSms(account);
                        if (result.StateCode.ToUpper() == "SUCCESS")
                        {
                        }
                        else
                        {
                            string tipString = "Server error";
                            switch (result.StateCode)
                            {
                                case "Exist":
                                    tipString = Language.StringByID(StringId.AccountAlreadyExists);
                                    break;
                                case "SendFail":
                                    tipString = Language.StringByID(StringId.FailedToSendVerificationCode);
                                    break;
                                case "AccountNoExists":
                                    tipString = Language.StringByID(StringId.AccountNotExist);
                                    break;
                                case "Self:Net_Error":
                                    tipString = Language.StringByID(StringId.NetworkAnomaly);
                                    break;
                            }
                            Application.RunOnMainThread(() =>
                            {
                                new Tip()
                                {
                                    CloseTime = 3,
                                    Direction = AMPopTipDirection.None,
                                    Text = tipString
                                }.Show(bodyView);
                            });
                        }
                    })
                    { IsBackground = true }.Start();
                    //检查手机是否已经被方式
                    var checkPhoneResult = pm.IsExistingAccount(etAccount.Text.Trim());
                    //手机未被方式
                    if (checkPhoneResult.StateCode != HttpRequesResult.SUCCESS.ToString())
                    {
                        //获取验证码
                        pm.GetPhoneVerificationCode(etAccount.Text.Trim(), MainPage.Company);
                    }
                    else
                    {
                        //提示手机号码已经方式
                        new Tip()
                        {
                            CloseTime = 3,
                            Direction = AMPopTipDirection.None,
                            Text = Language.StringByID(R.InternationalizationString.AccountAlreadyExists)
                        }.Show(bodyView);
                    }
                }
            };
        }
@@ -301,88 +338,216 @@
        /// <summary>
        /// 加载方式按钮事件
        /// </summary>
        void LoadEvent_Register()
        void LoadEvent_Reset()
        {
            btnRegister.MouseUpEventHandler += (sender, e) =>
            btnReset.MouseUpEventHandler += (sender, e) =>
            {
                //手机方式
                if (registerType == 0)
                if (btnReset.IsSelected)
                {
                    //校验验证码
                    var validateSmsResult = pm.ValidateSmsCode(etAccount.Text.Trim(), etVerificationCode.Text.Trim());
                    //验证码校验成功
                    if (validateSmsResult.StateCode == HttpRequesResult.SUCCESS.ToString())
                    {
                        //验证账号
                        var registerPhoneResult = pm.RegisterPhone(etAccount.Text.Trim(), etPassword.Text.Trim(), Language.CurrentLanguage);
                        if (registerPhoneResult.StateCode == HttpRequesResult.SUCCESS.ToString())
                        {
                            //验证成功
                            //执行回调事件
                            callbackAction?.Invoke(etAccount.Text.Trim());
                        }
                        else
                        {
                            //验证失败
                            new Tip()
                            {
                                CloseTime = 3,
                                Text = registerPhoneResult.ErrorInfo,
                                Direction = AMPopTipDirection.None,
                            }.Show(bodyView);
                        }
                    }
                    else
                    {
                        //验证码校验失败
                        new Tip()
                        {
                            CloseTime = 3,
                            Direction = AMPopTipDirection.None,
                            Text = Language.StringByID(R.InternationalizationString.VerificationCodeWrong)
                        }.Show(bodyView);
                    }
                }
                else if (registerType == 1)
                {
                    //邮箱方式
                    //校验验证码
                    var validateSmsResult = pm.ValidateSmsCode(etAccount.Text.Trim(), etVerificationCode.Text.Trim());
                    //验证码校验成功
                    if (validateSmsResult.StateCode == HttpRequesResult.SUCCESS.ToString())
                    {
                        //方式账号
                        var registerPhoneResult = pm.RegisterPhone(etAccount.Text.Trim(), etPassword.Text.Trim(), Language.CurrentLanguage);
                        if (registerPhoneResult.StateCode == HttpRequesResult.SUCCESS.ToString())
                        {
                            //方式成功
                            //执行回调事件
                            callbackAction?.Invoke(etAccount.Text.Trim());
                        }
                        else
                        {
                            //方式失败
                            new Tip()
                            {
                                CloseTime = 3,
                                Text = registerPhoneResult.ErrorInfo,
                                Direction = AMPopTipDirection.None,
                            }.Show(bodyView);
                        }
                    }
                    else
                    {
                        //验证码校验失败
                        new Tip()
                        {
                            CloseTime = 3,
                            Direction = AMPopTipDirection.None,
                            Text = Language.StringByID(R.InternationalizationString.VerificationCodeWrong)
                        }.Show(bodyView);
                    }
                    //创建修改密码线程
                    var loginThread = LoadMothed_ResetThread();
                    waitPage = new Loading();
                    new PublicAssmebly().LoadPage_WaitPage(loginThread, bodyView, waitPage);
                }
            };
        }
        /// <summary>
        /// 加载重置密码方法
        /// </summary>
        Thread LoadMothed_ResetThread()
        {
            string account = etAccount.Text.Trim();
            string password = etPassword.Text.Trim();
            string repeatPassword = etRepeatPassword.Text.Trim();
            string verCode = etVerificationCode.Text.Trim();
            int countryIndex = 0;
            try
            {
                countryIndex = Convert.ToInt32(btnGlobalRoaming.Text.Trim().Remove('+'));
            }
            catch { }
            return new Thread(() =>
            {
                var verResult = pm.ValidatorCode(account, verCode, countryIndex);
                if (verResult.StateCode.ToUpper() == "SUCCESS")
                {
                    var resetResult = pm.ResetPassword(account, password, repeatPassword, countryIndex);
                    if (resetResult.StateCode.ToUpper() == "SUCCESS")
                    {
                        Application.RunOnMainThread(() =>
                        {
                            LoadEvent_AutoLogin();
                            callbackAction?.Invoke(account);
                        });
                    }
                    else
                    {
                        string erorrInfo = "";
                        switch (resetResult.StateCode)
                        {
                            case "PwdNoConfirm"://两次输入的密码不一致
                                erorrInfo = Language.StringByID(StringId.IncorrectRepeatPassword);
                                break;
                            case "AccountNoExists"://两次输入的密码不一致
                                erorrInfo = Language.StringByID(StringId.AccountNotExist);
                                break;
                            default:
                                erorrInfo = "Server error";
                                break;
                        }
                        Application.RunOnMainThread(() =>
                        {
                            waitPage.Hide();
                            new Tip()
                            {
                                CloseTime = 3,
                                Direction = AMPopTipDirection.None,
                                Text = erorrInfo,
                            }.Show(bodyView);
                        });
                    }
                }
                else
                {
                    string erorrInfo = "";
                    switch (verResult.StateCode)
                    {
                        case "ValidCodeAndPhoneNoEqual"://验证码错误
                            erorrInfo = Language.StringByID(StringId.VerificationCodeWrong);
                            Application.RunOnMainThread(() =>
                            {
                                btnVerificationCodeViewBottomLine.BackgroundColor = CSS_Color.AuxiliaryColor2;
                                btnVerificationCodeViewBottomLine.Height = Application.GetRealHeight(2);
                            });
                            break;
                        case "NoRecord":
                            erorrInfo = Language.StringByID(StringId.PlsGetTheVerificationCode);
                            Application.RunOnMainThread(() =>
                            {
                                btnVerificationCodeViewBottomLine.BackgroundColor = CSS_Color.AuxiliaryColor2;
                                btnVerificationCodeViewBottomLine.Height = Application.GetRealHeight(2);
                            });
                            break;
                        default:
                            erorrInfo = "Server error";
                            break;
                    }
                    Application.RunOnMainThread(() =>
                    {
                        waitPage.Hide();
                        new Tip()
                        {
                            CloseTime = 3,
                            Direction = AMPopTipDirection.None,
                            Text = erorrInfo,
                        }.Show(bodyView);
                    });
                }
            });
        }
        /// <summary>
        /// 使能修改确定按钮
        /// </summary>
        void LoadMothed_EnableResetButton()
        {
            if (!string.IsNullOrEmpty(etAccount.Text) && !string.IsNullOrEmpty(etPassword.Text) && !string.IsNullOrEmpty(etVerificationCode.Text) && (etPassword.Text.Trim() == etRepeatPassword.Text.Trim()))
            {
                btnReset.IsSelected = true;
            }
            else
            {
                btnReset.IsSelected = false;
            }
        }
        /// <summary>
        /// 住宅成功之后自动登录
        /// </summary>
        void LoadEvent_AutoLogin()
        {
            Dialog dialog = new Dialog();
            FrameLayout frame = new FrameLayout()
            {
                Gravity = Gravity.CenterHorizontal,
                Y = Application.GetRealHeight(198),
                Width = Application.GetRealWidth(288),
                Height = Application.GetRealHeight(206),
                BackgroundColor = CSS_Color.MainBackgroundColor,
                Radius = (uint)Application.GetRealWidth(12),
                BorderWidth = 0,
                BorderColor = 0x00000000,
            };
            dialog.AddChidren(frame);
            Button btnAccountText = new Button()
            {
                Gravity = Gravity.CenterHorizontal,
                Y = Application.GetRealHeight(40),
                Height = Application.GetRealHeight(17 + 14 + 14),
                IsMoreLines = true,
                TextAlignment = TextAlignment.Center,
                TextColor = CSS_Color.FirstLevelTitleColor,
                TextSize = CSS_FontSize.TextFontSize,
                //Text = "s是生生世世",
            };
            frame.AddChidren(btnAccountText);
            Button btnTipRegisterSuccess = new Button()
            {
                Gravity = Gravity.CenterHorizontal,
                Y = Application.GetRealHeight(123),
                Height = Application.GetRealHeight(30),
                TextAlignment = TextAlignment.Center,
                TextColor = CSS_Color.MainColor,
                TextSize = CSS_FontSize.SubheadingFontSize,
                TextID = StringId.PasswordChangeSuccessfully,
            };
            frame.AddChidren(btnTipRegisterSuccess);
            Button btnAutoLoginTip = new Button()
            {
                Gravity = Gravity.CenterHorizontal,
                Y = btnTipRegisterSuccess.Bottom,
                Height = Application.GetRealHeight(17 + 8),
                TextAlignment = TextAlignment.Center,
                TextColor = CSS_Color.PromptingColor1,
                TextSize = CSS_FontSize.PromptFontSize_FirstLevel,
                TextID = StringId.AutomaticallyLogin,
            };
            //frame.AddChidren(btnAutoLoginTip);
            Button btnHeadImage = new Button()
            {
                Gravity = Gravity.CenterHorizontal,
                Y = Application.GetRealHeight(150),
                Width = Application.GetRealWidth(84),
                Height = Application.GetRealWidth(84),
                Radius = (uint)Application.GetRealWidth(42),
                BorderColor = 0x00000000,
                BorderWidth = 0,
                UnSelectedImagePath = "LoginIcon/2.png",
            };
            dialog.AddChidren(btnHeadImage);
            dialog.Show();
            new Thread(() =>
            {
                Thread.Sleep(1500);
                Application.RunOnMainThread(() =>
                {
                    dialog.Close();
                    this.Close();
                });
            })
            { IsBackground = true }.Start();
        }
    }
}