一个购物车Cart类
2015-05-05 PHP 1242
/**
购物车
*/
class Cart{
/**
@access private $data
*/
private $data;
private $user_id;
private $user_key;
private $CartModel;
/**
初始化
*/
public function __construct($user_id){
$th
/**
购物车
*/
class Cart{
/**
@access private $data
*/
private $data;
private $user_id;
private $user_key;
private $CartModel;
/**
初始化
*/
public function __construct($user_id){
$this->CartModel = D('Admin/Cart');
$this->user_id = $user_id;
//使用Cookie存储用户标识
if(Cookie('user_key') ==''){
$user_key = session_id();
Cookie('user_key',session_id());
}else{
$user_key = Cookie('user_key');
}
$this->user_key = $user_key;
$this->data = $this->getCart();
//自动清空30天之前的购物车
$this->autoClear();
}
/**
获取商品详细信息
@param int $goods_id
*/
private function getGoods($goods_id){
return D('Admin/Goods')->field(true)->where(array( 'is_delete' => 0, 'goods_id'=> (int)$goods_id))->find();
}
/**
添加一个商品
@param int $goods_id 商品id
@param int $quantity 商品数量
*/
public function add($goods_id,$quantity=1){
$goods = $this->getGoods($goods_id);
//检查购物车里有没有该商品
if(($key = $this->getCartGoodsKey($goods_id)) !== false){
//总数量
$quantity = $this->data['cart'][$key]['quantity']+$quantity;
$this->data['cart'][$key] = array(
'goods_id' => $goods_id,
'quantity' => $quantity,
'name' => $goods['name'],
'price' => $goods['price'],
);
}else{
$this->data['cart'][] = array(
'goods_id' => $goods_id,
'quantity' => $quantity,
'name' => $goods['name'],
'price' => $goods['price'],
);
}
return $this->save();
}
/**
删除一个商品
@param int $goods_id 商品id
*/
public function del($goods_id){
if(($key = $this->getCartGoodsKey($goods_id)) !== false){
unset($this->data['cart'][$key]);
sort($this->data['cart']);
$this->save();
}else{
return true;
}
}
/**
清空购物车
*/
public function clear(){
$this->data = array();
$this->save();
return true;
}
/**
更新购物车
@param int $goods_id 商品id
@param int $quantity 商品数量
*/
public function update($goods_id,$quantity){
if(($key = $this->getCartGoodsKey($goods_id)) !== false){
$this->data['cart'][$key]['quantity'] = $quantity;
$this->save();
}else{
//没有则添加
$this->add($goods_id,$quantity);
}
}
/**
获取购物车商品
*/
public function getCart(){
if($this->user_id >0){
//已登录
$ret = $this->CartModel->where(array('is_delete'=>0,'user_id'=>$this->user_id))->getField('data');
}else{
//未登录
$ret = $this->CartModel->where(array('is_delete'=>0,'user_key'=>$this->user_key))->getField('data');
}
return unserialize($ret);
}
/**
获取购物车中商品的键值
*/
private function getCartGoodsKey($goods_id){
if(!empty($this->data['cart'])){
foreach($this->data['cart'] as $key=>$value){
if($value['goods_id'] == $goods_id){
return $key;
}
}
}
return false;
}
/**
统计购物车信息
*/
public function countData(){
$cart = $this->data['cart'];
$count = array(
'total_price' => 0.00,
'quantity' => 0,
'total' => 0,
);
if(!empty($cart)){
$count['total'] = count($cart);
foreach($cart as $key=>$value){
$count['total_price'] += $value['quantity'] * $value['price'];
$count['quantity'] += $value['quantity'];
}
}
$count['total_price'] = sprintf('%.2f',$count['total_price']);
$this->data['count'] = $count;
return $this->data;
}
/**
保存购物车到数据库
*/
public function save(){
$now = time();
$data = array(
'user_id' => $this->user_id,
'user_key' => $this->user_key,
'updatetime' => $now,
'data' => serialize($this->countData()),
);
if($this->user_id >0){
//已登录
$ret = $this->CartModel->field('id')->where(array('is_delete'=>0, 'user_id'=>$this->user_id))->find();
if($ret['id'] >0){
$this->CartModel->where(array('user_id'=>$this->user_id))->save($data);
}else{
$data['addtime'] = $now;
$this->CartModel->add($data);
}
}else{
//未登录
$ret = $this->CartModel->field('id')->where(array('is_delete'=>0, 'user_key'=> $this->user_key))->find();
if(!empty($ret['id'])){
$this->CartModel->where(array('user_key'=>$this->user_key))->save($data);
}else{
$data['addtime'] = $now;
$this->CartModel->add($data);
}
}
return true;
}
/**
自动清空 30天之前的购物车
*/
public function autoClear(){
$this->CartModel->where(array('updatetime'=> array('lt', time()-86400*30 ) ))->find();
}
/**
记录日志
*/
public function _log(){
}
}
很赞哦! (0)
相关文章
文章评论
-
-
-
0条评论