UserHasSkinValidator.php 939 B

1234567891011121314151617181920212223242526272829303132333435363738
  1. <?php
  2. namespace App\Module\Game\Validator;
  3. use App\Module\Game\Services\SkinService;
  4. use UCore\Validator;
  5. /**
  6. * 用户拥有皮肤验证器
  7. */
  8. class UserHasSkinValidator extends Validator
  9. {
  10. /**
  11. * 验证用户是否拥有指定皮肤
  12. *
  13. * @param mixed $value 要验证的值 (皮肤ID)
  14. * @param array $data 所有数据 (包含user_id)
  15. * @return bool
  16. */
  17. public function validate(mixed $value, array $data): bool
  18. {
  19. // 检查是否有用户ID
  20. if (!isset($data['user_id'])) {
  21. return $this->addError('缺少用户ID');
  22. }
  23. $userId = $data['user_id'];
  24. $skinId = $value;
  25. // 检查用户是否拥有该皮肤
  26. if (!SkinService::hasSkin($userId, $skinId)) {
  27. $skinName = SkinService::getSkinName($skinId);
  28. return $this->addError("您还没有拥有皮肤:{$skinName}");
  29. }
  30. return true;
  31. }
  32. }