param(); $user_id = $param['uid']?Crypt::decrypt($param['uid']):''; if(!$user_id){ return unauthorized('请先授权'); } $goods_id = $param['goods_id']?Crypt::decrypt($param['goods_id']):''; if(!$goods_id){ return client_error('该商品不存在'); } $item_value=$param['item_value']??''; if(!$item_value){ return client_error('请选择规格'); } $goods_num=$param['goods_num']??'0'; if($goods_num=='0'){ return client_error('购买数量必须大于0'); } $time = time(); $where = [ 'user_id' => $user_id, 'goods_id' => $goods_id, 'item_value' => $item_value, ]; $info = Cart::where($where)->find(); $cart_num = $param['goods_num'] + (isset($info) ? $info['goods_num'] : 0); if ($cmodel->checkStock($item_value, $cart_num,$goods_id)) { return client_error('很抱歉,商品库存不足'); } if ($info) { //购物车内已有该商品 $update_data = [ 'goods_num' => $goods_num + $info['goods_num'], 'update_time' => $time, ]; $res =$cmodel ->where('id', $info['id']) ->update($update_data); } else { //新增购物车记录 $data = [ 'user_id' => $user_id, 'goods_id' => $goods_id, 'goods_num' => $goods_num, 'item_value' => $item_value, 'create_time' => $time, ]; $res = $cmodel->insert($data); } return $res ? success('','添加成功') : client_error('添加失败'); } //删除购物车 public function del(Request $request,Cart $cmodel) { $param = $request->param(); $user_id = $param['uid']?Crypt::decrypt($param['uid']):''; if(!$user_id){ return unauthorized('请先授权'); } $cart_id= $param['cart_id']?Crypt::decrypt($param['cart_id']):'0'; if($cart_id=='0'){ return client_error('该购物车商品不存在'); } $res = $cmodel->whereIn('id',$cart_id)->delete(); return $res ? success('','删除成功') : client_error('删除失败'); } //变动购物车数量 public function change(Request $request,Cart $cmodel) { $param = $request->param(); $user_id = $param['uid']?Crypt::decrypt($param['uid']):''; if(!$user_id){ return unauthorized('请先授权'); } $cart_id=$param['cart_id']?Crypt::decrypt($param['cart_id']):'0'; if($cart_id=='0'){ return client_error('该购物车商品不存在'); } $goods_num=$param['goods_num']??'0'; if($goods_num=='0'){ return client_error('购买数量必须大于0'); } $cart = $cmodel->where(['id' => $cart_id])->find(); if ($cmodel->checkStock($cart['item_value'], $goods_num,$cart['goods_id'])) { return client_error('很抱歉,商品库存不足'); } $update = [ 'update_time' => time(), 'goods_num' => $goods_num, ]; $res = $cmodel->where(['id' => $cart_id])->update($update); return $res ? success('','更新成功') : client_error('更新失败'); } //购物车选中状态 public function selected(Request $request,Cart $cmodel) { $param = $request->param(); $user_id = $param['uid']?Crypt::decrypt($param['uid']):''; if(!$user_id){ return unauthorized('请先授权'); } $cart_id=$param['cart_id']?Crypt::decrypt($param['cart_id']):'0'; if($cart_id=='0'){ return client_error('该购物车商品不存在'); } $res = $cmodel->where(['id' => $cart_id, 'user_id' => $user_id]) ->update(['selected' => $param['selected'], 'update_time' => time()]); return $res ? success('','更新成功') : client_error('更新失败'); } //列表 public function lists(Request $request,Cart $cmodel) { $param = $request->param(); $user_id = $param['uid']?Crypt::decrypt($param['uid']):''; if(!$user_id){ return unauthorized('请先授权'); } $carts =$cmodel ->alias('c') ->field("mi.thumb_image as img,g.name,g.price,g.id as goods_id,gb.name as brand_name,c.goods_num,c.selected,c.id as cart_id,item_value") ->join('goods g', 'g.id = c.goods_id') ->join('goods_brand gb', 'gb.id= g.brand_id') ->join('mall_image mi', 'mi.union_id= c.goods_id and is_cover=1 and mi.type=1', 'LEFT') ->where('c.user_id', $user_id) ->order('c.create_time desc') ->select(); $goods_num = 0; $total = 0; $lists = []; foreach ($carts as $k1 => $cart) { $cart['goods_id'] = Crypt::encrypt($cart['goods_id']); $cart['cart_id'] =Crypt::encrypt($cart['cart_id']); $cart['img'] = $this->img_url.$cart['img']; $cart['sub_price'] = 0; if ($cart['selected'] ==1) { $goods_num += $cart['goods_num']; $total += $cart['price'] * $cart['goods_num']; $cart['sub_price'] = round($cart['price'] * $cart['goods_num'], 2); } $cart['selected'] = intval($cart['selected']); $lists[] = $cart; } $data=[ 'lists' => $lists, 'total_amount' => round($total, 2), 'total_num' => $goods_num, ]; return success($data); } //获取购物车数量 public function cartnum(Request $request,Cart $cmodel) { $param = $request->param(); $user_id = $param['uid']?Crypt::decrypt($param['uid']):''; if(!$user_id){ return unauthorized('请先授权'); } $num = $cmodel->where('user_id', $user_id)->sum('goods_num'); $data=['num' => $num ?? 0]; return success($data); } }