From c473d86f12b2fa2bdeeeb2ba1738b32b71641977 Mon Sep 17 00:00:00 2001 From: "zhangf@suq.cn" Date: Thu, 11 Dec 2025 11:31:24 +0800 Subject: [PATCH] =?UTF-8?q?feat(piadmin):=20=E6=B7=BB=E5=8A=A0=E6=89=8B?= =?UTF-8?q?=E6=9C=BA=E5=8F=B7=E6=B3=A8=E5=86=8C=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 新增注册验证器 RegisterValidate,包含姓名、性别、手机号、验证码字段 - 在 UserLoginController 中添加 register 方法处理注册请求 - UserService 中实现 register 业务逻辑,包括手机号重复检查和验证码验证 - 新增注册相关错误码:4000 --- .../app/controller/v1/UserLoginController.php | 14 ++++++++++ plugin/piadmin/app/route/v1/route.php | 2 ++ plugin/piadmin/app/service/UserService.php | 31 ++++++++++++++++++++++ plugin/piadmin/app/validate/RegisterValidate.php | 28 +++++++++++++++++++ .../resource/translations/zh_CN/messages.php | 3 +++ 5 files changed, 78 insertions(+) create mode 100644 plugin/piadmin/app/validate/RegisterValidate.php diff --git a/plugin/piadmin/app/controller/v1/UserLoginController.php b/plugin/piadmin/app/controller/v1/UserLoginController.php index 71d1125..6724cd3 100644 --- a/plugin/piadmin/app/controller/v1/UserLoginController.php +++ b/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', diff --git a/plugin/piadmin/app/route/v1/route.php b/plugin/piadmin/app/route/v1/route.php index 816e15a..74c903a 100644 --- a/plugin/piadmin/app/route/v1/route.php +++ b/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']]); //手机验证码登录 diff --git a/plugin/piadmin/app/service/UserService.php b/plugin/piadmin/app/service/UserService.php index c1f4404..4edbe02 100644 --- a/plugin/piadmin/app/service/UserService.php +++ b/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(); diff --git a/plugin/piadmin/app/validate/RegisterValidate.php b/plugin/piadmin/app/validate/RegisterValidate.php new file mode 100644 index 0000000..11e33c3 --- /dev/null +++ b/plugin/piadmin/app/validate/RegisterValidate.php @@ -0,0 +1,28 @@ + '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'] + ]; + +} \ No newline at end of file diff --git a/plugin/piadmin/resource/translations/zh_CN/messages.php b/plugin/piadmin/resource/translations/zh_CN/messages.php index 20a3b46..7fd213e 100644 --- a/plugin/piadmin/resource/translations/zh_CN/messages.php +++ b/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=>'菜单标识已存在',