From 30f6dc38f7d9ce4a827e80cd37616f3ebdd95741 Mon Sep 17 00:00:00 2001 From: suxiang <2585546823@qq.com> Date: Tue, 10 Sep 2024 23:18:42 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=EF=BC=9A=E6=B7=BB=E5=8A=A0?= =?UTF-8?q?=E6=88=96=E6=9B=B4=E6=96=B0Http=E7=AB=AF=E5=8F=A3=E6=98=A0?= =?UTF-8?q?=E5=B0=84=E4=B8=8D=E6=8C=87=E5=AE=9A=E5=9F=9F=E5=90=8D=E5=BC=95?= =?UTF-8?q?=E8=B5=B7=E7=9A=84=E6=8A=A5=E9=94=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../server/service/PortMappingService.java | 33 ++++++++++++++----- 1 file changed, 24 insertions(+), 9 deletions(-) diff --git a/neutrino-proxy-server/src/main/java/org/dromara/neutrinoproxy/server/service/PortMappingService.java b/neutrino-proxy-server/src/main/java/org/dromara/neutrinoproxy/server/service/PortMappingService.java index 812984d2..9a6314bf 100644 --- a/neutrino-proxy-server/src/main/java/org/dromara/neutrinoproxy/server/service/PortMappingService.java +++ b/neutrino-proxy-server/src/main/java/org/dromara/neutrinoproxy/server/service/PortMappingService.java @@ -164,10 +164,11 @@ public class PortMappingService implements LifecycleBean { ParamCheckUtil.checkNotNull(portPoolDO, ExceptionConstant.PORT_NOT_EXIST); ParamCheckUtil.checkExpression(null == portMappingMapper.findByPort(req.getServerPort(), null), ExceptionConstant.PORT_CANNOT_REPEAT_MAPPING, req.getServerPort()); //验证域名映射相关参数条件 - Set domainIds = req.getDomainMappings().stream().map(item -> item.getDomainId()).collect(Collectors.toSet()); - List domainNameDOS = domainMapper.selectBatchIds(domainIds); - Map domainNameDOMap = domainNameDOS.stream().collect(Collectors.toMap(DomainNameDO::getId, Function.identity())); if (NetworkProtocolEnum.isHttp(req.getProtocal()) && CollectionUtil.isNotEmpty(req.getDomainMappings())) { + Set domainIds = req.getDomainMappings().stream().map(item -> item.getDomainId()).collect(Collectors.toSet()); + List domainNameDOS = domainMapper.selectBatchIds(domainIds); + Map domainNameDOMap = domainNameDOS.stream().collect(Collectors.toMap(DomainNameDO::getId, Function.identity())); + req.getDomainMappings().forEach(item -> { DomainNameDO domainNameDO = domainNameDOMap.get(item.getDomainId()); ParamCheckUtil.checkNotNull(domainNameDO, ExceptionConstant.DOMAIN_NAME_NOT_EXIST); @@ -196,8 +197,13 @@ public class PortMappingService implements LifecycleBean { portMappingMapper.insert(portMappingDO); // 更新VisitorChannel visitorChannelService.addVisitorChannelByPortMapping(portMappingDO); - // 更新域名映射 + + // 更新域名映射,添加新的域名映射 if (NetworkProtocolEnum.isHttp(portMappingDO.getProtocal()) && CollectionUtil.isNotEmpty(req.getDomainMappings())) { + Set domainIds = req.getDomainMappings().stream().map(item -> item.getDomainId()).collect(Collectors.toSet()); + List domainNameDOS = domainMapper.selectBatchIds(domainIds); + Map domainNameDOMap = domainNameDOS.stream().collect(Collectors.toMap(DomainNameDO::getId, Function.identity())); + req.getDomainMappings().forEach(item -> { DomainNameDO domainNameDO = domainNameDOMap.get(item.getDomainId()); //创建域名映射 @@ -236,11 +242,13 @@ public class PortMappingService implements LifecycleBean { // 查询原端口映射 PortMappingDO oldPortMappingDO = portMappingMapper.findById(req.getId()); ParamCheckUtil.checkNotNull(oldPortMappingDO, ExceptionConstant.PORT_MAPPING_NOT_EXIST); + //验证域名映射相关参数条件 - Set domainIds = req.getDomainMappings().stream().map(item -> item.getDomainId()).collect(Collectors.toSet()); - List domainNameDOS = domainMapper.selectBatchIds(domainIds); - Map domainNameDOMap = domainNameDOS.stream().collect(Collectors.toMap(DomainNameDO::getId, Function.identity())); if (NetworkProtocolEnum.isHttp(req.getProtocal()) && CollectionUtil.isNotEmpty(req.getDomainMappings())) { + Set domainIds = req.getDomainMappings().stream().map(item -> item.getDomainId()).collect(Collectors.toSet()); + List domainNameDOS = domainMapper.selectBatchIds(domainIds); + Map domainNameDOMap = domainNameDOS.stream().collect(Collectors.toMap(DomainNameDO::getId, Function.identity())); + req.getDomainMappings().forEach(item -> { DomainNameDO domainNameDO = domainNameDOMap.get(item.getDomainId()); ParamCheckUtil.checkNotNull(domainNameDO, ExceptionConstant.DOMAIN_NAME_NOT_EXIST); @@ -268,6 +276,8 @@ public class PortMappingService implements LifecycleBean { // 更新VisitorChannel PortMappingDO portMappingDO = portMappingMapper.findById(req.getId()); visitorChannelService.updateVisitorChannelByPortMapping(oldPortMappingDO, portMappingDO); + + // 更新域名映射 // 删除老的域名映射 if (NetworkProtocolEnum.isHttp(oldPortMappingDO.getProtocal())) { //删除完整域名到服务端端口的映射 @@ -277,8 +287,12 @@ public class PortMappingService implements LifecycleBean { .eq(DomainPortMappingDO::getPortMappingId, oldPortMappingDO.getId()); domainPortMappingMapper.delete(lambdaQueryWrapper); } - // 更新域名映射 + // 添加新的域名映射 if (NetworkProtocolEnum.isHttp(portMappingDO.getProtocal()) && CollectionUtil.isNotEmpty(req.getDomainMappings())) { + Set domainIds = req.getDomainMappings().stream().map(item -> item.getDomainId()).collect(Collectors.toSet()); + List domainNameDOS = domainMapper.selectBatchIds(domainIds); + Map domainNameDOMap = domainNameDOS.stream().collect(Collectors.toMap(DomainNameDO::getId, Function.identity())); + req.getDomainMappings().forEach(item -> { DomainNameDO domainNameDO = domainNameDOMap.get(item.getDomainId()); //创建域名映射 @@ -370,7 +384,8 @@ public class PortMappingService implements LifecycleBean { // 更新VisitorChannel visitorChannelService.removeVisitorChannelByPortMapping(portMappingDO); - // 更新域名映射 + + // 删除域名映射 if (NetworkProtocolEnum.isHttp(portMappingDO.getProtocal())) { //删除完整域名到服务端端口的映射 ProxyUtil.removeFullDomainToServerPortByServerPort(portMappingDO.getServerPort());