xhxu 1 year ago
parent
commit
417c9d2b24
41 changed files with 837 additions and 219 deletions
  1. +16
    -15
      pom.xml
  2. +28
    -0
      suimang-swagger/pom.xml
  3. +19
    -0
      suimang-swagger/src/main/java/com/iformall/annotation/ApiVersion.java
  4. +14
    -0
      suimang-swagger/src/main/java/com/iformall/annotation/BaseEnableSwagger.java
  5. +94
    -0
      suimang-swagger/src/main/java/com/iformall/config/SwaggerConfiguration.java
  6. +123
    -0
      suimang-swagger/src/main/java/com/iformall/config/SwaggerProperties.java
  7. +8
    -0
      suimang-swagger/src/main/java/com/iformall/constant/SwaggerConstant.java
  8. +3
    -16
      suimang.iml
  9. +2
    -1
      suimangAdmin/src/main/java/com/iformall/AdminApplication.java
  10. +1
    -0
      suimangAdmin/src/main/java/com/iformall/config/ShiroConfig.java
  11. +61
    -61
      suimangAdmin/src/main/java/com/iformall/config/Swagger2Config.java
  12. +3
    -1
      suimangAdmin/src/main/java/com/iformall/config/WebConfig.java
  13. +0
    -26
      suimangAdmin/src/main/java/com/iformall/controller/sm/ApiDetailController.java
  14. +16
    -9
      suimangAdmin/src/main/java/com/iformall/controller/sm/ApiGuideController.java
  15. +22
    -10
      suimangAdmin/src/main/java/com/iformall/controller/sm/ApiMenuController.java
  16. +16
    -8
      suimangAdmin/src/main/java/com/iformall/controller/sm/ServiceInfoController.java
  17. +13
    -6
      suimangAdmin/src/main/java/com/iformall/controller/sm/ThirdPartyApiController.java
  18. +4
    -0
      suimangAdmin/src/main/java/com/iformall/controller/sys/HomeController.java
  19. +5
    -1
      suimangAdmin/src/main/java/com/iformall/controller/sys/MallRoleController.java
  20. +8
    -0
      suimangAdmin/src/main/java/com/iformall/controller/sys/MallUserInfoController.java
  21. +3
    -0
      suimangAdmin/src/main/java/com/iformall/controller/sys/SysMenuController.java
  22. +15
    -1
      suimangAdmin/src/main/resources/application-dev.yml
  23. +2
    -0
      suimangCApi/src/main/java/com/iformall/CApplication.java
  24. +61
    -61
      suimangCApi/src/main/java/com/iformall/config/Swagger2Config.java
  25. +3
    -1
      suimangCApi/src/main/java/com/iformall/config/WebMvcConfig.java
  26. +32
    -0
      suimangCApi/src/main/java/com/iformall/controller/ApiGuideController.java
  27. +58
    -0
      suimangCApi/src/main/java/com/iformall/controller/ApiMenuController.java
  28. +1
    -1
      suimangCApi/src/main/java/com/iformall/interceptor/AuthorizationInterceptor.java
  29. +14
    -0
      suimangCApi/src/main/resources/application-dev.yml
  30. +5
    -0
      suimangService/pom.xml
  31. +6
    -0
      suimangService/src/main/java/com/iformall/common/CommonConstants.java
  32. +3
    -0
      suimangService/src/main/java/com/iformall/common/ErrorCode.java
  33. +76
    -0
      suimangService/src/main/java/com/iformall/common/R.java
  34. +27
    -0
      suimangService/src/main/java/com/iformall/domain/vo/sm/ListApiSubmenuVO.java
  35. +3
    -0
      suimangService/src/main/java/com/iformall/mapper/ApiMenuMapper.java
  36. +2
    -0
      suimangService/src/main/java/com/iformall/service/sm/ApiGuideService.java
  37. +5
    -0
      suimangService/src/main/java/com/iformall/service/sm/ApiMenuService.java
  38. +44
    -0
      suimangService/src/main/java/com/iformall/service/sm/impl/ApiGuideServiceImpl.java
  39. +11
    -0
      suimangService/src/main/java/com/iformall/service/sm/impl/ApiMenuServiceImpl.java
  40. +1
    -1
      suimangService/src/main/resources/mapper/ApiGuideMapper.xml
  41. +9
    -0
      suimangService/src/main/resources/mapper/ApiMenuMapper.xml

+ 16
- 15
pom.xml View File

@@ -21,6 +21,7 @@
<module>suimangSchedule</module>
<module>suimangMQConsumer</module>
<module>open-api</module>
<module>suimang-swagger</module>
</modules>

<parent>
@@ -186,21 +187,21 @@
</dependency>

<!-- Swagger -->
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>2.8.0</version>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
<version>2.8.0</version>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-spring-web</artifactId>
<version>2.8.0</version>
</dependency>
<!-- <dependency>-->
<!-- <groupId>io.springfox</groupId>-->
<!-- <artifactId>springfox-swagger2</artifactId>-->
<!-- <version>2.8.0</version>-->
<!-- </dependency>-->
<!-- <dependency>-->
<!-- <groupId>io.springfox</groupId>-->
<!-- <artifactId>springfox-swagger-ui</artifactId>-->
<!-- <version>2.8.0</version>-->
<!-- </dependency>-->
<!-- <dependency>-->
<!-- <groupId>io.springfox</groupId>-->
<!-- <artifactId>springfox-spring-web</artifactId>-->
<!-- <version>2.8.0</version>-->
<!-- </dependency>-->
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-core</artifactId>


+ 28
- 0
suimang-swagger/pom.xml View File

@@ -0,0 +1,28 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<artifactId>suimang</artifactId>
<groupId>com.iformall</groupId>
<version>1.0</version>
</parent>
<modelVersion>4.0.0</modelVersion>

<artifactId>suimang-swagger</artifactId>

<dependencies>
<!--swagger 相关依赖-->
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>2.9.2</version>
</dependency>
<!--doc.html模式-->
<dependency>
<groupId>com.github.xiaoymin</groupId>
<artifactId>swagger-bootstrap-ui</artifactId>
<version>1.9.3</version>
</dependency>
</dependencies>
</project>

+ 19
- 0
suimang-swagger/src/main/java/com/iformall/annotation/ApiVersion.java View File

@@ -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();
}

+ 14
- 0
suimang-swagger/src/main/java/com/iformall/annotation/BaseEnableSwagger.java View File

@@ -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 {
}

+ 94
- 0
suimang-swagger/src/main/java/com/iformall/config/SwaggerConfiguration.java View File

@@ -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<String> 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<Predicate<String>> 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<Predicate<String>> 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();
}
}


+ 123
- 0
suimang-swagger/src/main/java/com/iformall/config/SwaggerProperties.java View File

@@ -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<String, String> services;
private String prePath;
/**
* 是否开启swagger
*/
private Boolean enabled;
/**
* swagger会解析的包路径
**/
private String basePackage = "";
/**
* swagger会解析的url规则
**/
private List<String> basePath = new ArrayList<>();
/**
* 在basePath基础上需要排除的url规则
**/
private List<String> 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<AuthorizationScope> authorizationScopeList = new ArrayList<>();

private List<String> tokenUrlList = new ArrayList<>();
}

@Data
@NoArgsConstructor
public static class AuthorizationScope {

/**
* 作用域名称
*/
private String scope = "";

/**
* 作用域描述
*/
private String description = "";

}
}

+ 8
- 0
suimang-swagger/src/main/java/com/iformall/constant/SwaggerConstant.java View File

@@ -0,0 +1,8 @@
package com.iformall.constant;

public interface SwaggerConstant {
/**
*
*/
String V_1_0_0 = "v1.0.0";
}

+ 3
- 16
suimang.iml View File

@@ -25,6 +25,7 @@
<orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-validation:2.2.5.RELEASE" level="project" />
<orderEntry type="library" name="Maven: jakarta.validation:jakarta.validation-api:2.0.2" level="project" />
<orderEntry type="library" name="Maven: org.hibernate.validator:hibernate-validator:6.0.18.Final" level="project" />
<orderEntry type="library" name="Maven: com.fasterxml:classmate:1.5.1" level="project" />
<orderEntry type="library" name="Maven: org.springframework:spring-web:5.2.4.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.springframework:spring-webmvc:5.2.4.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.springframework:spring-expression:5.2.4.RELEASE" level="project" />
@@ -161,7 +162,7 @@
<orderEntry type="library" scope="TEST" name="Maven: org.assertj:assertj-core:3.13.2" level="project" />
<orderEntry type="library" scope="TEST" name="Maven: org.hamcrest:hamcrest:2.1" level="project" />
<orderEntry type="library" scope="TEST" name="Maven: org.mockito:mockito-core:3.1.0" level="project" />
<orderEntry type="library" name="Maven: net.bytebuddy:byte-buddy:1.10.8" level="project" />
<orderEntry type="library" scope="TEST" name="Maven: net.bytebuddy:byte-buddy:1.10.8" level="project" />
<orderEntry type="library" scope="TEST" name="Maven: net.bytebuddy:byte-buddy-agent:1.10.8" level="project" />
<orderEntry type="library" scope="TEST" name="Maven: org.objenesis:objenesis:2.6" level="project" />
<orderEntry type="library" scope="TEST" name="Maven: org.skyscreamer:jsonassert:1.5.0" level="project" />
@@ -184,21 +185,6 @@
<orderEntry type="library" name="Maven: org.quartz-scheduler:quartz:2.3.0" level="project" />
<orderEntry type="library" name="Maven: com.mchange:mchange-commons-java:0.2.11" level="project" />
<orderEntry type="library" name="Maven: org.slf4j:slf4j-api:1.7.30" level="project" />
<orderEntry type="library" name="Maven: io.springfox:springfox-swagger2:2.8.0" level="project" />
<orderEntry type="library" name="Maven: io.swagger:swagger-annotations:1.5.14" level="project" />
<orderEntry type="library" name="Maven: io.swagger:swagger-models:1.5.14" level="project" />
<orderEntry type="library" name="Maven: io.springfox:springfox-spi:2.8.0" level="project" />
<orderEntry type="library" name="Maven: io.springfox:springfox-core:2.8.0" level="project" />
<orderEntry type="library" name="Maven: io.springfox:springfox-schema:2.8.0" level="project" />
<orderEntry type="library" name="Maven: io.springfox:springfox-swagger-common:2.8.0" level="project" />
<orderEntry type="library" name="Maven: com.fasterxml:classmate:1.5.1" level="project" />
<orderEntry type="library" name="Maven: org.springframework.plugin:spring-plugin-core:1.2.0.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.springframework.plugin:spring-plugin-metadata:1.2.0.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.mapstruct:mapstruct:1.2.0.Final" level="project" />
<orderEntry type="library" name="Maven: io.springfox:springfox-swagger-ui:2.8.0" level="project" />
<orderEntry type="library" name="Maven: io.springfox:springfox-spring-web:2.8.0" level="project" />
<orderEntry type="library" name="Maven: org.reflections:reflections:0.9.11" level="project" />
<orderEntry type="library" name="Maven: org.javassist:javassist:3.21.0-GA" level="project" />
<orderEntry type="library" name="Maven: com.fasterxml.jackson.core:jackson-core:2.10.3" level="project" />
<orderEntry type="library" name="Maven: com.fasterxml.jackson.core:jackson-databind:2.10.3" level="project" />
<orderEntry type="library" name="Maven: com.fasterxml.jackson.core:jackson-annotations:2.10.2" level="project" />
@@ -239,6 +225,7 @@
<orderEntry type="library" name="Maven: org.apache.poi:poi-ooxml-schemas:4.1.1" level="project" />
<orderEntry type="library" name="Maven: org.apache.xmlbeans:xmlbeans:3.1.0" level="project" />
<orderEntry type="library" name="Maven: ognl:ognl:3.2.6" level="project" />
<orderEntry type="library" name="Maven: org.javassist:javassist:3.20.0-GA" level="project" />
<orderEntry type="library" name="Maven: javax.validation:validation-api:2.0.1.Final" level="project" />
<orderEntry type="library" name="Maven: cn.afterturn:easypoi-annotation:4.1.3.A" level="project" />
<orderEntry type="library" name="Maven: org.springframework.boot:spring-boot:2.2.5.RELEASE" level="project" />


+ 2
- 1
suimangAdmin/src/main/java/com/iformall/AdminApplication.java View File

@@ -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


+ 1
- 0
suimangAdmin/src/main/java/com/iformall/config/ShiroConfig.java View File

@@ -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");


+ 61
- 61
suimangAdmin/src/main/java/com/iformall/config/Swagger2Config.java View File

@@ -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<Parameter> pars = new ArrayList<Parameter>();
//增加一个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();
}
}
//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<Parameter> pars = new ArrayList<Parameter>();
// //增加一个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();
// }
//
//}

+ 3
- 1
suimangAdmin/src/main/java/com/iformall/config/WebConfig.java View File

@@ -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/");


+ 0
- 26
suimangAdmin/src/main/java/com/iformall/controller/sm/ApiDetailController.java View File

@@ -1,26 +0,0 @@
package com.iformall.controller.sm;

import com.iformall.common.ResultData;
import com.iformall.domain.dto.sm.SaveApiMenuDTO;
import com.iformall.domain.po.sm.ApiDetail;
import com.iformall.service.sm.ApiDetailService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

@RestController
@RequestMapping("/apiDetail")
@Api(tags = "api菜单详情接口")
public class ApiDetailController {

@Autowired
private ApiDetailService apiDetailService;

@ApiOperation("查询单个api菜单详情")
@GetMapping("/get")
public ResultData getApiDetail(Long id) {
ApiDetail apiDetail = apiDetailService.getApiDetail(id);
return new ResultData(apiDetail);
}
}

+ 16
- 9
suimangAdmin/src/main/java/com/iformall/controller/sm/ApiGuideController.java View File

@@ -1,6 +1,10 @@
package com.iformall.controller.sm;

import com.github.pagehelper.PageInfo;
import com.iformall.annotation.ApiVersion;
import com.iformall.common.R;
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,23 +22,26 @@ public class ApiGuideController {
@Autowired
private ApiGuideService apiGuideService;

@ApiOperation("分页查询api菜单")
@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));
public R<PageInfo<ApiGuide>> pageApiGuide(ApiGuide apiGuide, Integer pageNum, Integer pageSize) {
return R.ok(apiGuideService.pageApiGuide(apiGuide, pageNum, pageSize));
}

@ApiOperation("新增api菜单")
@ApiVersion(group = SwaggerConstant.V_1_0_0)
@ApiOperation("新增api指南")
@PostMapping("/save")
public ResultData saveApiGuide(@RequestBody SaveApiGuideDTO dto) {
public R<Void> saveApiGuide(@RequestBody SaveApiGuideDTO dto) {
apiGuideService.saveApiGuide(dto);
return new ResultData();
return R.ok();
}

@ApiOperation("修改api菜单")
@ApiVersion(group = SwaggerConstant.V_1_0_0)
@ApiOperation("修改api指南")
@PostMapping("/update")
public ResultData updateApiGuide(@RequestBody UpdateApiGuideDTO dto) {
public R<Void> updateApiGuide(@RequestBody UpdateApiGuideDTO dto) {
apiGuideService.updateApiGuide(dto);
return new ResultData();
return R.ok();
}
}

+ 22
- 10
suimangAdmin/src/main/java/com/iformall/controller/sm/ApiMenuController.java View File

@@ -1,10 +1,15 @@
package com.iformall.controller.sm;

import com.github.pagehelper.PageInfo;
import com.iformall.annotation.ApiVersion;
import com.iformall.common.ErrorCode;
import com.iformall.common.R;
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;
import com.iformall.domain.vo.sm.ApiMenuVO;
import com.iformall.exception.BizException;
import com.iformall.service.sm.ApiMenuService;
import io.swagger.annotations.Api;
@@ -12,6 +17,8 @@ import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.List;

@RestController
@RequestMapping("/apiMenu")
@Api(tags = "api菜单接口")
@@ -20,38 +27,43 @@ 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));
public R<PageInfo<ApiMenuVO>> pageApiMenu(ApiMenu ApiMenu, Integer pageNum, Integer pageSize) {
return R.ok(apiMenuService.pageApiMenu(ApiMenu, pageNum, pageSize));
}

@ApiVersion(group = SwaggerConstant.V_1_0_0)
@ApiOperation("单个查询api菜单")
@GetMapping("/get")
public ResultData getApiMenu(Long id) {
public R<ApiMenuVO> getApiMenu(Long id) {
if (id == null) {
throw new BizException(ErrorCode.SYS_PARAMETER_NOT_NULL);
}
return new ResultData(apiMenuService.getApiMenu(id));
return R.ok(apiMenuService.getApiMenu(id));
}

@ApiVersion(group = SwaggerConstant.V_1_0_0)
@ApiOperation("新增api菜单")
@PostMapping("/save")
public ResultData saveApiMenu(@RequestBody SaveApiMenuDTO dto) {
public R<Void> saveApiMenu(@RequestBody SaveApiMenuDTO dto) {
apiMenuService.saveApiMenu(dto);
return new ResultData();
return R.ok();
}

@ApiVersion(group = SwaggerConstant.V_1_0_0)
@ApiOperation("修改api菜单")
@PostMapping("/update")
public ResultData updateApiMenu(@RequestBody UpdateApiMenuDTO dto) {
public R<Void> updateApiMenu(@RequestBody UpdateApiMenuDTO dto) {
apiMenuService.updateApiMenu(dto);
return new ResultData();
return R.ok();
}

@ApiVersion(group = SwaggerConstant.V_1_0_0)
@ApiOperation("全查询父级api菜单")
@GetMapping("/listParentMenu")
public ResultData listParentMenu() {
return new ResultData(apiMenuService.listParentMenu());
public R<List<ApiMenu>> listParentMenu() {
return R.ok(apiMenuService.listParentMenu());
}
}

+ 16
- 8
suimangAdmin/src/main/java/com/iformall/controller/sm/ServiceInfoController.java View File

@@ -1,6 +1,10 @@
package com.iformall.controller.sm;

import com.github.pagehelper.PageInfo;
import com.iformall.annotation.ApiVersion;
import com.iformall.common.R;
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,30 +24,34 @@ 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));
public R<PageInfo<ServiceInfo>> pageServiceInfo(ServiceInfo serviceInfo, Integer pageNum, Integer pageSize) {
return R.ok(serviceInfoService.pageServiceInfo(serviceInfo, pageNum, pageSize));
}

@ApiVersion(group = SwaggerConstant.V_1_0_0)
@ApiOperation("新增合作商")
@PostMapping("/save")
public ResultData saveServiceInfo(@RequestBody SaveServiceInfoDTO dto) {
public R<Void> saveServiceInfo(@RequestBody SaveServiceInfoDTO dto) {
serviceInfoService.saveServiceInfo(dto);
return new ResultData();
return R.ok();
}

@ApiVersion(group = SwaggerConstant.V_1_0_0)
@ApiOperation("修改合作商")
@PostMapping("/update")
public ResultData updateServiceInfo(@RequestBody UpdateServiceInfoDTO dto) {
public R<Void> updateServiceInfo(@RequestBody UpdateServiceInfoDTO dto) {
serviceInfoService.updateServiceInfo(dto);
return new ResultData();
return R.ok();
}

@ApiVersion(group = SwaggerConstant.V_1_0_0)
@ApiOperation("修改合作商状态")
@PostMapping("/updateStatus")
public ResultData updateServiceInfoStatus(@RequestBody UpdateServiceInfoStatusDTO dto) {
public R<Void> updateServiceInfoStatus(@RequestBody UpdateServiceInfoStatusDTO dto) {
serviceInfoService.updateServiceInfoStatus(dto);
return new ResultData();
return R.ok();
}
}

+ 13
- 6
suimangAdmin/src/main/java/com/iformall/controller/sm/ThirdPartyApiController.java View File

@@ -1,7 +1,11 @@
package com.iformall.controller.sm;

import com.github.pagehelper.PageInfo;
import com.iformall.annotation.ApiVersion;
import com.iformall.common.ErrorCode;
import com.iformall.common.R;
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,25 +23,28 @@ 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));
public R<PageInfo<WxThirdPartyApi>> pageThirdPartyApi(WxThirdPartyApi thirdPartyApi, Integer pageNum, Integer pageSize) {
return R.ok(thirdPartyApiService.pageThirdPartyApi(thirdPartyApi, pageNum, pageSize));
}

@ApiVersion(group = SwaggerConstant.V_1_0_0)
@ApiOperation("单个查询秘钥")
@GetMapping("/get")
public ResultData getThirdPartyApi(Long id) {
public R<WxThirdPartyApi> getThirdPartyApi(Long id) {
if (id == null) {
throw new BizException(ErrorCode.SYS_PARAMETER_NOT_NULL);
}
return new ResultData(thirdPartyApiService.getThirdPartyApi(id));
return R.ok(thirdPartyApiService.getThirdPartyApi(id));
}

@ApiVersion(group = SwaggerConstant.V_1_0_0)
@ApiOperation("修改秘钥状态")
@PostMapping("/updateStatus")
public ResultData updateThirdPartyApiStatus(@RequestBody UpdateThirdPartyApiStatusDTO dto) {
public R<Void> updateThirdPartyApiStatus(@RequestBody UpdateThirdPartyApiStatusDTO dto) {
thirdPartyApiService.updateThirdPartyApiStatus(dto);
return new ResultData();
return R.ok();
}
}

+ 4
- 0
suimangAdmin/src/main/java/com/iformall/controller/sys/HomeController.java View File

@@ -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<String, Object> 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) {


+ 5
- 1
suimangAdmin/src/main/java/com/iformall/controller/sys/MallRoleController.java View File

@@ -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")


+ 8
- 0
suimangAdmin/src/main/java/com/iformall/controller/sys/MallUserInfoController.java View File

@@ -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 = "用户管理-修改密码")


+ 3
- 0
suimangAdmin/src/main/java/com/iformall/controller/sys/SysMenuController.java View File

@@ -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")


+ 15
- 1
suimangAdmin/src/main/resources/application-dev.yml View File

@@ -209,4 +209,18 @@ suimang:
photo_speak_hy: xxx
digital_avatar: xxx
digital_avatar_hy: xxx
callbackUrl: xxx
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

+ 2
- 0
suimangCApi/src/main/java/com/iformall/CApplication.java View File

@@ -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


+ 61
- 61
suimangCApi/src/main/java/com/iformall/config/Swagger2Config.java View File

@@ -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<Parameter> pars = new ArrayList<Parameter>();
//增加一个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();
}
}
//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<Parameter> pars = new ArrayList<Parameter>();
// //增加一个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();
// }
//
//}

+ 3
- 1
suimangCApi/src/main/java/com/iformall/config/WebMvcConfig.java View File

@@ -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/");


+ 32
- 0
suimangCApi/src/main/java/com/iformall/controller/ApiGuideController.java View File

@@ -0,0 +1,32 @@
package com.iformall.controller;

import com.iformall.annotation.ApiVersion;
import com.iformall.annotation.AuthIgnore;
import com.iformall.common.R;
import com.iformall.common.ResultData;
import com.iformall.constant.SwaggerConstant;
import com.iformall.domain.po.sm.ApiGuide;
import com.iformall.service.sm.ApiGuideService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
@RequestMapping("/api/apiGuide")
@Api(tags = "api指南接口")
public class ApiGuideController {

@Autowired
private ApiGuideService apiGuideService;

@AuthIgnore
@ApiVersion(group = SwaggerConstant.V_1_0_0)
@ApiOperation("单个查询api指南")
@GetMapping("/getAvailableApiGuide")
public R<ApiGuide> getAvailableApiGuide() {
return R.ok(apiGuideService.getAvailableApiGuide());
}
}

+ 58
- 0
suimangCApi/src/main/java/com/iformall/controller/ApiMenuController.java View File

@@ -0,0 +1,58 @@
package com.iformall.controller;

import com.iformall.annotation.ApiVersion;
import com.iformall.annotation.AuthIgnore;
import com.iformall.common.ErrorCode;
import com.iformall.common.R;
import com.iformall.common.ResultData;
import com.iformall.constant.SwaggerConstant;
import com.iformall.domain.po.sm.ApiMenu;
import com.iformall.domain.vo.sm.ApiMenuVO;
import com.iformall.domain.vo.sm.ListApiSubmenuVO;
import com.iformall.exception.BizException;
import com.iformall.service.sm.ApiMenuService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.List;

@RestController
@RequestMapping("/api/apiMenu")
@Api(tags = "api菜单接口")
public class ApiMenuController {
@Autowired
private ApiMenuService apiMenuService;

@AuthIgnore
@ApiVersion(group = SwaggerConstant.V_1_0_0)
@ApiOperation("全查询api菜单")
@GetMapping("/list")
public R<List<ApiMenu>> listApiMenu() {
return R.ok(apiMenuService.listMenu());
}

@AuthIgnore
@ApiVersion(group = SwaggerConstant.V_1_0_0)
@ApiOperation("查询某个api菜单所有子菜单")
@GetMapping("/listSubmenu")
public R<List<ListApiSubmenuVO>> listApiSubmenu(Long id) {
if (id == null) {
throw new BizException(ErrorCode.SYS_PARAMETER_NOT_NULL);
}
return R.ok(apiMenuService.listApiSubmenu(id));
}

@AuthIgnore
@ApiVersion(group = SwaggerConstant.V_1_0_0)
@ApiOperation("单个查询菜单详情")
@GetMapping("/get")
public R<ApiMenuVO> getApiMenu(Long id) {
if (id == null) {
throw new BizException(ErrorCode.SYS_PARAMETER_NOT_NULL);
}
return R.ok(apiMenuService.getApiMenu(id));
}
}

+ 1
- 1
suimangCApi/src/main/java/com/iformall/interceptor/AuthorizationInterceptor.java View File

@@ -44,7 +44,7 @@ public class AuthorizationInterceptor extends HandlerInterceptorAdapter {

@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
AuthIgnore annotation;
if(handler instanceof HandlerMethod) {
annotation = ((HandlerMethod) handler).getMethodAnnotation(AuthIgnore.class);


+ 14
- 0
suimangCApi/src/main/resources/application-dev.yml View File

@@ -196,3 +196,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

+ 5
- 0
suimangService/pom.xml View File

@@ -20,6 +20,11 @@
<scope>compile</scope>
</dependency>
-->
<dependency>
<groupId>com.iformall</groupId>
<artifactId>suimang-swagger</artifactId>
<version>1.0</version>
</dependency>
<dependency>
<groupId>com.iformall</groupId>
<artifactId>suimangVideo</artifactId>


+ 6
- 0
suimangService/src/main/java/com/iformall/common/CommonConstants.java View File

@@ -1,6 +1,12 @@
package com.iformall.common;

public interface CommonConstants {
/**
* 接口响应码:200:成功 500:失败
*/
Integer SUCCESS = 200;
Integer FAILED = 500;

/**
* 状态(0:正常,1:锁定)
*/


+ 3
- 0
suimangService/src/main/java/com/iformall/common/ErrorCode.java View File

@@ -681,6 +681,9 @@ public enum ErrorCode{

SECRET_NOT_EXISTS(71001, "该秘钥不存在"),
SERVICE_LOCKED(71002, "合作商被锁定,无法修改"),

NAME_REPEAT(81000, "名称重复"),
EXIST_AVAILABLE_GUIDE(81001, "存在可用指南"),
;

private int code;


+ 76
- 0
suimangService/src/main/java/com/iformall/common/R.java View File

@@ -0,0 +1,76 @@
package com.iformall.common;

import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import java.io.Serializable;

/**
* 响应信息主体
*
* @author xmzhao71
* @date 2023-10-26
*/
@ApiModel(description = "响应信息主体")
@Data
public class R<T> implements Serializable {
private static final long serialVersionUID = 1L;

@ApiModelProperty(value = "返回标记:成功=0,失败=1")
private int code;

@ApiModelProperty(value = "返回信息")
private String message;

@ApiModelProperty(value = "数据")
private T data;

public Boolean isOk() {
return code == 200;
}

public static <T> R<T> ok() {
return restResult(null, CommonConstants.SUCCESS, null);
}

public static <T> R<T> ok(T data) {
return restResult(data, CommonConstants.SUCCESS, null);
}

public static <T> R<T> ok(T data, String msg) {
return restResult(data, CommonConstants.SUCCESS, msg);
}

public static <T> R<T> failed() {
return restResult(null, CommonConstants.FAILED, null);
}

public static <T> R<T> failed(String msg) {
return restResult(null, CommonConstants.FAILED, msg);
}

public static <T> R<T> failed(T data) {
return restResult(data, CommonConstants.FAILED, null);
}

public static <T> R<T> failed(T data, String msg) {
return restResult(data, CommonConstants.FAILED, msg);
}

public static <T> R<T> failed(T data, int code, String msg) {
return restResult(data, code, msg);
}

public static <T> R<T> failed(int code, String msg) {
return restResult(null, code, msg);
}

private static <T> R<T> restResult(T data, int code, String msg) {
R<T> apiResult = new R<>();
apiResult.setCode(code);
apiResult.setData(data);
apiResult.setMessage(msg);
return apiResult;
}
}

+ 27
- 0
suimangService/src/main/java/com/iformall/domain/vo/sm/ListApiSubmenuVO.java View File

@@ -0,0 +1,27 @@
package com.iformall.domain.vo.sm;

import com.iformall.domain.po.sm.ApiDetail;
import com.iformall.domain.po.sm.ApiMenu;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import java.util.Date;
import java.util.List;

@ApiModel(value = "查询某个api菜单所有子菜单相应数据")
@Data
public class ListApiSubmenuVO {
@ApiModelProperty("菜单id")
private Long id;
@ApiModelProperty("修改时间")
private Date updateTime;
@ApiModelProperty("菜单名称")
private String name;
@ApiModelProperty("状态(0:正常,1:锁定)")
private Integer status;
@ApiModelProperty("详情id")
private Long detailId;
@ApiModelProperty("接口描述")
private String description;
}

+ 3
- 0
suimangService/src/main/java/com/iformall/mapper/ApiMenuMapper.java View File

@@ -3,6 +3,7 @@ package com.iformall.mapper;
import com.iformall.domain.po.sm.ApiMenu;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.iformall.domain.vo.sm.ApiMenuVO;
import com.iformall.domain.vo.sm.ListApiSubmenuVO;

import java.util.List;

@@ -16,6 +17,8 @@ public interface ApiMenuMapper extends BaseMapper<ApiMenu> {
List<ApiMenu> listParentMenu();

List<ApiMenuVO> listApiMenuAndDetail(ApiMenu apiMenu);

List<ListApiSubmenuVO> listSubmenu(Long id);
}




+ 2
- 0
suimangService/src/main/java/com/iformall/service/sm/ApiGuideService.java View File

@@ -16,4 +16,6 @@ public interface ApiGuideService extends IService<ApiGuide> {
void saveApiGuide(SaveApiGuideDTO dto);

void updateApiGuide(UpdateApiGuideDTO dto);

ApiGuide getAvailableApiGuide();
}

+ 5
- 0
suimangService/src/main/java/com/iformall/service/sm/ApiMenuService.java View File

@@ -6,6 +6,7 @@ import com.iformall.domain.dto.sm.UpdateApiMenuDTO;
import com.iformall.domain.po.sm.ApiMenu;
import com.baomidou.mybatisplus.extension.service.IService;
import com.iformall.domain.vo.sm.ApiMenuVO;
import com.iformall.domain.vo.sm.ListApiSubmenuVO;

import java.util.List;

@@ -23,4 +24,8 @@ public interface ApiMenuService extends IService<ApiMenu> {
List<ApiMenu> listParentMenu();

ApiMenuVO getApiMenu(Long id);

List<ApiMenu> listMenu();

List<ListApiSubmenuVO> listApiSubmenu(Long id);
}

+ 44
- 0
suimangService/src/main/java/com/iformall/service/sm/impl/ApiGuideServiceImpl.java View File

@@ -1,16 +1,23 @@
package com.iformall.service.sm.impl;

import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.iformall.common.CommonConstants;
import com.iformall.common.ErrorCode;
import com.iformall.domain.dto.sm.SaveApiGuideDTO;
import com.iformall.domain.dto.sm.UpdateApiGuideDTO;
import com.iformall.domain.po.sm.ApiGuide;
import com.iformall.exception.BizException;
import com.iformall.service.sm.ApiGuideService;
import com.iformall.mapper.ApiGuideMapper;
import org.apache.commons.collections.CollectionUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;

/**
*
*/
@@ -27,15 +34,52 @@ public class ApiGuideServiceImpl extends ServiceImpl<ApiGuideMapper, ApiGuide> i

@Override
public void saveApiGuide(SaveApiGuideDTO dto) {
ApiGuide dbApiGuide = apiGuideMapper.selectOne(new LambdaQueryWrapper<ApiGuide>().eq(ApiGuide::getName, dto.getName()));
if (dbApiGuide != null) {
throw new BizException(ErrorCode.NAME_REPEAT);
}

// 暂时处理,存在正常的指南,则不可新增新的正常指南
List<ApiGuide> apiGuides = apiGuideMapper.selectList(new LambdaQueryWrapper<ApiGuide>()
.eq(ApiGuide::getStatus, CommonConstants.STATUS_NORMAL)
.eq(ApiGuide::getDeleteFlag, CommonConstants.FLAG_FALSE));
if (CommonConstants.STATUS_NORMAL.equals(dto.getStatus()) && !CollectionUtils.isEmpty(apiGuides)) {
throw new BizException(ErrorCode.EXIST_AVAILABLE_GUIDE);
}

ApiGuide apiGuide = SaveApiGuideDTO.mapping(dto);
apiGuideMapper.insert(apiGuide);
}

@Override
public void updateApiGuide(UpdateApiGuideDTO dto) {
ApiGuide dbApiGuide = apiGuideMapper.selectOne(new LambdaQueryWrapper<ApiGuide>()
.eq(ApiGuide::getName, dto.getName())
.ne(ApiGuide::getId, dto.getId()));
if (dbApiGuide != null) {
throw new BizException(ErrorCode.NAME_REPEAT);
}

// 暂时处理,存在正常的指南,则不可修改新的正常指南
List<ApiGuide> apiGuides = apiGuideMapper.selectList(new LambdaQueryWrapper<ApiGuide>()
.eq(ApiGuide::getStatus, CommonConstants.STATUS_NORMAL)
.eq(ApiGuide::getDeleteFlag, CommonConstants.FLAG_FALSE)
.ne(ApiGuide::getId, dto.getId()));
if (CommonConstants.STATUS_NORMAL.equals(dto.getStatus()) && !CollectionUtils.isEmpty(apiGuides)) {
throw new BizException(ErrorCode.EXIST_AVAILABLE_GUIDE);
}

ApiGuide apiGuide = UpdateApiGuideDTO.mapping(dto);
apiGuideMapper.updateById(apiGuide);
}

@Override
public ApiGuide getAvailableApiGuide() {
ApiGuide apiGuide = new ApiGuide();
apiGuide.setStatus(CommonConstants.STATUS_NORMAL);
List<ApiGuide> apiGuides = apiGuideMapper.listApiGuide(apiGuide);
return !CollectionUtils.isEmpty(apiGuides) ? apiGuides.get(0) : null;
}
}




+ 11
- 0
suimangService/src/main/java/com/iformall/service/sm/impl/ApiMenuServiceImpl.java View File

@@ -10,6 +10,7 @@ import com.iformall.domain.dto.sm.UpdateApiMenuDTO;
import com.iformall.domain.po.sm.ApiDetail;
import com.iformall.domain.po.sm.ApiMenu;
import com.iformall.domain.vo.sm.ApiMenuVO;
import com.iformall.domain.vo.sm.ListApiSubmenuVO;
import com.iformall.mapper.ApiDetailMapper;
import com.iformall.service.sm.ApiMenuService;
import com.iformall.mapper.ApiMenuMapper;
@@ -76,6 +77,16 @@ public class ApiMenuServiceImpl extends ServiceImpl<ApiMenuMapper, ApiMenu> impl
public List<ApiMenu> listParentMenu() {
return apiMenuMapper.listParentMenu();
}

@Override
public List<ApiMenu> listMenu() {
return apiMenuMapper.listApiMenu(null);
}

@Override
public List<ListApiSubmenuVO> listApiSubmenu(Long id) {
return apiMenuMapper.listSubmenu(id);
}
}




+ 1
- 1
suimangService/src/main/resources/mapper/ApiGuideMapper.xml View File

@@ -30,7 +30,7 @@
and `name` = #{name}
</if>
<if test=" null != status ">
and `status = #{status}
and `status` = #{status}
</if>
</sql>



+ 9
- 0
suimangService/src/main/resources/mapper/ApiMenuMapper.xml View File

@@ -79,4 +79,13 @@
LEFT JOIN api_detail d ON m.id = d.menu_id
<include refid="dynamicWhereConditions"/>
</select>
<select id="listSubmenu" resultType="com.iformall.domain.vo.sm.ListApiSubmenuVO">
SELECT
m.id AS id, m.update_time AS updateTime, m.name AS name, m.status AS status, d.id AS detailId, d.description AS description
FROM
api_menu m
LEFT JOIN api_detail d ON m.id = d.menu_id
WHERE
m.delete_flag = 0 AND m.`status` = 0 AND m.parent_id = #{id}
</select>
</mapper>

Loading…
Cancel
Save