Cart.php 8.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278
  1. <?php
  2. namespace addon\jielong\api\controller;
  3. use addon\jielong\model\Cart as CartModel;
  4. use app\model\goods\Goods;
  5. use app\api\controller\BaseApi;
  6. class Cart extends BaseApi
  7. {
  8. /**
  9. * 添加信息
  10. */
  11. public function add()
  12. {
  13. $token = $this->checkToken();
  14. if ($token[ 'code' ] < 0) return $this->response($token);
  15. $sku_id = isset($this->params[ 'sku_id' ]) ? $this->params[ 'sku_id' ] : 0;
  16. $num = isset($this->params[ 'num' ]) ? $this->params[ 'num' ] : 0;
  17. $jielong_id = isset($this->params[ 'jielong_id' ]) ? $this->params[ 'jielong_id' ] : 0;
  18. if (empty($sku_id)) {
  19. return $this->response($this->error('', 'REQUEST_SKU_ID'));
  20. }
  21. if (empty($num)) {
  22. return $this->response($this->error('', 'REQUEST_NUM'));
  23. }
  24. $sku_model = new Goods();
  25. $condition = [ [ 'sku_id', '=', $sku_id ] ];
  26. $skuInfo = $sku_model->getGoodsSkuInfo($condition, 'sku_id,stock');
  27. if (!empty($skuInfo[ 'data' ])) {
  28. if ($skuInfo[ 'data' ][ 'stock' ] < $num) return $this->response($this->error('', '库存不足!'));
  29. } else {
  30. return $this->response($this->error('', '商品不存在!'));
  31. }
  32. if (empty($jielong_id)) {
  33. return $this->response($this->error('', 'REQUEST_JIELONG_ID'));
  34. }
  35. $cart = new CartModel();
  36. $data = [
  37. 'site_id' => $this->site_id,
  38. 'member_id' => $token[ 'data' ][ 'member_id' ],
  39. 'sku_id' => $sku_id,
  40. 'num' => $num,
  41. 'jielong_id' => $jielong_id
  42. ];
  43. $res = $cart->addCart($data);
  44. return $this->response($res);
  45. }
  46. /**
  47. * 编辑信息
  48. */
  49. public function edit()
  50. {
  51. $token = $this->checkToken();
  52. if ($token[ 'code' ] < 0) return $this->response($token);
  53. $cart_id = isset($this->params[ 'cart_id' ]) ? $this->params[ 'cart_id' ] : 0;
  54. $num = isset($this->params[ 'num' ]) ? $this->params[ 'num' ] : 0;
  55. if (empty($cart_id)) {
  56. return $this->response($this->error('', 'REQUEST_CART_ID'));
  57. }
  58. if (empty($num)) {
  59. return $this->response($this->error('', 'REQUEST_NUM'));
  60. }
  61. $cart = new CartModel();
  62. $alias = 'pjc';
  63. $join = [ [ 'goods_sku ngs', 'ngs.sku_id = pjc.sku_id', 'left' ] ];
  64. $fields = 'ngs.stock,ngs.sku_id';
  65. $condition = [ [ 'pjc.cart_id', '=', $cart_id ] ];
  66. $cartSkuInfo = $cart->getCartSkuInfo($condition, $fields, $alias, $join);
  67. if (!empty($cartSkuInfo[ 'data' ])) {
  68. if ($cartSkuInfo[ 'data' ][ 'stock' ] < $num) return $this->response($this->error('', '库存不足!'));
  69. } else {
  70. return $this->response($this->error('', '商品不存在!'));
  71. }
  72. $data = [
  73. 'cart_id' => $cart_id,
  74. 'member_id' => $token[ 'data' ][ 'member_id' ],
  75. 'num' => $num
  76. ];
  77. $res = $cart->editCart($data);
  78. return $this->response($res);
  79. }
  80. /**
  81. * 删除信息
  82. */
  83. public function delete()
  84. {
  85. $token = $this->checkToken();
  86. if ($token[ 'code' ] < 0) return $this->response($token);
  87. $cart_id = isset($this->params[ 'cart_id' ]) ? $this->params[ 'cart_id' ] : 0;
  88. if (empty($cart_id)) {
  89. return $this->response($this->error('', 'REQUEST_CART_ID'));
  90. }
  91. $cart = new CartModel();
  92. $data = [
  93. 'cart_id' => $cart_id,
  94. 'member_id' => $token[ 'data' ][ 'member_id' ]
  95. ];
  96. $res = $cart->deleteCart($data);
  97. return $this->response($res);
  98. }
  99. /**
  100. * 清空购物车
  101. */
  102. public function clear()
  103. {
  104. $token = $this->checkToken();
  105. if ($token[ 'code' ] < 0) return $this->response($token);
  106. $jielong_id = isset($this->params[ 'jielong_id' ]) ? $this->params[ 'jielong_id' ] : 0;
  107. if (empty($jielong_id)) {
  108. return $this->response($this->error('', 'REQUEST_JIELONG_ID'));
  109. }
  110. $cart = new CartModel();
  111. $data = [
  112. 'member_id' => $token[ 'data' ][ 'member_id' ],
  113. 'jielong_id' => $jielong_id
  114. ];
  115. $res = $cart->clearCart($data);
  116. return $this->response($res);
  117. }
  118. /**
  119. * 商品购物车列表
  120. */
  121. public function goodsLists()
  122. {
  123. $token = $this->checkToken();
  124. if ($token[ 'code' ] < 0) return $this->response($token);
  125. $jielong_id = isset($this->params[ 'jielong_id' ]) ? $this->params[ 'jielong_id' ] : 0;
  126. if (empty($jielong_id)) {
  127. return $this->response($this->error('', 'REQUEST_JIELONG_ID'));
  128. }
  129. $cart = new CartModel();
  130. $list = $cart->getCart($token[ 'data' ][ 'member_id' ], $this->site_id, $jielong_id);
  131. $goods = new Goods();
  132. if (!empty($list[ 'data' ])) {
  133. foreach ($list[ 'data' ] as $k => $v) {
  134. if ($token[ 'code' ] >= 0) {
  135. // 是否参与会员等级折扣
  136. $goods_member_price = $goods->getGoodsPrice($v[ 'sku_id' ], $this->member_id);
  137. $goods_member_price = $goods_member_price[ 'data' ];
  138. if (!empty($goods_member_price[ 'member_price' ])) {
  139. $list[ 'data' ][ $k ][ 'member_price' ] = $goods_member_price[ 'price' ];
  140. }
  141. }
  142. }
  143. }
  144. return $this->response($list);
  145. }
  146. /**
  147. * 获取购物车数量
  148. * @return string
  149. */
  150. public function count()
  151. {
  152. $token = $this->checkToken();
  153. if ($token[ 'code' ] < 0) return $this->response($token);
  154. $jielong_id = isset($this->params[ 'jielong_id' ]) ? $this->params[ 'jielong_id' ] : 0;
  155. if (empty($jielong_id)) {
  156. return $this->response($this->error('', 'REQUEST_JIELONG_ID'));
  157. }
  158. $cart = new CartModel();
  159. // $list = $cart->getCartCount($token['data']['member_id'],$jielong_id);
  160. $condition = [
  161. [ 'gc.jielong_id', '=', $jielong_id ],
  162. [ 'gc.member_id', '=', $token[ 'data' ][ 'member_id' ] ],
  163. [ 'gc.site_id', '=', $this->site_id ],
  164. [ 'gs.goods_state', '=', 1 ],
  165. [ 'gs.is_delete', '=', 0 ]
  166. ];
  167. $list = $cart->getCartList($condition, 'gc.num');
  168. $list = $list[ 'data' ];
  169. $count = 0;
  170. foreach ($list as $k => $v) {
  171. $count += $v[ 'num' ];
  172. }
  173. return $this->response($this->success($count));
  174. }
  175. /**
  176. * 购物车关联列表
  177. * @return false|string
  178. */
  179. public function lists()
  180. {
  181. $token = $this->checkToken();
  182. if ($token[ 'code' ] < 0) return $this->response($token);
  183. $jielong_id = isset($this->params[ 'jielong_id' ]) ? $this->params[ 'jielong_id' ] : 0;
  184. if (empty($jielong_id)) {
  185. return $this->response($this->error('', 'REQUEST_JIELONG_ID'));
  186. }
  187. $cart = new CartModel();
  188. $condition = [
  189. [ 'gc.member_id', '=', $token[ 'data' ][ 'member_id' ] ],
  190. [ 'gc.site_id', '=', $this->site_id ],
  191. [ 'gc.jielong_id', '=', $jielong_id ]
  192. ];
  193. $list = $cart->getCartList($condition, 'gc.cart_id,gc.sku_id,gc.num');
  194. return $this->response($list);
  195. }
  196. /**
  197. * 获取会员购物车中商品数量
  198. * @return false|string
  199. */
  200. public function goodsNumCopy()
  201. {
  202. $token = $this->checkToken();
  203. if ($token[ 'code' ] < 0) return $this->response($token);
  204. $jielong_id = isset($this->params[ 'jielong_id' ]) ? $this->params[ 'jielong_id' ] : 0;
  205. if (empty($jielong_id)) {
  206. return $this->response($this->error('', 'REQUEST_JIELONG_ID'));
  207. }
  208. $goods_id = $this->params[ 'goods_id' ] ?? 0;
  209. $condition = [
  210. [ 'gc.jielong_id', '=', $jielong_id ],
  211. [ 'gc.member_id', '=', $this->member_id ],
  212. [ 'gc.site_id', '=', $this->site_id ],
  213. [ 'gs.goods_id', '=', $goods_id ]
  214. ];
  215. $join = [
  216. [
  217. 'goods_sku gs',
  218. 'gc.sku_id = gs.sku_id',
  219. 'left'
  220. ]
  221. ];
  222. $cart = new CartModel();
  223. $data = $cart->getCartSumCopy($condition, 'gc.num', 'gc', $join);
  224. return $this->response($data);
  225. }
  226. public function goodsNum()
  227. {
  228. $token = $this->checkToken();
  229. if ($token[ 'code' ] < 0) return $this->response($token);
  230. $jielong_id = isset($this->params[ 'jielong_id' ]) ? $this->params[ 'jielong_id' ] : 0;
  231. if (empty($jielong_id)) {
  232. return $this->response($this->error('', 'REQUEST_JIELONG_ID'));
  233. }
  234. $condition = [
  235. [ 'jielong_id', '=', $jielong_id ],
  236. [ 'member_id', '=', $this->member_id ],
  237. [ 'site_id', '=', $this->site_id ],
  238. ];
  239. $cart = new CartModel();
  240. $data = $cart->getCartSum($condition);
  241. return $this->response($data);
  242. }
  243. }