Cart.php 6.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191
  1. <?php
  2. /**
  3. * Niushop商城系统 - 团队十年电商经验汇集巨献!
  4. * =========================================================
  5. * Copy right 2019-2029 杭州牛之云科技有限公司, 保留所有权利。
  6. * ----------------------------------------------
  7. * 官方网址: https://www.niushop.com
  8. * =========================================================
  9. */
  10. namespace app\model\goods;
  11. use app\model\BaseModel;
  12. use app\model\system\Stat;
  13. /**
  14. * 购物车
  15. */
  16. class Cart extends BaseModel
  17. {
  18. /**
  19. * 添加购物车
  20. * @param unknown $data
  21. */
  22. public function addCart($data)
  23. {
  24. $cart_info = model("goods_cart")->getInfo([ [ 'sku_id', '=', $data[ 'sku_id' ] ], [ 'member_id', '=', $data[ 'member_id' ] ] ], 'cart_id, num');
  25. if (!empty($cart_info)) {
  26. $update = [
  27. 'num' => $cart_info[ 'num' ] + $data[ 'num' ]
  28. ];
  29. if (isset($data[ 'form_data' ]) && !empty($data[ 'form_data' ])) $update[ 'form_data' ] = $data[ 'form_data' ];
  30. $res = model("goods_cart")->update($update, [ [ 'cart_id', '=', $cart_info[ 'cart_id' ] ] ]);
  31. $stat_model = new Stat();
  32. $stat_model->switchStat([ 'type' => 'goods_cart', 'data' => [
  33. 'goods_cart_count' => $data[ 'num' ],
  34. 'site_id' => $data[ 'site_id' ]
  35. ] ]);
  36. } else {
  37. $res = model("goods_cart")->add($data);
  38. $stat_model = new Stat();
  39. $stat_model->switchStat([ 'type' => 'goods_cart', 'data' => [
  40. 'goods_cart_count' => $data[ 'num' ],
  41. 'site_id' => $data[ 'site_id' ]
  42. ] ]);
  43. }
  44. return $this->success($res);
  45. }
  46. /**
  47. * 更新购物车商品数量
  48. * @param unknown $data
  49. */
  50. public function editCart($data)
  51. {
  52. $update = [
  53. 'num' => $data[ 'num' ]
  54. ];
  55. if (isset($data[ 'form_data' ]) && !empty($data[ 'form_data' ])) $update[ 'form_data' ] = $data[ 'form_data' ];
  56. $condition = [ [ 'cart_id', '=', $data[ 'cart_id' ] ], [ 'member_id', '=', $data[ 'member_id' ] ] ];
  57. $info = model("goods_cart")->getInfo($condition, 'site_id,num');
  58. if (empty($info))
  59. return $this->error();
  60. $res = model("goods_cart")->update($update, $condition);
  61. $stat_model = new Stat();
  62. $stat_model->switchStat([ 'type' => 'goods_cart', 'data' => [
  63. 'goods_cart_count' => $data[ 'num' ] - $info[ 'num' ],
  64. 'site_id' => $info[ 'site_id' ]
  65. ] ]);
  66. return $this->success($res);
  67. }
  68. /**
  69. * 删除购物车商品项(可以多项)
  70. * @param unknown $data
  71. */
  72. public function deleteCart($data)
  73. {
  74. $res = model("goods_cart")->delete([ [ 'cart_id', 'in', explode(',', $data[ 'cart_id' ]) ], [ 'member_id', '=', $data[ 'member_id' ] ] ]);
  75. return $this->success($res);
  76. }
  77. /**
  78. * 清空购物车
  79. * @param unknown $data
  80. */
  81. public function clearCart($data)
  82. {
  83. $res = model("goods_cart")->delete([ [ 'member_id', '=', $data[ 'member_id' ] ] ]);
  84. return $this->success($res);
  85. }
  86. /**
  87. * 获取会员购物车
  88. * @param unknown $member_id
  89. * @param unknown $site_id
  90. */
  91. public function getCart($member_id, $site_id)
  92. {
  93. $field = 'ngc.cart_id, ngc.site_id, ngc.member_id, ngc.sku_id, ngc.num, ngs.sku_name,ngs.goods_id,
  94. ngs.sku_no, ngs.sku_spec_format,ngs.price,ngs.market_price, ngs.goods_spec_format,
  95. ngs.discount_price, ngs.promotion_type, ngs.start_time, ngs.end_time, ngs.stock,
  96. ngs.sku_image, ngs.sku_images, ngs.goods_state, ngs.goods_stock_alarm, ngs.is_virtual, ngs.goods_name,
  97. ngs.virtual_indate, ngs.is_free_shipping, ngs.shipping_template, ngs.unit, ngs.introduction,ngs.sku_spec_format, ngs.keywords, ngs.max_buy, ngs.min_buy, ns.site_name, ngs.is_limit, ngs.limit_type';
  98. $alias = 'ngc';
  99. $join = [
  100. [
  101. 'goods_sku ngs',
  102. 'ngc.sku_id = ngs.sku_id',
  103. 'inner'
  104. ],
  105. [
  106. 'site ns',
  107. 'ngc.site_id = ns.site_id',
  108. 'inner'
  109. ],
  110. ];
  111. $list = model("goods_cart")->getList([ [ 'ngc.member_id', '=', $member_id ], [ 'ngc.site_id', '=', $site_id ], [ 'ngs.is_delete', '=', 0 ] ], $field, 'ngc.cart_id desc', $alias, $join);
  112. foreach ($list as $k => $v) {
  113. $list[ $k ][ 'stock' ] = numberFormat($list[ $k ][ 'stock' ]);
  114. }
  115. return $this->success($list);
  116. }
  117. /**
  118. * 获取购物车数量
  119. * @param unknown $member_id
  120. */
  121. public function getCartCount($member_id)
  122. {
  123. $list = model("goods_cart")->getCount([ [ 'member_id', '=', $member_id ] ]);
  124. return $this->success($list);
  125. }
  126. /**
  127. * 获取购物车数量
  128. * @param $condition
  129. * @return array
  130. */
  131. public function getCartSum($condition, $field, $alias = 'a', $join = null)
  132. {
  133. $sum = model("goods_cart")->getSum($condition, $field, $alias, $join);
  134. return $this->success($sum);
  135. }
  136. public function getCartList($condition = [], $field = 'cart_id,site_id,member_id,sku_id,num', $order = 'cart_id desc')
  137. {
  138. $alias = 'gc';
  139. $join = [
  140. [
  141. 'goods_sku gs',
  142. 'gc.sku_id = gs.sku_id',
  143. 'inner'
  144. ]
  145. ];
  146. $list = model("goods_cart")->getList($condition, $field, $order, $alias, $join);
  147. foreach ($list as $k => $v) {
  148. if (isset($v[ 'stock' ])) {
  149. $list[ $k ][ 'stock' ] = numberFormat($list[ $k ][ 'stock' ]);
  150. }
  151. }
  152. return $this->success($list);
  153. }
  154. /**
  155. * 修改购物车sku
  156. * @param $data
  157. */
  158. public function editCartSku($data)
  159. {
  160. $info = model("goods_cart")->getInfo([ [ 'cart_id', '=', $data[ 'cart_id' ] ], [ 'site_id', '=', $data[ 'site_id' ] ], [ 'member_id', '=', $data[ 'member_id' ] ] ], 'sku_id');
  161. if (empty($info)) return $this->error();
  162. if ($info[ 'sku_id' ] == $data[ 'sku_id' ]) {
  163. model("goods_cart")->update([ 'num' => $data[ 'num' ] ], [ [ 'cart_id', '=', $data[ 'cart_id' ] ] ]);
  164. } else {
  165. $cart_info = model("goods_cart")->getInfo([ [ 'sku_id', '=', $data[ 'sku_id' ] ], [ 'site_id', '=', $data[ 'site_id' ] ], [ 'member_id', '=', $data[ 'member_id' ] ] ], 'cart_id');
  166. if (!empty($cart_info)) {
  167. model("goods_cart")->delete([ [ 'cart_id', '=', $cart_info[ 'cart_id' ] ] ]);
  168. }
  169. model("goods_cart")->update([ 'num' => $data[ 'num' ], 'sku_id' => $data[ 'sku_id' ] ], [ [ 'cart_id', '=', $data[ 'cart_id' ] ] ]);
  170. }
  171. return $this->success();
  172. }
  173. }