From 417a53fec50aceeab90d342a2e6ba8c2fa8830db Mon Sep 17 00:00:00 2001 From: aoshiguchen <1052045476@qq.com> Date: Sun, 5 Feb 2023 18:40:47 +0800 Subject: [PATCH] =?UTF-8?q?=E7=AB=AF=E5=8F=A3=E6=B1=A0=E7=AE=A1=E7=90=86?= =?UTF-8?q?=E6=93=8D=E4=BD=9C=EF=BC=88=E5=A2=9E=E5=88=A0=E6=94=B9=E3=80=81?= =?UTF-8?q?=E5=90=AF=E7=94=A8=E3=80=81=E7=A6=81=E7=94=A8=EF=BC=89=E6=97=B6?= =?UTF-8?q?=EF=BC=8C=E4=BB=A3=E7=90=86=E5=AE=9E=E6=97=B6=E7=94=9F=E6=95=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../server/constant/ExceptionConstant.java | 2 +- .../proxy/server/dal/PortMappingMapper.java | 4 ++++ .../proxy/server/dal/PortPoolMapper.java | 3 +++ .../proxy/server/service/PortPoolService.java | 16 ++++++++++++- .../server/service/VisitorChannelService.java | 24 +++++++++++++++++++ 5 files changed, 47 insertions(+), 2 deletions(-) diff --git a/neutrino-proxy-server/src/main/java/fun/asgc/neutrino/proxy/server/constant/ExceptionConstant.java b/neutrino-proxy-server/src/main/java/fun/asgc/neutrino/proxy/server/constant/ExceptionConstant.java index c1cc6505..672ac778 100644 --- a/neutrino-proxy-server/src/main/java/fun/asgc/neutrino/proxy/server/constant/ExceptionConstant.java +++ b/neutrino-proxy-server/src/main/java/fun/asgc/neutrino/proxy/server/constant/ExceptionConstant.java @@ -50,7 +50,7 @@ public enum ExceptionConstant { LOGIN_PASSWORD_NO_CHANGE_MODIFY_FAIL(12004, "密码没有变化,修改失败"), // 端口池管理(13000) PORT_CANNOT_REPEAT(13000,"端口不能重复"), - PORT_NOT_EXIST(13001, "该端口在端口池中不存在,不允许映射"), + PORT_NOT_EXIST(13001, "该端口在端口池中不存在"), // 端口映射管理(14000) PORT_MAPPING_NOT_EXIST(14000, "端口映射记录不存在"), PORT_CANNOT_REPEAT_MAPPING(14001, "服务端口[{}]不能重复映射"), diff --git a/neutrino-proxy-server/src/main/java/fun/asgc/neutrino/proxy/server/dal/PortMappingMapper.java b/neutrino-proxy-server/src/main/java/fun/asgc/neutrino/proxy/server/dal/PortMappingMapper.java index a69f4f72..c7946b71 100644 --- a/neutrino-proxy-server/src/main/java/fun/asgc/neutrino/proxy/server/dal/PortMappingMapper.java +++ b/neutrino-proxy-server/src/main/java/fun/asgc/neutrino/proxy/server/dal/PortMappingMapper.java @@ -74,6 +74,10 @@ public interface PortMappingMapper extends SqlMapper { @Select("select * from port_mapping where license_id = ? and enable = 1") List findEnableListByLicenseId(Integer licenseId); + @ResultType(PortMappingDO.class) + @Select("select * from port_mapping where server_port = :serverPort") + List findListByServerPort(@Param("serverPort") Integer serverPort); + @ResultType(PortMappingDO.class) @Select("select * from port_mapping where license_id = ?") List findListByLicenseId(Integer licenseId); diff --git a/neutrino-proxy-server/src/main/java/fun/asgc/neutrino/proxy/server/dal/PortPoolMapper.java b/neutrino-proxy-server/src/main/java/fun/asgc/neutrino/proxy/server/dal/PortPoolMapper.java index 035aefd9..d3ecbf52 100644 --- a/neutrino-proxy-server/src/main/java/fun/asgc/neutrino/proxy/server/dal/PortPoolMapper.java +++ b/neutrino-proxy-server/src/main/java/fun/asgc/neutrino/proxy/server/dal/PortPoolMapper.java @@ -62,4 +62,7 @@ public interface PortPoolMapper extends SqlMapper { @Select("select * from port_pool where port = ? limit 0,1") PortPoolDO findByPort(Integer port); + + @Select("select * from port_pool where id = ?") + PortPoolDO findById(Integer id); } diff --git a/neutrino-proxy-server/src/main/java/fun/asgc/neutrino/proxy/server/service/PortPoolService.java b/neutrino-proxy-server/src/main/java/fun/asgc/neutrino/proxy/server/service/PortPoolService.java index 39db97ba..53257fdb 100644 --- a/neutrino-proxy-server/src/main/java/fun/asgc/neutrino/proxy/server/service/PortPoolService.java +++ b/neutrino-proxy-server/src/main/java/fun/asgc/neutrino/proxy/server/service/PortPoolService.java @@ -52,6 +52,8 @@ public class PortPoolService { @Autowired private PortPoolMapper portPoolMapper; + @Autowired + private VisitorChannelService visitorChannelService; public Page page(PageQuery pageQuery, PortPoolListReq req) { Page page = Page.create(pageQuery); @@ -75,19 +77,31 @@ public class PortPoolService { .setCreateTime(now) .setUpdateTime(now) ); + // 更新visitorChannel + visitorChannelService.updateVisitorChannelByPortPool(req.getPort(), EnableStatusEnum.ENABLE.getStatus()); return new PortPoolCreateRes(); } public PortPoolUpdateEnableStatusRes updateEnableStatus(PortPoolUpdateEnableStatusReq req) { - + PortPoolDO portPoolDO = portPoolMapper.findById(req.getId()); + ParamCheckUtil.checkNotNull(portPoolDO, ExceptionConstant.PORT_NOT_EXIST); portPoolMapper.updateEnableStatus(req.getId(), req.getEnable(), new Date()); + // 更新visitorChannel + visitorChannelService.updateVisitorChannelByPortPool(portPoolDO.getPort(), req.getEnable()); + return new PortPoolUpdateEnableStatusRes(); } public void delete(Integer id) { + PortPoolDO portPoolDO = portPoolMapper.findById(id); + ParamCheckUtil.checkNotNull(portPoolDO, ExceptionConstant.PORT_NOT_EXIST); + portPoolMapper.delete(id); + + // 更新visitorChannel + visitorChannelService.updateVisitorChannelByPortPool(portPoolDO.getPort(), EnableStatusEnum.DISABLE.getStatus()); } } diff --git a/neutrino-proxy-server/src/main/java/fun/asgc/neutrino/proxy/server/service/VisitorChannelService.java b/neutrino-proxy-server/src/main/java/fun/asgc/neutrino/proxy/server/service/VisitorChannelService.java index 64a9726f..1d2013cb 100644 --- a/neutrino-proxy-server/src/main/java/fun/asgc/neutrino/proxy/server/service/VisitorChannelService.java +++ b/neutrino-proxy-server/src/main/java/fun/asgc/neutrino/proxy/server/service/VisitorChannelService.java @@ -92,6 +92,30 @@ public class VisitorChannelService { startUserPortServer(ProxyUtil.getAttachInfo(cmdChannel), portMappingList); } + /** + * 更新 + * 触发时机:删除端口池、禁用端口池、启用端口池 + * @param serverPort + * @param enable + */ + public void updateVisitorChannelByPortPool(Integer serverPort, Integer enable) { + if (null == serverPort) { + return; + } + List portMappingDOList = portMappingMapper.findListByServerPort(serverPort); + if (CollectionUtil.isEmpty(portMappingDOList)) { + return; + } + EnableStatusEnum enableStatusEnum = EnableStatusEnum.of(enable); + for (PortMappingDO portMappingDO : portMappingDOList) { + if (EnableStatusEnum.DISABLE == enableStatusEnum) { + removeVisitorChannelByPortMapping(portMappingDO); + } else if (EnableStatusEnum.ENABLE == EnableStatusEnum.of(portMappingDO.getEnable())) { + addVisitorChannelByPortMapping(portMappingDO); + } + } + } + /** * 更新 * 触发时机:删除用户、禁用用户、启用用户 (新增、修改用户不涉及VisitorChannel的变更)