取消订单
parent
b7d2405e69
commit
2176d67622
|
|
@ -104,4 +104,24 @@ class OrderController extends Controller
|
|||
|
||||
return OrderSimpleResource::make($order);
|
||||
}
|
||||
|
||||
/**
|
||||
* 取消订单
|
||||
*
|
||||
* @param int $id
|
||||
* @param \Illuminate\Http\Request $request
|
||||
* @return \Illuminate\Http\JsonResponse
|
||||
*/
|
||||
public function cancel($id, Request $request)
|
||||
{
|
||||
$order = $request->user()->orders()->findOrFail($id);
|
||||
|
||||
if (! $order->isCancelable()) {
|
||||
throw new BizException('订单无法取消');
|
||||
}
|
||||
|
||||
$order->markAsCancelled();
|
||||
|
||||
return response()->noContent();
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -111,6 +111,7 @@ Route::group([
|
|||
|
||||
// 订单
|
||||
Route::apiResource('order/orders', OrderController::class);
|
||||
Route::post('order/orders/{order}/cancel', [OrderController::class, 'cancel']);
|
||||
Route::post('order/verify-order', OrderVerifyController::class);
|
||||
});
|
||||
});
|
||||
|
|
|
|||
|
|
@ -57,6 +57,28 @@ class Order extends Model
|
|||
return $this->hasMany(OrderProduct::class);
|
||||
}
|
||||
|
||||
/**
|
||||
* 确认此订单是否可以被取消
|
||||
*
|
||||
* @return bool
|
||||
*/
|
||||
public function isCancelable(): bool
|
||||
{
|
||||
return in_array($this->status, [static::STATUS_PENDING, static::STATUS_PAID]);
|
||||
}
|
||||
|
||||
/**
|
||||
* 将订单标记未已取消
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function markAsCancelled(): void
|
||||
{
|
||||
$this->forceFill([
|
||||
'status' => static::STATUS_CANCELLED,
|
||||
])->save();
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取订单支付金额
|
||||
*
|
||||
|
|
|
|||
|
|
@ -1,5 +1,6 @@
|
|||
<?php
|
||||
|
||||
use App\Models\Order;
|
||||
use App\Models\ProductSku;
|
||||
use App\Models\ProductSpu;
|
||||
use App\Models\ShippingAddress;
|
||||
|
|
@ -11,6 +12,7 @@ return [
|
|||
ShippingAddress::class => '地址',
|
||||
ProductSpu::class => '商品',
|
||||
ProductSku::class => '商品',
|
||||
Order::class => '订单',
|
||||
ShoppingCartItem::class => '商品',
|
||||
UserCoupon::class => '优惠券',
|
||||
Zone::class => '地区',
|
||||
|
|
|
|||
Loading…
Reference in New Issue