From 11763ca8508e4d08b5083a0548c9abc4332207a2 Mon Sep 17 00:00:00 2001 From: yanglin Date: Thu, 25 Jan 2024 17:09:38 +0800 Subject: [PATCH] =?UTF-8?q?REQ-2046:=20=E5=A4=84=E7=90=86=E5=BE=85?= =?UTF-8?q?=E5=8A=9E=E5=8A=A8=E6=80=81=E5=8F=82=E6=95=B0=E8=BD=AC=E4=B9=89?= =?UTF-8?q?=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../msg/center/utils/MessageRouterUtil.java | 26 +++++++++++++++---- 1 file changed, 21 insertions(+), 5 deletions(-) diff --git a/inside-notices/src/main/java/cn/axzo/msg/center/utils/MessageRouterUtil.java b/inside-notices/src/main/java/cn/axzo/msg/center/utils/MessageRouterUtil.java index 329ccad9..a3b4609d 100644 --- a/inside-notices/src/main/java/cn/axzo/msg/center/utils/MessageRouterUtil.java +++ b/inside-notices/src/main/java/cn/axzo/msg/center/utils/MessageRouterUtil.java @@ -17,9 +17,12 @@ import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import lombok.AccessLevel; import lombok.NoArgsConstructor; +import lombok.extern.slf4j.Slf4j; import org.apache.commons.collections.CollectionUtils; import org.apache.commons.lang3.StringUtils; +import javax.annotation.Nullable; +import java.net.URLEncoder; import java.util.Collections; import java.util.Comparator; import java.util.List; @@ -38,6 +41,7 @@ import java.util.stream.Collectors; * @date 2023/9/28 * @version 1.0 */ +@Slf4j @NoArgsConstructor(access = AccessLevel.PRIVATE) public final class MessageRouterUtil { @@ -232,11 +236,14 @@ public final class MessageRouterUtil { private static DetailRouterDTO convert(MessageRouteDetailDTO detailRouteStrategy, TerminalTypeEnum terminalType) { MessageRouterConfigDTO routerTerminal = select(detailRouteStrategy.getRouterConfigs(), terminalType); + if (routerTerminal == null) { + log.warn("cant find router config for route detail. templateCode={}", detailRouteStrategy.getTemplateCode()); + } return DetailRouterDTO.builder() .showStrategy(detailRouteStrategy.getShowStrategy()) .jumpStrategy(detailRouteStrategy.getJumpStrategy()) - .url(routerTerminal.getUrl()) - .terminalType(routerTerminal.getTerminalType()) + .url(routerTerminal == null ? null : routerTerminal.getUrl()) + .terminalType(routerTerminal == null ? null : routerTerminal.getTerminalType()) .build(); } @@ -254,6 +261,10 @@ public final class MessageRouterUtil { .build(); } MessageRouterConfigDTO routerConfig = select(routeButton.getRouterConfigs(), terminalType); + if (routerConfig == null) { + log.warn("cant find router config for route button. templateCode={}, btnCode={}", + routeButton.getTemplateCode(), routeButton.getBtnCode()); + } return ButtonRouterDTO.builder() .key(routeButton.getBtnCode()) .source(routeButton.getSource()) @@ -262,18 +273,23 @@ public final class MessageRouterUtil { .executorShow(routeButton.getExecutorShow()) .pendingShow(routeButton.getPendingShow()) .category(routeButton.getCategory()) - .url(routerConfig.getUrl()) - .terminalType(routerConfig.getTerminalType()) + .url(routerConfig == null ? null : routerConfig.getUrl()) + .terminalType(routerConfig == null ? null : routerConfig.getTerminalType()) .build(); } + @Nullable private static MessageRouterConfigDTO select(List routerTerminals, TerminalTypeEnum terminalType) { + Supplier defaultFun = () -> + CollectionUtils.isEmpty(routerTerminals) + ? null + : routerTerminals.get(0); return routerTerminals.stream() .filter(e -> Objects.equals(terminalType, e.getTerminalType())) .findFirst() // 优先选择H5,没有则选择第一个元素 - .orElseGet(() -> selectH5(routerTerminals).orElseGet(() -> routerTerminals.get(0))); + .orElseGet(() -> selectH5(routerTerminals).orElseGet(defaultFun)); } private static Optional selectH5(List routerTerminals) {