6
0
Fork 0
jiqu-library-server/app/Endpoint/Api/Http/Controllers/Order/OrderVerifyController.php

64 lines
2.0 KiB
PHP

<?php
namespace App\Endpoint\Api\Http\Controllers\Order;
use App\Endpoint\Api\Http\Controllers\Controller;
use App\Services\OrderService;
use Illuminate\Http\Request;
class OrderVerifyController extends Controller
{
/**
* 确认订单
*
* @param \Illuminate\Http\Request $request
* @param \App\Services\OrderService $orderService
* @return \Illuminate\Http\Response
*/
public function __invoke(Request $request, OrderService $orderService)
{
$rules = [
'coupon_id' => ['bail', 'nullable', 'int'],
'shipping_address_id' => ['bail', 'nullable', 'int'],
];
// 快速下单
if ($isQuick = $request->filled('product')) {
$rules = array_merge($rules, [
'product.sku_id' => ['bail', 'required', 'int'],
'product.quantity' => ['bail', 'required', 'int', 'min:1'],
]);
} else {
$rules = array_merge($rules, [
'shopping_cart' => ['bail', 'required', 'array'],
]);
}
$request->validate($rules, [], [
'shopping_cart' => '购物车商品',
'product.sku_id' => '商品',
'product.quantity' => '数量',
'coupon_id' => '优惠券',
'shipping_address_id' => '收货地址',
]);
$user = $request->user();
return response()->json(
$isQuick
? $orderService->verifyQuickOrder(
$user,
$request->input('product.sku_id'),
$request->input('product.quantity'),
$request->input('shipping_address_id'),
$request->input('coupon_id'),
) : $orderService->verifyShoppingCartOrder(
$user,
$request->input('shopping_cart'),
$request->input('shipping_address_id'),
$request->input('coupon_id'),
)
);
}
}