确认订单
parent
2176d67622
commit
4bfef1d220
|
|
@ -6,6 +6,7 @@ use App\Endpoint\Api\Http\Controllers\Controller;
|
|||
use App\Endpoint\Api\Http\Resources\OrderSimpleResource;
|
||||
use App\Exceptions\BizException;
|
||||
use App\Helpers\Paginator as PaginatorHelper;
|
||||
use App\Models\Order;
|
||||
use App\Services\OrderService;
|
||||
use Illuminate\Database\Eloquent\ModelNotFoundException;
|
||||
use Illuminate\Http\Request;
|
||||
|
|
@ -105,6 +106,29 @@ class OrderController extends Controller
|
|||
return OrderSimpleResource::make($order);
|
||||
}
|
||||
|
||||
/**
|
||||
* 确认收货/完成订单
|
||||
*
|
||||
* @param int $id
|
||||
* @param \Illuminate\Http\Request $request
|
||||
* @return \Illuminate\Http\JsonResponse
|
||||
*/
|
||||
public function confirm($id, Request $request)
|
||||
{
|
||||
$order = $request->user()->orders()->findOrFail($id);
|
||||
|
||||
if (! $order->isConfirmable()) {
|
||||
throw new BizException('订单不可确认');
|
||||
}
|
||||
|
||||
$order->update([
|
||||
'status' => Order::STATUS_COMPLETED,
|
||||
'completed_at' => now(),
|
||||
]);
|
||||
|
||||
return response()->noContent();
|
||||
}
|
||||
|
||||
/**
|
||||
* 取消订单
|
||||
*
|
||||
|
|
@ -117,10 +141,12 @@ class OrderController extends Controller
|
|||
$order = $request->user()->orders()->findOrFail($id);
|
||||
|
||||
if (! $order->isCancelable()) {
|
||||
throw new BizException('订单无法取消');
|
||||
throw new BizException('订单不可取消');
|
||||
}
|
||||
|
||||
$order->markAsCancelled();
|
||||
$order->update([
|
||||
'status' => Order::STATUS_CANCELLED,
|
||||
]);
|
||||
|
||||
return response()->noContent();
|
||||
}
|
||||
|
|
|
|||
|
|
@ -111,6 +111,7 @@ Route::group([
|
|||
|
||||
// 订单
|
||||
Route::apiResource('order/orders', OrderController::class);
|
||||
Route::post('order/orders/{order}/confirm', [OrderController::class, 'confirm']);
|
||||
Route::post('order/orders/{order}/cancel', [OrderController::class, 'cancel']);
|
||||
Route::post('order/verify-order', OrderVerifyController::class);
|
||||
});
|
||||
|
|
|
|||
|
|
@ -24,6 +24,13 @@ class Order extends Model
|
|||
'status' => self::STATUS_PENDING,
|
||||
];
|
||||
|
||||
/**
|
||||
* @var array
|
||||
*/
|
||||
protected $casts = [
|
||||
'completed_at' => 'datetime',
|
||||
];
|
||||
|
||||
/**
|
||||
* @var array
|
||||
*/
|
||||
|
|
@ -57,6 +64,16 @@ class Order extends Model
|
|||
return $this->hasMany(OrderProduct::class);
|
||||
}
|
||||
|
||||
/**
|
||||
* 确认此订单是否可以被确认
|
||||
*
|
||||
* @return bool
|
||||
*/
|
||||
public function isConfirmable(): bool
|
||||
{
|
||||
return in_array($this->status, [static::STATUS_PAID, static::STATUS_SHIPPED]);
|
||||
}
|
||||
|
||||
/**
|
||||
* 确认此订单是否可以被取消
|
||||
*
|
||||
|
|
@ -67,18 +84,6 @@ class Order extends Model
|
|||
return in_array($this->status, [static::STATUS_PENDING, static::STATUS_PAID]);
|
||||
}
|
||||
|
||||
/**
|
||||
* 将订单标记未已取消
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function markAsCancelled(): void
|
||||
{
|
||||
$this->forceFill([
|
||||
'status' => static::STATUS_CANCELLED,
|
||||
])->save();
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取订单支付金额
|
||||
*
|
||||
|
|
|
|||
Loading…
Reference in New Issue