From 25429f085093d89d543a0b90e30d0d62d1b7dac9 Mon Sep 17 00:00:00 2001 From: hxb <hxb@hdlchina.com.cn> Date: 星期二, 30 八月 2022 09:37:38 +0800 Subject: [PATCH] 合并了IOS的代码 --- ZigbeeApp/Shared/Phone/Login/AccountRegister.cs | 532 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 532 insertions(+), 0 deletions(-) diff --git a/ZigbeeApp/Shared/Phone/Login/AccountRegister.cs b/ZigbeeApp/Shared/Phone/Login/AccountRegister.cs new file mode 100644 index 0000000..081b2f0 --- /dev/null +++ b/ZigbeeApp/Shared/Phone/Login/AccountRegister.cs @@ -0,0 +1,532 @@ +锘縰sing System; +using Shared.Common; +using Shared.Phone.Device.CommonForm; + +namespace Shared.Phone.Login +{ + public class AccountRegister : FrameLayout + { + #region 鈼� 鍙橀噺____________________________ + /// <summary> + /// 鎵嬫満閭 + /// </summary> + private PhoneEmailForm phoneEmailForm; + /// <summary> + /// phoneRowForm + /// </summary> + private PhoneRowForm phoneRow; + /// <summary> + /// emailRow + /// </summary> + private EmailRowForm emailRow; + /// <summary> + /// pwdRow + /// </summary> + private PwdRowForm pwdRow; + /// <summary> + /// pwdComfireRow + /// </summary> + private PwdRowForm pwdComfireRow; + /// <summary> + /// CodeForRegisterRowForm + /// </summary> + private CodeForRegisterRowForm codeRow; + /// <summary> + /// bodyFrameLayout + /// </summary> + private FrameLayout bodyFrameLayout; + /// <summary> + /// 璐﹀彿楠岃瘉鐮乫l + /// </summary> + private FrameLayout accountCodeFL; + /// <summary> + /// 娉ㄥ唽 + /// </summary> + private Button registerBtn; + /// <summary> + /// 璐﹀彿鐧诲綍 + /// </summary> + private Button loginByAccountPWDBtn; + /// <summary> + /// 鐧诲綍閿欒鎻愮ず鎸夐挳 + /// </summary> + private Button errorBtn; + /// <summary> + /// 璐﹀彿 + /// </summary> + private string account = string.Empty; + /// <summary> + /// OpenID + /// </summary> + public string OpenID; + + #endregion + + #region 鈼� 鏋勯�犳柟娉昣________________________ + public AccountRegister() + { + CommonPage.Instance.IsDrawerLockMode = true; + BackgroundColor = ZigbeeColor.Current.GXCBackgroundColor; + Tag = "Register"; + } + #endregion + + #region 鈼� 鏄剧ず鐣岄潰_________________________ + /// <summary> + /// show + /// </summary> + public void Show() + { + //AddTop + AddTopFL(); + //AddBody + AddBodyView(); + + //bind + BindEvent(); + } + + #endregion + + #region 鈼� 娣诲姞____________________________ + /// <summary> + /// AddTop + /// </summary> + private void AddTopFL() + { + var top = new Device.CommonForm.TopFrameLayout(); + AddChidren(top); + top.InitTopview(); + top.SetTopTitle(Language.StringByID(R.MyInternationalizationString.Register)); + top.backButton.MouseUpEventHandler += (sender, e) => + { + RemoveFromParent(); + }; + + } + /// <summary> + /// AddBodyView + /// </summary> + private void AddBodyView() + { + bodyFrameLayout = new FrameLayout() + { + Y = Application.GetRealHeight(184), + Height = Application.GetRealHeight(1737), + BackgroundColor = ZigbeeColor.Current.GXCGrayBackgroundColor, + }; + AddChidren(bodyFrameLayout); + + phoneEmailForm = new PhoneEmailForm(); + phoneEmailForm.Init(bodyFrameLayout, 127); + phoneEmailForm.SetSelectedColor(ZigbeeColor.Current.GXCButtonBlackSelectedColor); + + accountCodeFL = new FrameLayout() + { + Y = Application.GetRealHeight(334), + Height = Application.GetRealHeight(852), + Width = Application.GetRealWidth(942), + Gravity = Gravity.CenterHorizontal, + BackgroundColor = ZigbeeColor.Current.GXCBackgroundColor, + Radius = (uint)Application.GetRealHeight(17) + }; + bodyFrameLayout.AddChidren(accountCodeFL); + + AddPhoneOrEmailFL(accountCodeFL, "Phone"); + + //閿欒鎻愮ずBtn + errorBtn = new Button() + { + X = Application.GetRealWidth(127), + Y = Application.GetRealHeight(1060), + Width = Application.GetRealWidth(700), + Height = Application.GetRealHeight(58), + TextColor = ZigbeeColor.Current.GXCTextRed, + TextAlignment = TextAlignment.CenterLeft, + TextSize = CommonFormResouce.TextSize, + IsBold = true + }; + bodyFrameLayout.AddChidren(errorBtn); + + registerBtn = new Button() + { + Y = Application.GetRealHeight(1281), + Width = Application.GetRealWidth(688), + Height = Application.GetRealHeight(127), + Gravity = Gravity.CenterHorizontal, + TextID = R.MyInternationalizationString.Register, + TextColor = ZigbeeColor.Current.GXCTextGrayColor, + SelectedTextColor = ZigbeeColor.Current.GXCTextWhiteColor, + SelectedBackgroundColor = ZigbeeColor.Current.GXCButtonBlackSelectedColor, + BackgroundColor = ZigbeeColor.Current.GXCButtonUnSelectedColor, + Radius = (uint)Application.GetRealHeight(127 / 2), + Enable = !string.IsNullOrEmpty(codeRow.VerificationCodeET?.Text), + IsSelected = !string.IsNullOrEmpty(codeRow.VerificationCodeET?.Text), + TextSize = 16, + IsBold = true, + }; + bodyFrameLayout.AddChidren(registerBtn); + + loginByAccountPWDBtn = new Button() + { + Y = registerBtn.Bottom + Application.GetRealHeight(50), + Width = Application.GetRealWidth(400), + Height = Application.GetRealHeight(58), + TextID = R.MyInternationalizationString.LoginByAccountPWD_1, + TextColor = ZigbeeColor.Current.GXCTextGrayColor, + TextSize = CommonFormResouce.loginTextSize, + Gravity=Gravity.CenterHorizontal + }; + bodyFrameLayout.AddChidren(loginByAccountPWDBtn); + + } + + #endregion + + #region 鈼� 閫夋嫨浜嬩欢_________________________ + /// <summary> + /// phone/email 閫夋嫨 + /// </summary> + /// <param name="sender"></param> + /// <param name="mouseEventArgs"></param> + private void SelectPhoneOrEmail_MouseUpEvent(object sender, MouseEventArgs mouseEventArgs) + { + phoneEmailForm.SelectedPhone.IsSelected = phoneEmailForm.SelectedEmail.IsSelected = false; + phoneEmailForm.SelectedPhone.IsBold = phoneEmailForm.SelectedEmail.IsBold = false; + registerBtn.Enable = registerBtn.IsSelected = false; + (sender as Button).IsSelected = (sender as Button).IsBold = true; + account = string.Empty; + errorBtn.Text = string.Empty; + if ((sender as Button).Tag.ToString() == "Phone") + { + AddPhoneOrEmailFL(accountCodeFL, "Phone"); + } + else + { + AddPhoneOrEmailFL(accountCodeFL, "Email"); + } + } + + /// <summary> + /// AddPhoneOrEmailFL + /// </summary> + /// <param name="accountCodeFrameLayout"></param> + /// <param name="phoneOrEmail"></param> + private void AddPhoneOrEmailFL(FrameLayout accountCodeFrameLayout, string phoneOrEmail) + { + accountCodeFrameLayout.RemoveAll(); + if (phoneOrEmail == "Phone") + { + phoneRow = new PhoneRowForm(); + phoneRow.Init(accountCodeFrameLayout, this, this.account, 29, 29); + phoneRow.AccountET.TextChangeEventHandler += Account_TextChange; + } + else + { + emailRow = new EmailRowForm(); + emailRow.Init(accountCodeFrameLayout, this.account, 29, 29); + emailRow.AccountET.TextChangeEventHandler += Account_TextChange; + } + pwdRow = new PwdRowForm(); + pwdRow.Init(accountCodeFrameLayout, 29, 196); + pwdRow.PasswrodET.TextChangeEventHandler += Code_TextChange; + + pwdComfireRow = new PwdRowForm(); + pwdComfireRow.Init(accountCodeFrameLayout, 29, 363); + pwdComfireRow.PasswrodET.TextChangeEventHandler += Code_TextChange; + pwdComfireRow.SetPlaceholdText(Language.StringByID(R.MyInternationalizationString.PleaseComfirePWD)); + + codeRow = new CodeForRegisterRowForm(); + codeRow.Init(accountCodeFrameLayout, 29, 530); + codeRow.VerificationCodeET.TextChangeEventHandler += Code_TextChange; + codeRow.SendCodeBtn.ButtonClickEvent += SendCode_MouseUpEventAsync; + } + #endregion + + #region 鈼� 缁戝畾浜嬩欢_________________________ + + /// <summary> + /// 缁戝畾鎸夐挳浜嬩欢 + /// </summary> + private void BindEvent() + { + //閫夋嫨鎵嬫満閭 + phoneEmailForm.SelectedPhone.MouseUpEventHandler += SelectPhoneOrEmail_MouseUpEvent; + phoneEmailForm.SelectedEmail.MouseUpEventHandler += SelectPhoneOrEmail_MouseUpEvent; + registerBtn.MouseUpEventHandler += Register; + loginByAccountPWDBtn.MouseUpEventHandler += LoginByPWD; + codeRow.VerificationCodeET.TextChangeEventHandler += Code_TextChange; + } + #endregion + + #region 鈼� 娉ㄥ唽浜嬩欢_________________________ + //// <summary> + /// 娉ㄥ唽 + /// </summary> + /// <param name="sender">Sender.</param> + /// <param name="mouseEventArgs">The ${ParameterType} instance containing the event data.</param> + private void Register(object sender, MouseEventArgs mouseEventArgs) + { + if (CheckAccount(account) == false) + { + return; + } + if (pwdRow.PasswrodET.Text.Trim() != pwdComfireRow.PasswrodET.Text.Trim()) + { + errorBtn.TextID = R.MyInternationalizationString.TwoPasswordInconsistency; + return; + } + + if (AccountLogic.Instance.CheckPwdLength(pwdRow.PasswrodET.Text.Trim()) == false) + { + errorBtn.TextID = R.MyInternationalizationString.ThePWDLengthError; + return; + } + + CommonPage.Loading.Start(); + try + { + var reqDto = new SendDataToServer.RegisterAccountObj() + { + Account = account, + Password = pwdRow.PasswrodET.Text.Trim(), + EnterPassword = pwdComfireRow.PasswrodET.Text.Trim(), + Language = CommonPage.ZigBeeLanguage, + Code = codeRow.VerificationCodeET.Text.Trim(), + RegisterSoruce = CommonPage.RegisterSoruceFromZIGBEE, + AreaCode = int.Parse(CommonPage.PhoneZoneStr) + }; + //楠岃瘉楠岃瘉鐮� + var requestRevertObj = CommonFormResouce.Register(reqDto); + if (requestRevertObj == null) + { + CommonPage.Instance.FailureToServer(); + return; + } + var stateCodeStr = requestRevertObj.StateCode.ToUpper(); + if (stateCodeStr == "SUCCESS") + { + var registerSuccess = new AccountRegisterSuccess(); + CommonPage.Instance.AddChidren(registerSuccess); + registerSuccess.ShowForm(account, pwdRow.PasswrodET.Text.Trim(), OpenID); + } + else if (stateCodeStr == "EXIST") + { + //宸叉敞鍐� + errorBtn.TextID = R.MyInternationalizationString.AccountHasBeenRegistered; + } + else if (stateCodeStr == "PARAMETEROREMPTY") + { + //鎻愪緵鐨勫弬鏁伴敊璇� + errorBtn.TextID = R.MyInternationalizationString.PARAMETEROREMPTY; + } + else if (stateCodeStr == "PWDNOCONFIRM") + { + //涓ゆ瀵嗙爜涓嶄竴鏍� + errorBtn.TextID = R.MyInternationalizationString.TwoPasswordInconsistency; + } + else if (stateCodeStr == "VALIDCODEANDPHONENOEQUAL") + { + //楠岃瘉鐮侀敊璇� + errorBtn.TextID = R.MyInternationalizationString.VALIDCODEANDPHONENOEQUAL; + } + else if (stateCodeStr == "NORECORD") + { + errorBtn.TextID = R.MyInternationalizationString.NORECORD; + } + else + { + errorBtn.TextID = R.MyInternationalizationString.RequestServerFailed; + } + } + catch + { + errorBtn.TextID = R.MyInternationalizationString.RequestServerFailed; + } + finally + { + CommonPage.Loading.Hide(); + } + } + + #endregion + + #region 鈼� 瀵嗙爜鐧诲綍_________________________ + /// <summary> + /// 閫氳繃瀵嗙爜鐧诲綍 + /// </summary> + /// <param name="sender">Sender.</param> + /// <param name="mouseEventArgs">The ${ParameterType} instance containing the event data.</param> + private void LoginByPWD(object sender, MouseEventArgs mouseEventArgs) + { + this.RemoveFromParent(); + } + + #endregion + + #region 鈼� 璐﹀彿銆侀獙璇佺爜鐩戝惉__________________ + /// <summary> + /// 璐﹀彿鐩戝惉 + /// </summary> + /// <param name="sender">Sender.</param> + /// <param name="mouseEventArgs">The ${ParameterType} instance containing the event data.</param> + private void Account_TextChange(object sender, string mouseEventArgs) + { + errorBtn.Text = string.Empty; + if ((sender as EditText).Text.Trim().Length > 0) + { + if (codeRow.SendCodeBtn.CanClick == false) + { + codeRow.SendCodeBtn.CanClick = true; + codeRow.SendCodeBtn.BackgroundColor = 0xFFFC744B; + } + } + else + { + codeRow.SendCodeBtn.CanClick = false; + codeRow.SendCodeBtn.BackgroundColor = 0xFFFEBCA9; + } + account = (sender as EditText).Text.Trim(); + } + + /// <summary> + /// code鐩戝惉浜嬩欢 + /// </summary> + /// <param name="sender">Sender.</param> + /// <param name="mouseEventArgs">The ${ParameterType} instance containing the event data.</param> + private void Code_TextChange(object sender, string mouseEventArgs) + { + errorBtn.Text = string.Empty; + if (codeRow.VerificationCodeET.Text.Trim().Length > 0 && account.Trim().Length > 0 && pwdRow.PasswrodET.Text.Trim().Length > 0 && pwdComfireRow.PasswrodET.Text.Trim().Length > 0) + { + registerBtn.Enable = registerBtn.IsSelected = true; + } + else + { + registerBtn.Enable = registerBtn.IsSelected = false; + } + } + + #endregion + + #region 鈼� 鍙戦�侀獙璇佺爜________________________ + /// <summary> + /// 鍙戦�侀獙璇佺爜 + /// </summary> + /// <param name="sender"></param> + /// <param name="mouseEventArgs"></param> + private void SendCode_MouseUpEventAsync(object sender, MouseEventArgs mouseEventArgs) + { + if (CheckAccount(account) == false) + { + return; + } + //鍏堝垽鏂�2娆″瘑鐮佽緭鍏ユ槸鍚︿竴鑷� + if (pwdRow.PasswrodET.Text.Trim() != pwdComfireRow.PasswrodET.Text.Trim()) + { + errorBtn.TextID = R.MyInternationalizationString.TwoPasswordInconsistency; + return; + } + + if (AccountLogic.Instance.CheckPwdLength(pwdRow.PasswrodET.Text.Trim()) == false) + { + errorBtn.TextID = R.MyInternationalizationString.ThePWDLengthError; + return; + } + + CommonPage.Loading.Start(); + (sender as UserCenter.NormalViewControl).CanClick = false; + try + { + int companyInt = 0; + if (CommonPage.PhoneZoneStr == "86") + { + companyInt = CommonPage.Company; + } + else + { + companyInt = CommonPage.CompanyForINTERNETION; + } + var reqDto = new SendDataToServer.RegisterSendVerCodeObj() + { + Account = account, + Company = companyInt, + AreaCode = int.Parse(CommonPage.PhoneZoneStr), + Language = CommonPage.ZigBeeLanguage + }; + var requestRevertObj = CommonFormResouce.RegisterSendVerCode(reqDto); + if (requestRevertObj == null) + { + CommonPage.Instance.FailureToServer(); + (sender as UserCenter.NormalViewControl).CanClick = true; + return; + } + var stateCodeStr = requestRevertObj.StateCode.ToUpper(); + if (stateCodeStr == "SUCCESS") + { + codeRow.TimeBegin(); + var alert = new Alert(Language.StringByID(R.MyInternationalizationString.TIP), Language.StringByID(R.MyInternationalizationString.SendVerificationCodeSuccess), Language.StringByID(R.MyInternationalizationString.Confrim)); + alert.Show(); + return; + } + + if (stateCodeStr == "PARAMETEROREMPTY") + { + //鎻愪緵鐨勫弬鏁伴敊璇� + errorBtn.TextID = R.MyInternationalizationString.PARAMETEROREMPTY; + } + else if (stateCodeStr == "SENDFAIL") + { + //楠岃瘉鐮佸彂閫佸け璐� + errorBtn.TextID = R.MyInternationalizationString.SENDFAIL; + } + else if (stateCodeStr == "EXIST") + { + //璐﹀彿瀛樺湪 + errorBtn.TextID = R.MyInternationalizationString.AccountHasBeenRegistered; + } + else + { + errorBtn.TextID = R.MyInternationalizationString.RequestServerFailed; + } + } + catch + { + errorBtn.TextID = R.MyInternationalizationString.RequestServerFailed; + } + finally + { + CommonPage.Loading.Hide(); + } + } + + /// <summary> + /// CheckAccount + /// </summary> + /// <param name="accountStr"></param> + /// <returns></returns> + private bool CheckAccount(string accountStr) + { + errorBtn.Text = string.Empty; + if (phoneEmailForm.SelectedEmail.IsSelected) + { + if (AccountLogic.Instance.CheckEmail(accountStr) == false) + { + errorBtn.TextID = R.MyInternationalizationString.TheEmailError; + return false; + } + } + else + { + if (AccountLogic.Instance.CheckPhoneWithZone(accountStr, CommonPage.PhoneZoneStr) == false) + { + errorBtn.TextID = R.MyInternationalizationString.ThePhoneError; + return false; + } + } + return true; + } + + #endregion + } +} \ No newline at end of file -- Gitblit v1.8.0