Cart.php 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125
  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. */
  25. public function add(Request $request)
  26. {
  27. $post = UtilService::getMore([
  28. ['product_id', '', 'empty', '参数错误'],
  29. ['cart_num', 1],
  30. ['product_attr_unique', ''],
  31. ], $request);
  32. // 获取商品信息
  33. $product = Db::name('store_product')->where('id', $post['product_id'])->find();
  34. if (!$product) {
  35. return app('json')->fail('商品不存在');
  36. }
  37. // 获取SKU信息
  38. $skuInfo = null;
  39. if (!empty($post['product_attr_unique'])) {
  40. $skuInfo = (new StoreProductAttrValue())->getSkuBySuk($post['product_id'], $post['product_attr_unique']);
  41. if (!$skuInfo) {
  42. return app('json')->fail('商品规格不存在');
  43. }
  44. }
  45. $data = [
  46. 'uid' => $request->user['uid'],
  47. 'product_id' => $post['product_id'],
  48. 'cart_num' => $post['cart_num'],
  49. 'product_attr_unique' => $post['product_attr_unique'],
  50. 'time' => time(),
  51. ];
  52. $result = (new StoreCart())->addToCart($data);
  53. if ($result) {
  54. return app('json')->success('添加成功');
  55. } else {
  56. return app('json')->fail('添加失败');
  57. }
  58. }
  59. /**
  60. * 修改购物车数量
  61. * @param Request $request
  62. */
  63. public function updateNum(Request $request)
  64. {
  65. $post = UtilService::getMore([
  66. ['id', '', 'empty', '参数错误'],
  67. ['cart_num', 1],
  68. ], $request);
  69. if ($post['cart_num'] <= 0) {
  70. return app('json')->fail('数量必须大于0');
  71. }
  72. $result = (new StoreCart())->updateCartNum($post['id'], $post['cart_num'], $request->user['uid']);
  73. if ($result) {
  74. return app('json')->success('修改成功');
  75. } else {
  76. return app('json')->fail('修改失败');
  77. }
  78. }
  79. /**
  80. * 删除购物车
  81. * @param Request $request
  82. */
  83. public function delete(Request $request)
  84. {
  85. $post = UtilService::getMore([
  86. ['ids', '', 'empty', '参数错误'],
  87. ], $request);
  88. $ids = explode(',', $post['ids']);
  89. $result = (new StoreCart())->deleteCart($ids, $request->user['uid']);
  90. if ($result) {
  91. return app('json')->success('删除成功');
  92. } else {
  93. return app('json')->fail('删除失败');
  94. }
  95. }
  96. /**
  97. * 获取购物车数量
  98. * @param Request $request
  99. */
  100. public function count(Request $request)
  101. {
  102. $count = Db::name('store_cart')
  103. ->where('uid', $request->user['uid'])
  104. ->count();
  105. return app('json')->success(['count' => $count]);
  106. }
  107. }