123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215 |
- <?php namespace App\Http\Controllers\Api;
- use App\Http\Controllers\Api\Api;
- use App\Http\Requests\Api\ShopCart as Request;
- use App\Models\Product\Skus as ProductSkus;
- use App\Models\ShopCart as Model;
- /**
- * 购物车接口
- *
- * @author 刘相欣
- *
- * */
- class ShopCart extends Api{
- /**
- * 添加 /api/shop_cart/add
- *
- * @param int $product_id 产品ID
- * @param int $buy_num 添加数量
- *
- * */
- public function add(Request $request,Model $Model){
- // 接口验签
- // $this->verify_sign();
- // 验证参数
- $request->scene('add')->validate();
- // 检查登录
- $uid = $this->checkLogin();
- // 接收参数
- $data['product_id'] = request('product_id',0);
- $data['skuid'] = request('skuid',0);
- $data['buy_num'] = request('buy_num',1);
- $data['custom_uid'] = $uid;
- // 查询
- $id = $Model->query()->where([['custom_uid','=',$uid],['product_id','=',$data['product_id']],['skuid','=',$data['skuid']]])->value('id');
- // 如果存在id,更新数量
- $result = $id ? $Model->incrBuyNum($id,$uid,$data['buy_num']) : $Model->add($data);
- // 提交结果
- if( !$result ) return json_send(['code'=>'success','msg'=>'加入购物车失败','data'=>['error'=>'加入购物车失败']]);
- // 返回结果
- return json_send(['code'=>'success','msg'=>'添加成功','data'=>$data]);
- }
- /**
- * 更新 /api/shop_cart/edit
- *
- * @param int $id 购物车id
- *
- * */
- public function edit(Request $request,Model $Model){
- // 接口验签
- // $this->verify_sign();
- // 验证参数
- $request->scene('edit')->validate();
- // 检查登录
- $uid = $this->checkLogin();
- // 接收参数
- $id = request('id',0);
- $data['buy_num'] = request('buy_num',1);
- // 如果存在id,更新数量
- $result = $Model->edit($id,$uid,$data);
- // 提交结果
- if( !$result ) return json_send(['code'=>'success','msg'=>'更新失败','data'=>['error'=>'更新购物车失败']]);
- // 返回结果
- return json_send(['code'=>'success','msg'=>'更新成功','data'=>$data]);
- }
- /**
- * 更新 /api/shop_cart/del
- *
- * @param int $id 购物车id
- *
- * */
- public function del(Request $request,Model $Model){
- // 接口验签
- // $this->verify_sign();
- // 验证参数
- $request->scene('del')->validate();
- // 检查登录
- $uid = $this->checkLogin();
- // 接收参数
- $id = request('id',0);
- // 如果存在id,更新数量
- $result = $Model->del($id,$uid);
- // 提交结果
- if( !$result ) return json_send(['code'=>'success','msg'=>'删除失败','data'=>['error'=>'删除购物车失败']]);
- // 返回结果
- return json_send(['code'=>'success','msg'=>'删除成功','data'=>['id'=>$id]]);
- }
- /**
- * 获取列表 /api/shop_cart/get_list
- *
- * @param int $id 购物车id
- *
- * */
- public function get_list(Request $request,Model $Model,ProductSkus $ProductSkus){
- // 接口验签
- // $this->verify_sign();
- // 验证参数
- $request->scene('get_list')->validate();
- // 检查登录
- $uid = $this->checkLogin();
- // 显示
- $map = [['shop_cart.custom_uid','=',$uid]];
- // 查询
- $list = $Model->query()->join('product','shop_cart.product_id','=','product.id')->where($map)->get(['shop_cart.id','shop_cart.checked','shop_cart.product_id','shop_cart.skuid','shop_cart.buy_num','product.stock','product.spec','product.thumb','product.name','product.price','product.market_price','product.status as product_status'])->toArray();
- // 判断结果
- $skusList = $ProductSkus->getListByIds(array_column($list,'skuid'));
- // 循环处理数据
- foreach ($list as $key => $value) {
- // 如果有sku
- if( $value['skuid'] ) {
- // 是否存在
- $isExist = false;
- // 循环SKU
- foreach ($skusList as $sku) {
- // 如果SKU存在的话
- if( $sku['sku_id'] == $value['skuid'] ) {
- $value['price'] = $sku['price'];
- $value['spec'] = $sku['sku_attr_names'];
- $value['stock'] = $sku['stock'];
- $isExist = true;
- }
- }
- // 如果不存在,状态变动
- if( !$isExist ) $value['product_status'] = 4;
- }
- // 产品图路径
- $value['thumb'] = path_compat($value['thumb']);
- // 库存超出的时候
- if($value['buy_num'] > $value['stock'] ) $value['buy_num'] = $value['stock'];
- // 重组
- $list[$key] = $value;
- }
- // 返回结果
- return json_send(['code'=>'success','msg'=>'获取成功','data'=>$list]);
- }
- /**
- * 结算列表 /api/shop_cart/check_list
- *
- * @param int $id 购物车id
- *
- * */
- public function check_list(Request $request,Model $Model,ProductSkus $ProductSkus){
- // 接口验签
- // $this->verify_sign();
- // 验证参数
- $request->scene('check_list')->validate();
- // 检查登录
- $uid = $this->checkLogin();
- // 接收参数
- $cartIds = request('cart_ids','');
- // 转成数组
- $cartIds = explode(',',$cartIds);
- // 循环处理
- foreach ($cartIds as $key => $value) {
- // 如果不是数值
- if( $value < 1 ) unset($cartIds[$key]);
- }
- // 如果不存在的话
- if( !$cartIds ) return json_send(['code'=>'error','msg'=>'请选择可用产品','data'=>['error'=>request('cart_ids','')]]);
- // 显示
- $map = [['shop_cart.custom_uid','=',$uid],['product.status','=',0]];
- // 查询
- $list = $Model->query()->join('product','shop_cart.product_id','=','product.id')->whereIn('shop_cart.id',$cartIds)->where($map)->get(['shop_cart.id','shop_cart.checked','shop_cart.product_id','shop_cart.skuid','shop_cart.buy_num','product.stock','product.spec','product.thumb','product.name','product.price','product.market_price','product.status as product_status'])->toArray();
- // 判断结果
- $skusList = $ProductSkus->getListByIds(array_column($list,'skuid'));
- // 循环处理数据
- foreach ($list as $key => $value) {
- // 如果有sku
- if( $value['skuid'] ) {
- // 是否存在
- $isExist = false;
- // 循环SKU
- foreach ($skusList as $sku) {
- // 如果SKU存在的话
- if( $sku['sku_id'] == $value['skuid'] ) {
- $value['price'] = $sku['price'];
- $value['spec'] = $sku['sku_attr_names'];
- $value['stock'] = $sku['stock'];
- $isExist = true;
- }
- }
- // 如果不存在,状态变动
- if( !$isExist ) {
- unset($list[$key]);
- continue;
- }
- }
- // 如果不存在,状态变动
- if( $value['stock'] <= 0 ) {
- unset($list[$key]);
- continue;
- }
- // 产品图路径
- $value['thumb'] = path_compat($value['thumb']);
- // 库存超出的时候
- if($value['buy_num'] > $value['stock'] ) $value['buy_num'] = $value['stock'];
- // 重组
- $list[$key] = $value;
- }
- // 重组数组
- $list = array_values($list);
- // 返回结果
- return json_send(['code'=>'success','msg'=>'获取成功','data'=>$list]);
- }
- }
|