user_id = $user->id; $order->source = $params['source']; $order->save(); $goods = Goods::findOrFail($params['id']); $og = new OrderGoods(); $og->order_id = $order->id; $og->goods_id = $params['id']; $og->sku_id = 0; $og->count = $params['count'] ?? 1; $og->sn = $goods->sn; $og->custom = $params['custom']; if ($skuCustom = Arr::get($params, "sku_custom")) { $og->sn = $og->sn . "-" . implode("-", Arr::pluck($skuCustom, "spec_attr_custom")); } $og->save(); return $order; }); OrderCreateEvent::dispatch($order); return [ "id" => $order->id, ]; } public function askByCart(User $user, $params) { /** @var Order $order */ $order = DB::transaction(function () use ($user, $params) { $order = new Order(); $order->user_id = $user->id; $order->source = $params['source']; $order->save(); foreach ($params['ids'] as $param) { $cart = Cart::where("user_id", $user->id)->where("id", $param['id'])->first(); if (is_null($cart)) { continue; } $og = new OrderGoods(); $og->order_id = $order->id; $og->goods_id = $cart->goods_id; $og->sku_id = $cart->sku_id; $og->count = $cart->count; $og->custom = $cart->custom; $og->save(); } return $order; }); OrderCreateEvent::dispatch($order); return [ "id" => $order->id, ]; } }