json([ 'items' => $this->rideService->activeItems() ->map(fn (ShopItem $item) => $this->rideService->formatItem($item)) ->values(), 'current_ride' => $this->rideService->formatCurrentRide($user), 'purchases' => $this->rideService->purchaseRecords($user), 'user_jjb' => $user->jjb ?? 0, ]); } /** * 购买座驾并返回最新金币和当前座驾状态。 */ public function buy(BuyRideRequest $request): JsonResponse { $user = Auth::user(); $roomId = (int) $request->integer('room_id'); $room = Room::query()->findOrFail($roomId); if (! $room->canUserEnter($user) || ! $this->chatState->isUserInRoom($roomId, $user->username)) { return response()->json(['status' => 'error', 'message' => '请先进入当前房间后再购买座驾。'], 403); } $item = ShopItem::query()->findOrFail((int) $request->integer('item_id')); $result = $this->rideService->buy($user, $item); if (! $result['ok']) { return response()->json(['status' => 'error', 'message' => $result['message']], 400); } return response()->json([ 'status' => 'success', 'message' => $result['message'], 'current_ride' => $result['current_ride'] ?? null, 'purchases' => $this->rideService->purchaseRecords($user->fresh()), 'jjb' => $user->fresh()->jjb, ]); } }