user(); if (! $user instanceof WechatUser) { abort(403, '仅微信用户可访问'); } return response()->json([ 'real_name' => $user->real_name, 'phone' => $user->phone, 'avatar_url' => $user->avatar_url, 'nickname' => $user->nickname, ]); } public function update(Request $request): JsonResponse { $user = $request->user(); if (! $user instanceof WechatUser) { abort(403, '仅微信用户可访问'); } $data = $request->validate([ 'real_name' => ['required', 'string', 'max:80'], 'phone' => ['required', 'regex:/^1\d{10}$/'], 'avatar_url' => ['nullable', 'string', 'max:500'], ]); $phone = $data['phone']; DB::transaction(function () use ($user, $data, $phone): void { $user->real_name = $data['real_name']; $user->phone = $phone; if (array_key_exists('avatar_url', $data) && $data['avatar_url'] !== null && $data['avatar_url'] !== '') { $user->avatar_url = $data['avatar_url']; } $user->save(); // 曾无微信态预约(wechat_user_id 为空):资料里手机号与 visitor_phone 一致时补绑到当前微信号;已有 wechat_user_id 的订单永不覆盖 Reservation::query() ->whereNull('wechat_user_id') ->whereNotNull('visitor_phone') ->where('visitor_phone', $phone) ->update(['wechat_user_id' => $user->id]); }); return response()->json([ 'message' => '保存成功', 'profile' => [ 'real_name' => $user->real_name, 'phone' => $user->phone, 'avatar_url' => $user->avatar_url, 'nickname' => $user->nickname, ], ]); } }