find($goodsId); if(empty($goods)){ throw new ErrorCodeException(ErrorCode::GOODS_NOT_EXISTS); } //特价商品限购 $goodsArr = ShoppingCart::query() ->where(['user_id' => $userId,'market_id' => $goods->market_id,'activity_type' => GoodsConstants::IS_ACTIVITY]) ->pluck('goods_id')->toArray(); array_push($goodsArr,$goodsId); $checkGoodsActivity = $this->goodsActivityService->checkOrderActivityCount($goodsArr); if(!$checkGoodsActivity){ throw new ErrorCodeException(ErrorCode::GOODS_ACTIVITY_BUY); } $goodsCheck = $this->goodsActivityService->check($goods,$num,$userId); }else{ $builder = Goods::query(); $goodsType = Goods::class; $goods = $builder->find($goodsId); if(empty($goods)){ throw new ErrorCodeException(ErrorCode::GOODS_NOT_EXISTS); } $goodsCheck = $this->goodsService->check($goods,$num); } if(empty($goods)){ throw new ErrorCodeException(ErrorCode::GOODS_NOT_EXISTS); } if($goodsCheck !== true) { throw new ErrorCodeException($goodsCheck); } $shoppingCart = ShoppingCart::query()->lockForUpdate()->updateOrCreate( [ 'user_id' => $userId, 'goods_id' => $goodsId, 'activity_type' => $activityType ], [ 'market_id' => $goods->market_id, 'store_id' => $goods->store_id, 'num' => $num, 'goods_type' => $goodsType ] ); $storeCheck = $this->storeService->check($goods->store_id); $shoppingCart->check = $storeCheck; return $shoppingCart; } public function check() { // TODO: Implement check() method. } public function undo($shopcartIds) { $shopcartIdsArr = explode(',',$shopcartIds); return ShoppingCart::destroy($shopcartIdsArr); } /** * 清空购物车 * @param $userId * @param $marketId */ public function doClear($userId, $marketId) { return ShoppingCart::query()->where([ ['user_id','=',$userId], ['market_id','=',$marketId], ]) ->delete(); } }