REQ-2046: 处理待办动态参数转义的问题
This commit is contained in:
parent
4b43bedf5e
commit
11763ca850
@ -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) {
|
||||
|
||||
Loading…
Reference in New Issue
Block a user