PetEatValidation.php 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899
  1. <?php
  2. namespace App\Module\AppGame\Validations;
  3. use App\Module\Pet\Enums\PetStatus;
  4. use App\Module\Pet\Validators\PetExistsValidator;
  5. use App\Module\Pet\Validators\PetFoodValidator;
  6. use App\Module\Pet\Validators\PetStatusValidator;
  7. use App\Module\GameItems\Validators\ItemQuantityValidator;
  8. /**
  9. * 宠物喂食验证类
  10. *
  11. * 用于验证宠物喂食请求的参数
  12. */
  13. class PetEatValidation extends ValidationBase
  14. {
  15. /**
  16. * 用户ID
  17. *
  18. * @var int
  19. */
  20. public int $user_id;
  21. /**
  22. * 宠物ID
  23. *
  24. * @var int
  25. */
  26. public int $pet_id;
  27. /**
  28. * 物品ID
  29. *
  30. * @var int
  31. */
  32. public int $item_id;
  33. /**
  34. * 数量
  35. *
  36. * @var int
  37. */
  38. public int $num;
  39. /**
  40. * 验证规则
  41. *
  42. * @param array $rules 自定义规则
  43. * @return array
  44. */
  45. public function rules($rules = []): array
  46. {
  47. return [
  48. [
  49. 'pet_id,item_id,num,user_id', 'required'
  50. ],
  51. [
  52. 'pet_id,item_id,num', 'integer', 'min' => 1,
  53. 'msg' => '{attr}必须是大于0的整数'
  54. ],
  55. // 验证宠物是否存在
  56. [
  57. 'pet_id', new PetExistsValidator($this),
  58. 'msg' => '宠物不存在或不属于当前用户'
  59. ],
  60. // 验证宠物状态是否正常
  61. [
  62. 'pet_id', new PetStatusValidator($this, [ PetStatus::NORMAL ]),
  63. 'msg' => '宠物状态不允许喂食'
  64. ],
  65. // 验证物品是否为宠物口粮
  66. [
  67. 'item_id', new PetFoodValidator($this),
  68. 'msg' => '该物品不是宠物口粮'
  69. ],
  70. // 验证物品数量是否足够
  71. [
  72. 'item_id', new ItemQuantityValidator($this, ['user_id', 'num']),
  73. 'msg' => '物品数量不足'
  74. ]
  75. ];
  76. }
  77. /**
  78. * 设置默认值
  79. *
  80. * @return array
  81. */
  82. public function default(): array
  83. {
  84. return [
  85. 'num' => 1
  86. ];
  87. }
  88. }