using DevExpress.XtraEditors;
|
using HStation.RevitDev.RevitDataExport.Common;
|
using System;
|
using System.Net.Http;
|
using System.Text;
|
using Timer = System.Windows.Forms.Timer;
|
|
namespace HStation.RevitDev.RevitDataExport
|
{
|
public partial class SmsLoginCtrl : DevExpress.XtraEditors.XtraUserControl, ILogin
|
{
|
public SmsLoginCtrl()
|
{
|
InitializeComponent();
|
// this.layoutControl1.SetupLayoutControl();
|
}
|
|
/// <summary>
|
/// 登录开始事件
|
/// </summary>
|
public event Action LoginStartEvent;
|
|
/// <summary>
|
/// 登录取消事件
|
/// </summary>
|
public event Action LoginCancelEvent;
|
|
/// <summary>
|
/// 登录完成事件
|
/// </summary>
|
public event Action<HttpResultModel, string> LoginEndEvet;
|
|
private bool _isInitialized = false;//初始化
|
private const string _template = "hzkw_sms_template";//sms登录模板
|
|
/// <summary>
|
/// 初始化
|
/// </summary>
|
public void Initial()
|
{
|
if (_isInitialized)
|
{
|
return;
|
}
|
_isInitialized = true;
|
}
|
|
//手机号验证
|
private bool IsValidMobileNumber(string mobile)
|
{
|
var regex = new System.Text.RegularExpressions.Regex(@"^1\d{10}$");
|
return regex.IsMatch(mobile);
|
}
|
|
//发送验证码
|
private void btnSendCode_Click(object sender, EventArgs e)
|
{
|
var Software = GlobalResource.ConfigSettingModel.Software;
|
this.dxErrorProvider1.ClearErrors();
|
var mobile = this.txtMobileNumber.Text.Trim();
|
if (!IsValidMobileNumber(mobile))
|
{
|
XtraMessageBox.Show("手机号有误!");
|
return;
|
}
|
using (var client = new HttpClient())
|
{
|
var res = client.GetAsync(GlobalResource.ConfigSettingModel.ApiUrl + $"/Auth/Tool/SMS/SendCode@V1.0?TemplateCode={_template}&MobileNumber={mobile}&Software={Software}")
|
.Result.Content.ReadAsStringAsync().Result;
|
var result = JsonHelper.ToObject<HttpResultViewModel>(res);
|
if (result.Code == 0)
|
{
|
this.labSendCode.Enabled = false;
|
StartCountdown();
|
}
|
else
|
{
|
XtraMessageBox.Show(result.Message);
|
this.labSendCode.Enabled = true;
|
}
|
}
|
}
|
|
private void StartCountdown()
|
{
|
int countdown = 60;
|
Timer timer = new Timer();
|
timer.Interval = 1000; // 1秒
|
timer.Tick += (s, e) =>
|
{
|
countdown--;
|
if (countdown > 0)
|
{
|
this.labSendCode.Text = $"{countdown}秒后重新发送";
|
}
|
else
|
{
|
timer.Stop();
|
this.labSendCode.Text = "发送验证码";
|
this.labSendCode.Enabled = true;
|
}
|
};
|
timer.Start();
|
}
|
|
//取消登录
|
private void btnCancel_Click(object sender, EventArgs e)
|
{
|
this.LoginCancelEvent?.Invoke();
|
}
|
|
//登录
|
private void btnLogin_Click(object sender, EventArgs e)
|
{
|
this.dxErrorProvider1.ClearErrors();
|
if (string.IsNullOrEmpty(this.txtCode.Text.Trim()))
|
{
|
this.dxErrorProvider1.SetError(this.txtCode, "请输入验证码");
|
return;
|
}
|
this.LoginStartEvent?.Invoke();
|
var loginModel = new
|
{
|
TemplateCode = _template,
|
MobileNumber = this.txtMobileNumber.Text.Trim(),
|
Software = GlobalResource.ConfigSettingModel.Software,
|
ValidCode = this.txtCode.Text.Trim(),
|
};
|
using (var client = new HttpClient())
|
{
|
var content = new StringContent(JsonHelper.ToJson(loginModel), Encoding.UTF8, "application/json");
|
var res = client.PostAsync(GlobalResource.ConfigSettingModel.ApiUrl + "/Auth/User/Login/LoginSoftwareStandardBySmsAccount@V1.0", content)
|
.Result.Content.ReadAsStringAsync().Result;
|
var result = JsonHelper.ToObject<HttpResultModel>(res);
|
this.LoginEndEvet?.Invoke(result, res);
|
}
|
}
|
}
|
}
|