11package top .cadecode .uniboot .controller .system ;
22
3+ import cn .hutool .core .util .ObjectUtil ;
34import com .github .pagehelper .PageInfo ;
45import io .swagger .annotations .Api ;
56import io .swagger .annotations .ApiOperation ;
1112import org .springframework .web .bind .annotation .RequestBody ;
1213import org .springframework .web .bind .annotation .RequestMapping ;
1314import 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 ;
1418import top .cadecode .uniboot .common .annotation .ApiFormat ;
1519import top .cadecode .uniboot .common .response .PageResult ;
1620import top .cadecode .uniboot .system .bean .po .SysApi ;
1721import top .cadecode .uniboot .system .bean .vo .SysApiVo .SysApiRolesVo ;
22+ import top .cadecode .uniboot .system .bean .vo .SysApiVo .SysApiSwaggerVo ;
1823import top .cadecode .uniboot .system .convert .SysApiConvert ;
1924import top .cadecode .uniboot .system .service .SysApiService ;
2025import top .cadecode .uniboot .system .service .SysRoleService ;
2126
2227import javax .validation .Valid ;
2328import javax .validation .constraints .NotEmpty ;
29+ import java .util .ArrayList ;
2430import java .util .List ;
31+ import java .util .Map ;
32+ import java .util .Set ;
33+ import java .util .stream .Collectors ;
2534
2635import 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}
0 commit comments