54 changed files with 278 additions and 156 deletions
-
1.idea/xm-backend.iml
-
3xm-bootstrap/xm-bootstrap.iml
-
17xm-core/pom.xml
-
2xm-core/src/main/java/com/xm/core/ctrl/XmAttachmentController.java
-
6xm-core/src/main/java/com/xm/core/ctrl/XmBranchStateController.java
-
2xm-core/src/main/java/com/xm/core/ctrl/XmBranchTaskTypeStateController.java
-
2xm-core/src/main/java/com/xm/core/ctrl/XmEnvListController.java
-
2xm-core/src/main/java/com/xm/core/ctrl/XmExchangeController.java
-
2xm-core/src/main/java/com/xm/core/ctrl/XmFileController.java
-
2xm-core/src/main/java/com/xm/core/ctrl/XmGroupController.java
-
2xm-core/src/main/java/com/xm/core/ctrl/XmGroupStateController.java
-
2xm-core/src/main/java/com/xm/core/ctrl/XmGroupUserController.java
-
4xm-core/src/main/java/com/xm/core/ctrl/XmIterationController.java
-
2xm-core/src/main/java/com/xm/core/ctrl/XmIterationMenuController.java
-
2xm-core/src/main/java/com/xm/core/ctrl/XmIterationStateController.java
-
2xm-core/src/main/java/com/xm/core/ctrl/XmMenuController.java
-
2xm-core/src/main/java/com/xm/core/ctrl/XmMenuExchangeController.java
-
2xm-core/src/main/java/com/xm/core/ctrl/XmMenuPlanController.java
-
2xm-core/src/main/java/com/xm/core/ctrl/XmMenuStateController.java
-
2xm-core/src/main/java/com/xm/core/ctrl/XmMyFocusController.java
-
2xm-core/src/main/java/com/xm/core/ctrl/XmPhaseController.java
-
2xm-core/src/main/java/com/xm/core/ctrl/XmPhaseMenuController.java
-
4xm-core/src/main/java/com/xm/core/ctrl/XmProductController.java
-
2xm-core/src/main/java/com/xm/core/ctrl/XmProductStateController.java
-
2xm-core/src/main/java/com/xm/core/ctrl/XmProjectContractController.java
-
2xm-core/src/main/java/com/xm/core/ctrl/XmProjectController.java
-
2xm-core/src/main/java/com/xm/core/ctrl/XmProjectEnvListController.java
-
2xm-core/src/main/java/com/xm/core/ctrl/XmProjectKpiController.java
-
2xm-core/src/main/java/com/xm/core/ctrl/XmProjectKpiHisController.java
-
4xm-core/src/main/java/com/xm/core/ctrl/XmProjectMBudgetCostNouserController.java
-
4xm-core/src/main/java/com/xm/core/ctrl/XmProjectMBudgetCostUserController.java
-
4xm-core/src/main/java/com/xm/core/ctrl/XmProjectMCostNouserController.java
-
4xm-core/src/main/java/com/xm/core/ctrl/XmProjectMCostUserController.java
-
2xm-core/src/main/java/com/xm/core/ctrl/XmProjectOptionsController.java
-
4xm-core/src/main/java/com/xm/core/ctrl/XmProjectStateController.java
-
2xm-core/src/main/java/com/xm/core/ctrl/XmProjectStateHisController.java
-
2xm-core/src/main/java/com/xm/core/ctrl/XmProjectTaskTypeStateController.java
-
2xm-core/src/main/java/com/xm/core/ctrl/XmQuestionController.java
-
2xm-core/src/main/java/com/xm/core/ctrl/XmQuestionHandleController.java
-
2xm-core/src/main/java/com/xm/core/ctrl/XmQuestionTagController.java
-
2xm-core/src/main/java/com/xm/core/ctrl/XmRecordController.java
-
143xm-core/src/main/java/com/xm/core/ctrl/XmTaskController.java
-
4xm-core/src/main/java/com/xm/core/ctrl/XmTaskExecuserController.java
-
2xm-core/src/main/java/com/xm/core/ctrl/XmTaskSkillController.java
-
2xm-core/src/main/java/com/xm/core/ctrl/XmTestCaseController.java
-
2xm-core/src/main/java/com/xm/core/ctrl/XmTestCaseExecController.java
-
19xm-core/src/main/java/com/xm/core/ctrl/ZZZController.java
-
1xm-core/src/main/java/com/xm/core/service/XmTaskService.java
-
4xm-core/src/main/resources/application-dev.properties
-
2xm-core/src/main/resources/application.properties
-
92xm-core/src/test/java/com/xm/SwaggerConfig.java
-
12xm-core/src/test/java/com/xm/WebSecurityConfig.java
-
2xm-core/src/test/java/com/xm/XmApplication.java
-
34xm-core/xm-core.iml
@ -0,0 +1,19 @@ |
|||||
|
package com.xm.core.ctrl; |
||||
|
|
||||
|
import io.swagger.annotations.Api; |
||||
|
import org.springframework.web.bind.annotation.GetMapping; |
||||
|
import org.springframework.web.bind.annotation.RequestMapping; |
||||
|
import org.springframework.web.bind.annotation.RestController; |
||||
|
|
||||
|
/** |
||||
|
* 如果系统最后一个加载的接口加了@ApiGlobalModel/@ApiJsonModel/@ApiSimpleModel,这个接口动态生成的参数在swagger文档里将找不到 |
||||
|
* 出现这种情况就加上这个Controller,保证这个Controller是最后一个Controller => 保证最后一个接口没有使用以上3个注解 |
||||
|
*/ |
||||
|
@RestController |
||||
|
@RequestMapping("/whatever") |
||||
|
@Api(tags = "whatever") |
||||
|
public class ZZZController { |
||||
|
@GetMapping("/whatever") |
||||
|
public void whatever() { |
||||
|
} |
||||
|
} |
||||
@ -0,0 +1,92 @@ |
|||||
|
package com.xm; |
||||
|
|
||||
|
import io.swagger.annotations.Api; |
||||
|
import org.springframework.beans.factory.annotation.Value; |
||||
|
import org.springframework.context.annotation.Bean; |
||||
|
import org.springframework.context.annotation.Configuration; |
||||
|
import springfox.documentation.service.SecurityReference; |
||||
|
import springfox.documentation.builders.ApiInfoBuilder; |
||||
|
import springfox.documentation.builders.RequestHandlerSelectors; |
||||
|
import springfox.documentation.service.ApiInfo; |
||||
|
import springfox.documentation.service.ApiKey; |
||||
|
import springfox.documentation.service.Contact; |
||||
|
import springfox.documentation.service.AuthorizationScope; |
||||
|
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; |
||||
|
|
||||
|
/** |
||||
|
* api 文档, |
||||
|
* 生产环境需要禁止访问 |
||||
|
* |
||||
|
* 需要将下面路径放到 WebSecurityConfig 中 |
||||
|
* |
||||
|
* "/swagger-ui.html", |
||||
|
* "/webjars/**", |
||||
|
* "/swagger-ui/**", |
||||
|
* "/swagger-resources/**", |
||||
|
* "/v2/*", |
||||
|
* "/csrf", |
||||
|
* "/" |
||||
|
*/ |
||||
|
//@ConditionalOnProperty(havingValue = "dev",name = {"spring.profiles.active"}) |
||||
|
@Configuration |
||||
|
@EnableSwagger2 |
||||
|
public class SwaggerConfig { |
||||
|
@Value(value = "${spring.application.name:}") |
||||
|
String applicationName=""; |
||||
|
|
||||
|
@Value(value = "${spring.application.name:}") |
||||
|
String springProfilesActive=""; |
||||
|
|
||||
|
@Value(value = "${server.port:}") |
||||
|
String serverPort=""; |
||||
|
|
||||
|
@Bean |
||||
|
public Docket customDocket() { |
||||
|
Docket docket= new Docket(DocumentationType.SWAGGER_2).select(). |
||||
|
apis(RequestHandlerSelectors.any()) |
||||
|
.build() |
||||
|
.apiInfo(apiInfo()).enable(true); |
||||
|
|
||||
|
/* |
||||
|
* 下面的语句是开启对JWT的支持,当用户用Swagger调用受JWT认证保护的方法, |
||||
|
* 必须要先提交参数(例如令牌) |
||||
|
*/ |
||||
|
//存储用户必须提交的参数 |
||||
|
List<ApiKey> apikey = new ArrayList(); |
||||
|
//规定用户需要输入什么参数 |
||||
|
apikey.add(new ApiKey("token", "token", "token")); |
||||
|
docket.securitySchemes(apikey); |
||||
|
|
||||
|
//以下定义如果用户JWT认证通过,则在Swagger中全局有效 |
||||
|
AuthorizationScope scope = new AuthorizationScope("global", "accessEverything"); |
||||
|
AuthorizationScope[] scopeArray = {scope}; |
||||
|
//存储令牌和作用域 |
||||
|
SecurityReference reference = new SecurityReference("token", scopeArray); |
||||
|
List refList = new ArrayList(); |
||||
|
refList.add(reference); |
||||
|
SecurityContext context = SecurityContext.builder().securityReferences(refList).build(); |
||||
|
List cxtList = new ArrayList(); |
||||
|
cxtList.add(context); |
||||
|
docket.securityContexts(cxtList); |
||||
|
return docket; |
||||
|
} |
||||
|
|
||||
|
|
||||
|
private ApiInfo apiInfo() { |
||||
|
Contact contact = new Contact("擎勤科技", String.format("http://localhost:%s/swagger-ui.html",serverPort), "cyc58469@163.com"); |
||||
|
return new ApiInfoBuilder() |
||||
|
.title("唛盟项目核心接口") |
||||
|
.description("接口文档") |
||||
|
.contact(contact) |
||||
|
.version("1.0.0") |
||||
|
.build(); |
||||
|
} |
||||
|
|
||||
|
|
||||
|
} |
||||
Write
Preview
Loading…
Cancel
Save
Reference in new issue