|
@@ -332,10 +332,10 @@ class OrderService
|
|
|
try {
|
|
|
// 1. 验证用户和订单
|
|
|
$order = $this->validateOrderForCancel($userId, $orderId);
|
|
|
- abort_if($order->state == 'cancel', 400, '订单已取消');
|
|
|
+ abort_if($order->state == OrderStatus::CANCELLED->value, 400, '订单已取消');
|
|
|
|
|
|
// 2. 处理退款
|
|
|
- if (in_array($order->state, ['wait_receive', 'on_the_way'])) {
|
|
|
+ if (in_array($order->state, [OrderStatus::PAID->value, OrderStatus::ACCEPTED->value, OrderStatus::DEPARTED->value])) {
|
|
|
$this->handleCancelRefund($order);
|
|
|
}
|
|
|
|
|
@@ -395,6 +395,12 @@ class OrderService
|
|
|
$this->handleRefund($user, $order, $deductAmount, true);
|
|
|
break;
|
|
|
|
|
|
+ case OrderStatus::PAID->value: // 已支付
|
|
|
+ // 返还所有金额
|
|
|
+ $deductAmount = 0;
|
|
|
+ $this->handleRefund($user, $order, $deductAmount, false);
|
|
|
+ break;
|
|
|
+
|
|
|
case OrderStatus::CREATED->value:
|
|
|
// 待支付状态直接取消,无需退款
|
|
|
break;
|
|
@@ -414,13 +420,12 @@ class OrderService
|
|
|
'order_id' => $order->id,
|
|
|
'object_id' => $userId,
|
|
|
'object_type' => MemberUser::class,
|
|
|
- 'state' => 'cancel',
|
|
|
+ 'state' => OrderRecordStatus::CANCELLED->value,
|
|
|
'remark' => '用户取消订单',
|
|
|
]);
|
|
|
|
|
|
// 修改订单状态
|
|
|
- $order->state = 'cancel';
|
|
|
- $order->cancel_time = now(); // 添加取消时间
|
|
|
+ $order->state = OrderStatus::CANCELLED->value;
|
|
|
$order->save();
|
|
|
|
|
|
// 如果有技师,可能需要通知技师订单已取消
|
|
@@ -452,7 +457,7 @@ class OrderService
|
|
|
// 剩余退款金额从支付金额中退还
|
|
|
$paymentRefund = $refundAmount - $balanceRefund;
|
|
|
if ($paymentRefund > 0) {
|
|
|
- $this->createRefundRecords($user, $order, $paymentRefund, 'payment');
|
|
|
+ $this->createRefundRecords($user, $order, $paymentRefund);
|
|
|
}
|
|
|
|
|
|
// 记录平台收入
|