ShopBuyValidation.php 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. <?php
  2. namespace App\Module\Shop\Validations;
  3. use App\Module\Shop\Validators\ShopItemValidator;
  4. use App\Module\Shop\Validators\ShopBuyLimitValidator;
  5. use App\Module\Shop\Validators\ShopFundValidator;
  6. use UCore\ValidationCore;
  7. /**
  8. * 商店购买验证类
  9. *
  10. * 用于验证商店购买操作的输入数据,包括用户ID、商品ID和购买数量
  11. */
  12. class ShopBuyValidation extends ValidationCore
  13. {
  14. /** @var \App\Module\Shop\Models\ShopItem|null 商品对象,由 ShopItemValidator 设置 */
  15. public ?\App\Module\Shop\Models\ShopItem $shop_item = 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,good_id,number', 'required'
  27. ],
  28. [
  29. 'user_id,good_id,number', 'integer', 'min' => 1,
  30. 'msg' => '{attr}必须是大于0的整数'
  31. ],
  32. // 验证商品是否存在且可购买
  33. [
  34. 'good_id', new ShopItemValidator($this, ['shop_item']),
  35. 'msg' => '商品验证失败'
  36. ],
  37. // 验证购买限制
  38. [
  39. 'good_id', new ShopBuyLimitValidator($this, ['user_id', 'number', 'shop_item']),
  40. 'msg' => '购买限制验证失败'
  41. ],
  42. // 验证用户资金是否充足
  43. [
  44. 'good_id', new ShopFundValidator($this, ['user_id', 'number', 'shop_item']),
  45. 'msg' => '资金不足'
  46. ]
  47. ];
  48. }
  49. /**
  50. * 设置默认值
  51. *
  52. * @return array
  53. */
  54. public function default(): array
  55. {
  56. return [];
  57. }
  58. }