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=>'菜单标识已存在',