Cart.php 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  1. <?php
  2. namespace app\api\validate;
  3. use think\Validate;
  4. class Cart extends Validate
  5. {
  6. /**
  7. * 验证规则
  8. */
  9. protected $rule = [
  10. 'goods_id' => 'require|integer|gt:0',
  11. 'goods_sku_id' => 'integer|egt:0',
  12. 'nums' => 'require|integer|gt:0',
  13. 'cartIds' => 'require|array|min:1',
  14. 'isChecked' => 'require|in:0,1',
  15. 'id' => 'require|array|checkCartIdsArray',
  16. ];
  17. /**
  18. * 提示消息
  19. */
  20. protected $message = [
  21. 'goods_id.require' => '商品ID不能为空',
  22. 'goods_id.integer' => '商品ID必须是整数',
  23. 'goods_id.gt' => '商品ID必须大于0',
  24. 'goods_sku_id.integer' => '商品规格ID必须是整数',
  25. 'goods_sku_id.egt' => '商品规格ID必须大于或等于0',
  26. 'nums.require' => '商品数量不能为空',
  27. 'nums.integer' => '商品数量必须是整数',
  28. 'nums.gt' => '商品数量必须大于0',
  29. 'cartIds.require' => '购物车ID不能为空',
  30. 'cartIds.array' => '购物车ID必须为数组',
  31. 'cartIds.min' => '至少选择一个购物车项',
  32. 'isChecked.require' => '选中状态不能为空',
  33. 'isChecked.in' => '选中状态只能是0或1',
  34. 'id.require' => '购物车ID不能为空',
  35. 'id.array' => '购物车ID必须为数组'
  36. ];
  37. /**
  38. * 验证场景
  39. */
  40. protected $scene = [
  41. 'add' => ['goods_id', 'goods_sku_id', 'nums'],
  42. 'set_nums' => ['nums'],
  43. 'checked' => ['cartIds', 'isChecked'],
  44. 'del' => ['id'],
  45. ];
  46. /**
  47. * 自定义验证规则 - 验证商品ID数组格式
  48. */
  49. protected function checkCartIdsArray($value, $rule, $data = [])
  50. {
  51. // 允许为空数组
  52. if (empty($value)) {
  53. return true;
  54. }
  55. // 必须是数组
  56. if (!is_array($value)) {
  57. return '购物车ID必须为数组格式';
  58. }
  59. // 检查数组中的每个值
  60. foreach ($value as $id) {
  61. if (!is_numeric($id) || intval($id) <= 0) {
  62. return '购物车ID必须为正整数';
  63. }
  64. }
  65. // 检查数量限制
  66. if (count($value) > 100) {
  67. return '一次最多删除100个商品';
  68. }
  69. return true;
  70. }
  71. }