option('company_id'); $chunk = (int) $this->option('chunk'); $chunk = $chunk > 0 ? $chunk : 500; $query = Company::query()->orderBy('id'); if (!empty($companyId)) { $query->where('id', $companyId); } $total = (clone $query)->count(); if ($total == 0) { return $this->info('没有需要处理的公司'); } $this->info("开始重算 company_market,共 {$total} 家公司"); $bar = $this->output->createProgressBar($total); $bar->start(); $updatedCount = 0; $unchangedCount = 0; $failCount = 0; $query->chunkById($chunk, function ($companies) use (&$updatedCount, &$unchangedCount, &$failCount, $bar) { foreach ($companies as $company) { try { $updated = Company::updateMarketStatus($company->id); if ($updated) { $updatedCount++; $bar->setMessage($company->company_name . ' 已更新', 'status'); } else { $unchangedCount++; $bar->setMessage($company->company_name . ' 无变化', 'status'); } } catch (\Throwable $e) { $failCount++; $bar->setMessage($company->company_name . ' 失败: ' . $e->getMessage(), 'status'); } $bar->advance(); } }); $bar->finish(); $this->newLine(); $this->info("处理完成:更新 {$updatedCount} 家,未变化 {$unchangedCount} 家,失败 {$failCount} 家"); return $this->info('company_market 全量重算完成'); } }