From 2ac4887268c9f87ad5694ea0fa21776b748e2bc8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E9=9D=99?= Date: Fri, 3 Dec 2021 17:15:14 +0800 Subject: [PATCH] =?UTF-8?q?=E8=8E=B7=E5=8F=96/=E8=AE=BE=E7=BD=AE=20?= =?UTF-8?q?=E4=B8=AA=E4=BA=BA=E8=B5=84=E6=96=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Controllers/Account/UserController.php | 77 +++++++++++++++++++ .../Api/Http/Resources/UserInfoResource.php | 25 ++++++ app/Endpoint/Api/routes.php | 5 ++ 3 files changed, 107 insertions(+) create mode 100644 app/Endpoint/Api/Http/Controllers/Account/UserController.php create mode 100644 app/Endpoint/Api/Http/Resources/UserInfoResource.php diff --git a/app/Endpoint/Api/Http/Controllers/Account/UserController.php b/app/Endpoint/Api/Http/Controllers/Account/UserController.php new file mode 100644 index 00000000..d8800caf --- /dev/null +++ b/app/Endpoint/Api/Http/Controllers/Account/UserController.php @@ -0,0 +1,77 @@ +user(); + + return response()->json([ + 'phone' => $user->phone, + 'user_info' => UserInfoResource::make($user->userInfo), + ]); + } + + /** + * 设置个人资料 + * + * @param Request $request + * @return \Illuminate\Http\JsonResponse + */ + public function update(Request $request) + { + $request->validate([ + 'nickname' => ['bail', 'filled', 'string', 'max:10'], + 'avatar' => ['bail', 'filled', 'string'], + 'gender' => [ + 'bail', + 'filled', + Rule::in([ + UserInfo::GENDER_UNKNOWN, + UserInfo::GENDER_MALE, + UserInfo::GENDER_FEMALE, + ]), + ], + 'birthday' => ['bail', 'filled', 'date:Y-m-d'], + ]); + + $user = $request->user(); + + if ($request->has('nickname')) { + $user->userInfo->nickname = $request->input('nickname'); + } + + if ($request->has('avatar')) { + $user->userInfo->avatar = $request->input('avatar'); + } + + if ($request->has('gender')) { + $user->userInfo->gender = $request->input('gender'); + } + + if ($request->has('birthday')) { + $user->userInfo->birthday = $request->input('birthday'); + } + + $user->userInfo->save(); + + return response()->json([ + 'phone' => $user->phone, + 'user_info' => UserInfoResource::make($user->userInfo), + ]); + } +} diff --git a/app/Endpoint/Api/Http/Resources/UserInfoResource.php b/app/Endpoint/Api/Http/Resources/UserInfoResource.php new file mode 100644 index 00000000..3206d5b4 --- /dev/null +++ b/app/Endpoint/Api/Http/Resources/UserInfoResource.php @@ -0,0 +1,25 @@ + (string) $this->nickname, + 'avatar' => (string) $this->avatar, + 'gender' => (string) $this->gender, + 'birthday' => (string) $this->birthday?->toDateString(), + 'code' => (string) $this->code, + ]; + } +} diff --git a/app/Endpoint/Api/routes.php b/app/Endpoint/Api/routes.php index 04896394..2d1f18cd 100644 --- a/app/Endpoint/Api/routes.php +++ b/app/Endpoint/Api/routes.php @@ -1,5 +1,6 @@ group(function () { + // 我的信息 + Route::get('me', [UserController::class, 'show']); + Route::put('me', [UserController::class, 'update']); + // 收藏商品 Route::post('product/products/{product}/collect', [ProductSkuController::class, 'collect']); // 取消商品收藏