|
|
@@ -5,6 +5,7 @@ import com.xunmei.host.websocket.enums.ProductEnums;
|
|
|
import com.xunmei.host.websocket.service.RouterService;
|
|
|
import com.xunmei.system.api.util.LogUtils;
|
|
|
|
|
|
+import java.util.Arrays;
|
|
|
import java.util.List;
|
|
|
import java.util.Map;
|
|
|
import java.util.Optional;
|
|
|
@@ -17,24 +18,28 @@ public class RouterServiceHandler {
|
|
|
private static final Map<ProductEnums, List<RouterService>> PRODUCT_HASH_MAP = new ConcurrentHashMap<>();
|
|
|
|
|
|
static {
|
|
|
- Map<String, RouterService> map = SpringUtil.getBeansOfType(RouterService.class);
|
|
|
- Map<ProductEnums, List<RouterService>> productEnumsListMap = map.values().stream().collect(Collectors.groupingBy(RouterService::product));
|
|
|
- PRODUCT_HASH_MAP.putAll(productEnumsListMap);
|
|
|
+ Map<String, RouterService> map = SpringUtil.getBeansOfType(RouterService.class);
|
|
|
+ Map<ProductEnums, List<RouterService>> productEnumsListMap = map.values().stream().collect(Collectors.groupingBy(RouterService::product));
|
|
|
+ PRODUCT_HASH_MAP.putAll(productEnumsListMap);
|
|
|
|
|
|
- SpringUtil.getBeansOfType(RouterService.class).forEach((k, v) -> {
|
|
|
- CONCURRENT_HASH_MAP.put(v.routerKey(), v);
|
|
|
- });
|
|
|
+ SpringUtil.getBeansOfType(RouterService.class).forEach((k, v) -> {
|
|
|
+ CONCURRENT_HASH_MAP.put(v.routerKey(), v);
|
|
|
+ });
|
|
|
}
|
|
|
|
|
|
public static RouterService getRouteService(String productName, String routerKey) {
|
|
|
ProductEnums enums = ProductEnums.getByProductByName(productName);
|
|
|
if (enums == null) {
|
|
|
- LogUtils.WEBSOCKET_MSG.error("未找到对应的产品类型: routerKey: {},productName:{}", routerKey,productName);
|
|
|
+ LogUtils.WEBSOCKET_MSG.error("未找到对应的产品类型: routerKey: {},productName:{}", routerKey, productName);
|
|
|
return null;
|
|
|
}
|
|
|
final Optional<RouterService> first = PRODUCT_HASH_MAP.get(enums)
|
|
|
.stream()
|
|
|
- .filter(routerService -> routerService.routerKey().contains(routerKey))
|
|
|
+ .filter(routerService -> {
|
|
|
+ final String key = routerService.routerKey();
|
|
|
+ final String[] split = key.split(",");
|
|
|
+ return split.length == 1 ? key.equals(routerKey) : Arrays.asList(split).contains(routerKey);
|
|
|
+ })
|
|
|
.findFirst();
|
|
|
if (first.isPresent()) {
|
|
|
return first.get();
|