| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135 |
- <?php
- namespace App\Module\Game\Services;
- use App\Module\Game\Logics\SkinLogic;
- use App\Module\Game\Dto\UserSkinDto;
- use UCore\Dto\Res;
- /**
- * 皮肤服务类
- *
- * 提供皮肤相关的服务,对外接口
- */
- class SkinService
- {
- /**
- * 获取用户皮肤信息
- *
- * @param int $userId 用户ID
- * @return UserSkinDto|null 用户皮肤信息,不存在时返回null
- */
- public static function getUserSkinInfo(int $userId): ?UserSkinDto
- {
- $logic = new SkinLogic();
- return $logic->getUserSkinInfo($userId);
- }
- /**
- * 切换用户皮肤
- *
- * @param int $userId 用户ID
- * @param int $skinId 皮肤ID
- * @return Res 操作结果
- */
- public static function changeSkin(int $userId, int $skinId): Res
- {
- $logic = new SkinLogic();
- return $logic->changeSkin($userId, $skinId);
- }
- /**
- * 为用户添加皮肤
- *
- * @param int $userId 用户ID
- * @param int $skinId 皮肤ID
- * @return Res 操作结果
- */
- public static function addSkin(int $userId, int $skinId): Res
- {
- $logic = new SkinLogic();
- return $logic->addSkin($userId, $skinId);
- }
- /**
- * 检查用户是否拥有指定皮肤
- *
- * @param int $userId 用户ID
- * @param int $skinId 皮肤ID
- * @return bool 是否拥有
- */
- public static function hasSkin(int $userId, int $skinId): bool
- {
- $logic = new SkinLogic();
- return $logic->hasSkin($userId, $skinId);
- }
- /**
- * 获取用户当前使用的皮肤ID
- *
- * @param int $userId 用户ID
- * @return int 当前皮肤ID,默认为1
- */
- public static function getCurrentSkinId(int $userId): int
- {
- $skinInfo = self::getUserSkinInfo($userId);
- return $skinInfo ? $skinInfo->currentSkinId : 1;
- }
- /**
- * 获取用户拥有的皮肤列表
- *
- * @param int $userId 用户ID
- * @return array 拥有的皮肤ID数组
- */
- public static function getOwnedSkins(int $userId): array
- {
- $skinInfo = self::getUserSkinInfo($userId);
- return $skinInfo ? $skinInfo->ownedSkins : [1];
- }
- /**
- * 初始化用户皮肤数据
- *
- * @param int $userId 用户ID
- * @return Res 操作结果
- */
- public static function initUserSkin(int $userId): Res
- {
- $logic = new SkinLogic();
- return $logic->initUserSkin($userId);
- }
- /**
- * 获取所有可用皮肤
- *
- * @return array 皮肤列表
- */
- public static function getAllSkins(): array
- {
- return \App\Module\Game\Enums\SKIN::getValueDescription();
- }
- /**
- * 获取皮肤名称
- *
- * @param int $skinId 皮肤ID
- * @return string 皮肤名称
- */
- public static function getSkinName(int $skinId): string
- {
- $skins = self::getAllSkins();
- return $skins[$skinId] ?? '未知皮肤';
- }
- /**
- * 验证皮肤ID是否有效
- *
- * @param int $skinId 皮肤ID
- * @return bool 是否有效
- */
- public static function isValidSkinId(int $skinId): bool
- {
- return $skinId >= 1 && $skinId <= 4;
- }
- }
|