|
|
@@ -53,7 +53,7 @@ class ShoppingCartServer
|
|
|
$shopping = Shopping::from('shopping as p')
|
|
|
->leftJoin('goods as g','g.id','=','p.goods_id')
|
|
|
->where($where)
|
|
|
- ->select(['p.id as shopping_id','p.number','g.id as goods_id','g.shop_id','g.goods_name','g.goods_image','g.price','g.spec_type','g.category_id','g.pack_price'])
|
|
|
+ ->select(['p.id as shopping_id','p.number','p.goods_spec_id','g.id as goods_id','g.shop_id','g.goods_name','g.goods_image','g.price','g.spec_type','g.category_id','g.pack_price'])
|
|
|
->orderBy('p.id','asc')
|
|
|
->get();
|
|
|
|
|
|
@@ -105,7 +105,8 @@ class ShoppingCartServer
|
|
|
'spec_type' => $value['spec_type'],
|
|
|
'price' => $goods_price,
|
|
|
'pack_price' => $value['pack_price'],
|
|
|
- 'goods_attr' => $goods_attr,
|
|
|
+ 'goods_spec_id' => $value['goods_spec_id'],
|
|
|
+ 'goods_attr' => trim($goods_attr,','),
|
|
|
'status_str' => $status_str,
|
|
|
'spec_list' => $goods_spec_list,
|
|
|
];
|
|
|
@@ -131,11 +132,12 @@ class ShoppingCartServer
|
|
|
return $data;
|
|
|
}
|
|
|
|
|
|
- function saveShopping($m_id,$shop_id,$category_id,$goods_id,$goods_spec,$number)
|
|
|
+ function saveShopping($m_id,$shop_id,$category_id,$goods_id,$goods_spec_id,$goods_spec,$number)
|
|
|
{
|
|
|
if (empty($goods_spec)){
|
|
|
$goods_spec = [];
|
|
|
}
|
|
|
+ $goods_spec_ids = [];
|
|
|
$goods_spec_data = [];
|
|
|
//获取商品
|
|
|
$goods = Goods::where('is_del',0)
|
|
|
@@ -166,30 +168,40 @@ class ShoppingCartServer
|
|
|
}elseif ($skuInfo->{'sku_type'} == 2 && $skuInfo->{'affect_quantity'} == 0){//可多选规格但是不能多添加购物车数量
|
|
|
$spec_number = 1;//数量只能为1
|
|
|
}
|
|
|
+ $goods_spec_ids[] = $spec['id'];
|
|
|
$goods_spec_data[] = [
|
|
|
'id' => $spec['id'],
|
|
|
'number' => $spec_number,
|
|
|
];
|
|
|
}
|
|
|
+
|
|
|
+ sort($goods_spec_ids);
|
|
|
+ $goods_spec_id = implode('_',$goods_spec_ids);
|
|
|
}
|
|
|
|
|
|
DB::beginTransaction();
|
|
|
+ //获取购物车是否存在此商品
|
|
|
+ $where = [['m_id',$m_id], ['shop_id',$shop_id], ['category_id',$category_id], ['goods_id',$goods_id]];
|
|
|
+ if ($goods_spec_id) $where[] = ['goods_spec_id',$goods_spec_id];
|
|
|
+ //查询此商品购物车数量
|
|
|
+ $shopping_info = Shopping::where($where)->select(['id', 'goods_id', 'number'])->first();
|
|
|
try {
|
|
|
- if ($goods->{'spec_type'} == 2){//如果是多规则,只添加
|
|
|
- //如果商品是多规格但是没选规格
|
|
|
- if ($goods->{'spec_type'} == 2 && empty($goods_spec_id)){
|
|
|
- return ['code' => 0, 'msg' => '请选择商品规格'];
|
|
|
- }
|
|
|
+ if (empty($shopping_info)) {//没购物车信息
|
|
|
if ($number <= 0){
|
|
|
DB::rollBack();
|
|
|
return ['code' => 0, 'msg' => '请选择数量'];
|
|
|
}
|
|
|
+ //如果商品是多规格但是没选规格
|
|
|
+ if ($goods->{'spec_type'} == 2 && empty($goods_spec)){
|
|
|
+ return ['code' => 0, 'msg' => '请选择商品规格'];
|
|
|
+ }
|
|
|
//入库
|
|
|
$shopping = Shopping::create([
|
|
|
'm_id' => $m_id,
|
|
|
'shop_id' => $shop_id,
|
|
|
'category_id' => $category_id,
|
|
|
'goods_id' => $goods_id,
|
|
|
+ 'goods_spec_id' => $goods_spec_id,
|
|
|
'number' => $number,
|
|
|
]);
|
|
|
$shopping_id = $shopping->{'id'};
|
|
|
@@ -197,39 +209,23 @@ class ShoppingCartServer
|
|
|
DB::rollBack();
|
|
|
return ['code' => 0, 'msg' => '操作失败'];
|
|
|
}
|
|
|
+
|
|
|
if (!empty($goods_spec_data)){//规则明细存入
|
|
|
- ShoppingDetail::insert($goods_spec_data);
|
|
|
+ foreach ($goods_spec_data as $spec){
|
|
|
+ ShoppingDetail::create([
|
|
|
+ 'shopping_id' => $shopping_id,
|
|
|
+ 'goods_id' => $goods_id,
|
|
|
+ 'goods_spec_id' => $spec['id'],
|
|
|
+ 'number' => $spec['number'],
|
|
|
+ ]);
|
|
|
+ }
|
|
|
}
|
|
|
}else{
|
|
|
- //获取购物车是否存在此商品
|
|
|
- $where = [['m_id',$m_id], ['shop_id',$shop_id], ['category_id',$category_id], ['goods_id',$goods_id]];
|
|
|
- //查询此商品购物车数量
|
|
|
- $shopping_info = Shopping::where($where)->select(['id', 'goods_id', 'number'])->first();
|
|
|
- if (empty($shopping_info)) {//没购物车信息
|
|
|
- if ($number <= 0){
|
|
|
- DB::rollBack();
|
|
|
- return ['code' => 0, 'msg' => '请选择数量'];
|
|
|
- }
|
|
|
- //入库
|
|
|
- $shopping = Shopping::create([
|
|
|
- 'm_id' => $m_id,
|
|
|
- 'shop_id' => $shop_id,
|
|
|
- 'category_id' => $category_id,
|
|
|
- 'goods_id' => $goods_id,
|
|
|
- 'number' => $number,
|
|
|
- ]);
|
|
|
- $shopping_id = $shopping->{'id'};
|
|
|
- if (empty($shopping_id)) {
|
|
|
- DB::rollBack();
|
|
|
- return ['code' => 0, 'msg' => '操作失败'];
|
|
|
- }
|
|
|
+ if ($number <= 0){//数量为0直接删除
|
|
|
+ Shopping::where('id',$shopping_info->{'id'})->delete();//删除主表
|
|
|
+ ShoppingDetail::where('shopping_id',$shopping_info->{'id'})->delete();//删除详情表
|
|
|
}else{
|
|
|
- if ($number <= 0){//数量为0直接删除
|
|
|
- Shopping::where('id',$shopping_info->{'id'})->delete();//删除主表
|
|
|
- ShoppingDetail::where('shopping_id',$shopping_info->{'id'})->delete();//删除详情表
|
|
|
- }else{
|
|
|
- Shopping::where('id',$shopping_info->{'id'})->update(['number' => $number]);
|
|
|
- }
|
|
|
+ Shopping::where('id',$shopping_info->{'id'})->update(['number' => $number]);
|
|
|
}
|
|
|
}
|
|
|
|