From 7167334c0e89dd84827d59e726123d14776e3a09 Mon Sep 17 00:00:00 2001 From: 陈嘉乐 <cjl@hdlchina.com.cn> Date: 星期二, 16 六月 2020 11:14:13 +0800 Subject: [PATCH] 2020-06-16-1 --- HDL_ON/UI/UI1-Login/LoginPageBLL.cs | 522 ++++++++++++++++++++++++++++++++++++++++++++------------- 1 files changed, 402 insertions(+), 120 deletions(-) diff --git a/HDL_ON/UI/UI1-Login/LoginPageBLL.cs b/HDL_ON/UI/UI1-Login/LoginPageBLL.cs index d788099..b3399d7 100644 --- a/HDL_ON/UI/UI1-Login/LoginPageBLL.cs +++ b/HDL_ON/UI/UI1-Login/LoginPageBLL.cs @@ -1,8 +1,10 @@ 锘縰sing System; +using System.Text.RegularExpressions; using System.Threading; -using HDL_ON.DAL.Server; +using System.Collections.Generic; using HDL_ON.UI.CSS; using Shared; +using HDL_ON.Entity; namespace HDL_ON.UI.UI1Login { @@ -17,11 +19,11 @@ LoadPage_SwitchLoginType(); LoadMethod_VisiblePassword(); LoadPage_SwitchLoginMode(); - LoadMethod_LoginMethod(); + LoadEvent_Login(); LoadPage_SelectionEditText(); LoadPage_RegisterPage(); GetVerificationCode(); - + LoadMethod_ForgetPassword(); } /// <summary> @@ -31,33 +33,113 @@ { btnGetVerificationCode.MouseUpEventHandler += (sender, e) => { -#if DEBUG - etAccount.Text = "17576024298"; -#endif - string phoneNumber = etAccount.Text.Trim(); - btnGetVerificationCode.Enable = false; - btnGetVerificationCode.TextColor = CSS_Color.PromptingColor1; - int time = 60; - new Thread(() => + if (btnGetVerificationCode.IsSelected) { - while (time != 0) + string phoneNumber = etAccount.Text.Trim(); + if (string.IsNullOrEmpty(phoneNumber)) { - time--; + var tip = new Tip() + { + Text = Language.StringByID(StringId.PlsEntryPhoneNumber), + CloseTime = 3, + Direction = AMPopTipDirection.None + }; + tip.Show(bodyView); + + btnAccountViewBottomLine.BackgroundColor = CSS_Color.AuxiliaryColor2; + btnAccountViewBottomLine.Height = Application.GetRealHeight(2); + return; + } + if (!Regex.IsMatch(account, @"^[1]+\d{10}") || (account.Length != 11)) + { + var tip = new Tip() + { + Text = Language.StringByID(StringId.PlsEntryCorrectMobilNeumber), + CloseTime = 3, + Direction = AMPopTipDirection.None + }; + tip.Show(bodyView); + + btnAccountViewBottomLine.BackgroundColor = CSS_Color.AuxiliaryColor2; + btnAccountViewBottomLine.Height = Application.GetRealHeight(2); + return; + } + btnGetVerificationCode.IsSelected = false ; + btnGetVerificationCode.TextColor = CSS_Color.PromptingColor1; + int time = 60; + new Thread(() => + { + while (time > 0) + { + time--; + Application.RunOnMainThread(() => + { + btnGetVerificationCode.Text = time.ToString() + "s"; + }); + Thread.Sleep(1000); + } Application.RunOnMainThread(() => { - btnGetVerificationCode.Text = time.ToString() + "s"; + btnGetVerificationCode.IsSelected = true; + btnGetVerificationCode.TextID = StringId.GetVerificationCode; }); - Thread.Sleep(1000); - } - }) - { IsBackground = true }.Start(); - //妫�鏌ユ墜鏈烘槸鍚﹀凡缁忚娉ㄥ唽 - var checkPhoneResult = pm.IsExistingAccount(etAccount.Text.Trim()); - //鎵嬫満宸茬粡琚敞鍐� - if (checkPhoneResult.StateCode == HttpRequesResult.SUCCESS.ToString()) - { - //鑾峰彇楠岃瘉鐮� - pm.GetPhoneVerificationCode(phoneNumber,MainPage.Company); + }) + { IsBackground = true }.Start(); + new Thread(() => + { + //鑾峰彇楠岃瘉鐮� + var result = pm.GetPhoneLoginVerCode(phoneNumber); + if (result.StateCode.ToUpper() == "SUCCESS") + { + } + //鐧诲綍澶辫触 + else + { + string tipStr = "Sever erorr"; + switch (result.StateCode.ToUpper()) + { + 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 "SENDFAIL": + tipStr = Language.StringByID(StringId.FailedToSendVerificationCode); + Application.RunOnMainThread(() => + { + btnAccountViewBottomLine.BackgroundColor = CSS_Color.AuxiliaryColor2; + btnAccountViewBottomLine.Height = Application.GetRealHeight(2); + }); + break; + case "Self:Net_Error": + tipStr = Language.StringByID(StringId.NetworkAnomaly); + break; + } + Application.RunOnMainThread(() => + { + //鎻愮ず鍘熷洜 + var tip = new Tip() + { + Text = tipStr, + CloseTime = 3, + Direction = AMPopTipDirection.None + }; + tip.Show(bodyView); + }); + } + }) + { IsBackground = true }.Start(); } }; } @@ -75,11 +157,11 @@ btnEmailLogin.TextSize = CSS_FontSize.TextFontSize; btnPhoneLogin.TextColor = CSS_Color.MainColor; btnPhoneLogin.TextSize = CSS_FontSize.EmphasisFontSize_Secondary; - etAccount.PlaceholderText = Language.StringByID(R.InternationalizationString.PlsEntryCorrectMobilNeumber); + etAccount.PlaceholderText = Language.StringByID(StringId.PlsEntryPhoneNumber); #endregion #region 鍒囨崲鐧诲綍鏂瑰紡鍙婂浘鏍� - logintType = 0; + loginType = 0; if (btnAccountIcon.Parent != null) { btnAccountIcon.RemoveFromParent(); @@ -98,11 +180,11 @@ btnPhoneLogin.TextSize = CSS_FontSize.TextFontSize; btnEmailLogin.TextColor = CSS_Color.MainColor; btnEmailLogin.TextSize = CSS_FontSize.EmphasisFontSize_Secondary; - etAccount.PlaceholderText = Language.StringByID(R.InternationalizationString.PlsEntryEmailAddress); + etAccount.PlaceholderText = Language.StringByID(StringId.PlsEntryEmailAddress); #endregion #region 鍒囨崲鐧诲綍绫诲瀷鍙婂浘鏍� - logintType = 1; + loginType = 1; if (btnGlobalRoaming.Parent != null) { btnGlobalRoaming.RemoveFromParent(); @@ -113,7 +195,7 @@ //閭鍙湁瀵嗙爜鐧诲綍妯″紡 logintMode = 0; //瀵嗙爜鐧诲綍 - btnSwitchLoginMode.TextID = R.InternationalizationString.VerificationCodeLogin; + btnSwitchLoginMode.TextID = StringId.VerificationCodeLogin; passwordView.AddChidren(btnVisiblePassword); passwordView.AddChidren(btnDividingLineVertical_PasswordView2); passwordView.AddChidren(btnForgetPassword); @@ -144,9 +226,10 @@ //瀵嗙爜鐧诲綍 if (logintMode == 0) { - btnSwitchLoginMode.TextID = R.InternationalizationString.VerificationCodeLogin; + 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) @@ -159,8 +242,13 @@ //楠岃瘉鐮佺櫥褰� else if (logintMode == 1) { - btnSwitchLoginMode.TextID = R.InternationalizationString.PasswordLogin; + if (Regex.IsMatch(account, @"^[1]+\d{10}") && (account.Length == 11)) + { + btnGetVerificationCode.IsSelected = true; + } + btnSwitchLoginMode.TextID = StringId.PasswordLogin; passwordView.AddChidren(btnGetVerificationCode); + etPassword.PlaceholderText = Language.StringByID(StringId.PlsEntryVerificationCode); btnPasswordIcon.IsSelected = true; if (btnVisiblePassword.Parent != null) { @@ -181,7 +269,7 @@ } /// <summary> - /// 鏂囨湰妗嗛�変腑浜嬩欢 + /// 鏂囨湰妗嗙劍鐐瑰彉鍖栦簨浠� /// </summary> void LoadPage_SelectionEditText() { @@ -197,6 +285,47 @@ { btnAccountViewBottomLine.BackgroundColor = CSS_Color.DividingLineColor; btnAccountViewBottomLine.Height = Application.GetRealHeight(1); + account = etAccount.Text.Trim(); + if (account.Length == 0) + return; + if (loginType == 0) + { + if (!Regex.IsMatch(account, @"^[1]+\d{10}") || (account.Length != 11)) + { + var tip = new Tip() + { + Text = Language.StringByID(StringId.PlsEntryCorrectMobilNeumber), + CloseTime = 3, + Direction = AMPopTipDirection.None + }; + tip.Show(bodyView); + + 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})+")) + { + var tip = new Tip() + { + Text = Language.StringByID(StringId.PlsEntryCorrectEmailAddress), + CloseTime = 3, + Direction = AMPopTipDirection.None + }; + tip.Show(bodyView); + btnAccountViewBottomLine.BackgroundColor = CSS_Color.AuxiliaryColor2; + btnAccountViewBottomLine.Height = Application.GetRealHeight(2); + } + } } }; //褰撶劍鐐瑰湪瀵嗙爜鏂囨湰妗嗘椂锛屾枃鏈搴曠嚎鐐逛寒 @@ -248,7 +377,7 @@ /// <summary> /// 鐧诲綍鎸夐挳鐐瑰嚮浜嬩欢 /// </summary> - void LoadMethod_LoginMethod() + void LoadEvent_Login() { btnLogin.MouseUpEventHandler += (sender, e) => { @@ -256,9 +385,41 @@ { account = etAccount.Text.Trim(); password = etPassword.Text.Trim(); + + if (loginType == 0) + { + if (!Regex.IsMatch(account, @"^[1]+\d{10}") && (account.Length == 11)) + { + var tip = new Tip() + { + Text = Language.StringByID(StringId.PlsEntryCorrectMobilNeumber), + CloseTime = 3, + Direction = AMPopTipDirection.None + }; + tip.Show(bodyView); + return; + } + } + else + { + if (!Regex.IsMatch(account, "([a-zA-Z0-9_\\.\\-])+\\@(([a-zA-Z0-9\\-])+\\.)+([a-zA-Z0-9]{2,5})+")) + { + var tip = new Tip() + { + Text = Language.StringByID(StringId.PlsEntryCorrectEmailAddress), + CloseTime = 3, + Direction = AMPopTipDirection.None + }; + tip.Show(bodyView); + return; + } + } + //鍒涘缓鐧诲綍绾跨▼ - var loginThread = LoadMethod_LoginThread(); - LoadPage_WaitPage(loginThread); + var loginThread = LoadThread_Login(); + waitPage = new Loading(); + new PublicAssmebly().LoadPage_WaitPage(loginThread, bodyView, waitPage); + } }; #region 褰撹处鍙峰瘑鐮侀兘杈撳叆鏃讹紝鎵嶈兘鐐瑰嚮鐧诲綍鎸夐挳 @@ -288,97 +449,186 @@ } /// <summary> - /// 鍔犺浇绛夊緟鐣岄潰 - /// </summary> - void LoadPage_WaitPage(Thread thread) - { - waitPage = new Loading(); - bodyView.AddChidren(waitPage); - waitPage.Start(Language.StringByID(R.InternationalizationString.PleaseWait)); - var showedTime = DateTime.Now; - //濡傛灉绛夊緟浜嬩欢杩囬暱锛屽彲浠ュ厑璁哥敤鎴峰彇娑堝綋鍓嶆搷浣� - waitPage.MouseUpEventHandler += (sender, e) => - { - if (showedTime.AddSeconds(30) > DateTime.Now) - { - waitPage.RemoveFromParent(); - waitPage = null; - thread.Abort(); - } - }; - thread.Start(); - } - - /// <summary> /// 鍔犺浇鐧诲綍绾跨▼ /// </summary> - Thread LoadMethod_LoginThread() + Thread LoadThread_Login() { var loginThread = new Thread(() => { try { - var loginResult = pm.LoginByPassword(account,password,MainPage.Company); - Application.RunOnMainThread(() => + //鐧诲綍 + var loginResult = LoadMethod_Login(); + if (loginResult) { - waitPage.RemoveFromParent(); - waitPage = null; - }); - //鐧诲綍鎴愬姛 - if (loginResult.StateCode == HttpRequesResult.SUCCESS.ToString()) - { - var loginResponseData = Newtonsoft.Json.JsonConvert.DeserializeObject<UserLoginRes>(loginResult.ResponseData.ToString()); - //璁板綍鐢ㄦ埛鏁版嵁 - MainPage.LoginUser = new UserInfo + //鑾峰彇浣忓畢淇℃伅 + var getResidencesResult = LoadMethod_GetResidences(); + if (getResidencesResult) { - ID = loginResponseData.UserId, - MasterID = loginResponseData.MainUserId, - AccountType = loginResponseData.UserType, - AccountString = account, - Password = password, - LastTime = DateTime.Now, - SIP_Account = loginResponseData.AllVisionRegisterDevUserNameGuid, - }; - MainPage.LoginUser.SaveUserInfo(); - MainPage.Log("鐧诲綍鎴愬姛銆�"); + /* + * Wait : 鎺ㄩ�佹敞鍐� + */ - /* - * Wait : 鎺ㄩ�佹敞鍐� - */ - } - //鐧诲綍澶辫触 - else - { - Application.RunOnMainThread(() => - { - //鎻愮ず鍘熷洜 - var tip = new Tip() + Application.RunOnMainThread(() => { - Text = loginResult.ErrorInfo, - CloseTime = 3, - Direction = AMPopTipDirection.None - }; - tip.Show(bodyView); - //if (loginResult.StateCode == HttpRequesResult.LoginFailed_AccountErorr.ToString()) - { - btnAccountViewBottomLine.BackgroundColor = CSS_Color.AuxiliaryColor2; - btnAccountViewBottomLine.Height = Application.GetRealHeight(2); - //} - //else if (loginResult.StateCode == HttpRequesResult.LoginFailed_PasswordErorr.ToString()) - //{ - btnPasswordViewBottomLine.BackgroundColor = CSS_Color.AuxiliaryColor2; - btnPasswordViewBottomLine.Height = Application.GetRealHeight(2); - } - }); + //璺宠浆椤甸潰---- + MainPage.GoUserPage(); + }); + } } } catch (Exception ex) { MainPage.Log($"LoginPage : {ex.Message}"); } + finally + { + Application.RunOnMainThread(() => + { + if (waitPage != null) + { + waitPage.RemoveFromParent(); + waitPage = null; + } + + }); + } }) { IsBackground = true }; return loginThread; + } + /// <summary> + /// 璋冪敤鐧诲綍鎺ュ彛鐧诲綍 + /// </summary> + bool LoadMethod_Login() + { + var result = false; + ResponsePack loginResult; + if (logintMode == 0) + { + //璋冪敤鐧诲綍鎺ュ彛 + loginResult = pm.LoginByPassword(account, password); + } + else + { + //璋冪敤鐧诲綍鎺ュ彛 + loginResult = pm.LoginValidCode(account, password); + } + if (loginResult.StateCode.ToUpper() == "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(); + MainPage.Log("鐧诲綍鎴愬姛銆�"); + result = true; + //鑾峰彇鐢ㄦ埛淇℃伅 + new Thread(() => + { + pm.GetUserInfo(); + }) + { IsBackground = true }.Start(); + } + //鐧诲綍澶辫触 + else + { + string tipStr = "Sever erorr"; + switch (loginResult.StateCode) + { + case "ValidCodeAndPhoneNoEqual": + tipStr = Language.StringByID(StringId.VerificationCodeError); + Application.RunOnMainThread(() => + { + btnPasswordViewBottomLine.BackgroundColor = CSS_Color.AuxiliaryColor2; + btnPasswordViewBottomLine.Height = Application.GetRealHeight(2); + }); + break; + 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() + { + Text = tipStr, + CloseTime = 3, + Direction = AMPopTipDirection.None + }; + tip.Show(bodyView); + }); + } + return result; + } + + /// <summary> + /// 鑾峰彇浣忓畢鍒楄〃 + /// </summary> + bool LoadMethod_GetResidences() + { + var result = false; + var responsePack = pm.GetHomePager(); + + + if (responsePack == "Success") + { + result = true; + } + else + { + var tipStr = "Server erorr"; + switch (responsePack) + { + case "NoLogin": + tipStr = Language.StringByID(StringId.InvalidLoginCertificate); + break; + } + Application.RunOnMainThread(() => + { + //鎻愮ず鍘熷洜 + var tip = new Tip() + { + Text = tipStr, + CloseTime = 3, + Direction = AMPopTipDirection.None + }; + tip.Show(bodyView); + }); + } + return result; } /// <summary> @@ -386,23 +636,55 @@ /// </summary> void LoadPage_RegisterPage() { - btnRegister.MouseUpEventHandler += (sender, e) => { + btnRegister.MouseUpEventHandler += (sender, e) => + { //鍥炶皟浜嬩欢 - Action<string> callBackAction = (callBackPar_Action) => - { - try - { - etAccount.Text = callBackPar_Action; - } - catch (Exception ex) { - MainPage.Log($"login callBackAction : {ex.Message}"); - } - }; + //Action callBackAction = () => + //{ + // Application.RunOnMainThread(() => + // { + // try + // { + // } + // catch (Exception ex) + // { + // MainPage.Log($"login callBackAction : {ex.Message}"); + // } + // }); + //}; - var registerPage = new RegisterPage(callBackAction); + var registerPage = new RegisterPage(); registerPage.Show(); registerPage.ShowDialog(); }; } + + /// <summary> + /// 蹇樿瀵嗙爜 + /// </summary> + void LoadMethod_ForgetPassword() + { + btnForgetPassword.MouseUpEventHandler += (sender, e) => + { + Action<string> callBackAction = (callBackPar_Action) => + { + Application.RunOnMainThread(() => + { + try + { + etAccount.Text = callBackPar_Action; + } + catch (Exception ex) + { + MainPage.Log($"login callBackAction : {ex.Message}"); + } + }); + }; + var forgetPasswordDialog = new ForgetPasswordPage(callBackAction); + forgetPasswordDialog.Show(); + forgetPasswordDialog.ShowDialog(); + + }; + } } -} +} \ No newline at end of file -- Gitblit v1.8.0