83 lines
2.2 KiB
PHP
83 lines
2.2 KiB
PHP
<?php
|
|
|
|
namespace App\Endpoint\Api\Http\Controllers\Account;
|
|
|
|
use App\Endpoint\Api\Http\Controllers\Controller;
|
|
use App\Endpoint\Api\Http\Resources\UserBalanceResource;
|
|
use App\Endpoint\Api\Http\Resources\UserInfoResource;
|
|
use App\Endpoint\Api\Http\Resources\UserWalletResource;
|
|
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([
|
|
'id' => $user->id,
|
|
'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),
|
|
'is_vip' => $user->isVip(),
|
|
'wallet' => UserWalletResource::make($user->wallet),
|
|
]);
|
|
}
|
|
}
|