|
|
|
using System;
|
|
|
|
using System.Collections;
|
|
|
|
using System.Collections.Generic;
|
|
|
|
using System.Text.RegularExpressions;
|
|
|
|
using TMPro;
|
|
|
|
using UnityEngine;
|
|
|
|
using UnityEngine.EventSystems;
|
|
|
|
using UnityEngine.UI;
|
|
|
|
|
|
|
|
public class RegisterManager : MonoBehaviour, IPointerClickHandler
|
|
|
|
{
|
|
|
|
public const string UserNameRegex = @"^[a-zA-Z0-9!@#$%^&*()_\-+=]{4,24}$";
|
|
|
|
public const string UserRealNameRegex = @"^[a-zA-Z0-9\u4e00-\u9fa5]{2,10}$";
|
|
|
|
public const string CitizenIdentificationNumberRegex = @"^[1-9]\d{5}(18|19|20)\d{2}((0[1-9])|(1[0-2]))(([0-2][1-9])|10|20|30|31)\d{3}[0-9Xx]$";
|
|
|
|
public const string PhoneNumberRegex = @"^1\d{10}$";
|
|
|
|
public const string PasswordRegex = @"^(?![a-zA-Z]+$)(?![A-Z0-9]+$)(?![A-Z\W_]+$)(?![a-z0-9]+$)(?![a-z\W_]+$)(?![0-9\W_]+$)[a-zA-Z0-9\W_]{8,24}$";
|
|
|
|
public TMP_Text ShowName;
|
|
|
|
public Button SureBtn;
|
|
|
|
public Button CancelBtn;
|
|
|
|
public TMP_InputField XAccount; //账号
|
|
|
|
public TMP_InputField XPwd;//密码
|
|
|
|
public TMP_InputField XName; //姓名
|
|
|
|
public TMP_InputField XPhone;//电话(默认账号)
|
|
|
|
public Toggle XSex;//性别
|
|
|
|
public OrganizationsLoadPanel XOrg;//组织机构
|
|
|
|
public PostsLoadPanel XPosts;//岗位职级
|
|
|
|
|
|
|
|
public TMP_InputField XIdent;
|
|
|
|
private string RegistorApi = "/api/Account/SignUp";
|
|
|
|
private RegistorUser registorUser;
|
|
|
|
|
|
|
|
public void OnPointerClick(PointerEventData eventData)
|
|
|
|
{
|
|
|
|
if (eventData.button == PointerEventData.InputButton.Left)
|
|
|
|
{
|
|
|
|
//Debug.Log("Left");
|
|
|
|
|
|
|
|
if (XOrg.Top.isOn)
|
|
|
|
{
|
|
|
|
XOrg.Top.isOn = false;
|
|
|
|
}
|
|
|
|
if (XPosts.Top.isOn)
|
|
|
|
{
|
|
|
|
XPosts.Top.isOn = false;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
void Start()
|
|
|
|
{
|
|
|
|
SureBtn.onClick.AddListener(SureBtn_Click);
|
|
|
|
CancelBtn.onClick.AddListener(CancelBtn_Click);
|
|
|
|
}
|
|
|
|
private void CancelBtn_Click()
|
|
|
|
{
|
|
|
|
PanelsManager.Instance.GotoLoginWindow();
|
|
|
|
}
|
|
|
|
private void SureBtn_Click()
|
|
|
|
{
|
|
|
|
if (string.IsNullOrEmpty(XName.text.Trim()))
|
|
|
|
{
|
|
|
|
var errormsg = PanelsManager.Instance.LoginErrorHintsDic[LoginErrorHints.nameNo];
|
|
|
|
TipPanelManager.GetInstance.Show(errormsg);
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
if (XOrg.SelectData == null || string.IsNullOrEmpty(XOrg.SelectData.id))
|
|
|
|
{
|
|
|
|
var errormsg = PanelsManager.Instance.LoginErrorHintsDic[LoginErrorHints.orgNo];
|
|
|
|
TipPanelManager.GetInstance.Show(errormsg);
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
if (string.IsNullOrEmpty(XPhone.text.Trim()))
|
|
|
|
{
|
|
|
|
var errormsg = PanelsManager.Instance.LoginErrorHintsDic[LoginErrorHints.phoneNo];
|
|
|
|
TipPanelManager.GetInstance.Show(errormsg);
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
if (!string.IsNullOrEmpty(XName.text.Trim()))
|
|
|
|
{
|
|
|
|
if (!Regex.IsMatch(XName.text.Trim(), UserRealNameRegex))
|
|
|
|
{
|
|
|
|
var errormsg = PanelsManager.Instance.LoginErrorHintsDic[LoginErrorHints.nameInvalid];
|
|
|
|
TipPanelManager.GetInstance.Show(errormsg);
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if (!string.IsNullOrEmpty(XAccount.text.Trim()))
|
|
|
|
{
|
|
|
|
if (!Regex.IsMatch(XAccount.text.Trim(), UserNameRegex))
|
|
|
|
{
|
|
|
|
var errormsg = PanelsManager.Instance.LoginErrorHintsDic[LoginErrorHints.accountInvalid];
|
|
|
|
TipPanelManager.GetInstance.Show(errormsg);
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
//if (string.IsNullOrEmpty(XIdent.text.Trim()))
|
|
|
|
//{
|
|
|
|
// var errormsg = PanelsManager.Instance.LoginErrorHintsDic[LoginErrorHints.identyNo];
|
|
|
|
// TipPanelManager.GetInstance.Show(errormsg);
|
|
|
|
// return;
|
|
|
|
//}
|
|
|
|
if (!string.IsNullOrEmpty(XPwd.text) && !Regex.IsMatch(XPwd.text, PasswordRegex))
|
|
|
|
{
|
|
|
|
var errormsg = PanelsManager.Instance.LoginErrorHintsDic[LoginErrorHints.pwdInvalid];
|
|
|
|
TipPanelManager.GetInstance.Show(errormsg);
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
if (!string.IsNullOrEmpty(XPhone.text) && !Regex.IsMatch(XPhone.text, PhoneNumberRegex))
|
|
|
|
{
|
|
|
|
var errormsg = PanelsManager.Instance.LoginErrorHintsDic[LoginErrorHints.phoneInvalid];
|
|
|
|
TipPanelManager.GetInstance.Show(errormsg);
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
if (!string.IsNullOrEmpty(XIdent.text) && !Regex.IsMatch(XIdent.text, CitizenIdentificationNumberRegex))
|
|
|
|
{
|
|
|
|
var errormsg = PanelsManager.Instance.LoginErrorHintsDic[LoginErrorHints.identyInvalid];
|
|
|
|
TipPanelManager.GetInstance.Show(errormsg);
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
registorUser.realName = XName.text.Trim();
|
|
|
|
registorUser.username = string.IsNullOrEmpty(XAccount.text.Trim()) ? XPhone.text.Trim() : XAccount.text.Trim();
|
|
|
|
registorUser.organizationId = XOrg.SelectData.id;
|
|
|
|
registorUser.password = string.IsNullOrEmpty(XPwd.text) ? null : XPwd.text;
|
|
|
|
registorUser.phoneNumber = XPhone.text.Trim();
|
|
|
|
registorUser.citizenIdentificationNumber = XIdent.text.Trim();
|
|
|
|
registorUser.postIds = new List<string>();
|
|
|
|
foreach (var item in XPosts.SelectDatas)
|
|
|
|
{
|
|
|
|
registorUser.postIds.Add(item.Id);
|
|
|
|
}
|
|
|
|
registorUser.roleType = PanelsManager.Instance.NowRoleType;
|
|
|
|
HTTPRequestManager.Instance.PostJson<RegistorUser, RegistorUser>(
|
|
|
|
RegistorApi, registorUser, RegistorSuccessed, RegistorError);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
private void RegistorError(int code, string message)
|
|
|
|
{
|
|
|
|
TipPanelManager.GetInstance.Show($"注册失败:\n{message}");
|
|
|
|
}
|
|
|
|
|
|
|
|
private void RegistorSuccessed(RegistorUser obj)
|
|
|
|
{
|
|
|
|
//string JY = PanelsManager.Instance.NowRoleType == RoleType.教员 ? "返回登录!" : "等待审核通过后登录!";
|
|
|
|
TipPanelManager.GetInstance.Show($"恭喜{obj.username}注册成功,请返回登录!", () =>
|
|
|
|
{
|
|
|
|
PanelsManager.Instance.GotoLoginWindow(obj.username);
|
|
|
|
});
|
|
|
|
}
|
|
|
|
internal void OnShow()
|
|
|
|
{
|
|
|
|
registorUser = new RegistorUser();
|
|
|
|
if (PanelsManager.Instance.NowRoleType == RoleType.教员)
|
|
|
|
{
|
|
|
|
ShowName.text = "教员注册";
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
ShowName.text = "学员注册";
|
|
|
|
}
|
|
|
|
|
|
|
|
XName.text = "";
|
|
|
|
XSex.isOn = true;
|
|
|
|
XOrg.Reset();
|
|
|
|
XPhone.text = "";
|
|
|
|
XPwd.text = "";
|
|
|
|
XIdent.text = "";
|
|
|
|
XPosts.Reset();
|
|
|
|
|
|
|
|
XName.ActivateInputField();
|
|
|
|
}
|
|
|
|
}
|