Explorar el Código

Merge branch 'feature-jump' into 'Test'

Feature jump

See merge request crowd-2019/crowd-test-service-backend!139
郭超 hace 5 años
padre
commit
09ee0707a6

+ 16 - 0
core/pom.xml

@@ -28,6 +28,16 @@
             <groupId>org.powermock</groupId>
             <artifactId>powermock-module-junit4</artifactId>
             <version>1.6.4</version>
+            <exclusions>
+                <exclusion>
+                    <artifactId>javassist</artifactId>
+                    <groupId>org.javassist</groupId>
+                </exclusion>
+                <exclusion>
+                    <artifactId>objenesis</artifactId>
+                    <groupId>org.objenesis</groupId>
+                </exclusion>
+            </exclusions>
         </dependency>
         <dependency>
             <groupId>org.powermock</groupId>
@@ -119,6 +129,12 @@
             <groupId>cn.afterturn</groupId>
             <artifactId>easypoi-base</artifactId>
             <version>3.0.3</version>
+            <exclusions>
+                <exclusion>
+                    <artifactId>guava</artifactId>
+                    <groupId>com.google.guava</groupId>
+                </exclusion>
+            </exclusions>
         </dependency>
         <dependency>
             <groupId>cn.afterturn</groupId>

+ 23 - 1
core/src/test/java/com/mooctest/crowd/domain/repository/CrowdTestProjectRepoTest.java

@@ -3,6 +3,7 @@ package com.mooctest.crowd.domain.repository;
 import com.mooctest.crowd.domain.dao.CrowdTestProjectDao;
 import com.mooctest.crowd.domain.dao.CrowdTestReportDao;
 import com.mooctest.crowd.domain.dao.CrowdTestTaskDao;
+import com.mooctest.crowd.domain.dao.EndPointDao;
 import com.mooctest.crowd.domain.domainobject.*;
 import com.mooctest.crowd.domain.exception.CrowdTestProjectNotExistException;
 import com.mooctest.crowd.domain.model.CrowdTestProjectPO;
@@ -39,6 +40,12 @@ public class CrowdTestProjectRepoTest {
     @Mock
     private CrowdTestReportDao crowdTestReportDao;
 
+    @Mock
+    private EndPointDao endPointDao;
+
+    @Mock
+    private CommonRepo commonRepo;
+
     private CrowdTestProjectPO crowdTestProjectPO = new CrowdTestProjectPO();
     private List<CrowdTestProjectPO> crowdTestProjectPOList = new ArrayList<>();
     private CrowdTestTaskPO crowdTestTaskPO = new CrowdTestTaskPO();
@@ -55,6 +62,8 @@ public class CrowdTestProjectRepoTest {
     private CrowdTestTask crowdTestTask = new CrowdTestTask();
     private List<CrowdTestTask> crowdTestTaskList = new ArrayList<>();
     private List<CrowdTestProject> crowdTestProjectList = new ArrayList<>();
+    private TestType testType = new TestType();
+
 
 
     @Before
@@ -99,6 +108,17 @@ public class CrowdTestProjectRepoTest {
 
         crowdTestTaskPOList.add(crowdTestTaskPO);
 
+        crowdTestTask.setCode("PROR-IOS-TASK-ONE");
+        crowdTestTask.setId(1L);
+        crowdTestTask.setCrowdTestProjectCode(crowdTestProjectPO.getCode());
+        crowdTestTask.setDistributionProvince(crowdTestProjectPO.getDistributionProvince());
+        crowdTestTask.setDistributionCity(crowdTestProjectPO.getDistributionCity());
+        crowdTestTask.setDescription("测试任务一");
+        crowdTestTask.setStatus(0);
+        crowdTestTask.setIsDeleted(0);
+
+        //
+        testType.setType(0);
 
         //测试报告
         crowdTestReportPO.setCode("PROR-IOS-TASK-ONE-REPO-ONE");
@@ -109,6 +129,7 @@ public class CrowdTestProjectRepoTest {
         crowdTestReportPO.setIsDeleted(0);
         crowdTestReportPOList.add(crowdTestReportPO);
 
+
         //项目报告
         crowdTestProjectReportPO.setCode("PROR-IOS");
         crowdTestProjectReportPO.setId(2L);
@@ -214,10 +235,11 @@ public class CrowdTestProjectRepoTest {
 
     @Test
     public void should_return_void_when_save_project(){
-
         //arrange
         when(crowdTestProjectDao.save(crowdTestProjectPO)).thenReturn(crowdTestProjectPO);
         when(crowdTestTaskDao.save(crowdTestTaskPO)).thenReturn(crowdTestTaskPO);
+        when(commonRepo.getTestTypeByAppCode(crowdTestTaskPO.getType())).thenReturn(testType);
+        when(endPointDao.findByTaskCode(crowdTestTask.getCode())).thenReturn(Optional.empty());
         when(crowdTestReportDao.save(crowdTestReportPO)).thenReturn(crowdTestReportPO);
         //action
         crowdTestProjectRepo.saveCrowdTestProject(crowdTestProject);

+ 37 - 1
site/pom.xml

@@ -61,6 +61,20 @@
 			<groupId>com.mooctest.crowd</groupId>
 			<artifactId>core</artifactId>
 			<version>1.0-SNAPSHOT</version>
+			<exclusions>
+				<exclusion>
+					<artifactId>javassist</artifactId>
+					<groupId>org.javassist</groupId>
+				</exclusion>
+				<exclusion>
+					<artifactId>objenesis</artifactId>
+					<groupId>org.objenesis</groupId>
+				</exclusion>
+				<exclusion>
+					<artifactId>guava</artifactId>
+					<groupId>com.google.guava</groupId>
+				</exclusion>
+			</exclusions>
 		</dependency>
 
 		<dependency>
@@ -99,6 +113,12 @@
 			<groupId>cn.afterturn</groupId>
 			<artifactId>easypoi-base</artifactId>
 			<version>3.0.3</version>
+			<exclusions>
+				<exclusion>
+					<artifactId>guava</artifactId>
+					<groupId>com.google.guava</groupId>
+				</exclusion>
+			</exclusions>
 		</dependency>
 		<dependency>
 			<groupId>cn.afterturn</groupId>
@@ -125,6 +145,12 @@
 			<groupId>commons-validator</groupId>
 			<artifactId>commons-validator</artifactId>
 			<version>1.4.1</version>
+			<exclusions>
+				<exclusion>
+					<artifactId>commons-logging</artifactId>
+					<groupId>commons-logging</groupId>
+				</exclusion>
+			</exclusions>
 		</dependency>
 		<!-- kaptcha verification code -->
 		<dependency>
@@ -142,6 +168,17 @@
 			<groupId>org.yaml</groupId>
 			<artifactId>snakeyaml</artifactId>
 		</dependency>
+
+		<dependency>
+			<groupId>io.springfox</groupId>
+			<artifactId>springfox-swagger2</artifactId>
+			<version>2.9.2</version>
+		</dependency>
+		<dependency>
+			<groupId>io.springfox</groupId>
+			<artifactId>springfox-swagger-ui</artifactId>
+			<version>2.9.2</version>
+		</dependency>
 	</dependencies>
 	<build>
 		<plugins>
@@ -151,5 +188,4 @@
 			</plugin>
 		</plugins>
 	</build>
-
 </project>

+ 143 - 0
site/src/main/java/com/mooctest/crowd/site/configuration/Swagger2Configuration.java

@@ -0,0 +1,143 @@
+package com.mooctest.crowd.site.configuration;
+
+/**
+ * @author guochao
+ * @date 2020-08-11 10:09
+ */
+
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Conditional;
+import org.springframework.context.annotation.Configuration;
+import springfox.documentation.builders.ApiInfoBuilder;
+import springfox.documentation.builders.PathSelectors;
+import springfox.documentation.builders.RequestHandlerSelectors;
+import springfox.documentation.service.*;
+import springfox.documentation.spi.DocumentationType;
+import springfox.documentation.spi.service.contexts.SecurityContext;
+import springfox.documentation.spring.web.plugins.Docket;
+import springfox.documentation.swagger2.annotations.EnableSwagger2;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * Swagger使用的配置文件
+ */
+@Conditional(SwaggerEnableCondition.class)
+@Configuration
+@EnableSwagger2
+public class Swagger2Configuration {
+//    @Bean
+//    public Docket createRestApi(){
+//        return new Docket(DocumentationType.SWAGGER_2)
+//                .apiInfo(apiInfo())
+//                .select()
+//                .apis(RequestHandlerSelectors.withClassAnnotation(Api.class))
+//                .paths(PathSelectors.any())
+//                .build();
+//    }
+//
+//    //基本信息的配置,信息会在api文档上显示
+//    private ApiInfo apiInfo(){
+//        return new ApiInfoBuilder()
+//                .title("群智平台后端接口文档")
+//                .description("群智平台后端接口的文档")
+//                .termsOfServiceUrl("http://localhost:8080/api/hello")
+//                .version("1.0")
+//                .build();
+//    }
+
+//    @Bean
+//    public Docket customDocket(){
+//        ParameterBuilder ticketPar = new ParameterBuilder();
+//        List<Parameter> pars = new ArrayList<Parameter>();
+//        ticketPar.name("Cookie").description("认证cookie")
+//                .modelRef(new ModelRef("string")).parameterType("header")
+//                .required(false).build(); //header中的ticket参数非必填,传空也可以
+//        pars.add(ticketPar.build());    //根据每个方法名也知道当前方法在设置什么参数
+//
+//        return new Docket(DocumentationType.SWAGGER_2)
+//                .select()
+//                .apis(RequestHandlerSelectors.any())
+//                .build()
+//                .globalOperationParameters(pars)
+//                .apiInfo(apiInfo());
+//    }
+//
+//    //构建 api文档的详细信息函数,注意这里的注解引用的是哪个
+//    private ApiInfo apiInfo() {
+//        return new ApiInfoBuilder()
+//                //页面标题
+//                .title("demo")
+//                //创建人
+//                .contact(new Contact("demo", "", ""))
+//                //版本号
+//                .version("1.0")
+//                //描述
+//                .description("demo REST API")
+//                .build();
+//    }
+
+
+
+    /* Docket,一个代表了一组API,没有配置组名则为默认组 */
+    @Bean
+    public Docket createRestApi() {
+        return new Docket(DocumentationType.SWAGGER_2)
+                .groupName("task")
+                .apiInfo(apiInfo())
+                .select()
+                .apis(RequestHandlerSelectors.basePackage("com.mooctest.crowd.site.controller"))
+                .paths(PathSelectors.any())
+                .build()
+                /* 设置安全模式,swagger可以设置访问token */
+                .securitySchemes(securitySchemes())
+                .securityContexts(securityContexts());
+    }
+
+    /* API信息 */
+    private ApiInfo apiInfo() {
+
+        /* 联系人 */
+        Contact contact = new Contact("ChaoGuo","https://github.com/crayon-shin-chan","1021172957@qq.com");
+        return new ApiInfoBuilder()
+                /* API标题 */
+                .title("群智平台API文档")
+                /* API描述 */
+                .description("简单优雅的restful风格")
+                /* 版本 */
+                .version("1.0")
+                /* 许可 */
+                .license("Apache License")
+                .contact(contact)
+                .build();
+    }
+
+    /* 安全模式,这里指定token通过Authorization头请求头传递 */
+    private List<ApiKey> securitySchemes() {
+        List<ApiKey> apiKeyList= new ArrayList<>();
+        apiKeyList.add(new ApiKey("Cookie", "apiKey", "header"));
+        return apiKeyList;
+    }
+
+    /* 安全上下文 */
+    private List<SecurityContext> securityContexts() {
+        List<SecurityContext> securityContexts=new ArrayList<>();
+        securityContexts.add(
+                SecurityContext.builder()
+                        .securityReferences(defaultAuth())
+                        .forPaths(PathSelectors.any())
+                        .build());
+        return securityContexts;
+    }
+
+    /* 默认的安全引用 */
+    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("Cookie", authorizationScopes));
+        return securityReferences;
+    }
+}

+ 18 - 0
site/src/main/java/com/mooctest/crowd/site/configuration/SwaggerEnableCondition.java

@@ -0,0 +1,18 @@
+package com.mooctest.crowd.site.configuration;
+
+import org.springframework.context.annotation.Condition;
+import org.springframework.context.annotation.ConditionContext;
+import org.springframework.core.type.AnnotatedTypeMetadata;
+
+
+/**
+ * @author guochao
+ * @date 2020-08-19 21:44
+ */
+public class SwaggerEnableCondition implements Condition {
+    @Override
+    public boolean matches(ConditionContext context, AnnotatedTypeMetadata metadata) {
+        String active = context.getEnvironment().getProperty("spring.profiles.active");
+        return "dev-localhost".equals(active) || "pre".equals(active);
+    }
+}

+ 2 - 0
site/src/main/java/com/mooctest/crowd/site/controller/AgencyController.java

@@ -16,6 +16,7 @@ import com.mooctest.crowd.site.data.vo.SearchConditionVO;
 import com.mooctest.crowd.site.service.AgencyService;
 import com.mooctest.crowd.site.service.ResidentAgencyService;
 import com.mooctest.crowd.site.util.DataUtils;
+import io.swagger.annotations.Api;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.data.domain.Page;
 import org.springframework.data.domain.Pageable;
@@ -32,6 +33,7 @@ import java.util.List;
  */
 @RestController
 @RequestMapping("/api")
+@Api(tags = "机构相关接口", description = "提供企业认证、查看企业信息相关的 Rest API")
 public class AgencyController extends BaseSearchController {
 
     @Autowired

La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 0 - 0
site/src/main/java/com/mooctest/crowd/site/controller/CommonController.java


+ 2 - 3
site/src/main/java/com/mooctest/crowd/site/controller/CrowTestSquareController.java

@@ -7,11 +7,11 @@ import com.mooctest.crowd.site.data.vo.CrowdProjectVO;
 import com.mooctest.crowd.site.data.vo.CrowdTaskVO;
 import com.mooctest.crowd.site.data.vo.CrowdTestProjectVO;
 import com.mooctest.crowd.site.data.vo.SearchConditionVO;
-import com.mooctest.crowd.site.service.CommonService;
 import com.mooctest.crowd.site.service.CrowdProjectService;
 import com.mooctest.crowd.site.service.CrowdTaskService;
 import com.mooctest.crowd.site.service.CrowdTestSquareService;
 import com.mooctest.crowd.site.util.DataUtils;
+import io.swagger.annotations.Api;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.data.domain.Page;
 import org.springframework.data.domain.Pageable;
@@ -28,6 +28,7 @@ import java.util.List;
 
 @RestController
 @RequestMapping("/api/square")
+@Api(tags = "众测广场相关接口", description = "提供众测广场相关的 Rest API")
 public class CrowTestSquareController extends BaseSearchController {
 
     @Autowired
@@ -35,8 +36,6 @@ public class CrowTestSquareController extends BaseSearchController {
     @Autowired
     private CrowdTaskService crowdTaskService;
     @Autowired
-    private CommonService commonService;
-    @Autowired
     private CrowdTestSquareService crowdTestSquareService;
 
 

+ 10 - 1
site/src/main/java/com/mooctest/crowd/site/controller/CrowdProjectController.java

@@ -10,6 +10,8 @@ import com.mooctest.crowd.site.data.dto.ProjectDetailsDTO;
 import com.mooctest.crowd.site.data.vo.RegionalManagerVO;
 import com.mooctest.crowd.site.service.CrowdProjectService;
 import com.mooctest.crowd.site.util.FileUtil;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.validation.BindingResult;
@@ -28,6 +30,7 @@ import java.util.List;
  */
 @Slf4j
 @RestController
+@Api(tags = "项目相关接口", description = "提供项目相关的 Rest API")
 public class CrowdProjectController{
 
     @Autowired
@@ -40,8 +43,14 @@ public class CrowdProjectController{
      * @return
      */
     @RequestMapping(value = "/api/project/", method = RequestMethod.POST)
+    @ApiOperation(value = "创建项目接口", notes = "创建项目")
     public ProjectDetailsDTO createProject(@Validated @RequestBody CrowdTestProjectCommand crowdTestProjectCommand, BindingResult result,HttpSession session){
-        long  userId=Long.parseLong((String) session.getAttribute("userId"));
+        long userId;
+        try{
+            userId = Long.parseLong((String) session.getAttribute("userId"));
+        }catch (Exception e){
+            throw new BaseException("未登录,请先登录");
+        }
 
         if (result.hasErrors()) {
             throw new BaseException(result.getFieldErrors().toString());

+ 16 - 4
site/src/main/java/com/mooctest/crowd/site/controller/CrowdReportController.java

@@ -4,6 +4,7 @@ import com.mooctest.crowd.domain.exception.BaseException;
 import com.mooctest.crowd.site.command.CrowdTestReportCommand;
 import com.mooctest.crowd.site.data.dto.ReportDetailsDTO;
 import com.mooctest.crowd.site.service.CrowdReportService;
+import io.swagger.annotations.Api;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.validation.BindingResult;
@@ -20,6 +21,7 @@ import javax.servlet.http.HttpSession;
 @Slf4j
 @RestController
 @RequestMapping("/api")
+@Api(tags = "报告相关接口", description = "提供报告相关的 Rest API")
 public class CrowdReportController {
 
     @Autowired
@@ -30,7 +32,7 @@ public class CrowdReportController {
                                           @PathVariable("taskCode") String taskCode,
                                           @PathVariable("reportCode") String reportCode,
                                           HttpSession session){
-        long userId = Long.parseLong((String) session.getAttribute("userId"));
+        long userId = getUserFromSession(session);
         return reportService.getTaskReport(projectCode, taskCode, reportCode, userId);
     }
 
@@ -42,7 +44,8 @@ public class CrowdReportController {
         log.info("projectCode: " + projectCode + ", taskCode: "+taskCode);
         if (result.hasErrors())
             throw new BaseException(result.getFieldError().getDefaultMessage());
-        return reportService.createTaskReport(projectCode, taskCode, command, Long.parseLong((String) session.getAttribute("userId")));
+        long userId = getUserFromSession(session);
+        return reportService.createTaskReport(projectCode, taskCode, command, userId);
     }
 
     @RequestMapping(value = "/project/{projectCode}/task/{taskCode}/report/{reportCode}", method = RequestMethod.PUT)
@@ -54,7 +57,8 @@ public class CrowdReportController {
         log.info("projectCode: " + projectCode + ", taskCode: "+taskCode);
         if (result.hasErrors())
             throw new BaseException(result.getFieldError().getDefaultMessage());
-        return reportService.updateTaskReport(projectCode, taskCode, reportCode, command, Long.parseLong((String) session.getAttribute("userId")));
+        long userId = getUserFromSession(session);
+        return reportService.updateTaskReport(projectCode, taskCode, reportCode, command, userId);
     }
 
     @RequestMapping(value = "/project/{projectCode}/task/{taskCode}/report/{reportCode}", method = RequestMethod.DELETE)
@@ -98,5 +102,13 @@ public class CrowdReportController {
         return reportService.updatePorjctReport(projectCode, reportCode, command);
     }
 
-
+    public long getUserFromSession(HttpSession session) {
+        long userId;
+        try {
+            userId = Long.parseLong((String) session.getAttribute("userId"));
+        } catch (Exception e) {
+            throw new BaseException("未登录,请先登录");
+        }
+        return userId;
+    }
 }

+ 2 - 0
site/src/main/java/com/mooctest/crowd/site/controller/CrowdTaskController.java

@@ -7,6 +7,7 @@ import com.mooctest.crowd.site.command.CrowdTestTaskCommand;
 import com.mooctest.crowd.site.data.dto.TaskDetailsDTO;
 import com.mooctest.crowd.site.data.dto.TaskSquareDTO;
 import com.mooctest.crowd.site.service.CrowdTaskService;
+import io.swagger.annotations.Api;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.validation.BindingResult;
@@ -23,6 +24,7 @@ import javax.servlet.http.HttpSession;
 @Slf4j
 @RestController
 @RequestMapping("/api")
+@Api(tags = "任务相关接口", description = "提供任务相关的 Rest API")
 public class CrowdTaskController{
 
     @Autowired

+ 1 - 1
site/src/main/java/com/mooctest/crowd/site/controller/EnumsController.java

@@ -1 +1 @@
-
package com.mooctest.crowd.site.controller;

import com.mooctest.crowd.site.data.vo.ApplicationTypeVO;
import com.mooctest.crowd.site.data.vo.FieldVO;
import com.mooctest.crowd.site.data.vo.TestTypeVO;
import com.mooctest.crowd.site.service.EnumsService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;

import javax.servlet.http.HttpServletRequest;
import java.util.List;

/**
 * @Author: guochao
 * @Date: 2020.7.9 22:33
 */
@RestController
@RequestMapping("/api")
public class EnumsController {

    @Autowired
    private EnumsService enumsService;

    /**
     * 获取所有领域类型
     * @return
     */
    @RequestMapping(value = "/list/filed", method = RequestMethod.GET)
    public List<FieldVO> getAllField(HttpServletRequest request) {
        return enumsService.getAllField();
    }

    /**
     * 获取所有应用类型
     * @return
     */
    @RequestMapping(value = "/list/application", method = RequestMethod.GET)
    public List<ApplicationTypeVO> getAllApplicationType(HttpServletRequest request) {
        return enumsService.getAllApplicationType();
    }

    /**
     * 获取所有服务类型
     * @return
     */
    @RequestMapping(value = "/list/type", method = RequestMethod.GET)
    public List<TestTypeVO> getAllType(HttpServletRequest request) {
        return enumsService.getAllType();
    }
}
+
package com.mooctest.crowd.site.controller;

import com.mooctest.crowd.site.data.vo.ApplicationTypeVO;
import com.mooctest.crowd.site.data.vo.FieldVO;
import com.mooctest.crowd.site.data.vo.TestTypeVO;
import com.mooctest.crowd.site.service.EnumsService;
import io.swagger.annotations.Api;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;

import javax.servlet.http.HttpServletRequest;
import java.util.List;

/**
 * @Author: guochao
 * @Date: 2020.7.9 22:33
 */
@RestController
@RequestMapping("/api")
@Api(tags = "枚举类型相关接口", description = "提供领域类型、应用类型、测试类型的 Rest API")
public class EnumsController {

    @Autowired
    private EnumsService enumsService;

    /**
     * 获取所有领域类型
     * @return
     */
    @RequestMapping(value = "/list/filed", method = RequestMethod.GET)
    public List<FieldVO> getAllField(HttpServletRequest request) {
        return enumsService.getAllField();
    }

    /**
     * 获取所有应用类型
     * @return
     */
    @RequestMapping(value = "/list/application", method = RequestMethod.GET)
    public List<ApplicationTypeVO> getAllApplicationType(HttpServletRequest request) {
        return enumsService.getAllApplicationType();
    }

    /**
     * 获取所有测试类型
     * @return
     */
    @RequestMapping(value = "/list/type", method = RequestMethod.GET)
    public List<TestTypeVO> getAllType(HttpServletRequest request) {
        return enumsService.getAllType();
    }
}

+ 2 - 0
site/src/main/java/com/mooctest/crowd/site/controller/PersonalDataController.java

@@ -7,12 +7,14 @@ import com.mooctest.crowd.site.data.vo.BankCardVO;
 import com.mooctest.crowd.site.data.vo.QualificationVO;
 import com.mooctest.crowd.site.data.vo.UserVO;
 import com.mooctest.crowd.site.service.PersonalDataService;
+import io.swagger.annotations.Api;
 import org.codehaus.jettison.json.JSONException;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 
 @RestController
 @RequestMapping("/api/personal")
+@Api(tags = "个人资料相关接口", description = "提供个人信息、我的资质、我的银行卡相关的 Rest API")
 public class PersonalDataController {
 
     @Autowired

+ 2 - 0
site/src/main/java/com/mooctest/crowd/site/controller/TechnicalArticlesController.java

@@ -6,6 +6,7 @@ import com.mooctest.crowd.site.data.response.ResponseVO;
 import com.mooctest.crowd.site.data.response.ServerCode;
 import com.mooctest.crowd.site.data.vo.SearchConditionVO;
 import com.mooctest.crowd.site.service.TechnicalArticlesService;
+import io.swagger.annotations.Api;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.data.domain.Page;
 import org.springframework.data.domain.PageRequest;
@@ -23,6 +24,7 @@ import java.util.Map;
  */
 @RestController
 @RequestMapping("/api/technical")
+@Api(tags = "众测技术相关接口", description = "提供众测技术相关的 Rest API")
 public class TechnicalArticlesController extends BaseSearchController{
 
     @Autowired

+ 2 - 0
site/src/main/java/com/mooctest/crowd/site/controller/UploadController.java

@@ -1,6 +1,7 @@
 package com.mooctest.crowd.site.controller;
 
 import com.mooctest.crowd.site.service.UploadService;
+import io.swagger.annotations.Api;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.PathVariable;
 import org.springframework.web.bind.annotation.RequestMapping;
@@ -15,6 +16,7 @@ import org.springframework.web.multipart.MultipartFile;
  */
 @RestController
 @RequestMapping("/api/files")
+@Api(tags = "上传相关接口", description = "提供上传相关的 Rest API")
 public class UploadController {
 
     @Autowired

+ 7 - 0
site/src/main/java/com/mooctest/crowd/site/controller/UserController.java

@@ -17,6 +17,7 @@ import com.mooctest.crowd.site.service.EnterpriseAuthService;
 import com.mooctest.crowd.site.service.PersonalAuthService;
 import com.mooctest.crowd.site.service.UserService;
 import com.mooctest.crowd.site.util.DataUtils;
+import io.swagger.annotations.Api;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.validation.BindingResult;
 import org.springframework.validation.annotation.Validated;
@@ -33,6 +34,7 @@ import java.util.List;
  * @Email: 171256175@qq.com
  * @date 2019-07-24 23:50
  */
+@Api(tags = "用户相关接口", description = "提供用户相关、个人认证的 Rest API")
 @RestController
 @RequestMapping("/api")
 public class UserController extends BaseController{
@@ -45,6 +47,11 @@ public class UserController extends BaseController{
     @Autowired
     private UserService userService;
 
+    @RequestMapping(value = "/hello", method = RequestMethod.GET)
+    public String hello() {
+        return "hello";
+    }
+
     @RequestMapping(value = "/user", method = RequestMethod.POST)
     public UserDTO register(@Validated RegisterCommand registerCommand, BindingResult result) {
         if (result.hasErrors())

Algunos archivos no se mostraron porque demasiados archivos cambiaron en este cambio