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
|
{
|
/// <summary>
|
/// 加载事件列表
|
/// </summary>
|
void LoadEventList()
|
{
|
LoadPage_SwitchRegisterType();
|
LoadEvent_EditTextFcousChange();
|
LoadEvent_ChangeTextVisble();
|
LoadEvent_GetVerificationCode();
|
LoadEvent_Register();
|
LoadEvent_LimtPasswordLength();
|
LoadEvent_TextChange();
|
LoadEvent_Server();
|
//var areaCodeList = pm.GetAreaCode();
|
}
|
|
|
|
/// <summary>
|
/// 使能修改注册按钮
|
/// 有内容才显示注册按钮
|
/// </summary>
|
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());
|
}
|
|
/// <summary>
|
/// 加载文本变化事件
|
/// </summary>
|
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();
|
};
|
}
|
|
/// <summary>
|
/// 切换注册类型
|
/// </summary>
|
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
|
|
};
|
}
|
|
/// <summary>
|
/// 加载文本框焦点变化事件
|
/// </summary>
|
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)
|
}.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;
|
}
|
}
|
}
|
};
|
|
}
|
|
/// <summary>
|
/// 限制密码文本库输入长度
|
/// </summary>
|
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();
|
};
|
}
|
|
/// <summary>
|
/// 更改密码可见性
|
/// </summary>
|
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;
|
};
|
}
|
|
/// <summary>
|
/// 获取验证码
|
/// </summary>
|
void LoadEvent_GetVerificationCode()
|
{
|
EventHandler<MouseEventArgs> 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;
|
}
|
|
/// <summary>
|
/// 加载注册按钮事件
|
/// </summary>
|
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);
|
}
|
};
|
}
|
|
/// <summary>
|
/// 加载注册方法
|
/// </summary>
|
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();
|
});
|
}
|
});
|
}
|
|
/// <summary>
|
/// 加载服务器选择按钮事件
|
/// </summary>
|
void LoadEvent_Server()
|
{
|
//判断之前是否选择过
|
if (OnAppConfig.Instance.GlobalRegion != null && !string.IsNullOrEmpty(OnAppConfig.Instance.GlobalRegion.regionUrl))
|
{
|
|
SetServerText();
|
}
|
|
EventHandler<MouseEventArgs> eventHandler = (sender, e) =>
|
{
|
Action selectAction = () =>
|
{
|
//服务器选择过标记为true
|
SetServerText();
|
};
|
new SelectServerDialog(selectAction).LoadPage();
|
|
};
|
|
btnServerGo.MouseUpEventHandler = eventHandler;
|
btnServerText.MouseUpEventHandler = eventHandler;
|
}
|
|
/// <summary>
|
/// 检测是否选择了服务器
|
/// </summary>
|
/// <returns></returns>
|
private bool CheckIfSelectServer()
|
{
|
if (isSelectServer == false)
|
{
|
//请先选择国家/区域
|
Utlis.ShowTip(Language.StringByID(StringId.PleaseSelectCountryOrRegion));
|
ShowServerBottomLineState(true);
|
return false;
|
}
|
return true;
|
}
|
|
/// <summary>
|
/// 服务器下划线样式
|
/// </summary>
|
/// <param name="isError"></param>
|
void ShowServerBottomLineState(bool isError)
|
{
|
if (isError)
|
{
|
HDLCommon.Current.BottomLineShowType(btnServerBottomLine, BottomLineType.Error);
|
}
|
else
|
{
|
HDLCommon.Current.BottomLineShowType(btnServerBottomLine, BottomLineType.Normal);
|
}
|
}
|
|
/// <summary>
|
///
|
/// </summary>
|
void SetServerText()
|
{
|
//服务器选择过标记为true
|
isSelectServer = true;
|
ShowServerBottomLineState(false);
|
btnServerText.TextColor = CSS_Color.FirstLevelTitleColor;
|
btnServerText.Text = OnAppConfig.Instance.GlobalRegion.regionName;
|
}
|
|
|
/// <summary>
|
/// 检测账号
|
/// </summary>
|
/// <returns></returns>
|
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;
|
}
|
|
/// <summary>
|
/// 检测密码是否正确
|
/// </summary>
|
/// <returns></returns>
|
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;
|
}
|
|
/// <summary>
|
/// 检测验证码是否输入
|
/// </summary>
|
/// <returns></returns>
|
bool CheckVerificationCode()
|
{
|
if (string.IsNullOrEmpty(etVerificationCode.Text))
|
{
|
Utlis.ShowTip(Language.StringByID(StringId.PlsEntryVerificationCode));
|
return false;
|
}
|
return true;
|
}
|
}
|
}
|