[php]代码库
<?php
// +----------------------------------------------------------------------
// | ThinkPHP [ WE CAN DO IT JUST THINK IT ]
// +----------------------------------------------------------------------
// | Copyright (c) 2009 http://thinkphp.cn All rights reserved.
// +----------------------------------------------------------------------
// | Licensed ( http://www.apache.org/licenses/LICENSE-2.0 )
// +----------------------------------------------------------------------
// | Author: ToniLiu <cniiliuqi@126.com>
// +----------------------------------------------------------------------
// $Id: Cart.class.php ToniLiu $
/**
+------------------------------------------------------------------------------
* Cart实现类
+------------------------------------------------------------------------------
* @category Think
* @package Think
* @subpackage Util
* @author ToniLiu <cniiliuqi@126.com>
* @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'];
}
}
?>