<?php namespace App\Modules\Mini\Services; use App\Base\BaseService; use App\Events\OrderCreateEvent; use App\Models\Cart; use App\Models\Goods\Goods; use App\Models\Order\Order; use App\Models\Order\OrderGoods; use App\Models\User\User; use Illuminate\Support\Arr; use Illuminate\Support\Facades\DB; class OrderService extends BaseService { /** * 询价单个商品 */ public function askOne(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(); $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 = 0; $og->count = $cart->count; $og->custom = $cart->custom; $og->save(); } return $order; }); OrderCreateEvent::dispatch($order); return [ "id" => $order->id, ]; } }