Cart.php 3.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. <?php
  2. namespace app\controller;
  3. use app\BaseController;
  4. use app\common\cart\CartRepository;
  5. use app\validate\CreateCart;
  6. use think\exception\ValidateException;
  7. class Cart extends BaseController
  8. {
  9. public function createCart(){
  10. $data = $this -> request -> param();
  11. try {
  12. validate(CreateCart::class)->check($data);
  13. }catch (ValidateException $exception){
  14. return app('json') -> fail($exception->getError());
  15. }
  16. $cartRepository = new CartRepository();
  17. //商品检测
  18. $product = $cartRepository -> checkProduct($data);
  19. if(isset($product['bool']) && !$product['bool']) return app('json')->fail($product['message']);
  20. //购物车检测
  21. $cart = $cartRepository -> checkCart($this->request->uid(),$data['product_attr_unique']);
  22. if(isset($cart['bool']) && !$cart['bool']) return app('json')->fail($cart['message']);
  23. //不是立即购买,购物车存在
  24. if (!$data['is_new'] && $cart) {
  25. if ($product['sku']['stock'] < ($cart['cart_num'] + $data['cart_num']))
  26. return app('json')->fail('库存不足');
  27. //修改购物车数量
  28. $res = $cartRepository -> updateCart($cart['cart_id'], $cart['cart_num'] + $data['cart_num']);
  29. if(isset($res['bool']) && !$res['bool']) return app('json')->fail($res['message']);
  30. }else{
  31. if ($product['sku']['stock'] < $data['cart_num']) return app('json')->fail('库存不足');
  32. $data['uid'] = $this->request->uid();
  33. $data['mer_id'] = $product['product']['mer_id'];
  34. $cart = $cartRepository->createCart($data);
  35. if(isset($cart['bool']) && !$cart['bool']) return app('json')->fail($cart['message']);
  36. }
  37. return app('json')->success(['cart_id' => $cart['cart_id']]);
  38. }
  39. public function changeCart(){
  40. $data = $this -> request -> param();
  41. if (empty($data['cart_id'])) return app('json')->fail('cart_id不能为空');
  42. if (empty($data['cart_num'])) return app('json')->fail('数量必须大于0');
  43. $cartRepository = new CartRepository();
  44. $cartInfo = $cartRepository -> getOne($data['cart_id'],$this->request->uid());
  45. if(isset($cartInfo['bool']) && !$cartInfo['bool']) return app('json')->fail($cartInfo['message']);
  46. //商品检测
  47. $product = $cartRepository -> checkProduct([
  48. "cart_num" => $data['cart_num'],
  49. "product_id" => $cartInfo['product_id'],
  50. "product_attr_unique"=>$cartInfo['product_attr_unique']
  51. ]);
  52. if(isset($product['bool']) && !$product['bool']) return app('json')->fail($product['message']);
  53. //修改购物车数量
  54. $res = $cartRepository -> updateCart($data['cart_id'], $data['cart_num']);
  55. if(isset($res['bool']) && !$res['bool']) return app('json')->fail($res['message']);
  56. return app('json')->success('修改成功');
  57. }
  58. public function cartList(){
  59. $uid = $this -> request -> uid();
  60. $cartRepository = new CartRepository();
  61. $list = $cartRepository -> getListFromUid($uid);
  62. return app('json')->success($list);
  63. }
  64. }