getUserId(); $skinInfo = SkinService::getUserSkinInfo($userId); if (!$skinInfo) { // 如果没有皮肤信息,尝试初始化 $initResult = SkinService::initUserSkin($userId); if ($initResult->success) { $skinInfo = SkinService::getUserSkinInfo($userId); } } return [ 'code' => self::RESPONSE_CODE, 'data' => $skinInfo ? $skinInfo->toArray() : [ 'user_id' => $userId, 'current_skin_id' => 1, 'current_skin_name' => '默认皮肤', 'owned_skins' => [1], 'owned_skins_detail' => [ [ 'id' => 1, 'name' => '默认皮肤', 'is_current' => true, ] ] ] ]; } /** * 切换皮肤 * * @param array $args 参数 ['skin_id' => int] * @return array */ public function changeSkin(array $args): array { // 验证参数 $validation = new SkinValidation(); $validation->skinId = $args['skin_id'] ?? 0; $validation->userId = $this->getUserId(); $validationResult = $validation->changeSkin(); if (!$validationResult->success) { return [ 'code' => 1, 'message' => $validationResult->errorMessage ]; } // 切换皮肤 $result = SkinService::changeSkin($this->getUserId(), $args['skin_id']); if ($result->success) { return [ 'code' => self::RESPONSE_CODE, 'message' => '皮肤切换成功', 'data' => [ 'skin_id' => $args['skin_id'], 'skin_name' => SkinService::getSkinName($args['skin_id']) ] ]; } else { return [ 'code' => 1, 'message' => $result->errorMessage ]; } } /** * 获取所有可用皮肤 * * @param array $args 参数 * @return array */ public function getAllSkins(array $args): array { $allSkins = SkinService::getAllSkins(); $userId = $this->getUserId(); $ownedSkins = SkinService::getOwnedSkins($userId); $currentSkinId = SkinService::getCurrentSkinId($userId); $skinList = []; foreach ($allSkins as $skinId => $skinName) { $skinList[] = [ 'id' => $skinId, 'name' => $skinName, 'is_owned' => in_array($skinId, $ownedSkins), 'is_current' => $skinId === $currentSkinId, ]; } return [ 'code' => self::RESPONSE_CODE, 'data' => [ 'skins' => $skinList, 'current_skin_id' => $currentSkinId, 'owned_count' => count($ownedSkins), 'total_count' => count($allSkins) ] ]; } }