From 0d8434d5419de126223f20333f688caaa864b633 Mon Sep 17 00:00:00 2001
From: DongZeLiang <2746733890@qq.com>
Date: Wed, 10 Jul 2024 10:12:06 +0800
Subject: [PATCH 1/3] =?UTF-8?q?feat():=20=E6=95=B4=E5=90=88=E6=B5=8B?=
=?UTF-8?q?=E8=AF=95springdoc-openapi?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
cloud-modules/cloud-modules-system/pom.xml | 6 ++++++
.../cloud-modules-system/src/main/resources/bootstrap.yml | 4 ++++
2 files changed, 10 insertions(+)
diff --git a/cloud-modules/cloud-modules-system/pom.xml b/cloud-modules/cloud-modules-system/pom.xml
index bb668d5..43f0b1f 100644
--- a/cloud-modules/cloud-modules-system/pom.xml
+++ b/cloud-modules/cloud-modules-system/pom.xml
@@ -82,6 +82,12 @@
org.springframework.boot
spring-boot-starter-web
+
+
+ org.springdoc
+ springdoc-openapi-starter-webmvc-ui
+ 2.6.0
+
diff --git a/cloud-modules/cloud-modules-system/src/main/resources/bootstrap.yml b/cloud-modules/cloud-modules-system/src/main/resources/bootstrap.yml
index a43725d..b57c6de 100644
--- a/cloud-modules/cloud-modules-system/src/main/resources/bootstrap.yml
+++ b/cloud-modules/cloud-modules-system/src/main/resources/bootstrap.yml
@@ -8,6 +8,10 @@ nacos:
user-name: nacos
password: nacos
namespace: muyu-cloud
+# swagger-ui custom path
+springdoc:
+ swagger-ui:
+ path: /swagger-ui.html
# Spring
spring:
From 5f0d5163f37ed1ef62eb5e0fa036800753634cab Mon Sep 17 00:00:00 2001
From: DongZeLiang <2746733890@qq.com>
Date: Wed, 10 Jul 2024 21:29:22 +0800
Subject: [PATCH 2/3] =?UTF-8?q?feat()=EF=BC=9A=E6=8E=A5=E5=8F=A3=E6=96=87?=
=?UTF-8?q?=E6=A1=A3=E7=9B=B8=E5=85=B3=E9=9B=86=E6=88=90=201=E3=80=81?=
=?UTF-8?q?=E9=9B=86=E6=88=90=E4=BA=86knife4j=20spring-doc=E7=9B=B8?=
=?UTF-8?q?=E5=85=B3=E6=8E=A5=E5=8F=A3=E6=96=87=E6=A1=A3=E7=AE=A1=E7=90=86?=
=?UTF-8?q?=E5=B7=A5=E5=85=B7=202=E3=80=81=E7=A7=BB=E9=99=A4=E4=BA=86swagg?=
=?UTF-8?q?er2=E7=9B=B8=E5=85=B3=E9=85=8D=E7=BD=AE=203=E3=80=81=E5=A2=9E?=
=?UTF-8?q?=E5=8A=A0=E4=BA=86nacos=E9=85=8D=E7=BD=AE=E6=96=87=E4=BB=B6?=
=?UTF-8?q?=E7=9B=B8=E5=85=B3=E9=85=8D=E7=BD=AE?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
cloud-auth/pom.xml | 6 +
.../pom.xml | 22 +-
.../api/doc/config/SpringDocConfig.java | 34 ++
...ot.autoconfigure.AutoConfiguration.imports | 1 +
cloud-common/cloud-common-core/pom.xml | 6 -
.../annotation/EnableCustomSwagger2.java | 15 -
.../config/SwaggerAutoConfiguration.java | 111 -------
.../config/SwaggerBeanPostProcessor.java | 45 ---
.../swagger/config/SwaggerProperties.java | 296 ------------------
.../config/SwaggerWebConfiguration.java | 18 --
...ot.autoconfigure.AutoConfiguration.imports | 3 -
cloud-common/pom.xml | 2 +-
cloud-gateway/pom.xml | 12 +-
.../muyu/gateway/config/SwaggerProvider.java | 76 -----
.../filter/{log => }/AccessLogFilter.java | 3 +-
.../muyu/gateway/handler/SwaggerHandler.java | 46 ---
.../{filter/log => model}/AccessLog.java | 4 +-
.../src/main/resources/bootstrap.yml | 12 +
cloud-modules/cloud-modules-file/pom.xml | 12 +-
cloud-modules/cloud-modules-gen/pom.xml | 18 +-
.../com/muyu/gen/CloudGenApplication.java | 2 -
cloud-modules/cloud-modules-job/pom.xml | 18 +-
.../com/muyu/job/CloudJobApplication.java | 2 -
cloud-modules/cloud-modules-system/pom.xml | 24 +-
.../muyu/system/CloudSystemApplication.java | 1 -
.../controller/SysConfigController.java | 6 +-
.../src/main/resources/bootstrap.yml | 6 +-
init-file/cloud-system.sql | 2 +-
init-file/nacos_config.zip | Bin 5495 -> 6501 bytes
pom.xml | 10 +-
30 files changed, 93 insertions(+), 720 deletions(-)
rename cloud-common/{cloud-common-swagger => cloud-common-api-doc}/pom.xml (52%)
create mode 100644 cloud-common/cloud-common-api-doc/src/main/java/com/muyu/common/api/doc/config/SpringDocConfig.java
create mode 100644 cloud-common/cloud-common-api-doc/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports
delete mode 100644 cloud-common/cloud-common-swagger/src/main/java/com/muyu/common/swagger/annotation/EnableCustomSwagger2.java
delete mode 100644 cloud-common/cloud-common-swagger/src/main/java/com/muyu/common/swagger/config/SwaggerAutoConfiguration.java
delete mode 100644 cloud-common/cloud-common-swagger/src/main/java/com/muyu/common/swagger/config/SwaggerBeanPostProcessor.java
delete mode 100644 cloud-common/cloud-common-swagger/src/main/java/com/muyu/common/swagger/config/SwaggerProperties.java
delete mode 100644 cloud-common/cloud-common-swagger/src/main/java/com/muyu/common/swagger/config/SwaggerWebConfiguration.java
delete mode 100644 cloud-common/cloud-common-swagger/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports
delete mode 100644 cloud-gateway/src/main/java/com/muyu/gateway/config/SwaggerProvider.java
rename cloud-gateway/src/main/java/com/muyu/gateway/filter/{log => }/AccessLogFilter.java (99%)
delete mode 100644 cloud-gateway/src/main/java/com/muyu/gateway/handler/SwaggerHandler.java
rename cloud-gateway/src/main/java/com/muyu/gateway/{filter/log => model}/AccessLog.java (95%)
diff --git a/cloud-auth/pom.xml b/cloud-auth/pom.xml
index 09495d2..0a76aae 100644
--- a/cloud-auth/pom.xml
+++ b/cloud-auth/pom.xml
@@ -52,6 +52,12 @@
cloud-common-security
+
+
+ com.muyu
+ cloud-common-api-doc
+
+
diff --git a/cloud-common/cloud-common-swagger/pom.xml b/cloud-common/cloud-common-api-doc/pom.xml
similarity index 52%
rename from cloud-common/cloud-common-swagger/pom.xml
rename to cloud-common/cloud-common-api-doc/pom.xml
index b4804c8..261e760 100644
--- a/cloud-common/cloud-common-swagger/pom.xml
+++ b/cloud-common/cloud-common-api-doc/pom.xml
@@ -9,10 +9,10 @@
4.0.0
- cloud-common-swagger
+ cloud-common-api-doc
- cloud-common-swagger系统接口
+ cloud-common-api-doc系统接口
@@ -23,22 +23,10 @@
spring-boot-starter-web
-
-
+
- org.springdoc
- springdoc-openapi-starter-webmvc-ui
- 2.5.0
-
-
- slf4j-api
- org.slf4j
-
-
+ com.github.xiaoymin
+ knife4j-openapi3-jakarta-spring-boot-starter
diff --git a/cloud-common/cloud-common-api-doc/src/main/java/com/muyu/common/api/doc/config/SpringDocConfig.java b/cloud-common/cloud-common-api-doc/src/main/java/com/muyu/common/api/doc/config/SpringDocConfig.java
new file mode 100644
index 0000000..08d7bff
--- /dev/null
+++ b/cloud-common/cloud-common-api-doc/src/main/java/com/muyu/common/api/doc/config/SpringDocConfig.java
@@ -0,0 +1,34 @@
+package com.muyu.common.api.doc.config;
+
+import io.swagger.v3.oas.models.ExternalDocumentation;
+import io.swagger.v3.oas.models.OpenAPI;
+import io.swagger.v3.oas.models.info.Info;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+
+@Configuration
+public class SpringDocConfig {
+
+ @Value("${spring.application.name}")
+ private String applicationName;
+
+ private Info info(){
+ return new Info()
+ .title(String.format("%S-微服务接口文档", applicationName))
+ .description("微服务接口文档,根据此接口文档可以进行前后端功能对接/联调")
+ .version("v1.0.0");
+ }
+ private ExternalDocumentation externalDocumentation() {
+ return new ExternalDocumentation()
+ .description("服务总站")
+ .url("https://gitea.qinmian.online");
+ }
+
+ @Bean
+ public OpenAPI springShopOpenAPI() {
+ return new OpenAPI()
+ .info(info())
+ .externalDocs(externalDocumentation());
+ }
+}
diff --git a/cloud-common/cloud-common-api-doc/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports b/cloud-common/cloud-common-api-doc/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports
new file mode 100644
index 0000000..4b1b17b
--- /dev/null
+++ b/cloud-common/cloud-common-api-doc/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports
@@ -0,0 +1 @@
+com.muyu.common.api.doc.config.SpringDocConfig
\ No newline at end of file
diff --git a/cloud-common/cloud-common-core/pom.xml b/cloud-common/cloud-common-core/pom.xml
index cd7b8d1..57cf128 100644
--- a/cloud-common/cloud-common-core/pom.xml
+++ b/cloud-common/cloud-common-core/pom.xml
@@ -142,12 +142,6 @@
javax.annotation-api
-
-
- io.swagger
- swagger-annotations
-
-
org.projectlombok
diff --git a/cloud-common/cloud-common-swagger/src/main/java/com/muyu/common/swagger/annotation/EnableCustomSwagger2.java b/cloud-common/cloud-common-swagger/src/main/java/com/muyu/common/swagger/annotation/EnableCustomSwagger2.java
deleted file mode 100644
index 8b56946..0000000
--- a/cloud-common/cloud-common-swagger/src/main/java/com/muyu/common/swagger/annotation/EnableCustomSwagger2.java
+++ /dev/null
@@ -1,15 +0,0 @@
-package com.muyu.common.swagger.annotation;
-
-import com.muyu.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/cloud-common/cloud-common-swagger/src/main/java/com/muyu/common/swagger/config/SwaggerAutoConfiguration.java b/cloud-common/cloud-common-swagger/src/main/java/com/muyu/common/swagger/config/SwaggerAutoConfiguration.java
deleted file mode 100644
index a58a108..0000000
--- a/cloud-common/cloud-common-swagger/src/main/java/com/muyu/common/swagger/config/SwaggerAutoConfiguration.java
+++ /dev/null
@@ -1,111 +0,0 @@
-package com.muyu.common.swagger.config;
-
-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 org.springframework.context.annotation.Import;
-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
-@EnableConfigurationProperties(SwaggerProperties.class)
-@ConditionalOnProperty(name = "swagger.enabled", matchIfMissing = true)
-@Import({SwaggerBeanPostProcessor.class, SwaggerWebConfiguration.class})
-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.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();
- }
-}
diff --git a/cloud-common/cloud-common-swagger/src/main/java/com/muyu/common/swagger/config/SwaggerBeanPostProcessor.java b/cloud-common/cloud-common-swagger/src/main/java/com/muyu/common/swagger/config/SwaggerBeanPostProcessor.java
deleted file mode 100644
index 13d252f..0000000
--- a/cloud-common/cloud-common-swagger/src/main/java/com/muyu/common/swagger/config/SwaggerBeanPostProcessor.java
+++ /dev/null
@@ -1,45 +0,0 @@
-package com.muyu.common.swagger.config;
-
-import org.springframework.beans.BeansException;
-import org.springframework.beans.factory.config.BeanPostProcessor;
-import org.springframework.util.ReflectionUtils;
-import org.springframework.web.servlet.mvc.method.RequestMappingInfoHandlerMapping;
-import springfox.documentation.spring.web.plugins.WebFluxRequestHandlerProvider;
-import springfox.documentation.spring.web.plugins.WebMvcRequestHandlerProvider;
-
-import java.lang.reflect.Field;
-import java.util.List;
-import java.util.stream.Collectors;
-
-/**
- * swagger 在 springboot 2.6.x 不兼容问题的处理
- *
- * @author muyu
- */
-public class SwaggerBeanPostProcessor implements BeanPostProcessor {
- @Override
- public Object postProcessAfterInitialization (Object bean, String beanName) throws BeansException {
- if (bean instanceof WebMvcRequestHandlerProvider || bean instanceof WebFluxRequestHandlerProvider) {
- customizeSpringfoxHandlerMappings(getHandlerMappings(bean));
- }
- return bean;
- }
-
- private void customizeSpringfoxHandlerMappings (List mappings) {
- List copy = mappings.stream().filter(mapping -> mapping.getPatternParser() == null)
- .collect(Collectors.toList());
- mappings.clear();
- mappings.addAll(copy);
- }
-
- @SuppressWarnings("unchecked")
- private List getHandlerMappings (Object bean) {
- try {
- Field field = ReflectionUtils.findField(bean.getClass(), "handlerMappings");
- field.setAccessible(true);
- return (List) field.get(bean);
- } catch (IllegalArgumentException | IllegalAccessException e) {
- throw new IllegalStateException(e);
- }
- }
-}
diff --git a/cloud-common/cloud-common-swagger/src/main/java/com/muyu/common/swagger/config/SwaggerProperties.java b/cloud-common/cloud-common-swagger/src/main/java/com/muyu/common/swagger/config/SwaggerProperties.java
deleted file mode 100644
index a0dac64..0000000
--- a/cloud-common/cloud-common-swagger/src/main/java/com/muyu/common/swagger/config/SwaggerProperties.java
+++ /dev/null
@@ -1,296 +0,0 @@
-package com.muyu.common.swagger.config;
-
-import org.springframework.boot.context.properties.ConfigurationProperties;
-
-import java.util.ArrayList;
-import java.util.List;
-
-@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();
-
- public Boolean getEnabled () {
- return enabled;
- }
-
- public void setEnabled (Boolean enabled) {
- this.enabled = enabled;
- }
-
- public String getBasePackage () {
- return basePackage;
- }
-
- public void setBasePackage (String basePackage) {
- this.basePackage = basePackage;
- }
-
- public List getBasePath () {
- return basePath;
- }
-
- public void setBasePath (List basePath) {
- this.basePath = basePath;
- }
-
- public List getExcludePath () {
- return excludePath;
- }
-
- public void setExcludePath (List excludePath) {
- this.excludePath = excludePath;
- }
-
- public String getTitle () {
- return title;
- }
-
- public void setTitle (String title) {
- this.title = title;
- }
-
- public String getDescription () {
- return description;
- }
-
- public void setDescription (String description) {
- this.description = description;
- }
-
- public String getVersion () {
- return version;
- }
-
- public void setVersion (String version) {
- this.version = version;
- }
-
- public String getLicense () {
- return license;
- }
-
- public void setLicense (String license) {
- this.license = license;
- }
-
- public String getLicenseUrl () {
- return licenseUrl;
- }
-
- public void setLicenseUrl (String licenseUrl) {
- this.licenseUrl = licenseUrl;
- }
-
- public String getTermsOfServiceUrl () {
- return termsOfServiceUrl;
- }
-
- public void setTermsOfServiceUrl (String termsOfServiceUrl) {
- this.termsOfServiceUrl = termsOfServiceUrl;
- }
-
- public String getHost () {
- return host;
- }
-
- public void setHost (String host) {
- this.host = host;
- }
-
- public Contact getContact () {
- return contact;
- }
-
- public void setContact (Contact contact) {
- this.contact = contact;
- }
-
- public Authorization getAuthorization () {
- return authorization;
- }
-
- public void setAuthorization (Authorization authorization) {
- this.authorization = authorization;
- }
-
- public static class Contact {
- /**
- * 联系人
- **/
- private String name = "";
- /**
- * 联系人url
- **/
- private String url = "";
- /**
- * 联系人email
- **/
- private String email = "";
-
- public String getName () {
- return name;
- }
-
- public void setName (String name) {
- this.name = name;
- }
-
- public String getUrl () {
- return url;
- }
-
- public void setUrl (String url) {
- this.url = url;
- }
-
- public String getEmail () {
- return email;
- }
-
- public void setEmail (String email) {
- this.email = email;
- }
- }
-
- public static class Authorization {
- /**
- * 鉴权策略ID,需要和SecurityReferences ID保持一致
- */
- private String name = "";
-
- /**
- * 需要开启鉴权URL的正则
- */
- private String authRegex = "^.*$";
-
- /**
- * 鉴权作用域列表
- */
- private List authorizationScopeList = new ArrayList<>();
-
- private List tokenUrlList = new ArrayList<>();
-
- public String getName () {
- return name;
- }
-
- public void setName (String name) {
- this.name = name;
- }
-
- public String getAuthRegex () {
- return authRegex;
- }
-
- public void setAuthRegex (String authRegex) {
- this.authRegex = authRegex;
- }
-
- public List getAuthorizationScopeList () {
- return authorizationScopeList;
- }
-
- public void setAuthorizationScopeList (List authorizationScopeList) {
- this.authorizationScopeList = authorizationScopeList;
- }
-
- public List getTokenUrlList () {
- return tokenUrlList;
- }
-
- public void setTokenUrlList (List tokenUrlList) {
- this.tokenUrlList = tokenUrlList;
- }
- }
-
- public static class AuthorizationScope {
- /**
- * 作用域名称
- */
- private String scope = "";
-
- /**
- * 作用域描述
- */
- private String description = "";
-
- public String getScope () {
- return scope;
- }
-
- public void setScope (String scope) {
- this.scope = scope;
- }
-
- public String getDescription () {
- return description;
- }
-
- public void setDescription (String description) {
- this.description = description;
- }
- }
-}
diff --git a/cloud-common/cloud-common-swagger/src/main/java/com/muyu/common/swagger/config/SwaggerWebConfiguration.java b/cloud-common/cloud-common-swagger/src/main/java/com/muyu/common/swagger/config/SwaggerWebConfiguration.java
deleted file mode 100644
index 48d66f6..0000000
--- a/cloud-common/cloud-common-swagger/src/main/java/com/muyu/common/swagger/config/SwaggerWebConfiguration.java
+++ /dev/null
@@ -1,18 +0,0 @@
-package com.muyu.common.swagger.config;
-
-import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
-import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
-
-/**
- * swagger 资源映射路径
- *
- * @author muyu
- */
-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/");
- }
-}
diff --git a/cloud-common/cloud-common-swagger/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports b/cloud-common/cloud-common-swagger/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports
deleted file mode 100644
index b15b749..0000000
--- a/cloud-common/cloud-common-swagger/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports
+++ /dev/null
@@ -1,3 +0,0 @@
-# com.muyu.common.swagger.config.SwaggerAutoConfiguration
-# com.muyu.common.swagger.config.SwaggerWebConfiguration
-# com.muyu.common.swagger.config.SwaggerBeanPostProcessor
diff --git a/cloud-common/pom.xml b/cloud-common/pom.xml
index 5b03fd4..0d57a4e 100644
--- a/cloud-common/pom.xml
+++ b/cloud-common/pom.xml
@@ -13,7 +13,7 @@
cloud-common-core
cloud-common-redis
cloud-common-seata
- cloud-common-swagger
+ cloud-common-api-doc
cloud-common-security
cloud-common-datascope
cloud-common-datasource
diff --git a/cloud-gateway/pom.xml b/cloud-gateway/pom.xml
index ab86356..106c740 100644
--- a/cloud-gateway/pom.xml
+++ b/cloud-gateway/pom.xml
@@ -76,16 +76,10 @@
cloud-common-redis
-
- io.springfox
- springfox-swagger-ui
- ${swagger.fox.version}
-
-
- io.springfox
- springfox-swagger2
- ${swagger.fox.version}
+ com.github.xiaoymin
+ knife4j-gateway-spring-boot-starter
+ 4.5.0
diff --git a/cloud-gateway/src/main/java/com/muyu/gateway/config/SwaggerProvider.java b/cloud-gateway/src/main/java/com/muyu/gateway/config/SwaggerProvider.java
deleted file mode 100644
index c048db8..0000000
--- a/cloud-gateway/src/main/java/com/muyu/gateway/config/SwaggerProvider.java
+++ /dev/null
@@ -1,76 +0,0 @@
-package com.muyu.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.context.annotation.Lazy;
-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 muyu
- */
-@Component
-public class SwaggerProvider implements SwaggerResourcesProvider, WebFluxConfigurer {
- /**
- * Swagger2默认的url后缀
- */
- public static final String SWAGGER2URL = "/v2/api-docs";
-
- /**
- * 网关路由
- */
- @Lazy
- @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 -> !"cloud-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/cloud-gateway/src/main/java/com/muyu/gateway/filter/log/AccessLogFilter.java b/cloud-gateway/src/main/java/com/muyu/gateway/filter/AccessLogFilter.java
similarity index 99%
rename from cloud-gateway/src/main/java/com/muyu/gateway/filter/log/AccessLogFilter.java
rename to cloud-gateway/src/main/java/com/muyu/gateway/filter/AccessLogFilter.java
index 6307684..9ceec12 100644
--- a/cloud-gateway/src/main/java/com/muyu/gateway/filter/log/AccessLogFilter.java
+++ b/cloud-gateway/src/main/java/com/muyu/gateway/filter/AccessLogFilter.java
@@ -1,8 +1,9 @@
-package com.muyu.gateway.filter.log;
+package com.muyu.gateway.filter;
import cn.hutool.core.date.LocalDateTimeUtil;
import com.alibaba.nacos.common.utils.StringUtils;
import com.muyu.common.core.constant.SecurityConstants;
+import com.muyu.gateway.model.AccessLog;
import com.muyu.gateway.utils.WebFrameworkUtils;
import lombok.extern.log4j.Log4j2;
import org.reactivestreams.Publisher;
diff --git a/cloud-gateway/src/main/java/com/muyu/gateway/handler/SwaggerHandler.java b/cloud-gateway/src/main/java/com/muyu/gateway/handler/SwaggerHandler.java
deleted file mode 100644
index c2a7b67..0000000
--- a/cloud-gateway/src/main/java/com/muyu/gateway/handler/SwaggerHandler.java
+++ /dev/null
@@ -1,46 +0,0 @@
-package com.muyu.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 {
- private final SwaggerResourcesProvider swaggerResources;
- @Autowired(required = false)
- private SecurityConfiguration securityConfiguration;
- @Autowired(required = false)
- private UiConfiguration uiConfiguration;
-
- @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/cloud-gateway/src/main/java/com/muyu/gateway/filter/log/AccessLog.java b/cloud-gateway/src/main/java/com/muyu/gateway/model/AccessLog.java
similarity index 95%
rename from cloud-gateway/src/main/java/com/muyu/gateway/filter/log/AccessLog.java
rename to cloud-gateway/src/main/java/com/muyu/gateway/model/AccessLog.java
index a6bb706..b52eb3e 100644
--- a/cloud-gateway/src/main/java/com/muyu/gateway/filter/log/AccessLog.java
+++ b/cloud-gateway/src/main/java/com/muyu/gateway/model/AccessLog.java
@@ -1,6 +1,5 @@
-package com.muyu.gateway.filter.log;
+package com.muyu.gateway.model;
-import com.alibaba.cloud.commons.io.StringBuilderWriter;
import com.muyu.common.core.utils.StringUtils;
import lombok.AllArgsConstructor;
import lombok.Builder;
@@ -9,7 +8,6 @@ import lombok.NoArgsConstructor;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import org.springframework.cloud.gateway.route.Route;
-import org.springframework.http.HttpStatus;
import org.springframework.http.HttpStatusCode;
import org.springframework.util.MultiValueMap;
diff --git a/cloud-gateway/src/main/resources/bootstrap.yml b/cloud-gateway/src/main/resources/bootstrap.yml
index 6cc9f34..73409c9 100644
--- a/cloud-gateway/src/main/resources/bootstrap.yml
+++ b/cloud-gateway/src/main/resources/bootstrap.yml
@@ -61,3 +61,15 @@ spring:
namespace: ${nacos.namespace}
data-type: json
rule-type: gw-flow
+knife4j:
+ gateway:
+ enabled: true
+ # 指定服务发现的模式聚合微服务文档,并且是默认`default`分组
+ strategy: discover
+ discover:
+ enabled: true
+ # 指定版本号(Swagger2|OpenAPI3)
+ version : openapi3
+ # 需要排除的微服务(eg:网关服务)
+ excluded-services:
+ - cloud-monitor
diff --git a/cloud-modules/cloud-modules-file/pom.xml b/cloud-modules/cloud-modules-file/pom.xml
index 11f3860..e151176 100644
--- a/cloud-modules/cloud-modules-file/pom.xml
+++ b/cloud-modules/cloud-modules-file/pom.xml
@@ -48,22 +48,16 @@
${minio.version}
-
-
-
com.muyu
cloud-common-system
+
- org.springframework.boot
- spring-boot-starter-web
+ com.muyu
+ cloud-common-api-doc
diff --git a/cloud-modules/cloud-modules-gen/pom.xml b/cloud-modules/cloud-modules-gen/pom.xml
index 30b0d48..32c6fa3 100644
--- a/cloud-modules/cloud-modules-gen/pom.xml
+++ b/cloud-modules/cloud-modules-gen/pom.xml
@@ -41,13 +41,6 @@
spring-boot-starter-actuator
-
-
-
org.apache.velocity
@@ -66,15 +59,10 @@
cloud-common-log
-
-
-
+
- org.springframework.boot
- spring-boot-starter-web
+ com.muyu
+ cloud-common-api-doc
diff --git a/cloud-modules/cloud-modules-gen/src/main/java/com/muyu/gen/CloudGenApplication.java b/cloud-modules/cloud-modules-gen/src/main/java/com/muyu/gen/CloudGenApplication.java
index 4868540..da3eb43 100644
--- a/cloud-modules/cloud-modules-gen/src/main/java/com/muyu/gen/CloudGenApplication.java
+++ b/cloud-modules/cloud-modules-gen/src/main/java/com/muyu/gen/CloudGenApplication.java
@@ -2,7 +2,6 @@ package com.muyu.gen;
import com.muyu.common.security.annotation.EnableCustomConfig;
import com.muyu.common.security.annotation.EnableMyFeignClients;
-//import com.muyu.common.swagger.annotation.EnableCustomSwagger2;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@@ -12,7 +11,6 @@ import org.springframework.boot.autoconfigure.SpringBootApplication;
* @author muyu
*/
@EnableCustomConfig
-//@EnableCustomSwagger2
@EnableMyFeignClients
@SpringBootApplication
public class CloudGenApplication {
diff --git a/cloud-modules/cloud-modules-job/pom.xml b/cloud-modules/cloud-modules-job/pom.xml
index 2676963..69ed8ee 100644
--- a/cloud-modules/cloud-modules-job/pom.xml
+++ b/cloud-modules/cloud-modules-job/pom.xml
@@ -41,13 +41,6 @@
spring-boot-starter-actuator
-
-
- io.springfox
- springfox-swagger-ui
- ${swagger.fox.version}
-
-
org.quartz-scheduler
@@ -72,15 +65,10 @@
cloud-common-log
-
-
-
+
- org.springframework.boot
- spring-boot-starter-web
+ com.muyu
+ cloud-common-api-doc
diff --git a/cloud-modules/cloud-modules-job/src/main/java/com/muyu/job/CloudJobApplication.java b/cloud-modules/cloud-modules-job/src/main/java/com/muyu/job/CloudJobApplication.java
index fcb8d9b..b8342e3 100644
--- a/cloud-modules/cloud-modules-job/src/main/java/com/muyu/job/CloudJobApplication.java
+++ b/cloud-modules/cloud-modules-job/src/main/java/com/muyu/job/CloudJobApplication.java
@@ -2,7 +2,6 @@ package com.muyu.job;
import com.muyu.common.security.annotation.EnableCustomConfig;
import com.muyu.common.security.annotation.EnableMyFeignClients;
-//import com.muyu.common.swagger.annotation.EnableCustomSwagger2;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@@ -12,7 +11,6 @@ import org.springframework.boot.autoconfigure.SpringBootApplication;
* @author muyu
*/
@EnableCustomConfig
-//@EnableCustomSwagger2
@EnableMyFeignClients
@SpringBootApplication
public class CloudJobApplication {
diff --git a/cloud-modules/cloud-modules-system/pom.xml b/cloud-modules/cloud-modules-system/pom.xml
index 43f0b1f..f1e7d98 100644
--- a/cloud-modules/cloud-modules-system/pom.xml
+++ b/cloud-modules/cloud-modules-system/pom.xml
@@ -41,13 +41,6 @@
spring-boot-starter-actuator
-
-
- io.springfox
- springfox-swagger-ui
- ${swagger.fox.version}
-
-
com.mysql
@@ -72,21 +65,10 @@
cloud-common-log
-
-
+
com.muyu
- cloud-common-swagger
- -->
-
-
- org.springframework.boot
- spring-boot-starter-web
-
-
-
- org.springdoc
- springdoc-openapi-starter-webmvc-ui
- 2.6.0
+ cloud-common-api-doc
diff --git a/cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/CloudSystemApplication.java b/cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/CloudSystemApplication.java
index 8d86380..b01e5db 100644
--- a/cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/CloudSystemApplication.java
+++ b/cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/CloudSystemApplication.java
@@ -2,7 +2,6 @@ package com.muyu.system;
import com.muyu.common.security.annotation.EnableCustomConfig;
import com.muyu.common.security.annotation.EnableMyFeignClients;
-//import com.muyu.common.swagger.annotation.EnableCustomSwagger2;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
diff --git a/cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/controller/SysConfigController.java b/cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/controller/SysConfigController.java
index 5d97890..3bced52 100644
--- a/cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/controller/SysConfigController.java
+++ b/cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/controller/SysConfigController.java
@@ -10,11 +10,13 @@ import com.muyu.common.security.annotation.RequiresPermissions;
import com.muyu.common.security.utils.SecurityUtils;
import com.muyu.system.domain.SysConfig;
import com.muyu.system.service.SysConfigService;
+import io.swagger.v3.oas.annotations.Operation;
+import io.swagger.v3.oas.annotations.tags.Tag;
+import jakarta.servlet.http.HttpServletResponse;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
-import jakarta.servlet.http.HttpServletResponse;
import java.util.Arrays;
import java.util.List;
@@ -25,6 +27,7 @@ import java.util.List;
*/
@RestController
@RequestMapping("/config")
+@Tag(name = "SysConfigController", description = "系统参数配置")
public class SysConfigController extends BaseController {
@Autowired
@@ -35,6 +38,7 @@ public class SysConfigController extends BaseController {
*/
@RequiresPermissions("system:config:list")
@GetMapping("/list")
+ @Operation(summary = "查询集合", description = "更新水果信息")
public Result> list (SysConfig config) {
startPage();
List list = configService.pageQuery(config);
diff --git a/cloud-modules/cloud-modules-system/src/main/resources/bootstrap.yml b/cloud-modules/cloud-modules-system/src/main/resources/bootstrap.yml
index b57c6de..d31aae7 100644
--- a/cloud-modules/cloud-modules-system/src/main/resources/bootstrap.yml
+++ b/cloud-modules/cloud-modules-system/src/main/resources/bootstrap.yml
@@ -8,10 +8,6 @@ nacos:
user-name: nacos
password: nacos
namespace: muyu-cloud
-# swagger-ui custom path
-springdoc:
- swagger-ui:
- path: /swagger-ui.html
# Spring
spring:
@@ -53,4 +49,4 @@ spring:
- application-config-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension}
logging:
level:
- com.muyu.system.mapper: DEBUG
+ com.muyu.system.mapper: DEBUG
\ No newline at end of file
diff --git a/init-file/cloud-system.sql b/init-file/cloud-system.sql
index 9621a73..0eb4e54 100644
--- a/init-file/cloud-system.sql
+++ b/init-file/cloud-system.sql
@@ -303,7 +303,7 @@ INSERT INTO `sys_menu` VALUES (112, 'Nacos控制台', 2, 4, 'http://localhost:88
INSERT INTO `sys_menu` VALUES (113, 'Admin控制台', 2, 5, 'http://localhost:9100/login', '', '', 0, 0, 'C', '0', '0', 'monitor:server:list', 'server', 'admin', '2024-05-23 15:08:18', '', NULL, '服务监控菜单');
INSERT INTO `sys_menu` VALUES (114, '表单构建', 3, 1, 'build', 'tool/build/index', '', 1, 0, 'C', '0', '0', 'tool:build:list', 'build', 'admin', '2024-05-23 15:08:18', '', NULL, '表单构建菜单');
INSERT INTO `sys_menu` VALUES (115, '代码生成', 3, 2, 'gen', 'tool/gen/index', '', 1, 0, 'C', '0', '0', 'tool:gen:list', 'code', 'admin', '2024-05-23 15:08:18', '', 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', '2024-05-23 15:08:18', '', NULL, '系统接口菜单');
+INSERT INTO `sys_menu` VALUES (116, '系统接口', 3, 3, 'http://localhost:8080/doc.html', '', '', 0, 0, 'C', '0', '0', 'tool:swagger:list', 'swagger', 'admin', '2024-05-23 15:08:18', '', NULL, '系统接口菜单');
INSERT INTO `sys_menu` VALUES (500, '操作日志', 108, 1, 'operlog', 'system/operlog/index', '', 1, 0, 'C', '0', '0', 'system:operlog:list', 'form', 'admin', '2024-05-23 15:08:18', '', NULL, '操作日志菜单');
INSERT INTO `sys_menu` VALUES (501, '登录日志', 108, 2, 'logininfor', 'system/logininfor/index', '', 1, 0, 'C', '0', '0', 'system:logininfor:list', 'logininfor', 'admin', '2024-05-23 15:08:18', '', NULL, '登录日志菜单');
INSERT INTO `sys_menu` VALUES (1000, '用户查询', 100, 1, '', '', '', 1, 0, 'F', '0', '0', 'system:user:query', '#', 'admin', '2024-05-23 15:08:18', '', NULL, '');
diff --git a/init-file/nacos_config.zip b/init-file/nacos_config.zip
index 437ec1999dc009ad473f4fb3546a7f2f1a5c4958..047c1aeedfe57b4b0c5375525d833108457c866b 100644
GIT binary patch
delta 4823
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
NK2g}6&c1Qk`yZe6ZRY?0
delta 3822
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.1.0-M2
1.3.2
5.8.27
+ 4.1.0
@@ -86,6 +87,13 @@
${apm-logback.version}
+
+
+ com.github.xiaoymin
+ knife4j-openapi3-jakarta-spring-boot-starter
+ ${knife4j-openapi3.version}
+
+
jakarta.servlet
@@ -184,7 +192,7 @@
com.muyu
- cloud-common-swagger
+ cloud-common-api-doc
${muyu.version}
From e22f1051bad4ab43261d1fa13fee6471727216b1 Mon Sep 17 00:00:00 2001
From: DongZeLiang <2746733890@qq.com>
Date: Mon, 15 Jul 2024 20:54:24 +0800
Subject: [PATCH 3/3] =?UTF-8?q?feat():=20=E7=A7=BB=E9=99=A4=E4=BA=86?=
=?UTF-8?q?=E8=87=AA=E5=B8=A6=E5=AE=9A=E6=97=B6=E4=BB=BB=E5=8A=A1=E6=A1=86?=
=?UTF-8?q?=E6=9E=B6=EF=BC=8C=E9=9B=86=E6=88=90=E4=BA=86xxl-job?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
cloud-auth/src/main/resources/bootstrap.yml | 2 +-
cloud-common/cloud-common-xxl/pom.xml | 37 +
.../com/muyu/common/xxl/XXLJobConfig.java | 28 +
.../com/muyu/common/xxl/XxlJobProperties.java | 63 ++
.../common/xxl/demo/XxlJobDemoService.java | 28 +
...ot.autoconfigure.AutoConfiguration.imports | 3 +
cloud-common/pom.xml | 1 +
.../src/main/resources/bootstrap.yml | 2 +-
.../src/main/resources/bootstrap.yml | 2 +-
cloud-modules/cloud-modules-gen/pom.xml | 6 +
.../src/main/resources/bootstrap.yml | 4 +-
cloud-modules/cloud-modules-job/pom.xml | 93 --
.../com/muyu/job/CloudJobApplication.java | 20 -
.../com/muyu/job/config/ScheduleConfig.java | 57 -
.../muyu/job/controller/SysJobController.java | 149 ---
.../job/controller/SysJobLogController.java | 81 --
.../main/java/com/muyu/job/domain/SysJob.java | 105 --
.../java/com/muyu/job/domain/SysJobLog.java | 78 --
.../com/muyu/job/mapper/SysJobLogMapper.java | 70 --
.../com/muyu/job/mapper/SysJobMapper.java | 74 --
.../muyu/job/service/ISysJobLogService.java | 60 --
.../com/muyu/job/service/ISysJobService.java | 113 --
.../job/service/SysJobLogServiceImpl.java | 83 --
.../muyu/job/service/SysJobServiceImpl.java | 239 -----
.../main/java/com/muyu/job/task/MyTask.java | 24 -
.../com/muyu/job/util/AbstractQuartzJob.java | 97 --
.../java/com/muyu/job/util/CronUtils.java | 56 -
.../java/com/muyu/job/util/JobInvokeUtil.java | 165 ---
.../QuartzDisallowConcurrentExecution.java | 18 -
.../com/muyu/job/util/QuartzJobExecution.java | 16 -
.../java/com/muyu/job/util/ScheduleUtils.java | 121 ---
.../src/main/resources/banner.txt | 2 -
.../src/main/resources/bootstrap.yml | 49 -
.../src/main/resources/logback/dev.xml | 74 --
.../src/main/resources/logback/prod.xml | 88 --
.../src/main/resources/logback/test.xml | 88 --
.../resources/mapper/job/SysJobLogMapper.xml | 102 --
.../resources/mapper/job/SysJobMapper.xml | 123 ---
cloud-modules/cloud-modules-system/pom.xml | 6 +
.../src/main/resources/bootstrap.yml | 4 +-
cloud-modules/pom.xml | 1 -
.../src/main/resources/bootstrap.yml | 2 +-
init-file/cloud-quartz.sql | 318 +++---
init-file/cloud-seata.sql | 114 +-
init-file/cloud-system.sql | 994 +++++++++---------
init-file/nacos_config.zip | Bin 6501 -> 6496 bytes
pom.xml | 14 +
skywalking/show | 6 +
.../job-admin/config/application.properties | 33 +
xxl-job/job-admin/depXXLAdmin.sh | 7 +
xxl-job/mysql/config/my.cnf | 66 ++
xxl-job/mysql/depXXLMysql.sh | 9 +
xxl-job/show | 13 +
xxl-job/xxl-net.sh | 1 +
54 files changed, 1078 insertions(+), 2931 deletions(-)
create mode 100644 cloud-common/cloud-common-xxl/pom.xml
create mode 100644 cloud-common/cloud-common-xxl/src/main/java/com/muyu/common/xxl/XXLJobConfig.java
create mode 100644 cloud-common/cloud-common-xxl/src/main/java/com/muyu/common/xxl/XxlJobProperties.java
create mode 100644 cloud-common/cloud-common-xxl/src/main/java/com/muyu/common/xxl/demo/XxlJobDemoService.java
create mode 100644 cloud-common/cloud-common-xxl/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports
delete mode 100644 cloud-modules/cloud-modules-job/pom.xml
delete mode 100644 cloud-modules/cloud-modules-job/src/main/java/com/muyu/job/CloudJobApplication.java
delete mode 100644 cloud-modules/cloud-modules-job/src/main/java/com/muyu/job/config/ScheduleConfig.java
delete mode 100644 cloud-modules/cloud-modules-job/src/main/java/com/muyu/job/controller/SysJobController.java
delete mode 100644 cloud-modules/cloud-modules-job/src/main/java/com/muyu/job/controller/SysJobLogController.java
delete mode 100644 cloud-modules/cloud-modules-job/src/main/java/com/muyu/job/domain/SysJob.java
delete mode 100644 cloud-modules/cloud-modules-job/src/main/java/com/muyu/job/domain/SysJobLog.java
delete mode 100644 cloud-modules/cloud-modules-job/src/main/java/com/muyu/job/mapper/SysJobLogMapper.java
delete mode 100644 cloud-modules/cloud-modules-job/src/main/java/com/muyu/job/mapper/SysJobMapper.java
delete mode 100644 cloud-modules/cloud-modules-job/src/main/java/com/muyu/job/service/ISysJobLogService.java
delete mode 100644 cloud-modules/cloud-modules-job/src/main/java/com/muyu/job/service/ISysJobService.java
delete mode 100644 cloud-modules/cloud-modules-job/src/main/java/com/muyu/job/service/SysJobLogServiceImpl.java
delete mode 100644 cloud-modules/cloud-modules-job/src/main/java/com/muyu/job/service/SysJobServiceImpl.java
delete mode 100644 cloud-modules/cloud-modules-job/src/main/java/com/muyu/job/task/MyTask.java
delete mode 100644 cloud-modules/cloud-modules-job/src/main/java/com/muyu/job/util/AbstractQuartzJob.java
delete mode 100644 cloud-modules/cloud-modules-job/src/main/java/com/muyu/job/util/CronUtils.java
delete mode 100644 cloud-modules/cloud-modules-job/src/main/java/com/muyu/job/util/JobInvokeUtil.java
delete mode 100644 cloud-modules/cloud-modules-job/src/main/java/com/muyu/job/util/QuartzDisallowConcurrentExecution.java
delete mode 100644 cloud-modules/cloud-modules-job/src/main/java/com/muyu/job/util/QuartzJobExecution.java
delete mode 100644 cloud-modules/cloud-modules-job/src/main/java/com/muyu/job/util/ScheduleUtils.java
delete mode 100644 cloud-modules/cloud-modules-job/src/main/resources/banner.txt
delete mode 100644 cloud-modules/cloud-modules-job/src/main/resources/bootstrap.yml
delete mode 100644 cloud-modules/cloud-modules-job/src/main/resources/logback/dev.xml
delete mode 100644 cloud-modules/cloud-modules-job/src/main/resources/logback/prod.xml
delete mode 100644 cloud-modules/cloud-modules-job/src/main/resources/logback/test.xml
delete mode 100644 cloud-modules/cloud-modules-job/src/main/resources/mapper/job/SysJobLogMapper.xml
delete mode 100644 cloud-modules/cloud-modules-job/src/main/resources/mapper/job/SysJobMapper.xml
create mode 100644 skywalking/show
create mode 100644 xxl-job/job-admin/config/application.properties
create mode 100644 xxl-job/job-admin/depXXLAdmin.sh
create mode 100644 xxl-job/mysql/config/my.cnf
create mode 100644 xxl-job/mysql/depXXLMysql.sh
create mode 100644 xxl-job/show
create mode 100644 xxl-job/xxl-net.sh
diff --git a/cloud-auth/src/main/resources/bootstrap.yml b/cloud-auth/src/main/resources/bootstrap.yml
index 06efbb9..c115c71 100644
--- a/cloud-auth/src/main/resources/bootstrap.yml
+++ b/cloud-auth/src/main/resources/bootstrap.yml
@@ -4,7 +4,7 @@ server:
# nacos线上地址
nacos:
- addr: 47.92.86.60:8848
+ addr: nacos.muyu.icu:8848
user-name: nacos
password: nacos
namespace: muyu-cloud
diff --git a/cloud-common/cloud-common-xxl/pom.xml b/cloud-common/cloud-common-xxl/pom.xml
new file mode 100644
index 0000000..4af9214
--- /dev/null
+++ b/cloud-common/cloud-common-xxl/pom.xml
@@ -0,0 +1,37 @@
+
+
+ 4.0.0
+
+ com.muyu
+ cloud-common
+ 3.6.3
+
+
+ cloud-common-xxl
+
+ XllJob定时任务
+
+
+ 17
+ 17
+ UTF-8
+
+
+
+
+
+
+ com.muyu
+ cloud-common-core
+
+
+
+
+ com.xuxueli
+ xxl-job-core
+
+
+
+
\ No newline at end of file
diff --git a/cloud-common/cloud-common-xxl/src/main/java/com/muyu/common/xxl/XXLJobConfig.java b/cloud-common/cloud-common-xxl/src/main/java/com/muyu/common/xxl/XXLJobConfig.java
new file mode 100644
index 0000000..0bf4362
--- /dev/null
+++ b/cloud-common/cloud-common-xxl/src/main/java/com/muyu/common/xxl/XXLJobConfig.java
@@ -0,0 +1,28 @@
+package com.muyu.common.xxl;
+
+import com.muyu.common.core.utils.StringUtils;
+import com.xxl.job.core.executor.impl.XxlJobSpringExecutor;
+import lombok.extern.log4j.Log4j2;
+import org.springframework.context.annotation.Bean;
+import org.springframework.stereotype.Component;
+
+@Log4j2
+@Component
+public class XXLJobConfig {
+ @Bean
+ public XxlJobSpringExecutor xxlJobExecutor(XxlJobProperties xxlJobProperties) {
+ if (StringUtils.isEmpty(xxlJobProperties.getAdminAddresses())){
+ throw new RuntimeException("请在bootstrap.yml当中配置shared-configs项,xxl-job共享配置[application-xxl-config]");
+ }
+ XxlJobSpringExecutor xxlJobSpringExecutor = new XxlJobSpringExecutor();
+ xxlJobSpringExecutor.setAdminAddresses(xxlJobProperties.getAdminAddresses());
+ xxlJobSpringExecutor.setAppname(xxlJobProperties.getAppName());
+ xxlJobSpringExecutor.setIp(xxlJobProperties.getIp());
+ xxlJobSpringExecutor.setPort(xxlJobProperties.getPort());
+ xxlJobSpringExecutor.setAccessToken(xxlJobProperties.getAccessToken());
+ xxlJobSpringExecutor.setLogPath(xxlJobProperties.getLogPath());
+ xxlJobSpringExecutor.setLogRetentionDays(xxlJobProperties.getLogRetentionDays());
+ log.info(">>>>>>>>>>> xxl-job config init success.");
+ return xxlJobSpringExecutor;
+ }
+}
diff --git a/cloud-common/cloud-common-xxl/src/main/java/com/muyu/common/xxl/XxlJobProperties.java b/cloud-common/cloud-common-xxl/src/main/java/com/muyu/common/xxl/XxlJobProperties.java
new file mode 100644
index 0000000..c1428f7
--- /dev/null
+++ b/cloud-common/cloud-common-xxl/src/main/java/com/muyu/common/xxl/XxlJobProperties.java
@@ -0,0 +1,63 @@
+package com.muyu.common.xxl;
+
+import lombok.Data;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.context.annotation.Configuration;
+
+@Data
+@Configuration
+@ConfigurationProperties(prefix = "xxl-job")
+public class XxlJobProperties {
+
+ /**
+ * 调度中心部署根地址 [选填]:
+ * 如调度中心集群部署存在多个地址则用逗号分隔。执行器将会使用该地址进行"执行器心跳注册"和"任务结果回调";
+ * 为空则关闭自动注册;
+ */
+ private String adminAddresses;
+
+ /**
+ * 执行器通讯TOKEN [选填]:
+ * 非空时启用;
+ */
+ private String accessToken;
+
+ /**
+ * 执行器AppName [选填]:
+ * 执行器心跳注册分组依据;为空则关闭自动注册
+ */
+ private String appName;
+
+ /**
+ * 执行器注册 [选填]:
+ * 优先使用该配置作为注册地址,为空时使用内嵌服务 ”IP:PORT“ 作为注册地址。
+ * 从而更灵活的支持容器类型执行器动态IP和动态映射端口问题。
+ */
+ private String address;
+
+ /**
+ * 执行器IP [选填]:
+ * 默认为空表示自动获取IP,多网卡时可手动设置指定IP,该IP不会绑定Host仅作为通讯实用;
+ * 地址信息用于 "执行器注册" 和 "调度中心请求并触发任务";
+ */
+ private String ip;
+
+ /**
+ * 执行器端口号 [选填]:
+ * 小于等于0则自动获取;默认端口为9999,
+ * 单机部署多个执行器时,注意要配置不同执行器端口;
+ */
+ private int port;
+
+ /**
+ * 执行器运行日志文件存储磁盘路径 [选填]:
+ * 需要对该路径拥有读写权限;为空则使用默认路径;
+ */
+ private String logPath;
+
+ /**
+ * 执行器日志文件保存天数 [选填]:
+ * 过期日志自动清理, 限制值大于等于3时生效; 否则, 如-1, 关闭自动清理功能;
+ */
+ private int logRetentionDays;
+}
diff --git a/cloud-common/cloud-common-xxl/src/main/java/com/muyu/common/xxl/demo/XxlJobDemoService.java b/cloud-common/cloud-common-xxl/src/main/java/com/muyu/common/xxl/demo/XxlJobDemoService.java
new file mode 100644
index 0000000..9b5dabf
--- /dev/null
+++ b/cloud-common/cloud-common-xxl/src/main/java/com/muyu/common/xxl/demo/XxlJobDemoService.java
@@ -0,0 +1,28 @@
+package com.muyu.common.xxl.demo;
+
+import com.xxl.job.core.context.XxlJobHelper;
+import com.xxl.job.core.handler.annotation.XxlJob;
+import lombok.extern.log4j.Log4j2;
+import org.springframework.stereotype.Component;
+
+@Log4j2
+@Component
+public class XxlJobDemoService {
+
+ /**
+ * 无参测试
+ */
+ @XxlJob("xxl-job-demo-no-param")
+ public void xxlJobDemoNoParam(){
+ log.info("调度名称:[{}] - 无参", "xxl-job-demo-no-param");
+ }
+
+ /**
+ * 有参测试
+ */
+ @XxlJob("xxl-job-demo-one-param")
+ public void xxlJobDemoOneParam(){
+ String param = XxlJobHelper.getJobParam();
+ log.info("调度名称:[{}] - 参数:[{}]", "xxl-job-demo-one-param", param);
+ }
+}
diff --git a/cloud-common/cloud-common-xxl/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports b/cloud-common/cloud-common-xxl/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports
new file mode 100644
index 0000000..1404a51
--- /dev/null
+++ b/cloud-common/cloud-common-xxl/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports
@@ -0,0 +1,3 @@
+com.muyu.common.xxl.XXLJobConfig
+com.muyu.common.xxl.XxlJobProperties
+com.muyu.common.xxl.demo.XxlJobDemoService
\ No newline at end of file
diff --git a/cloud-common/pom.xml b/cloud-common/pom.xml
index 0d57a4e..1db526f 100644
--- a/cloud-common/pom.xml
+++ b/cloud-common/pom.xml
@@ -18,6 +18,7 @@
cloud-common-datascope
cloud-common-datasource
cloud-common-system
+ cloud-common-xxl
cloud-common
diff --git a/cloud-gateway/src/main/resources/bootstrap.yml b/cloud-gateway/src/main/resources/bootstrap.yml
index 73409c9..d942aa8 100644
--- a/cloud-gateway/src/main/resources/bootstrap.yml
+++ b/cloud-gateway/src/main/resources/bootstrap.yml
@@ -4,7 +4,7 @@ server:
# nacos线上地址
nacos:
- addr: 47.92.86.60:8848
+ addr: nacos.muyu.icu:8848
user-name: nacos
password: nacos
namespace: muyu-cloud
diff --git a/cloud-modules/cloud-modules-file/src/main/resources/bootstrap.yml b/cloud-modules/cloud-modules-file/src/main/resources/bootstrap.yml
index ac8470f..5e13a37 100644
--- a/cloud-modules/cloud-modules-file/src/main/resources/bootstrap.yml
+++ b/cloud-modules/cloud-modules-file/src/main/resources/bootstrap.yml
@@ -4,7 +4,7 @@ server:
# nacos线上地址
nacos:
- addr: 47.92.86.60:8848
+ addr: nacos.muyu.icu:8848
user-name: nacos
password: nacos
namespace: muyu-cloud
diff --git a/cloud-modules/cloud-modules-gen/pom.xml b/cloud-modules/cloud-modules-gen/pom.xml
index 32c6fa3..c5de3a6 100644
--- a/cloud-modules/cloud-modules-gen/pom.xml
+++ b/cloud-modules/cloud-modules-gen/pom.xml
@@ -65,6 +65,12 @@
cloud-common-api-doc
+
+
+ com.muyu
+ cloud-common-xxl
+
+
diff --git a/cloud-modules/cloud-modules-gen/src/main/resources/bootstrap.yml b/cloud-modules/cloud-modules-gen/src/main/resources/bootstrap.yml
index 830f8bc..e9427c3 100644
--- a/cloud-modules/cloud-modules-gen/src/main/resources/bootstrap.yml
+++ b/cloud-modules/cloud-modules-gen/src/main/resources/bootstrap.yml
@@ -4,7 +4,7 @@ server:
# nacos线上地址
nacos:
- addr: 47.92.86.60:8848
+ addr: nacos.muyu.icu:8848
user-name: nacos
password: nacos
namespace: muyu-cloud
@@ -47,3 +47,5 @@ spring:
- application-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension}
# 系统环境Config共享配置
- application-config-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension}
+ # xxl-job 配置文件
+ - application-xxl-config-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension}
diff --git a/cloud-modules/cloud-modules-job/pom.xml b/cloud-modules/cloud-modules-job/pom.xml
deleted file mode 100644
index 69ed8ee..0000000
--- a/cloud-modules/cloud-modules-job/pom.xml
+++ /dev/null
@@ -1,93 +0,0 @@
-
-
-
- com.muyu
- cloud-modules
- 3.6.3
-
- 4.0.0
-
- cloud-modules-job
-
-
- cloud-modules-job定时任务
-
-
-
-
-
-
- com.alibaba.cloud
- spring-cloud-starter-alibaba-nacos-discovery
-
-
-
-
- com.alibaba.cloud
- spring-cloud-starter-alibaba-nacos-config
-
-
-
-
- com.alibaba.cloud
- spring-cloud-starter-alibaba-sentinel
-
-
-
-
- org.springframework.boot
- spring-boot-starter-actuator
-
-
-
-
- org.quartz-scheduler
- quartz
-
-
- com.mchange
- c3p0
-
-
-
-
-
-
- com.mysql
- mysql-connector-j
-
-
-
-
- com.muyu
- cloud-common-log
-
-
-
-
- com.muyu
- cloud-common-api-doc
-
-
-
-
-
- ${project.artifactId}
-
-
- org.springframework.boot
- spring-boot-maven-plugin
-
-
-
- repackage
-
-
-
-
-
-
-
-
diff --git a/cloud-modules/cloud-modules-job/src/main/java/com/muyu/job/CloudJobApplication.java b/cloud-modules/cloud-modules-job/src/main/java/com/muyu/job/CloudJobApplication.java
deleted file mode 100644
index b8342e3..0000000
--- a/cloud-modules/cloud-modules-job/src/main/java/com/muyu/job/CloudJobApplication.java
+++ /dev/null
@@ -1,20 +0,0 @@
-package com.muyu.job;
-
-import com.muyu.common.security.annotation.EnableCustomConfig;
-import com.muyu.common.security.annotation.EnableMyFeignClients;
-import org.springframework.boot.SpringApplication;
-import org.springframework.boot.autoconfigure.SpringBootApplication;
-
-/**
- * 定时任务
- *
- * @author muyu
- */
-@EnableCustomConfig
-@EnableMyFeignClients
-@SpringBootApplication
-public class CloudJobApplication {
- public static void main (String[] args) {
- SpringApplication.run(CloudJobApplication.class, args);
- }
-}
diff --git a/cloud-modules/cloud-modules-job/src/main/java/com/muyu/job/config/ScheduleConfig.java b/cloud-modules/cloud-modules-job/src/main/java/com/muyu/job/config/ScheduleConfig.java
deleted file mode 100644
index bc1f96f..0000000
--- a/cloud-modules/cloud-modules-job/src/main/java/com/muyu/job/config/ScheduleConfig.java
+++ /dev/null
@@ -1,57 +0,0 @@
-//package com.muyu.job.config;
-//
-//import java.util.Properties;
-//import javax.sql.DataSource;
-//import org.springframework.context.annotation.Bean;
-//import org.springframework.context.annotation.Configuration;
-//import org.springframework.scheduling.quartz.SchedulerFactoryBean;
-//
-///**
-// * 定时任务配置(单机部署建议删除此类和qrtz数据库表,默认走内存会最高效)
-// *
-// * @author muyu
-// */
-//@Configuration
-//public class ScheduleConfig
-//{
-// @Bean
-// public SchedulerFactoryBean schedulerFactoryBean(DataSource dataSource)
-// {
-// SchedulerFactoryBean factory = new SchedulerFactoryBean();
-// factory.setDataSource(dataSource);
-//
-// // quartz参数
-// Properties prop = new Properties();
-// prop.put("org.quartz.scheduler.instanceName", "MuYuScheduler");
-// prop.put("org.quartz.scheduler.instanceId", "AUTO");
-// // 线程池配置
-// prop.put("org.quartz.threadPool.class", "org.quartz.simpl.SimpleThreadPool");
-// prop.put("org.quartz.threadPool.threadCount", "20");
-// prop.put("org.quartz.threadPool.threadPriority", "5");
-// // JobStore配置
-// prop.put("org.quartz.jobStore.class", "org.springframework.scheduling.quartz.LocalDataSourceJobStore");
-// // 集群配置
-// prop.put("org.quartz.jobStore.isClustered", "true");
-// prop.put("org.quartz.jobStore.clusterCheckinInterval", "15000");
-// prop.put("org.quartz.jobStore.maxMisfiresToHandleAtATime", "1");
-// prop.put("org.quartz.jobStore.txIsolationLevelSerializable", "true");
-//
-// // sqlserver 启用
-// // prop.put("org.quartz.jobStore.selectWithLockSQL", "SELECT * FROM {0}LOCKS UPDLOCK WHERE LOCK_NAME = ?");
-// prop.put("org.quartz.jobStore.misfireThreshold", "12000");
-// prop.put("org.quartz.jobStore.tablePrefix", "QRTZ_");
-// factory.setQuartzProperties(prop);
-//
-// factory.setSchedulerName("MuYuScheduler");
-// // 延时启动
-// factory.setStartupDelay(1);
-// factory.setApplicationContextSchedulerContextKey("applicationContextKey");
-// // 可选,QuartzScheduler
-// // 启动时更新己存在的Job,这样就不用每次修改targetObject后删除qrtz_job_details表对应记录了
-// factory.setOverwriteExistingJobs(true);
-// // 设置自动启动,默认为true
-// factory.setAutoStartup(true);
-//
-// return factory;
-// }
-//}
diff --git a/cloud-modules/cloud-modules-job/src/main/java/com/muyu/job/controller/SysJobController.java b/cloud-modules/cloud-modules-job/src/main/java/com/muyu/job/controller/SysJobController.java
deleted file mode 100644
index 2d6d2c9..0000000
--- a/cloud-modules/cloud-modules-job/src/main/java/com/muyu/job/controller/SysJobController.java
+++ /dev/null
@@ -1,149 +0,0 @@
-package com.muyu.job.controller;
-
-import com.muyu.common.core.constant.Constants;
-import com.muyu.common.core.exception.job.TaskException;
-import com.muyu.common.core.utils.StringUtils;
-import com.muyu.common.core.utils.poi.ExcelUtil;
-import com.muyu.common.core.web.controller.BaseController;
-import com.muyu.common.core.domain.Result;
-import com.muyu.common.core.web.page.TableDataInfo;
-import com.muyu.common.log.annotation.Log;
-import com.muyu.common.log.enums.BusinessType;
-import com.muyu.common.security.annotation.RequiresPermissions;
-import com.muyu.common.security.utils.SecurityUtils;
-import com.muyu.job.domain.SysJob;
-import com.muyu.job.service.ISysJobService;
-import com.muyu.job.util.CronUtils;
-import com.muyu.job.util.ScheduleUtils;
-import org.quartz.SchedulerException;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.web.bind.annotation.*;
-
-import jakarta.servlet.http.HttpServletResponse;
-import java.util.List;
-
-/**
- * 调度任务信息操作处理
- *
- * @author muyu
- */
-@RestController
-@RequestMapping("/job")
-public class SysJobController extends BaseController {
- @Autowired
- private ISysJobService jobService;
-
- /**
- * 查询定时任务列表
- */
- @RequiresPermissions("monitor:job:list")
- @GetMapping("/list")
- public Result> list (SysJob sysJob) {
- startPage();
- List list = jobService.selectJobList(sysJob);
- return getDataTable(list);
- }
-
- /**
- * 导出定时任务列表
- */
- @RequiresPermissions("monitor:job:export")
- @Log(title = "定时任务", businessType = BusinessType.EXPORT)
- @PostMapping("/export")
- public void export (HttpServletResponse response, SysJob sysJob) {
- List list = jobService.selectJobList(sysJob);
- ExcelUtil util = new ExcelUtil(SysJob.class);
- util.exportExcel(response, list, "定时任务");
- }
-
- /**
- * 获取定时任务详细信息
- */
- @RequiresPermissions("monitor:job:query")
- @GetMapping(value = "/{jobId}")
- public Result getInfo (@PathVariable("jobId") Long jobId) {
- return success(jobService.selectJobById(jobId));
- }
-
- /**
- * 新增定时任务
- */
- @RequiresPermissions("monitor:job:add")
- @Log(title = "定时任务", businessType = BusinessType.INSERT)
- @PostMapping
- public Result add (@RequestBody SysJob job) throws SchedulerException, TaskException {
- if (!CronUtils.isValid(job.getCronExpression())) {
- return error("新增任务'" + job.getJobName() + "'失败,Cron表达式不正确");
- } else if (StringUtils.containsIgnoreCase(job.getInvokeTarget(), Constants.LOOKUP_RMI)) {
- return error("新增任务'" + job.getJobName() + "'失败,目标字符串不允许'rmi'调用");
- } else if (StringUtils.containsAnyIgnoreCase(job.getInvokeTarget(), new String[]{Constants.LOOKUP_LDAP, Constants.LOOKUP_LDAPS})) {
- return error("新增任务'" + job.getJobName() + "'失败,目标字符串不允许'ldap(s)'调用");
- } else if (StringUtils.containsAnyIgnoreCase(job.getInvokeTarget(), new String[]{Constants.HTTP, Constants.HTTPS})) {
- return error("新增任务'" + job.getJobName() + "'失败,目标字符串不允许'http(s)'调用");
- } else if (StringUtils.containsAnyIgnoreCase(job.getInvokeTarget(), Constants.JOB_ERROR_STR)) {
- return error("新增任务'" + job.getJobName() + "'失败,目标字符串存在违规");
- } else if (!ScheduleUtils.whiteList(job.getInvokeTarget())) {
- return error("新增任务'" + job.getJobName() + "'失败,目标字符串不在白名单内");
- }
- job.setCreateBy(SecurityUtils.getUsername());
- return toAjax(jobService.insertJob(job));
- }
-
- /**
- * 修改定时任务
- */
- @RequiresPermissions("monitor:job:edit")
- @Log(title = "定时任务", businessType = BusinessType.UPDATE)
- @PutMapping
- public Result edit (@RequestBody SysJob job) throws SchedulerException, TaskException {
- if (!CronUtils.isValid(job.getCronExpression())) {
- return error("修改任务'" + job.getJobName() + "'失败,Cron表达式不正确");
- } else if (StringUtils.containsIgnoreCase(job.getInvokeTarget(), Constants.LOOKUP_RMI)) {
- return error("修改任务'" + job.getJobName() + "'失败,目标字符串不允许'rmi'调用");
- } else if (StringUtils.containsAnyIgnoreCase(job.getInvokeTarget(), new String[]{Constants.LOOKUP_LDAP, Constants.LOOKUP_LDAPS})) {
- return error("修改任务'" + job.getJobName() + "'失败,目标字符串不允许'ldap(s)'调用");
- } else if (StringUtils.containsAnyIgnoreCase(job.getInvokeTarget(), new String[]{Constants.HTTP, Constants.HTTPS})) {
- return error("修改任务'" + job.getJobName() + "'失败,目标字符串不允许'http(s)'调用");
- } else if (StringUtils.containsAnyIgnoreCase(job.getInvokeTarget(), Constants.JOB_ERROR_STR)) {
- return error("修改任务'" + job.getJobName() + "'失败,目标字符串存在违规");
- } else if (!ScheduleUtils.whiteList(job.getInvokeTarget())) {
- return error("修改任务'" + job.getJobName() + "'失败,目标字符串不在白名单内");
- }
- job.setUpdateBy(SecurityUtils.getUsername());
- return toAjax(jobService.updateJob(job));
- }
-
- /**
- * 定时任务状态修改
- */
- @RequiresPermissions("monitor:job:changeStatus")
- @Log(title = "定时任务", businessType = BusinessType.UPDATE)
- @PutMapping("/changeStatus")
- public Result changeStatus (@RequestBody SysJob job) throws SchedulerException {
- SysJob newJob = jobService.selectJobById(job.getJobId());
- newJob.setStatus(job.getStatus());
- return toAjax(jobService.changeStatus(newJob));
- }
-
- /**
- * 定时任务立即执行一次
- */
- @RequiresPermissions("monitor:job:changeStatus")
- @Log(title = "定时任务", businessType = BusinessType.UPDATE)
- @PutMapping("/run")
- public Result run (@RequestBody SysJob job) throws SchedulerException {
- boolean result = jobService.run(job);
- return result ? success() : error("任务不存在或已过期!");
- }
-
- /**
- * 删除定时任务
- */
- @RequiresPermissions("monitor:job:remove")
- @Log(title = "定时任务", businessType = BusinessType.DELETE)
- @DeleteMapping("/{jobIds}")
- public Result remove (@PathVariable("jobIds") Long[] jobIds) throws SchedulerException, TaskException {
- jobService.deleteJobByIds(jobIds);
- return success();
- }
-}
diff --git a/cloud-modules/cloud-modules-job/src/main/java/com/muyu/job/controller/SysJobLogController.java b/cloud-modules/cloud-modules-job/src/main/java/com/muyu/job/controller/SysJobLogController.java
deleted file mode 100644
index f8b46e2..0000000
--- a/cloud-modules/cloud-modules-job/src/main/java/com/muyu/job/controller/SysJobLogController.java
+++ /dev/null
@@ -1,81 +0,0 @@
-package com.muyu.job.controller;
-
-import com.muyu.common.core.utils.poi.ExcelUtil;
-import com.muyu.common.core.web.controller.BaseController;
-import com.muyu.common.core.domain.Result;
-import com.muyu.common.core.web.page.TableDataInfo;
-import com.muyu.common.log.annotation.Log;
-import com.muyu.common.log.enums.BusinessType;
-import com.muyu.common.security.annotation.RequiresPermissions;
-import com.muyu.job.domain.SysJobLog;
-import com.muyu.job.service.ISysJobLogService;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.web.bind.annotation.*;
-
-import jakarta.servlet.http.HttpServletResponse;
-import java.util.List;
-
-/**
- * 调度日志操作处理
- *
- * @author muyu
- */
-@RestController
-@RequestMapping("/job/log")
-public class SysJobLogController extends BaseController {
- @Autowired
- private ISysJobLogService jobLogService;
-
- /**
- * 查询定时任务调度日志列表
- */
- @RequiresPermissions("monitor:job:list")
- @GetMapping("/list")
- public Result> list (SysJobLog sysJobLog) {
- startPage();
- List list = jobLogService.selectJobLogList(sysJobLog);
- return getDataTable(list);
- }
-
- /**
- * 导出定时任务调度日志列表
- */
- @RequiresPermissions("monitor:job:export")
- @Log(title = "任务调度日志", businessType = BusinessType.EXPORT)
- @PostMapping("/export")
- public void export (HttpServletResponse response, SysJobLog sysJobLog) {
- List list = jobLogService.selectJobLogList(sysJobLog);
- ExcelUtil util = new ExcelUtil(SysJobLog.class);
- util.exportExcel(response, list, "调度日志");
- }
-
- /**
- * 根据调度编号获取详细信息
- */
- @RequiresPermissions("monitor:job:query")
- @GetMapping(value = "/{jobLogId}")
- public Result getInfo (@PathVariable("jobLogId") Long jobLogId) {
- return success(jobLogService.selectJobLogById(jobLogId));
- }
-
- /**
- * 删除定时任务调度日志
- */
- @RequiresPermissions("monitor:job:remove")
- @Log(title = "定时任务调度日志", businessType = BusinessType.DELETE)
- @DeleteMapping("/{jobLogIds}")
- public Result remove (@PathVariable("jobLogIds") Long[] jobLogIds) {
- return toAjax(jobLogService.deleteJobLogByIds(jobLogIds));
- }
-
- /**
- * 清空定时任务调度日志
- */
- @RequiresPermissions("monitor:job:remove")
- @Log(title = "调度日志", businessType = BusinessType.CLEAN)
- @DeleteMapping("/clean")
- public Result clean () {
- jobLogService.cleanJobLog();
- return success();
- }
-}
diff --git a/cloud-modules/cloud-modules-job/src/main/java/com/muyu/job/domain/SysJob.java b/cloud-modules/cloud-modules-job/src/main/java/com/muyu/job/domain/SysJob.java
deleted file mode 100644
index 006a112..0000000
--- a/cloud-modules/cloud-modules-job/src/main/java/com/muyu/job/domain/SysJob.java
+++ /dev/null
@@ -1,105 +0,0 @@
-package com.muyu.job.domain;
-
-import com.fasterxml.jackson.annotation.JsonFormat;
-import com.muyu.common.core.annotation.Excel;
-import com.muyu.common.core.annotation.Excel.ColumnType;
-import com.muyu.common.core.constant.ScheduleConstants;
-import com.muyu.common.core.utils.StringUtils;
-import com.muyu.common.core.web.domain.BaseEntity;
-import com.muyu.job.util.CronUtils;
-import lombok.*;
-import lombok.experimental.SuperBuilder;
-
-import jakarta.validation.constraints.NotBlank;
-import jakarta.validation.constraints.Size;
-import java.util.Date;
-
-/**
- * 定时任务调度表 sys_job
- *
- * @author muyu
- */
-@Data
-@SuperBuilder
-@NoArgsConstructor
-@AllArgsConstructor
-@EqualsAndHashCode(callSuper = true)
-public class SysJob extends BaseEntity {
- private static final long serialVersionUID = 1L;
-
- /**
- * 任务ID
- */
- @Excel(name = "任务序号", cellType = ColumnType.NUMERIC)
- private Long jobId;
-
- /**
- * 任务名称
- */
- @Excel(name = "任务名称")
- private String jobName;
-
- /**
- * 任务组名
- */
- @Excel(name = "任务组名")
- private String jobGroup;
-
- /**
- * 调用目标字符串
- */
- @Excel(name = "调用目标字符串")
- private String invokeTarget;
-
- /**
- * cron执行表达式
- */
- @Excel(name = "执行表达式 ")
- private String cronExpression;
-
- /**
- * cron计划策略
- */
- @Builder.Default
- @Excel(name = "计划策略 ", readConverterExp = "0=默认,1=立即触发执行,2=触发一次执行,3=不触发立即执行")
- private String misfirePolicy = ScheduleConstants.MISFIRE_DEFAULT;
-
- /**
- * 是否并发执行(0允许 1禁止)
- */
- @Excel(name = "并发执行", readConverterExp = "0=允许,1=禁止")
- private String concurrent;
-
- /**
- * 任务状态(0正常 1暂停)
- */
- @Excel(name = "任务状态", readConverterExp = "0=正常,1=暂停")
- private String status;
-
- @NotBlank(message = "任务名称不能为空")
- @Size(min = 0, max = 64, message = "任务名称不能超过64个字符")
- public String getJobName () {
- return jobName;
- }
-
- @NotBlank(message = "调用目标字符串不能为空")
- @Size(min = 0, max = 500, message = "调用目标字符串长度不能超过500个字符")
- public String getInvokeTarget () {
- return invokeTarget;
- }
-
- @NotBlank(message = "Cron执行表达式不能为空")
- @Size(min = 0, max = 255, message = "Cron执行表达式不能超过255个字符")
- public String getCronExpression () {
- return cronExpression;
- }
-
- @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
- public Date getNextValidTime () {
- if (StringUtils.isNotEmpty(cronExpression)) {
- return CronUtils.getNextExecution(cronExpression);
- }
- return null;
- }
-
-}
diff --git a/cloud-modules/cloud-modules-job/src/main/java/com/muyu/job/domain/SysJobLog.java b/cloud-modules/cloud-modules-job/src/main/java/com/muyu/job/domain/SysJobLog.java
deleted file mode 100644
index 1c25d80..0000000
--- a/cloud-modules/cloud-modules-job/src/main/java/com/muyu/job/domain/SysJobLog.java
+++ /dev/null
@@ -1,78 +0,0 @@
-package com.muyu.job.domain;
-
-import com.muyu.common.core.annotation.Excel;
-import com.muyu.common.core.web.domain.BaseEntity;
-import lombok.AllArgsConstructor;
-import lombok.Data;
-import lombok.EqualsAndHashCode;
-import lombok.NoArgsConstructor;
-import lombok.experimental.SuperBuilder;
-
-import java.util.Date;
-
-/**
- * 定时任务调度日志表 sys_job_log
- *
- * @author muyu
- */
-@Data
-@SuperBuilder
-@NoArgsConstructor
-@AllArgsConstructor
-@EqualsAndHashCode(callSuper = true)
-public class SysJobLog extends BaseEntity {
- private static final long serialVersionUID = 1L;
-
- /**
- * ID
- */
- @Excel(name = "日志序号")
- private Long jobLogId;
-
- /**
- * 任务名称
- */
- @Excel(name = "任务名称")
- private String jobName;
-
- /**
- * 任务组名
- */
- @Excel(name = "任务组名")
- private String jobGroup;
-
- /**
- * 调用目标字符串
- */
- @Excel(name = "调用目标字符串")
- private String invokeTarget;
-
- /**
- * 日志信息
- */
- @Excel(name = "日志信息")
- private String jobMessage;
-
- /**
- * 执行状态(0正常 1失败)
- */
- @Excel(name = "执行状态", readConverterExp = "0=正常,1=失败")
- private String status;
-
- /**
- * 异常信息
- */
- @Excel(name = "异常信息")
- private String exceptionInfo;
-
- /**
- * 开始时间
- */
- private Date startTime;
-
- /**
- * 停止时间
- */
- private Date stopTime;
-
-}
diff --git a/cloud-modules/cloud-modules-job/src/main/java/com/muyu/job/mapper/SysJobLogMapper.java b/cloud-modules/cloud-modules-job/src/main/java/com/muyu/job/mapper/SysJobLogMapper.java
deleted file mode 100644
index 675b15d..0000000
--- a/cloud-modules/cloud-modules-job/src/main/java/com/muyu/job/mapper/SysJobLogMapper.java
+++ /dev/null
@@ -1,70 +0,0 @@
-package com.muyu.job.mapper;
-
-import com.baomidou.mybatisplus.core.mapper.BaseMapper;
-import com.muyu.job.domain.SysJobLog;
-
-import java.util.List;
-
-/**
- * 调度任务日志信息 数据层
- *
- * @author muyu
- */
-public interface SysJobLogMapper extends BaseMapper {
- /**
- * 获取quartz调度器日志的计划任务
- *
- * @param jobLog 调度日志信息
- *
- * @return 调度任务日志集合
- */
- public List selectJobLogList (SysJobLog jobLog);
-
- /**
- * 查询所有调度任务日志
- *
- * @return 调度任务日志列表
- */
- public List selectJobLogAll ();
-
- /**
- * 通过调度任务日志ID查询调度信息
- *
- * @param jobLogId 调度任务日志ID
- *
- * @return 调度任务日志对象信息
- */
- public SysJobLog selectJobLogById (Long jobLogId);
-
- /**
- * 新增任务日志
- *
- * @param jobLog 调度日志信息
- *
- * @return 结果
- */
- public int insertJobLog (SysJobLog jobLog);
-
- /**
- * 批量删除调度日志信息
- *
- * @param logIds 需要删除的数据ID
- *
- * @return 结果
- */
- public int deleteJobLogByIds (Long[] logIds);
-
- /**
- * 删除任务日志
- *
- * @param jobId 调度日志ID
- *
- * @return 结果
- */
- public int deleteJobLogById (Long jobId);
-
- /**
- * 清空任务日志
- */
- public void cleanJobLog ();
-}
diff --git a/cloud-modules/cloud-modules-job/src/main/java/com/muyu/job/mapper/SysJobMapper.java b/cloud-modules/cloud-modules-job/src/main/java/com/muyu/job/mapper/SysJobMapper.java
deleted file mode 100644
index 84e9fa4..0000000
--- a/cloud-modules/cloud-modules-job/src/main/java/com/muyu/job/mapper/SysJobMapper.java
+++ /dev/null
@@ -1,74 +0,0 @@
-package com.muyu.job.mapper;
-
-import com.baomidou.mybatisplus.core.mapper.BaseMapper;
-import com.muyu.job.domain.SysJob;
-
-import java.util.List;
-
-/**
- * 调度任务信息 数据层
- *
- * @author muyu
- */
-public interface SysJobMapper extends BaseMapper {
- /**
- * 查询调度任务日志集合
- *
- * @param job 调度信息
- *
- * @return 操作日志集合
- */
- public List selectJobList (SysJob job);
-
- /**
- * 查询所有调度任务
- *
- * @return 调度任务列表
- */
- public List selectJobAll ();
-
- /**
- * 通过调度ID查询调度任务信息
- *
- * @param jobId 调度ID
- *
- * @return 角色对象信息
- */
- public SysJob selectJobById (Long jobId);
-
- /**
- * 通过调度ID删除调度任务信息
- *
- * @param jobId 调度ID
- *
- * @return 结果
- */
- public int deleteJobById (Long jobId);
-
- /**
- * 批量删除调度任务信息
- *
- * @param ids 需要删除的数据ID
- *
- * @return 结果
- */
- public int deleteJobByIds (Long[] ids);
-
- /**
- * 修改调度任务信息
- *
- * @param job 调度任务信息
- *
- * @return 结果
- */
- public int updateJob (SysJob job);
-
- /**
- * 新增调度任务信息
- *
- * @param job 调度任务信息
- *
- * @return 结果
- */
- public int insertJob (SysJob job);
-}
diff --git a/cloud-modules/cloud-modules-job/src/main/java/com/muyu/job/service/ISysJobLogService.java b/cloud-modules/cloud-modules-job/src/main/java/com/muyu/job/service/ISysJobLogService.java
deleted file mode 100644
index 349f901..0000000
--- a/cloud-modules/cloud-modules-job/src/main/java/com/muyu/job/service/ISysJobLogService.java
+++ /dev/null
@@ -1,60 +0,0 @@
-package com.muyu.job.service;
-
-import com.muyu.job.domain.SysJobLog;
-
-import java.util.List;
-
-/**
- * 定时任务调度日志信息信息 服务层
- *
- * @author muyu
- */
-public interface ISysJobLogService {
- /**
- * 获取quartz调度器日志的计划任务
- *
- * @param jobLog 调度日志信息
- *
- * @return 调度任务日志集合
- */
- public List selectJobLogList (SysJobLog jobLog);
-
- /**
- * 通过调度任务日志ID查询调度信息
- *
- * @param jobLogId 调度任务日志ID
- *
- * @return 调度任务日志对象信息
- */
- public SysJobLog selectJobLogById (Long jobLogId);
-
- /**
- * 新增任务日志
- *
- * @param jobLog 调度日志信息
- */
- public void addJobLog (SysJobLog jobLog);
-
- /**
- * 批量删除调度日志信息
- *
- * @param logIds 需要删除的日志ID
- *
- * @return 结果
- */
- public int deleteJobLogByIds (Long[] logIds);
-
- /**
- * 删除任务日志
- *
- * @param jobId 调度日志ID
- *
- * @return 结果
- */
- public int deleteJobLogById (Long jobId);
-
- /**
- * 清空任务日志
- */
- public void cleanJobLog ();
-}
diff --git a/cloud-modules/cloud-modules-job/src/main/java/com/muyu/job/service/ISysJobService.java b/cloud-modules/cloud-modules-job/src/main/java/com/muyu/job/service/ISysJobService.java
deleted file mode 100644
index 49a8cd3..0000000
--- a/cloud-modules/cloud-modules-job/src/main/java/com/muyu/job/service/ISysJobService.java
+++ /dev/null
@@ -1,113 +0,0 @@
-package com.muyu.job.service;
-
-import com.muyu.common.core.exception.job.TaskException;
-import com.muyu.job.domain.SysJob;
-import org.quartz.SchedulerException;
-
-import java.util.List;
-
-/**
- * 定时任务调度信息信息 服务层
- *
- * @author muyu
- */
-public interface ISysJobService {
- /**
- * 获取quartz调度器的计划任务
- *
- * @param job 调度信息
- *
- * @return 调度任务集合
- */
- public List selectJobList (SysJob job);
-
- /**
- * 通过调度任务ID查询调度信息
- *
- * @param jobId 调度任务ID
- *
- * @return 调度任务对象信息
- */
- public SysJob selectJobById (Long jobId);
-
- /**
- * 暂停任务
- *
- * @param job 调度信息
- *
- * @return 结果
- */
- public int pauseJob (SysJob job) throws SchedulerException;
-
- /**
- * 恢复任务
- *
- * @param job 调度信息
- *
- * @return 结果
- */
- public int resumeJob (SysJob job) throws SchedulerException;
-
- /**
- * 删除任务后,所对应的trigger也将被删除
- *
- * @param job 调度信息
- *
- * @return 结果
- */
- public int deleteJob (SysJob job) throws SchedulerException;
-
- /**
- * 批量删除调度信息
- *
- * @param jobIds 需要删除的任务ID
- *
- * @return 结果
- */
- public void deleteJobByIds (Long[] jobIds) throws SchedulerException;
-
- /**
- * 任务调度状态修改
- *
- * @param job 调度信息
- *
- * @return 结果
- */
- public int changeStatus (SysJob job) throws SchedulerException;
-
- /**
- * 立即运行任务
- *
- * @param job 调度信息
- *
- * @return 结果
- */
- public boolean run (SysJob job) throws SchedulerException;
-
- /**
- * 新增任务
- *
- * @param job 调度信息
- *
- * @return 结果
- */
- public int insertJob (SysJob job) throws SchedulerException, TaskException;
-
- /**
- * 更新任务
- *
- * @param job 调度信息
- *
- * @return 结果
- */
- public int updateJob (SysJob job) throws SchedulerException, TaskException;
-
- /**
- * 校验cron表达式是否有效
- *
- * @param cronExpression 表达式
- *
- * @return 结果
- */
- public boolean checkCronExpressionIsValid (String cronExpression);
-}
diff --git a/cloud-modules/cloud-modules-job/src/main/java/com/muyu/job/service/SysJobLogServiceImpl.java b/cloud-modules/cloud-modules-job/src/main/java/com/muyu/job/service/SysJobLogServiceImpl.java
deleted file mode 100644
index 074463e..0000000
--- a/cloud-modules/cloud-modules-job/src/main/java/com/muyu/job/service/SysJobLogServiceImpl.java
+++ /dev/null
@@ -1,83 +0,0 @@
-package com.muyu.job.service;
-
-import com.muyu.job.domain.SysJobLog;
-import com.muyu.job.mapper.SysJobLogMapper;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Service;
-
-import java.util.List;
-
-/**
- * 定时任务调度日志信息 服务层
- *
- * @author muyu
- */
-@Service
-public class SysJobLogServiceImpl implements ISysJobLogService {
- @Autowired
- private SysJobLogMapper jobLogMapper;
-
- /**
- * 获取quartz调度器日志的计划任务
- *
- * @param jobLog 调度日志信息
- *
- * @return 调度任务日志集合
- */
- @Override
- public List selectJobLogList (SysJobLog jobLog) {
- return jobLogMapper.selectJobLogList(jobLog);
- }
-
- /**
- * 通过调度任务日志ID查询调度信息
- *
- * @param jobLogId 调度任务日志ID
- *
- * @return 调度任务日志对象信息
- */
- @Override
- public SysJobLog selectJobLogById (Long jobLogId) {
- return jobLogMapper.selectJobLogById(jobLogId);
- }
-
- /**
- * 新增任务日志
- *
- * @param jobLog 调度日志信息
- */
- @Override
- public void addJobLog (SysJobLog jobLog) {
- jobLogMapper.insertJobLog(jobLog);
- }
-
- /**
- * 批量删除调度日志信息
- *
- * @param logIds 需要删除的数据ID
- *
- * @return 结果
- */
- @Override
- public int deleteJobLogByIds (Long[] logIds) {
- return jobLogMapper.deleteJobLogByIds(logIds);
- }
-
- /**
- * 删除任务日志
- *
- * @param jobId 调度日志ID
- */
- @Override
- public int deleteJobLogById (Long jobId) {
- return jobLogMapper.deleteJobLogById(jobId);
- }
-
- /**
- * 清空任务日志
- */
- @Override
- public void cleanJobLog () {
- jobLogMapper.cleanJobLog();
- }
-}
diff --git a/cloud-modules/cloud-modules-job/src/main/java/com/muyu/job/service/SysJobServiceImpl.java b/cloud-modules/cloud-modules-job/src/main/java/com/muyu/job/service/SysJobServiceImpl.java
deleted file mode 100644
index 40d339f..0000000
--- a/cloud-modules/cloud-modules-job/src/main/java/com/muyu/job/service/SysJobServiceImpl.java
+++ /dev/null
@@ -1,239 +0,0 @@
-package com.muyu.job.service;
-
-import com.muyu.common.core.constant.ScheduleConstants;
-import com.muyu.common.core.exception.job.TaskException;
-import com.muyu.job.domain.SysJob;
-import com.muyu.job.mapper.SysJobMapper;
-import com.muyu.job.util.CronUtils;
-import com.muyu.job.util.ScheduleUtils;
-import org.quartz.JobDataMap;
-import org.quartz.JobKey;
-import org.quartz.Scheduler;
-import org.quartz.SchedulerException;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Service;
-import org.springframework.transaction.annotation.Transactional;
-
-import javax.annotation.PostConstruct;
-import java.util.List;
-
-/**
- * 定时任务调度信息 服务层
- *
- * @author muyu
- */
-@Service
-public class SysJobServiceImpl implements ISysJobService {
- @Autowired
- private Scheduler scheduler;
-
- @Autowired
- private SysJobMapper jobMapper;
-
- /**
- * 项目启动时,初始化定时器 主要是防止手动修改数据库导致未同步到定时任务处理(注:不能手动修改数据库ID和任务组名,否则会导致脏数据)
- */
- @PostConstruct
- public void init () throws SchedulerException, TaskException {
- scheduler.clear();
- List jobList = jobMapper.selectJobAll();
- for (SysJob job : jobList) {
- ScheduleUtils.createScheduleJob(scheduler, job);
- }
- }
-
- /**
- * 获取quartz调度器的计划任务列表
- *
- * @param job 调度信息
- *
- * @return
- */
- @Override
- public List selectJobList (SysJob job) {
- return jobMapper.selectJobList(job);
- }
-
- /**
- * 通过调度任务ID查询调度信息
- *
- * @param jobId 调度任务ID
- *
- * @return 调度任务对象信息
- */
- @Override
- public SysJob selectJobById (Long jobId) {
- return jobMapper.selectJobById(jobId);
- }
-
- /**
- * 暂停任务
- *
- * @param job 调度信息
- */
- @Override
- @Transactional(rollbackFor = Exception.class)
- public int pauseJob (SysJob job) throws SchedulerException {
- Long jobId = job.getJobId();
- String jobGroup = job.getJobGroup();
- job.setStatus(ScheduleConstants.Status.PAUSE.getValue());
- int rows = jobMapper.updateJob(job);
- if (rows > 0) {
- scheduler.pauseJob(ScheduleUtils.getJobKey(jobId, jobGroup));
- }
- return rows;
- }
-
- /**
- * 恢复任务
- *
- * @param job 调度信息
- */
- @Override
- @Transactional(rollbackFor = Exception.class)
- public int resumeJob (SysJob job) throws SchedulerException {
- Long jobId = job.getJobId();
- String jobGroup = job.getJobGroup();
- job.setStatus(ScheduleConstants.Status.NORMAL.getValue());
- int rows = jobMapper.updateJob(job);
- if (rows > 0) {
- scheduler.resumeJob(ScheduleUtils.getJobKey(jobId, jobGroup));
- }
- return rows;
- }
-
- /**
- * 删除任务后,所对应的trigger也将被删除
- *
- * @param job 调度信息
- */
- @Override
- @Transactional(rollbackFor = Exception.class)
- public int deleteJob (SysJob job) throws SchedulerException {
- Long jobId = job.getJobId();
- String jobGroup = job.getJobGroup();
- int rows = jobMapper.deleteJobById(jobId);
- if (rows > 0) {
- scheduler.deleteJob(ScheduleUtils.getJobKey(jobId, jobGroup));
- }
- return rows;
- }
-
- /**
- * 批量删除调度信息
- *
- * @param jobIds 需要删除的任务ID
- *
- * @return 结果
- */
- @Override
- @Transactional(rollbackFor = Exception.class)
- public void deleteJobByIds (Long[] jobIds) throws SchedulerException {
- for (Long jobId : jobIds) {
- SysJob job = jobMapper.selectJobById(jobId);
- deleteJob(job);
- }
- }
-
- /**
- * 任务调度状态修改
- *
- * @param job 调度信息
- */
- @Override
- @Transactional(rollbackFor = Exception.class)
- public int changeStatus (SysJob job) throws SchedulerException {
- int rows = 0;
- String status = job.getStatus();
- if (ScheduleConstants.Status.NORMAL.getValue().equals(status)) {
- rows = resumeJob(job);
- } else if (ScheduleConstants.Status.PAUSE.getValue().equals(status)) {
- rows = pauseJob(job);
- }
- return rows;
- }
-
- /**
- * 立即运行任务
- *
- * @param job 调度信息
- */
- @Override
- @Transactional(rollbackFor = Exception.class)
- public boolean run (SysJob job) throws SchedulerException {
- boolean result = false;
- Long jobId = job.getJobId();
- String jobGroup = job.getJobGroup();
- SysJob properties = selectJobById(job.getJobId());
- // 参数
- JobDataMap dataMap = new JobDataMap();
- dataMap.put(ScheduleConstants.TASK_PROPERTIES, properties);
- JobKey jobKey = ScheduleUtils.getJobKey(jobId, jobGroup);
- if (scheduler.checkExists(jobKey)) {
- result = true;
- scheduler.triggerJob(jobKey, dataMap);
- }
- return result;
- }
-
- /**
- * 新增任务
- *
- * @param job 调度信息 调度信息
- */
- @Override
- @Transactional(rollbackFor = Exception.class)
- public int insertJob (SysJob job) throws SchedulerException, TaskException {
- job.setStatus(ScheduleConstants.Status.PAUSE.getValue());
- int rows = jobMapper.insertJob(job);
- if (rows > 0) {
- ScheduleUtils.createScheduleJob(scheduler, job);
- }
- return rows;
- }
-
- /**
- * 更新任务的时间表达式
- *
- * @param job 调度信息
- */
- @Override
- @Transactional(rollbackFor = Exception.class)
- public int updateJob (SysJob job) throws SchedulerException, TaskException {
- SysJob properties = selectJobById(job.getJobId());
- int rows = jobMapper.updateJob(job);
- if (rows > 0) {
- updateSchedulerJob(job, properties.getJobGroup());
- }
- return rows;
- }
-
- /**
- * 更新任务
- *
- * @param job 任务对象
- * @param jobGroup 任务组名
- */
- public void updateSchedulerJob (SysJob job, String jobGroup) throws SchedulerException, TaskException {
- Long jobId = job.getJobId();
- // 判断是否存在
- JobKey jobKey = ScheduleUtils.getJobKey(jobId, jobGroup);
- if (scheduler.checkExists(jobKey)) {
- // 防止创建时存在数据问题 先移除,然后在执行创建操作
- scheduler.deleteJob(jobKey);
- }
- ScheduleUtils.createScheduleJob(scheduler, job);
- }
-
- /**
- * 校验cron表达式是否有效
- *
- * @param cronExpression 表达式
- *
- * @return 结果
- */
- @Override
- public boolean checkCronExpressionIsValid (String cronExpression) {
- return CronUtils.isValid(cronExpression);
- }
-}
diff --git a/cloud-modules/cloud-modules-job/src/main/java/com/muyu/job/task/MyTask.java b/cloud-modules/cloud-modules-job/src/main/java/com/muyu/job/task/MyTask.java
deleted file mode 100644
index 8a4c7d8..0000000
--- a/cloud-modules/cloud-modules-job/src/main/java/com/muyu/job/task/MyTask.java
+++ /dev/null
@@ -1,24 +0,0 @@
-package com.muyu.job.task;
-
-import com.muyu.common.core.utils.StringUtils;
-import org.springframework.stereotype.Component;
-
-/**
- * 定时任务调度测试
- *
- * @author muyu
- */
-@Component("myTask")
-public class MyTask {
- public void ryMultipleParams (String s, Boolean b, Long l, Double d, Integer i) {
- System.out.println(StringUtils.format("执行多参方法: 字符串类型{},布尔类型{},长整型{},浮点型{},整形{}", s, b, l, d, i));
- }
-
- public void ryParams (String params) {
- System.out.println("执行有参方法:" + params);
- }
-
- public void ryNoParams () {
- System.out.println("执行无参方法");
- }
-}
diff --git a/cloud-modules/cloud-modules-job/src/main/java/com/muyu/job/util/AbstractQuartzJob.java b/cloud-modules/cloud-modules-job/src/main/java/com/muyu/job/util/AbstractQuartzJob.java
deleted file mode 100644
index 772b248..0000000
--- a/cloud-modules/cloud-modules-job/src/main/java/com/muyu/job/util/AbstractQuartzJob.java
+++ /dev/null
@@ -1,97 +0,0 @@
-package com.muyu.job.util;
-
-import com.muyu.common.core.constant.ScheduleConstants;
-import com.muyu.common.core.utils.ExceptionUtil;
-import com.muyu.common.core.utils.SpringUtils;
-import com.muyu.common.core.utils.StringUtils;
-import com.muyu.common.core.utils.bean.BeanUtils;
-import com.muyu.job.domain.SysJob;
-import com.muyu.job.domain.SysJobLog;
-import com.muyu.job.service.ISysJobLogService;
-import org.quartz.Job;
-import org.quartz.JobExecutionContext;
-import org.quartz.JobExecutionException;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.util.Date;
-
-/**
- * 抽象quartz调用
- *
- * @author muyu
- */
-public abstract class AbstractQuartzJob implements Job {
- private static final Logger log = LoggerFactory.getLogger(AbstractQuartzJob.class);
-
- /**
- * 线程本地变量
- */
- private static ThreadLocal threadLocal = new ThreadLocal<>();
-
- @Override
- public void execute (JobExecutionContext context) throws JobExecutionException {
- SysJob sysJob = new SysJob();
- BeanUtils.copyBeanProp(sysJob, context.getMergedJobDataMap().get(ScheduleConstants.TASK_PROPERTIES));
- try {
- before(context, sysJob);
- if (sysJob != null) {
- doExecute(context, sysJob);
- }
- after(context, sysJob, null);
- } catch (Exception e) {
- log.error("任务执行异常 - :", e);
- after(context, sysJob, e);
- }
- }
-
- /**
- * 执行前
- *
- * @param context 工作执行上下文对象
- * @param sysJob 系统计划任务
- */
- protected void before (JobExecutionContext context, SysJob sysJob) {
- threadLocal.set(new Date());
- }
-
- /**
- * 执行后
- *
- * @param context 工作执行上下文对象
- * @param sysJob 系统计划任务
- */
- protected void after (JobExecutionContext context, SysJob sysJob, Exception e) {
- Date startTime = threadLocal.get();
- threadLocal.remove();
-
- final SysJobLog sysJobLog = new SysJobLog();
- sysJobLog.setJobName(sysJob.getJobName());
- sysJobLog.setJobGroup(sysJob.getJobGroup());
- sysJobLog.setInvokeTarget(sysJob.getInvokeTarget());
- sysJobLog.setStartTime(startTime);
- sysJobLog.setStopTime(new Date());
- long runMs = sysJobLog.getStopTime().getTime() - sysJobLog.getStartTime().getTime();
- sysJobLog.setJobMessage(sysJobLog.getJobName() + " 总共耗时:" + runMs + "毫秒");
- if (e != null) {
- sysJobLog.setStatus("1");
- String errorMsg = StringUtils.substring(ExceptionUtil.getExceptionMessage(e), 0, 2000);
- sysJobLog.setExceptionInfo(errorMsg);
- } else {
- sysJobLog.setStatus("0");
- }
-
- // 写入数据库当中
- SpringUtils.getBean(ISysJobLogService.class).addJobLog(sysJobLog);
- }
-
- /**
- * 执行方法,由子类重载
- *
- * @param context 工作执行上下文对象
- * @param sysJob 系统计划任务
- *
- * @throws Exception 执行过程中的异常
- */
- protected abstract void doExecute (JobExecutionContext context, SysJob sysJob) throws Exception;
-}
diff --git a/cloud-modules/cloud-modules-job/src/main/java/com/muyu/job/util/CronUtils.java b/cloud-modules/cloud-modules-job/src/main/java/com/muyu/job/util/CronUtils.java
deleted file mode 100644
index 2d3f719..0000000
--- a/cloud-modules/cloud-modules-job/src/main/java/com/muyu/job/util/CronUtils.java
+++ /dev/null
@@ -1,56 +0,0 @@
-package com.muyu.job.util;
-
-import org.quartz.CronExpression;
-
-import java.text.ParseException;
-import java.util.Date;
-
-/**
- * cron表达式工具类
- *
- * @author muyu
- */
-public class CronUtils {
- /**
- * 返回一个布尔值代表一个给定的Cron表达式的有效性
- *
- * @param cronExpression Cron表达式
- *
- * @return boolean 表达式是否有效
- */
- public static boolean isValid (String cronExpression) {
- return CronExpression.isValidExpression(cronExpression);
- }
-
- /**
- * 返回一个字符串值,表示该消息无效Cron表达式给出有效性
- *
- * @param cronExpression Cron表达式
- *
- * @return String 无效时返回表达式错误描述,如果有效返回null
- */
- public static String getInvalidMessage (String cronExpression) {
- try {
- new CronExpression(cronExpression);
- return null;
- } catch (ParseException pe) {
- return pe.getMessage();
- }
- }
-
- /**
- * 返回下一个执行时间根据给定的Cron表达式
- *
- * @param cronExpression Cron表达式
- *
- * @return Date 下次Cron表达式执行时间
- */
- public static Date getNextExecution (String cronExpression) {
- try {
- CronExpression cron = new CronExpression(cronExpression);
- return cron.getNextValidTimeAfter(new Date(System.currentTimeMillis()));
- } catch (ParseException e) {
- throw new IllegalArgumentException(e.getMessage());
- }
- }
-}
diff --git a/cloud-modules/cloud-modules-job/src/main/java/com/muyu/job/util/JobInvokeUtil.java b/cloud-modules/cloud-modules-job/src/main/java/com/muyu/job/util/JobInvokeUtil.java
deleted file mode 100644
index b942b26..0000000
--- a/cloud-modules/cloud-modules-job/src/main/java/com/muyu/job/util/JobInvokeUtil.java
+++ /dev/null
@@ -1,165 +0,0 @@
-package com.muyu.job.util;
-
-import com.muyu.common.core.utils.SpringUtils;
-import com.muyu.common.core.utils.StringUtils;
-import com.muyu.job.domain.SysJob;
-
-import java.lang.reflect.InvocationTargetException;
-import java.lang.reflect.Method;
-import java.util.LinkedList;
-import java.util.List;
-
-/**
- * 任务执行工具
- *
- * @author muyu
- */
-public class JobInvokeUtil {
- /**
- * 执行方法
- *
- * @param sysJob 系统任务
- */
- public static void invokeMethod (SysJob sysJob) throws Exception {
- String invokeTarget = sysJob.getInvokeTarget();
- String beanName = getBeanName(invokeTarget);
- String methodName = getMethodName(invokeTarget);
- List