6
0
Fork 0

取消订单

release
李静 2021-12-16 11:44:36 +08:00
parent b7d2405e69
commit 2176d67622
4 changed files with 45 additions and 0 deletions

View File

@ -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();
}
}

View File

@ -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);
});
});

View File

@ -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();
}
/**
* 获取订单支付金额
*

View File

@ -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 => '地区',