From 10ecbe33e9dae37d64b293a84c55f91672666529 Mon Sep 17 00:00:00 2001 From: liapples Date: Fri, 3 Sep 2021 09:39:55 +0800 Subject: [PATCH] =?UTF-8?q?=E8=B6=85=E6=97=B6=E8=AE=A2=E5=8D=95=E5=AE=9A?= =?UTF-8?q?=E6=97=B6=E4=BB=BB=E5=8A=A1=E5=A2=9E=E5=8A=A0=E5=B7=B2=E4=BB=98?= =?UTF-8?q?=E5=AE=9A=E9=87=91=E7=8A=B6=E6=80=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/Console/Commands/OrderTimeout.php | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/app/Console/Commands/OrderTimeout.php b/app/Console/Commands/OrderTimeout.php index b1b0adc..9601d8b 100644 --- a/app/Console/Commands/OrderTimeout.php +++ b/app/Console/Commands/OrderTimeout.php @@ -41,14 +41,16 @@ class OrderTimeout extends Command */ public function handle() { + //需要处理的订单状态 + $status_arr = [OrderStatus::UNPAID, OrderStatus::PAY_EARNEST]; + //记录最小ID,下次查询时按ID正序查询,只处理大于该ID的订单,避免重复扫描数据库 - $min_id = Order::query()->where('status', OrderStatus::UNPAID)->min('id'); + $min_id = Order::query()->whereIn('status', $status_arr)->min('id'); + while (true) { Order::query() - ->where([ - ['status', '=', OrderStatus::UNPAID], - ['id', '>=', $min_id], - ]) + ->where('id', '>=', $min_id) + ->whereIn('status', $status_arr) ->whereNotNull('timeout') ->orderBy('id') ->chunk(100, function ($order) use (&$min_id) { @@ -66,6 +68,7 @@ class OrderTimeout extends Command DB::commit(); } catch (\Exception $exception) { DB::rollBack(); + $this->line("订单ID {$v->id} 错误:" . $exception->getMessage()); } } $min_id = $v->id;