初始代码

This commit is contained in:
wangmingwei
2026-04-21 17:41:09 +08:00
parent 186ec6683a
commit b686ecac5f
493 changed files with 52349 additions and 0 deletions

View File

@@ -0,0 +1,64 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<artifactId>yunzhupaas-boot-common</artifactId>
<groupId>com.yunzhupaas</groupId>
<version>5.2.0-RELEASE</version>
<relativePath>../pom.xml</relativePath>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>yunzhupaas-common-swagger</artifactId>
<dependencies>
<!-- core模块 -->
<dependency>
<groupId>com.yunzhupaas</groupId>
<artifactId>yunzhupaas-common-core</artifactId>
</dependency>
<!--<dependency>
<groupId>com.github.xiaoymin</groupId>
<artifactId>knife4j-openapi3-spring-boot-starter</artifactId>
<version>${knife4j.version}</version>
</dependency>
<dependency>
<groupId>com.github.xiaoymin</groupId>
<artifactId>knife4j-openapi3-jakarta-spring-boot-starter</artifactId>
<version>${knife4j.version}</version>
</dependency>-->
</dependencies>
<profiles>
<profile>
<id>boot3</id>
<activation>
<jdk>[17,)</jdk>
</activation>
<dependencies>
<dependency>
<groupId>com.github.xiaoymin</groupId>
<artifactId>knife4j-openapi3-jakarta-spring-boot-starter</artifactId>
</dependency>
</dependencies>
</profile>
<profile>
<id>boot2</id>
<activation>
<jdk>(,17)</jdk>
</activation>
<dependencies>
<!--引入Knife4j的官方start包,该指南选择Spring Boot版本<3.0,开发者需要注意-->
<dependency>
<groupId>com.github.xiaoymin</groupId>
<artifactId>knife4j-openapi3-spring-boot-starter</artifactId>
</dependency>
</dependencies>
</profile>
</profiles>
</project>

View File

@@ -0,0 +1,33 @@
package com.yunzhupaas;
import io.swagger.v3.oas.annotations.Operation;
import org.springdoc.webmvc.core.providers.SpringWebMvcProvider;
import org.springframework.web.servlet.handler.AbstractHandlerMethodMapping;
import org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping;
import java.util.Collection;
import java.util.LinkedHashMap;
import java.util.Map;
import java.util.stream.Collectors;
/**
* SpringDoc默认展示全部接口
* 过滤未添加@Operation的接口
*/
public class MySpringWebMvcProvider extends SpringWebMvcProvider {
@Override
public Map getHandlerMethods() {
if (this.handlerMethods == null) {
Map<String, RequestMappingHandlerMapping> beansOfTypeRequestMappingHandlerMapping = applicationContext.getBeansOfType(RequestMappingHandlerMapping.class);
this.handlerMethods = beansOfTypeRequestMappingHandlerMapping.values().stream()
.map(AbstractHandlerMethodMapping::getHandlerMethods)
.map(Map::entrySet)
.flatMap(Collection::stream)
.filter(v -> v.getValue().hasMethodAnnotation(Operation.class))
.collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue, (a1, a2) -> a1, LinkedHashMap::new));
}
return this.handlerMethods;
}
}

View File

@@ -0,0 +1,109 @@
package com.yunzhupaas;
import cn.hutool.core.util.RandomUtil;
import io.swagger.v3.oas.models.OpenAPI;
import io.swagger.v3.oas.models.info.Info;
import io.swagger.v3.oas.models.security.SecurityRequirement;
import io.swagger.v3.oas.models.security.SecurityScheme;
import com.yunzhupaas.util.Constants;
import org.springdoc.core.models.GroupedOpenApi;
import org.springdoc.core.customizers.GlobalOpenApiCustomizer;
import org.springdoc.webmvc.core.providers.SpringWebMvcProvider;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Lazy;
import org.springframework.http.HttpHeaders;
import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
import java.util.*;
/**
* Swagger配置类
*
* @author 云筑产品开发平台组
* @version V3.1.0
* @copyright 深圳市乐程软件有限公司http://www.szlecheng.cn
* @date 2024-03-23
*/
@Configuration
public class SwaggerConfig implements WebMvcConfigurer {
@Value("${spring.application.name:}")
private String name;
@Value("${config.SoftVersion:}")
private String version;
@Bean
public OpenAPI openAPI() {
OpenAPI openAPI = new OpenAPI();
openAPI.info(apiInfo());
openAPI.schemaRequirement(Constants.AUTHORIZATION, security());
return openAPI;
}
@Bean
public GlobalOpenApiCustomizer orderGlobalOpenApiCustomizer() {
return openApi -> {
if (openApi.getTags()!=null){
openApi.getTags().forEach(tag -> {
Map<String,Object> map=new HashMap<>();
map.put("x-order", RandomUtil.randomInt(0,100));
tag.setExtensions(map);
});
}
if(openApi.getPaths()!=null){
openApi.addExtension("x-test123","333");
openApi.getPaths().addExtension("x-abb",RandomUtil.randomInt(1,100));
}
};
}
@Bean
public GroupedOpenApi userApi(){
String[] paths = { "/**" };
return GroupedOpenApi.builder().group(name)
.pathsToMatch(paths)
.addOperationCustomizer((operation, handlerMethod) -> operation.security(
Collections.singletonList(new SecurityRequirement().addList(HttpHeaders.AUTHORIZATION))
))
.build();
}
/**
* 设置文档信息
* @return
*/
private Info apiInfo() {
return new Info()
.title("接口文档")
//描述
.description("yunzhupaas接口文档")
.version(version);
}
private SecurityScheme security() {
SecurityScheme securityScheme = new SecurityScheme();
securityScheme.setType(SecurityScheme.Type.APIKEY);
securityScheme.setName(Constants.AUTHORIZATION);
securityScheme.setIn(SecurityScheme.In.HEADER);
return securityScheme;
}
@Bean
@Lazy(false)
public SpringWebMvcProvider springWebProvider(){
return new MySpringWebMvcProvider();
}
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
registry.addResourceHandler("doc.html").addResourceLocations("classpath:/META-INF/resources/");
registry.addResourceHandler("/webjars/**").addResourceLocations("classpath:/META-INF/resources/webjars/");
}
}