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 RegisterPage { /// /// 加载事件列表 /// void LoadEventList() { LoadPage_SwitchRegisterType(); LoadEvent_EditTextFcousChange(); LoadEvent_ChangeTextVisble(); LoadEvent_GetVerificationCode(); LoadEvent_Register(); LoadEvent_LimtPasswordLength(); LoadEvent_TextChange(); LoadEvent_Server(); //var areaCodeList = pm.GetAreaCode(); } /// /// 使能修改注册按钮 /// 有内容才显示注册按钮 /// void CheckEnableRegisterButton() { if (!string.IsNullOrEmpty(etAccount.Text) && !string.IsNullOrEmpty(etPassword.Text) && !string.IsNullOrEmpty(etVerificationCode.Text) && (etPassword.Text.Trim() == etRepeatPassword.Text.Trim())) { btnRegister.IsSelected = true; } else { btnRegister.IsSelected = false; } //Utlis.WriteLine(" btnRegister.IsSelected:" + btnRegister.IsSelected.ToString()); } /// /// 加载文本变化事件 /// 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; } } CheckEnableRegisterButton(); }; etVerificationCode.TextChangeEventHandler = (sender, e) => { CheckEnableRegisterButton(); }; } /// /// 切换注册类型 /// void LoadPage_SwitchRegisterType() { //选择手机注册 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_Mail.Visible = false; btnGetVerificationCode_Phone.Visible = true; 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_Mail.Visible = true; btnGetVerificationCode_Phone.Visible = false; 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_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.Trim().Length > 0) { if (registerType == 0) { if (!Utlis.CheckPhoneNumber(etAccount.Text.Trim(), phoneZoneCode)) { HDLCommon.Current.BottomLineShowType(btnAccountViewBottomLine, BottomLineType.Error); btnGetVerificationCode_Phone.IsSelected = false; 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; } //账号有效、密码有效、验证码输入了,才能点击注册 if (ValidPassword && !string.IsNullOrEmpty(etVerificationCode.Text.Trim())) { btnRegister.IsSelected = true; } } } else if (registerType == 1) { //邮箱注册-验证邮箱是否正确 if (!Utlis.CheckEmail(etAccount.Text.Trim())) { HDLCommon.Current.BottomLineShowType(btnAccountViewBottomLine, BottomLineType.Error); btnGetVerificationCode_Mail.IsSelected = false; 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; } //账号有效、密码有效、验证码输入了,才能点击注册 if (ValidPassword && string.IsNullOrEmpty(etVerificationCode.Text.Trim())) { btnRegister.IsSelected = true; } } } } } }; //密码文本框焦点变化事件 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;//没输入不检测提示 //需要输入6位以上的密码 if (etPassword.Text.Length < 6 || etPassword.Text.Length > 13) { HDLCommon.Current.BottomLineShowType(btnPasswordViewBottomLine, BottomLineType.Error); new Tip() { CloseTime = 1, Direction = AMPopTipDirection.None, Text = Language.StringByID(StringId.PlsRegisterPassword) }.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().Length > 5) { 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), MaxWidth = Application.GetRealWidth(300), }.Show(bodyView); } else { ValidPassword = true; //账号有效、密码有效、验证码输入了,才能点击注册 if (ValidPassword && !string.IsNullOrEmpty(etVerificationCode.Text.Trim())) { btnRegister.IsSelected = true; } } } } }; //验证码文本框焦点变化事件 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 > 1) { //账号有效、密码有效、验证码输入了,才能点击注册 if (ValidPassword) { btnRegister.IsSelected = true; } } } }; } /// /// 限制密码文本库输入长度 /// void LoadEvent_LimtPasswordLength() { etPassword.TextChangeEventHandler = (sender, e) => { if (etPassword.Text.Length > 16) { etPassword.Text = etPassword.Text.Remove(15); } CheckEnableRegisterButton(); }; etRepeatPassword.TextChangeEventHandler = (sender, e) => { if (etRepeatPassword.Text.Length > 16) { etRepeatPassword.Text = etRepeatPassword.Text.Remove(15); } CheckEnableRegisterButton(); }; } /// /// 更改密码可见性 /// 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 LoadEvent_GetVerificationCode() { EventHandler eventHandler = (sender, e) => { if ((sender as Button).IsSelected) { //判断是否选择了服务器,选择了才能发送验证码 if (CheckIfSelectServer() == false) return; string account = etAccount.Text.Trim(); int time = 60; //加载Loading效果 var waitPage = new Loading(); bodyView.AddChidren(waitPage); waitPage.Start(Language.StringByID(StringId.PleaseWait)); new Thread(() => { try { //1.先检查账号是否注册过 var result = pm.GetRegionByAccount(account); //2.账号不存在,才允许继续注册 if (result.Code == StateCode.ACCOUNT_NOT_EXIST) { //账号不存在 未注册允许发送验证码注册 //2.2 获取验证码 ResponsePackNew resultObj; if (registerType == 1)//邮箱 { resultObj = pm.VerificationCodeSend(VerifyType.REGISTER_USER, account); } else { resultObj = pm.VerificationCodeSend(VerifyType.REGISTER_USER, account, true, phoneZoneCode); } if (resultObj.Code != StateCode.SUCCESS) { // 提示错误 IMessageCommon.Current.ShowErrorInfoAlter(resultObj.Code); } else { //2.1 开始倒计时 Application.RunOnMainThread(() => { //短信发送间隔60s (sender as Button).IsSelected = false; }); 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(); } } else if (result.Code.ToUpper() == StateCode.SUCCESS) { //3.提示账号已存在,无法重复注册 Utlis.ShowAlertOnMainThread(Language.StringByID(StringId.AccountAlreadyUse)); } else { //4.提示其它异常错误 IMessageCommon.Current.ShowErrorInfoAlter(result.Code); } } catch { } finally { Application.RunOnMainThread(() => { if (waitPage != null) { waitPage.RemoveFromParent(); waitPage = null; } }); } }) { IsBackground = true }.Start(); //(sender as Button).IsSelected = false; //string account = etAccount.Text.Trim(); ////短信发送间隔60s //int time = 60; //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(); //new Thread(() => //{ // ResponsePackNew resultObj; // // 获取验证码 // if (registerType == 1)//邮箱 // { // resultObj = pm.VerificationCodeSend(VerifyType.REGISTER_USER, account); // } // else // { // resultObj = pm.VerificationCodeSend(VerifyType.REGISTER_USER, account, true, phoneZoneCode); // } // if (resultObj.Code != StateCode.SUCCESS_CODE) // { // // 提示错误 // IMessageCommon.Current.ShowErrorInfoAlter(NewAPI.API_POST_Verification_Send, resultObj.Code); // } //}) //{ IsBackground = true }.Start(); } }; btnGetVerificationCode_Phone.MouseDownEventHandler = eventHandler; btnGetVerificationCode_Mail.MouseDownEventHandler = eventHandler; } /// /// 加载注册按钮事件 /// void LoadEvent_Register() { btnRegister.MouseUpEventHandler = (sender, e) => { if (btnRegister.IsSelected) { //判断是否选择了服务器,选择了才能发送验证码 if (CheckIfSelectServer() == false) return; //检测账号 if (!CheckAccount()) return; //检测密码 if (!CheckPassword()) return; //检测验证码 if (!CheckVerificationCode()) return; waitPage = new Loading(); new PublicAssmebly().LoadPage_WaitPage(LoadMethod_RegisterThread(), bodyView, waitPage); } }; } /// /// 加载注册方法 /// Thread LoadMethod_RegisterThread() { string account = etAccount.Text.Trim(); string password = etPassword.Text.Trim(); string entryPassword = etRepeatPassword.Text.Trim(); string verCode = etVerificationCode.Text.Trim(); return new Thread(() => { try { //校验验证码并注册账号 var isPhone = registerType == 0; var validateSmsResult = pm.ValidataCodeAndRegister(account, password, verCode, isPhone); if (validateSmsResult.Code == StateCode.SUCCESS) { //注册成功 //执行回调事件 //callbackAction?.Invoke(account); Application.RunOnMainThread(() => { Close(); LoadEvent_AutoLogin(account, password); }); } else// 注册失败 { // 提示错误 IMessageCommon.Current.ShowErrorInfoAlter(validateSmsResult.Code); Application.RunOnMainThread(() => { if (validateSmsResult.Code == StateCode.VERIFICATION_CODE_WRONG) { HDLCommon.Current.BottomLineShowType(btnVerificationCodeViewBottomLine, BottomLineType.Error); } }); } } catch (Exception ex) { MainPage.Log("Exception 1 : " + ex.Message); } finally { Application.RunOnMainThread(() => { waitPage.Hide(); waitPage.RemoveFromParent(); }); } }); } /// /// 加载服务器选择按钮事件 /// void LoadEvent_Server() { //判断之前是否选择过 if (OnAppConfig.Instance.GlobalRegion != null && !string.IsNullOrEmpty(OnAppConfig.Instance.GlobalRegion.regionUrl)) { SetServerText(); } EventHandler eventHandler = (sender, e) => { Action selectAction = () => { //服务器选择过标记为true SetServerText(); }; new SelectServerDialog(selectAction).LoadPage(); }; btnServerGo.MouseUpEventHandler = eventHandler; btnServerText.MouseUpEventHandler = eventHandler; } /// /// 检测是否选择了服务器 /// /// private bool CheckIfSelectServer() { if (isSelectServer == false) { //请先选择国家/区域 Utlis.ShowTip(Language.StringByID(StringId.PleaseSelectCountryOrRegion)); ShowServerBottomLineState(true); return false; } return true; } /// /// 服务器下划线样式 /// /// void ShowServerBottomLineState(bool isError) { if (isError) { HDLCommon.Current.BottomLineShowType(btnServerBottomLine, BottomLineType.Error); } else { HDLCommon.Current.BottomLineShowType(btnServerBottomLine, BottomLineType.Normal); } } /// /// /// void SetServerText() { //服务器选择过标记为true isSelectServer = true; ShowServerBottomLineState(false); btnServerText.TextColor = CSS_Color.FirstLevelTitleColor; btnServerText.Text = OnAppConfig.Instance.GlobalRegion.regionName; } /// /// 检测账号 /// /// 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; } } }