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