using System; using System.Text.RegularExpressions; using System.Threading; using HDL_ON.DAL.Server; using HDL_ON.UI.CSS; using Shared; namespace HDL_ON.UI.UI1Login { public partial class ForgetPasswordPage { /// /// 加载事件列表 /// void LoadEventList() { LoadPage_SwitchResetMode(); LoadEvent_EditTextFcousChange(); LoadEvent_ChangeTextVisble(); LoadEvent_GetVerificationCode(); LoadEvent_Reset(); LoadEvent_TextChange(); } /// /// 切换修改方式 /// void LoadPage_SwitchResetMode() { //选择手机方式 btnPhoneLogin.MouseUpEventHandler += (sender, e) => { if (registerType == 0) return; if (!string.IsNullOrEmpty(etAccount.Text.Trim())) { //记录之前的邮箱 registerEmail = etAccount.Text.Trim(); } etAccount.IsNumberKeyboardType = true; etAccount.Text = registerPhone; etPassword.Text = ""; etRepeatPassword.Text = ""; #region 切换选中按钮 btnGetVerificationCode_Phone.Visible = true; btnGetVerificationCode_Mail.Visible = false; btnEmailLogin.TextColor = CSS_Color.PromptingColor1; btnEmailLogin.TextSize = CSS_FontSize.TextFontSize; btnPhoneLogin.TextColor = CSS_Color.MainColor; btnPhoneLogin.TextSize = CSS_FontSize.EmphasisFontSize_Secondary; etAccount.PlaceholderText = Language.StringByID(StringId.PlsEntryPhoneNumber); #endregion #region 切换方式方式及图标 registerType = 0; if (btnAccountIcon.Parent != null) { btnAccountIcon.RemoveFromParent(); } accountView.AddChidren(btnGlobalRoaming); #endregion }; //选择邮箱方式 btnEmailLogin.MouseUpEventHandler += (sender, e) => { if (registerType == 1) return; if (!string.IsNullOrEmpty(etAccount.Text.Trim())) { //记录之前的手机号 registerPhone = etAccount.Text.Trim(); } etAccount.IsNumberKeyboardType = false; etAccount.SecureTextEntry = false;//2020-12-10 解决Android数字切换回路普通键盘变加密问题 etAccount.Text = registerEmail; etPassword.Text = ""; etRepeatPassword.Text = ""; #region 切换选中按钮 btnGetVerificationCode_Phone.Visible = false; btnGetVerificationCode_Mail.Visible = true; 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 切换修改方式及图标 registerType = 1; if (btnGlobalRoaming.Parent != null) { btnGlobalRoaming.RemoveFromParent(); } accountView.AddChidren(btnAccountIcon); #endregion }; } /// /// 加载文本变化事件 /// void LoadEvent_TextChange() { etAccount.TextChangeEventHandler += (sender, e) => { //Regex reg = new Regex(@"^[1]+\d{10}"); //var mFalg = reg.Match(etAccount.Text.Trim()); if (registerType == 0)//手机获取验证码按钮生效条件 { if (!Utlis.CheckPhoneNumber(etAccount.Text.Trim(), phoneZoneCode)) { btnGetVerificationCode_Phone.IsSelected = false; } else { if (btnGetVerificationCode_Phone.Text == Language.StringByID(StringId.GetVerificationCode)) btnGetVerificationCode_Phone.IsSelected = true; } } else//邮箱获取验证码按钮生效条件 { if (!Utlis.CheckEmail(etAccount.Text.Trim())) { btnGetVerificationCode_Mail.IsSelected = false; } else { if (btnGetVerificationCode_Mail.Text == Language.StringByID(StringId.GetVerificationCode)) btnGetVerificationCode_Mail.IsSelected = true; } } LoadMothed_EnableResetButton(); }; //etVerificationCode.TextChangeEventHandler = (sender, e) => { // if (etVerificationCode.Text.Length > 1) // { // LoadMothed_EnableResetButton(); // } //}; Action textChangeEventHandler = (view, textStr) => { LoadMothed_EnableResetButton(); }; //etAccount.TextChangeEventHandler += textChangeEventHandler; etPassword.TextChangeEventHandler += textChangeEventHandler; etRepeatPassword.TextChangeEventHandler += textChangeEventHandler; etVerificationCode.TextChangeEventHandler += textChangeEventHandler; } /// /// 加载文本框焦点变化事件 /// void LoadEvent_EditTextFcousChange() { //账号文本框焦点变化事件 etAccount.FoucsChanged += (sender, e) => { if (etAccount.Foucs) { HDLCommon.Current.BottomLineShowType(btnAccountViewBottomLine, BottomLineType.GotFocus); } else { if (isHitBack) return;//点击返回关闭页面不检测提示 HDLCommon.Current.BottomLineShowType(btnAccountViewBottomLine, BottomLineType.Normal); if (etAccount.Text.Length == 0) return;//没输入不检测提示 //手机方式-验证手机号码是否正确 if (registerType == 0) { btnGetVerificationCode_Phone.IsSelected = false; if (!Utlis.CheckPhoneNumber(etAccount.Text.Trim(), phoneZoneCode)) { HDLCommon.Current.BottomLineShowType(btnAccountViewBottomLine, BottomLineType.Error); new Tip() { CloseTime = 1, Text = Language.StringByID(StringId.PlsEntryCorrectMobilNeumber), Direction = AMPopTipDirection.None, }.Show(bodyView); } else { if (btnGetVerificationCode_Phone.Text == Language.StringByID(StringId.GetVerificationCode)) { btnGetVerificationCode_Phone.IsSelected = true; } LoadMothed_EnableResetButton(); } } else if (registerType == 1) { btnGetVerificationCode_Mail.IsSelected = false; //邮箱方式-验证邮箱是否正确 if (!Utlis.CheckEmail(etAccount.Text.Trim())) { HDLCommon.Current.BottomLineShowType(btnAccountViewBottomLine, BottomLineType.Error); new Tip() { CloseTime = 1, Text = Language.StringByID(StringId.PlsEntryCorrectEmailAddress), Direction = AMPopTipDirection.None, }.Show(bodyView); } else { if (btnGetVerificationCode_Mail.Text == Language.StringByID(StringId.GetVerificationCode)) { btnGetVerificationCode_Mail.IsSelected = true; } LoadMothed_EnableResetButton(); } } } }; //密码文本框焦点变化事件 etPassword.FoucsChanged += (sender, e) => { if (etPassword.Foucs) { HDLCommon.Current.BottomLineShowType(btnPasswordViewBottomLine, BottomLineType.GotFocus); } else { if (isHitBack) return;//点击返回关闭页面不检测提示 HDLCommon.Current.BottomLineShowType(btnPasswordViewBottomLine, BottomLineType.Normal); if (etPassword.Text.Length == 0) return;//没输入不检测提示 //校验密码是否符合要求 if (etPassword.Text.Trim().Length < 6 || etPassword.Text.Trim().Length > 13) { HDLCommon.Current.BottomLineShowType(btnPasswordViewBottomLine, BottomLineType.Error); new Tip() { CloseTime = 1, Direction = AMPopTipDirection.None, Text = Language.StringByID(StringId.PasswordIsUnqualified) }.Show(bodyView); } } }; //确认密码文本框焦点变化事件 etRepeatPassword.FoucsChanged += (sender, e) => { if (etRepeatPassword.Foucs) { HDLCommon.Current.BottomLineShowType(btnRepeatPasswordViewBottomLine, BottomLineType.GotFocus); } else { if (isHitBack) return;//点击返回关闭页面不检测提示 HDLCommon.Current.BottomLineShowType(btnRepeatPasswordViewBottomLine, BottomLineType.Normal); //校验两次输入的密码是否一致 if (etPassword.Text.Trim() != etRepeatPassword.Text.Trim()) { HDLCommon.Current.BottomLineShowType(btnRepeatPasswordViewBottomLine, BottomLineType.Error); new Tip() { CloseTime = 1, Direction = AMPopTipDirection.None, Text = Language.StringByID(StringId.IncorrectRepeatPassword) }.Show(bodyView); } else { LoadMothed_EnableResetButton(); } } }; //验证码文本框焦点变化事件 etVerificationCode.FoucsChanged += (sender, e) => { if (etVerificationCode.Foucs) { HDLCommon.Current.BottomLineShowType(btnVerificationCodeViewBottomLine, BottomLineType.GotFocus); } else { if (isHitBack) return;//点击返回关闭页面不检测提示 HDLCommon.Current.BottomLineShowType(btnVerificationCodeViewBottomLine, BottomLineType.Normal); if (etVerificationCode.Text.Length > 4) { LoadMothed_EnableResetButton(); } } }; } /// /// 更改密码可见性 /// void LoadEvent_ChangeTextVisble() { //密码文本可见性变化 btnVisiblePassword.MouseUpEventHandler += (sender, e) => { btnVisiblePassword.IsSelected = !btnVisiblePassword.IsSelected; etPassword.SecureTextEntry = !btnVisiblePassword.IsSelected; }; //重复密码文本可见性变化 btnRepeatVisiblePassword.MouseUpEventHandler += (sender, e) => { btnRepeatVisiblePassword.IsSelected = !btnRepeatVisiblePassword.IsSelected; etRepeatPassword.SecureTextEntry = !btnRepeatVisiblePassword.IsSelected; }; } /// /// 检测当前配置域名是否一致,不一致则替换 /// /// void CheckAndSetUserRequestHost(ResponsePackNew result) { try { var mGlobalRegionListObj = Newtonsoft.Json.JsonConvert.DeserializeObject(result.Data.ToString()); if (OnAppConfig.Instance.RequestHttpsHost != mGlobalRegionListObj.regionUrl) { OnAppConfig.Instance.RequestHttpsHost = mGlobalRegionListObj.regionUrl; OnAppConfig.Instance.GlobalRegion = mGlobalRegionListObj; OnAppConfig.Instance.SaveConfig(); } } catch { } } /// /// 获取验证码 /// void LoadEvent_GetVerificationCode() { EventHandler eventHandler = (sender, e) => { var account = etAccount.Text.Trim(); if ((sender as Button).IsSelected) { //加载Loading效果 var waitPage = new Loading(); bodyView.AddChidren(waitPage); waitPage.Start(Language.StringByID(StringId.PleaseWait)); int time = 60; new Thread(() => { try { //1.先检查账号是否注册过 var result = pm.GetRegionByAccount(account); if (result.Code != StateCode.SUCCESS) { IMessageCommon.Current.ShowErrorInfoAlter(result.Code); return; } else { //2.1检测当前配置域名是否一致,不一致则替换 CheckAndSetUserRequestHost(result); //2.2已经注册过,发送验证码找回密码 ResponsePackNew resultObj; //2.3请求获取验证码 if (registerType == 1)//邮箱 { resultObj = pm.VerificationCodeSend(VerifyType.FIND_PASSWORD, account); } else { resultObj = pm.VerificationCodeSend(VerifyType.FIND_PASSWORD, account, true, phoneZoneCode); } if (resultObj.Code != StateCode.SUCCESS) { // 提示错误 IMessageCommon.Current.ShowErrorInfoAlter(resultObj.Code); } else { //3.发送验证码成功,开始计时 Application.RunOnMainThread(() => { //短信发送间隔60s (sender as Button).IsSelected = false; etVerificationCode.Foucs = true; }); //2.1获取验证码倒计时 new Thread(() => { while (time > 0) { time--; Application.RunOnMainThread(() => { (sender as Button).Text = time.ToString() + "s"; }); Thread.Sleep(1000); } Application.RunOnMainThread(() => { //回复获取短信按钮事件 (sender as Button).IsSelected = true; (sender as Button).TextID = StringId.GetVerificationCode; }); }) { IsBackground = true }.Start(); } } } catch { } finally { Application.RunOnMainThread(() => { if (waitPage != null) { waitPage.RemoveFromParent(); waitPage = null; } }); } }) { IsBackground = true }.Start(); } }; btnGetVerificationCode_Mail.MouseUpEventHandler = eventHandler; btnGetVerificationCode_Phone.MouseUpEventHandler = eventHandler; } /// /// 加载方式按钮事件 /// void LoadEvent_Reset() { btnReset.MouseUpEventHandler += (sender, e) => { if (btnReset.IsSelected) { //检测账号 if (!CheckAccount()) return; //检测密码 if (!CheckPassword()) return; //检测验证码 if (!CheckVerificationCode()) return; //创建修改密码线程 var loginThread = LoadMothed_ResetThread(); waitPage = new Loading(); new PublicAssmebly().LoadPage_WaitPage(loginThread, bodyView, waitPage); } }; } /// /// 加载重置密码方法 /// 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 isPhone = registerType == 0; var resultObj = pm.ForgetPassword(account, password, verCode, isPhone); if (resultObj.Code == StateCode.SUCCESS) { Application.RunOnMainThread(() => { if (waitPage != null) { waitPage.Hide(); } ShowAutoLoginDialog(account, password, isPhone); }); } else { Application.RunOnMainThread(() => { if (waitPage != null) { waitPage.Hide(); } // 验证码错误 警告提示 if (resultObj.Code == StateCode.VERIFICATION_CODE_WRONG) { HDLCommon.Current.BottomLineShowType(btnVerificationCodeViewBottomLine, BottomLineType.Error); } }); // 提示错误 IMessageCommon.Current.ShowErrorInfoAlter(resultObj.Code); } }); } /// /// 使能修改确定按钮 /// 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; } } /// /// 检测账号 /// /// bool CheckAccount() { //手机方式-验证手机号码是否正确 if (registerType == 0) { if (!Utlis.CheckPhoneNumber(etAccount.Text.Trim(), phoneZoneCode)) { Utlis.ShowTip(Language.StringByID(StringId.PlsEntryCorrectMobilNeumber)); } else { return true; } } else if (registerType == 1) { //邮箱方式-验证邮箱是否正确 if (!Utlis.CheckEmail(etAccount.Text.Trim())) { Utlis.ShowTip(Language.StringByID(StringId.PlsEntryCorrectEmailAddress)); } else { return true; } } return false; } /// /// 检测密码是否正确 /// /// bool CheckPassword() { //校验密码是否符合要求 if (etPassword.Text.Trim().Length < 6 || etPassword.Text.Trim().Length > 13) { Utlis.ShowTip(Language.StringByID(StringId.PasswordIsUnqualified)); return false; } if (etPassword.Text.Trim() != etRepeatPassword.Text.Trim()) { Utlis.ShowTip(Language.StringByID(StringId.IncorrectRepeatPassword)); return false; } return true; } /// /// 检测验证码是否输入 /// /// bool CheckVerificationCode() { if (string.IsNullOrEmpty(etVerificationCode.Text)) { Utlis.ShowTip(Language.StringByID(StringId.PlsEntryVerificationCode)); return false; } return true; } /// /// 显示自动自动登录事件 /// void ShowAutoLoginDialog(string account, string password, bool isPhone) { Dialog dialog = new Dialog(); FrameLayout dialogView = new FrameLayout(); dialogView.MouseUpEventHandler = (sender, e) => { dialog.Close(); }; dialog.AddChidren(dialogView); FrameLayout contentView = new FrameLayout() { Gravity = Gravity.CenterHorizontal, Y = Application.GetRealWidth(200), Width = Application.GetRealWidth(288), Height = Application.GetRealWidth(270), Radius = (uint)Application.GetRealWidth(6), BackgroundColor = CSS_Color.MainBackgroundColor, }; dialogView.AddChidren(contentView); contentView.Y = (dialogView.Height - contentView.Height) / 2; Button btnTitleIcon = new Button() { X = Application.GetRealWidth(108), Y = contentView.Y - Application.GetRealWidth(71), Width = Application.GetRealWidth(160), Height = Application.GetRealWidth(160), UnSelectedImagePath = "Public/Dialog/DialogTipTitleIcon_1.png" }; dialogView.AddChidren(btnTitleIcon); btnTitleIcon.MouseUpEventHandler = (sender, e) => { dialog.Close(); }; Button btnMsg = new Button() { Gravity = Gravity.CenterHorizontal, Y = Application.GetRealWidth(88), Width = Application.GetRealWidth(220), Height = Application.GetRealWidth(44), TextColor = CSS_Color.MainColor, TextSize = CSS_FontSize.SubheadingFontSize, TextID = StringId.ModifySuccess }; contentView.AddChidren(btnMsg); Button btnMsg2 = new Button() { Gravity = Gravity.CenterHorizontal, Y = btnMsg.Bottom + Application.GetRealWidth(8), Width = Application.GetRealWidth(220), Height = Application.GetRealWidth(60), TextColor = CSS_Color.PromptingColor1, TextSize = CSS_FontSize.PromptFontSize_FirstLevel, TextID = StringId.YourPasswordHasBeenChanged, TextAlignment = TextAlignment.TopCenter, IsMoreLines = true }; contentView.AddChidren(btnMsg2); Button btnSkipBindPage = new Button() { Gravity = Gravity.CenterHorizontal, Y = Application.GetRealWidth(194), Width = Application.GetRealWidth(220), Height = Application.GetRealWidth(44), TextAlignment = TextAlignment.Center, Radius = (uint)Application.GetRealWidth(22), BackgroundColor = CSS_Color.MainColor, TextID = StringId.Login, TextSize = CSS_FontSize.SubheadingFontSize, TextColor = CSS_Color.MainBackgroundColor, }; contentView.AddChidren(btnSkipBindPage); btnSkipBindPage.MouseUpEventHandler = (sender, e) => { dialog.Close(); this.Close(); AutoLoginAction?.Invoke(account, password, isPhone); }; dialog.Show(); } } }