| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129 |
- <?php
- namespace App\Module\Game\Handler;
- use App\Module\Game\Services\SkinService;
- use App\Module\Game\Validation\SkinValidation;
- use UCore\Handler\HandlerCore;
- use UCore\Res;
- /**
- * 皮肤Handler
- *
- * 处理皮肤相关的客户端请求
- */
- class SkinHandler extends HandlerCore
- {
- /**
- * 获取用户皮肤信息
- *
- * @param array $args 参数
- * @return array
- */
- public function getUserSkinInfo(array $args): array
- {
- $userId = $this->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)
- ]
- ];
- }
- }
|