// +---------------------------------------------------------------------- // $Id: Cart.class.php ToniLiu $ /** +------------------------------------------------------------------------------ * Cart实现类 +------------------------------------------------------------------------------ * @category Think * @package Think * @subpackage Util * @author ToniLiu * @version $Id: Cart.class.php +------------------------------------------------------------------------------ */ class Cart{ //THINKPHP_MODLE private $model; private $user_cart; public function __construct(){ $this->model = D("Item"); $this->user_cart = new Model(); if(!$_SESSION['cart']){ $_SESSION['cart'] = array(); $_SESSION['cart']['goods_list'] = array(); $_SESSION['cart']['total_num'] = 0; $_SESSION['cart']['total_price'] = 0.00; //如果是已经登录的用户 if($_SESSION['ucenter']['user_id']){ $user_cart_result = $this->user_cart->query("select cart_id,user_id,item_id,item_name,volume,market_price,price,item_sn from biz_cart where user_id = ".$_SESSION['ucenter']['user_id']); foreach ($user_cart_result as $value){ $_SESSION['cart']['goods_list'][$value['item_id']] = array( 'item_id' => $value['item_id'], 'item_name' => $value['item_name'], 'volume' => $value['volume'], 'price' => $value['price'], 'market_price' => $value['market_price'], 'item_sn' =>$value['item_sn'] ); $_SESSION['cart']['total_price'] = $_SESSION['cart']['total_price'] + $value['price']; $_SESSION['cart']['total_num'] = $_SESSION['cart']['total_num'] + 1; } } } else{ //如果是已经登录的用户 if($_SESSION['ucenter']['user_id']){ foreach($_SESSION['cart']['goods_list'] as $goods_value){ $user_cart_result = $this->user_cart->query("select cart_id,item_id from biz_cart where user_id = ".$_SESSION['ucenter']['user_id']." limit 1"); if(!$user_cart_result[0]){ $this->user_cart->execute("INSERT INTO `zhongyoupl`.`biz_cart` (`cart_id`, `user_id`, `user_name`, `session_id`, `item_id`, `item_sn`, `item_name`, `volume`, `market_price`, `price`, `discount`, `quantity`, `amount`, `create_time`, `date_line`) VALUES (NULL, '".$_SESSION['ucenter']['user_id']."', '".$_SESSION['ucenter']['user_name']."', '".session_id()."', '".$goods_value['item_id']."', '".$goods_value['item_sn']."', '".$goods_value['item_name']."', '".$goods_value['volume']."', '".$goods_value['market_price']."', '".$goods_value['price']."', '0', '0', '0', '".date("Y-m-d H:i:s")."', '".time()."');"); } } //清空SESSION购物车信息 $_SESSION['cart']['total_price'] = 0; $_SESSION['cart']['total_num'] = 0; //根据用户的购物车信息,重构SESSION中的购物车信息 $this->user_cart = new Model(); $user_cart_result = $this->user_cart->query("select cart_id,user_id,item_id,item_name,volume,market_price,price,item_sn from biz_cart where user_id = ".$_SESSION['ucenter']['user_id']); foreach ($user_cart_result as $value){ $_SESSION['cart']['goods_list'][$value['item_id']] = array( 'item_id' => $value['item_id'], 'item_name' => $value['item_name'], 'volume' => $value['volume'], 'price' => $value['price'], 'market_price' => $value['market_price'], 'item_sn' =>$value['item_sn'] ); $_SESSION['cart']['total_price'] = $_SESSION['cart']['total_price'] + $value['price']; $_SESSION['cart']['total_num'] = $_SESSION['cart']['total_num'] + 1; } } } } //添加单个商品到购物车 public function add_goods($goods_id){ $goods_id = $goods_id * 1; if($goods_id){ if($this->model->find($goods_id)){ if($this->model->status != 5){ return json_encode(array('state_code' => 2,'state_message' => 'This goods is down!')); } $tmp_price = $this->model->price; if((int)$tmp_price){ if(!$_SESSION['cart']['goods_list'][$this->model->item_id]){ $_SESSION['cart']['goods_list'][$this->model->item_id] = array( 'item_id' => $this->model->item_id, 'item_name' => $this->model->item_name, 'volume' => $this->model->volume, 'price' => $this->model->price, 'market_price' => $this->model->market_price, 'item_sn' => $this->model->item_sn ); $_SESSION['cart']['total_price'] = $_SESSION['cart']['total_price'] + $this->model->price; $_SESSION['cart']['total_num'] = $_SESSION['cart']['total_num'] + 1; //如果是登录用户,记录到biz_cart表中 if($_SESSION['ucenter']['user_id']){ $user_cart_result = $this->user_cart->query("select cart_id,item_id from biz_cart where user_id = ".$this->model->item_id." limit 1"); if(!$user_cart_result[0]){ $this->user_cart->execute("INSERT INTO `zhongyoupl`.`biz_cart` (`cart_id`, `user_id`, `user_name`, `session_id`, `item_id`, `item_sn`, `item_name`, `volume`, `market_price`, `price`, `discount`, `quantity`, `amount`, `create_time`, `date_line`) VALUES (NULL, '".$_SESSION['ucenter']['user_id']."', '".$_SESSION['ucenter']['user_name']."', '".session_id()."', '".$this->model->item_id."', '".$this->model->item_sn."', '".$this->model->item_name."', '".$this->model->volume."', '".$this->model->market_price."', '".$this->model->price."', '0', '0', '0', '".date("Y-m-d H:i:s")."', '".time()."');"); return json_encode(array('state_code' => 5,'state_message' => 'add Ok and insert to db!')); } } } else{ return json_encode(array('state_code' => 3,'state_message' => 'This goods is at cart!')); } } else{ return json_encode(array('state_code' => 1,'state_message' => 'price is zero')); } } else{ return json_encode(array('state_code' => 9,'state_message' => "Don't find item!")); } } else{ return json_encode(array('state_code' => 0,'state_message' => 'item_id is null')); } } //从购物车删除单个商品 public function delete_goods($goods_id){ $goods_id = $goods_id * 1; if($goods_id){ if($_SESSION['cart']['goods_list'][$goods_id]){ $_SESSION['cart']['total_price'] = $_SESSION['cart']['total_price'] - $_SESSION['cart']['goods_list'][$goods_id]['price']; $_SESSION['cart']['total_num'] = $_SESSION['cart']['total_num'] - 1; unset($_SESSION['cart']['goods_list'][$goods_id]); if($_SESSION['ucenter']['user_id']){ $user_cart_result = $this->user_cart->query("select cart_id,item_id from biz_cart where user_id = ".$_SESSION['ucenter']['user_id']." and item_id = $goods_id limit 1"); if($user_cart_result[0]){ $this->user_cart->execute("delete from biz_cart where cart_id = ".$user_cart_result[0]['cart_id']." limit 1"); } } return json_encode(array('state_code' => 11,'state_message' => '商品删除成功!')); } else{ return json_encode(array('state_code' => 12,'state_message' => '在购物车中没有找到该商品!')); } } else{ return json_encode(array('state_code' => 0,'state_message' => 'item_id is null')); } } //从购物车批量删除商品 public function delete_batch_goods($goods_id_string){ $goods_id_arr = explode(',',$goods_id_string); if(sizeof($goods_id_arr)){ foreach ($goods_id_arr as $goods_id){ $goods_id = $goods_id * 1; if($_SESSION['cart']['goods_list'][$goods_id]){ $_SESSION['cart']['total_price'] = $_SESSION['cart']['total_price'] - $_SESSION['cart']['goods_list'][$goods_id]['price']; $_SESSION['cart']['total_num'] = $_SESSION['cart']['total_num'] - 1; unset($_SESSION['cart']['goods_list'][$goods_id]); //如果登录了,同时删除biz_cart中该用户的信息 if($_SESSION['ucenter']['user_id']){ $user_cart_result = $this->user_cart->query("select cart_id,item_id from biz_cart where user_id = ".$_SESSION['ucenter']['user_id']." and item_id = $goods_id limit 1"); if($user_cart_result[0]){ $this->user_cart->execute("delete from biz_cart where cart_id = ".$user_cart_result[0]['cart_id']." limit 1"); } } } } return json_encode(array('state_code' => 11,'state_message' => '商品批量删除成功!')); } else{ return json_encode(array('state_code' => 13,'state_message' => '参数错误!')); } } //清空购物车 public function empty_cart(){ unset($_SESSION['cart']); if($_SESSION['ucenter']['user_id']){ $this->user_cart->execute("delete from biz_cart where user_id = ".$_SESSION['ucenter']['user_id']); } return json_encode(array('state_code' => 14,'state_message' => '清空购物车成功!')); } //输出购物车信息 public function return_cart_info(){ return $_SESSION['cart']; } } ?>