商品添加购物车
首先封装购物车类
class CartBusiness
{
// 商品添加购物车
public static function addCart($goods_id,$goodsSpecId,$number,$is_selected){
// 判断是否登录
if (session('?userInfo')){
// 登录存入数据库
$user_id=session('userInfo.id');
// 查询用户是否有这件商品
$cart=Cart::where('goods_id',$goods_id)
->where('spec_goods_id',$goodsSpecId)
->where('user_id',$user_id)
->find();
if (!$cart){
$cart_arr=[
'number'=>$number,
'user_id'=>$user_id,
'goods_id'=>$goods_id,
'spec_goods_id'=>$goodsSpecId,
'is_selected'=>$is_selected
];
Cart::create($cart_arr);
}else{
// 购物车已有此商品
$cart_data['number']=$cart['number']+$number;
Cart::update($cart_data,['id'=>$cart['id']]);
}
}else{
// 未登录存入cookie
$cart=cookie('cart')?:[];
// 组装存储cookie的键
$key=$goodsSpecId;
// 判断是否是第一次添加数组
if (is_array($cart)){
$cart["$key"]=[
'number'=>$number,
'is_selected'=>$is_selected,
'goods_id'=>$goods_id,
'spec_goods_id'=>$goodsSpecId
];
// 放入cookie中
\cookie('cart',serialize($cart));
return true;
}
// 判断cookie中是否有同类型商品
$cart_arr=unserialize($cart);
if (isset($cart_arr["$key"])){
// 购物车中有这件商品 更改商品类型
$cart_arr[$key]['number']+=$number;
}else{
$cart_arr["$key"]=[
'number'=>$number,
'is_selected'=>$is_selected,
'goods_id'=>$goods_id,
'spec_goods_id'=>$goodsSpecId
];
}
cookie('cart',serialize($cart_arr));
}
}
// 获取购物车中所有商品
public static function getCart(){
// 检测是否登陆
if (session('?userInfo')){
$user_id=session('userInfo.id');
$data=Cart::getInfo($user_id)->toArray();
return $data;
}else{
// 从cookie中取出cart数组
$cart=cookie('cart')?:[];
// 证明当前访问者购物车数据为空
if (empty($cart)){
return [];
}
// 将序列化的结果转换为数组
$cart_arr=unserialize($cart);
// 返回结果
return array_values($cart_arr);
}
}
// 将cookie中的值迁移至数据库
public static function cookieToDb(){
// 取出cookie值
$cart=cookie('cart')?:[];
if (empty($cart)){
return [];
}
$cart_arr=unserialize($cart);
// 向数组中追加user_id
foreach ($cart_arr as &$val){
self::addCart($val['goods_id'],$val['spec_goods_id'],$val['number'],$val['is_selected']);
}
cookie('cart',null);
}
}
接收前段商品数据渲染商品添加购物车页面
public function cart(Request $request){
// 接收数据
$post=$request->post();
// 数据入库
CartBusiness::addCart($post['goods_id'],$post['spec_goods_id'],$post['number'],$is_selected=1);
// 添加商品的信息
$data=\app\api\model\Goods::getGoodsSpec($post['goods_id'],$post['spec_goods_id']);
return view('success',compact('data'));
}
渲染购物车中所有商品信息
// 购物车商品 渲染购物车中所有商品信息
public function gocart(){
$cartData=CartBusiness::getCart();
foreach ($cartData as $key=>&$val){
$val['goods']=\app\api\model\Goods::getGoodsSpec($val['goods_id'],$val['spec_goods_id']);
}
unset($val);
return view('cart',compact('cartData'));
}

浙公网安备 33010602011771号