order
parent
580088a561
commit
560910dd7a
|
|
@ -46,22 +46,22 @@ class OrderController extends Controller
|
|||
*/
|
||||
public function store(Request $request)
|
||||
{
|
||||
$isQuick = $request->filled('product');
|
||||
|
||||
$rules = $isQuick ? [
|
||||
'product.sku_id' => ['bail', 'required', 'int'],
|
||||
'product.quantity' => ['bail', 'required', 'int', 'min:1'],
|
||||
$validated = $request->validate(array_merge([
|
||||
'shipping_address_id' => ['bail', 'nullable', 'int'],
|
||||
'coupon_id' => ['bail', 'nullable', 'int'],
|
||||
'note' => ['bail', 'nullable', 'string', 'max:255'],
|
||||
] : [
|
||||
'shopping_cart' => ['bail', 'required', 'array'],
|
||||
'shipping_address_id' => ['bail', 'required', 'int'],
|
||||
'coupon_id' => ['bail', 'nullable', 'int'],
|
||||
'note' => ['bail', 'nullable', 'string', 'max:255'],
|
||||
];
|
||||
|
||||
$input = $request->validate($rules, [], [
|
||||
], match (true) {
|
||||
$request->filled('order_pre') => [
|
||||
'order_pre' => ['bail','required', 'int'],
|
||||
],
|
||||
$request->filled('product') => [
|
||||
'product.sku_id' => ['bail', 'required', 'int'],
|
||||
'product.quantity' => ['bail', 'required', 'int', 'min:1'],
|
||||
],
|
||||
default => [
|
||||
'shopping_cart' => ['bail', 'required', 'array'],
|
||||
]
|
||||
}), [], [
|
||||
'product.sku_id' => '商品',
|
||||
'product.quantity' => '数量',
|
||||
'shopping_cart' => '购物车商品',
|
||||
|
|
@ -69,31 +69,31 @@ class OrderController extends Controller
|
|||
'coupon_id' => '优惠券',
|
||||
'note' => '订单备注',
|
||||
]);
|
||||
|
||||
|
||||
$user = $request->user();
|
||||
|
||||
try {
|
||||
$order = DB::transaction(function () use ($isQuick, $user, $input) {
|
||||
$order = DB::transaction(function () use ($user, $validated, $request) {
|
||||
$orderService = new OrderService();
|
||||
|
||||
if ($isQuick) {
|
||||
return $orderService->createQuickOrder(
|
||||
return match (true) {
|
||||
$request->filled('order_pre') => $orderService->createOrderByPre($user, OrderPre::findOrFail($request->input('order_pre')), $request->input('coupon_id')),
|
||||
$request->filled('product') => $orderService->createQuickOrder(
|
||||
$user,
|
||||
$input['product']['sku_id'],
|
||||
$input['product']['quantity'],
|
||||
$input['shipping_address_id'] ?? null,
|
||||
$input['coupon_id'] ?? null,
|
||||
$input['note'] ?? null,
|
||||
);
|
||||
}
|
||||
|
||||
return $orderService->createShoppingCartOrder(
|
||||
$user,
|
||||
$input['shopping_cart'],
|
||||
$input['shipping_address_id'] ?? null,
|
||||
$input['coupon_id'] ?? null,
|
||||
$input['note'] ?? null,
|
||||
);
|
||||
$validated['product']['sku_id'],
|
||||
$validated['product']['quantity'],
|
||||
$validated['shipping_address_id'] ?? null,
|
||||
$validated['coupon_id'] ?? null,
|
||||
$validated['note'] ?? null,
|
||||
),
|
||||
default => $orderService->createShoppingCartOrder(
|
||||
$user,
|
||||
$validated['shopping_cart'],
|
||||
$validated['shipping_address_id'] ?? null,
|
||||
$validated['coupon_id'] ?? null,
|
||||
$validated['note'] ?? null,
|
||||
),
|
||||
};
|
||||
});
|
||||
} catch (QueryException $e) {
|
||||
if (strpos($e->getMessage(), 'Numeric value out of range') !== false) {
|
||||
|
|
|
|||
|
|
@ -3,6 +3,8 @@
|
|||
namespace App\Endpoint\Api\Http\Controllers\Order;
|
||||
|
||||
use App\Endpoint\Api\Http\Controllers\Controller;
|
||||
use App\Models\OrderPre;
|
||||
use App\Models\ProductSku;
|
||||
use App\Services\OrderService;
|
||||
use Illuminate\Http\Request;
|
||||
|
||||
|
|
@ -46,6 +48,18 @@ class OrderVerifyController extends Controller
|
|||
|
||||
$user = $request->user();
|
||||
|
||||
if ($request->filled('order_pre')) {
|
||||
$pre = OrderPre::find($request->input('order_pre'));
|
||||
$products = [];
|
||||
foreach($pre->products as $item) {
|
||||
array_push($products, [
|
||||
'sku' => ProductSku::findOrFail($item['sku_id']),
|
||||
'quantity' => $item['quantity']
|
||||
]);
|
||||
}
|
||||
return response()->json($orderService->verifyOrder($user, $products, $request->input('shipping_address_id'), $request->input('coupon_id'), null));
|
||||
}
|
||||
|
||||
return response()->json(
|
||||
$isQuick
|
||||
? $orderService->verifyQuickOrder(
|
||||
|
|
|
|||
|
|
@ -174,7 +174,7 @@ class OrderService
|
|||
* 添加店铺订单
|
||||
*
|
||||
*/
|
||||
public function createOrderByPre(User $user, OrderPre $order_pre)
|
||||
public function createOrderByPre(User $user, OrderPre $order_pre, $coupon_id = null)
|
||||
{
|
||||
$products = [];
|
||||
foreach($order_pre->products as $item) {
|
||||
|
|
@ -184,7 +184,7 @@ class OrderService
|
|||
]);
|
||||
}
|
||||
|
||||
$coupon_id = data_get($order_pre, 'others.coupon_id');
|
||||
$coupon_id = $coupon_id ?: data_get($order_pre, 'others.coupon_id');
|
||||
$note = data_get($order_pre, 'others.note');
|
||||
|
||||
// 优惠券
|
||||
|
|
@ -653,7 +653,7 @@ class OrderService
|
|||
* @param int|null $bargainOrderId
|
||||
* @return array
|
||||
*/
|
||||
protected function verifyOrder(User $user, array $products, ?int $shippingAddressId = null, ?int $couponId = null, ?int $bargainOrderId = null): array
|
||||
public function verifyOrder(User $user, array $products, ?int $shippingAddressId = null, ?int $couponId = null, ?int $bargainOrderId = null): array
|
||||
{
|
||||
// 获取收货地址
|
||||
$shippingAddress = $this->getShippingAddress($user, $shippingAddressId);
|
||||
|
|
|
|||
Loading…
Reference in New Issue