From 6a7805e0769f46cb3a4805c811f8d39fe5aab555 Mon Sep 17 00:00:00 2001 From: xucong <850806214@qq.com> Date: Thu, 15 May 2025 16:13:08 +0800 Subject: [PATCH] =?UTF-8?q?1.=E6=8F=90=E4=BA=A4=E7=BC=BA=E5=A4=B1=E7=9A=84?= =?UTF-8?q?=E4=B8=9C=E8=A5=BF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/api/controller/CartController.php | 2 +- app/api/validate/CartValidate.php | 91 +++++++++++++++++++++++++++ 2 files changed, 92 insertions(+), 1 deletion(-) create mode 100644 app/api/validate/CartValidate.php diff --git a/app/api/controller/CartController.php b/app/api/controller/CartController.php index f6a13cc..f103554 100644 --- a/app/api/controller/CartController.php +++ b/app/api/controller/CartController.php @@ -38,7 +38,7 @@ class CartController extends BaseApiController public function add() { $post = $this->request->post(); - $check = $this->validate($post, 'app\api\validate\Cart.add'); + $check = $this->validate($post, 'app\api\validate\CartValidate.add'); if (true !== $check) { return $this->fail($check); } diff --git a/app/api/validate/CartValidate.php b/app/api/validate/CartValidate.php new file mode 100644 index 0000000..b46443e --- /dev/null +++ b/app/api/validate/CartValidate.php @@ -0,0 +1,91 @@ + 'require', + 'cart_id' => 'require|checkCart', + 'item_id' => 'require|checkGoods', + 'goods_num' => 'require|integer|gt:0', + 'selected' => 'require|in:0,1', + ]; + + protected $message = [ + 'item_id' => '请选择商品', + 'goods_num.require' => '商品数量不能为0', + 'goods_num.gt' => '商品数量需大于0', + 'goods_num.integer' => '商品数量需为整数', + 'cart_id.require' => '参数错误', + 'param.require' => '参数错误', + 'selected.require' => '参数错误', + 'selected.in' => '参数错误', + ]; + + protected function sceneAdd() + { + $this->only(['item_id', 'goods_num']); + } + + protected function sceneDel() + { + $this->only(['cart_id']); + } + + protected function sceneSelected() + { + $this->only(['cart_id', 'selected']); + } + + protected function sceneChange() + { + $this->only(['cart_id', 'goods_num']); + } + + + protected function checkCart($value, $rule, $data) + { + $cart = Db::name('cart')->where(['id' => $value])->find(); + if (!$cart){ + return '购物车不存在'; + } + return true; + } + + + protected function checkGoods($value, $rule, $data) + { + $goods = Db::name('goods g') + ->field('g.status') + ->join('goods_item i', 'i.goods_id = g.id') + ->where(['i.id' => $value, 'g.del' => 0]) + ->find(); + + if (!$goods || $goods['status'] == 0) { + return '商品已下架'; + } + return true; + } + +} \ No newline at end of file