Browse Source

feat(piadmin): 添加手机号注册功能

- 新增注册验证器 RegisterValidate,包含姓名、性别、手机号、验证码字段
- 在 UserLoginController 中添加 register 方法处理注册请求
- UserService 中实现 register 业务逻辑,包括手机号重复检查和验证码验证
- 新增注册相关错误码:4000
master
zhangf@suq.cn 6 days ago
parent
commit
c473d86f12
  1. 14
      plugin/piadmin/app/controller/v1/UserLoginController.php
  2. 2
      plugin/piadmin/app/route/v1/route.php
  3. 31
      plugin/piadmin/app/service/UserService.php
  4. 28
      plugin/piadmin/app/validate/RegisterValidate.php
  5. 3
      plugin/piadmin/resource/translations/zh_CN/messages.php

14
plugin/piadmin/app/controller/v1/UserLoginController.php

@ -7,6 +7,7 @@ use plugin\piadmin\app\exception\ApiException;
use plugin\piadmin\app\service\UserService;
use plugin\piadmin\app\utils\Captcha;
use plugin\piadmin\app\validate\LoginValidate;
use plugin\piadmin\app\validate\RegisterValidate;
use support\Request;
class UserLoginController extends BaseController
@ -21,6 +22,19 @@ class UserLoginController extends BaseController
$this->service = app()->make(UserService::class);
}
public function register(Request $request)
{
$params = $request->only([
'name',
'gender',
'phone',
'code'
]);
validate(RegisterValidate::class)->scene('register')->check($params);
$res = $this->service->register($params);
return success($res);
}
public function login(Request $request){
$params = $request->only([
'username',

2
plugin/piadmin/app/route/v1/route.php

@ -23,6 +23,8 @@ Route::group('/piadmin/v1', function () {
//用户端接口
Route::group('/user', function () {
//手机号注册
Route::post('/register', [UserLoginController::class, 'register'])->setParams(['perm' => ['userRegister']]);
//账号密码登录
Route::post('/login', [UserLoginController::class, 'login'])->setParams(['perm' => ['userLogin']]);
//手机验证码登录

31
plugin/piadmin/app/service/UserService.php

@ -19,6 +19,34 @@ class UserService extends BaseService
$this->dao = $dao;
}
public function register($params)
{
$user = $this->dao->getModel()->where(function ($query) use ($params){
$query->where('phone', '=', $params['phone']);
})->find();
if ($user) {
throw new ApiException(trans(400007), 400007);
}
//验证码验证
if(env('APP_DEBUG') != true){
$captcha = new Captcha();
$res = $captcha->verify($params['phone'],$params['code'],"register");
if($res['code'] != 200){
throw new ApiException($res['msg']);
}
}
$res = $this->dao->save([
'name' => $params['name'],
'account' => $params['phone'],
'phone' => $params['phone'],
'password' => password_hash(12345678, PASSWORD_ARGON2I),
'gender' => $params['gender'] ?? ''
]);
if (!$res) {
throw new ApiException(trans(400008), 400008);
}
return $res;
}
// 用户登录
public function login($params)
@ -39,6 +67,9 @@ class UserService extends BaseService
$user = $this->dao->getModel()->where(function ($query) use ($params){
$query->where('phone', '=', $params['phone']);
})->find();
if (!$user) {
throw new ApiException(trans(502001), 502001);
}
//验证码验证
if(env('APP_DEBUG') != true){
$captcha = new Captcha();

28
plugin/piadmin/app/validate/RegisterValidate.php

@ -0,0 +1,28 @@
<?php
namespace plugin\piadmin\app\validate;
use plugin\piadmin\app\base\BaseValidate;
class RegisterValidate extends BaseValidate
{
protected $rule = [
'name' => 'require',
'gender' => 'require',
'phone' => 'require',
'code' => 'require',
];
protected $message = [
'name.require' => '400001',
'gender.require' => '400002',
'phone.require' => '400003',
'code.require' => '400003',
];
protected $scene = [
'register' => ['name', 'phone', 'code']
];
}

3
plugin/piadmin/resource/translations/zh_CN/messages.php

@ -4,6 +4,7 @@ return [
500=>'参数错误',
501=>'操作失败',
502=>'数据不存在',
502001=>'用户不存在,去注册',
200=>'操作成功',
403=>'您的登录凭证错误或者已过期,请重新登录',
400001=>'用户名不能为空',
@ -12,6 +13,8 @@ return [
400004=>'验证码错误',
400005=>'用户名或密码错误',
400006=>'用户状态异常',
400007=>'手机号已注册,请前往登录',
400008=>'注册失败,请稍后重试!',
401001=>'上级菜单不存在',
401002=>'上级不能选择自己',
401003=>'菜单标识已存在',

Loading…
Cancel
Save