using System;
|
using System.Threading.Tasks;
|
|
namespace Shared.Phone.UserCenter.User
|
{
|
/// <summary>
|
/// 验证新手机号的画面
|
/// </summary>
|
public class CheckNewPhoneNumForm : UserCenterCommonForm
|
{
|
/// <summary>
|
/// 重新发送的状态控件
|
/// </summary>
|
private RowMostRightTextView btnStatu = null;
|
/// <summary>
|
/// 信息提示控件
|
/// </summary>
|
private ViewNormalControl txtMsg = null;
|
/// <summary>
|
/// 下一步的控件
|
/// </summary>
|
private BottomClickButton btnBottom = null;
|
/// <summary>
|
/// 线程运行
|
/// </summary>
|
private bool IsAction = false;
|
/// <summary>
|
/// 新的手机号
|
/// </summary>
|
private string newPhoneNum = string.Empty;
|
/// <summary>
|
/// 地区代码
|
/// </summary>
|
private int newAreaCode = 0;
|
|
/// <summary>
|
/// 画面显示(底层会固定调用此方法,借以完成画面创建)
|
/// </summary>
|
public void ShowForm()
|
{
|
//设定标题
|
base.SetTitleText(Language.StringByID(R.MyInternationalizationString.uCheckPhoneNumber));
|
|
//初始化中部控件
|
this.InitMiddleFrame();
|
}
|
|
/// <summary>
|
/// 初始化中部控件
|
/// </summary>
|
private void InitMiddleFrame()
|
{
|
var rowlayout1 = new RowLayout();
|
rowlayout1.Height = ControlCommonResourse.ListViewRowHeight;
|
bodyFrameLayout.AddChidren(rowlayout1);
|
|
//新手机号码
|
var btnPhoneView = new RowTopBlackView(false);
|
btnPhoneView.TextID = R.MyInternationalizationString.uNewPhoneNumber;
|
rowlayout1.AddChidren(btnPhoneView);
|
|
//请输入手机号码
|
var txtPhone = new PhoneAreaControl();
|
txtPhone.Gravity = Gravity.CenterVertical;
|
rowlayout1.AddChidren(txtPhone);
|
//重置Y轴
|
txtPhone.Y = UserCenterLogic.GetControlChidrenYaxis(rowlayout1.Height, txtPhone.Height, UViewAlignment.Bottom) - btnPhoneView.DeviationValue;
|
txtPhone.InitControl(this);
|
|
var rowlayout2 = new RowLayout();
|
rowlayout2.Y = rowlayout1.Bottom;
|
rowlayout2.Height = ControlCommonResourse.ListViewRowHeight;
|
bodyFrameLayout.AddChidren(rowlayout2);
|
|
//验证码
|
var btnCode = new RowTopBlackView(false);
|
btnCode.TextID = R.MyInternationalizationString.uVerificationCode;
|
rowlayout2.AddChidren(btnCode);
|
|
//请输入验证码
|
var txtCode = new RowBottomEditorText();
|
txtCode.PlaceholderText = Language.StringByID(R.MyInternationalizationString.uPleaseInputVerificationCode);
|
txtCode.PlaceholderTextColor = UserCenterColor.Current.TextTipColor;
|
rowlayout2.AddChidren(txtCode);
|
|
//状态
|
btnStatu = new RowMostRightTextView();
|
btnStatu.TextID = R.MyInternationalizationString.uSendVerificationCode;
|
btnStatu.TextColor = UserCenterColor.Current.TextBlueColor;
|
rowlayout2.AddChidren(btnStatu);
|
btnStatu.ReSetYaxis(UViewAlignment.Bottom);
|
|
//提示信息
|
txtMsg = new ViewNormalControl(800, true);
|
txtMsg.X = ControlCommonResourse.XXLeft;
|
txtMsg.Y = rowlayout2.Bottom + Application.GetRealHeight(5);
|
txtMsg.TextColor = UserCenterColor.Current.Red;
|
bodyFrameLayout.AddChidren(txtMsg);
|
|
//验证
|
btnBottom = new BottomClickButton();
|
btnBottom.TextID = R.MyInternationalizationString.uVerification;
|
btnBottom.Visible = false;
|
bodyFrameLayout.AddChidren(btnBottom);
|
btnBottom.MouseUpEvent += (sender, e) =>
|
{
|
if (this.IsAction == false || txtCode.Text.Trim() == string.Empty)
|
{
|
txtMsg.TextID = R.MyInternationalizationString.uVerificationCodeError;
|
return;
|
}
|
//验证验证码
|
this.CheckVerificationCode(txtCode.Text.Trim());
|
};
|
|
//发送验证码的单击事件
|
btnStatu.MouseUpEvent += (sender, e) =>
|
{
|
//检测手机号
|
if (this.CheckPhoneNumber(txtPhone.AreaCode, txtPhone.PhoneNumber) == false)
|
{
|
return;
|
}
|
|
//发送验证码到手机
|
this.SendCodeToPhone(txtPhone.AreaCode, txtPhone.PhoneNumber);
|
};
|
}
|
|
/// <summary>
|
/// 线程开启倒计时
|
/// </summary>
|
private void StartTimeOutThead()
|
{
|
if (this.IsAction == true)
|
{
|
return;
|
}
|
|
this.IsAction = true;
|
int waitime = 300;
|
//重发
|
string repeat = Language.StringByID(R.MyInternationalizationString.RepeatSend1);
|
|
new System.Threading.Thread(() =>
|
{
|
while (this.IsAction == true)
|
{
|
if (waitime == 0)
|
{
|
break;
|
}
|
Application.RunOnMainThread(() =>
|
{
|
this.btnStatu.Text = repeat + "(" + waitime + "s)";
|
});
|
waitime--;
|
|
System.Threading.Thread.Sleep(1000);
|
}
|
this.IsAction = false;
|
|
Application.RunOnMainThread(() =>
|
{
|
//重新发送
|
this.btnStatu.Text = Language.StringByID(R.MyInternationalizationString.RepeatSend2);
|
});
|
})
|
{ IsBackground = true }.Start();
|
}
|
|
/// <summary>
|
/// 发送验证码到手机
|
/// </summary>
|
/// <param name="areaCode"></param>
|
/// <param name="phoneNum"></param>
|
/// <returns></returns>
|
private async void SendCodeToPhone(string areaCode, string phoneNum)
|
{
|
var sendCodePra = new SendCodePra();
|
sendCodePra.Account = phoneNum;
|
sendCodePra.AreaCode = Convert.ToInt32(areaCode);
|
|
bool flage = await UserCenterLogic.GetResultStatuByRequestHttps("ZigbeeUsers/RegisterSendVerCode", sendCodePra);
|
if (flage == false)
|
{
|
return;
|
}
|
|
this.newPhoneNum = phoneNum;
|
this.newAreaCode = Convert.ToInt32(areaCode);
|
Application.RunOnMainThread(() =>
|
{
|
btnBottom.Visible = true;
|
btnStatu.Text = Language.StringByID(R.MyInternationalizationString.RepeatSend1) + " (300s)";
|
});
|
|
//线程开启倒计时
|
this.StartTimeOutThead();
|
}
|
|
/// <summary>
|
/// 验证验证码
|
/// </summary>
|
/// <returns></returns>
|
private async void CheckVerificationCode(string code)
|
{
|
var checkCodePra = new CheckCodePra();
|
checkCodePra.Code = code;
|
checkCodePra.Account = this.newPhoneNum;
|
checkCodePra.AreaCode = this.newAreaCode;
|
|
bool flage = await UserCenterLogic.GetResultStatuByRequestHttps("ZigbeeUsers/ValidatorCode", checkCodePra);
|
if (flage == false)
|
{
|
txtMsg.TextID = R.MyInternationalizationString.uVerificationCodeError;
|
return;
|
}
|
this.IsAction = false;
|
|
//变更手机号
|
this.SaveNewPhoneNumber();
|
}
|
|
/// <summary>
|
/// 变更手机号
|
/// </summary>
|
private async void SaveNewPhoneNumber()
|
{
|
var pra = new SaveNewPhoneNumPra();
|
pra.Account = this.newPhoneNum;
|
|
bool flage = await UserCenterLogic.GetResultStatuByRequestHttps("ZigbeeUsers/BindAccount", pra);
|
if (flage == false)
|
{
|
return;
|
}
|
|
//您的手机号码已经更新
|
string msg = Language.StringByID(R.MyInternationalizationString.uYourPhoneNumberIsRefresh);
|
this.ShowNormalMsg(msg, "RefreshUserInfoForm");
|
}
|
|
/// <summary>
|
/// 检测手机号
|
/// </summary>
|
private bool CheckPhoneNumber(string areaCode, string phoneNum)
|
{
|
if (this.IsAction == true)
|
{
|
return false;
|
}
|
//输入为空
|
if (phoneNum == string.Empty)
|
{
|
txtMsg.Text = Language.StringByID(R.MyInternationalizationString.uPleaseInputPhoneNumber);
|
return false;
|
}
|
|
//检测手机号格式
|
if (UserCenterLogic.CheckPhoneNumber(phoneNum, areaCode) == false)
|
{
|
txtMsg.Text = Language.StringByID(R.MyInternationalizationString.uThisIsNotPhoneNumberType);
|
return false;
|
}
|
txtMsg.Text = string.Empty;
|
|
return true;
|
}
|
|
/// <summary>
|
/// 刷新个人信息画面
|
/// </summary>
|
public void RefreshUserInfoForm()
|
{
|
//如果修改的是账号的话,则重新登录
|
if (UserCenterResourse.UserInfo.Phone == Shared.Common.Config.Instance.Account)
|
{
|
UserCenterLogic.ReLoginAgain(this.newPhoneNum);
|
return;
|
}
|
UserCenterResourse.UserInfo.Phone = this.newPhoneNum;
|
this.CloseForm();
|
}
|
|
/// <summary>
|
/// 画面关闭
|
/// </summary>
|
/// <param name="isCloseForm">是否关闭界面,false的时候,只会调用关闭函数里面的附加功能</param>
|
public override void CloseForm(bool isCloseForm = true)
|
{
|
this.IsAction = false;
|
base.CloseForm(isCloseForm);
|
}
|
|
/// <summary>
|
/// 发送验证码的启动参数
|
/// </summary>
|
private class SendCodePra
|
{
|
/// <summary>
|
/// 用户账号
|
/// </summary>
|
public string Account = string.Empty;
|
/// <summary>
|
/// 公司编号,国内使用手机短信验证码时,此字段填入0,国外手机短信验证码,此字段填入4
|
/// </summary>
|
public int Company = 0;
|
/// <summary>
|
/// 语言
|
/// </summary>
|
public string Language = Shared.Language.CurrentLanguage;
|
/// <summary>
|
/// 国家地区代码,手机号发送验证码时使用
|
/// </summary>
|
public int AreaCode = 0;
|
}
|
|
/// <summary>
|
/// 发送验证码的启动参数
|
/// </summary>
|
private class CheckCodePra
|
{
|
/// <summary>
|
/// 用户账号
|
/// </summary>
|
public string Account = string.Empty;
|
/// <summary>
|
/// 验证码
|
/// </summary>
|
public string Code = "0";
|
/// <summary>
|
/// 语言
|
/// </summary>
|
public string Language = Shared.Language.CurrentLanguage;
|
/// <summary>
|
/// 国家地区代码,手机号发送验证码时使用
|
/// </summary>
|
public int AreaCode = 0;
|
}
|
|
/// <summary>
|
/// 保存新手机号的启动参数
|
/// </summary>
|
private class SaveNewPhoneNumPra
|
{
|
/// <summary>
|
/// 新用户账号
|
/// </summary>
|
public string Account = string.Empty;
|
}
|
}
|
}
|