bind('Goods', function ($goodsManager, $attributes) { return new Goods($attributes); }); app('GoodsManager')->bind('GoodsOption', function ($goodsManager, $attributes) { return new GoodsOption($attributes); }); parent::preAction(); } /** * @throws \app\common\exceptions\AppException */ protected function validateParam() { $this->validate([ 'goods' => 'required', 'uid' => 'required', ],null, [ 'goods.required' => 'goods 参数必须填写', 'uid.required' => '购买会员标识必须填写', ]); } /** * @return \Illuminate\Http\JsonResponse * @throws ApiException * @throws \app\common\exceptions\AppException */ public function index() { $this->validateParam(); $this->setMember(); $trade = $this->getMemberCarts()->getTrade(Member::current(), $this->requestParam()); return $this->successJson('成功', $trade); } protected function requestParam() { return request(); } protected function getMemberCarts() { $goods_params = request()->input('goods'); if (empty($goods_params)) { throw new ApiException('无法获取到下单商品'); } $result = collect($goods_params)->map(function ($memberCart) { return MemberCartService::newMemberCart($memberCart); }); $memberCarts = new MemberCartCollection($result); $memberCarts->loadRelations(); return $memberCarts; } /** * @throws ApiException */ public function setMember() { $member = Member::where('uid', request()->input('uid'))->first(); if (!$member) { throw new ApiException('会员不存在'); } Member::$current = $member; } }