REQ-2046: 处理待办动态参数转义的问题

This commit is contained in:
yanglin 2024-01-25 17:09:38 +08:00
parent 4b43bedf5e
commit 11763ca850

View File

@ -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<MessageRouterConfigDTO> routerTerminals,
TerminalTypeEnum terminalType) {
Supplier<MessageRouterConfigDTO> 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<MessageRouterConfigDTO> selectH5(List<MessageRouterConfigDTO> routerTerminals) {