Browse Source

Merge branch 'dev' into wph

370774330@qq.com 5 năm trước cách đây
mục cha
commit
2fbb249ccc

+ 8 - 0
web/pom.xml

@@ -22,7 +22,15 @@
     </properties>
 
     <dependencies>
+        <!-- Swagger -->
+        <!-- https://mvnrepository.com/artifact/io.springfox/springfox-boot-starter -->
+        <dependency>
+            <groupId>io.springfox</groupId>
+            <artifactId>springfox-boot-starter</artifactId>
+            <version>3.0.0</version>
+        </dependency>
 
+        <!-- END Swagger -->
         <dependency>
             <groupId>org.springframework.boot</groupId>
             <artifactId>spring-boot-starter-thymeleaf</artifactId>

+ 2 - 6
web/src/main/java/seecoder/devcloud/web/DevcloudWebApplication.java

@@ -1,13 +1,10 @@
 package seecoder.devcloud.web;
 
 import org.springframework.boot.SpringApplication;
-import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
 import org.springframework.boot.autoconfigure.SpringBootApplication;
-import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;
 import org.springframework.context.annotation.ComponentScan;
 import org.springframework.scheduling.annotation.EnableAsync;
 import org.springframework.scheduling.annotation.EnableScheduling;
-import seecoder.devcloud.web.vo.Response;
 
 import java.time.ZoneId;
 import java.util.TimeZone;
@@ -15,14 +12,13 @@ import java.util.TimeZone;
 
 @EnableScheduling
 @EnableAsync
-@SpringBootApplication(exclude={DataSourceAutoConfiguration.class})
-@ComponentScan({"seecoder.devcloud.web","seecoder.devcloud.api","seecoder.devcloud.common"})
+@SpringBootApplication
+@ComponentScan({"seecoder.devcloud.api","seecoder.devcloud.common","seecoder.devcloud.web"})
 public class DevcloudWebApplication {
 
     public static void main(String[] args) {
         // 强制写入默认时区
         TimeZone.setDefault(TimeZone.getTimeZone(ZoneId.of("GMT+8")));
         SpringApplication.run(DevcloudWebApplication.class, args);
-
     }
 }

+ 71 - 0
web/src/main/java/seecoder/devcloud/web/config/SwaggerConfig.java

@@ -0,0 +1,71 @@
+package seecoder.devcloud.web.config;
+
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.http.ResponseEntity;
+import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
+import springfox.boot.starter.autoconfigure.SpringfoxConfigurationProperties;
+import springfox.documentation.builders.ApiInfoBuilder;
+import springfox.documentation.builders.PathSelectors;
+import springfox.documentation.oas.annotations.EnableOpenApi;
+import springfox.documentation.service.ApiInfo;
+import springfox.documentation.spi.DocumentationType;
+import springfox.documentation.spring.web.plugins.Docket;
+import springfox.documentation.swagger2.annotations.EnableSwagger2;
+import springfox.documentation.swagger2.annotations.EnableSwagger2WebMvc;
+
+import java.util.function.Predicate;
+
+import static springfox.documentation.builders.PathSelectors.regex;
+
+/**
+ * @author PuHong Weng
+ * @date 2021/2/3
+ * @description:
+ */
+@Configuration
+@EnableOpenApi
+public class SwaggerConfig{
+
+
+    private ApiInfo initApiInfo() {
+        return new ApiInfoBuilder()
+                .title("seecoder devcloud项目 Platform API")//大标题
+                .description(initContextInfo())//简单的描述
+                .version("0.0.1")//版本
+                .build();
+    }
+
+    private String initContextInfo() {
+        StringBuffer sb = new StringBuffer();
+        sb.append("Devclound API");
+        return sb.toString();
+    }
+
+
+    @Bean
+    public Docket restfulApi() {
+        return new Docket(DocumentationType.OAS_30)
+                .apiInfo(initApiInfo())
+                .select()
+                //.paths(doFilteringRules())
+                .paths(PathSelectors.any())
+                .build();
+
+    }
+
+    /**
+     * 有些重要api可能不想在swagger网页里展示,在这里可以过滤
+     * 设置过滤规则
+     * 这里的过滤规则支持正则匹配
+     * @return
+     */
+//    private Predicate<String> doFilteringRules() {
+//        return or(
+//                regex("/hello.*"),
+//                regex("/vehicles.*")
+//        );
+//    }
+
+}

+ 33 - 0
web/src/main/java/seecoder/devcloud/web/controller/gitlab/HookController.java

@@ -0,0 +1,33 @@
+package seecoder.devcloud.web.controller.gitlab;
+
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+import seecoder.devcloud.web.vo.GitWebHookVO;
+
+/**
+ * @author chenyz
+ * @date 2021/2/4
+ * @description: 与GitLab进行交互的接口
+ */
+@Api(tags = "GitLab Hook API")
+@RestController
+@RequestMapping("/hook")
+public class HookController {
+
+    /**
+     * @author chenyz
+     * @date 2021/2/4
+     * @description: 此接口挂载在webhooks的push回调中
+     */
+    @ApiOperation("push回调接口")
+    @PostMapping("/push")
+    public void pushHook(@RequestBody GitWebHookVO gitWebHookVO)
+    {
+        System.out.println(gitWebHookVO);
+        // todo:提取commit信息并进行处理
+    }
+}

+ 2 - 1
web/src/main/java/seecoder/devcloud/web/vo/ResponseEnums.java → web/src/main/java/seecoder/devcloud/web/enums/ResponseEnums.java

@@ -1,4 +1,4 @@
-package seecoder.devcloud.web.vo;
+package seecoder.devcloud.web.enums;
 
 import lombok.AllArgsConstructor;
 import lombok.Data;
@@ -21,6 +21,7 @@ public enum ResponseEnums {
     private String code;
     private String msg;
 
+
     ResponseEnums(String code, String msg) {
         this.code = code;
         this.msg = msg;

+ 77 - 0
web/src/main/java/seecoder/devcloud/web/vo/GitWebHookVO.java

@@ -0,0 +1,77 @@
+package seecoder.devcloud.web.vo;
+
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import lombok.ToString;
+
+import java.util.List;
+
+@Data
+@ToString
+public class GitWebHookVO {
+    private String object_kind;
+    private String before;
+    private String after;
+    private String ref;
+    private String checkout_sha;
+    private Integer user_id;
+    private String user_name;
+    private String user_username;
+    private String user_email;
+    private String user_avatar;
+    private Integer project_id;
+    private Project project;
+    private Repository repository;
+    private List<Commit> commits;
+    private Integer total_commits_count;
+
+    @Data
+    @NoArgsConstructor
+    static class Project{
+        private Integer id;
+        private String name;
+        private String description;
+        private String web_url;
+        private String avatar_url;
+        private String git_ssh_url;
+        private String git_http_url;
+        private String namespace;
+        private Integer visibility_level;
+        private String path_with_namespace;
+        private String default_branch;
+        private String homepage;
+        private String url;
+        private String ssh_url;
+        private String http_url;
+    }
+    @Data
+    @NoArgsConstructor
+    static class Repository{
+        private String name;
+        private String url;
+        private String description;
+        private String homepage;
+        private String git_http_url;
+        private String git_ssh_url;
+        private Integer visibility_level;
+    }
+    @Data
+    @NoArgsConstructor
+    static class Commit{
+        private String id;
+        private String message;
+        private String title;
+        private String timestamp;
+        private String url;
+        private Author author;
+        private List<String> added;
+        private List<String> modified;
+        private List<String> removed;
+    }
+    @Data
+    @NoArgsConstructor
+    static class Author{
+        private String name;
+        private String email;
+    }
+}

+ 1 - 0
web/src/main/java/seecoder/devcloud/web/vo/Response.java

@@ -3,6 +3,7 @@ package seecoder.devcloud.web.vo;
 import lombok.AllArgsConstructor;
 import lombok.Data;
 import lombok.NoArgsConstructor;
+import seecoder.devcloud.web.enums.ResponseEnums;
 
 import java.io.Serializable;