Browse Source

feat: 隧道管理接口

master
niushuai233 2 years ago
parent
commit
33e5346e4e
  1. 38
      src/main/java/cc/niushuai/bastionserver/common/constant/enums/NumEnum.java
  2. 179
      src/main/java/cc/niushuai/bastionserver/modules/tunnel/controller/TunnelInfoController.java
  3. 76
      src/main/java/cc/niushuai/bastionserver/modules/tunnel/entity/TunnelInfo.java
  4. 14
      src/main/java/cc/niushuai/bastionserver/modules/tunnel/mapper/TunnelInfoMapper.java
  5. 5
      src/main/java/cc/niushuai/bastionserver/modules/tunnel/mapper/xml/TunnelInfoMapper.xml
  6. 14
      src/main/java/cc/niushuai/bastionserver/modules/tunnel/service/TunnelInfoService.java
  7. 20
      src/main/java/cc/niushuai/bastionserver/modules/tunnel/service/impl/TunnelInfoServiceImpl.java

38
src/main/java/cc/niushuai/bastionserver/common/constant/enums/NumEnum.java

@ -0,0 +1,38 @@
package cc.niushuai.bastionserver.common.constant.enums;
/**
* 0-9 枚举
*
* @author niushuai233
* @date 2023/1/4 11:43
*/
public enum NumEnum {
ZERO(0, "0"),
ONE(1, "1"),
TWO(2, "2"),
THREE(3, "3"),
FOUR(4, "4"),
FIVE(5, "5"),
SIX(6, "6"),
SEVEN(7, "7"),
EIGHT(8, "8"),
NINE(9, "9"),
;
private Integer iCode;
private String sCode;
NumEnum(Integer iCode, String sCode) {
this.iCode = iCode;
this.sCode = sCode;
}
public Integer getICode() {
return iCode;
}
public String getSCode() {
return sCode;
}
}

179
src/main/java/cc/niushuai/bastionserver/modules/tunnel/controller/TunnelInfoController.java

@ -0,0 +1,179 @@
package cc.niushuai.bastionserver.modules.tunnel.controller;
import cc.niushuai.bastionserver.common.api.vo.Result;
import cc.niushuai.bastionserver.common.aspect.annotation.AutoLog;
import cc.niushuai.bastionserver.common.base.controller.BaseController;
import cc.niushuai.bastionserver.common.constant.enums.NumEnum;
import cc.niushuai.bastionserver.common.system.query.QueryGenerator;
import cc.niushuai.bastionserver.modules.tunnel.entity.ServerInfo;
import cc.niushuai.bastionserver.modules.tunnel.entity.TunnelInfo;
import cc.niushuai.bastionserver.modules.tunnel.service.ServerInfoService;
import cc.niushuai.bastionserver.modules.tunnel.service.TunnelInfoService;
import cn.hutool.core.collection.CollUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.servlet.ModelAndView;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
/**
* 隧道信息
*
* @author: niushuai233
* @date: 2023-01-04 10:20:26
*/
@Slf4j
@Api(tags = "隧道信息")
@RestController
@RequestMapping("/tunnel/tunnelInfo")
public class TunnelInfoController extends BaseController<TunnelInfo, TunnelInfoService> {
@Resource
private ServerInfoService serverInfoService;
/**
* 分页列表查询
*
* @param tunnelInfo
* @param pageNo
* @param pageSize
* @param req
* @return
*/
@AutoLog(value = "隧道信息-分页列表查询")
@ApiOperation(value = "隧道信息-分页列表查询", notes = "隧道信息-分页列表查询")
@GetMapping(value = "/page")
public Result<?> queryPageList(TunnelInfo tunnelInfo,
@RequestParam(name = "pageNo", defaultValue = "1") Integer pageNo,
@RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize,
HttpServletRequest req) {
QueryWrapper<TunnelInfo> queryWrapper = QueryGenerator.initQueryWrapper(tunnelInfo, req.getParameterMap());
Page<TunnelInfo> page = new Page<TunnelInfo>(pageNo, pageSize);
IPage<TunnelInfo> pageList = service.page(page, queryWrapper);
fillServerInfo(pageList.getRecords());
return Result.OK(pageList);
}
private void fillServerInfo(List<TunnelInfo> records) {
if (CollUtil.isNotEmpty(records)) {
// 列表并组装map
Map<String, String> serverMap = serverInfoService
.list(new LambdaQueryWrapper<ServerInfo>().eq(ServerInfo::getStatus, NumEnum.ZERO.getICode()))
.stream().collect(Collectors.toMap(ServerInfo::getId, ServerInfo::getName));
for (TunnelInfo record : records) {
// 赋值
record.setServerName(serverMap.get(record.getServerId()));
}
}
}
/**
* 添加
*
* @param tunnelInfo
* @return
*/
@AutoLog(value = "隧道信息-添加")
@ApiOperation(value = "隧道信息-添加", notes = "隧道信息-添加")
@PostMapping(value = "/add")
public Result<?> add(@RequestBody TunnelInfo tunnelInfo) {
exists(tunnelInfo, TunnelInfo::getServerId, TunnelInfo::getRemotePort);
service.save(tunnelInfo);
return Result.OK("添加成功!");
}
/**
* 编辑
*
* @param tunnelInfo
* @return
*/
@AutoLog(value = "隧道信息-编辑")
@ApiOperation(value = "隧道信息-编辑", notes = "隧道信息-编辑")
@RequestMapping(value = "/edit", method = {RequestMethod.PUT, RequestMethod.POST})
public Result<?> edit(@RequestBody TunnelInfo tunnelInfo) {
exists(TunnelInfo::getId, tunnelInfo, TunnelInfo::getServerId, TunnelInfo::getRemotePort);
service.updateById(tunnelInfo);
return Result.OK("编辑成功!");
}
/**
* 通过id删除
*
* @param id
* @return
*/
@AutoLog(value = "隧道信息-通过id删除")
@ApiOperation(value = "隧道信息-通过id删除", notes = "隧道信息-通过id删除")
@DeleteMapping(value = "/delete")
public Result<?> delete(@RequestParam(name = "id", required = true) String id) {
service.removeById(id);
return Result.OK("删除成功!");
}
/**
* 批量删除
*
* @param ids
* @return
*/
@AutoLog(value = "隧道信息-批量删除")
@ApiOperation(value = "隧道信息-批量删除", notes = "隧道信息-批量删除")
@DeleteMapping(value = "/deleteBatch")
public Result<?> deleteBatch(@RequestParam(name = "ids", required = true) String ids) {
this.service.removeByIds(Arrays.asList(ids.split(",")));
return Result.OK("批量删除成功!");
}
/**
* 通过id查询
*
* @param id
* @return
*/
@AutoLog(value = "隧道信息-通过id查询")
@ApiOperation(value = "隧道信息-通过id查询", notes = "隧道信息-通过id查询")
@GetMapping(value = "/queryById")
public Result<?> queryById(@RequestParam(name = "id", required = true) String id) {
TunnelInfo tunnelInfo = service.getById(id);
return Result.OK(tunnelInfo);
}
/**
* 导出excel
*
* @param request
* @param tunnelInfo
*/
@RequestMapping(value = "/exportXls")
public ModelAndView exportXls(HttpServletRequest request, TunnelInfo tunnelInfo) {
return super.exportXls(request, tunnelInfo, TunnelInfo.class, "隧道信息");
}
/**
* 通过excel导入数据
*
* @param request
* @param response
* @return
*/
@RequestMapping(value = "/importExcel", method = RequestMethod.POST)
public Result<?> importExcel(HttpServletRequest request, HttpServletResponse response) {
return super.importExcel(request, response, TunnelInfo.class);
}
}

76
src/main/java/cc/niushuai/bastionserver/modules/tunnel/entity/TunnelInfo.java

@ -0,0 +1,76 @@
package cc.niushuai.bastionserver.modules.tunnel.entity;
import cc.niushuai.bastionserver.common.base.entity.BaseEntity;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import org.jeecgframework.poi.excel.annotation.Excel;
/**
* 隧道信息
*
* @author: niushuai233
* @date: 2023-01-04 10:20:26
*/
@Data
@TableName("bas_tunnel_info")
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@ApiModel(value = "bas_tunnel_info对象", description = "隧道信息")
public class TunnelInfo extends BaseEntity {
/**
* 关联服务器id
*/
@Excel(name = "关联服务器id", width = 15)
@ApiModelProperty(value = "关联服务器id")
private String serverId;
/**
* 服务器名称
*/
@ApiModelProperty(value = "服务器名称")
@TableField(exist = false)
private String serverName;
/**
* 隧道名称
*/
@Excel(name = "隧道名称", width = 15)
@ApiModelProperty(value = "隧道名称")
private String name;
/**
* 本地端口
*/
@Excel(name = "本地端口", width = 15)
@ApiModelProperty(value = "本地端口")
private Integer localPort;
/**
* 远程端口
*/
@Excel(name = "远程端口", width = 15)
@ApiModelProperty(value = "远程端口")
private Integer remotePort;
/**
* 状态 0禁用 1启用
*/
@Excel(name = "状态 0禁用 1启用 ", width = 15)
@ApiModelProperty(value = "状态 0禁用 1启用 ")
private Integer status;
/**
* 备注
*/
@Excel(name = "备注", width = 15)
@ApiModelProperty(value = "备注")
private String remark;
/**
* 是否删除 0否 1是 默认否
*/
@Excel(name = "是否删除 0否 1是 默认否", width = 15)
@ApiModelProperty(value = "是否删除 0否 1是 默认否")
private Integer deleted;
}

14
src/main/java/cc/niushuai/bastionserver/modules/tunnel/mapper/TunnelInfoMapper.java

@ -0,0 +1,14 @@
package cc.niushuai.bastionserver.modules.tunnel.mapper;
import cc.niushuai.bastionserver.modules.tunnel.entity.TunnelInfo;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
/**
* 隧道信息
*
* @author: niushuai233
* @date: 2023-01-04 10:20:26
*/
public interface TunnelInfoMapper extends BaseMapper<TunnelInfo> {
}

5
src/main/java/cc/niushuai/bastionserver/modules/tunnel/mapper/xml/TunnelInfoMapper.xml

@ -0,0 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="cc.niushuai.bastionserver.modules.tunnel.mapper.TunnelInfoMapper">
</mapper>

14
src/main/java/cc/niushuai/bastionserver/modules/tunnel/service/TunnelInfoService.java

@ -0,0 +1,14 @@
package cc.niushuai.bastionserver.modules.tunnel.service;
import cc.niushuai.bastionserver.common.base.service.BaseService;
import cc.niushuai.bastionserver.modules.tunnel.entity.TunnelInfo;
/**
* 隧道信息
*
* @author: niushuai233
* @date: 2023-01-04 10:20:26
*/
public interface TunnelInfoService extends BaseService<TunnelInfo> {
}

20
src/main/java/cc/niushuai/bastionserver/modules/tunnel/service/impl/TunnelInfoServiceImpl.java

@ -0,0 +1,20 @@
package cc.niushuai.bastionserver.modules.tunnel.service.impl;
import cc.niushuai.bastionserver.common.base.service.impl.BaseServiceImpl;
import cc.niushuai.bastionserver.modules.tunnel.entity.TunnelInfo;
import cc.niushuai.bastionserver.modules.tunnel.mapper.TunnelInfoMapper;
import cc.niushuai.bastionserver.modules.tunnel.service.TunnelInfoService;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
/**
* 隧道信息
*
* @author: niushuai233
* @date: 2023-01-04 10:20:26
*/
@Service
@Transactional(rollbackFor = Exception.class)
public class TunnelInfoServiceImpl extends BaseServiceImpl<TunnelInfoMapper, TunnelInfo> implements TunnelInfoService {
}
Loading…
Cancel
Save