|
@@ -2,6 +2,8 @@
|
|
|
|
|
|
namespace App\Services\Client;
|
|
|
|
|
|
+use App\Enums\OrderGrabRecordStatus;
|
|
|
+use App\Enums\OrderRecordStatus;
|
|
|
use App\Enums\OrderSource;
|
|
|
use App\Enums\OrderStatus;
|
|
|
use App\Enums\OrderType;
|
|
@@ -1079,13 +1081,19 @@ class OrderService
|
|
|
// 2. 验证技师
|
|
|
$coach = $this->validateCoach($coachId);
|
|
|
|
|
|
- // 3. 更新订单信息
|
|
|
+ // 3. 检查抢单池是否已有抢单成功记录
|
|
|
+ $existsGrabSuccess = $order->grabRecords()
|
|
|
+ ->where('state', OrderGrabRecordStatus::SUCCEEDED->value)
|
|
|
+ ->exists();
|
|
|
+ abort_if($existsGrabSuccess, 400, '该订单已抢单成功');
|
|
|
+
|
|
|
+ // 4. 更新订单信息
|
|
|
$this->updateOrderForAssign($order, $coachId);
|
|
|
|
|
|
- // 4. 创建订单记录(指派)
|
|
|
+ // 5. 创建订单记录(指派)
|
|
|
$this->createAssignRecord($order, $userId);
|
|
|
|
|
|
- // 5. 处理支付
|
|
|
+ // 6. 处理支付
|
|
|
if ($order->payment_type == 'balance') {
|
|
|
$this->handleBalancePaymentForAssign($order, $userId, $coachId);
|
|
|
}
|
|
@@ -1107,7 +1115,7 @@ class OrderService
|
|
|
'order_id' => $order->id,
|
|
|
'object_id' => $userId,
|
|
|
'object_type' => MemberUser::class,
|
|
|
- 'state' => 'assigned',
|
|
|
+ 'state' => OrderRecordStatus::ASSIGNED->value,
|
|
|
'remark' => '指定技师',
|
|
|
]);
|
|
|
}
|
|
@@ -1127,7 +1135,7 @@ class OrderService
|
|
|
$wallet->decrement('available_balance', $order->balance_amount);
|
|
|
|
|
|
// 更新订单状态
|
|
|
- $order->update(['state' => 'wait_service']);
|
|
|
+ $order->update(['state' => OrderStatus::PAID->value]);
|
|
|
|
|
|
// 创建钱包支付记录
|
|
|
WalletPaymentRecord::create([
|
|
@@ -1142,24 +1150,24 @@ class OrderService
|
|
|
'state' => 'success',
|
|
|
]);
|
|
|
|
|
|
+ // 创建接单记录
|
|
|
+ // OrderRecord::create([
|
|
|
+ // 'order_id' => $order->id,
|
|
|
+ // 'object_id' => $userId,
|
|
|
+ // 'object_type' => MemberUser::class,
|
|
|
+ // 'state' => OrderRecordStatus::ASSIGNED->value,
|
|
|
+ // 'remark' => '已分配技师',
|
|
|
+ // ]);
|
|
|
+
|
|
|
// 创建支付成功记录
|
|
|
OrderRecord::create([
|
|
|
'order_id' => $order->id,
|
|
|
'object_id' => $userId,
|
|
|
'object_type' => MemberUser::class,
|
|
|
- 'state' => 'pay',
|
|
|
+ 'state' => OrderRecordStatus::PAID->value,
|
|
|
'remark' => '余额支付成功',
|
|
|
]);
|
|
|
|
|
|
- // 创建接单记录
|
|
|
- OrderRecord::create([
|
|
|
- 'order_id' => $order->id,
|
|
|
- 'object_type' => CoachUser::class,
|
|
|
- 'object_id' => $coachId,
|
|
|
- 'state' => 'accepted',
|
|
|
- 'remark' => '抢单成功',
|
|
|
- ]);
|
|
|
-
|
|
|
// 更新抢单记录
|
|
|
$this->updateGrabRecords($order->id, $coachId);
|
|
|
}
|
|
@@ -1171,13 +1179,13 @@ class OrderService
|
|
|
{
|
|
|
// 验证用户状态
|
|
|
$user = MemberUser::where('id', $userId)
|
|
|
- ->where('state', 'enable')
|
|
|
+ ->where('state', UserStatus::OPEN->value)
|
|
|
->firstOrFail();
|
|
|
|
|
|
// 验证订单状态
|
|
|
$order = Order::where('user_id', $userId)
|
|
|
->where('id', $orderId)
|
|
|
- ->whereIn('state', [OrderStatus::CREATED->value])
|
|
|
+ ->whereIn('state', [OrderStatus::CREATED->value, OrderStatus::PAID->value])
|
|
|
->lockForUpdate()
|
|
|
->firstOrFail();
|
|
|
|
|
@@ -1221,7 +1229,7 @@ class OrderService
|
|
|
{
|
|
|
OrderGrabRecord::where('order_id', $orderId)
|
|
|
->update([
|
|
|
- 'state' => 'success',
|
|
|
+ 'state' => OrderGrabRecordStatus::SUCCEEDED->value,
|
|
|
'coach_id' => $coachId,
|
|
|
]);
|
|
|
}
|