6
0
Fork 0

获取/设置 个人资料

release
李静 2021-12-03 17:15:14 +08:00
parent 42718e72ff
commit 2ac4887268
3 changed files with 107 additions and 0 deletions

View File

@ -0,0 +1,77 @@
<?php
namespace App\Endpoint\Api\Http\Controllers\Account;
use App\Endpoint\Api\Http\Controllers\Controller;
use App\Endpoint\Api\Http\Resources\UserInfoResource;
use App\Models\UserInfo;
use Illuminate\Http\Request;
use Illuminate\Validation\Rule;
class UserController extends Controller
{
/**
* 获取个人资料
*
* @param Request $request
* @return \Illuminate\Http\JsonResponse
*/
public function show(Request $request)
{
$user = $request->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),
]);
}
}

View File

@ -0,0 +1,25 @@
<?php
namespace App\Endpoint\Api\Http\Resources;
use Illuminate\Http\Resources\Json\JsonResource;
class UserInfoResource extends JsonResource
{
/**
* Transform the resource into an array.
*
* @param \Illuminate\Http\Request $request
* @return array|\Illuminate\Contracts\Support\Arrayable|\JsonSerializable
*/
public function toArray($request)
{
return [
'nickname' => (string) $this->nickname,
'avatar' => (string) $this->avatar,
'gender' => (string) $this->gender,
'birthday' => (string) $this->birthday?->toDateString(),
'code' => (string) $this->code,
];
}
}

View File

@ -1,5 +1,6 @@
<?php
use App\Endpoint\Api\Http\Controllers\Account\UserController;
use App\Endpoint\Api\Http\Controllers\AdController;
use App\Endpoint\Api\Http\Controllers\Auth\LoginController;
use App\Endpoint\Api\Http\Controllers\Auth\LogoutController;
@ -42,6 +43,10 @@ Route::group([
Route::get('product/products/{product}', [ProductSkuController::class, 'show']);
Route::middleware(['auth:api'])->group(function () {
// 我的信息
Route::get('me', [UserController::class, 'show']);
Route::put('me', [UserController::class, 'update']);
// 收藏商品
Route::post('product/products/{product}/collect', [ProductSkuController::class, 'collect']);
// 取消商品收藏