From 6255179bf56321cb616337c2d8fa0271e8d11e5b Mon Sep 17 00:00:00 2001 From: yueyang <2495544247@qq.com> Date: Thu, 8 Oct 2026 15:34:01 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AF=BC=E5=87=BA=E4=BB=BB=E5=8A=A1=E5=8F=96?= =?UTF-8?q?=E6=B6=88=EF=BC=9A=E7=82=B9=E5=87=BB=E5=90=8E=E7=AB=8B=E5=8D=B3?= =?UTF-8?q?=E7=BD=AE=E4=B8=BA=E3=80=8C=E5=B7=B2=E5=8F=96=E6=B6=88=E3=80=8D?= =?UTF-8?q?=EF=BC=8C=E5=90=8E=E5=8F=B0=E4=B8=8B=E4=B8=80=E4=B8=AA=E6=A3=80?= =?UTF-8?q?=E6=9F=A5=E7=82=B9=E5=81=9C=E6=AD=A2=E5=B9=B6=E5=88=A0=E9=99=A4?= =?UTF-8?q?=E5=8D=8A=E6=88=90=E5=93=81=E6=96=87=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/Console/Commands/RunAccountBillsExportTask.php | 2 +- .../EcommerceFinance/Http/Controllers/AccountBills.php | 8 +++++++- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/app/Console/Commands/RunAccountBillsExportTask.php b/app/Console/Commands/RunAccountBillsExportTask.php index a18bf71a..e57835f0 100644 --- a/app/Console/Commands/RunAccountBillsExportTask.php +++ b/app/Console/Commands/RunAccountBillsExportTask.php @@ -67,7 +67,6 @@ class RunAccountBillsExportTask extends Command )); $written++; if ($written % 2000 === 0) { - $task = $tasks->patch($task, ['status' => 'running', 'rows' => $written]); // 用户在弹窗里点了「取消」:停止导出并删掉半成品文件。 $fresh = $tasks->find((int) $task['user_id'], (string) $task['token']); if (! empty($fresh['cancel'])) { @@ -78,6 +77,7 @@ class RunAccountBillsExportTask extends Command return self::SUCCESS; } + $task = $tasks->patch($task, ['status' => 'running', 'rows' => $written]); } } fclose($csv); diff --git a/modules/EcommerceFinance/Http/Controllers/AccountBills.php b/modules/EcommerceFinance/Http/Controllers/AccountBills.php index a3361f78..6caeeb14 100644 --- a/modules/EcommerceFinance/Http/Controllers/AccountBills.php +++ b/modules/EcommerceFinance/Http/Controllers/AccountBills.php @@ -451,7 +451,13 @@ class AccountBills extends Controller $status = (string) ($task['status'] ?? ''); abort_if(in_array($status, ['done', 'failed', 'cancelled'], true), 409, '该任务已结束,无需取消。'); - $tasks->patch($task, ['cancel' => true]); + // 立刻显示「已取消」(排队中的任务没有进程去改状态,必须在这里定稿); + // 运行中的任务会在下一个检查点停下并删掉半成品文件。 + $tasks->patch($task, [ + 'cancel' => true, + 'status' => 'cancelled', + 'finished_at' => \Modules\EcommerceFinance\Services\AccountBillsExportTasks::beijingNow(), + ]); return response()->json(['status' => 'ok'], 200, ['Cache-Control' => 'private, no-store']); }