diff --git a/pom.xml b/pom.xml
index 88f570e..a6615de 100644
--- a/pom.xml
+++ b/pom.xml
@@ -21,6 +21,7 @@
suimangSchedule
suimangMQConsumer
open-api
+ suimang-swagger
@@ -186,21 +187,21 @@
-
- io.springfox
- springfox-swagger2
- 2.8.0
-
-
- io.springfox
- springfox-swagger-ui
- 2.8.0
-
-
- io.springfox
- springfox-spring-web
- 2.8.0
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
com.fasterxml.jackson.core
jackson-core
diff --git a/suimang-swagger/pom.xml b/suimang-swagger/pom.xml
new file mode 100644
index 0000000..b4352b0
--- /dev/null
+++ b/suimang-swagger/pom.xml
@@ -0,0 +1,28 @@
+
+
+
+ suimang
+ com.iformall
+ 1.0
+
+ 4.0.0
+
+ suimang-swagger
+
+
+
+
+ io.springfox
+ springfox-swagger2
+ 2.9.2
+
+
+
+ com.github.xiaoymin
+ swagger-bootstrap-ui
+ 1.9.3
+
+
+
\ No newline at end of file
diff --git a/suimang-swagger/src/main/java/com/iformall/annotation/ApiVersion.java b/suimang-swagger/src/main/java/com/iformall/annotation/ApiVersion.java
new file mode 100644
index 0000000..d9ceb4e
--- /dev/null
+++ b/suimang-swagger/src/main/java/com/iformall/annotation/ApiVersion.java
@@ -0,0 +1,19 @@
+package com.iformall.annotation;
+
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+
+@Target(ElementType.METHOD)
+@Retention(RetentionPolicy.RUNTIME)
+public @interface ApiVersion {
+
+ /**
+ * 接口版本号(对应swagger中的group)
+ *
+ * @return String[]
+ */
+ String[] group();
+}
diff --git a/suimang-swagger/src/main/java/com/iformall/annotation/BaseEnableSwagger.java b/suimang-swagger/src/main/java/com/iformall/annotation/BaseEnableSwagger.java
new file mode 100644
index 0000000..fb78b80
--- /dev/null
+++ b/suimang-swagger/src/main/java/com/iformall/annotation/BaseEnableSwagger.java
@@ -0,0 +1,14 @@
+package com.iformall.annotation;
+
+import com.iformall.config.SwaggerConfiguration;
+import org.springframework.context.annotation.Import;
+
+import java.lang.annotation.*;
+
+@Target({ElementType.TYPE})
+@Retention(RetentionPolicy.RUNTIME)
+@Documented
+@Inherited
+@Import({SwaggerConfiguration.class})
+public @interface BaseEnableSwagger {
+}
diff --git a/suimang-swagger/src/main/java/com/iformall/config/SwaggerConfiguration.java b/suimang-swagger/src/main/java/com/iformall/config/SwaggerConfiguration.java
new file mode 100644
index 0000000..f8b7214
--- /dev/null
+++ b/suimang-swagger/src/main/java/com/iformall/config/SwaggerConfiguration.java
@@ -0,0 +1,94 @@
+package com.iformall.config;
+
+import com.google.common.base.Predicate;
+import com.google.common.base.Predicates;
+import com.iformall.annotation.ApiVersion;
+import com.iformall.constant.SwaggerConstant;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
+import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
+import org.springframework.boot.context.properties.EnableConfigurationProperties;
+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.service.ApiInfo;
+import springfox.documentation.service.Contact;
+import springfox.documentation.spi.DocumentationType;
+import springfox.documentation.spring.web.plugins.Docket;
+import springfox.documentation.swagger2.annotations.EnableSwagger2;
+
+import javax.servlet.ServletContext;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+
+@Configuration
+@EnableSwagger2
+@EnableAutoConfiguration
+@EnableConfigurationProperties(SwaggerProperties.class)
+@ConditionalOnProperty(name = "swagger.enabled", matchIfMissing = true)
+public class SwaggerConfiguration {
+
+ private static final List DEFAULT_EXCLUDE_PATH = Arrays.asList("/error");
+ private static final String BASE_PATH = "/**";
+
+ @Autowired
+ private SwaggerProperties swaggerProperties;
+
+ /**
+ * 1、分组
+ * 2、切换分组,修改访问/v2/api-docs/ 接口的路径
+ * https://admintest.malls.iformall.com/v2/api-docs/
+ * https://admintest.malls.iformall.com/B/v2/api-docs/
+ *
+ * @param servletContext
+ * @return {@link Docket}
+ */
+ @Bean
+ public Docket api(ServletContext servletContext) {
+ // base-path处理
+ if (swaggerProperties.getBasePath().isEmpty()) {
+ swaggerProperties.getBasePath().add(BASE_PATH);
+ }
+ List> basePath = new ArrayList<>(swaggerProperties.getBasePath().size());
+ swaggerProperties.getBasePath().forEach(path -> basePath.add(PathSelectors.ant(path)));
+
+ // exclude-path处理
+ if (swaggerProperties.getExcludePath().isEmpty()) {
+ swaggerProperties.getExcludePath().addAll(DEFAULT_EXCLUDE_PATH);
+ }
+ List> excludePath = new ArrayList<>();
+ swaggerProperties.getExcludePath().forEach(path -> excludePath.add(PathSelectors.ant(path)));
+
+ return new Docket(DocumentationType.SWAGGER_2)
+ .host(swaggerProperties.getHost())
+ .apiInfo(apiInfo(swaggerProperties)).select()
+ .apis(RequestHandlerSelectors.basePackage(swaggerProperties.getBasePackage()))
+ .apis(input -> {
+ ApiVersion apiVersion = input.getHandlerMethod().getMethodAnnotation(ApiVersion.class);
+ return apiVersion != null && Arrays.asList(apiVersion.group()).contains(SwaggerConstant.V_1_0_0);
+ })
+ .paths(
+ Predicates.and(
+ Predicates.not(Predicates.or(excludePath)),
+ Predicates.or(basePath)
+ )
+ )
+ .build();
+ }
+
+ private ApiInfo apiInfo(SwaggerProperties swaggerProperties) {
+ return new ApiInfoBuilder()
+ .title(swaggerProperties.getTitle())
+ .description(swaggerProperties.getDescription())
+ .license(swaggerProperties.getLicense())
+ .licenseUrl(swaggerProperties.getLicenseUrl())
+ .termsOfServiceUrl(swaggerProperties.getTermsOfServiceUrl())
+ .contact(new Contact(swaggerProperties.getContact().getName(), swaggerProperties.getContact().getUrl(), swaggerProperties.getContact().getEmail()))
+ .version(swaggerProperties.getVersion())
+ .build();
+ }
+}
+
diff --git a/suimang-swagger/src/main/java/com/iformall/config/SwaggerProperties.java b/suimang-swagger/src/main/java/com/iformall/config/SwaggerProperties.java
new file mode 100644
index 0000000..b43bae8
--- /dev/null
+++ b/suimang-swagger/src/main/java/com/iformall/config/SwaggerProperties.java
@@ -0,0 +1,123 @@
+package com.iformall.config;
+
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+
+@Data
+@ConfigurationProperties("swagger")
+public class SwaggerProperties {
+ private Map services;
+ private String prePath;
+ /**
+ * 是否开启swagger
+ */
+ private Boolean enabled;
+ /**
+ * swagger会解析的包路径
+ **/
+ private String basePackage = "";
+ /**
+ * swagger会解析的url规则
+ **/
+ private List basePath = new ArrayList<>();
+ /**
+ * 在basePath基础上需要排除的url规则
+ **/
+ private List excludePath = new ArrayList<>();
+ /**
+ * 标题
+ **/
+ private String title = "";
+ /**
+ * 描述
+ **/
+ private String description = "";
+ /**
+ * 版本
+ **/
+ private String version = "";
+ /**
+ * 许可证
+ **/
+ private String license = "";
+ /**
+ * 许可证URL
+ **/
+ private String licenseUrl = "";
+ /**
+ * 服务条款URL
+ **/
+ private String termsOfServiceUrl = "";
+
+ /**
+ * host信息
+ **/
+ private String host = "";
+ /**
+ * 联系人信息
+ */
+ private Contact contact = new Contact();
+ /**
+ * 全局统一鉴权配置
+ **/
+ private Authorization authorization = new Authorization();
+
+ @Data
+ public static class Contact {
+ /**
+ * 联系人
+ **/
+ private String name = "";
+ /**
+ * 联系人url
+ **/
+ private String url = "";
+ /**
+ * 联系人email
+ **/
+ private String email = "";
+ }
+
+ @Data
+ @NoArgsConstructor
+ public static class Authorization {
+
+ /**
+ * 鉴权策略ID,需要和SecurityReferences ID保持一致
+ */
+ private String name = "";
+
+ /**
+ * 需要开启鉴权URL的正则
+ */
+ private String authRegex = "^.*$";
+
+ /**
+ * 鉴权作用域列表
+ */
+ private List authorizationScopeList = new ArrayList<>();
+
+ private List tokenUrlList = new ArrayList<>();
+ }
+
+ @Data
+ @NoArgsConstructor
+ public static class AuthorizationScope {
+
+ /**
+ * 作用域名称
+ */
+ private String scope = "";
+
+ /**
+ * 作用域描述
+ */
+ private String description = "";
+
+ }
+}
diff --git a/suimang-swagger/src/main/java/com/iformall/constant/SwaggerConstant.java b/suimang-swagger/src/main/java/com/iformall/constant/SwaggerConstant.java
new file mode 100644
index 0000000..db4158c
--- /dev/null
+++ b/suimang-swagger/src/main/java/com/iformall/constant/SwaggerConstant.java
@@ -0,0 +1,8 @@
+package com.iformall.constant;
+
+public interface SwaggerConstant {
+ /**
+ *
+ */
+ String V_1_0_0 = "v1.0.0";
+}
diff --git a/suimang.iml b/suimang.iml
index bb300b6..c7b2669 100644
--- a/suimang.iml
+++ b/suimang.iml
@@ -25,6 +25,7 @@
+
@@ -161,7 +162,7 @@
-
+
@@ -184,21 +185,6 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
@@ -239,6 +225,7 @@
+
diff --git a/suimangAdmin/src/main/java/com/iformall/AdminApplication.java b/suimangAdmin/src/main/java/com/iformall/AdminApplication.java
index 0284ebf..cfc34ca 100644
--- a/suimangAdmin/src/main/java/com/iformall/AdminApplication.java
+++ b/suimangAdmin/src/main/java/com/iformall/AdminApplication.java
@@ -1,5 +1,6 @@
package com.iformall;
+import com.iformall.annotation.BaseEnableSwagger;
import com.ulisesbocchio.jasyptspringboot.annotation.EnableEncryptableProperties;
import org.mybatis.spring.annotation.MapperScan;
import org.rocketmq.starter.annotation.EnableRocketMQ;
@@ -18,7 +19,7 @@ import springfox.documentation.swagger2.annotations.EnableSwagger2;
*/
@SpringBootApplication
@MapperScan(basePackages = {"com.iformall.mapper"})
-@EnableSwagger2
+@BaseEnableSwagger
@EnableEncryptableProperties
@EnableAsync
@EnableRocketMQ
diff --git a/suimangAdmin/src/main/java/com/iformall/config/ShiroConfig.java b/suimangAdmin/src/main/java/com/iformall/config/ShiroConfig.java
index 75223d8..9ba5a6e 100644
--- a/suimangAdmin/src/main/java/com/iformall/config/ShiroConfig.java
+++ b/suimangAdmin/src/main/java/com/iformall/config/ShiroConfig.java
@@ -139,6 +139,7 @@ public class ShiroConfig {
// }
// swagger-ui
filterChainDefinitionMap.put("/swagger-ui.html", "anon");
+ filterChainDefinitionMap.put("/doc.html", "anon");
filterChainDefinitionMap.put("/v2/**", "anon");
filterChainDefinitionMap.put("/swagger-resources/**", "anon");
filterChainDefinitionMap.put("/webjars/**", "anon");
diff --git a/suimangAdmin/src/main/java/com/iformall/config/Swagger2Config.java b/suimangAdmin/src/main/java/com/iformall/config/Swagger2Config.java
index 335b86b..fc80b3b 100644
--- a/suimangAdmin/src/main/java/com/iformall/config/Swagger2Config.java
+++ b/suimangAdmin/src/main/java/com/iformall/config/Swagger2Config.java
@@ -1,61 +1,61 @@
-package com.iformall.config;
-
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.Configuration;
-import springfox.documentation.builders.ApiInfoBuilder;
-import springfox.documentation.builders.ParameterBuilder;
-import springfox.documentation.builders.PathSelectors;
-import springfox.documentation.builders.RequestHandlerSelectors;
-import springfox.documentation.schema.ModelRef;
-import springfox.documentation.service.ApiInfo;
-import springfox.documentation.service.Parameter;
-import springfox.documentation.spi.DocumentationType;
-import springfox.documentation.spring.web.paths.RelativePathProvider;
-import springfox.documentation.spring.web.plugins.Docket;
-import springfox.documentation.swagger2.annotations.EnableSwagger2;
-
-import javax.servlet.ServletContext;
-import java.util.ArrayList;
-import java.util.List;
-
-//参考:http://blog.csdn.net/catoop/article/details/50668896
-@Configuration
-@EnableSwagger2
-public class Swagger2Config {
-
- @Autowired
- private ServletContext servletContext;
-
- @Bean
- public Docket createRestApi() {
- ParameterBuilder tokenPar = new ParameterBuilder();
- List pars = new ArrayList();
- //增加一个request的header参数
- tokenPar.name("token").description("令牌").modelRef(new ModelRef("string")).parameterType("header").required(false).build();
- pars.add(tokenPar.build());
- return new Docket(DocumentationType.SWAGGER_2)
- .apiInfo(apiInfo())
- .select()
- .apis(RequestHandlerSelectors.basePackage("com.iformall.controller"))
- .paths(PathSelectors.any())
- .build()
- .globalOperationParameters(pars)
- .pathProvider(new RelativePathProvider(servletContext) {
- @Override
- public String getApplicationBasePath() {
- return "/api";
- }
- });
- }
-
- private ApiInfo apiInfo() {
- return new ApiInfoBuilder()
- .title("a端 api")
- .description("a api")
- .termsOfServiceUrl("http://localhost:7000")
- .version("2.0")
- .build();
- }
-
-}
\ No newline at end of file
+//package com.iformall.config;
+//
+//import org.springframework.beans.factory.annotation.Autowired;
+//import org.springframework.context.annotation.Bean;
+//import org.springframework.context.annotation.Configuration;
+//import springfox.documentation.builders.ApiInfoBuilder;
+//import springfox.documentation.builders.ParameterBuilder;
+//import springfox.documentation.builders.PathSelectors;
+//import springfox.documentation.builders.RequestHandlerSelectors;
+//import springfox.documentation.schema.ModelRef;
+//import springfox.documentation.service.ApiInfo;
+//import springfox.documentation.service.Parameter;
+//import springfox.documentation.spi.DocumentationType;
+//import springfox.documentation.spring.web.paths.RelativePathProvider;
+//import springfox.documentation.spring.web.plugins.Docket;
+//import springfox.documentation.swagger2.annotations.EnableSwagger2;
+//
+//import javax.servlet.ServletContext;
+//import java.util.ArrayList;
+//import java.util.List;
+//
+////参考:http://blog.csdn.net/catoop/article/details/50668896
+//@Configuration
+//@EnableSwagger2
+//public class Swagger2Config {
+//
+// @Autowired
+// private ServletContext servletContext;
+//
+// @Bean
+// public Docket createRestApi() {
+// ParameterBuilder tokenPar = new ParameterBuilder();
+// List pars = new ArrayList();
+// //增加一个request的header参数
+// tokenPar.name("token").description("令牌").modelRef(new ModelRef("string")).parameterType("header").required(false).build();
+// pars.add(tokenPar.build());
+// return new Docket(DocumentationType.SWAGGER_2)
+// .apiInfo(apiInfo())
+// .select()
+// .apis(RequestHandlerSelectors.basePackage("com.iformall.controller"))
+// .paths(PathSelectors.any())
+// .build()
+// .globalOperationParameters(pars)
+// .pathProvider(new RelativePathProvider(servletContext) {
+// @Override
+// public String getApplicationBasePath() {
+// return "/api";
+// }
+// });
+// }
+//
+// private ApiInfo apiInfo() {
+// return new ApiInfoBuilder()
+// .title("a端 api")
+// .description("a api")
+// .termsOfServiceUrl("http://localhost:7000")
+// .version("2.0")
+// .build();
+// }
+//
+//}
\ No newline at end of file
diff --git a/suimangAdmin/src/main/java/com/iformall/config/WebConfig.java b/suimangAdmin/src/main/java/com/iformall/config/WebConfig.java
index d4e0620..7064277 100644
--- a/suimangAdmin/src/main/java/com/iformall/config/WebConfig.java
+++ b/suimangAdmin/src/main/java/com/iformall/config/WebConfig.java
@@ -100,7 +100,9 @@ public class WebConfig implements WebMvcConfigurer {
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
- registry.addResourceHandler("swagger-ui.html")
+// registry.addResourceHandler("swagger-ui.html")
+// .addResourceLocations("classpath:/META-INF/resources/");
+ registry.addResourceHandler("doc.html")
.addResourceLocations("classpath:/META-INF/resources/");
registry.addResourceHandler("/webjars/**")
.addResourceLocations("classpath:/META-INF/resources/webjars/");
diff --git a/suimangAdmin/src/main/java/com/iformall/controller/sm/ApiGuideController.java b/suimangAdmin/src/main/java/com/iformall/controller/sm/ApiGuideController.java
index 9647b92..e4bcf22 100644
--- a/suimangAdmin/src/main/java/com/iformall/controller/sm/ApiGuideController.java
+++ b/suimangAdmin/src/main/java/com/iformall/controller/sm/ApiGuideController.java
@@ -1,6 +1,8 @@
package com.iformall.controller.sm;
+import com.iformall.annotation.ApiVersion;
import com.iformall.common.ResultData;
+import com.iformall.constant.SwaggerConstant;
import com.iformall.domain.dto.sm.SaveApiGuideDTO;
import com.iformall.domain.dto.sm.UpdateApiGuideDTO;
import com.iformall.domain.po.sm.ApiGuide;
@@ -18,12 +20,14 @@ public class ApiGuideController {
@Autowired
private ApiGuideService apiGuideService;
+ @ApiVersion(group = SwaggerConstant.V_1_0_0)
@ApiOperation("分页查询api指南")
@GetMapping("/page")
public ResultData pageApiGuide(ApiGuide apiGuide, Integer pageNum, Integer pageSize) {
return new ResultData(apiGuideService.pageApiGuide(apiGuide, pageNum, pageSize));
}
+ @ApiVersion(group = SwaggerConstant.V_1_0_0)
@ApiOperation("新增api指南")
@PostMapping("/save")
public ResultData saveApiGuide(@RequestBody SaveApiGuideDTO dto) {
@@ -31,6 +35,7 @@ public class ApiGuideController {
return new ResultData();
}
+ @ApiVersion(group = SwaggerConstant.V_1_0_0)
@ApiOperation("修改api指南")
@PostMapping("/update")
public ResultData updateApiGuide(@RequestBody UpdateApiGuideDTO dto) {
diff --git a/suimangAdmin/src/main/java/com/iformall/controller/sm/ApiMenuController.java b/suimangAdmin/src/main/java/com/iformall/controller/sm/ApiMenuController.java
index 00c32d1..75e8dd3 100644
--- a/suimangAdmin/src/main/java/com/iformall/controller/sm/ApiMenuController.java
+++ b/suimangAdmin/src/main/java/com/iformall/controller/sm/ApiMenuController.java
@@ -1,7 +1,9 @@
package com.iformall.controller.sm;
+import com.iformall.annotation.ApiVersion;
import com.iformall.common.ErrorCode;
import com.iformall.common.ResultData;
+import com.iformall.constant.SwaggerConstant;
import com.iformall.domain.dto.sm.SaveApiMenuDTO;
import com.iformall.domain.dto.sm.UpdateApiMenuDTO;
import com.iformall.domain.po.sm.ApiMenu;
@@ -20,12 +22,14 @@ public class ApiMenuController {
@Autowired
private ApiMenuService apiMenuService;
+ @ApiVersion(group = SwaggerConstant.V_1_0_0)
@ApiOperation("分页查询api菜单")
@GetMapping("/page")
public ResultData pageApiMenu(ApiMenu ApiMenu, Integer pageNum, Integer pageSize) {
return new ResultData(apiMenuService.pageApiMenu(ApiMenu, pageNum, pageSize));
}
+ @ApiVersion(group = SwaggerConstant.V_1_0_0)
@ApiOperation("单个查询api菜单")
@GetMapping("/get")
public ResultData getApiMenu(Long id) {
@@ -35,6 +39,7 @@ public class ApiMenuController {
return new ResultData(apiMenuService.getApiMenu(id));
}
+ @ApiVersion(group = SwaggerConstant.V_1_0_0)
@ApiOperation("新增api菜单")
@PostMapping("/save")
public ResultData saveApiMenu(@RequestBody SaveApiMenuDTO dto) {
@@ -42,6 +47,7 @@ public class ApiMenuController {
return new ResultData();
}
+ @ApiVersion(group = SwaggerConstant.V_1_0_0)
@ApiOperation("修改api菜单")
@PostMapping("/update")
public ResultData updateApiMenu(@RequestBody UpdateApiMenuDTO dto) {
@@ -49,6 +55,7 @@ public class ApiMenuController {
return new ResultData();
}
+ @ApiVersion(group = SwaggerConstant.V_1_0_0)
@ApiOperation("全查询父级api菜单")
@GetMapping("/listParentMenu")
public ResultData listParentMenu() {
diff --git a/suimangAdmin/src/main/java/com/iformall/controller/sm/ServiceInfoController.java b/suimangAdmin/src/main/java/com/iformall/controller/sm/ServiceInfoController.java
index 843b80e..c8f290f 100644
--- a/suimangAdmin/src/main/java/com/iformall/controller/sm/ServiceInfoController.java
+++ b/suimangAdmin/src/main/java/com/iformall/controller/sm/ServiceInfoController.java
@@ -1,6 +1,8 @@
package com.iformall.controller.sm;
+import com.iformall.annotation.ApiVersion;
import com.iformall.common.ResultData;
+import com.iformall.constant.SwaggerConstant;
import com.iformall.controller.base.BaseController;
import com.iformall.domain.dto.sm.SaveServiceInfoDTO;
import com.iformall.domain.dto.sm.UpdateServiceInfoDTO;
@@ -20,12 +22,14 @@ public class ServiceInfoController extends BaseController {
@Autowired
private ServiceInfoService serviceInfoService;
+ @ApiVersion(group = SwaggerConstant.V_1_0_0)
@ApiOperation("分页查询合作商")
@GetMapping("/page")
public ResultData pageServiceInfo(ServiceInfo serviceInfo, Integer pageNum, Integer pageSize) {
return new ResultData(serviceInfoService.pageServiceInfo(serviceInfo, pageNum, pageSize));
}
+ @ApiVersion(group = SwaggerConstant.V_1_0_0)
@ApiOperation("新增合作商")
@PostMapping("/save")
public ResultData saveServiceInfo(@RequestBody SaveServiceInfoDTO dto) {
@@ -33,6 +37,7 @@ public class ServiceInfoController extends BaseController {
return new ResultData();
}
+ @ApiVersion(group = SwaggerConstant.V_1_0_0)
@ApiOperation("修改合作商")
@PostMapping("/update")
public ResultData updateServiceInfo(@RequestBody UpdateServiceInfoDTO dto) {
@@ -40,6 +45,7 @@ public class ServiceInfoController extends BaseController {
return new ResultData();
}
+ @ApiVersion(group = SwaggerConstant.V_1_0_0)
@ApiOperation("修改合作商状态")
@PostMapping("/updateStatus")
public ResultData updateServiceInfoStatus(@RequestBody UpdateServiceInfoStatusDTO dto) {
diff --git a/suimangAdmin/src/main/java/com/iformall/controller/sm/ThirdPartyApiController.java b/suimangAdmin/src/main/java/com/iformall/controller/sm/ThirdPartyApiController.java
index 7f203ce..3c493b8 100644
--- a/suimangAdmin/src/main/java/com/iformall/controller/sm/ThirdPartyApiController.java
+++ b/suimangAdmin/src/main/java/com/iformall/controller/sm/ThirdPartyApiController.java
@@ -1,7 +1,9 @@
package com.iformall.controller.sm;
+import com.iformall.annotation.ApiVersion;
import com.iformall.common.ErrorCode;
import com.iformall.common.ResultData;
+import com.iformall.constant.SwaggerConstant;
import com.iformall.domain.dto.sm.UpdateThirdPartyApiStatusDTO;
import com.iformall.domain.po.WxThirdPartyApi;
import com.iformall.exception.BizException;
@@ -19,12 +21,14 @@ public class ThirdPartyApiController {
@Autowired
private WxThirdPartyApiService thirdPartyApiService;
+ @ApiVersion(group = SwaggerConstant.V_1_0_0)
@ApiOperation("分页查询秘钥")
@GetMapping("/page")
public ResultData pageThirdPartyApi(WxThirdPartyApi thirdPartyApi, Integer pageNum, Integer pageSize) {
return new ResultData(thirdPartyApiService.pageThirdPartyApi(thirdPartyApi, pageNum, pageSize));
}
+ @ApiVersion(group = SwaggerConstant.V_1_0_0)
@ApiOperation("单个查询秘钥")
@GetMapping("/get")
public ResultData getThirdPartyApi(Long id) {
@@ -34,6 +38,7 @@ public class ThirdPartyApiController {
return new ResultData(thirdPartyApiService.getThirdPartyApi(id));
}
+ @ApiVersion(group = SwaggerConstant.V_1_0_0)
@ApiOperation("修改秘钥状态")
@PostMapping("/updateStatus")
public ResultData updateThirdPartyApiStatus(@RequestBody UpdateThirdPartyApiStatusDTO dto) {
diff --git a/suimangAdmin/src/main/java/com/iformall/controller/sys/HomeController.java b/suimangAdmin/src/main/java/com/iformall/controller/sys/HomeController.java
index a524769..8923a08 100644
--- a/suimangAdmin/src/main/java/com/iformall/controller/sys/HomeController.java
+++ b/suimangAdmin/src/main/java/com/iformall/controller/sys/HomeController.java
@@ -2,9 +2,11 @@ package com.iformall.controller.sys;
import com.google.code.kaptcha.Constants;
import com.google.code.kaptcha.Producer;
+import com.iformall.annotation.ApiVersion;
import com.iformall.common.ErrorCode;
import com.iformall.common.Result;
import com.iformall.common.ResultData;
+import com.iformall.constant.SwaggerConstant;
import com.iformall.controller.base.BaseController;
import com.iformall.domain.po.*;
import com.iformall.domain.po.base.TenantEntity;
@@ -75,6 +77,7 @@ public class HomeController extends BaseController {
@Qualifier("objectCommonRedisTemplate")
RedisTemplate redisTemplate;
+ @ApiVersion(group = SwaggerConstant.V_1_0_0)
@ApiOperation("验证码")
@GetMapping("/captcha.jpg")
public void captcha(HttpServletResponse response)throws ServletException, IOException {
@@ -97,6 +100,7 @@ public class HomeController extends BaseController {
IOUtils.closeQuietly(out);
}
+ @ApiVersion(group = SwaggerConstant.V_1_0_0)
@ApiOperation("登录")
@PostMapping("/doLogin")
public ResultData login(@RequestBody MallUserInfo user, HttpServletResponse response) {
diff --git a/suimangAdmin/src/main/java/com/iformall/controller/sys/MallRoleController.java b/suimangAdmin/src/main/java/com/iformall/controller/sys/MallRoleController.java
index 3ad9ded..92e3efb 100644
--- a/suimangAdmin/src/main/java/com/iformall/controller/sys/MallRoleController.java
+++ b/suimangAdmin/src/main/java/com/iformall/controller/sys/MallRoleController.java
@@ -1,10 +1,12 @@
package com.iformall.controller.sys;
import com.github.pagehelper.PageInfo;
+import com.iformall.annotation.ApiVersion;
import com.iformall.annotation.SystemControllerLog;
import com.iformall.common.ErrorCode;
import com.iformall.common.Result;
import com.iformall.common.ResultData;
+import com.iformall.constant.SwaggerConstant;
import com.iformall.controller.base.BaseController;
import com.iformall.domain.po.*;
import com.iformall.domain.po.base.BaseEntity;
@@ -43,6 +45,7 @@ public class MallRoleController extends BaseController {
@Autowired
private MallUserRoleService mallUserRoleService;
+ @ApiVersion(group = SwaggerConstant.V_1_0_0)
@ApiOperation("角色列表")
@GetMapping("list")
@ApiImplicitParams({
@@ -95,7 +98,7 @@ public class MallRoleController extends BaseController {
return new ResultData(role);
}
-
+ @ApiVersion(group = SwaggerConstant.V_1_0_0)
@ApiOperation("角色保存")
@PostMapping("saveOrUpdate")
//@RequiresPermissions("sys:role:save")
@@ -126,6 +129,7 @@ public class MallRoleController extends BaseController {
return new ResultData();
}
+ @ApiVersion(group = SwaggerConstant.V_1_0_0)
@ApiOperation("角色删除")
@PostMapping("/del")
//@RequiresPermissions("sys:role:del")
diff --git a/suimangAdmin/src/main/java/com/iformall/controller/sys/MallUserInfoController.java b/suimangAdmin/src/main/java/com/iformall/controller/sys/MallUserInfoController.java
index fa22251..5c583c3 100644
--- a/suimangAdmin/src/main/java/com/iformall/controller/sys/MallUserInfoController.java
+++ b/suimangAdmin/src/main/java/com/iformall/controller/sys/MallUserInfoController.java
@@ -1,10 +1,12 @@
package com.iformall.controller.sys;
import com.github.pagehelper.PageInfo;
+import com.iformall.annotation.ApiVersion;
import com.iformall.annotation.SystemControllerLog;
import com.iformall.common.ErrorCode;
import com.iformall.common.Result;
import com.iformall.common.ResultData;
+import com.iformall.constant.SwaggerConstant;
import com.iformall.controller.base.BaseController;
import com.iformall.domain.po.*;
import com.iformall.domain.po.base.BaseEntity;
@@ -60,6 +62,7 @@ public class MallUserInfoController extends BaseController {
@Autowired
WxMsgValidationcodeService wxMsgValidationcodeService;
+ @ApiVersion(group = SwaggerConstant.V_1_0_0)
@ApiOperation(value = "用户分页接口", response = String.class)
@GetMapping("lists")
//@RequiresPermissions("sys:user:list")
@@ -110,6 +113,7 @@ public class MallUserInfoController extends BaseController {
return new ResultData(user);
}
+ @ApiVersion(group = SwaggerConstant.V_1_0_0)
@ApiOperation(value = "创建用户接口", response = String.class)
@PostMapping("add")
//@RequiresPermissions("sys:user:add")
@@ -147,6 +151,7 @@ public class MallUserInfoController extends BaseController {
return new ResultData(userInfo);
}
+ @ApiVersion(group = SwaggerConstant.V_1_0_0)
@ApiOperation(value = "修改用户接口", response = String.class)
@PostMapping("update")
//@RequiresPermissions("sys:user:update")
@@ -225,6 +230,7 @@ public class MallUserInfoController extends BaseController {
return new ResultData();
}
+ @ApiVersion(group = SwaggerConstant.V_1_0_0)
@ApiOperation(value = "删除用户接口", response = String.class)
@PostMapping("/del")
//@RequiresPermissions("sys:user:del")
@@ -320,6 +326,7 @@ public class MallUserInfoController extends BaseController {
return new ResultData(menu);
}
+ @ApiVersion(group = SwaggerConstant.V_1_0_0)
@ApiOperation(value = "用户密码发送验证码")
@GetMapping("sendvalidationcode")
@ApiImplicitParams({
@@ -353,6 +360,7 @@ public class MallUserInfoController extends BaseController {
return wxMsgValidationcodeService.sendvalidationcode(wxMsgValidationcode);
}
+ @ApiVersion(group = SwaggerConstant.V_1_0_0)
@ApiOperation(value = "修改密码", notes = "{\"userName\",\"string\",\"code\",\"string\",\"pwd\",\"string\"}")
@PostMapping("/updatepwd")
@SystemControllerLog(description = "用户管理-修改密码")
diff --git a/suimangAdmin/src/main/java/com/iformall/controller/sys/SysMenuController.java b/suimangAdmin/src/main/java/com/iformall/controller/sys/SysMenuController.java
index 26fd86c..165d5b9 100644
--- a/suimangAdmin/src/main/java/com/iformall/controller/sys/SysMenuController.java
+++ b/suimangAdmin/src/main/java/com/iformall/controller/sys/SysMenuController.java
@@ -1,9 +1,11 @@
package com.iformall.controller.sys;
+import com.iformall.annotation.ApiVersion;
import com.iformall.annotation.SystemControllerLog;
import com.iformall.common.ErrorCode;
import com.iformall.common.Result;
import com.iformall.common.ResultData;
+import com.iformall.constant.SwaggerConstant;
import com.iformall.controller.base.BaseController;
import com.iformall.domain.po.MallPermission;
import com.iformall.domain.po.MallRole;
@@ -65,6 +67,7 @@ public class SysMenuController extends BaseController {
return new ResultData(map);
}
+ @ApiVersion(group = SwaggerConstant.V_1_0_0)
@ApiOperation("所有菜单列表")
@GetMapping("list")
//@RequiresPermissions("sys:menu:list")
diff --git a/suimangAdmin/src/main/resources/application-dev.yml b/suimangAdmin/src/main/resources/application-dev.yml
index 5eaf35c..e57bf5e 100644
--- a/suimangAdmin/src/main/resources/application-dev.yml
+++ b/suimangAdmin/src/main/resources/application-dev.yml
@@ -208,4 +208,18 @@ suimang:
photo_speak_hy: xxx
digital_avatar: xxx
digital_avatar_hy: xxx
- callbackUrl: xxx
\ No newline at end of file
+ callbackUrl: xxx
+
+swagger:
+ base-package: com.iformall.controller
+ title: 遂芒_metavatar_接口文档
+ description: 前后端联调
+ version: 1.0
+ license: Apache
+ license-url: https://mtest.metavatar.cc/
+ terms-of-service-url: https://mtest.metavatar.cc/
+ host: localhost:8888
+ contact:
+ name: 张三
+ url: https://mtest.metavatar.cc/
+ email: zhangsan@163.com
\ No newline at end of file
diff --git a/suimangCApi/src/main/java/com/iformall/CApplication.java b/suimangCApi/src/main/java/com/iformall/CApplication.java
index d916e1b..32fda08 100644
--- a/suimangCApi/src/main/java/com/iformall/CApplication.java
+++ b/suimangCApi/src/main/java/com/iformall/CApplication.java
@@ -1,5 +1,6 @@
package com.iformall;
+import com.iformall.annotation.BaseEnableSwagger;
import org.mybatis.spring.annotation.MapperScan;
import org.rocketmq.starter.annotation.EnableRocketMQ;
import org.springframework.beans.factory.annotation.Value;
@@ -15,6 +16,7 @@ import org.springframework.scheduling.annotation.EnableAsync;
* @author chenkx
* @date 2017-12-26
*/
+@BaseEnableSwagger
@SpringBootApplication
@MapperScan(basePackages = {"com.iformall.mapper"})
@EnableEncryptableProperties
diff --git a/suimangCApi/src/main/java/com/iformall/config/Swagger2Config.java b/suimangCApi/src/main/java/com/iformall/config/Swagger2Config.java
index 2118b9d..6d22331 100644
--- a/suimangCApi/src/main/java/com/iformall/config/Swagger2Config.java
+++ b/suimangCApi/src/main/java/com/iformall/config/Swagger2Config.java
@@ -1,61 +1,61 @@
-package com.iformall.config;
-
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.Configuration;
-import springfox.documentation.builders.ApiInfoBuilder;
-import springfox.documentation.builders.ParameterBuilder;
-import springfox.documentation.builders.PathSelectors;
-import springfox.documentation.builders.RequestHandlerSelectors;
-import springfox.documentation.schema.ModelRef;
-import springfox.documentation.service.ApiInfo;
-import springfox.documentation.service.Parameter;
-import springfox.documentation.spi.DocumentationType;
-import springfox.documentation.spring.web.paths.RelativePathProvider;
-import springfox.documentation.spring.web.plugins.Docket;
-import springfox.documentation.swagger2.annotations.EnableSwagger2;
-
-import javax.servlet.ServletContext;
-import java.util.ArrayList;
-import java.util.List;
-
-//参考:http://blog.csdn.net/catoop/article/details/50668896
-@Configuration
-@EnableSwagger2
-public class Swagger2Config {
-
- @Autowired
- private ServletContext servletContext;
-
- @Bean
- public Docket createRestApi() {
- ParameterBuilder tokenPar = new ParameterBuilder();
- List pars = new ArrayList();
- //增加一个request的header参数
- tokenPar.name("token").description("令牌").modelRef(new ModelRef("string")).parameterType("header").required(false).build();
- pars.add(tokenPar.build());
- return new Docket(DocumentationType.SWAGGER_2)
- .apiInfo(apiInfo())
- .select()
- .apis(RequestHandlerSelectors.basePackage("com.iformall.controller"))
- .paths(PathSelectors.any())
- .build()
- .globalOperationParameters(pars)
- .pathProvider(new RelativePathProvider(servletContext) {
- @Override
- public String getApplicationBasePath() {
- return "/api";
- }
- });
- }
-
- private ApiInfo apiInfo() {
- return new ApiInfoBuilder()
- .title("c端 api")
- .description("c api")
- .termsOfServiceUrl("http://localhost:7000")
- .version("2.0")
- .build();
- }
-
-}
\ No newline at end of file
+//package com.iformall.config;
+//
+//import org.springframework.beans.factory.annotation.Autowired;
+//import org.springframework.context.annotation.Bean;
+//import org.springframework.context.annotation.Configuration;
+//import springfox.documentation.builders.ApiInfoBuilder;
+//import springfox.documentation.builders.ParameterBuilder;
+//import springfox.documentation.builders.PathSelectors;
+//import springfox.documentation.builders.RequestHandlerSelectors;
+//import springfox.documentation.schema.ModelRef;
+//import springfox.documentation.service.ApiInfo;
+//import springfox.documentation.service.Parameter;
+//import springfox.documentation.spi.DocumentationType;
+//import springfox.documentation.spring.web.paths.RelativePathProvider;
+//import springfox.documentation.spring.web.plugins.Docket;
+//import springfox.documentation.swagger2.annotations.EnableSwagger2;
+//
+//import javax.servlet.ServletContext;
+//import java.util.ArrayList;
+//import java.util.List;
+//
+////参考:http://blog.csdn.net/catoop/article/details/50668896
+//@Configuration
+//@EnableSwagger2
+//public class Swagger2Config {
+//
+// @Autowired
+// private ServletContext servletContext;
+//
+// @Bean
+// public Docket createRestApi() {
+// ParameterBuilder tokenPar = new ParameterBuilder();
+// List pars = new ArrayList();
+// //增加一个request的header参数
+// tokenPar.name("token").description("令牌").modelRef(new ModelRef("string")).parameterType("header").required(false).build();
+// pars.add(tokenPar.build());
+// return new Docket(DocumentationType.SWAGGER_2)
+// .apiInfo(apiInfo())
+// .select()
+// .apis(RequestHandlerSelectors.basePackage("com.iformall.controller"))
+// .paths(PathSelectors.any())
+// .build()
+// .globalOperationParameters(pars)
+// .pathProvider(new RelativePathProvider(servletContext) {
+// @Override
+// public String getApplicationBasePath() {
+// return "/api";
+// }
+// });
+// }
+//
+// private ApiInfo apiInfo() {
+// return new ApiInfoBuilder()
+// .title("c端 api")
+// .description("c api")
+// .termsOfServiceUrl("http://localhost:7000")
+// .version("2.0")
+// .build();
+// }
+//
+//}
\ No newline at end of file
diff --git a/suimangCApi/src/main/java/com/iformall/config/WebMvcConfig.java b/suimangCApi/src/main/java/com/iformall/config/WebMvcConfig.java
index c406405..66deea2 100644
--- a/suimangCApi/src/main/java/com/iformall/config/WebMvcConfig.java
+++ b/suimangCApi/src/main/java/com/iformall/config/WebMvcConfig.java
@@ -54,7 +54,9 @@ public class WebMvcConfig implements WebMvcConfigurer {
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
- registry.addResourceHandler("swagger-ui.html")
+// registry.addResourceHandler("swagger-ui.html")
+// .addResourceLocations("classpath:/META-INF/resources/");
+ registry.addResourceHandler("doc.html")
.addResourceLocations("classpath:/META-INF/resources/");
registry.addResourceHandler("/webjars/**")
.addResourceLocations("classpath:/META-INF/resources/webjars/");
diff --git a/suimangCApi/src/main/java/com/iformall/controller/ApiGuideController.java b/suimangCApi/src/main/java/com/iformall/controller/ApiGuideController.java
index f82a9e6..f8a73df 100644
--- a/suimangCApi/src/main/java/com/iformall/controller/ApiGuideController.java
+++ b/suimangCApi/src/main/java/com/iformall/controller/ApiGuideController.java
@@ -1,7 +1,9 @@
package com.iformall.controller;
+import com.iformall.annotation.ApiVersion;
import com.iformall.annotation.AuthIgnore;
import com.iformall.common.ResultData;
+import com.iformall.constant.SwaggerConstant;
import com.iformall.service.sm.ApiGuideService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
@@ -19,6 +21,7 @@ public class ApiGuideController {
private ApiGuideService apiGuideService;
@AuthIgnore
+ @ApiVersion(group = SwaggerConstant.V_1_0_0)
@ApiOperation("单个查询api指南")
@GetMapping("/getAvailableApiGuide")
public ResultData getAvailableApiGuide() {
diff --git a/suimangCApi/src/main/java/com/iformall/controller/ApiMenuController.java b/suimangCApi/src/main/java/com/iformall/controller/ApiMenuController.java
index 0c221fe..ffef77d 100644
--- a/suimangCApi/src/main/java/com/iformall/controller/ApiMenuController.java
+++ b/suimangCApi/src/main/java/com/iformall/controller/ApiMenuController.java
@@ -1,8 +1,10 @@
package com.iformall.controller;
+import com.iformall.annotation.ApiVersion;
import com.iformall.annotation.AuthIgnore;
import com.iformall.common.ErrorCode;
import com.iformall.common.ResultData;
+import com.iformall.constant.SwaggerConstant;
import com.iformall.exception.BizException;
import com.iformall.service.sm.ApiMenuService;
import io.swagger.annotations.Api;
@@ -19,6 +21,7 @@ public class ApiMenuController {
private ApiMenuService apiMenuService;
@AuthIgnore
+ @ApiVersion(group = SwaggerConstant.V_1_0_0)
@ApiOperation("全查询api菜单")
@GetMapping("/list")
public ResultData listApiMenu() {
@@ -26,6 +29,7 @@ public class ApiMenuController {
}
@AuthIgnore
+ @ApiVersion(group = SwaggerConstant.V_1_0_0)
@ApiOperation("查询某个api菜单所有子菜单")
@GetMapping("/listSubmenu")
public ResultData listApiSubmenu(Long id) {
@@ -36,6 +40,7 @@ public class ApiMenuController {
}
@AuthIgnore
+ @ApiVersion(group = SwaggerConstant.V_1_0_0)
@ApiOperation("单个查询菜单详情")
@GetMapping("/get")
public ResultData getApiMenu(Long id) {
diff --git a/suimangCApi/src/main/resources/application-dev.yml b/suimangCApi/src/main/resources/application-dev.yml
index 83ec583..62490a9 100644
--- a/suimangCApi/src/main/resources/application-dev.yml
+++ b/suimangCApi/src/main/resources/application-dev.yml
@@ -195,3 +195,17 @@ suimang:
digital_avatar: http://nas.pucao.cn:2005
digital_avatar_hy: http://nas.pucao.cn:2003
callbackUrl: https://mtest.metavatar.cc/C
+
+swagger:
+ base-package: com.iformall.controller
+ title: 遂芒_metavatar_接口文档
+ description: 前后端联调
+ version: 1.0
+ license: Apache
+ license-url: https://mtest.metavatar.cc/
+ terms-of-service-url: https://mtest.metavatar.cc/
+ host: localhost:8888
+ contact:
+ name: 张三
+ url: https://mtest.metavatar.cc/
+ email: zhangsan@163.com
\ No newline at end of file
diff --git a/suimangService/pom.xml b/suimangService/pom.xml
index 181bb3c..60d406e 100644
--- a/suimangService/pom.xml
+++ b/suimangService/pom.xml
@@ -20,6 +20,11 @@
compile
-->
+
+ com.iformall
+ suimang-swagger
+ 1.0
+
com.iformall
suimangVideo
diff --git a/suimangService/src/main/java/com/iformall/service/sm/ApiGuideService.java b/suimangService/src/main/java/com/iformall/service/sm/ApiGuideService.java
index 71b3f01..23396c4 100644
--- a/suimangService/src/main/java/com/iformall/service/sm/ApiGuideService.java
+++ b/suimangService/src/main/java/com/iformall/service/sm/ApiGuideService.java
@@ -16,4 +16,6 @@ public interface ApiGuideService extends IService {
void saveApiGuide(SaveApiGuideDTO dto);
void updateApiGuide(UpdateApiGuideDTO dto);
+
+ ApiGuide getAvailableApiGuide();
}