ItemCraftValidation.php 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. <?php
  2. namespace App\Module\GameItems\Validations;
  3. use App\Module\GameItems\Validators\CraftRecipeValidator;
  4. use App\Module\GameItems\Validators\CraftConsumeValidator;
  5. use App\Module\GameItems\Validators\CraftConditionValidator;
  6. use UCore\ValidationCore;
  7. /**
  8. * 物品合成验证类
  9. *
  10. * 用于验证物品合成操作的输入数据,包括用户ID、配方ID和数量
  11. */
  12. class ItemCraftValidation extends ValidationCore
  13. {
  14. /** @var \App\Module\GameItems\Models\ItemRecipe|null 合成配方对象,由 CraftRecipeValidator 设置 */
  15. public ?\App\Module\GameItems\Models\ItemRecipe $recipe = null;
  16. /**
  17. * 验证规则
  18. *
  19. * @param array $rules 自定义规则
  20. * @return array
  21. */
  22. public function rules($rules = []): array
  23. {
  24. return [
  25. [
  26. 'user_id,recipe_id', 'required'
  27. ],
  28. [
  29. 'user_id,recipe_id,quantity', 'integer', 'min' => 1,
  30. 'msg' => '{attr}必须是大于0的整数'
  31. ],
  32. // 验证配方是否存在且可用
  33. [
  34. 'recipe_id', new CraftRecipeValidator($this, ['recipe']),
  35. 'msg' => '配方验证失败'
  36. ],
  37. // 验证合成条件是否满足
  38. [
  39. 'recipe_id', new CraftConditionValidator($this, ['user_id', 'recipe']),
  40. 'msg' => '合成条件不满足'
  41. ],
  42. // 验证合成消耗是否充足
  43. [
  44. 'recipe_id', new CraftConsumeValidator($this, ['user_id', 'quantity', 'recipe']),
  45. 'msg' => '合成消耗不足'
  46. ]
  47. ];
  48. }
  49. /**
  50. * 设置默认值
  51. *
  52. * @return array
  53. */
  54. public function default(): array
  55. {
  56. return [
  57. 'quantity' => 1
  58. ];
  59. }
  60. }