userId = $model->user_id; $dto->currentSkinId = $model->current_skin_id; $dto->ownedSkins = $model->getOwnedSkinsArrayAttribute(); $dto->currentSkinName = GameUserSkin::getSkinName($model->current_skin_id); // 构建拥有的皮肤详情 $dto->ownedSkinsDetail = []; foreach ($dto->ownedSkins as $skinId) { $dto->ownedSkinsDetail[] = [ 'id' => $skinId, 'name' => GameUserSkin::getSkinName($skinId), 'is_current' => $skinId === $dto->currentSkinId, ]; } return $dto; } /** * 转换为数组 * * @return array */ public function toArray(): array { return [ 'user_id' => $this->userId, 'current_skin_id' => $this->currentSkinId, 'current_skin_name' => $this->currentSkinName, 'owned_skins' => $this->ownedSkins, 'owned_skins_detail' => $this->ownedSkinsDetail, ]; } /** * 检查是否拥有指定皮肤 * * @param int $skinId * @return bool */ public function hasSkin(int $skinId): bool { return in_array($skinId, $this->ownedSkins); } /** * 获取拥有的皮肤数量 * * @return int */ public function getOwnedSkinsCount(): int { return count($this->ownedSkins); } }