diff --git a/sf-service/src/main/java/com/sf/service/gateway/service/impl/GatewayConfigServiceImpl.java b/sf-service/src/main/java/com/sf/service/gateway/service/impl/GatewayConfigServiceImpl.java index e6bc71a..3080167 100644 --- a/sf-service/src/main/java/com/sf/service/gateway/service/impl/GatewayConfigServiceImpl.java +++ b/sf-service/src/main/java/com/sf/service/gateway/service/impl/GatewayConfigServiceImpl.java @@ -106,11 +106,13 @@ public class GatewayConfigServiceImpl implements IGatewayConfigService { appConfig.setDataSecurity(initDataSecurity(gatewayConfig)); appConfig.setApiCurrentLimitingConfig(initApiCurrentLimitStrategy(gatewayConfig)); appConfig.setAppCurrentLimitingConfig(initAppCurrentLimitStrategy(gatewayConfig)); - appConfig.setService(initService(appCode)); // appConfig.setAdvancedConfig(); } + appConfig.setService(initService(appCode)); try { - String response = HttpUtil.post(urlStr, JSON.toJSONString(appConfig)); + String body = JSON.toJSONString(appConfig); + log.info("sync gateway body : {}", body); + String response = HttpUtil.post(urlStr, body); log.info("sync gateway response : {}", response); if (StringUtils.hasText(response)) { JSONObject jsonObject = JSON.parseObject(response); @@ -132,25 +134,31 @@ public class GatewayConfigServiceImpl implements IGatewayConfigService { queryServer.setStatus(GatewayDataStatus.ENABLE.getCode()); List serverList = gatewayServerService.selectGatewayServerList(queryServer); if (CollUtil.isNotEmpty(serverList)) { + // 查询接口 + List interfaceInfoList = gatewayInterfaceInfoService.selectGatewayInterfaceInfoByServerIds(serverList.stream().map(GatewayServer::getId).collect(Collectors.toSet())); + // 启用的 + interfaceInfoList = interfaceInfoList.stream().filter(api -> GatewayDataStatus.ENABLE.getCode().equals(api.getStatus())).collect(Collectors.toList()); + if (CollUtil.isEmpty(interfaceInfoList)){ + // 没有配置接口,直接结束 + return service; + } + Map> groupByServerInterfaceMap = interfaceInfoList.stream().collect(Collectors.groupingBy(GatewayInterfaceInfo::getServerId)); + List linkList = gatewayInterfaceInfoService.selectGatewayInterfaceLinkStrategyByInterfaceIds(interfaceInfoList.stream().map(GatewayInterfaceInfo::getId).collect(Collectors.toSet())); + Map> groupByInterfaceLinkMap = linkList.stream().collect(Collectors.groupingBy(GatewayInterfaceLinkStrategy::getInterfaceId)); // 如果是路由模式的服务,查询对应的路由服务信息 Collection routeIds = serverList.stream().filter(item -> GatewayServiceModel.ROUTE.getCode().equals(item.getServiceModel())) .map(GatewayServer::getRouteId) .collect(Collectors.toSet()); List routeList = gatewayRouteService.selectGatewayRouteByIds(routeIds); Map routeMap = routeList.stream().collect(Collectors.toMap(GatewayRoute::getId, Function.identity())); - // 查询接口 - List interfaceInfoList = gatewayInterfaceInfoService.selectGatewayInterfaceInfoByServerIds(serverList.stream().map(GatewayServer::getId).collect(Collectors.toSet())); - // 启用的 - interfaceInfoList = interfaceInfoList.stream().filter(api -> GatewayDataStatus.ENABLE.getCode().equals(api.getStatus())).collect(Collectors.toList()); - Map> groupByServerInterfaceMap = interfaceInfoList.stream().collect(Collectors.groupingBy(GatewayInterfaceInfo::getServerId)); - List linkList = gatewayInterfaceInfoService.selectGatewayInterfaceLinkStrategyByInterfaceIds(interfaceInfoList.stream().map(GatewayInterfaceInfo::getId).collect(Collectors.toSet())); - Map> groupByInterfaceLinkMap = linkList.stream().collect(Collectors.groupingBy(GatewayInterfaceLinkStrategy::getInterfaceId)); // 查询接口策略 List strategyList = gatewayStrategyService.selectGatewayStrategyByIds(linkList.stream().map(GatewayInterfaceLinkStrategy::getStrategyId).collect(Collectors.toSet())); // 启用的 strategyList = strategyList.stream().filter(strategy -> GatewayDataStatus.ENABLE.getCode().equals(strategy.getStatus())).collect(Collectors.toList()); Map strategyMap = strategyList.stream().collect(Collectors.toMap(GatewayStrategy::getId, Function.identity())); - return serverList.stream().map(server -> { + return serverList.stream() + .filter(server -> CollUtil.isNotEmpty(groupByServerInterfaceMap.getOrDefault(server.getId(), Collections.emptyList()))) + .map(server -> { SacService sacService = new SacService(); sacService.setServiceName(server.getServerName()); sacService.setServiceModel(server.getServiceModel()); @@ -169,7 +177,6 @@ public class GatewayConfigServiceImpl implements IGatewayConfigService { return apiConfig; }).collect(Collectors.toList()); sacService.setApiConfig(apiConfigList); - // 设置路由 if (GatewayServiceModel.ROUTE.getCode().equals(server.getServiceModel())) { GatewayRoute route = routeMap.get(server.getRouteId()); @@ -201,11 +208,13 @@ public class GatewayConfigServiceImpl implements IGatewayConfigService { strategy.setThreshold(currentStrategy.getCurrentLimitingThreshold()); strategy.setTimeWindow(currentStrategy.getCurrentLimitingTimeWindow()); strategy.setDefaultResponse(currentStrategy.getCurrentLimitingResponse()); + break; case CIRCUIT_BREAKER: strategy.setThreshold(currentStrategy.getCircuitBreakerThreshold()); strategy.setTimeWindow(currentStrategy.getCircuitBreakerTimeWindow()); strategy.setRecovery_interval(currentStrategy.getCircuitBreakerRecoveryInterval()); strategy.setDefaultResponse(currentStrategy.getCircuitBreakerResponse()); + break; case AUTHENTICATION: case PERMISSION: default: