From 656f197737b61ab6f36684255020c9aa2df0a3e9 Mon Sep 17 00:00:00 2001 From: ouyangxq <775153912@qq.com> Date: Mon, 21 Sep 2026 20:06:46 +0800 Subject: [PATCH] fix: fallback customer name for dimension initialization --- .../CustomerDimensionInitializationRelay.java | 6 +++++- ...ustomerDimensionInitializationRelayTest.java | 17 +++++++++++++++++ 2 files changed, 22 insertions(+), 1 deletion(-) diff --git a/iam/src/main/java/com/baiyue/iam/service/CustomerDimensionInitializationRelay.java b/iam/src/main/java/com/baiyue/iam/service/CustomerDimensionInitializationRelay.java index ea43f1686..782cde930 100644 --- a/iam/src/main/java/com/baiyue/iam/service/CustomerDimensionInitializationRelay.java +++ b/iam/src/main/java/com/baiyue/iam/service/CustomerDimensionInitializationRelay.java @@ -41,9 +41,13 @@ public class CustomerDimensionInitializationRelay { repository.markCancelled(task, workerId); return; } + String customerName = task.customerName(); + if (customerName == null || customerName.isBlank()) { + customerName = "客户-" + task.tenantId(); + } ApiResponse response = client.initialize( internalToken, new CustomerDimensionRuleClient.InitializationRequest( - task.tenantId(), task.operatorId(), task.initializationKey(), task.customerName())); + task.tenantId(), task.operatorId(), task.initializationKey(), customerName)); requireSuccess(response, true); if (response.data() == null || response.data().configId() == null || response.data().chargeRuleId() == null) { diff --git a/iam/src/test/java/com/baiyue/iam/service/CustomerDimensionInitializationRelayTest.java b/iam/src/test/java/com/baiyue/iam/service/CustomerDimensionInitializationRelayTest.java index 2fcc59dd1..e138c9d1b 100644 --- a/iam/src/test/java/com/baiyue/iam/service/CustomerDimensionInitializationRelayTest.java +++ b/iam/src/test/java/com/baiyue/iam/service/CustomerDimensionInitializationRelayTest.java @@ -70,6 +70,23 @@ class CustomerDimensionInitializationRelayTest { anyString(), any(Boolean.class)); } + @Test + void blankCustomerNameUsesDeterministicTenantFallback() { + CustomerDimensionInitializationTask task = new CustomerDimensionInitializationTask( + 10001L, 9001L, " ", "iam-customer-create:10001", "INITIALIZE", "SENDING", 0, 3); + when(repository.claim(anyLong(), anyString(), any(LocalDateTime.class))).thenReturn(task); + when(client.initialize(anyString(), any())).thenReturn(ApiResponse.success( + new CustomerDimensionRuleClient.InitializationResponse(91L, 191L, true))); + + relay.deliver(10001L); + + ArgumentCaptor request = + ArgumentCaptor.forClass(CustomerDimensionRuleClient.InitializationRequest.class); + verify(client).initialize(anyString(), request.capture()); + assertTrue("客户-10001".equals(request.getValue().customerName())); + verify(repository).markReady(task, workerId(), 91L); + } + @Test void transientFailureStaysPendingWithDiagnosticAndBackoff() { CustomerDimensionInitializationTask task = task("INITIALIZE", 0);