Browse Source

确认订单

master
Lemon 5 years ago
parent
commit
58541902b2
  1. 98
      app/Service/v3/Implementations/ShopCartService.php

98
app/Service/v3/Implementations/ShopCartService.php

@ -83,7 +83,7 @@ class ShopCartService implements ShopCartServiceInterface
['goods_id','=',$goodsId], ['goods_id','=',$goodsId],
]) ])
->select('num') ->select('num')
->get();
->first();
return $ShoppingCart->num; return $ShoppingCart->num;
} }
@ -181,45 +181,67 @@ class ShopCartService implements ShopCartServiceInterface
public function getGoodsByShopcartId($shopcartIds) public function getGoodsByShopcartId($shopcartIds)
{ {
$shopcartIds = explode(',',$shopcartIds);
$storeIds = Db::table('lanzu_shopping_cart')
->whereIn('id',$shopcartIds)
->pluck('store_id')
->toArray();
$stores = Store::query()->with(['ShoppingCart' => function($query) use ($shopcartIds){
$query->whereIn('id',$shopcartIds);
}])->whereIn('id',$storeIds)
->get()
->toArray();
$storeArr = [];
foreach ($stores as $key => &$store){
$sotreType = $this->storeService->check($store['id']);
if(!$sotreType){
bcscale(6);
// 查询当前用户的市场下的购物车数据
$shopcartIdsArr = explode(',',$shopcartIds);
$carts = ShoppingCart::query()
->with(['store', 'goods'])
->whereIn('id',$shopcartIdsArr)
->get();
$cartList = [];
$totalAmount = 0;
foreach ($carts as $key => &$cart) {
if (empty($cart->store)||empty($cart->goods)) {
continue; continue;
} }
$subtotal = 0;
foreach ($store['shopping_cart'] as $k => &$shopcart){
if($shopcart['activity_type'] == 1){
$goodsType = $this->goodsService->check($shopcart['goods_id']);
}else{
$goodsType = $this->goodsActivityService->check($shopcart['goods_id'],$shopcart['num'],$shopcart['user_id']);
}
if($goodsType !== true){
unset($store['shopping_cart'][$k]);
continue;
}
if($shopcart['activity_type'] == 1){
$builder = Goods::query();
}else{
$builder = GoodsActivity::query();
$shoppingCart = $cart->toArray();
$store = $shoppingCart['store'];
unset($shoppingCart['store']);
// 商户是否歇业
$checkStore = $this->storeService->check($store['id']);
if (!$checkStore) {
continue;
}
// 商品是否失效
if ($cart->activity_type == 2) {
$goods = GoodsActivity::query()->find($cart->goods_id);
$res = $this->goodsActivityService->check($goods, $cart->num, $cart->user_id);
} else {
$goods = Goods::query()->find($cart->goods_id);
$res = $this->goodsService->check($goods, $cart->num);
}
if ($res === true) {
$cartList['store_lists'][$store['id']]['store'] = $store;
$cartList['store_lists'][$store['id']]['shopping_cart'][] = $shoppingCart;
if (isset($cartList['store_lists'][$store['id']]['subtotal'])) {
$cartList['store_lists'][$store['id']]['subtotal'] = bcadd(
$cartList['store_lists'][$store['id']]['subtotal'],
bcmul($cart->goods->price, $cart->num)
);
} else {
$cartList['store_lists'][$store['id']]['subtotal'] = bcmul($cart->goods->price, $cart->num);
} }
$shopcart['goods'] = $builder->where('id',$shopcart['goods_id'])->first()->toArray();
$subtotal+= $shopcart['num'] * $shopcart['goods']['price'];
$totalAmount = bcadd($totalAmount, bcmul($cart->goods->price, $cart->num));
} }
$store['subtotal'] = $subtotal;
$storeArr[] = $store;
} }
return $storeArr;
$cartList['store_lists'] = isset($cartList['store_lists']) ? array_values($cartList['store_lists']) : [];
foreach ($cartList['store_lists'] as $key => &$value) {
$value['subtotal'] = bcadd($value['subtotal'], '0' , 2);
}
$cartList['total'] = bcadd($totalAmount, '0', 2);
return $cartList['store_lists'];
} }
/** /**
@ -231,7 +253,7 @@ class ShopCartService implements ShopCartServiceInterface
public function allForUser($userId, $marketId) public function allForUser($userId, $marketId)
{ {
//bcscale(6);
bcscale(6);
// 查询当前用户的市场下的购物车数据 // 查询当前用户的市场下的购物车数据
$carts = ShoppingCart::query() $carts = ShoppingCart::query()
->with(['store', 'goods']) ->with(['store', 'goods'])
@ -271,10 +293,10 @@ class ShopCartService implements ShopCartServiceInterface
// 商品是否失效 // 商品是否失效
if ($cart->activity_type == 2) { if ($cart->activity_type == 2) {
$goods = GoodsActivity::query()->find($cart->goods_id); $goods = GoodsActivity::query()->find($cart->goods_id);
$res = $this->goodsActivityService->check($cart->goods, $cart->num, $cart->user_id);
$res = $this->goodsActivityService->check($goods, $cart->num, $cart->user_id);
} else { } else {
$goods = Goods::query()->find($cart->goods_id); $goods = Goods::query()->find($cart->goods_id);
$res = $this->goodsService->check($cart->goods, $cart->num);
$res = $this->goodsService->check($goods, $cart->num);
} }
if ($res === true) { if ($res === true) {

Loading…
Cancel
Save