From 0b7a81519607792170739a175bf864ee9ca405ab Mon Sep 17 00:00:00 2001 From: aoshiguchen <1052045476@qq.com> Date: Tue, 9 Aug 2022 23:16:46 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E7=AB=AF=E5=8F=A3=E6=98=A0?= =?UTF-8?q?=E5=B0=84=E7=9B=B8=E5=85=B3=E6=8E=A5=E5=8F=A3=E5=AE=9E=E7=8E=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/req/PortMappingCreateReq.java | 17 ++++- .../controller/res/PortMappingListRes.java | 51 ++++++++++++++- .../proxy/server/dal/LicenseMapper.java | 7 +++ .../proxy/server/dal/PortMappingMapper.java | 13 ++++ .../server/dal/entity/PortMappingDO.java | 2 +- .../server/service/PortMappingService.java | 62 ++++++++++++++++++- .../resources/mapper/PortMappingMapper.xml | 13 ++++ 7 files changed, 160 insertions(+), 5 deletions(-) create mode 100644 neutrino-proxy-server/src/main/resources/mapper/PortMappingMapper.xml diff --git a/neutrino-proxy-server/src/main/java/fun/asgc/neutrino/proxy/server/controller/req/PortMappingCreateReq.java b/neutrino-proxy-server/src/main/java/fun/asgc/neutrino/proxy/server/controller/req/PortMappingCreateReq.java index 60e6f32b..39592fb2 100644 --- a/neutrino-proxy-server/src/main/java/fun/asgc/neutrino/proxy/server/controller/req/PortMappingCreateReq.java +++ b/neutrino-proxy-server/src/main/java/fun/asgc/neutrino/proxy/server/controller/req/PortMappingCreateReq.java @@ -30,5 +30,20 @@ import lombok.Data; */ @Data public class PortMappingCreateReq { - + /** + * licenseId + */ + private Integer licenseId; + /** + * 服务端端口 + */ + private Integer serverPort; + /** + * 客户端ip + */ + private String clientIp; + /** + * 客户端端口 + */ + private Integer clientPort; } diff --git a/neutrino-proxy-server/src/main/java/fun/asgc/neutrino/proxy/server/controller/res/PortMappingListRes.java b/neutrino-proxy-server/src/main/java/fun/asgc/neutrino/proxy/server/controller/res/PortMappingListRes.java index bb6e62e1..e948a17e 100644 --- a/neutrino-proxy-server/src/main/java/fun/asgc/neutrino/proxy/server/controller/res/PortMappingListRes.java +++ b/neutrino-proxy-server/src/main/java/fun/asgc/neutrino/proxy/server/controller/res/PortMappingListRes.java @@ -21,8 +21,11 @@ */ package fun.asgc.neutrino.proxy.server.controller.res; +import fun.asgc.neutrino.proxy.server.base.rest.constant.OnlineStatusEnum; import lombok.Data; +import java.util.Date; + /** * 端口映射列表响应 * @author: aoshiguchen @@ -30,5 +33,51 @@ import lombok.Data; */ @Data public class PortMappingListRes { - + private Integer id; + /** + * licenseId + */ + private Integer licenseId; + /** + * license名称 + */ + private String licenseName; + /** + * 用户ID + */ + private Integer userId; + /** + * 用户姓名 + */ + private String userName; + /** + * 服务端端口 + */ + private Integer serverPort; + /** + * 客户端ip + */ + private String clientIp; + /** + * 客户端端口 + */ + private Integer port; + /** + * 是否在线 + * {@link OnlineStatusEnum} + */ + private Integer isOnline; + /** + * 启用状态 + * {@link fun.asgc.neutrino.proxy.server.base.rest.constant.EnableStatusEnum} + */ + private Integer enable; + /** + * 创建时间 + */ + private Date createTime; + /** + * 更新时间 + */ + private Date updateTime; } diff --git a/neutrino-proxy-server/src/main/java/fun/asgc/neutrino/proxy/server/dal/LicenseMapper.java b/neutrino-proxy-server/src/main/java/fun/asgc/neutrino/proxy/server/dal/LicenseMapper.java index 5ce937dc..728d002f 100644 --- a/neutrino-proxy-server/src/main/java/fun/asgc/neutrino/proxy/server/dal/LicenseMapper.java +++ b/neutrino-proxy-server/src/main/java/fun/asgc/neutrino/proxy/server/dal/LicenseMapper.java @@ -24,6 +24,7 @@ package fun.asgc.neutrino.proxy.server.dal; import fun.asgc.neutrino.core.annotation.Component; import fun.asgc.neutrino.core.annotation.Param; import fun.asgc.neutrino.core.db.annotation.Delete; +import fun.asgc.neutrino.core.db.annotation.ResultType; import fun.asgc.neutrino.core.db.annotation.Select; import fun.asgc.neutrino.core.db.annotation.Update; import fun.asgc.neutrino.core.db.mapper.SqlMapper; @@ -33,6 +34,8 @@ import fun.asgc.neutrino.proxy.server.controller.req.LicenseListReq; import fun.asgc.neutrino.proxy.server.dal.entity.LicenseDO; import java.util.Date; +import java.util.List; +import java.util.Set; /** * @@ -69,4 +72,8 @@ public interface LicenseMapper extends SqlMapper { @Update("update `license` set name = :name where id = :id") void update(@Param("id") Integer id, @Param("name") String name); + + @ResultType(LicenseDO.class) + @Select("select * from `license` where in in (:ids)") + List findByIds(@Param("ids")Set ids); } 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 55305cc3..1e784228 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 @@ -22,7 +22,13 @@ package fun.asgc.neutrino.proxy.server.dal; import fun.asgc.neutrino.core.annotation.Component; +import fun.asgc.neutrino.core.db.annotation.ResultType; +import fun.asgc.neutrino.core.db.annotation.Select; import fun.asgc.neutrino.core.db.mapper.SqlMapper; +import fun.asgc.neutrino.core.db.page.Page; +import fun.asgc.neutrino.proxy.server.controller.req.PortMappingListReq; +import fun.asgc.neutrino.proxy.server.controller.res.PortMappingListRes; +import fun.asgc.neutrino.proxy.server.dal.entity.PortMappingDO; /** * @@ -32,4 +38,11 @@ import fun.asgc.neutrino.core.db.mapper.SqlMapper; @Component public interface PortMappingMapper extends SqlMapper { + @ResultType(PortMappingListRes.class) + @Select("select * from port_mapping") + void page(Page page, PortMappingListReq req); + + void add(PortMappingDO portMappingDO); + + void update(PortMappingDO portMappingDO); } diff --git a/neutrino-proxy-server/src/main/java/fun/asgc/neutrino/proxy/server/dal/entity/PortMappingDO.java b/neutrino-proxy-server/src/main/java/fun/asgc/neutrino/proxy/server/dal/entity/PortMappingDO.java index edb1f136..441af6d6 100644 --- a/neutrino-proxy-server/src/main/java/fun/asgc/neutrino/proxy/server/dal/entity/PortMappingDO.java +++ b/neutrino-proxy-server/src/main/java/fun/asgc/neutrino/proxy/server/dal/entity/PortMappingDO.java @@ -57,7 +57,7 @@ public class PortMappingDO { /** * 客户端端口 */ - private Integer port; + private Integer clientPort; /** * 是否在线 * {@link OnlineStatusEnum} diff --git a/neutrino-proxy-server/src/main/java/fun/asgc/neutrino/proxy/server/service/PortMappingService.java b/neutrino-proxy-server/src/main/java/fun/asgc/neutrino/proxy/server/service/PortMappingService.java index 8ff241c1..91bcaadc 100644 --- a/neutrino-proxy-server/src/main/java/fun/asgc/neutrino/proxy/server/service/PortMappingService.java +++ b/neutrino-proxy-server/src/main/java/fun/asgc/neutrino/proxy/server/service/PortMappingService.java @@ -21,13 +21,31 @@ */ package fun.asgc.neutrino.proxy.server.service; +import fun.asgc.neutrino.core.annotation.Autowired; import fun.asgc.neutrino.core.annotation.Component; import fun.asgc.neutrino.core.db.page.Page; import fun.asgc.neutrino.core.db.page.PageQuery; +import fun.asgc.neutrino.core.util.CollectionUtil; +import fun.asgc.neutrino.core.util.DateUtil; +import fun.asgc.neutrino.proxy.server.base.rest.constant.EnableStatusEnum; +import fun.asgc.neutrino.proxy.server.base.rest.constant.OnlineStatusEnum; import fun.asgc.neutrino.proxy.server.controller.req.PortMappingCreateReq; import fun.asgc.neutrino.proxy.server.controller.req.PortMappingListReq; import fun.asgc.neutrino.proxy.server.controller.req.PortMappingUpdateEnableStatusReq; import fun.asgc.neutrino.proxy.server.controller.res.*; +import fun.asgc.neutrino.proxy.server.dal.LicenseMapper; +import fun.asgc.neutrino.proxy.server.dal.PortMappingMapper; +import fun.asgc.neutrino.proxy.server.dal.UserMapper; +import fun.asgc.neutrino.proxy.server.dal.entity.LicenseDO; +import fun.asgc.neutrino.proxy.server.dal.entity.PortMappingDO; +import fun.asgc.neutrino.proxy.server.dal.entity.UserDO; + +import java.util.Date; +import java.util.List; +import java.util.Map; +import java.util.Set; +import java.util.function.Function; +import java.util.stream.Collectors; /** * @@ -36,13 +54,53 @@ import fun.asgc.neutrino.proxy.server.controller.res.*; */ @Component public class PortMappingService { + @Autowired + private PortMappingMapper portMappingMapper; + @Autowired + private LicenseMapper licenseMapper; + @Autowired + private UserMapper userMapper; public Page page(PageQuery pageQuery, PortMappingListReq req) { - return null; + Page page = Page.create(pageQuery); + portMappingMapper.page(page, req); + if (!CollectionUtil.isEmpty(page.getRecords())) { + Set licenseIds = page.getRecords().stream().map(PortMappingListRes::getLicenseId).collect(Collectors.toSet()); + List licenseList = licenseMapper.findByIds(licenseIds); + Set userIds = licenseList.stream().map(LicenseDO::getUserId).collect(Collectors.toSet()); + List userList = userMapper.findByIds(userIds); + Map licenseMap = licenseList.stream().collect(Collectors.toMap(LicenseDO::getId, Function.identity())); + Map userMap = userList.stream().collect(Collectors.toMap(UserDO::getId, Function.identity())); + page.getRecords().forEach(item -> { + LicenseDO license = licenseMap.get(item.getLicenseId()); + if (null == license) { + return; + } + item.setLicenseName(license.getName()); + item.setUserId(license.getUserId()); + UserDO user = userMap.get(license.getUserId()); + if (null == user) { + return; + } + item.setUserName(user.getName()); + }); + } + return page; } public PortMappingCreateRes create(PortMappingCreateReq req) { - return null; + Date now = new Date(); + PortMappingDO portMappingDO = new PortMappingDO(); + portMappingDO.setLicenseId(req.getLicenseId()); + portMappingDO.setServerPort(req.getServerPort()); + portMappingDO.setClientIp(req.getClientIp()); + portMappingDO.setClientPort(req.getClientPort()); + portMappingDO.setIsOnline(OnlineStatusEnum.OFFLINE.getStatus()); + portMappingDO.setEnable(EnableStatusEnum.ENABLE.getStatus()); + portMappingDO.setCreateTime(now); + portMappingDO.setUpdateTime(now); + portMappingMapper.add(portMappingDO); + return new PortMappingCreateRes(); } public PortMappingUpdateRes update(PortMappingUpdateRes req) { diff --git a/neutrino-proxy-server/src/main/resources/mapper/PortMappingMapper.xml b/neutrino-proxy-server/src/main/resources/mapper/PortMappingMapper.xml new file mode 100644 index 00000000..1022b7ac --- /dev/null +++ b/neutrino-proxy-server/src/main/resources/mapper/PortMappingMapper.xml @@ -0,0 +1,13 @@ + + + + insert into `port_mapping`(`license_id`,`server_port`,`client_ip`,`client_port`,`is_online`,`enable`,`create_time`,`update_time`) + values (:licenseId, :serverPort, :clientIp, :clientPort, :isOnline, :enable, :createTime, :updateTime) + + + + update `port_mapping` + set license_id = :licenseId,server_port = :serverPort,client_ip=:clientIp,client_port=:clientPort,is_online=:isOnline,update_time=:updateTime + where id =:id + +