You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
35 lines
990 B
35 lines
990 B
|
2 weeks ago
|
<?php
|
||
|
|
|
||
|
|
namespace App\Http\Controllers\Miniapp;
|
||
|
|
|
||
|
|
use App\Http\Controllers\Controller;
|
||
|
|
use App\Models\MiniappUser;
|
||
|
|
use App\Support\ApiResponse;
|
||
|
|
use App\Support\Miniapp\MiniappPresenter;
|
||
|
|
use Illuminate\Http\JsonResponse;
|
||
|
|
use Illuminate\Http\Request;
|
||
|
|
|
||
|
|
class ProfileController extends Controller
|
||
|
|
{
|
||
|
|
use ApiResponse;
|
||
|
|
|
||
|
|
public function update(Request $request): JsonResponse
|
||
|
|
{
|
||
|
|
/** @var MiniappUser $user */
|
||
|
|
$user = $request->user();
|
||
|
|
|
||
|
|
$data = $request->validate([
|
||
|
|
'nickname' => ['nullable', 'string', 'max:64'],
|
||
|
|
'avatar_url' => ['nullable', 'string', 'max:512'],
|
||
|
|
'name' => ['nullable', 'string', 'max:64'],
|
||
|
|
'mobile' => ['nullable', 'string', 'max:32'],
|
||
|
|
'company' => ['nullable', 'string', 'max:255'],
|
||
|
|
]);
|
||
|
|
|
||
|
|
$user->fill(array_filter($data, fn ($v) => $v !== null));
|
||
|
|
$user->save();
|
||
|
|
|
||
|
|
return $this->ok(MiniappPresenter::userPayload($user->fresh()), '资料已保存');
|
||
|
|
}
|
||
|
|
}
|