更改端口映射查询域名相关接口

This commit is contained in:
suxiang
2024-08-08 23:36:30 +08:00
parent b10eb48a45
commit cb095575c0
6 changed files with 76 additions and 7 deletions
@@ -30,7 +30,6 @@ public class PortMappingController {
@Mapping("/page")
public PageInfo<PortMappingListRes> page(PageQuery pageQuery, PortMappingListReq req) {
ParamCheckUtil.checkNotNull(pageQuery, "pageQuery");
return portMappingService.page(pageQuery, req);
}
@@ -21,11 +21,13 @@
*/
package org.dromara.neutrinoproxy.server.controller.res.proxy;
import com.baomidou.mybatisplus.annotation.TableField;
import org.dromara.neutrinoproxy.server.constant.EnableStatusEnum;
import org.dromara.neutrinoproxy.server.constant.OnlineStatusEnum;
import lombok.Data;
import java.util.Date;
import java.util.List;
/**
* 端口映射列表响应
@@ -44,13 +46,17 @@ public class PortMappingListRes {
*/
private String protocal;
/**
* 子域名
* 子域名集合
*/
private String subdomain;
private List<String> subdomains;
/**
* 域名集合
*/
private List<String> domains;
/**
* 域名
* 域名id集合
*/
private String domain;
private List<Integer> domainIds;
/**
* license名称
*/
@@ -11,6 +11,7 @@ import org.dromara.neutrinoproxy.server.controller.req.proxy.PortMappingListReq;
import org.dromara.neutrinoproxy.server.dal.entity.PortMappingDO;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.dromara.neutrinoproxy.server.service.bo.FullDomainNameBO;
import java.util.Date;
import java.util.List;
@@ -108,4 +109,6 @@ public interface PortMappingMapper extends BaseMapper<PortMappingDO> {
}
List<PortMappingDO> selectPortMappingByCondition(IPage<PortMappingDO> page, @Param("req") PortMappingListReq req);
List<FullDomainNameBO> selectFullDomainNameListByIds(@Param("ids") Set<Integer> ids);
}
@@ -40,6 +40,7 @@ import org.dromara.neutrinoproxy.server.dal.entity.PortMappingDO;
import org.dromara.neutrinoproxy.server.dal.entity.PortPoolDO;
import org.dromara.neutrinoproxy.server.dal.entity.UserDO;
import org.dromara.neutrinoproxy.server.service.bo.FlowLimitBO;
import org.dromara.neutrinoproxy.server.service.bo.FullDomainNameBO;
import org.dromara.neutrinoproxy.server.util.ParamCheckUtil;
import org.dromara.neutrinoproxy.server.util.ProxyUtil;
import org.dromara.neutrinoproxy.server.util.StringUtil;
@@ -118,7 +119,15 @@ public class PortMappingService implements LifecycleBean {
Map<Integer, LicenseDO> licenseMap = licenseList.stream().collect(Collectors.toMap(LicenseDO::getId, Function.identity()));
Map<Integer, UserDO> userMap = userList.stream().collect(Collectors.toMap(UserDO::getId, Function.identity()));
//域名相关
Set<Integer> portMappingIds = respList.stream().map(PortMappingListRes::getId).collect(Collectors.toSet());
List<FullDomainNameBO> fullDomainNameBOS = portMappingMapper.selectFullDomainNameListByIds(portMappingIds);
Map<Integer, List<FullDomainNameBO>> fullDomainNameBOMap = fullDomainNameBOS.stream().collect(Collectors.groupingBy(FullDomainNameBO::getId));
respList.forEach(item -> {
//TODO 删除subdomain字段
item.setSubdomains(null);
LicenseDO license = licenseMap.get(item.getLicenseId());
if (null == license) {
return;
@@ -130,8 +139,14 @@ public class PortMappingService implements LifecycleBean {
return;
}
item.setUserName(user.getName());
if (StrUtil.isNotBlank(proxyConfig.getServer().getTcp().getDomainName()) && StrUtil.isNotBlank(item.getSubdomain())) {
item.setDomain(item.getSubdomain() + "." + proxyConfig.getServer().getTcp().getDomainName());
List<FullDomainNameBO> bos = fullDomainNameBOMap.get(item.getId());
if (CollectionUtil.isNotEmpty(bos)) {
List<String> subdomains = bos.stream().map(FullDomainNameBO::getSubdomain).collect(Collectors.toList());
List<String> domains = bos.stream().map(FullDomainNameBO::getDomain).collect(Collectors.toList());
List<Integer> domainIds = bos.stream().map(FullDomainNameBO::getDomainId).collect(Collectors.toList());
item.setSubdomains(subdomains);
item.setDomains(domains);
item.setDomainIds(domainIds);
}
if (NetworkProtocolEnum.HTTP.getDesc().equals(item.getProtocal())) {
item.setProtocal("HTTP(S)");
@@ -0,0 +1,34 @@
package org.dromara.neutrinoproxy.server.service.bo;
import lombok.Data;
import lombok.experimental.Accessors;
import org.dromara.neutrinoproxy.server.controller.res.report.HomeDataView;
import java.util.Date;
/**
* 完整域名
* @author: mirac
* @date: 2024/8/8
*/
@Data
@Accessors(chain = true)
public class FullDomainNameBO {
/**
* 端口映射id
*/
private Integer id;
/**
* 子域名
*/
private String subdomain;
/**
* 域名
*/
private String domain;
/**
* 域名id
*/
private Integer domainId;
}
@@ -29,4 +29,16 @@
</where>
order by pm.id asc
</select>
<select id="selectFullDomainNameListByIds" resultType="org.dromara.neutrinoproxy.server.service.bo.FullDomainNameBO"
parameterType="java.util.Set">
SELECT pm.id AS id, dpm.subdomain as subdomain, dn.domain AS domain, dn.id as domainId
FROM domain_port_mapping dpm
LEFT JOIN port_mapping pm ON pm.id = dpm.port_mapping_id
LEFT JOIN domain_name dn ON dn.id = dpm.domain_name_id
WHERE pm.id IN
<foreach item="item" index="index" collection="ids" open="(" separator="," close=")">
#{item}
</foreach>
</select>
</mapper>