取消订单
parent
b7d2405e69
commit
2176d67622
|
|
@ -104,4 +104,24 @@ class OrderController extends Controller
|
||||||
|
|
||||||
return OrderSimpleResource::make($order);
|
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::apiResource('order/orders', OrderController::class);
|
||||||
|
Route::post('order/orders/{order}/cancel', [OrderController::class, 'cancel']);
|
||||||
Route::post('order/verify-order', OrderVerifyController::class);
|
Route::post('order/verify-order', OrderVerifyController::class);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
|
||||||
|
|
@ -57,6 +57,28 @@ class Order extends Model
|
||||||
return $this->hasMany(OrderProduct::class);
|
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
|
<?php
|
||||||
|
|
||||||
|
use App\Models\Order;
|
||||||
use App\Models\ProductSku;
|
use App\Models\ProductSku;
|
||||||
use App\Models\ProductSpu;
|
use App\Models\ProductSpu;
|
||||||
use App\Models\ShippingAddress;
|
use App\Models\ShippingAddress;
|
||||||
|
|
@ -11,6 +12,7 @@ return [
|
||||||
ShippingAddress::class => '地址',
|
ShippingAddress::class => '地址',
|
||||||
ProductSpu::class => '商品',
|
ProductSpu::class => '商品',
|
||||||
ProductSku::class => '商品',
|
ProductSku::class => '商品',
|
||||||
|
Order::class => '订单',
|
||||||
ShoppingCartItem::class => '商品',
|
ShoppingCartItem::class => '商品',
|
||||||
UserCoupon::class => '优惠券',
|
UserCoupon::class => '优惠券',
|
||||||
Zone::class => '地区',
|
Zone::class => '地区',
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue