From 9f10d8d4ebb4591255a4029928c606f42ceb50d8 Mon Sep 17 00:00:00 2001 From: chenxing Date: Mon, 28 Sep 2026 17:22:34 +0800 Subject: [PATCH] =?UTF-8?q?refactor(msgcenter):=20=E7=9B=AE=E5=BD=95?= =?UTF-8?q?=E9=94=AE=E5=BD=92=E4=B8=80=20flowcenter=E2=86=92flow-center?= =?UTF-8?q?=EF=BC=88D1=EF=BC=89=E2=80=94=E2=80=94=E7=9B=B4=E6=89=B9?= =?UTF-8?q?=E5=87=BA=E7=AB=99=E7=9B=AE=E6=A0=87=20key=20=E4=B8=8E=E9=83=A8?= =?UTF-8?q?=E7=BD=B2=E5=90=8D=E5=AF=B9=E9=BD=90=EF=BC=8C=E7=A7=81=E6=9C=89?= =?UTF-8?q?=E9=94=AE=20flowcenter-base-url=20=E6=94=B9=E5=90=8D=20flow-cen?= =?UTF-8?q?ter-base-url=EF=BC=88MsgCenterProperties.flowCenterBaseUrl=20?= =?UTF-8?q?=E5=90=8C=E6=AD=A5=EF=BC=89=EF=BC=8C=E6=B3=A8=E9=87=8A/?= =?UTF-8?q?=E5=B8=B8=E9=87=8F/=E6=B5=8B=E8=AF=95=E8=B7=9F=E9=9A=8F?= =?UTF-8?q?=EF=BC=9B=E7=A7=81=E6=9C=89=E6=96=B9=E6=B3=95=E5=90=8D=20getFlo?= =?UTF-8?q?wcenter=20=E7=AD=89=E4=B8=BA=20Java=20=E6=A0=87=E8=AF=86?= =?UTF-8?q?=E7=AC=A6=E6=8C=89=E6=83=AF=E4=BE=8B=E4=BF=9D=E7=95=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../userhome/config/MsgCenterProperties.java | 4 ++-- .../userhome/service/MsgApprovalProxyService.java | 14 +++++++------- src/main/resources/application.yml | 6 +++--- .../service/MsgApprovalProxyServiceTest.java | 6 +++--- 4 files changed, 15 insertions(+), 15 deletions(-) diff --git a/src/main/java/com/yunhai/userhome/config/MsgCenterProperties.java b/src/main/java/com/yunhai/userhome/config/MsgCenterProperties.java index 3ee2529..0be813b 100644 --- a/src/main/java/com/yunhai/userhome/config/MsgCenterProperties.java +++ b/src/main/java/com/yunhai/userhome/config/MsgCenterProperties.java @@ -23,9 +23,9 @@ public class MsgCenterProperties { /** * flow-center 服务基址(卡片直批 B3 出站,/oapi/flow/**);空 = 走服务目录 - * flowcenter(PlatformService 枚举兜底)。不可达时直批降级提示,不阻塞消息卡片。 + * flow-center(PlatformService 枚举兜底,key 与部署名对齐)。不可达时直批降级提示,不阻塞消息卡片。 */ - private String flowcenterBaseUrl = ""; + private String flowCenterBaseUrl = ""; /** * 浏览器可达的 UserMsg WS 端点(实时推送握手地址);空 = 不下发 WS 地址, diff --git a/src/main/java/com/yunhai/userhome/service/MsgApprovalProxyService.java b/src/main/java/com/yunhai/userhome/service/MsgApprovalProxyService.java index 2abaca8..9a0a7b5 100644 --- a/src/main/java/com/yunhai/userhome/service/MsgApprovalProxyService.java +++ b/src/main/java/com/yunhai/userhome/service/MsgApprovalProxyService.java @@ -26,15 +26,15 @@ import java.util.Map; * bizId(业务记录 id)作为通用回落;bizType 过滤键用消息 jumpApp(=流程业务类型, * 消息 bizType「flow.task」是消息分类,与待办的 bizType 不同命名空间,勿混)。 *
  • 匹配 0 条=已处理或已失效;>1 条(同办件多出口/多节点)=请前往详情页办理(一期不做歧义猜选)。
  • - *
  • 出站走 {@link YschOpenCall} 签名直调,目标 flowcenter(服务目录/枚举兜底, - * flowcenter-base-url 显式覆盖优先)。flow-center 不可达降级为提示,不影响消息卡片其余功能。
  • + *
  • 出站走 {@link YschOpenCall} 签名直调,目标 flow-center(服务目录/枚举兜底, + * flow-center-base-url 显式覆盖优先)。flow-center 不可达降级为提示,不影响消息卡片其余功能。
  • * */ @Slf4j @Service public class MsgApprovalProxyService { - private static final String TARGET_FLOWCENTER = "flowcenter"; + private static final String TARGET_FLOW_CENTER = "flow-center"; /** 我的待办分页拉取上限:5 页 × 100 条(todo 量级远小于此,防御性封顶) */ private static final int TODO_MAX_PAGES = 5; @@ -167,19 +167,19 @@ public class MsgApprovalProxyService { /** 显式 base-url → ad-hoc TargetSpec(对齐 usermsg 通道形态);否则按名走服务目录/枚举兜底 */ private JsonNode getFlowcenter(String path, Map query) { - String base = properties.getFlowcenterBaseUrl(); + String base = properties.getFlowCenterBaseUrl(); if (StringUtils.hasText(base)) { return openCall.get(TargetSpec.fromUrl(base.trim()), path, query, JsonNode.class); } - return openCall.get(TARGET_FLOWCENTER, path, query, JsonNode.class); + return openCall.get(TARGET_FLOW_CENTER, path, query, JsonNode.class); } private JsonNode postFlowcenter(String path, Map query, Object body) { - String base = properties.getFlowcenterBaseUrl(); + String base = properties.getFlowCenterBaseUrl(); if (StringUtils.hasText(base)) { return openCall.post(TargetSpec.fromUrl(base.trim()), path, query, body, JsonNode.class); } - return openCall.post(TARGET_FLOWCENTER, path, query, body, JsonNode.class); + return openCall.post(TARGET_FLOW_CENTER, path, query, body, JsonNode.class); } private static Map fail(Map out, String message) { diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml index afb18ac..ec4cb0d 100644 --- a/src/main/resources/application.yml +++ b/src/main/resources/application.yml @@ -64,7 +64,7 @@ yh: app-key: 100001 app-secret: ec4e860206374c80938719fff8e14a86 open: - # yh-openapi 服务目录:userbase/userclass/usermsg/flowcenter 枚举兜底 = base-host + 默认 ctx; + # yh-openapi 服务目录:userbase/userclass/usermsg/flow-center 枚举兜底 = base-host + 默认 ctx; # 身份密钥唯一来源 = yh.app-auth(本文件 app-auth 段),open.* 副本已删 base-host: http://base.yunhaixingtong.com base-path: /userbase @@ -90,9 +90,9 @@ userhome: # 浏览器可达的 UserMsg WS 端点(实时推送)。空 = 不下发(前端维持手动刷新兜底); # 生产经网关暴露:wss://msg.yunhaixingtong.com/usermsg/ws/msg usermsg-ws-url: ws://localhost:8080/ws/msg - # flow-center 服务基址(卡片直批 B3 出站,/oapi/flow/**)。空 = 走服务目录 flowcenter + # flow-center 服务基址(卡片直批 B3 出站,/oapi/flow/**)。空 = 走服务目录 flow-center # (PlatformService 枚举兜底);不可达时直批降级提示,不阻塞消息卡片 - flowcenter-base-url: http://localhost:8085 + flow-center-base-url: http://localhost:8085 # appKey → 应用显示名(消息行应用列/铃铛标签补全;未命中回退 msgType 文案) app-names: 100009: 通知公告 diff --git a/src/test/java/com/yunhai/userhome/service/MsgApprovalProxyServiceTest.java b/src/test/java/com/yunhai/userhome/service/MsgApprovalProxyServiceTest.java index 7f764cd..6ab7dc3 100644 --- a/src/test/java/com/yunhai/userhome/service/MsgApprovalProxyServiceTest.java +++ b/src/test/java/com/yunhai/userhome/service/MsgApprovalProxyServiceTest.java @@ -37,7 +37,7 @@ import static org.mockito.Mockito.when; @DisplayName("MsgApprovalProxyService - 卡片直批") class MsgApprovalProxyServiceTest { - private static final String FLOWCENTER_BASE = "http://flowcenter-service:10008/flow-center"; + private static final String FLOW_CENTER_BASE = "http://flowcenter-service:10008/flow-center"; private YschOpenCall openCall; private MsgCenterProxyService msgProxy; @@ -49,7 +49,7 @@ class MsgApprovalProxyServiceTest { openCall = mock(YschOpenCall.class); msgProxy = mock(MsgCenterProxyService.class); properties = new MsgCenterProperties(); - properties.setFlowcenterBaseUrl(FLOWCENTER_BASE); + properties.setFlowCenterBaseUrl(FLOW_CENTER_BASE); service = new MsgApprovalProxyService(openCall, msgProxy, properties); } @@ -104,7 +104,7 @@ class MsgApprovalProxyServiceTest { } @Test - void flowcenterUnreachable_distinguishedFromZeroMatch() throws Exception { + void flowCenterUnreachable_distinguishedFromZeroMatch() throws Exception { when(msgProxy.findMessage(201, 5L)).thenReturn(flowTaskMessage()); when(openCall.get(any(TargetSpec.class), eq("/oapi/flow/tasks/todo"), anyMap(), eq(JsonNode.class))) .thenThrow(new RuntimeException("connect timeout"));