delete(); return; } // 获取订单信息 $order = Order::get($orderId); if (!$order) { Log::info("OrderCancel job: 订单不存在,订单号: {$orderSn}"); $job->delete(); return; } // 检查订单状态,只有待支付状态的订单才能自动取消 if ($order->order_status != OrderEnum::STATUS_CREATE) { Log::info("OrderCancel job: 订单状态已变更,无需取消,订单号: {$orderSn}, 当前状态: {$order->order_status}"); $job->delete(); return; } // 检查订单是否已过期 if ($order->expire_time && $order->expire_time > time()) { Log::info("OrderCancel job: 订单未过期,无需取消,订单号: {$orderSn}"); $job->delete(); return; } // 执行订单取消逻辑 $result = OrderService::cancelOrder($orderId, '系统自动取消(超时未支付)'); if ($result) { Log::info("OrderCancel job: 订单自动取消成功,订单号: {$orderSn}"); } else { Log::error("OrderCancel job: 订单自动取消失败,订单号: {$orderSn}"); } // 删除任务 $job->delete(); } catch (\Exception $e) { Log::error('OrderCancel job 执行异常: ' . $e->getMessage(), [ 'data' => $data, 'trace' => $e->getTraceAsString() ]); // 如果任务执行失败次数超过3次,删除任务 if ($job->attempts() > 3) { Log::error("OrderCancel job: 任务执行失败次数过多,删除任务,订单号: " . ($data['order_sn'] ?? 'unknown')); $job->delete(); } else { // 重新放回队列,延迟60秒后重试 $job->release(60); } } } /** * 任务失败处理 * @param array $data 任务数据 */ public function failed($data) { Log::error('OrderCancel job 最终失败', $data); } }