|
|
@@ -2,16 +2,18 @@ package com.xunmei.mediator.websocket.service;
|
|
|
|
|
|
import cn.hutool.extra.spring.SpringUtil;
|
|
|
import com.xunmei.mediator.websocket.enums.ProductEnums;
|
|
|
+import com.xunmei.system.api.util.LogUtils;
|
|
|
|
|
|
import java.util.List;
|
|
|
import java.util.Map;
|
|
|
+import java.util.Optional;
|
|
|
import java.util.concurrent.ConcurrentHashMap;
|
|
|
import java.util.stream.Collectors;
|
|
|
|
|
|
|
|
|
public class RouterServiceHandler {
|
|
|
private static final Map<String, RouterService> CONCURRENT_HASH_MAP = new ConcurrentHashMap<>();
|
|
|
- private static final Map<ProductEnums, List<RouterService>> PRODUCT_HASH_MAP = new ConcurrentHashMap<>();
|
|
|
+ private static final Map<ProductEnums, List<RouterService>> PRODUCT_HASH_MAP = new ConcurrentHashMap<>();
|
|
|
|
|
|
static {
|
|
|
Map<String, RouterService> map = SpringUtil.getBeansOfType(RouterService.class);
|
|
|
@@ -32,17 +34,21 @@ public class RouterServiceHandler {
|
|
|
throw new RuntimeException("未找到对应的处理类");
|
|
|
}
|
|
|
|
|
|
- public static RouterService getRouteService(String productName,String routerKey) {
|
|
|
+ public static RouterService getRouteService(String productName, String routerKey) {
|
|
|
ProductEnums enums = ProductEnums.getByProductName(productName);
|
|
|
- if (enums == null){
|
|
|
+ if (enums == null) {
|
|
|
throw new RuntimeException("未找到对应的产品类型");
|
|
|
}
|
|
|
|
|
|
- return PRODUCT_HASH_MAP.get(enums)
|
|
|
+ final Optional<RouterService> first = PRODUCT_HASH_MAP.get(enums)
|
|
|
.stream()
|
|
|
.filter(routerService -> routerService.routerKey().contains(routerKey))
|
|
|
- .findFirst()
|
|
|
- .orElseThrow(() -> new RuntimeException("未找到对应的处理类"));
|
|
|
-
|
|
|
+ .findFirst();
|
|
|
+ if (first.isPresent()) {
|
|
|
+ return first.get();
|
|
|
+ } else {
|
|
|
+ LogUtils.WEBSOCKET_MSG.error("未找到对应的处理类");
|
|
|
+ }
|
|
|
+ return null;
|
|
|
}
|
|
|
}
|