| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970 |
- <?php
- namespace app\controller;
- use app\BaseController;
- use app\common\cart\CartRepository;
- use app\validate\CreateCart;
- use think\exception\ValidateException;
- class Cart extends BaseController
- {
- public function createCart(){
- $data = $this -> request -> param();
- try {
- validate(CreateCart::class)->check($data);
- }catch (ValidateException $exception){
- return app('json') -> fail($exception->getError());
- }
- $cartRepository = new CartRepository();
- //商品检测
- $product = $cartRepository -> checkProduct($data);
- if(isset($product['bool']) && !$product['bool']) return app('json')->fail($product['message']);
- //购物车检测
- $cart = $cartRepository -> checkCart($this->request->uid(),$data['product_attr_unique']);
- if(isset($cart['bool']) && !$cart['bool']) return app('json')->fail($cart['message']);
- //不是立即购买,购物车存在
- if (!$data['is_new'] && $cart) {
- if ($product['sku']['stock'] < ($cart['cart_num'] + $data['cart_num']))
- return app('json')->fail('库存不足');
- //修改购物车数量
- $res = $cartRepository -> updateCart($cart['cart_id'], $cart['cart_num'] + $data['cart_num']);
- if(isset($res['bool']) && !$res['bool']) return app('json')->fail($res['message']);
- }else{
- if ($product['sku']['stock'] < $data['cart_num']) return app('json')->fail('库存不足');
- $data['uid'] = $this->request->uid();
- $data['mer_id'] = $product['product']['mer_id'];
- $cart = $cartRepository->createCart($data);
- if(isset($cart['bool']) && !$cart['bool']) return app('json')->fail($cart['message']);
- }
- return app('json')->success(['cart_id' => $cart['cart_id']]);
- }
- public function changeCart(){
- $data = $this -> request -> param();
- if (empty($data['cart_id'])) return app('json')->fail('cart_id不能为空');
- if (empty($data['cart_num'])) return app('json')->fail('数量必须大于0');
- $cartRepository = new CartRepository();
- $cartInfo = $cartRepository -> getOne($data['cart_id'],$this->request->uid());
- if(isset($cartInfo['bool']) && !$cartInfo['bool']) return app('json')->fail($cartInfo['message']);
- //商品检测
- $product = $cartRepository -> checkProduct([
- "cart_num" => $data['cart_num'],
- "product_id" => $cartInfo['product_id'],
- "product_attr_unique"=>$cartInfo['product_attr_unique']
- ]);
- if(isset($product['bool']) && !$product['bool']) return app('json')->fail($product['message']);
- //修改购物车数量
- $res = $cartRepository -> updateCart($data['cart_id'], $data['cart_num']);
- if(isset($res['bool']) && !$res['bool']) return app('json')->fail($res['message']);
- return app('json')->success('修改成功');
- }
- public function cartList(){
- $uid = $this -> request -> uid();
- $cartRepository = new CartRepository();
- $list = $cartRepository -> getListFromUid($uid);
- return app('json')->success($list);
- }
- }
|