|
|
@ -1,26 +1,19 @@
|
|
|
|
package com.ruoyi.web.core.config;
|
|
|
|
package com.ruoyi.web.core.config;
|
|
|
|
|
|
|
|
|
|
|
|
import java.util.ArrayList;
|
|
|
|
import com.ruoyi.common.config.RuoYiConfig;
|
|
|
|
import java.util.List;
|
|
|
|
import io.swagger.annotations.ApiOperation;
|
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
|
import org.springframework.beans.factory.annotation.Value;
|
|
|
|
import org.springframework.beans.factory.annotation.Value;
|
|
|
|
import org.springframework.context.annotation.Bean;
|
|
|
|
import org.springframework.context.annotation.Bean;
|
|
|
|
import org.springframework.context.annotation.Configuration;
|
|
|
|
import org.springframework.context.annotation.Configuration;
|
|
|
|
import com.ruoyi.common.config.RuoYiConfig;
|
|
|
|
|
|
|
|
import io.swagger.annotations.ApiOperation;
|
|
|
|
|
|
|
|
import io.swagger.models.auth.In;
|
|
|
|
|
|
|
|
import springfox.documentation.builders.ApiInfoBuilder;
|
|
|
|
import springfox.documentation.builders.ApiInfoBuilder;
|
|
|
|
import springfox.documentation.builders.PathSelectors;
|
|
|
|
import springfox.documentation.builders.PathSelectors;
|
|
|
|
import springfox.documentation.builders.RequestHandlerSelectors;
|
|
|
|
import springfox.documentation.builders.RequestHandlerSelectors;
|
|
|
|
import springfox.documentation.service.ApiInfo;
|
|
|
|
import springfox.documentation.service.ApiInfo;
|
|
|
|
import springfox.documentation.service.ApiKey;
|
|
|
|
|
|
|
|
import springfox.documentation.service.AuthorizationScope;
|
|
|
|
|
|
|
|
import springfox.documentation.service.Contact;
|
|
|
|
import springfox.documentation.service.Contact;
|
|
|
|
import springfox.documentation.service.SecurityReference;
|
|
|
|
|
|
|
|
import springfox.documentation.service.SecurityScheme;
|
|
|
|
|
|
|
|
import springfox.documentation.spi.DocumentationType;
|
|
|
|
import springfox.documentation.spi.DocumentationType;
|
|
|
|
import springfox.documentation.spi.service.contexts.SecurityContext;
|
|
|
|
|
|
|
|
import springfox.documentation.spring.web.plugins.Docket;
|
|
|
|
import springfox.documentation.spring.web.plugins.Docket;
|
|
|
|
|
|
|
|
import springfox.documentation.swagger2.annotations.EnableSwagger2WebMvc;
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
/**
|
|
|
|
* Swagger2的接口配置
|
|
|
|
* Swagger2的接口配置
|
|
|
@ -28,29 +21,36 @@ import springfox.documentation.spring.web.plugins.Docket;
|
|
|
|
* @author ruoyi
|
|
|
|
* @author ruoyi
|
|
|
|
*/
|
|
|
|
*/
|
|
|
|
@Configuration
|
|
|
|
@Configuration
|
|
|
|
public class SwaggerConfig
|
|
|
|
@EnableSwagger2WebMvc
|
|
|
|
{
|
|
|
|
public class SwaggerConfig {
|
|
|
|
/** 系统基础配置 */
|
|
|
|
/**
|
|
|
|
|
|
|
|
* 系统基础配置
|
|
|
|
|
|
|
|
*/
|
|
|
|
@Autowired
|
|
|
|
@Autowired
|
|
|
|
private RuoYiConfig ruoyiConfig;
|
|
|
|
private RuoYiConfig ruoyiConfig;
|
|
|
|
|
|
|
|
|
|
|
|
/** 是否开启swagger */
|
|
|
|
/**
|
|
|
|
@Value("${swagger.enabled}")
|
|
|
|
* 是否开启swagger
|
|
|
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
@Value("${knife4j.enable}")
|
|
|
|
private boolean enabled;
|
|
|
|
private boolean enabled;
|
|
|
|
|
|
|
|
|
|
|
|
/** 设置请求的统一前缀 */
|
|
|
|
/**
|
|
|
|
@Value("${swagger.pathMapping}")
|
|
|
|
* 设置请求的统一前缀
|
|
|
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
@Value("${server.servlet.context-path}")
|
|
|
|
private String pathMapping;
|
|
|
|
private String pathMapping;
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
/**
|
|
|
|
* 创建API
|
|
|
|
* 创建API
|
|
|
|
*/
|
|
|
|
*/
|
|
|
|
@Bean
|
|
|
|
@Bean
|
|
|
|
public Docket createRestApi()
|
|
|
|
public Docket createRestApi() {
|
|
|
|
{
|
|
|
|
return new Docket(DocumentationType.SWAGGER_2)
|
|
|
|
return new Docket(DocumentationType.OAS_30)
|
|
|
|
|
|
|
|
// 是否启用Swagger
|
|
|
|
// 是否启用Swagger
|
|
|
|
.enable(enabled)
|
|
|
|
.enable(enabled)
|
|
|
|
|
|
|
|
//分组名称
|
|
|
|
|
|
|
|
.groupName("太仓综治")
|
|
|
|
// 用来创建该API的基本信息,展示在文档的页面中(自定义展示的信息)
|
|
|
|
// 用来创建该API的基本信息,展示在文档的页面中(自定义展示的信息)
|
|
|
|
.apiInfo(apiInfo())
|
|
|
|
.apiInfo(apiInfo())
|
|
|
|
// 设置哪些接口暴露给Swagger展示
|
|
|
|
// 设置哪些接口暴露给Swagger展示
|
|
|
@ -62,60 +62,22 @@ public class SwaggerConfig
|
|
|
|
// 扫描所有 .apis(RequestHandlerSelectors.any())
|
|
|
|
// 扫描所有 .apis(RequestHandlerSelectors.any())
|
|
|
|
.paths(PathSelectors.any())
|
|
|
|
.paths(PathSelectors.any())
|
|
|
|
.build()
|
|
|
|
.build()
|
|
|
|
/* 设置安全模式,swagger可以设置访问token */
|
|
|
|
|
|
|
|
.securitySchemes(securitySchemes())
|
|
|
|
|
|
|
|
.securityContexts(securityContexts())
|
|
|
|
|
|
|
|
.pathMapping(pathMapping);
|
|
|
|
.pathMapping(pathMapping);
|
|
|
|
|
|
|
|
// 排除mybatis-plus的分页参数
|
|
|
|
|
|
|
|
// .ignoredParameterTypes(Page.class, IPage.class);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
|
|
* 安全模式,这里指定token通过Authorization头请求头传递
|
|
|
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
private List<SecurityScheme> securitySchemes()
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
List<SecurityScheme> apiKeyList = new ArrayList<SecurityScheme>();
|
|
|
|
|
|
|
|
apiKeyList.add(new ApiKey("Authorization", "Authorization", In.HEADER.toValue()));
|
|
|
|
|
|
|
|
return apiKeyList;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
|
|
* 安全上下文
|
|
|
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
private List<SecurityContext> securityContexts()
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
List<SecurityContext> securityContexts = new ArrayList<>();
|
|
|
|
|
|
|
|
securityContexts.add(
|
|
|
|
|
|
|
|
SecurityContext.builder()
|
|
|
|
|
|
|
|
.securityReferences(defaultAuth())
|
|
|
|
|
|
|
|
.operationSelector(o -> o.requestMappingPattern().matches("/.*"))
|
|
|
|
|
|
|
|
.build());
|
|
|
|
|
|
|
|
return securityContexts;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
|
|
* 默认的安全上引用
|
|
|
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
private List<SecurityReference> defaultAuth()
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
AuthorizationScope authorizationScope = new AuthorizationScope("global", "accessEverything");
|
|
|
|
|
|
|
|
AuthorizationScope[] authorizationScopes = new AuthorizationScope[1];
|
|
|
|
|
|
|
|
authorizationScopes[0] = authorizationScope;
|
|
|
|
|
|
|
|
List<SecurityReference> securityReferences = new ArrayList<>();
|
|
|
|
|
|
|
|
securityReferences.add(new SecurityReference("Authorization", authorizationScopes));
|
|
|
|
|
|
|
|
return securityReferences;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
/**
|
|
|
|
* 添加摘要信息
|
|
|
|
* 添加摘要信息
|
|
|
|
*/
|
|
|
|
*/
|
|
|
|
private ApiInfo apiInfo()
|
|
|
|
private ApiInfo apiInfo() {
|
|
|
|
{
|
|
|
|
|
|
|
|
// 用ApiInfoBuilder进行定制
|
|
|
|
// 用ApiInfoBuilder进行定制
|
|
|
|
return new ApiInfoBuilder()
|
|
|
|
return new ApiInfoBuilder()
|
|
|
|
// 设置标题
|
|
|
|
// 设置标题
|
|
|
|
.title("标题:若依管理系统_接口文档")
|
|
|
|
.title("苏州应急3期系统_接口文档")
|
|
|
|
// 描述
|
|
|
|
// 描述
|
|
|
|
.description("描述:用于管理集团旗下公司的人员信息,具体包括XXX,XXX模块...")
|
|
|
|
.description("描述:用于苏州应急3期系统")
|
|
|
|
// 作者信息
|
|
|
|
// 作者信息
|
|
|
|
.contact(new Contact(ruoyiConfig.getName(), null, null))
|
|
|
|
.contact(new Contact(ruoyiConfig.getName(), null, null))
|
|
|
|
// 版本
|
|
|
|
// 版本
|
|
|
|