Cart.php 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126
  1. <?php
  2. declare (strict_types=1);
  3. namespace app\api\controller;
  4. use app\BaseController;
  5. use app\model\api\StoreCart;
  6. use app\model\api\StoreProductAttrValue;
  7. use app\Request;
  8. use library\services\UtilService;
  9. use think\facade\Db;
  10. class Cart extends BaseController
  11. {
  12. /**
  13. * 获取购物车列表
  14. * @param Request $request
  15. */
  16. public function list(Request $request)
  17. {
  18. $list = (new StoreCart())->getCartList($request->user['uid']);
  19. return app('json')->success($list);
  20. }
  21. /**
  22. * 添加购物车
  23. * @param Request $request
  24. * @return \think\response\Json
  25. */
  26. public function add(Request $request)
  27. {
  28. $post = UtilService::getMore([
  29. ['product_id', '', 'empty', '参数错误'],
  30. ['cart_num', 1],
  31. ['product_attr_unique', ''],
  32. ], $request);
  33. // 获取商品信息
  34. $product = Db::name('store_product')->where('id', $post['product_id'])->find();
  35. if (!$product) {
  36. return app('json')->fail('商品不存在');
  37. }
  38. // 获取SKU信息
  39. $skuInfo = null;
  40. if (!empty($post['product_attr_unique'])) {
  41. $skuInfo = (new StoreProductAttrValue())->getSkuBySuk($post['product_id'], $post['product_attr_unique']);
  42. if (!$skuInfo) {
  43. return app('json')->fail('商品规格不存在');
  44. }
  45. }
  46. $data = [
  47. 'uid' => $request->user['uid'],
  48. 'product_id' => $post['product_id'],
  49. 'cart_num' => $post['cart_num'],
  50. 'product_attr_unique' => $post['product_attr_unique'],
  51. 'create_time' => time(),
  52. ];
  53. $cartId = (new StoreCart())->addToCart($data);
  54. if ($cartId) {
  55. return app('json')->success('添加成功', ['id' => $cartId]);
  56. } else {
  57. return app('json')->fail('添加失败');
  58. }
  59. }
  60. /**
  61. * 修改购物车数量
  62. * @param Request $request
  63. */
  64. public function updateNum(Request $request)
  65. {
  66. $post = UtilService::getMore([
  67. ['id', '', 'empty', '参数错误'],
  68. ['cart_num', 1],
  69. ], $request);
  70. if ($post['cart_num'] <= 0) {
  71. return app('json')->fail('数量必须大于0');
  72. }
  73. $result = (new StoreCart())->updateCartNum($post['id'], $post['cart_num'], $request->user['uid']);
  74. if ($result) {
  75. return app('json')->success('修改成功');
  76. } else {
  77. return app('json')->fail('修改失败');
  78. }
  79. }
  80. /**
  81. * 删除购物车
  82. * @param Request $request
  83. */
  84. public function delete(Request $request)
  85. {
  86. $post = UtilService::getMore([
  87. ['ids', '', 'empty', '参数错误'],
  88. ], $request);
  89. $ids = explode(',', $post['ids']);
  90. $result = (new StoreCart())->deleteCart($ids, $request->user['uid']);
  91. if ($result) {
  92. return app('json')->success('删除成功');
  93. } else {
  94. return app('json')->fail('删除失败');
  95. }
  96. }
  97. /**
  98. * 获取购物车数量
  99. * @param Request $request
  100. */
  101. public function count(Request $request)
  102. {
  103. $count = Db::name('store_cart')
  104. ->where('uid', $request->user['uid'])
  105. ->count();
  106. return app('json')->success(['count' => $count]);
  107. }
  108. }