123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081 |
- <?php
- namespace app\api\validate;
- use think\Validate;
- class Cart extends Validate
- {
- /**
- * 验证规则
- */
- protected $rule = [
- 'goods_id' => 'require|integer|gt:0',
- 'goods_sku_id' => 'integer|egt:0',
- 'nums' => 'require|integer|gt:0',
- 'cartIds' => 'require|array|min:1',
- 'isChecked' => 'require|in:0,1',
- 'id' => 'require|array|checkCartIdsArray',
- ];
- /**
- * 提示消息
- */
- protected $message = [
- 'goods_id.require' => '商品ID不能为空',
- 'goods_id.integer' => '商品ID必须是整数',
- 'goods_id.gt' => '商品ID必须大于0',
- 'goods_sku_id.integer' => '商品规格ID必须是整数',
- 'goods_sku_id.egt' => '商品规格ID必须大于或等于0',
- 'nums.require' => '商品数量不能为空',
- 'nums.integer' => '商品数量必须是整数',
- 'nums.gt' => '商品数量必须大于0',
- 'cartIds.require' => '购物车ID不能为空',
- 'cartIds.array' => '购物车ID必须为数组',
- 'cartIds.min' => '至少选择一个购物车项',
- 'isChecked.require' => '选中状态不能为空',
- 'isChecked.in' => '选中状态只能是0或1',
- 'id.require' => '购物车ID不能为空',
- 'id.array' => '购物车ID必须为数组'
- ];
- /**
- * 验证场景
- */
- protected $scene = [
- 'add' => ['goods_id', 'goods_sku_id', 'nums'],
- 'set_nums' => ['nums'],
- 'checked' => ['cartIds', 'isChecked'],
- 'del' => ['id'],
- ];
- /**
- * 自定义验证规则 - 验证商品ID数组格式
- */
- protected function checkCartIdsArray($value, $rule, $data = [])
- {
- // 允许为空数组
- if (empty($value)) {
- return true;
- }
- // 必须是数组
- if (!is_array($value)) {
- return '购物车ID必须为数组格式';
- }
- // 检查数组中的每个值
- foreach ($value as $id) {
- if (!is_numeric($id) || intval($id) <= 0) {
- return '购物车ID必须为正整数';
- }
- }
- // 检查数量限制
- if (count($value) > 100) {
- return '一次最多删除100个商品';
- }
- return true;
- }
- }
|