admin/app/frontend/modules/memberCart/controllers/CheckoutController.php

62 lines
2.3 KiB
PHP

<?php
namespace app\frontend\modules\memberCart\controllers;
use app\common\components\ApiController;
use app\common\exceptions\AppException;
use app\common\models\MemberCart;
use app\frontend\modules\memberCart\MemberCartCollection;
class CheckoutController extends ApiController
{
public function index()
{
$cartIds = [];
if (!is_array($_GET['cart_ids'])) {
$cartIds = explode(',', $_GET['cart_ids']);
}
$memberCarts = app('OrderManager')->make('MemberCart')->whereIn('id', $cartIds)->get();
event(new \app\common\events\cart\BeforeCartListVerify($memberCarts));
$memberCarts = new MemberCartCollection($memberCarts);
$memberCarts->loadRelations();
$memberCarts->validate();
if ($memberCarts->isEmpty()) {
throw new AppException('未找到购物车信息');
}
$needChoose = $memberCarts->contains(function (MemberCart $memberCart) use($memberCarts){
return $memberCart->goods->goodsDispatchTypeIds() != $memberCarts->first()->goods->goodsDispatchTypeIds();
});
if(!$needChoose){
return $this->successJson('成功', [
'need_choose' => 0,
'dispatch_types' => []
]);
}
$dispatchTypes = $memberCarts->groupByDispatchType();
foreach ($dispatchTypes as $key => $dispatchType) {
$memberCarts = [];
foreach ($dispatchType['member_carts'] as $memberCart) {
$item['id'] = $memberCart['id'];
$item['goods_id'] = $memberCart['goods_id'];
$item['option_id'] = $memberCart['option_id'];
$item['total'] = $memberCart['total'];
$item['title'] = $memberCart['goods']['title'];
$item['option_title'] = $memberCart['goodsOption']['title'];
$item['thumb'] = $memberCart['goodsOption']['thumb'] ? yz_tomedia($memberCart['goodsOption']['thumb']) : yz_tomedia($memberCart['goods']['thumb']);
$memberCarts[] = $item;
}
$dispatchTypes[$key]['member_carts'] = $memberCarts;
}
return $this->successJson('成功', [
'need_choose' => 1,
'dispatch_types' => $dispatchTypes
]);
}
}