From ac4005c9ddf10fafc28d00f7052b80ff809e9ac3 Mon Sep 17 00:00:00 2001 From: yueye <768242801@qq.com> Date: Tue, 11 Jan 2022 16:58:54 +0800 Subject: [PATCH] =?UTF-8?q?add=20=E6=96=B0=E5=A2=9E=20ruoyi-doc=20?= =?UTF-8?q?=E6=A8=A1=E5=9D=97=20=E9=9B=86=E6=88=90=20Knife4j?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 2 +- config/dev/application.yml | 38 +- config/dev/ruoyi-gen.yml | 4 - config/dev/ruoyi-system.yml | 4 - pom.xml | 22 +- ruoyi-common/ruoyi-common-core/pom.xml | 10 +- ruoyi-common/ruoyi-common-swagger/pom.xml | 13 +- .../annotation/EnableCustomSwagger2.java | 15 - .../config/SwaggerAutoConfiguration.java | 235 ++++---- .../config/SwaggerWebConfiguration.java | 20 - .../{ => properties}/SwaggerProperties.java | 286 +++++----- .../main/resources/META-INF/spring.factories | 5 +- ruoyi-gateway/pom.xml | 12 - .../ruoyi/gateway/config/SwaggerProvider.java | 73 --- .../ruoyi/gateway/handler/SwaggerHandler.java | 48 -- ruoyi-modules/ruoyi-file/pom.xml | 2 +- .../com/ruoyi/file/RuoYiFileApplication.java | 2 - .../file/controller/SysFileController.java | 88 +-- .../src/main/resources/bootstrap.yml | 66 +-- ruoyi-modules/ruoyi-gen/pom.xml | 7 - .../com/ruoyi/gen/RuoYiGenApplication.java | 2 - .../ruoyi/gen/controller/GenController.java | 2 + .../src/main/resources/bootstrap.yml | 70 +-- ruoyi-modules/ruoyi-system/pom.xml | 13 +- .../ruoyi/system/RuoYiSystemApplication.java | 2 - .../src/main/resources/bootstrap.yml | 70 +-- ruoyi-ui/src/api/monitor/job.js | 71 --- ruoyi-ui/src/api/monitor/jobLog.js | 26 - ruoyi-ui/src/components/RuoYi/Doc/index.vue | 4 +- ruoyi-ui/src/components/RuoYi/Git/index.vue | 4 +- ruoyi-ui/src/router/index.js | 328 ++++++----- ruoyi-ui/src/views/index.vue | 4 +- ruoyi-ui/src/views/monitor/job/index.vue | 516 ------------------ ruoyi-ui/src/views/monitor/job/log.vue | 299 ---------- ruoyi-visual/pom.xml | 1 + ruoyi-visual/ruoyi-doc/pom.xml | 88 +++ .../com/ruoyi/doc/RuoyiDocApplication.java | 19 + .../src/main/resources/application.yml | 23 + .../src/main/resources/bootstrap.yml | 33 ++ .../ruoyi-doc/src/main/resources/logback.xml | 97 ++++ sql/ry_system.sql | 4 +- 41 files changed, 912 insertions(+), 1716 deletions(-) delete mode 100644 ruoyi-common/ruoyi-common-swagger/src/main/java/com/ruoyi/common/swagger/annotation/EnableCustomSwagger2.java delete mode 100644 ruoyi-common/ruoyi-common-swagger/src/main/java/com/ruoyi/common/swagger/config/SwaggerWebConfiguration.java rename ruoyi-common/ruoyi-common-swagger/src/main/java/com/ruoyi/common/swagger/config/{ => properties}/SwaggerProperties.java (90%) delete mode 100644 ruoyi-gateway/src/main/java/com/ruoyi/gateway/config/SwaggerProvider.java delete mode 100644 ruoyi-gateway/src/main/java/com/ruoyi/gateway/handler/SwaggerHandler.java delete mode 100644 ruoyi-ui/src/api/monitor/job.js delete mode 100644 ruoyi-ui/src/api/monitor/jobLog.js delete mode 100644 ruoyi-ui/src/views/monitor/job/index.vue delete mode 100644 ruoyi-ui/src/views/monitor/job/log.vue create mode 100644 ruoyi-visual/ruoyi-doc/pom.xml create mode 100644 ruoyi-visual/ruoyi-doc/src/main/java/com/ruoyi/doc/RuoyiDocApplication.java create mode 100644 ruoyi-visual/ruoyi-doc/src/main/resources/application.yml create mode 100644 ruoyi-visual/ruoyi-doc/src/main/resources/bootstrap.yml create mode 100644 ruoyi-visual/ruoyi-doc/src/main/resources/logback.xml diff --git a/README.md b/README.md index 58e116308..6b7aac7b3 100644 --- a/README.md +++ b/README.md @@ -49,7 +49,7 @@ | Redis客户端 | Redisson | [Redisson文档](https://github.com/redisson/redisson/wiki/%E7%9B%AE%E5%BD%95) | 支持单机、集群配置 | | 校验框架(待优化) | Validation | [Validation文档](https://docs.jboss.org/hibernate/stable/validator/reference/en-US/html_single/) | 增强接口安全性、严谨性 支持国际化 | | Excel框架(未完成) | Alibaba EasyExcel | [EasyExcel文档](https://www.yuque.com/easyexcel/doc/easyexcel) | 性能优异 扩展性强 | -| 文档框架(未完成) | Knife4j | [Knife4j文档](https://doc.xiaominfo.com/knife4j/documentation/) | 美化接口文档 | +| 文档框架 | Knife4j | [Knife4j文档](https://doc.xiaominfo.com/knife4j/documentation/) | 美化接口文档 | | 工具类框架 | Hutool、Lombok | [Hutool文档](https://www.hutool.cn/docs/) | 减少代码冗余 增加安全性 | | 代码生成器(未完成) | 适配MP、Knife4j规范化代码 | [Hutool文档](https://www.hutool.cn/docs/) | 一键生成前后端代码 | | 部署方式(未完成) | Docker | [Docker文档](https://docs.docker.com/) | 容器编排 一键部署业务集群 | diff --git a/config/dev/application.yml b/config/dev/application.yml index b441e0afb..f1966db3d 100644 --- a/config/dev/application.yml +++ b/config/dev/application.yml @@ -90,7 +90,7 @@ redisson: # 单节点配置 singleServerConfig: # 客户端名称 - clientName: ${ruoyi.name} + clientName: ${spring.application.name} # 最小空闲连接数 connectionMinimumIdleSize: 32 # 连接池大小 @@ -158,8 +158,40 @@ mybatis: # swagger配置 swagger: - license: Powered By ruoyi - licenseUrl: https://ruoyi.vip + # 是否开启swagger + enabled: true + # 标题 + title: '标题:RuoYi-Cloud-Plus微服务权限管理系统_接口文档' + # 描述 + description: '描述:微服务权限管理系统, 具体包括XXX,XXX模块...' + # 版本 + version: '版本号:系统版本...' + # 作者信息 + contact: + name: Lion Li + email: crazylionli@163.com + url: https://gitee.com/JavaLionLi/RuoYi-Cloud-Plus + +knife4j: + # 是否开启Knife4j增强模式 + enable: true + # 是否开启生产环境保护策略 + production: true + # 登录认证 + basic: + enable: true + username: ruoyi + password: 123456 + # 前端Ui的个性化配置属性 + setting: + # 默认语言 + language: zh-CN + # 是否显示Footer + enableFooter: true + # 是否开启动态参数调试功能 + enableDynamicParameter: true + # 是否在每个Debug调试栏后显示刷新变量按钮 + enableReloadCacheParameter: true # seata配置 seata: diff --git a/config/dev/ruoyi-gen.yml b/config/dev/ruoyi-gen.yml index 04ddc60a8..eeca6d0e3 100644 --- a/config/dev/ruoyi-gen.yml +++ b/config/dev/ruoyi-gen.yml @@ -4,10 +4,6 @@ dubbo: # 需要远程调用的服务 多个用逗号分割 subscribed-services: ruoyi-system -# swagger配置 -swagger: - title: 代码生成接口文档 - spring: datasource: dynamic: diff --git a/config/dev/ruoyi-system.yml b/config/dev/ruoyi-system.yml index 42c4928a6..fabe6022d 100644 --- a/config/dev/ruoyi-system.yml +++ b/config/dev/ruoyi-system.yml @@ -4,10 +4,6 @@ dubbo: # 需要远程调用的服务 多个用逗号分割 subscribed-services: ruoyi-file -# swagger配置 -swagger: - title: 系统模块接口文档 - spring: datasource: dynamic: diff --git a/pom.xml b/pom.xml index b46faac3b..bccac530d 100644 --- a/pom.xml +++ b/pom.xml @@ -23,7 +23,6 @@ 2.0.3 2.5.4 2.2.0 - 3.0.0 1.6.2 1.27.2 2.3.2 @@ -44,6 +43,8 @@ 2.7.15 1.0.11 2.3.0 + 2.0.9 + 3.0.3 localhost @@ -184,11 +185,6 @@ - - io.swagger - swagger-models - ${swagger.core.version} - io.swagger swagger-annotations @@ -231,9 +227,9 @@ - - commons-collections - commons-collections + + commons-collections + commons-collections ${commons-collections.version} @@ -271,6 +267,12 @@ ${xxl-job.version} + + com.github.xiaoymin + knife4j-micro-spring-boot-starter + ${knife4j.version} + + @@ -349,4 +351,4 @@ - \ No newline at end of file + diff --git a/ruoyi-common/ruoyi-common-core/pom.xml b/ruoyi-common/ruoyi-common-core/pom.xml index 8eef60884..acf68473f 100644 --- a/ruoyi-common/ruoyi-common-core/pom.xml +++ b/ruoyi-common/ruoyi-common-core/pom.xml @@ -10,7 +10,7 @@ 4.0.0 ruoyi-common-core - + ruoyi-common-core核心模块 @@ -22,7 +22,7 @@ - + org.springframework.cloud @@ -131,6 +131,12 @@ hutool-extra + + + org.springframework.boot + spring-boot-configuration-processor + + diff --git a/ruoyi-common/ruoyi-common-swagger/pom.xml b/ruoyi-common/ruoyi-common-swagger/pom.xml index ae5694b86..82db15783 100644 --- a/ruoyi-common/ruoyi-common-swagger/pom.xml +++ b/ruoyi-common/ruoyi-common-swagger/pom.xml @@ -17,17 +17,22 @@ + + + com.ruoyi + ruoyi-common-core + + com.ruoyi ruoyi-common-web - + - io.springfox - springfox-swagger2 - ${swagger.fox.version} + com.github.xiaoymin + knife4j-micro-spring-boot-starter diff --git a/ruoyi-common/ruoyi-common-swagger/src/main/java/com/ruoyi/common/swagger/annotation/EnableCustomSwagger2.java b/ruoyi-common/ruoyi-common-swagger/src/main/java/com/ruoyi/common/swagger/annotation/EnableCustomSwagger2.java deleted file mode 100644 index 2fef0f5a7..000000000 --- a/ruoyi-common/ruoyi-common-swagger/src/main/java/com/ruoyi/common/swagger/annotation/EnableCustomSwagger2.java +++ /dev/null @@ -1,15 +0,0 @@ -package com.ruoyi.common.swagger.annotation; - -import com.ruoyi.common.swagger.config.SwaggerAutoConfiguration; -import org.springframework.context.annotation.Import; - -import java.lang.annotation.*; - -@Target({ElementType.TYPE}) -@Retention(RetentionPolicy.RUNTIME) -@Documented -@Inherited -@Import({SwaggerAutoConfiguration.class}) -public @interface EnableCustomSwagger2 { - -} diff --git a/ruoyi-common/ruoyi-common-swagger/src/main/java/com/ruoyi/common/swagger/config/SwaggerAutoConfiguration.java b/ruoyi-common/ruoyi-common-swagger/src/main/java/com/ruoyi/common/swagger/config/SwaggerAutoConfiguration.java index c6ab11626..44a420753 100644 --- a/ruoyi-common/ruoyi-common-swagger/src/main/java/com/ruoyi/common/swagger/config/SwaggerAutoConfiguration.java +++ b/ruoyi-common/ruoyi-common-swagger/src/main/java/com/ruoyi/common/swagger/config/SwaggerAutoConfiguration.java @@ -1,116 +1,119 @@ -package com.ruoyi.common.swagger.config; - -import org.springframework.boot.autoconfigure.EnableAutoConfiguration; -import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; -import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; -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.*; -import springfox.documentation.spi.DocumentationType; -import springfox.documentation.spi.service.contexts.SecurityContext; -import springfox.documentation.spring.web.plugins.ApiSelectorBuilder; -import springfox.documentation.spring.web.plugins.Docket; -import springfox.documentation.swagger2.annotations.EnableSwagger2; - -import java.util.ArrayList; -import java.util.Arrays; -import java.util.List; -import java.util.function.Predicate; - -@Configuration -@EnableSwagger2 -@EnableAutoConfiguration -@ConditionalOnProperty(name = "swagger.enabled", matchIfMissing = true) -public class SwaggerAutoConfiguration { - /** - * 默认的排除路径,排除Spring Boot默认的错误处理路径和端点 - */ - private static final List DEFAULT_EXCLUDE_PATH = Arrays.asList("/error", "/actuator/**"); - - private static final String BASE_PATH = "/**"; - - @Bean - @ConditionalOnMissingBean - public SwaggerProperties swaggerProperties() { - return new SwaggerProperties(); - } - - @Bean - public Docket api(SwaggerProperties swaggerProperties) { - // base-path处理 - if (swaggerProperties.getBasePath().isEmpty()) { - swaggerProperties.getBasePath().add(BASE_PATH); - } - // noinspection unchecked - List> basePath = new ArrayList>(); - 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))); - - ApiSelectorBuilder builder = new Docket(DocumentationType.SWAGGER_2).host(swaggerProperties.getHost()) - .apiInfo(apiInfo(swaggerProperties)).select() - .apis(RequestHandlerSelectors.basePackage(swaggerProperties.getBasePackage())); - - swaggerProperties.getBasePath().forEach(p -> builder.paths(PathSelectors.ant(p))); - swaggerProperties.getExcludePath().forEach(p -> builder.paths(PathSelectors.ant(p).negate())); - - return builder.build().securitySchemes(securitySchemes()).securityContexts(securityContexts()).pathMapping("/"); - } - - /** - * 安全模式,这里指定token通过Authorization头请求头传递 - */ - private List securitySchemes() { - List apiKeyList = new ArrayList(); - apiKeyList.add(new ApiKey("Authorization", "Authorization", "header")); - return apiKeyList; - } - - /** - * 安全上下文 - */ - private List securityContexts() { - List securityContexts = new ArrayList<>(); - securityContexts.add( - SecurityContext.builder() - .securityReferences(defaultAuth()) - .operationSelector(o -> o.requestMappingPattern().matches("/.*")) - .build()); - return securityContexts; - } - - /** - * 默认的全局鉴权策略 - * - * @return - */ - private List defaultAuth() { - AuthorizationScope authorizationScope = new AuthorizationScope("global", "accessEverything"); - AuthorizationScope[] authorizationScopes = new AuthorizationScope[1]; - authorizationScopes[0] = authorizationScope; - List securityReferences = new ArrayList<>(); - securityReferences.add(new SecurityReference("Authorization", authorizationScopes)); - return securityReferences; - } - - 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(); - } -} +package com.ruoyi.common.swagger.config; + +import com.github.xiaoymin.knife4j.spring.annotations.EnableKnife4j; +import com.ruoyi.common.swagger.config.properties.SwaggerProperties; +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.*; +import springfox.documentation.spi.DocumentationType; +import springfox.documentation.spi.service.contexts.SecurityContext; +import springfox.documentation.spring.web.plugins.ApiSelectorBuilder; +import springfox.documentation.spring.web.plugins.Docket; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; +import java.util.function.Predicate; + +/** + * Swagger 文档配置 + * + * @author Lion Li + */ +@Configuration +@EnableKnife4j +@EnableConfigurationProperties(SwaggerProperties.class) +@ConditionalOnProperty(name = "swagger.enabled", matchIfMissing = true) +public class SwaggerAutoConfiguration { + + /** + * 默认的排除路径,排除Spring Boot默认的错误处理路径和端点 + */ + private static final List DEFAULT_EXCLUDE_PATH = Arrays.asList("/error", "/actuator/**"); + + private static final String BASE_PATH = "/**"; + + @Bean + public Docket api(SwaggerProperties swaggerProperties) { + // base-path处理 + if (swaggerProperties.getBasePath().isEmpty()) { + swaggerProperties.getBasePath().add(BASE_PATH); + } + // noinspection unchecked + List> basePath = new ArrayList<>(); + 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))); + + ApiSelectorBuilder builder = new Docket(DocumentationType.OAS_30) + .host(swaggerProperties.getHost()) + .apiInfo(apiInfo(swaggerProperties)) + .select() + .apis(RequestHandlerSelectors.basePackage(swaggerProperties.getBasePackage())); + + swaggerProperties.getBasePath().forEach(p -> builder.paths(PathSelectors.ant(p))); + swaggerProperties.getExcludePath().forEach(p -> builder.paths(PathSelectors.ant(p).negate())); + + return builder.build() + .securitySchemes(securitySchemes()) + .securityContexts(securityContexts()) + .pathMapping("/"); + } + + /** + * 安全模式,这里指定token通过Authorization头请求头传递 + */ + private List securitySchemes() { + List apiKeyList = new ArrayList<>(); + apiKeyList.add(new ApiKey("Authorization", "Authorization", "header")); + return apiKeyList; + } + + /** + * 安全上下文 + */ + private List securityContexts() { + List securityContexts = new ArrayList<>(); + securityContexts.add( + SecurityContext.builder() + .securityReferences(defaultAuth()) + .operationSelector(o -> o.requestMappingPattern().matches("/.*")) + .build()); + return securityContexts; + } + + /** + * 默认的全局鉴权策略 + */ + private List defaultAuth() { + AuthorizationScope authorizationScope = new AuthorizationScope("global", "accessEverything"); + AuthorizationScope[] authorizationScopes = new AuthorizationScope[1]; + authorizationScopes[0] = authorizationScope; + List securityReferences = new ArrayList<>(); + securityReferences.add(new SecurityReference("Authorization", authorizationScopes)); + return securityReferences; + } + + 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/ruoyi-common/ruoyi-common-swagger/src/main/java/com/ruoyi/common/swagger/config/SwaggerWebConfiguration.java b/ruoyi-common/ruoyi-common-swagger/src/main/java/com/ruoyi/common/swagger/config/SwaggerWebConfiguration.java deleted file mode 100644 index 5adf409f1..000000000 --- a/ruoyi-common/ruoyi-common-swagger/src/main/java/com/ruoyi/common/swagger/config/SwaggerWebConfiguration.java +++ /dev/null @@ -1,20 +0,0 @@ -package com.ruoyi.common.swagger.config; - -import org.springframework.context.annotation.Configuration; -import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry; -import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; - -/** - * swagger 资源映射路径 - * - * @author ruoyi - */ -@Configuration -public class SwaggerWebConfiguration implements WebMvcConfigurer { - @Override - public void addResourceHandlers(ResourceHandlerRegistry registry) { - /** swagger-ui 地址 */ - registry.addResourceHandler("/swagger-ui/**") - .addResourceLocations("classpath:/META-INF/resources/webjars/springfox-swagger-ui/"); - } -} \ No newline at end of file diff --git a/ruoyi-common/ruoyi-common-swagger/src/main/java/com/ruoyi/common/swagger/config/SwaggerProperties.java b/ruoyi-common/ruoyi-common-swagger/src/main/java/com/ruoyi/common/swagger/config/properties/SwaggerProperties.java similarity index 90% rename from ruoyi-common/ruoyi-common-swagger/src/main/java/com/ruoyi/common/swagger/config/SwaggerProperties.java rename to ruoyi-common/ruoyi-common-swagger/src/main/java/com/ruoyi/common/swagger/config/properties/SwaggerProperties.java index 8a74e048e..12685518f 100644 --- a/ruoyi-common/ruoyi-common-swagger/src/main/java/com/ruoyi/common/swagger/config/SwaggerProperties.java +++ b/ruoyi-common/ruoyi-common-swagger/src/main/java/com/ruoyi/common/swagger/config/properties/SwaggerProperties.java @@ -1,140 +1,146 @@ -package com.ruoyi.common.swagger.config; - -import lombok.Data; -import lombok.NoArgsConstructor; -import lombok.experimental.Accessors; -import org.springframework.boot.context.properties.ConfigurationProperties; -import org.springframework.stereotype.Component; - -import java.util.ArrayList; -import java.util.List; - -@Data -@NoArgsConstructor -@Accessors(chain = true) -@Component -@ConfigurationProperties("swagger") -public class SwaggerProperties { - /** - * 是否开启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 - @NoArgsConstructor - @Accessors(chain = true) - public static class Contact { - /** - * 联系人 - **/ - private String name = ""; - /** - * 联系人url - **/ - private String url = ""; - /** - * 联系人email - **/ - private String email = ""; - - } - - @Data - @NoArgsConstructor - @Accessors(chain = true) - 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 - @Accessors(chain = true) - public static class AuthorizationScope { - /** - * 作用域名称 - */ - private String scope = ""; - - /** - * 作用域描述 - */ - private String description = ""; - - } -} \ No newline at end of file +package com.ruoyi.common.swagger.config.properties; + +import lombok.Data; +import lombok.NoArgsConstructor; +import lombok.experimental.Accessors; +import org.springframework.boot.context.properties.ConfigurationProperties; + +import java.util.ArrayList; +import java.util.List; + +/** + * swagger 配置属性 + * + * @author Lion Li + */ +@Data +@ConfigurationProperties("swagger") +public class SwaggerProperties { + + /** + * 是否开启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 + @NoArgsConstructor + @Accessors(chain = true) + public static class Contact { + + /** + * 联系人 + **/ + private String name = ""; + /** + * 联系人url + **/ + private String url = ""; + /** + * 联系人email + **/ + private String email = ""; + + } + + @Data + @NoArgsConstructor + @Accessors(chain = true) + 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 + @Accessors(chain = true) + public static class AuthorizationScope { + + /** + * 作用域名称 + */ + private String scope = ""; + + /** + * 作用域描述 + */ + private String description = ""; + + } + +} diff --git a/ruoyi-common/ruoyi-common-swagger/src/main/resources/META-INF/spring.factories b/ruoyi-common/ruoyi-common-swagger/src/main/resources/META-INF/spring.factories index d72ee8044..83dfc5802 100644 --- a/ruoyi-common/ruoyi-common-swagger/src/main/resources/META-INF/spring.factories +++ b/ruoyi-common/ruoyi-common-swagger/src/main/resources/META-INF/spring.factories @@ -1,3 +1,2 @@ -org.springframework.boot.autoconfigure.EnableAutoConfiguration=\ - com.ruoyi.common.swagger.config.SwaggerAutoConfiguration,\ - com.ruoyi.common.swagger.config.SwaggerWebConfiguration \ No newline at end of file +org.springframework.boot.autoconfigure.EnableAutoConfiguration=\ + com.ruoyi.common.swagger.config.SwaggerAutoConfiguration diff --git a/ruoyi-gateway/pom.xml b/ruoyi-gateway/pom.xml index 87693c7fb..ce1e55206 100644 --- a/ruoyi-gateway/pom.xml +++ b/ruoyi-gateway/pom.xml @@ -74,18 +74,6 @@ - - - io.springfox - springfox-swagger-ui - ${swagger.fox.version} - - - io.springfox - springfox-swagger2 - ${swagger.fox.version} - - cn.hutool hutool-captcha diff --git a/ruoyi-gateway/src/main/java/com/ruoyi/gateway/config/SwaggerProvider.java b/ruoyi-gateway/src/main/java/com/ruoyi/gateway/config/SwaggerProvider.java deleted file mode 100644 index b74e9a959..000000000 --- a/ruoyi-gateway/src/main/java/com/ruoyi/gateway/config/SwaggerProvider.java +++ /dev/null @@ -1,73 +0,0 @@ -package com.ruoyi.gateway.config; - -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.cloud.gateway.config.GatewayProperties; -import org.springframework.cloud.gateway.route.RouteLocator; -import org.springframework.cloud.gateway.support.NameUtils; -import org.springframework.stereotype.Component; -import org.springframework.web.reactive.config.ResourceHandlerRegistry; -import org.springframework.web.reactive.config.WebFluxConfigurer; -import springfox.documentation.swagger.web.SwaggerResource; -import springfox.documentation.swagger.web.SwaggerResourcesProvider; - -import java.util.ArrayList; -import java.util.List; - -/** - * 聚合系统接口 - * - * @author ruoyi - */ -@Component -public class SwaggerProvider implements SwaggerResourcesProvider, WebFluxConfigurer { - /** - * Swagger2默认的url后缀 - */ - public static final String SWAGGER2URL = "/v2/api-docs"; - /** - * 网关路由 - */ - @Autowired - private RouteLocator routeLocator; - - @Autowired - private GatewayProperties gatewayProperties; - - /** - * 聚合其他服务接口 - * - * @return - */ - @Override - public List get() { - List resourceList = new ArrayList<>(); - List routes = new ArrayList<>(); - // 获取网关中配置的route - routeLocator.getRoutes().subscribe(route -> routes.add(route.getId())); - gatewayProperties.getRoutes().stream() - .filter(routeDefinition -> routes - .contains(routeDefinition.getId())) - .forEach(routeDefinition -> routeDefinition.getPredicates().stream() - .filter(predicateDefinition -> "Path".equalsIgnoreCase(predicateDefinition.getName())) - .filter(predicateDefinition -> !"ruoyi-auth".equalsIgnoreCase(routeDefinition.getId())) - .forEach(predicateDefinition -> resourceList - .add(swaggerResource(routeDefinition.getId(), predicateDefinition.getArgs() - .get(NameUtils.GENERATED_NAME_PREFIX + "0").replace("/**", SWAGGER2URL))))); - return resourceList; - } - - private SwaggerResource swaggerResource(String name, String location) { - SwaggerResource swaggerResource = new SwaggerResource(); - swaggerResource.setName(name); - swaggerResource.setLocation(location); - swaggerResource.setSwaggerVersion("2.0"); - return swaggerResource; - } - - @Override - public void addResourceHandlers(ResourceHandlerRegistry registry) { - /** swagger-ui 地址 */ - registry.addResourceHandler("/swagger-ui/**") - .addResourceLocations("classpath:/META-INF/resources/webjars/springfox-swagger-ui/"); - } -} diff --git a/ruoyi-gateway/src/main/java/com/ruoyi/gateway/handler/SwaggerHandler.java b/ruoyi-gateway/src/main/java/com/ruoyi/gateway/handler/SwaggerHandler.java deleted file mode 100644 index 58d51d453..000000000 --- a/ruoyi-gateway/src/main/java/com/ruoyi/gateway/handler/SwaggerHandler.java +++ /dev/null @@ -1,48 +0,0 @@ -package com.ruoyi.gateway.handler; - -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.http.HttpStatus; -import org.springframework.http.ResponseEntity; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; -import reactor.core.publisher.Mono; -import springfox.documentation.swagger.web.*; - -import java.util.Optional; - -@RestController -@RequestMapping("/swagger-resources") -public class SwaggerHandler { - @Autowired(required = false) - private SecurityConfiguration securityConfiguration; - - @Autowired(required = false) - private UiConfiguration uiConfiguration; - - private final SwaggerResourcesProvider swaggerResources; - - @Autowired - public SwaggerHandler(SwaggerResourcesProvider swaggerResources) { - this.swaggerResources = swaggerResources; - } - - @GetMapping("/configuration/security") - public Mono> securityConfiguration() { - return Mono.just(new ResponseEntity<>( - Optional.ofNullable(securityConfiguration).orElse(SecurityConfigurationBuilder.builder().build()), - HttpStatus.OK)); - } - - @GetMapping("/configuration/ui") - public Mono> uiConfiguration() { - return Mono.just(new ResponseEntity<>( - Optional.ofNullable(uiConfiguration).orElse(UiConfigurationBuilder.builder().build()), HttpStatus.OK)); - } - - @SuppressWarnings("rawtypes") - @GetMapping("") - public Mono swaggerResources() { - return Mono.just((new ResponseEntity<>(swaggerResources.get(), HttpStatus.OK))); - } -} diff --git a/ruoyi-modules/ruoyi-file/pom.xml b/ruoyi-modules/ruoyi-file/pom.xml index 84d063b1b..1277cc1da 100644 --- a/ruoyi-modules/ruoyi-file/pom.xml +++ b/ruoyi-modules/ruoyi-file/pom.xml @@ -17,7 +17,7 @@ - + com.alibaba.cloud spring-cloud-starter-alibaba-nacos-discovery diff --git a/ruoyi-modules/ruoyi-file/src/main/java/com/ruoyi/file/RuoYiFileApplication.java b/ruoyi-modules/ruoyi-file/src/main/java/com/ruoyi/file/RuoYiFileApplication.java index ae199a2da..aec4848ac 100644 --- a/ruoyi-modules/ruoyi-file/src/main/java/com/ruoyi/file/RuoYiFileApplication.java +++ b/ruoyi-modules/ruoyi-file/src/main/java/com/ruoyi/file/RuoYiFileApplication.java @@ -1,6 +1,5 @@ package com.ruoyi.file; -import com.ruoyi.common.swagger.annotation.EnableCustomSwagger2; import org.apache.dubbo.config.spring.context.annotation.EnableDubbo; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; @@ -12,7 +11,6 @@ import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration; * @author ruoyi */ @EnableDubbo -@EnableCustomSwagger2 @SpringBootApplication(exclude = {DataSourceAutoConfiguration.class}) public class RuoYiFileApplication { public static void main(String[] args) { diff --git a/ruoyi-modules/ruoyi-file/src/main/java/com/ruoyi/file/controller/SysFileController.java b/ruoyi-modules/ruoyi-file/src/main/java/com/ruoyi/file/controller/SysFileController.java index 45bd3c010..a6700241a 100644 --- a/ruoyi-modules/ruoyi-file/src/main/java/com/ruoyi/file/controller/SysFileController.java +++ b/ruoyi-modules/ruoyi-file/src/main/java/com/ruoyi/file/controller/SysFileController.java @@ -1,43 +1,45 @@ -package com.ruoyi.file.controller; - -import com.ruoyi.common.core.domain.R; -import com.ruoyi.common.core.utils.file.FileUtils; -import com.ruoyi.file.api.domain.SysFile; -import com.ruoyi.file.service.ISysFileService; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RestController; -import org.springframework.web.multipart.MultipartFile; - -/** - * 文件请求处理 - * - * @author ruoyi - */ -@RestController -public class SysFileController { - private static final Logger log = LoggerFactory.getLogger(SysFileController.class); - - @Autowired - private ISysFileService sysFileService; - - /** - * 文件上传请求 - */ - @PostMapping("upload") - public R upload(MultipartFile file) { - try { - // 上传并返回访问地址 - String url = sysFileService.uploadFile(file); - SysFile sysFile = new SysFile(); - sysFile.setName(FileUtils.getName(url)); - sysFile.setUrl(url); - return R.ok(sysFile); - } catch (Exception e) { - log.error("上传文件失败", e); - return R.fail(e.getMessage()); - } - } -} \ No newline at end of file +package com.ruoyi.file.controller; + +import com.ruoyi.common.core.domain.R; +import com.ruoyi.common.core.utils.file.FileUtils; +import com.ruoyi.file.api.domain.SysFile; +import com.ruoyi.file.service.ISysFileService; +import io.swagger.annotations.Api; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.multipart.MultipartFile; + +/** + * 文件请求处理 + * + * @author ruoyi + */ +@Api(tags = "文件处理") +@RestController +public class SysFileController { + private static final Logger log = LoggerFactory.getLogger(SysFileController.class); + + @Autowired + private ISysFileService sysFileService; + + /** + * 文件上传请求 + */ + @PostMapping("upload") + public R upload(MultipartFile file) { + try { + // 上传并返回访问地址 + String url = sysFileService.uploadFile(file); + SysFile sysFile = new SysFile(); + sysFile.setName(FileUtils.getName(url)); + sysFile.setUrl(url); + return R.ok(sysFile); + } catch (Exception e) { + log.error("上传文件失败", e); + return R.fail(e.getMessage()); + } + } +} diff --git a/ruoyi-modules/ruoyi-file/src/main/resources/bootstrap.yml b/ruoyi-modules/ruoyi-file/src/main/resources/bootstrap.yml index ed62fe236..2df52b7ef 100644 --- a/ruoyi-modules/ruoyi-file/src/main/resources/bootstrap.yml +++ b/ruoyi-modules/ruoyi-file/src/main/resources/bootstrap.yml @@ -1,33 +1,33 @@ -# Tomcat -server: - port: 9300 - -# Spring -spring: - application: - # 应用名称 - name: ruoyi-file - profiles: - # 环境配置 - active: @profiles.active@ - ---- # nacos 配置 -spring: - cloud: - nacos: - # nacos 服务地址 - server-addr: @nacos.server@ - discovery: - # 注册组 - group: @nacos.discovery.group@ - namespace: ${spring.profiles.active} - config: - # 配置组 - group: @nacos.config.group@ - namespace: ${spring.profiles.active} - # 配置文件格式 - file-extension: yml - # 共享配置 - shared-configs: - - data-id: application.${spring.cloud.nacos.config.file-extension} - refresh: true +# Tomcat +server: + port: 9300 + +# Spring +spring: + application: + # 应用名称 + name: ruoyi-file + profiles: + # 环境配置 + active: @profiles.active@ + +--- # nacos 配置 +spring: + cloud: + nacos: + # nacos 服务地址 + server-addr: @nacos.server@ + discovery: + # 注册组 + group: @nacos.discovery.group@ + namespace: ${spring.profiles.active} + config: + # 配置组 + group: @nacos.config.group@ + namespace: ${spring.profiles.active} + # 配置文件格式 + file-extension: yml + # 共享配置 + shared-configs: + - data-id: application.${spring.cloud.nacos.config.file-extension} + refresh: true diff --git a/ruoyi-modules/ruoyi-gen/pom.xml b/ruoyi-modules/ruoyi-gen/pom.xml index dbbcb137f..05c59674d 100644 --- a/ruoyi-modules/ruoyi-gen/pom.xml +++ b/ruoyi-modules/ruoyi-gen/pom.xml @@ -41,13 +41,6 @@ spring-boot-starter-actuator - - - io.springfox - springfox-swagger-ui - ${swagger.fox.version} - - org.apache.velocity diff --git a/ruoyi-modules/ruoyi-gen/src/main/java/com/ruoyi/gen/RuoYiGenApplication.java b/ruoyi-modules/ruoyi-gen/src/main/java/com/ruoyi/gen/RuoYiGenApplication.java index 0ec6385fa..b8e6d998f 100644 --- a/ruoyi-modules/ruoyi-gen/src/main/java/com/ruoyi/gen/RuoYiGenApplication.java +++ b/ruoyi-modules/ruoyi-gen/src/main/java/com/ruoyi/gen/RuoYiGenApplication.java @@ -1,7 +1,6 @@ package com.ruoyi.gen; import com.ruoyi.common.security.annotation.EnableCustomConfig; -import com.ruoyi.common.swagger.annotation.EnableCustomSwagger2; import org.apache.dubbo.config.spring.context.annotation.EnableDubbo; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; @@ -12,7 +11,6 @@ import org.springframework.boot.autoconfigure.SpringBootApplication; * @author ruoyi */ @EnableCustomConfig -@EnableCustomSwagger2 @EnableDubbo @SpringBootApplication public class RuoYiGenApplication { diff --git a/ruoyi-modules/ruoyi-gen/src/main/java/com/ruoyi/gen/controller/GenController.java b/ruoyi-modules/ruoyi-gen/src/main/java/com/ruoyi/gen/controller/GenController.java index 07e8cd4c5..d3b09e30d 100644 --- a/ruoyi-modules/ruoyi-gen/src/main/java/com/ruoyi/gen/controller/GenController.java +++ b/ruoyi-modules/ruoyi-gen/src/main/java/com/ruoyi/gen/controller/GenController.java @@ -11,6 +11,7 @@ import com.ruoyi.gen.domain.GenTable; import com.ruoyi.gen.domain.GenTableColumn; import com.ruoyi.gen.service.IGenTableColumnService; import com.ruoyi.gen.service.IGenTableService; +import io.swagger.annotations.Api; import lombok.RequiredArgsConstructor; import org.apache.commons.io.IOUtils; import org.springframework.beans.factory.annotation.Autowired; @@ -31,6 +32,7 @@ import java.util.Map; @RequiredArgsConstructor(onConstructor_ = @Autowired) @RequestMapping("/gen") @RestController +@Api(tags = "代码生成") public class GenController extends BaseController { private final IGenTableService genTableService; diff --git a/ruoyi-modules/ruoyi-gen/src/main/resources/bootstrap.yml b/ruoyi-modules/ruoyi-gen/src/main/resources/bootstrap.yml index 257606797..378eaa911 100644 --- a/ruoyi-modules/ruoyi-gen/src/main/resources/bootstrap.yml +++ b/ruoyi-modules/ruoyi-gen/src/main/resources/bootstrap.yml @@ -1,35 +1,35 @@ -# Tomcat -server: - port: 9202 - -# Spring -spring: - application: - # 应用名称 - name: ruoyi-gen - profiles: - # 环境配置 - active: @profiles.active@ - ---- # nacos 配置 -spring: - cloud: - nacos: - # nacos 服务地址 - server-addr: @nacos.server@ - discovery: - # 注册组 - group: @nacos.discovery.group@ - namespace: ${spring.profiles.active} - config: - # 配置组 - group: @nacos.config.group@ - namespace: ${spring.profiles.active} - # 配置文件格式 - file-extension: yml - # 共享配置 - shared-configs: - - data-id: application.${spring.cloud.nacos.config.file-extension} - refresh: true - - data-id: datasource.${spring.cloud.nacos.config.file-extension} - refresh: true \ No newline at end of file +# Tomcat +server: + port: 9202 + +# Spring +spring: + application: + # 应用名称 + name: ruoyi-gen + profiles: + # 环境配置 + active: @profiles.active@ + +--- # nacos 配置 +spring: + cloud: + nacos: + # nacos 服务地址 + server-addr: @nacos.server@ + discovery: + # 注册组 + group: @nacos.discovery.group@ + namespace: ${spring.profiles.active} + config: + # 配置组 + group: @nacos.config.group@ + namespace: ${spring.profiles.active} + # 配置文件格式 + file-extension: yml + # 共享配置 + shared-configs: + - data-id: application.${spring.cloud.nacos.config.file-extension} + refresh: true + - data-id: datasource.${spring.cloud.nacos.config.file-extension} + refresh: true diff --git a/ruoyi-modules/ruoyi-system/pom.xml b/ruoyi-modules/ruoyi-system/pom.xml index 853a6fc2d..e549652e3 100644 --- a/ruoyi-modules/ruoyi-system/pom.xml +++ b/ruoyi-modules/ruoyi-system/pom.xml @@ -17,7 +17,7 @@ - + com.alibaba.cloud spring-cloud-starter-alibaba-nacos-discovery @@ -29,25 +29,18 @@ spring-cloud-starter-alibaba-nacos-config - + com.alibaba.cloud spring-cloud-starter-alibaba-sentinel - + org.springframework.boot spring-boot-starter-actuator - - - io.springfox - springfox-swagger-ui - ${swagger.fox.version} - - mysql diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/RuoYiSystemApplication.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/RuoYiSystemApplication.java index fb8285459..f65a998cf 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/RuoYiSystemApplication.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/RuoYiSystemApplication.java @@ -1,7 +1,6 @@ package com.ruoyi.system; import com.ruoyi.common.security.annotation.EnableCustomConfig; -import com.ruoyi.common.swagger.annotation.EnableCustomSwagger2; import org.apache.dubbo.config.spring.context.annotation.EnableDubbo; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; @@ -12,7 +11,6 @@ import org.springframework.boot.autoconfigure.SpringBootApplication; * @author ruoyi */ @EnableCustomConfig -@EnableCustomSwagger2 @EnableDubbo @SpringBootApplication public class RuoYiSystemApplication { diff --git a/ruoyi-modules/ruoyi-system/src/main/resources/bootstrap.yml b/ruoyi-modules/ruoyi-system/src/main/resources/bootstrap.yml index 5a5b606ec..3cd20f4cc 100644 --- a/ruoyi-modules/ruoyi-system/src/main/resources/bootstrap.yml +++ b/ruoyi-modules/ruoyi-system/src/main/resources/bootstrap.yml @@ -1,35 +1,35 @@ -# Tomcat -server: - port: 9201 - -# Spring -spring: - application: - # 应用名称 - name: ruoyi-system - profiles: - # 环境配置 - active: @profiles.active@ - ---- # nacos 配置 -spring: - cloud: - nacos: - # nacos 服务地址 - server-addr: @nacos.server@ - discovery: - # 注册组 - group: @nacos.discovery.group@ - namespace: ${spring.profiles.active} - config: - # 配置组 - group: @nacos.config.group@ - namespace: ${spring.profiles.active} - # 配置文件格式 - file-extension: yml - # 共享配置 - shared-configs: - - data-id: application.${spring.cloud.nacos.config.file-extension} - refresh: true - - data-id: datasource.${spring.cloud.nacos.config.file-extension} - refresh: true +# Tomcat +server: + port: 9201 + +# Spring +spring: + application: + # 应用名称 + name: ruoyi-system + profiles: + # 环境配置 + active: @profiles.active@ + +--- # nacos 配置 +spring: + cloud: + nacos: + # nacos 服务地址 + server-addr: @nacos.server@ + discovery: + # 注册组 + group: @nacos.discovery.group@ + namespace: ${spring.profiles.active} + config: + # 配置组 + group: @nacos.config.group@ + namespace: ${spring.profiles.active} + # 配置文件格式 + file-extension: yml + # 共享配置 + shared-configs: + - data-id: application.${spring.cloud.nacos.config.file-extension} + refresh: true + - data-id: datasource.${spring.cloud.nacos.config.file-extension} + refresh: true diff --git a/ruoyi-ui/src/api/monitor/job.js b/ruoyi-ui/src/api/monitor/job.js deleted file mode 100644 index 3ee56b251..000000000 --- a/ruoyi-ui/src/api/monitor/job.js +++ /dev/null @@ -1,71 +0,0 @@ -import request from '@/utils/request' - -// 查询定时任务调度列表 -export function listJob(query) { - return request({ - url: '/schedule/job/list', - method: 'get', - params: query - }) -} - -// 查询定时任务调度详细 -export function getJob(jobId) { - return request({ - url: '/schedule/job/' + jobId, - method: 'get' - }) -} - -// 新增定时任务调度 -export function addJob(data) { - return request({ - url: '/schedule/job', - method: 'post', - data: data - }) -} - -// 修改定时任务调度 -export function updateJob(data) { - return request({ - url: '/schedule/job', - method: 'put', - data: data - }) -} - -// 删除定时任务调度 -export function delJob(jobId) { - return request({ - url: '/schedule/job/' + jobId, - method: 'delete' - }) -} - -// 任务状态修改 -export function changeJobStatus(jobId, status) { - const data = { - jobId, - status - } - return request({ - url: '/schedule/job/changeStatus', - method: 'put', - data: data - }) -} - - -// 定时任务立即执行一次 -export function runJob(jobId, jobGroup) { - const data = { - jobId, - jobGroup - } - return request({ - url: '/schedule/job/run', - method: 'put', - data: data - }) -} \ No newline at end of file diff --git a/ruoyi-ui/src/api/monitor/jobLog.js b/ruoyi-ui/src/api/monitor/jobLog.js deleted file mode 100644 index 732cc058e..000000000 --- a/ruoyi-ui/src/api/monitor/jobLog.js +++ /dev/null @@ -1,26 +0,0 @@ -import request from '@/utils/request' - -// 查询调度日志列表 -export function listJobLog(query) { - return request({ - url: '/schedule/job/log/list', - method: 'get', - params: query - }) -} - -// 删除调度日志 -export function delJobLog(jobLogId) { - return request({ - url: '/schedule/job/log/' + jobLogId, - method: 'delete' - }) -} - -// 清空调度日志 -export function cleanJobLog() { - return request({ - url: '/schedule/job/log/clean', - method: 'delete' - }) -} diff --git a/ruoyi-ui/src/components/RuoYi/Doc/index.vue b/ruoyi-ui/src/components/RuoYi/Doc/index.vue index 6b0403e97..3596e0f74 100644 --- a/ruoyi-ui/src/components/RuoYi/Doc/index.vue +++ b/ruoyi-ui/src/components/RuoYi/Doc/index.vue @@ -6,10 +6,10 @@ \ No newline at end of file diff --git a/ruoyi-ui/src/views/monitor/job/log.vue b/ruoyi-ui/src/views/monitor/job/log.vue deleted file mode 100644 index 5fd393a03..000000000 --- a/ruoyi-ui/src/views/monitor/job/log.vue +++ /dev/null @@ -1,299 +0,0 @@ - - - \ No newline at end of file diff --git a/ruoyi-visual/pom.xml b/ruoyi-visual/pom.xml index 5a4b0e032..c4b5c494c 100644 --- a/ruoyi-visual/pom.xml +++ b/ruoyi-visual/pom.xml @@ -11,6 +11,7 @@ ruoyi-monitor ruoyi-xxl-job-admin + ruoyi-doc ruoyi-visual diff --git a/ruoyi-visual/ruoyi-doc/pom.xml b/ruoyi-visual/ruoyi-doc/pom.xml new file mode 100644 index 000000000..effb8ed7d --- /dev/null +++ b/ruoyi-visual/ruoyi-doc/pom.xml @@ -0,0 +1,88 @@ + + + 4.0.0 + + com.ruoyi + ruoyi-visual + 0.3.0 + + ruoyi-doc + jar + + + + + + + + + com.alibaba.cloud + spring-cloud-starter-alibaba-nacos-discovery + + + + + com.alibaba.cloud + spring-cloud-starter-alibaba-nacos-config + + + + + org.springframework.boot + spring-boot-starter-actuator + + + + + com.github.xiaoymin + knife4j-aggregation-spring-boot-starter + ${knife4j-aggregation.version} + + + + com.ruoyi + ruoyi-common-web + + + + + + ${project.artifactId} + + + org.springframework.boot + spring-boot-maven-plugin + ${spring-boot.version} + + + + repackage + + + + + + + com.spotify + docker-maven-plugin + ${docker.plugin.version} + + ${docker.namespace}/${project.artifactId}:${project.version} + ${project.basedir} + ${docker.registry.host} + ${docker.registry.url} + ${docker.registry.url} + + + / + ${project.build.directory} + ${project.build.finalName}.jar + + + + + + + + diff --git a/ruoyi-visual/ruoyi-doc/src/main/java/com/ruoyi/doc/RuoyiDocApplication.java b/ruoyi-visual/ruoyi-doc/src/main/java/com/ruoyi/doc/RuoyiDocApplication.java new file mode 100644 index 000000000..25e0261c6 --- /dev/null +++ b/ruoyi-visual/ruoyi-doc/src/main/java/com/ruoyi/doc/RuoyiDocApplication.java @@ -0,0 +1,19 @@ +package com.ruoyi.doc; + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; + +/** + * 文档服务 + * + * @author Lion Li + */ +@SpringBootApplication +public class RuoyiDocApplication { + + public static void main(String[] args) { + SpringApplication.run(RuoyiDocApplication.class, args); + System.out.println("(♥◠‿◠)ノ゙ 文档中心 启动成功 ლ(´ڡ`ლ)゙ "); + } + +} diff --git a/ruoyi-visual/ruoyi-doc/src/main/resources/application.yml b/ruoyi-visual/ruoyi-doc/src/main/resources/application.yml new file mode 100644 index 000000000..a54f91018 --- /dev/null +++ b/ruoyi-visual/ruoyi-doc/src/main/resources/application.yml @@ -0,0 +1,23 @@ +server: + port: 18000 + +# knife4j聚合配置 +knife4j: + enableAggregation: true + # cloud模式 + cloud: + # 是否启用 + enable: true + # 网关地址 + gatewayUri: 127.0.0.1:8080 + # 需要聚合的服务集合 + routes: + - name: 系统服务 + uri: ${knife4j.cloud.gatewayUri} + location: /system/v2/api-docs + - name: 代码生成 + uri: ${knife4j.cloud.gatewayUri} + location: /code/v2/api-docs + - name: 文件服务 + uri: ${knife4j.cloud.gatewayUri} + location: /file/v2/api-docs diff --git a/ruoyi-visual/ruoyi-doc/src/main/resources/bootstrap.yml b/ruoyi-visual/ruoyi-doc/src/main/resources/bootstrap.yml new file mode 100644 index 000000000..2f88da814 --- /dev/null +++ b/ruoyi-visual/ruoyi-doc/src/main/resources/bootstrap.yml @@ -0,0 +1,33 @@ +# Tomcat +server: + port: 9300 + +# Spring +spring: + application: + # 应用名称 + name: ruoyi-doc + profiles: + # 环境配置 + active: @profiles.active@ + +--- # nacos 配置 +spring: + cloud: + nacos: + # nacos 服务地址 + server-addr: @nacos.server@ + discovery: + # 注册组 + group: @nacos.discovery.group@ + namespace: ${spring.profiles.active} + config: + # 配置组 + group: @nacos.config.group@ + namespace: ${spring.profiles.active} + # 配置文件格式 + file-extension: yml + # 共享配置 + shared-configs: + - data-id: application.${spring.cloud.nacos.config.file-extension} + refresh: true diff --git a/ruoyi-visual/ruoyi-doc/src/main/resources/logback.xml b/ruoyi-visual/ruoyi-doc/src/main/resources/logback.xml new file mode 100644 index 000000000..e90a32a1c --- /dev/null +++ b/ruoyi-visual/ruoyi-doc/src/main/resources/logback.xml @@ -0,0 +1,97 @@ + + + + + + + + + + + + ${console.log.pattern} + utf-8 + + + + + + ${log.path}/console.log + + + ${log.path}/console.%d{yyyy-MM-dd}.log + + 1 + + + ${log.pattern} + utf-8 + + + + INFO + + + + + + ${log.path}/info.log + + + + ${log.path}/info.%d{yyyy-MM-dd}.log + + 60 + + + ${log.pattern} + + + + INFO + + ACCEPT + + DENY + + + + + ${log.path}/error.log + + + + ${log.path}/error.%d{yyyy-MM-dd}.log + + 60 + + + ${log.pattern} + + + + ERROR + + ACCEPT + + DENY + + + + + + + + + + + + + + + + + + + diff --git a/sql/ry_system.sql b/sql/ry_system.sql index d33d81c66..1e619cf41 100644 --- a/sql/ry_system.sql +++ b/sql/ry_system.sql @@ -174,13 +174,13 @@ insert into sys_menu values('106', '参数设置', '1', '7', 'config', insert into sys_menu values('107', '通知公告', '1', '8', 'notice', 'system/notice/index', '', 1, 0, 'C', '0', '0', 'system:notice:list', 'message', 'admin', sysdate(), '', null, '通知公告菜单'); insert into sys_menu values('108', '日志管理', '1', '9', 'log', '', '', 1, 0, 'M', '0', '0', '', 'log', 'admin', sysdate(), '', null, '日志管理菜单'); insert into sys_menu values('109', '在线用户', '2', '1', 'online', 'monitor/online/index', '', 1, 0, 'C', '0', '0', 'monitor:online:list', 'online', 'admin', sysdate(), '', null, '在线用户菜单'); -insert into sys_menu values('110', 'XxlJob控制台', '2', '2', 'http://localhost:9900', '', '', 0, 0, 'C', '0', '0', 'monitor:job:list', 'job', 'admin', sysdate(), '', null, '定时任务菜单'); +insert into sys_menu values('110', 'XxlJob控制台', '2', '2', 'http://localhost:9900', '', '', 0, 0, 'C', '0', '0', 'monitor:job:list', 'job', 'admin', sysdate(), '', null, '定时任务菜单'); insert into sys_menu values('111', 'Sentinel控制台', '2', '3', 'http://localhost:8718', '', '', 0, 0, 'C', '0', '0', 'monitor:sentinel:list', 'sentinel', 'admin', sysdate(), '', null, '流量控制菜单'); insert into sys_menu values('112', 'Nacos控制台', '2', '4', 'http://localhost:8848/nacos', '', '', 0, 0, 'C', '0', '0', 'monitor:nacos:list', 'nacos', 'admin', sysdate(), '', null, '服务治理菜单'); insert into sys_menu values('113', 'Admin控制台', '2', '5', 'http://localhost:9100/login', '', '', 0, 0, 'C', '0', '0', 'monitor:server:list', 'server', 'admin', sysdate(), '', null, '服务监控菜单'); insert into sys_menu values('114', '表单构建', '3', '1', 'build', 'tool/build/index', '', 1, 0, 'C', '0', '0', 'tool:build:list', 'build', 'admin', sysdate(), '', null, '表单构建菜单'); insert into sys_menu values('115', '代码生成', '3', '2', 'gen', 'tool/gen/index', '', 1, 0, 'C', '0', '0', 'tool:gen:list', 'code', 'admin', sysdate(), '', null, '代码生成菜单'); -insert into sys_menu values('116', '系统接口', '3', '3', 'http://localhost:8080/swagger-ui/index.html', '', '', 0, 0, 'C', '0', '0', 'tool:swagger:list', 'swagger', 'admin', sysdate(), '', null, '系统接口菜单'); +insert into sys_menu values('116', '系统接口', '3', '3', 'http://localhost:18000/doc.html', '', '', 0, 0, 'C', '0', '0', 'tool:swagger:list', 'swagger', 'admin', sysdate(), '', null, '系统接口菜单'); -- 三级菜单 insert into sys_menu values('500', '操作日志', '108', '1', 'operlog', 'system/operlog/index', '', 1, 0, 'C', '0', '0', 'system:operlog:list', 'form', 'admin', sysdate(), '', null, '操作日志菜单'); insert into sys_menu values('501', '登录日志', '108', '2', 'logininfor', 'system/logininfor/index', '', 1, 0, 'C', '0', '0', 'system:logininfor:list', 'logininfor', 'admin', sysdate(), '', null, '登录日志菜单');