|
|
@@ -131,21 +131,12 @@ class ShoppingCartServer
|
|
|
return $data;
|
|
|
}
|
|
|
|
|
|
- /**
|
|
|
- * 添加购物车
|
|
|
- * @param $m_id
|
|
|
- * @param $shop_id
|
|
|
- * @param $category_id
|
|
|
- * @param $goods_id
|
|
|
- * @param $goods_spec_id
|
|
|
- * @param $number
|
|
|
- * @return array
|
|
|
- */
|
|
|
- function saveShopping($m_id,$shop_id,$category_id,$goods_id,$goods_spec_id,$number)
|
|
|
+ function saveShopping($m_id,$shop_id,$category_id,$goods_id,$goods_spec,$number)
|
|
|
{
|
|
|
- if (empty($goods_spec_id)){
|
|
|
- $goods_spec_id = '';
|
|
|
+ if (empty($goods_spec)){
|
|
|
+ $goods_spec = [];
|
|
|
}
|
|
|
+ $goods_spec_data = [];
|
|
|
//获取商品
|
|
|
$goods = Goods::where('is_del',0)
|
|
|
->where('id',$goods_id)
|
|
|
@@ -156,27 +147,35 @@ class ShoppingCartServer
|
|
|
if (empty($goods)) return ['code' => 0, 'msg' => '当前商品不存在'];
|
|
|
if ($goods->{'status'} != 1) return ['code' => 0, 'msg' => '当前商品已下架'];
|
|
|
//如果是单规格但是选择了规格
|
|
|
- if ($goods->{'spec_type'} == 1 && !empty($goods_spec_id)){
|
|
|
+ if ($goods->{'spec_type'} == 1 && !empty($goods_spec)){
|
|
|
return ['code' => 0, 'msg' => '该商品没有规格'];
|
|
|
}
|
|
|
- if (!empty($goods_spec_id)){
|
|
|
- $sku_id = GoodsSpec::where('goods_id',$goods_id)->where('id',$goods_spec_id)->where('is_del',0)->value('sku_id');
|
|
|
- if (empty($sku_id)){
|
|
|
- return ['code' => 0, 'msg' => '商品规格错误'];
|
|
|
- }
|
|
|
- $skuInfo = GoodsSku::where('goods_id',$goods_id)->where('id',$sku_id)->where('is_del',0)->first();
|
|
|
- if (empty($skuInfo)){
|
|
|
- return ['code' => 0, 'msg' => '商品规格不存在'];
|
|
|
+ if (!empty($goods_spec)){
|
|
|
+ foreach ($goods_spec as $spec){
|
|
|
+ $spec_number = $spec['number'];
|
|
|
+ $sku_id = GoodsSpec::where('goods_id',$goods_id)->where('id',$spec['id'])->where('is_del',0)->value('sku_id');
|
|
|
+ if (empty($sku_id)){
|
|
|
+ return ['code' => 0, 'msg' => '商品规格错误'];
|
|
|
+ }
|
|
|
+ $skuInfo = GoodsSku::where('goods_id',$goods_id)->where('id',$sku_id)->where('is_del',0)->first();
|
|
|
+ if (empty($skuInfo)){
|
|
|
+ return ['code' => 0, 'msg' => '商品规格不存在'];
|
|
|
+ }
|
|
|
+ if ($skuInfo->{'sku_type'} == 1){//商品只能单选
|
|
|
+ $spec_number = 1;//单选购物数量只能为1
|
|
|
+ }elseif ($skuInfo->{'sku_type'} == 2 && $skuInfo->{'affect_quantity'} == 0){//可多选规格但是不能多添加购物车数量
|
|
|
+ $spec_number = 1;//数量只能为1
|
|
|
+ }
|
|
|
+ $goods_spec_data[] = [
|
|
|
+ 'id' => $spec['id'],
|
|
|
+ 'number' => $spec_number,
|
|
|
+ ];
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
DB::beginTransaction();
|
|
|
try {
|
|
|
- //获取购物车是否存在此商品
|
|
|
- $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 ($goods->{'spec_type'} == 2){//如果是多规则,只添加
|
|
|
//如果商品是多规格但是没选规格
|
|
|
if ($goods->{'spec_type'} == 2 && empty($goods_spec_id)){
|
|
|
return ['code' => 0, 'msg' => '请选择商品规格'];
|
|
|
@@ -198,47 +197,33 @@ class ShoppingCartServer
|
|
|
DB::rollBack();
|
|
|
return ['code' => 0, 'msg' => '添加失败'];
|
|
|
}
|
|
|
- //如果有规则就入库规则信息
|
|
|
- if (!empty($goods_spec_id)){
|
|
|
- if ($skuInfo->{'sku_type'} == 1){//商品只能单选
|
|
|
- $number = 1;//单选购物数量只能为1
|
|
|
- }elseif ($skuInfo->{'sku_type'} == 2 && $skuInfo->{'affect_quantity'} == 0){//可多选规格但是不能多添加购物车数量
|
|
|
- $number = 1;//数量只能为1
|
|
|
+ if (!empty($goods_spec_data)){//规则明细存入
|
|
|
+ ShoppingDetail::insert($goods_spec_data);
|
|
|
+ }
|
|
|
+ }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' => '请选择数量'];
|
|
|
}
|
|
|
- ShoppingDetail::create([
|
|
|
- 'shopping_id' => $shopping_id,
|
|
|
+ //入库
|
|
|
+ $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,
|
|
|
]);
|
|
|
- }
|
|
|
- }else{//有购物车信息,更新
|
|
|
- $shopping_id = $shopping_info->{'id'};
|
|
|
-
|
|
|
- if (!empty($goods_spec_id)){//选择了规则就是更新购物车详情表
|
|
|
- if ($number <= 0){//数量为0直接删除
|
|
|
- ShoppingDetail::where('shopping_id',$shopping_info->{'id'})->where('goods_id',$goods_id)->where('goods_spec_id',$goods_spec_id)->delete();//删除详情表
|
|
|
- }else{
|
|
|
- //检查该规格信息是否讯息
|
|
|
- $details = ShoppingDetail::where('shopping_id',$shopping_info->{'id'})->where('goods_id',$goods_id)->where('goods_spec_id',$goods_spec_id)->select(['id'])->first();
|
|
|
-
|
|
|
- if ($skuInfo->{'sku_type'} == 1){//商品只能单选
|
|
|
- $number = 1;//单选购物数量只能为1
|
|
|
- }elseif ($skuInfo->{'sku_type'} == 2 && $skuInfo->{'affect_quantity'} == 0){//可多选规格但是不能多添加购物车数量
|
|
|
- $number = 1;//数量只能为1
|
|
|
- }
|
|
|
- if (empty($details)){
|
|
|
- ShoppingDetail::create([
|
|
|
- 'shopping_id' => $shopping_id,
|
|
|
- 'goods_id' => $goods_id,
|
|
|
- 'goods_spec_id' => $goods_spec_id,
|
|
|
- 'number' => $number,
|
|
|
- ]);
|
|
|
- }elseif ($skuInfo->{'sku_type'} == 2 && $skuInfo->{'affect_quantity'} == 1){//可多选规格并且能多添加购物车数量
|
|
|
- ShoppingDetail::where('shopping_id',$shopping_info->{'id'})->where('goods_id',$goods_id)->where('goods_spec_id',$goods_spec_id)->update(['number' => $number]);//跟新购物车
|
|
|
- }
|
|
|
+ $shopping_id = $shopping->{'id'};
|
|
|
+ if (empty($shopping_id)) {
|
|
|
+ DB::rollBack();
|
|
|
+ return ['code' => 0, 'msg' => '添加失败'];
|
|
|
}
|
|
|
- }else{//没选规则就是更新主表
|
|
|
+ }else{
|
|
|
if ($number <= 0){//数量为0直接删除
|
|
|
Shopping::where('id',$shopping_info->{'id'})->delete();//删除主表
|
|
|
ShoppingDetail::where('shopping_id',$shopping_info->{'id'})->delete();//删除详情表
|
|
|
@@ -246,18 +231,142 @@ class ShoppingCartServer
|
|
|
Shopping::where('id',$shopping_info->{'id'})->update(['number' => $number]);
|
|
|
}
|
|
|
}
|
|
|
-
|
|
|
}
|
|
|
|
|
|
-
|
|
|
DB::commit();
|
|
|
return ['code' => 1, 'msg' => '添加成功'];
|
|
|
}catch (\Exception $e){
|
|
|
DB::rollBack();
|
|
|
return ['code' => 0, 'msg' => '添加失败'];
|
|
|
}
|
|
|
-
|
|
|
}
|
|
|
+// /**
|
|
|
+// * 添加购物车
|
|
|
+// * @param $m_id
|
|
|
+// * @param $shop_id
|
|
|
+// * @param $category_id
|
|
|
+// * @param $goods_id
|
|
|
+// * @param $goods_spec_id
|
|
|
+// * @param $number
|
|
|
+// * @return array
|
|
|
+// */
|
|
|
+// function saveShopping($m_id,$shop_id,$category_id,$goods_id,$goods_spec_id,$number)
|
|
|
+// {
|
|
|
+// if (empty($goods_spec_id)){
|
|
|
+// $goods_spec_id = '';
|
|
|
+// }
|
|
|
+// //获取商品
|
|
|
+// $goods = Goods::where('is_del',0)
|
|
|
+// ->where('id',$goods_id)
|
|
|
+// ->where('shop_id',$shop_id)
|
|
|
+// ->where('category_id',$category_id)
|
|
|
+// ->select(['id as goods_id','status','spec_type'])
|
|
|
+// ->first();
|
|
|
+// if (empty($goods)) return ['code' => 0, 'msg' => '当前商品不存在'];
|
|
|
+// if ($goods->{'status'} != 1) return ['code' => 0, 'msg' => '当前商品已下架'];
|
|
|
+// //如果是单规格但是选择了规格
|
|
|
+// if ($goods->{'spec_type'} == 1 && !empty($goods_spec_id)){
|
|
|
+// return ['code' => 0, 'msg' => '该商品没有规格'];
|
|
|
+// }
|
|
|
+// if (!empty($goods_spec_id)){
|
|
|
+// $sku_id = GoodsSpec::where('goods_id',$goods_id)->where('id',$goods_spec_id)->where('is_del',0)->value('sku_id');
|
|
|
+// if (empty($sku_id)){
|
|
|
+// return ['code' => 0, 'msg' => '商品规格错误'];
|
|
|
+// }
|
|
|
+// $skuInfo = GoodsSku::where('goods_id',$goods_id)->where('id',$sku_id)->where('is_del',0)->first();
|
|
|
+// if (empty($skuInfo)){
|
|
|
+// return ['code' => 0, 'msg' => '商品规格不存在'];
|
|
|
+// }
|
|
|
+// }
|
|
|
+// DB::beginTransaction();
|
|
|
+// try {
|
|
|
+// //获取购物车是否存在此商品
|
|
|
+// $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 ($goods->{'spec_type'} == 2 && empty($goods_spec_id)){
|
|
|
+// return ['code' => 0, 'msg' => '请选择商品规格'];
|
|
|
+// }
|
|
|
+// 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 (!empty($goods_spec_id)){
|
|
|
+// if ($skuInfo->{'sku_type'} == 1){//商品只能单选
|
|
|
+// $number = 1;//单选购物数量只能为1
|
|
|
+// }elseif ($skuInfo->{'sku_type'} == 2 && $skuInfo->{'affect_quantity'} == 0){//可多选规格但是不能多添加购物车数量
|
|
|
+// $number = 1;//数量只能为1
|
|
|
+// }
|
|
|
+// ShoppingDetail::create([
|
|
|
+// 'shopping_id' => $shopping_id,
|
|
|
+// 'goods_id' => $goods_id,
|
|
|
+// 'goods_spec_id' => $goods_spec_id,
|
|
|
+// 'number' => $number,
|
|
|
+// ]);
|
|
|
+// }
|
|
|
+// }else{//有购物车信息,更新
|
|
|
+// $shopping_id = $shopping_info->{'id'};
|
|
|
+//
|
|
|
+// if (!empty($goods_spec_id)){//选择了规则就是更新购物车详情表
|
|
|
+// if ($number <= 0){//数量为0直接删除
|
|
|
+// ShoppingDetail::where('shopping_id',$shopping_info->{'id'})->where('goods_id',$goods_id)->where('goods_spec_id',$goods_spec_id)->delete();//删除详情表
|
|
|
+// }else{
|
|
|
+// //检查该规格信息是否讯息
|
|
|
+// $details = ShoppingDetail::where('shopping_id',$shopping_info->{'id'})->where('goods_id',$goods_id)->where('goods_spec_id',$goods_spec_id)->select(['id'])->first();
|
|
|
+//
|
|
|
+// if ($skuInfo->{'sku_type'} == 1){//商品只能单选
|
|
|
+// $number = 1;//单选购物数量只能为1
|
|
|
+// }elseif ($skuInfo->{'sku_type'} == 2 && $skuInfo->{'affect_quantity'} == 0){//可多选规格但是不能多添加购物车数量
|
|
|
+// $number = 1;//数量只能为1
|
|
|
+// }
|
|
|
+// if (empty($details)){
|
|
|
+// ShoppingDetail::create([
|
|
|
+// 'shopping_id' => $shopping_id,
|
|
|
+// 'goods_id' => $goods_id,
|
|
|
+// 'goods_spec_id' => $goods_spec_id,
|
|
|
+// 'number' => $number,
|
|
|
+// ]);
|
|
|
+// }elseif ($skuInfo->{'sku_type'} == 2 && $skuInfo->{'affect_quantity'} == 1){//可多选规格并且能多添加购物车数量
|
|
|
+// ShoppingDetail::where('shopping_id',$shopping_info->{'id'})->where('goods_id',$goods_id)->where('goods_spec_id',$goods_spec_id)->update(['number' => $number]);//跟新购物车
|
|
|
+// }
|
|
|
+// }
|
|
|
+// }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]);
|
|
|
+// }
|
|
|
+// }
|
|
|
+//
|
|
|
+// }
|
|
|
+//
|
|
|
+//
|
|
|
+// DB::commit();
|
|
|
+// return ['code' => 1, 'msg' => '添加成功'];
|
|
|
+// }catch (\Exception $e){
|
|
|
+// DB::rollBack();
|
|
|
+// return ['code' => 0, 'msg' => '添加失败'];
|
|
|
+// }
|
|
|
+//
|
|
|
+// }
|
|
|
|
|
|
|
|
|
/**
|