cart.php 26 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643
  1. <?php
  2. /**
  3. * 我的购物车
  4. */
  5. //use Shopnc\Tpl;
  6. defined('InShopNC') or exit('Access Invalid!');
  7. require_once (BASE_ROOT_PATH . '/helper/goods_helper.php');
  8. class cartControl extends mobileControl
  9. {
  10. public function __construct()
  11. {
  12. parent::__construct();
  13. }
  14. public function listexOp()
  15. {
  16. $model_cart = Model('cart');
  17. $minest_cartid = intval($_GET['minest_cartid']);
  18. $has_more = false;
  19. $pages = 1;
  20. if($_SESSION['is_login'] == 1)
  21. {
  22. $page_size = $this->page_size();
  23. if($minest_cartid > 0) {
  24. $condition = array('buyer_id'=>$_SESSION['member_id'],'cart_id' => array('lt',$minest_cartid));
  25. $left = $model_cart->getCartListCount($condition);
  26. $has_more = $left > $page_size;
  27. $total = $model_cart->getCartListCount(array('buyer_id'=>$_SESSION['member_id']));
  28. $pages = $this->pages($total);
  29. } else {
  30. $condition = array('buyer_id'=>$_SESSION['member_id']);
  31. $total = $model_cart->getCartListCount(array('buyer_id'=>$_SESSION['member_id']));
  32. $pages = $this->pages($total);
  33. $has_more = $total > $page_size;
  34. }
  35. $cart_list = $model_cart->listCart('db',$condition,$page_size);
  36. } else {
  37. $cart_list = $model_cart->listCart('Session');
  38. }
  39. $goods_ids = array();
  40. $cart_infos = array();
  41. foreach ($cart_list as $item) {
  42. $cart_item['cart_id'] = intval($item['cart_id']);
  43. $cart_item['goods_id'] = intval($item['goods_id']);
  44. $cart_item['bl_id'] = intval($item['bl_id']);
  45. $cart_item['goods_num'] = intval($item['goods_num']);
  46. $goods_ids[] = intval($item['goods_id']);
  47. $cart_infos[] = $cart_item;
  48. }
  49. $helper = new goods_helper();
  50. $summaries = $helper->cart_summary($goods_ids,$related_goods);
  51. $summary_list = $summaries['summary'];
  52. if(!empty($related_goods)) {
  53. $related_summary = $helper->cart_summary($goods_ids,$x);
  54. $summary_list = array_merge($summary_list,$related_summary['summary']);
  55. }
  56. $ret['cart_list'] = $cart_infos;
  57. $ret['goods_list'] = $summary_list;
  58. $ret['groupbuy'] = $summaries['groupbuy'];
  59. $ret['limitime'] = $summaries['limitime'];
  60. $ret['bundling'] = $summaries['bundling'];
  61. $ret['mobile_page'] = array('hasmore' => $has_more,'page_total' => $pages);
  62. return self::outsuccess($ret);
  63. }
  64. public function listOp()
  65. {
  66. $model_cart = Model('cart');
  67. $logic_buy_1 = logic('buy_1');
  68. //购物车列表
  69. if($_SESSION['is_login'] == 1) {
  70. $cart_list = $model_cart->listCart('db',array('buyer_id'=>$_SESSION['member_id']));
  71. } else {
  72. $cart_list = $model_cart->listCart('Session',array('buyer_id'=>$_SESSION['member_id']));
  73. }
  74. //购物车列表 [得到最新商品属性及促销信息]
  75. $cart_list = $logic_buy_1->getGoodsCartList($cart_list);
  76. if(count($cart_list) == 0) {
  77. return self::outsuccess(array('carts' => NULL,'mobile_page' => 0));
  78. }
  79. $ret = array_chunk($cart_list,$this->page_size());
  80. $pages = count($ret);
  81. $page_no = $pages >= $this->page_no() ? $this->page_no() : $pages;
  82. $cart_list = $ret[$page_no - 1];
  83. //购物车商品以店铺ID分组显示,并计算商品小计,店铺小计与总价由JS计算得出
  84. $store_cart_list = array();
  85. foreach ($cart_list as $cart) {
  86. $cart['goods_total'] = ncPriceFormat($cart['goods_price'] * $cart['goods_num']);
  87. $cart['goods_image'] = cthumb($cart['goods_image'], $cart['store_id']);
  88. $store_cart_list[$cart['store_id']][] = $cart;
  89. }
  90. //店铺信息
  91. $store_list = Model('store')->getStoreMemberIDList(array_keys($store_cart_list),'store_id,member_id,store_name');
  92. //取得店铺级活动 - 可用的满即送活动
  93. $mansong_rule_list = $logic_buy_1->getMansongRuleList(array_keys($store_cart_list));
  94. //取得哪些店铺有满免运费活动
  95. $free_freight_list = $logic_buy_1->getFreeFreightActiveList(array_keys($store_cart_list));
  96. if(in_array($_SESSION['client_type'],array('android', 'ios','ajax'))) {
  97. $data = $this->format_cart($store_cart_list,$store_list,$mansong_rule_list,$free_freight_list);
  98. self::outsuccess(array('carts' => $data,'mobile_page' => $pages));
  99. } else {
  100. $data = $this->format_cart($store_cart_list,$store_list,$mansong_rule_list,$free_freight_list);
  101. self::outsuccess(array('carts' => $data,'mobile_page' => $pages));
  102. }
  103. }
  104. private function remove_goods(&$goods_info)
  105. {
  106. static $ex_goodsfield = array("buyer_id","store_id","store_name","gc_id","transport_id","goods_vat","goods_storage","goods_storage_alarm",
  107. "is_fcode","promotions_id",);
  108. static $ex_xsfield = array("xianshi_goods_id","xianshi_id","goods_id","store_id","goods_name","goods_price","goods_image","goods_url",
  109. "image_url","xianshi_recommend");
  110. static $ex_gbuyfield = array("groupbuy_id","goods_id","goods_commonid","goods_name","store_id","store_name","goods_price","recommended","views",
  111. "class_id","s_class_id","is_vr","vr_city_id","vr_area_id","vr_mall_id","vr_class_id","vr_s_class_id","groupbuy_url","goods_url","start_time_text",
  112. "end_time_text","groupbuy_state_text","reviewable","cancelable","state_flag","button_text","count_down_text","count_down","groupbuy_intro");
  113. if(is_array($goods_info))
  114. {
  115. $store_id = $goods_info['store_id'];
  116. foreach($ex_goodsfield as $key)
  117. {
  118. if(array_key_exists($key,$goods_info)) {
  119. unset($goods_info[$key]);
  120. }
  121. }
  122. if(array_key_exists('xianshi_info',$goods_info))
  123. {
  124. $xs_info = &$goods_info['xianshi_info'];
  125. if(is_array($xs_info))
  126. {
  127. foreach($ex_xsfield as $key)
  128. {
  129. if(array_key_exists($key,$xs_info)) {
  130. unset($xs_info[$key]);
  131. }
  132. }
  133. }
  134. }
  135. if(array_key_exists('groupbuy_info',$goods_info))
  136. {
  137. $gbuy_info = &$goods_info['groupbuy_info'];
  138. if(is_array($gbuy_info))
  139. {
  140. foreach($ex_gbuyfield as $key)
  141. {
  142. if(array_key_exists($key,$gbuy_info)) {
  143. unset($gbuy_info[$key]);
  144. }
  145. }
  146. if(array_key_exists("state",$gbuy_info))
  147. {
  148. $state = intval($gbuy_info["state"]);
  149. if($state == 20) {
  150. $gbuy_info["state"] = true;
  151. }
  152. }
  153. if(array_key_exists("groupbuy_image",$gbuy_info)) {
  154. $gbuy_info['groupbuy_image'] = cthumb($gbuy_info['groupbuy_image'], $store_id);
  155. }
  156. if(array_key_exists("groupbuy_image1",$gbuy_info)) {
  157. $gbuy_info['groupbuy_image1'] = cthumb($gbuy_info['groupbuy_image1'], $store_id);
  158. }
  159. }
  160. }
  161. }
  162. }
  163. /**
  164. * 购物车列表
  165. */
  166. public function cart_listOp()
  167. {
  168. if($_SESSION['is_login'] != 1) {
  169. return self::outerr(errcode::ErrUnLogin);
  170. }
  171. $page = trim($_GET['page']);
  172. $curpage = trim($_GET['curpage']);
  173. if (!isset($_GET['page'])) {
  174. $page = "100";
  175. $curpage = "1";
  176. $this->page_size = 100;
  177. }
  178. initpage($page, $curpage);
  179. $model_cart = Model('cart');
  180. $model_goods = Model('goods');
  181. $condition = array('buyer_id' => $_SESSION['member_id']);
  182. $cart_list = $model_cart->getCartList($condition, $this->page_size);
  183. $page_count = $model_cart->gettotalpage();
  184. $model_cart->cls();
  185. foreach ($cart_list as $key => $value) {
  186. $goods_id = $value['goods_id'];
  187. $goods_promotion = $model_goods->getGoodsInfoAndPromotionById($goods_id);
  188. $goods_storage = $model_goods->getGoodsStorageById($goods_id);
  189. $promotion_type = '';
  190. $promotion_price = '0.00';
  191. if (!empty($goods_promotion['groupbuy_info'])) {
  192. $promotion_type = '抢购';
  193. $promotion_price = $goods_promotion['groupbuy_info']['groupbuy_price'];
  194. }
  195. if (!empty($goods_promotion['xianshi_info'])) {
  196. $promotion_type = '限时折扣';
  197. $promotion_price = $goods_promotion['xianshi_info']['xianshi_price'];
  198. }
  199. $goods_spec = unserialize($goods_promotion['goods_spec']);
  200. $goods_spec_array = array();
  201. if(!empty($goods_spec))
  202. {
  203. foreach ($goods_spec as $val) {
  204. array_push($goods_spec_array, $val);
  205. }
  206. }
  207. $cart_list[$key]['goods_storage'] = $goods_storage;
  208. $cart_list[$key]['goods_spec'] = implode(',', $goods_spec_array);
  209. $cart_list[$key]['promotion_type'] = $promotion_type;
  210. $cart_list[$key]['promotion_price'] = $promotion_price;
  211. $cart_list[$key]['goods_image_url'] = cthumb($value['goods_image'], $value['store_id']);
  212. $cart_list[$key]['goods_sum'] = ncPriceFormat($value['goods_price'] * $value['goods_num']);
  213. }
  214. self::outsuccess(array('cart_list' => $cart_list, 'mobile_page' => mobile_page($page_count)));
  215. }
  216. /**
  217. * 购物车添加
  218. */
  219. public function addOp()
  220. {
  221. $model_goods = Model('goods');
  222. $logic_buy_1 = Logic('buy_1');
  223. if (is_numeric($_GET['goods_id']) && is_numeric($_POST['quantity']))
  224. {
  225. $goods_id = intval($_POST['goods_id']);
  226. $quantity = intval($_POST['quantity']);
  227. if ($goods_id <= 0 || $quantity <= 0) {
  228. return self::outerr(errcode::ErrInputParam);
  229. }
  230. $goods_info = $model_goods->getGoodsOnlineInfoAndPromotionById($goods_id);
  231. //抢购
  232. $logic_buy_1->getGroupbuyInfo($goods_info);
  233. //限时折扣
  234. $logic_buy_1->getXianshiInfo($goods_info, $quantity);
  235. $ret = $this->check_goods($goods_info, $quantity);
  236. if(is_array($ret)) {
  237. return self::outerr($ret['code'],$ret['msg']);
  238. }
  239. }
  240. elseif (is_numeric($_GET['bl_id']))
  241. {
  242. //优惠套装加入购物车(单套)
  243. if ($_SESSION['is_login'] != 1) {
  244. return self::outerr(errcode::ErrUnLogin);
  245. }
  246. $bl_id = intval($_GET['bl_id']);
  247. if ($bl_id <= 0) return ;
  248. $model_bl = Model('p_bundling');
  249. $bl_info = $model_bl->getBundlingInfo(array('bl_id'=>$bl_id));
  250. if (empty($bl_info) || $bl_info['bl_state'] == '0') {
  251. return self::outerr(errcode::ErrBLUnExist);
  252. }
  253. //检查每个商品是否符合条件,并重新计算套装总价
  254. $bl_goods_list = $model_bl->getBundlingGoodsList(array('bl_id'=>$bl_id));
  255. $goods_id_array = array();
  256. $bl_amount = 0;
  257. foreach ($bl_goods_list as $goods) {
  258. $goods_id_array[] = $goods['goods_id'];
  259. $bl_amount += $goods['bl_goods_price'];
  260. }
  261. $model_goods = Model('goods');
  262. $goods_list = $model_goods->getGoodsOnlineListAndPromotionByIdArray($goods_id_array);
  263. foreach ($goods_list as $goods) {
  264. $this->check_goods($goods,1);
  265. }
  266. //优惠套装作为一条记录插入购物车,图片取套装内的第一个商品图
  267. $goods_info = array();
  268. $goods_info['store_id'] = $bl_info['store_id'];
  269. $goods_info['goods_id'] = $goods_list[0]['goods_id'];
  270. $goods_info['goods_name'] = $bl_info['bl_name'];
  271. $goods_info['goods_price'] = $bl_amount;
  272. $goods_info['goods_num'] = 1;
  273. $goods_info['goods_image'] = $goods_list[0]['goods_image'];
  274. $goods_info['store_name'] = $bl_info['store_name'];
  275. $goods_info['bl_id'] = $bl_id;
  276. $quantity = 1;
  277. }
  278. //已登录状态,存入数据库,未登录时,存入Session
  279. if($_SESSION['member_id']) {
  280. $save_type = 'db';
  281. $goods_info['buyer_id'] = $_SESSION['member_id'];
  282. } else {
  283. $save_type = 'Session';
  284. }
  285. $model_cart = Model('cart');
  286. $insert = $model_cart->addCart($goods_info, $save_type , $quantity);
  287. if ($insert) { //todo 此处返回结果有变化
  288. $data = array('result' => 1, 'num' => $model_cart->cart_goods_num, 'amount' => ncPriceFormat($model_cart->cart_all_price));
  289. return self::outsuccess($data);
  290. } else {
  291. return self::outerr(errcode::ErrAddCart);
  292. }
  293. }
  294. /**
  295. * 检查商品是否符合加入购物车条件
  296. * @param unknown $goods
  297. * @param number $quantity
  298. */
  299. private function check_goods($goods_info, $quantity)
  300. {
  301. if(empty($quantity)) {
  302. return array('code' => errcode::ErrInputParam, 'msg' => errcode::msg(errcode::ErrInputParam));
  303. }
  304. if(empty($goods_info)) {
  305. return array('code' => errcode::ErrGoodsOff, 'msg'=> '商品已下架或不存在');
  306. }
  307. if ($goods_info['store_id'] == $_SESSION['store_id']) {
  308. return array('code' => errcode::ErrCanNotBuyOwn, 'msg'=> errcode::msg(errcode::ErrCanNotBuyOwn));
  309. }
  310. if(intval($goods_info['goods_storage']) < 1) {
  311. return array('code' => errcode::ErrGoodsOutofStock, 'msg' => errcode::msg(errcode::ErrGoodsOutofStock));
  312. }
  313. if(intval($goods_info['goods_storage']) < $quantity) {
  314. return array('code' => errcode::ErrStorageShort, 'msg' => errcode::msg(errcode::ErrStorageShort));
  315. }
  316. if ($goods_info['is_virtual'] || $goods_info['is_fcode'] || $goods_info['is_presell']) {
  317. return array('code' => errcode::ErrGoodsSpecial, 'msg' => errcode::msg(errcode::ErrGoodsSpecial));
  318. }
  319. return true;
  320. }
  321. public function cart_editOp()
  322. {
  323. if($_SESSION['is_login'] != 1) {
  324. return self::outerr(errcode::ErrUnLogin);
  325. }
  326. $cart_list = explode(',', urldecode($_POST['cart_list']));
  327. $new_cart_list = array();
  328. if (is_array($cart_list))
  329. {
  330. foreach ($cart_list as $value) {
  331. if (preg_match_all('/^(\d{1,10})\|(\d{1,6})$/', $value, $match)) {
  332. if (intval($match[2][0]) > 0) {
  333. $new_cart_list[$match[1][0]] = $match[2][0];
  334. }
  335. }
  336. }
  337. $model_cart = Model('cart');
  338. $condition = array('buyer_id' => $_SESSION['member_id']);
  339. $original_cart_list = $model_cart->listCart('db', $condition);
  340. $quantity_error = array();
  341. foreach ($original_cart_list as $key => $value)
  342. {
  343. if (array_key_exists($value['cart_id'], $new_cart_list))
  344. {
  345. $quantity = intval($new_cart_list[$value['cart_id']]);
  346. if (intval($value['goods_num']) !== $quantity)
  347. {
  348. if (!$this->_check_goods_storage($value, $quantity, $_SESSION['member_id'])) {
  349. array_push($quantity_error, array('cart_id' => $value['cart_id'], 'quantity' => $quantity, 'err_info' => '库存不足'));
  350. } else {
  351. $data = array();
  352. $data['goods_num'] = $quantity;
  353. $update = $model_cart->editCart($data, array('cart_id' => $value['cart_id']));
  354. if (!$update) {
  355. return self::outerr(errcode::ErrCart, '购物车修改失败');
  356. }
  357. }
  358. }
  359. }
  360. else
  361. {
  362. $delete = $model_cart->delCart('db', array('cart_id' => $value['cart_id']));
  363. if (!$delete) {
  364. return self::outerr(errcode::ErrCart, '购物车修改失败');
  365. }
  366. }
  367. }
  368. if (count($quantity_error) > 0) {
  369. self::outsuccess(array('result' => '0', 'quantity_error' => $quantity_error));
  370. } else {
  371. self::outsuccess(array('result' => '1','quantity_error' => NULL));
  372. }
  373. }
  374. else {
  375. return self::outerr(errcode::ErrCart, '购物车列表格式错误');
  376. }
  377. }
  378. /**
  379. * 购物车更新商品数量
  380. */
  381. public function editOp()
  382. {
  383. $cart_list = explode(',', urldecode($_POST['cart_list']));
  384. if (!is_array($cart_list)) {
  385. return self::outerr(errcode::ErrCart, '修改购物车列表参数格式错误');
  386. }
  387. $new_cart_list = array();
  388. foreach ($cart_list as $value)
  389. {
  390. if (preg_match_all('/^(\d{1,10})\|(\d{1,6})$/', $value, $match)) {
  391. if (intval($match[2][0]) > 0) {
  392. $new_cart_list[$match[1][0]] = $match[2][0];
  393. }
  394. }
  395. }
  396. if(empty($new_cart_list)) {
  397. return self::outerr(errcode::ErrCart, '修改购物车列表参数格式错误');
  398. }
  399. $errors = array();
  400. foreach($new_cart_list as $cart_id => $quantity)
  401. {
  402. if($quantity == 0) {
  403. $quantity = 1;
  404. $ret = $this->do_edit(intval(abs($cart_id)),intval(abs($quantity)));
  405. }
  406. else {
  407. $ret = $this->do_del($cart_id);
  408. }
  409. //删除购物车在分页的情况下,删除会导致页面计算出问题.
  410. // if($quantity > 0) {
  411. // $ret = $this->do_edit(intval(abs($cart_id)),intval(abs($quantity)));
  412. // }
  413. // else {
  414. // $ret = $this->do_del($cart_id);
  415. // }
  416. if(is_array($ret)) {
  417. array_push($errors,$ret);
  418. }
  419. }
  420. if (count($errors) > 0) {
  421. self::outerr(array('result' => '0', 'quantity_error' => $errors));
  422. } else {
  423. self::outsuccess(array('result' => '1'));
  424. }
  425. }
  426. public function do_edit($cart_id,$quantity)
  427. {
  428. $model_cart = Model('cart');
  429. $model_goods= Model('goods');
  430. $logic_buy_1 = logic('buy_1');
  431. //存放返回信息
  432. $cart_info = $model_cart->getCartInfo(array('cart_id'=>$cart_id,'buyer_id'=>$_SESSION['member_id']));
  433. if ($cart_info['bl_id'] == '0')
  434. {
  435. //普通商品
  436. $goods_id = intval($cart_info['goods_id']);
  437. $goods_info = $logic_buy_1->getGoodsOnlineInfo($goods_id,$quantity);
  438. if(empty($goods_info))
  439. {
  440. if($_SESSION['is_login'] == 1) {
  441. QueueClient::push('delCart', array('buyer_id'=>$_SESSION['member_id'],'cart_ids'=>array($cart_id)));
  442. }
  443. return array('cart_id' => $cart_id, 'quantity' => $quantity, 'err_info' => '商品已被下架');
  444. }
  445. //抢购
  446. $logic_buy_1->getGroupbuyInfo($goods_info);
  447. //限时折扣
  448. $logic_buy_1->getXianshiInfo($goods_info,$quantity);
  449. $quantity = $goods_info['goods_num'];
  450. if(intval($goods_info['goods_storage']) < $quantity) {
  451. $model_cart->editCart(array('goods_num'=>$goods_info['goods_storage']),array('cart_id'=>$cart_id,'buyer_id'=>$_SESSION['member_id']));
  452. return array('cart_id' => $cart_id, 'quantity' => $goods_info['goods_storage'], 'err_info' => '库存不足,已将您购物车更新为库存数量.');
  453. }
  454. }
  455. else
  456. {
  457. //优惠套装商品
  458. $model_bl = Model('p_bundling');
  459. $bl_goods_list = $model_bl->getBundlingGoodsList(array('bl_id'=>$cart_info['bl_id']));
  460. $goods_id_array = array();
  461. foreach ($bl_goods_list as $goods) {
  462. $goods_id_array[] = $goods['goods_id'];
  463. }
  464. $goods_list = $model_goods->getGoodsOnlineListAndPromotionByIdArray($goods_id_array);
  465. //如果其中有商品下架,删除
  466. if (count($goods_list) != count($goods_id_array)) {
  467. QueueClient::push('delCart', array('buyer_id'=>$_SESSION['member_id'],'cart_ids'=>array($cart_id)));
  468. return array('cart_id' => $cart_id, 'quantity' => 0, 'err_info' => '该优惠套装已经无效,建议您购买单个商品.');
  469. }
  470. //如果有商品库存不足,更新购买数量到目前最大库存
  471. foreach ($goods_list as $goods_info)
  472. {
  473. if ($quantity > $goods_info['goods_storage']) {
  474. $model_cart->editCart(array('goods_num'=>$goods_info['goods_storage']),array('cart_id'=>$cart_id,'buyer_id'=>$_SESSION['member_id']));
  475. return array('cart_id' => $cart_id, 'quantity' => $goods_info['goods_storage'], 'err_info' => '该优惠套装部分商品库存不足,建议您降低购买数量或购买库存足够的单个商品.');
  476. }
  477. }
  478. $goods_info['goods_price'] = $cart_info['goods_price'];
  479. }
  480. $data = array();
  481. $data['goods_num'] = $quantity;
  482. $data['goods_price'] = $goods_info['goods_price'];
  483. $update = $model_cart->editCart($data,array('cart_id'=>$cart_id,'buyer_id'=>$_SESSION['member_id']));
  484. if ($update) {
  485. return true;
  486. } else {
  487. return array('cart_id' => $cart_id, 'quantity' => 0, 'err_info' => '更新购物车失败.');
  488. }
  489. }
  490. private function do_del($cart_id)
  491. {
  492. $model_cart = Model('cart');
  493. if ($_SESSION['member_id']) {
  494. //登录状态下删除数据库内容
  495. $delete = $model_cart->delCart('db',array('cart_id'=>$cart_id,'buyer_id'=>$_SESSION['member_id']));
  496. return $delete;
  497. } else {
  498. //未登录时删除cookie的购物车信息
  499. $delete = $model_cart->delCart('Session',array('goods_id'=>$cart_id));
  500. return $delete;
  501. }
  502. }
  503. public function delOp()
  504. {
  505. $cart_id = intval($_POST['cart_id']);
  506. if($cart_id <=0 ) {
  507. return self::outerr(errcode::ErrInputParam);
  508. }
  509. $ret = $this->do_del($cart_id);
  510. if($ret) {
  511. return self::outsuccess(array('result' => '1'));
  512. } else {
  513. return self::outerr(errcode::ErrCartDelError);
  514. }
  515. }
  516. /**
  517. * 购物车删除
  518. */
  519. public function cart_delOp()
  520. {
  521. if($_SESSION['is_login'] != 1) {
  522. return self::outerr(errcode::ErrUnLogin);
  523. }
  524. $cart_id = intval($_POST['cart_id']);
  525. $model_cart = Model('cart');
  526. if ($cart_id > 0) {
  527. $condition = array();
  528. $condition['buyer_id'] = $_SESSION['member_id'];
  529. $condition['cart_id'] = $cart_id;
  530. $model_cart->delCart('db', $condition);
  531. }
  532. self::outsuccess(array('result' => '1'));
  533. }
  534. /**
  535. * 检查库存是否充足
  536. */
  537. private function _check_goods_storage($cart_info, $quantity, $member_id)
  538. {
  539. $model_goods = Model('goods');
  540. $model_bl = Model('p_bundling');
  541. $logic_buy_1 = Logic('buy_1');
  542. if ($cart_info['bl_id'] == '0') {
  543. //普通商品
  544. $goods_info = $model_goods->getGoodsOnlineInfoAndPromotionById($cart_info['goods_id']);
  545. //抢购
  546. $logic_buy_1->getGroupbuyInfo($goods_info);
  547. //限时折扣
  548. $logic_buy_1->getXianshiInfo($goods_info, $quantity);
  549. if (intval($goods_info['goods_storage']) < $quantity) {
  550. return false;
  551. }
  552. } else {
  553. //优惠套装商品
  554. $bl_goods_list = $model_bl->getBundlingGoodsList(array('bl_id' => $cart_info['bl_id']));
  555. $goods_id_array = array();
  556. foreach ($bl_goods_list as $goods) {
  557. $goods_id_array[] = $goods['goods_id'];
  558. }
  559. $bl_goods_list = $model_goods->getGoodsOnlineListAndPromotionByIdArray($goods_id_array);
  560. //如果有商品库存不足,更新购买数量到目前最大库存
  561. foreach ($bl_goods_list as $goods_info) {
  562. if (intval($goods_info['goods_storage']) < $quantity) {
  563. return false;
  564. }
  565. }
  566. }
  567. return true;
  568. }
  569. }