From d8a687741273d121586b83745280c57f7e9d3297 Mon Sep 17 00:00:00 2001
From: XiaoRuby <3114200645@qq.com>
Date: 星期一, 07 八月 2023 17:51:28 +0800
Subject: [PATCH] Merge branch 'master' of https://gitee.com/yuanchu_code/lims-management-system

---
 framework/src/main/java/com/yuanchu/limslaboratory/config/Swagger3.java |  122 ++++++++++++++++++++++++++++++++++++++++
 1 files changed, 122 insertions(+), 0 deletions(-)

diff --git a/framework/src/main/java/com/yuanchu/limslaboratory/config/Swagger3.java b/framework/src/main/java/com/yuanchu/limslaboratory/config/Swagger3.java
new file mode 100644
index 0000000..7e2671f
--- /dev/null
+++ b/framework/src/main/java/com/yuanchu/limslaboratory/config/Swagger3.java
@@ -0,0 +1,122 @@
+package com.yuanchu.limslaboratory.config;
+
+
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import springfox.documentation.builders.ApiInfoBuilder;
+import springfox.documentation.builders.PathSelectors;
+import springfox.documentation.builders.RequestHandlerSelectors;
+import springfox.documentation.oas.annotations.EnableOpenApi;
+import springfox.documentation.service.*;
+import springfox.documentation.spi.DocumentationType;
+import springfox.documentation.spi.service.contexts.SecurityContext;
+import springfox.documentation.spring.web.plugins.Docket;
+
+import java.util.ArrayList;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Set;
+
+@Configuration
+@EnableOpenApi
+public class Swagger3 {
+    // 璺緞http://localhost:8080/doc.html
+    @Value("${swagger.enabled}")
+    private boolean enable;
+
+    private final String swaggerPackage = "com.yuanchu.limslaboratory";
+
+    /**
+     * 娣诲姞鎽樿淇℃伅
+     */
+    private ApiInfo apiInfo() {
+        // 鐢ˋpiInfoBuilder杩涜瀹氬埗
+        return new ApiInfoBuilder()
+                // 璁剧疆鏍囬
+                .title("LIMS绠$悊绯荤粺")
+                // 鎻忚堪
+                .description("LIMS绠$悊绯荤粺")
+                // 浣滆�呬俊鎭�
+                .contact(new Contact("Crunchy", null, null))
+                // 鐗堟湰
+                .version("鐗堟湰鍙�:V.1")
+                //鍗忚
+                .license("The Apache License")
+                //鍗忚url
+                .licenseUrl("http://www.baidu.com")
+                .build();
+    }
+
+    /**
+     * 鍒涘缓API
+     * http:IP:绔彛鍙�/swagger-ui/index.html 鍘熺敓鍦板潃
+     * http:IP:绔彛鍙�/doc.html bootStrap-UI鍦板潃
+     */
+    @Bean
+    public Docket createRestApi() {
+        return new Docket(DocumentationType.OAS_30).pathMapping("/")
+                // 鐢ㄦ潵鍒涘缓璇PI鐨勫熀鏈俊鎭紝灞曠ず鍦ㄦ枃妗g殑椤甸潰涓紙鑷畾涔夊睍绀虹殑淇℃伅锛�
+                .enable(enable)
+                .apiInfo(apiInfo())
+                // 璁剧疆鍝簺鎺ュ彛鏆撮湶缁橲wagger灞曠ず
+                .select()
+                // 鎵弿鎵�鏈夋湁娉ㄨВ鐨刟pi锛岀敤杩欑鏂瑰紡鏇寸伒娲�
+                .apis(RequestHandlerSelectors.withMethodAnnotation(ApiOperation.class))
+
+
+                // 鎵弿鎸囧畾鍖呬腑鐨剆wagger娉ㄨВ
+                .apis(RequestHandlerSelectors.basePackage(swaggerPackage))
+                // 鎵弿鎵�鏈� .apis(RequestHandlerSelectors.any())
+                .paths(PathSelectors.regex("(?!/ApiError.*).*"))
+                .paths(PathSelectors.any())
+                .build()
+                // 鏀寔鐨勯�氳鍗忚闆嗗悎
+                .protocols(newHashSet("https", "http"))
+                .securitySchemes(securitySchemes())
+                .securityContexts(securityContexts());
+    }
+
+    /**
+     * 鏀寔鐨勯�氳鍗忚闆嗗悎
+     * @param type1
+     * @param type2
+     * @return
+     */
+    private Set<String> newHashSet(String type1, String type2){
+        Set<String> set = new HashSet<>();
+        set.add(type1);
+        set.add(type2);
+        return set;
+    }
+
+    /**
+     * 璁よ瘉鐨勫畨鍏ㄤ笂涓嬫枃
+     */
+    private List<SecurityScheme> securitySchemes() {
+        List<SecurityScheme> securitySchemes = new ArrayList<>();
+        securitySchemes.add((SecurityScheme) new ApiKey("token", "token", "header"));
+        return securitySchemes;
+    }
+
+    /**
+     * 鎺堟潈淇℃伅鍏ㄥ眬搴旂敤
+     */
+    private List<SecurityContext> securityContexts() {
+        List<SecurityContext> securityContexts = new ArrayList<>();
+        securityContexts.add(SecurityContext.builder()
+                .securityReferences(defaultAuth())
+                .forPaths(PathSelectors.any()).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;
+    }
+}

--
Gitblit v1.9.3