提交 7ab813c0 authored 作者: mry's avatar mry

fix(web): 修复了,swagger快速查询接口问题

上级 e82e62c2
...@@ -38,6 +38,9 @@ public class Connect extends BaseEntity { ...@@ -38,6 +38,9 @@ public class Connect extends BaseEntity {
@ApiModelProperty("所用驱动") @ApiModelProperty("所用驱动")
private String driver; private String driver;
@ApiModelProperty("项目id")
private Long projectId;
/** /**
* 转化为数据源DTO对象 * 转化为数据源DTO对象
* *
...@@ -47,5 +50,4 @@ public class Connect extends BaseEntity { ...@@ -47,5 +50,4 @@ public class Connect extends BaseEntity {
return new DataSourceDTO(name, driver, url, username, password); return new DataSourceDTO(name, driver, url, username, password);
} }
} }
...@@ -22,9 +22,6 @@ import org.springframework.web.bind.annotation.*; ...@@ -22,9 +22,6 @@ import org.springframework.web.bind.annotation.*;
import java.sql.SQLException; import java.sql.SQLException;
import java.util.Optional; import java.util.Optional;
import static org.springframework.http.HttpStatus.NOT_IMPLEMENTED;
import static org.springframework.http.HttpStatus.NO_CONTENT;
/** /**
* <p> * <p>
* 前端控制器 * 前端控制器
...@@ -78,7 +75,7 @@ public class ConnectController { ...@@ -78,7 +75,7 @@ public class ConnectController {
* @return 分页查询的结果, 数据库信息 * @return 分页查询的结果, 数据库信息
*/ */
@ApiOperation(value = "分页查询数据库信息") @ApiOperation(value = "分页查询数据库信息")
@GetMapping @GetMapping("/{projectId}")
@Cacheable(cacheNames = "connectPageCache", @Cacheable(cacheNames = "connectPageCache",
key = "#pageSize + '_' + #pageNum + '_' + #projectId", key = "#pageSize + '_' + #pageNum + '_' + #projectId",
condition = "#pageNum != null && #pageSize != null", condition = "#pageNum != null && #pageSize != null",
...@@ -86,9 +83,10 @@ public class ConnectController { ...@@ -86,9 +83,10 @@ public class ConnectController {
public ResponseEntity<CommonResultObj<Page<Connect>>> findPageConnects( public ResponseEntity<CommonResultObj<Page<Connect>>> findPageConnects(
@RequestParam(defaultValue = "10") int pageSize, @RequestParam(defaultValue = "10") int pageSize,
@RequestParam(defaultValue = "1") int pageNum, @RequestParam(defaultValue = "1") int pageNum,
@RequestParam(required = false,defaultValue = "") String name) { @RequestParam(required = false, defaultValue = "") String name,
@PathVariable Long projectId) {
Page<Connect> results = Optional.ofNullable(connectService.page(Page.of(pageNum, pageSize) Page<Connect> results = Optional.ofNullable(connectService.page(Page.of(pageNum, pageSize)
, Wrappers.lambdaQuery(Connect.class) , Wrappers.lambdaQuery(Connect.class).eq(Connect::getProjectId, projectId)
.like(StringUtils.hasLength(name) .like(StringUtils.hasLength(name)
, Connect::getName, name))).orElse(new Page<>()); , Connect::getName, name))).orElse(new Page<>());
PageTools.pageTool(pageSize, pageNum, results); PageTools.pageTool(pageSize, pageNum, results);
...@@ -104,13 +102,14 @@ public class ConnectController { ...@@ -104,13 +102,14 @@ public class ConnectController {
* @return 分页查询的结果, 数据库信息 * @return 分页查询的结果, 数据库信息
*/ */
@ApiOperation(value = "条件查询数据库信息") @ApiOperation(value = "条件查询数据库信息")
@GetMapping("/condition") @GetMapping("/condition/{projectId}")
public ResponseEntity<CommonResultObj<Page<Connect>>> findConditionConnects( public ResponseEntity<CommonResultObj<Page<Connect>>> findConditionConnects(
@RequestParam(defaultValue = "10") int pageSize, @RequestParam(defaultValue = "10") int pageSize,
@RequestParam(defaultValue = "1") int pageNum, @RequestParam(defaultValue = "1") int pageNum,
@RequestParam(required = false,defaultValue = "") String name) { @RequestParam(required = false, defaultValue = "") String name,
@PathVariable Long projectId) {
Page<Connect> results = Optional.ofNullable(connectService.page(Page.of(pageNum, pageSize) Page<Connect> results = Optional.ofNullable(connectService.page(Page.of(pageNum, pageSize)
, Wrappers.lambdaQuery(Connect.class) , Wrappers.lambdaQuery(Connect.class).eq(Connect::getProjectId, projectId)
.like(StringUtils.hasLength(name) .like(StringUtils.hasLength(name)
, Connect::getName, name))).orElse(new Page<>()); , Connect::getName, name))).orElse(new Page<>());
PageTools.pageTool(pageSize, pageNum, results); PageTools.pageTool(pageSize, pageNum, results);
...@@ -148,8 +147,7 @@ public class ConnectController { ...@@ -148,8 +147,7 @@ public class ConnectController {
put = {@CachePut(cacheNames = "connectPageCache", key = "#result.body.data.id", put = {@CachePut(cacheNames = "connectPageCache", key = "#result.body.data.id",
condition = "#p0 != null", unless = "#result.statusCodeValue != 200") condition = "#p0 != null", unless = "#result.statusCodeValue != 200")
}, },
evict = {@CacheEvict(cacheNames = "connectPageCache", key = "#p0.id", evict = {@CacheEvict(cacheNames = "connectPageCache", allEntries = true)}
condition = "#p0 != null")}
) )
public ResponseEntity<CommonResultObj<Connect>> updateConnect(@RequestBody Connect connect) { public ResponseEntity<CommonResultObj<Connect>> updateConnect(@RequestBody Connect connect) {
return CommonResult.pred(connectService::updateById, connect return CommonResult.pred(connectService::updateById, connect
......
...@@ -26,6 +26,7 @@ import java.util.Map; ...@@ -26,6 +26,7 @@ import java.util.Map;
import java.util.Set; import java.util.Set;
import java.util.regex.Matcher; import java.util.regex.Matcher;
import java.util.regex.Pattern; import java.util.regex.Pattern;
import java.util.stream.Collectors;
/** /**
* @author mry * @author mry
...@@ -71,11 +72,11 @@ public class SwaggerController { ...@@ -71,11 +72,11 @@ public class SwaggerController {
/** /**
* 根据标签名称模糊查询list集合 * 根据标签名称模糊查询list集合
* *
* @param name 查询条件: 名称 * @param name 查询条件: 标签名称
* @param list 查询的集合 * @param list 查询的集合
* @return 模糊查询的结果 * @return 模糊查询的结果
*/ */
public List<InterfaceInformation> search(String name, List<InterfaceInformation> list) { public List<InterfaceInformation> tagSearch(String name, List<InterfaceInformation> list) {
@SuppressWarnings(value = "all") List<InterfaceInformation> results = new ArrayList(); @SuppressWarnings(value = "all") List<InterfaceInformation> results = new ArrayList();
Pattern pattern = Pattern.compile(name, Pattern.CASE_INSENSITIVE); Pattern pattern = Pattern.compile(name, Pattern.CASE_INSENSITIVE);
for (InterfaceInformation o : list) { for (InterfaceInformation o : list) {
...@@ -87,6 +88,45 @@ public class SwaggerController { ...@@ -87,6 +88,45 @@ public class SwaggerController {
return results; return results;
} }
/**
* 根据接口名称模糊查询list集合
*
* @param name 查询条件: 接口名称
* @param list 查询的集合
* @return 模糊查询的结果
*/
public List<InterfaceInformation> nameSearch(String name, List<InterfaceInformation> list) {
@SuppressWarnings(value = "all") List<InterfaceInformation> results = new ArrayList();
Pattern pattern = Pattern.compile(name, Pattern.CASE_INSENSITIVE);
for (InterfaceInformation o : list) {
Matcher matcher = pattern.matcher(o.getSummary());
if (matcher.find()) {
results.add(o);
}
}
return results;
}
/**
* 根据url糊查询list集合
*
* @param name 查询条件: url
* @param list 查询的集合
* @return 模糊查询的结果
*/
public List<InterfaceInformation> urlSearch(String name, List<InterfaceInformation> list) {
@SuppressWarnings(value = "all") List<InterfaceInformation> results = new ArrayList();
Pattern pattern = Pattern.compile(name, Pattern.CASE_INSENSITIVE);
for (InterfaceInformation o : list) {
Matcher matcher = pattern.matcher(o.getMethodUrl());
if (matcher.find()) {
results.add(o);
}
}
return results;
}
/** /**
* 用来获取Swagger中的信息 * 用来获取Swagger中的信息
* *
...@@ -154,15 +194,28 @@ public class SwaggerController { ...@@ -154,15 +194,28 @@ public class SwaggerController {
return list; return list;
} }
// private List<InterfaceInformation> listSearch(List<InterfaceInformation> originalList){
// // nameIndex nameMap -> key name -> value List result1
// // methodIndex methodMap result2
// // tagIndex indexMap
// Map<String, List<InterfaceInformation>> nameMap = originalList.stream().collect(Collectors.groupingBy(InterfaceInformation::getSummary));
// Map<String, List<InterfaceInformation>> urlMap = originalList.stream().collect(Collectors.groupingBy(InterfaceInformation::getMethodUrl));
// Map<String, List<InterfaceInformation>> tagsMap = originalList.stream().collect(Collectors.groupingBy(InterfaceInformation::getTags));
//
// }
/** /**
* 查询快速添加的接口 * 查询快速添加的接口
* name -> summary
* url -> methodUrl
* label -> tags
* *
* @param projectId 项目id * @param projectId 项目id
* @param id 环境id * @param id 环境id
* @param pageSize 每页多少条数据 * @param pageSize 每页多少条数据
* @param pageNum 当前第几页 * @param pageNum 当前第几页
* @param name 查询条件: 标签名称 * @param name 查询条件: 标签名称
* @param url 查询条件: 方法的url * @param url 查询条件: 方法的url
* @return Swagger中的数据 * @return Swagger中的数据
*/ */
@GetMapping @GetMapping
...@@ -174,7 +227,8 @@ public class SwaggerController { ...@@ -174,7 +227,8 @@ public class SwaggerController {
@RequestParam(defaultValue = "10") int pageSize, @RequestParam(defaultValue = "10") int pageSize,
@RequestParam(defaultValue = "1") int pageNum, @RequestParam(defaultValue = "1") int pageNum,
@RequestParam(required = false, defaultValue = "") String name, @RequestParam(required = false, defaultValue = "") String name,
@RequestParam(required = false, defaultValue = "") String url) { @RequestParam(required = false, defaultValue = "") String url,
@RequestParam(required = false, defaultValue = "") String tag) {
//将所有的默认选项置为false //将所有的默认选项置为false
environmentService.setIsDefaultByWrapper(false, Wrappers.lambdaQuery(Environment.class).eq(Environment::getProjectId, projectId)); environmentService.setIsDefaultByWrapper(false, Wrappers.lambdaQuery(Environment.class).eq(Environment::getProjectId, projectId));
//将选中的环境置为true,后续默认选择这个环境 //将选中的环境置为true,后续默认选择这个环境
...@@ -184,21 +238,33 @@ public class SwaggerController { ...@@ -184,21 +238,33 @@ public class SwaggerController {
//获得json字符串 //获得json字符串
String json = loadJson(swaggerUrl); String json = loadJson(swaggerUrl);
List<InterfaceInformation> list = getList(json); List<InterfaceInformation> list = getList(json);
List<InterfaceInformation> swaggerSearch;
List<InterfaceInformation> swaggerUrlSearch; List<InterfaceInformation> swaggerUrlSearch;
List<InterfaceInformation> swaggerNameSearch; List<InterfaceInformation> swaggerTagSearch;
if ("".equals(url) && "".equals(name)) { if ("".equals(url) && "".equals(tag) && "".equals(name)) {
swaggerNameSearch = list; swaggerSearch = list;
} else if (!"".equals(url) && "".equals(name)) { } else if (!"".equals(url) && "".equals(tag) && "".equals(name)) {
swaggerUrlSearch = search(url, list); swaggerSearch = urlSearch(url, list);
swaggerNameSearch = swaggerUrlSearch; } else if ("".equals(url) && !"".equals(tag) && "".equals(name)) {
} else if ("".equals(url) && !"".equals(name)) { swaggerSearch = tagSearch(tag, list);
swaggerNameSearch = search(name, list); } else if ("".equals(url) && "".equals(tag) && !"".equals(name)) {
swaggerSearch = nameSearch(name, list);
} else if (!"".equals(url) && !"".equals(tag) && "".equals(name)) {
swaggerUrlSearch = urlSearch(url, list);
swaggerSearch = tagSearch(tag, swaggerUrlSearch);
} else if (!"".equals(url) && "".equals(tag) && !"".equals(name)) {
swaggerUrlSearch = urlSearch(url, list);
swaggerSearch = nameSearch(name, swaggerUrlSearch);
} else if ("".equals(url) && !"".equals(tag) && !"".equals(name)) {
swaggerTagSearch = tagSearch(tag, list);
swaggerSearch = nameSearch(name, swaggerTagSearch);
} else { } else {
swaggerUrlSearch = search(url, list); swaggerUrlSearch = urlSearch(url, list);
swaggerNameSearch = search(name, swaggerUrlSearch); swaggerTagSearch = tagSearch(tag, swaggerUrlSearch);
swaggerSearch = nameSearch(name, swaggerTagSearch);
} }
int total = swaggerNameSearch.size(); int total = swaggerSearch.size();
List<InterfaceInformation> subList = swaggerNameSearch.subList(pageSize * (pageNum - 1), (Math.min((pageNum * pageSize), total))); List<InterfaceInformation> subList = swaggerSearch.subList(pageSize * (pageNum - 1), (Math.min((pageNum * pageSize), total)));
CommonPage<List<InterfaceInformation>> listCommonPage = new CommonPage<>(); CommonPage<List<InterfaceInformation>> listCommonPage = new CommonPage<>();
listCommonPage.setList(subList); listCommonPage.setList(subList);
listCommonPage.setTotal(total); listCommonPage.setTotal(total);
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论