Cart.php 2.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  1. <?php
  2. namespace app\api\controller\order;
  3. use app\api\controller\Controller;
  4. use app\api\model\order\Cart as CartModel;
  5. use app\api\model\product\Product as ProductModel;
  6. /**
  7. * 购物车控制器
  8. */
  9. class Cart extends Controller
  10. {
  11. private $user;
  12. // $model
  13. private $model;
  14. /**
  15. * 构造方法
  16. */
  17. public function initialize()
  18. {
  19. parent::initialize();
  20. $this->user = $this->getUser();
  21. $this->model = new CartModel($this->user);
  22. }
  23. /**
  24. * 购物车列表
  25. */
  26. public function lists()
  27. {
  28. // 请求参数
  29. $param = $this->request->param();
  30. $cartIds = isset($param['cart_ids']) ? $param['cart_ids'] : '';
  31. // 购物车商品列表
  32. $productList = $this->model->getList($cartIds);
  33. // 会员价
  34. $product_model = new ProductModel();
  35. foreach ($productList as $product){
  36. $product_model->setProductGradeMoney($this->user, $product);
  37. }
  38. return $this->renderSuccess('', $productList);
  39. }
  40. /**
  41. * 加入购物车
  42. * @param int $product_id 商品id
  43. * @param int $product_num 商品数量
  44. * @param string $product_sku_id 商品sku索引
  45. */
  46. public function add()
  47. {
  48. $data = $this->request->param();
  49. $product_id = $data['product_id'];
  50. $product_num = $data['total_num'];
  51. $product_sku_id = $data['product_sku_id'];
  52. $model = $this->model;
  53. if (!$model->add($product_id, $product_num, $product_sku_id)) {
  54. return $this->renderError($model->getError() ?: '加入购物车失败');
  55. }
  56. // 购物车商品总数量
  57. $totalNum = $model->getProductNum();
  58. return $this->renderSuccess('加入购物车成功', ['cart_total_num' => $totalNum]);
  59. }
  60. /**
  61. * 减少购物车商品数量
  62. * @param $product_id
  63. * @param $product_sku_id
  64. * @return array
  65. */
  66. public function sub($product_id, $product_sku_id)
  67. {
  68. $this->model->sub($product_id, $product_sku_id);
  69. return $this->renderSuccess('');
  70. }
  71. /**
  72. * 删除购物车中指定商品
  73. * @param $product_sku_id (支持字符串ID集)
  74. * @return array
  75. */
  76. public function delete($product_sku_id)
  77. {
  78. $this->model->delete($product_sku_id);
  79. return $this->renderSuccess('删除成功');
  80. }
  81. }