setName('fix:order_overtime') ->setDescription('修复订单超时派单标记'); } protected function execute(Input $input, Output $output) { $now = time(); $count = 0; // 取出可能未超时标记的订单 $orders = Db::name('order') ->where('is_overtime', 0) ->field('id, create_time, dispatch_time') ->select(); foreach ($orders as $order) { $createTime = (int)$order['create_time']; $dispatchTime = $order['dispatch_time'] ? strtotime($order['dispatch_time']) : strtotime($now); $diffMinutes = ($dispatchTime - $createTime) / 60; if ($diffMinutes > 20) { Db::name('order') ->where('id', $order['id']) ->update(['is_overtime' => 1]); $count++; } echo 'deal' . $count . PHP_EOL; } $output->writeln("已更新超时订单数量: $count"); $output->info('OVER'); } }