Skip to content

Commit 2b5a613

Browse files
committed
feat: 添加查询全部接口和 swagger 注解内容
1 parent 153ff66 commit 2b5a613

2 files changed

Lines changed: 50 additions & 0 deletions

File tree

application/src/main/java/top/cadecode/uniboot/controller/system/SysApiController.java

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package top.cadecode.uniboot.controller.system;
22

3+
import cn.hutool.core.util.ObjectUtil;
34
import com.github.pagehelper.PageInfo;
45
import io.swagger.annotations.Api;
56
import io.swagger.annotations.ApiOperation;
@@ -11,17 +12,25 @@
1112
import org.springframework.web.bind.annotation.RequestBody;
1213
import org.springframework.web.bind.annotation.RequestMapping;
1314
import org.springframework.web.bind.annotation.RestController;
15+
import org.springframework.web.method.HandlerMethod;
16+
import org.springframework.web.servlet.mvc.method.RequestMappingInfo;
17+
import org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping;
1418
import top.cadecode.uniboot.common.annotation.ApiFormat;
1519
import top.cadecode.uniboot.common.response.PageResult;
1620
import top.cadecode.uniboot.system.bean.po.SysApi;
1721
import top.cadecode.uniboot.system.bean.vo.SysApiVo.SysApiRolesVo;
22+
import top.cadecode.uniboot.system.bean.vo.SysApiVo.SysApiSwaggerVo;
1823
import top.cadecode.uniboot.system.convert.SysApiConvert;
1924
import top.cadecode.uniboot.system.service.SysApiService;
2025
import top.cadecode.uniboot.system.service.SysRoleService;
2126

2227
import javax.validation.Valid;
2328
import javax.validation.constraints.NotEmpty;
29+
import java.util.ArrayList;
2430
import java.util.List;
31+
import java.util.Map;
32+
import java.util.Set;
33+
import java.util.stream.Collectors;
2534

2635
import static top.cadecode.uniboot.system.request.SysApiRequest.*;
2736

@@ -43,6 +52,11 @@ public class SysApiController {
4352
private final SysApiService sysApiService;
4453
private final SysRoleService sysRoleService;
4554

55+
/**
56+
* 获取全部接口的处理器 mapping
57+
*/
58+
private final RequestMappingHandlerMapping handlerMapping;
59+
4660
@ApiOperation("查询API列表(带角色)")
4761
@PostMapping("page_roles_vo")
4862
public PageResult<SysApiRolesVo> pageRolesVo(@RequestBody @Valid SysApiRolesRequest request) {
@@ -79,4 +93,26 @@ public List<SysApiRolesVo> listRolesVoByApiIds(@RequestBody @NotEmpty List<Long>
7993
return sysApiService.listRolesVoByApiIds(apiIdList);
8094
}
8195

96+
@ApiOperation("获取全部接口及 swagger 注解")
97+
@PostMapping("list_swagger_vo")
98+
public Set<SysApiSwaggerVo> listSwaggerVo() {
99+
Map<RequestMappingInfo, HandlerMethod> methodMap = handlerMapping.getHandlerMethods();
100+
return methodMap.entrySet()
101+
.stream()
102+
.map(e -> {
103+
ArrayList<String> urlList = new ArrayList<>(e.getKey().getPatternsCondition().getPatterns());
104+
String url = null;
105+
if (ObjectUtil.isNotEmpty(urlList)) {
106+
url = urlList.get(0);
107+
}
108+
ApiOperation operation = e.getValue().getMethod().getAnnotation(ApiOperation.class);
109+
String description = null;
110+
if (ObjectUtil.isNotNull(operation)) {
111+
description = operation.value();
112+
}
113+
return SysApiSwaggerVo.builder().url(url).description(description).build();
114+
})
115+
.filter(o -> ObjectUtil.isNotEmpty(o.getUrl()))
116+
.collect(Collectors.toSet());
117+
}
82118
}

system/src/main/java/top/cadecode/uniboot/system/bean/vo/SysApiVo.java

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,9 @@
11
package top.cadecode.uniboot.system.bean.vo;
22

3+
import lombok.AllArgsConstructor;
4+
import lombok.Builder;
35
import lombok.Data;
6+
import lombok.NoArgsConstructor;
47

58
import java.util.Date;
69
import java.util.List;
@@ -30,4 +33,15 @@ public static class SysApiRolesVo {
3033

3134
private List<String> roles;
3235
}
36+
37+
@Data
38+
@AllArgsConstructor
39+
@NoArgsConstructor
40+
@Builder
41+
public static class SysApiSwaggerVo {
42+
43+
private String url;
44+
45+
private String description;
46+
}
3347
}

0 commit comments

Comments
 (0)