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'] ?? '')); + } +}