From bfc04d8f36d4bf95f1d30814054816a79cdc49bb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=90=9D=E5=8D=9C?= Date: Tue, 17 Mar 2026 19:01:43 +0800 Subject: [PATCH] =?UTF-8?q?refactor(admin):=20=E5=A2=9E=E5=8A=A0AdminFlash?= =?UTF-8?q?::warning=E5=B9=B6=E8=AE=A9BatchDispatchWarning=E5=A4=8D?= =?UTF-8?q?=E7=94=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/Support/AdminFlash.php | 33 +++++++++++++++++++++ app/Support/BatchDispatchWarning.php | 21 ++++++------- tests/Unit/AdminFlashWarningPayloadTest.php | 29 ++++++++++++++++++ 3 files changed, 71 insertions(+), 12 deletions(-) create mode 100644 tests/Unit/AdminFlashWarningPayloadTest.php diff --git a/app/Support/AdminFlash.php b/app/Support/AdminFlash.php index 7bf758d..b514fbd 100644 --- a/app/Support/AdminFlash.php +++ b/app/Support/AdminFlash.php @@ -24,4 +24,37 @@ class AdminFlash return $payload; } + + /** + * @return array{warning:string, warning_link_href?:string, warning_link_label?:string, warning_copy_text?:string, warning_copy_label?:string} + */ + public static function warning( + string $message, + string $linkHref = '', + string $linkLabel = '查看', + string $copyText = '', + string $copyLabel = '复制', + ): array { + $message = (string) $message; + $linkHref = trim((string) $linkHref); + $linkLabel = trim((string) $linkLabel); + $copyText = trim((string) $copyText); + $copyLabel = trim((string) $copyLabel); + + $payload = [ + 'warning' => $message, + ]; + + if ($linkHref !== '') { + $payload['warning_link_href'] = $linkHref; + $payload['warning_link_label'] = $linkLabel !== '' ? $linkLabel : '查看'; + } + + if ($copyText !== '') { + $payload['warning_copy_text'] = $copyText; + $payload['warning_copy_label'] = $copyLabel !== '' ? $copyLabel : '复制'; + } + + return $payload; + } } diff --git a/app/Support/BatchDispatchWarning.php b/app/Support/BatchDispatchWarning.php index 1fa13e2..aa7fade 100644 --- a/app/Support/BatchDispatchWarning.php +++ b/app/Support/BatchDispatchWarning.php @@ -18,22 +18,19 @@ class BatchDispatchWarning $msg = '检测到刚刚已提交过同一批次的' . $actionLabel . '任务(1 分钟内)。为避免重复投递,本次未再次提交。'; - $payload = [ - 'warning' => $msg, - ]; - if ($runId === '') { - return $payload; + return AdminFlash::warning($msg); } $short = RunId::short($runId, $batchType === 'bmpa' ? 7 : 6, 4); - $payload['warning'] = '检测到刚刚已提交过同一批次的' . $actionLabel . '任务(1 分钟内,run_id=' . $short . ')。为避免重复投递,本次未再次提交。'; + $msg = '检测到刚刚已提交过同一批次的' . $actionLabel . '任务(1 分钟内,run_id=' . $short . ')。为避免重复投递,本次未再次提交。'; - $payload['warning_link_href'] = '/admin/platform-batches/show?type=' . $batchType . '&run_id=' . urlencode($runId); - $payload['warning_link_label'] = '进入上次批次复盘'; - $payload['warning_copy_text'] = $runId; - $payload['warning_copy_label'] = '复制run_id'; - - return $payload; + return AdminFlash::warning( + $msg, + '/admin/platform-batches/show?type=' . $batchType . '&run_id=' . urlencode($runId), + '进入上次批次复盘', + $runId, + '复制run_id', + ); } } diff --git a/tests/Unit/AdminFlashWarningPayloadTest.php b/tests/Unit/AdminFlashWarningPayloadTest.php new file mode 100644 index 0000000..0e43e08 --- /dev/null +++ b/tests/Unit/AdminFlashWarningPayloadTest.php @@ -0,0 +1,29 @@ +assertSame('warn', (string) ($p['warning'] ?? '')); + $this->assertArrayNotHasKey('warning_link_href', $p); + $this->assertArrayNotHasKey('warning_copy_text', $p); + } + + public function test_warning_should_include_link_and_copy_when_provided(): void + { + $p = AdminFlash::warning('warn', '/admin/x', '查看', 'ABC', '复制run_id'); + + $this->assertSame('warn', (string) ($p['warning'] ?? '')); + $this->assertSame('/admin/x', (string) ($p['warning_link_href'] ?? '')); + $this->assertSame('查看', (string) ($p['warning_link_label'] ?? '')); + $this->assertSame('ABC', (string) ($p['warning_copy_text'] ?? '')); + $this->assertSame('复制run_id', (string) ($p['warning_copy_label'] ?? '')); + } +}