Merge branch '5.X' of gitee.com:dromara/RuoYi-Vue-Plus into JustAuth
Signed-off-by: 三个三 <2029364173@qq.com>
已添加19个文件
已重命名1个文件
已删除174个文件
已修改21个文件
¶Ô±ÈÐÂÎļþ |
| | |
| | | <component name="ProjectRunConfigurationManager"> |
| | | <configuration default="false" name="ruoyi-powerjob-server" type="docker-deploy" factoryName="dockerfile" server-name="Docker"> |
| | | <deployment type="dockerfile"> |
| | | <settings> |
| | | <option name="imageTag" value="ruoyi/ruoyi-powerjob-server:5.0.0" /> |
| | | <option name="buildOnly" value="true" /> |
| | | <option name="sourceFilePath" value="ruoyi-extend/ruoyi-powerjob-server/Dockerfile" /> |
| | | </settings> |
| | | </deployment> |
| | | <method v="2" /> |
| | | </configuration> |
| | | </component> |
| | |
| | | | åºåå | éç¨ Jackson Spring宿¹å
ç½®åºåå é è°±!!! | éç¨ fastjson bugjson è¿è¿é»å | |
| | | | åå¸å¼å¹ç | åèç¾å¢GTISé²éç³»ç»ç®åå®ç°(ç»èå¯çææ¡£) | æå¨ç¼å注解åºäºaopå®ç° | |
| | | | åå¸å¼é | éç¨ Lock4j åºå±åºäº Redisson | æ | |
| | | | åå¸å¼ä»»å¡è°åº¦ | éç¨ Xxl-Job å¤©çæ¯æåå¸å¼ ç»ä¸ç管çä¸å¿ | éç¨ Quartz åºäºæ°æ®åºéæ§è½å·® é群éè¦åå¾å¤é
ç½®ä¸æ¹é | |
| | | | åå¸å¼ä»»å¡è°åº¦ | éç¨ PowerJob å¤©çæ¯æåå¸å¼ ç»ä¸ç管çä¸å¿ | éç¨ Quartz åºäºæ°æ®åºéæ§è½å·® é群éè¦åå¾å¤é
ç½®ä¸æ¹é | |
| | | | æä»¶åå¨ | éç¨ Minio åå¸å¼æä»¶åå¨ å¤©çæ¯æå¤æºãå¤ç¡¬çãå¤åçãå¤å¯æ¬åå¨<br/>æ¯ææé管ç å®å
¨å¯é æä»¶å¯å å¯åå¨ | éç¨ æ¬æºæä»¶åå¨ æä»¶è£¸æ¼ æä¸¢å¤±æ³æ¼ 䏿¯æé群æåç¹æåº | |
| | | | äºåå¨ | éç¨ AWS S3 å议客æ·ç«¯ æ¯æ ä¸çãé¿éãè
¾è®¯ çä¸åæ¯æS3åè®®çåå®¶ | 䏿¯æ | |
| | | | çä¿¡ | éç¨ sms4j çä¿¡èåå
æ¯ææ°åç§çä¿¡åå®¶ åªéå¨ymlé
置好åå®¶å¯é¥å³å¯ä½¿ç¨ å¯å¤åå®¶å
±ç¨ | 䏿¯æ | |
| | |
| | | <lock4j.version>2.2.4</lock4j.version> |
| | | <dynamic-ds.version>3.6.1</dynamic-ds.version> |
| | | <alibaba-ttl.version>2.14.2</alibaba-ttl.version> |
| | | <xxl-job.version>2.4.0</xxl-job.version> |
| | | <powerjob.version>4.3.3</powerjob.version> |
| | | <mapstruct-plus.version>1.2.3</mapstruct-plus.version> |
| | | <mapstruct-plus.lombok.version>0.2.0</mapstruct-plus.lombok.version> |
| | | <lombok.version>1.18.26</lombok.version> |
| | |
| | | <version>${lock4j.version}</version> |
| | | </dependency> |
| | | |
| | | <!-- xxl-job-core --> |
| | | <dependency> |
| | | <groupId>com.xuxueli</groupId> |
| | | <artifactId>xxl-job-core</artifactId> |
| | | <version>${xxl-job.version}</version> |
| | | </dependency> |
| | | |
| | | <dependency> |
| | | <groupId>com.alibaba</groupId> |
| | |
| | | <version>${revision}</version> |
| | | </dependency> |
| | | |
| | | <!-- PowerJob --> |
| | | <dependency> |
| | | <groupId>tech.powerjob</groupId> |
| | | <artifactId>powerjob-worker-spring-boot-starter</artifactId> |
| | | <version>${powerjob.version}</version> |
| | | </dependency> |
| | | <dependency> |
| | | <groupId>tech.powerjob</groupId> |
| | | <artifactId>powerjob-official-processors</artifactId> |
| | | <version>${powerjob.version}</version> |
| | | </dependency> |
| | | |
| | | </dependencies> |
| | | </dependencyManagement> |
| | | |
| | |
| | | username: ruoyi |
| | | password: 123456 |
| | | |
| | | --- # xxl-job é
ç½® |
| | | xxl.job: |
| | | # æ§è¡å¨å¼å
³ |
| | | enabled: true |
| | | # è°åº¦ä¸å¿å°åï¼å¦è°åº¦ä¸å¿é群é¨ç½²åå¨å¤ä¸ªå°ååç¨éå·åéã |
| | | admin-addresses: http://localhost:9100/xxl-job-admin |
| | | # æ§è¡å¨é讯TOKENï¼é空æ¶å¯ç¨ |
| | | access-token: xxl-job |
| | | executor: |
| | | # æ§è¡å¨AppNameï¼æ§è¡å¨å¿è·³æ³¨ååç»ä¾æ®ï¼ä¸ºç©ºåå
³éèªå¨æ³¨å |
| | | appname: xxl-job-executor |
| | | # æ§è¡å¨ç«¯å£å· æ§è¡å¨ä»9101å¼å§å¾åå |
| | | port: 9101 |
| | | # æ§è¡å¨æ³¨åï¼é»è®¤IP:PORT |
| | | address: |
| | | # æ§è¡å¨IPï¼é»è®¤èªå¨è·åIP |
| | | ip: |
| | | # æ§è¡å¨è¿è¡æ¥å¿æä»¶åå¨ç£çè·¯å¾ |
| | | logpath: ./logs/xxl-job |
| | | # æ§è¡å¨æ¥å¿æä»¶ä¿å天æ°ï¼å¤§äº3çæ |
| | | logretentiondays: 30 |
| | | --- # powerjob é
ç½® |
| | | powerjob: |
| | | worker: |
| | | # å¦ä½å¼å¯è°åº¦ä¸å¿è¯·æ¥çææ¡£æç¨ |
| | | enabled: false |
| | | # éè¦å
å¨ powerjob ç»å½é¡µæ§è¡åºç¨æ³¨ååæè½ä½¿ç¨ |
| | | app-name: ruoyi-worker |
| | | enable-test-mode: false |
| | | max-appended-wf-context-length: 4096 |
| | | max-result-length: 4096 |
| | | port: 27777 |
| | | protocol: http |
| | | server-address: 127.0.0.1:7700 |
| | | store-strategy: disk |
| | | |
| | | --- # æ°æ®æºé
ç½® |
| | | spring: |
| | |
| | | username: ruoyi |
| | | password: 123456 |
| | | |
| | | --- # xxl-job é
ç½® |
| | | xxl.job: |
| | | # æ§è¡å¨å¼å
³ |
| | | enabled: true |
| | | # è°åº¦ä¸å¿å°åï¼å¦è°åº¦ä¸å¿é群é¨ç½²åå¨å¤ä¸ªå°ååç¨éå·åéã |
| | | admin-addresses: http://localhost:9100/xxl-job-admin |
| | | # æ§è¡å¨é讯TOKENï¼é空æ¶å¯ç¨ |
| | | access-token: xxl-job |
| | | executor: |
| | | # æ§è¡å¨AppNameï¼æ§è¡å¨å¿è·³æ³¨ååç»ä¾æ®ï¼ä¸ºç©ºåå
³éèªå¨æ³¨å |
| | | appname: xxl-job-executor |
| | | # æ§è¡å¨ç«¯å£å· æ§è¡å¨ä»9101å¼å§å¾åå |
| | | port: 9101 |
| | | # æ§è¡å¨æ³¨åï¼é»è®¤IP:PORT |
| | | address: |
| | | # æ§è¡å¨IPï¼é»è®¤èªå¨è·åIP |
| | | ip: |
| | | # æ§è¡å¨è¿è¡æ¥å¿æä»¶åå¨ç£çè·¯å¾ |
| | | logpath: ./logs/xxl-job |
| | | # æ§è¡å¨æ¥å¿æä»¶ä¿å天æ°ï¼å¤§äº3çæ |
| | | logretentiondays: 30 |
| | | --- # powerjob é
ç½® |
| | | powerjob: |
| | | worker: |
| | | # å¦ä½å¼å¯è°åº¦ä¸å¿è¯·æ¥çææ¡£æç¨ |
| | | enabled: false |
| | | # éè¦å
å¨ powerjob ç»å½é¡µæ§è¡åºç¨æ³¨ååæè½ä½¿ç¨ |
| | | app-name: ruoyi-worker |
| | | enable-test-mode: false |
| | | max-appended-wf-context-length: 4096 |
| | | max-result-length: 4096 |
| | | port: 27777 |
| | | protocol: http |
| | | server-address: 127.0.0.1:7700 |
| | | store-strategy: disk |
| | | |
| | | --- # æ°æ®æºé
ç½® |
| | | spring: |
| | |
| | | ruoyi-common-job 宿¶ä»»å¡ |
| | | </description> |
| | | |
| | | <dependencies> |
| | | <dependencies> |
| | | |
| | | <dependency> |
| | | <groupId>org.springframework.boot</groupId> |
| | | <artifactId>spring-boot-autoconfigure</artifactId> |
| | | </dependency> |
| | | |
| | | <!-- xxl-job-core --> |
| | | <!--PowerJob--> |
| | | <dependency> |
| | | <groupId>com.xuxueli</groupId> |
| | | <artifactId>xxl-job-core</artifactId> |
| | | <groupId>tech.powerjob</groupId> |
| | | <artifactId>powerjob-worker-spring-boot-starter</artifactId> |
| | | </dependency> |
| | | <dependency> |
| | | <groupId>tech.powerjob</groupId> |
| | | <artifactId>powerjob-official-processors</artifactId> |
| | | </dependency> |
| | | |
| | | <dependency> |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package org.dromara.common.job.config; |
| | | |
| | | import org.springframework.boot.autoconfigure.condition.ConditionalOnBean; |
| | | import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; |
| | | import org.springframework.context.annotation.Configuration; |
| | | import org.springframework.scheduling.annotation.EnableScheduling; |
| | | import tech.powerjob.worker.PowerJobWorker; |
| | | |
| | | /** |
| | | * å¯å¨å®æ¶ä»»å¡ |
| | | * @author yhan219 |
| | | * @since 2023/6/2 |
| | | */ |
| | | @Configuration |
| | | @ConditionalOnBean(PowerJobWorker.class) |
| | | @ConditionalOnProperty(prefix = "powerjob.worker", name = "enabled", havingValue = "true") |
| | | @EnableScheduling |
| | | public class PowerJobConfig { |
| | | |
| | | |
| | | } |
| | |
| | | |
| | | <modules> |
| | | <module>ruoyi-monitor-admin</module> |
| | | <module>ruoyi-xxl-job-admin</module> |
| | | <module>ruoyi-powerjob-server</module> |
| | | </modules> |
| | | |
| | | </project> |
¶Ô±ÈÐÂÎļþ |
| | |
| | | FROM findepi/graalvm:java17-native |
| | | |
| | | MAINTAINER Lion Li |
| | | |
| | | RUN mkdir -p /ruoyi/powerjob/logs |
| | | |
| | | WORKDIR /ruoyi/powerjob |
| | | |
| | | EXPOSE 7700 |
| | | |
| | | ADD ./target/ruoyi-powerjob-server.jar ./app.jar |
| | | |
| | | ENTRYPOINT ["java", "-Djava.security.egd=file:/dev/./urandom", "-jar", "app.jar"] |
¶Ô±ÈÐÂÎļþ |
| | |
| | | <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" |
| | | xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> |
| | | <parent> |
| | | <groupId>org.dromara</groupId> |
| | | <artifactId>ruoyi-extend</artifactId> |
| | | <version>${revision}</version> |
| | | </parent> |
| | | <modelVersion>4.0.0</modelVersion> |
| | | <packaging>jar</packaging> |
| | | <artifactId>ruoyi-powerjob-server</artifactId> |
| | | |
| | | <properties> |
| | | <spring-boot.version>2.7.12</spring-boot.version> |
| | | <spring-boot-admin.version>2.7.10</spring-boot-admin.version> |
| | | </properties> |
| | | <dependencyManagement> |
| | | <dependencies> |
| | | <dependency> |
| | | <groupId>org.springframework.boot</groupId> |
| | | <artifactId>spring-boot-starter-parent</artifactId> |
| | | <version>${spring-boot.version}</version> |
| | | <type>pom</type> |
| | | <scope>import</scope> |
| | | </dependency> |
| | | </dependencies> |
| | | </dependencyManagement> |
| | | |
| | | <dependencies> |
| | | |
| | | <!-- PowerJob server--> |
| | | <dependency> |
| | | <groupId>tech.powerjob</groupId> |
| | | <artifactId>powerjob-server-starter</artifactId> |
| | | <version>${powerjob.version}</version> |
| | | </dependency> |
| | | |
| | | <dependency> |
| | | <groupId>de.codecentric</groupId> |
| | | <artifactId>spring-boot-admin-starter-client</artifactId> |
| | | <version>${spring-boot-admin.version}</version> |
| | | </dependency> |
| | | |
| | | <dependency> |
| | | <groupId>org.projectlombok</groupId> |
| | | <artifactId>lombok</artifactId> |
| | | </dependency> |
| | | |
| | | </dependencies> |
| | | |
| | | <build> |
| | | <finalName>${project.artifactId}</finalName> |
| | | <plugins> |
| | | <plugin> |
| | | <groupId>org.springframework.boot</groupId> |
| | | <artifactId>spring-boot-maven-plugin</artifactId> |
| | | <version>${spring-boot.version}</version> |
| | | <executions> |
| | | <execution> |
| | | <goals> |
| | | <goal>repackage</goal> |
| | | </goals> |
| | | </execution> |
| | | </executions> |
| | | </plugin> |
| | | </plugins> |
| | | </build> |
| | | |
| | | </project> |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package org.dromara.powerjob; |
| | | |
| | | import lombok.extern.slf4j.Slf4j; |
| | | import org.springframework.boot.SpringApplication; |
| | | import org.springframework.boot.autoconfigure.SpringBootApplication; |
| | | import org.springframework.scheduling.annotation.EnableScheduling; |
| | | import tech.powerjob.server.common.utils.PropertyUtils; |
| | | |
| | | /** |
| | | * powerjob å¯å¨ç¨åº |
| | | * |
| | | * @author yhan219 |
| | | */ |
| | | @Slf4j |
| | | @EnableScheduling |
| | | @SpringBootApplication(scanBasePackages = "tech.powerjob.server") |
| | | public class PowerJobServerApplication { |
| | | |
| | | public static void main(String[] args) { |
| | | PropertyUtils.init(); |
| | | SpringApplication.run(tech.powerjob.server.PowerJobServerApplication.class, args); |
| | | log.info("ææ¡£å°å: https://www.yuque.com/powerjob/guidence/problem"); |
| | | } |
| | | |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | oms.env=dev |
| | | |
| | | ####### Database properties(Configure according to the the environment) ####### |
| | | spring.datasource.core.driver-class-name=com.mysql.cj.jdbc.Driver |
| | | spring.datasource.core.jdbc-url=jdbc:mysql://localhost:3306/ry-vue?useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai |
| | | spring.datasource.core.username=root |
| | | spring.datasource.core.password=root |
| | | spring.datasource.core.maximum-pool-size=20 |
| | | spring.datasource.core.minimum-idle=5 |
| | | |
| | | # çæ§é
ç½® |
| | | # 客æ·ç«¯å¼å
³ |
| | | spring.boot.admin.client.enabled=true |
| | | # 设置 Spring Boot Admin Server å°å |
| | | spring.boot.admin.client.url: http://localhost:9090/admin |
| | | spring.boot.admin.client.instance.service-host-type=IP |
| | | spring.boot.admin.client.username=ruoyi |
| | | spring.boot.admin.client.password=123456 |
| | | |
| | | ####### MongoDB properties(Non-core configuration properties) ####### |
| | | ####### delete mongodb config to disable mongodb ####### |
| | | oms.mongodb.enable=false |
| | | #spring.data.mongodb.uri=mongodb+srv://zqq:No1Bug2Please3!@cluster0.wie54.gcp.mongodb.net/powerjob_daily?retryWrites=true&w=majority |
| | | |
| | | ####### Email properties(Non-core configuration properties) ####### |
| | | ####### Delete the following code to disable the mail ####### |
| | | #spring.mail.host=smtp.163.com |
| | | #spring.mail.username=zqq@163.com |
| | | #spring.mail.password=GOFZPNARMVKCGONV |
| | | #spring.mail.properties.mail.smtp.auth=true |
| | | #spring.mail.properties.mail.smtp.starttls.enable=true |
| | | #spring.mail.properties.mail.smtp.starttls.required=true |
| | | |
| | | ####### DingTalk properties(Non-core configuration properties) ####### |
| | | ####### Delete the following code to disable the DingTalk ####### |
| | | #oms.alarm.ding.app-key=dingauqwkvxxnqskknfv |
| | | #oms.alarm.ding.app-secret=XWrEPdAZMPgJeFtHuL0LH73LRj-74umF2_0BFcoXMfvnX0pCQvt0rpb1JOJU_HLl |
| | | #oms.alarm.ding.agent-id=847044348 |
| | | |
| | | ####### Resource cleaning properties ####### |
| | | oms.instanceinfo.retention=1 |
| | | oms.container.retention.local=1 |
| | | oms.container.retention.remote=-1 |
| | | |
| | | ####### Cache properties ####### |
| | | oms.instance.metadata.cache.size=1024 |
| | | |
| | | ####### Threshold in precise fetching server(0~100). 100 means full detection of server, in which ####### |
| | | ####### split-brain could be avoided while performance overhead would increase. ####### |
| | | oms.accurate.select.server.percentage = 50 |
¶Ô±ÈÐÂÎļþ |
| | |
| | | oms.env=prod |
| | | |
| | | ####### Database properties(Configure according to the the environment) ####### |
| | | spring.datasource.core.driver-class-name=com.mysql.cj.jdbc.Driver |
| | | spring.datasource.core.jdbc-url=jdbc:mysql://localhost:3306/ry-vue?useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai |
| | | spring.datasource.core.username=root |
| | | spring.datasource.core.password=root |
| | | spring.datasource.core.maximum-pool-size=20 |
| | | spring.datasource.core.minimum-idle=5 |
| | | |
| | | # çæ§é
ç½® |
| | | # 客æ·ç«¯å¼å
³ |
| | | spring.boot.admin.client.enabled=true |
| | | # 设置 Spring Boot Admin Server å°å |
| | | spring.boot.admin.client.url: http://localhost:9090/admin |
| | | spring.boot.admin.client.instance.service-host-type=IP |
| | | spring.boot.admin.client.username=ruoyi |
| | | spring.boot.admin.client.password=123456 |
| | | |
| | | ####### MongoDB properties(Non-core configuration properties) ####### |
| | | ####### delete mongodb config to disable mongodb ####### |
| | | oms.mongodb.enable=false |
| | | #spring.data.mongodb.uri=mongodb+srv://zqq:No1Bug2Please3!@cluster0.wie54.gcp.mongodb.net/powerjob_daily?retryWrites=true&w=majority |
| | | |
| | | ####### Email properties(Non-core configuration properties) ####### |
| | | ####### Delete the following code to disable the mail ####### |
| | | #spring.mail.host=smtp.163.com |
| | | #spring.mail.username=zqq@163.com |
| | | #spring.mail.password=GOFZPNARMVKCGONV |
| | | #spring.mail.properties.mail.smtp.auth=true |
| | | #spring.mail.properties.mail.smtp.starttls.enable=true |
| | | #spring.mail.properties.mail.smtp.starttls.required=true |
| | | |
| | | ####### DingTalk properties(Non-core configuration properties) ####### |
| | | ####### Delete the following code to disable the DingTalk ####### |
| | | #oms.alarm.ding.app-key=dingauqwkvxxnqskknfv |
| | | #oms.alarm.ding.app-secret=XWrEPdAZMPgJeFtHuL0LH73LRj-74umF2_0BFcoXMfvnX0pCQvt0rpb1JOJU_HLl |
| | | #oms.alarm.ding.agent-id=847044348 |
| | | |
| | | ####### Resource cleaning properties ####### |
| | | oms.instanceinfo.retention=7 |
| | | oms.container.retention.local=7 |
| | | oms.container.retention.remote=-1 |
| | | |
| | | ####### Cache properties ####### |
| | | oms.instance.metadata.cache.size=2048 |
| | | |
| | | ####### Threshold in precise fetching server(0~100). 100 means full detection of server, in which ####### |
| | | ####### split-brain could be avoided while performance overhead would increase. ####### |
| | | oms.accurate.select.server.percentage = 50 |
¶Ô±ÈÐÂÎļþ |
| | |
| | | # Http server port |
| | | server.port=7700 |
| | | |
| | | spring.profiles.active=@profiles.active@ |
| | | spring.main.banner-mode=log |
| | | spring.jpa.open-in-view=false |
| | | spring.data.mongodb.repositories.type=none |
| | | logging.level.org.mongodb=warn |
| | | logging.config: classpath:logback-plus.xml |
| | | |
| | | # Configuration for uploading files. |
| | | spring.servlet.multipart.enabled=true |
| | | spring.servlet.multipart.file-size-threshold=0 |
| | | spring.servlet.multipart.max-file-size=209715200 |
| | | spring.servlet.multipart.max-request-size=209715200 |
| | | |
| | | ###### PowerJob transporter configuration ###### |
| | | oms.transporter.active.protocols=AKKA,HTTP |
| | | oms.transporter.main.protocol=HTTP |
| | | oms.akka.port=10086 |
| | | oms.http.port=10010 |
| | | # Prefix for all tables. Default empty string. Config if you have needs, i.e. pj_ |
| | | oms.table-prefix=pj_ |
| | | |
| | | # Actuator çæ§ç«¯ç¹çé
置项 |
| | | spring.application.name: ruoyi-powerjob-server |
| | | management.endpoints.web.exposure.include=* |
| | | management.endpoint.health.show-details=ALWAYS |
| | | management.endpoint.logfile.external-file=./logs/ruoyi-powerjob-server.log |
| | | management.health.mongo.enabled=${oms.mongodb.enable} |
¶Ô±ÈÐÂÎļþ |
| | |
| | | Application Version: ${revision} |
| | | Spring Boot Version: ${spring-boot.version} |
| | | _ _ |
| | | (_) | | |
| | | _ __ _____ _____ _ __ _ ___ | |__ ______ ___ ___ _ ____ _____ _ __ |
| | | | '_ \ / _ \ \ /\ / / _ \ '__| |/ _ \| '_ \______/ __|/ _ \ '__\ \ / / _ \ '__| |
| | | | |_) | (_) \ V V / __/ | | | (_) | |_) | \__ \ __/ | \ V / __/ | |
| | | | .__/ \___/ \_/\_/ \___|_| | |\___/|_.__/ |___/\___|_| \_/ \___|_| |
| | | | | _/ | |
| | | |_| |__/ |
| | | |
ÎļþÃû´Ó ruoyi-extend/ruoyi-xxl-job-admin/src/main/resources/logback-plus.xml ÐÞ¸Ä |
| | |
| | | <configuration debug="false" scan="true" scanPeriod="1 seconds"> |
| | | |
| | | <contextName>logback</contextName> |
| | | <property name="log.path" value="./logs/ruoyi-xxl-job-admin"/> |
| | | <property name="log.path" value="./logs/ruoyi-powerjob-server"/> |
| | | <property name="console.log.pattern" |
| | | value="%red(%d{yyyy-MM-dd HH:mm:ss}) %green([%thread]) %highlight(%-5level) %boldMagenta(%logger{36}%n) - %msg%n"/> |
| | | <property name="log.pattern" value="%d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{36} - %msg%n"/> |
| | |
| | | <appender-ref ref="file"/> |
| | | </root> |
| | | |
| | | </configuration> |
| | | </configuration> |
| | |
| | | select table_name, table_comment, create_time, update_time |
| | | from information_schema.tables |
| | | where table_schema = (select database()) |
| | | AND table_name NOT LIKE 'xxl_job_%' AND table_name NOT LIKE 'gen_%' |
| | | AND table_name NOT LIKE 'pj_%' AND table_name NOT LIKE 'gen_%' |
| | | <if test="genTable.params.genTableNames != null and genTable.params.genTableNames.size > 0"> |
| | | AND table_name NOT IN |
| | | <foreach collection="genTable.params.genTableNames" open="(" close=")" separator="," item="item"> |
| | |
| | | where dt.table_name = dtc.table_name |
| | | and dt.table_name = uo.object_name |
| | | and uo.object_type = 'TABLE' |
| | | AND dt.table_name NOT LIKE 'XXL_JOB_%' AND dt.table_name NOT LIKE 'GEN_%' |
| | | AND dt.table_name NOT LIKE 'pj_%' AND dt.table_name NOT LIKE 'GEN_%' |
| | | <if test="genTable.params.genTableNames != null and genTable.params.genTableNames.size > 0"> |
| | | AND lower(dt.table_name) NOT IN |
| | | <foreach collection="genTable.params.genTableNames" open="(" close=")" separator="," item="item"> |
| | |
| | | AND n.nspname = 'public'::name |
| | | AND n.nspname <![CDATA[ <> ]]> ''::name |
| | | ) list_table |
| | | where table_name NOT LIKE 'xxl_job_%' AND table_name NOT LIKE 'gen_%' |
| | | where table_name NOT LIKE 'pj_%' AND table_name NOT LIKE 'gen_%' |
| | | <if test="genTable.params.genTableNames != null and genTable.params.genTableNames.size > 0"> |
| | | AND table_name NOT IN |
| | | <foreach collection="genTable.params.genTableNames" open="(" close=")" separator="," item="item"> |
| | |
| | | FROM SYSOBJECTS D |
| | | INNER JOIN SYS.EXTENDED_PROPERTIES F ON D.ID = F.MAJOR_ID |
| | | AND F.MINOR_ID = 0 AND D.XTYPE = 'U' AND D.NAME != 'DTPROPERTIES' |
| | | AND D.NAME NOT LIKE 'xxl_job_%' AND D.NAME NOT LIKE 'gen_%' |
| | | AND D.NAME NOT LIKE 'pj_%' AND D.NAME NOT LIKE 'gen_%' |
| | | <if test="genTable.params.genTableNames != null and genTable.params.genTableNames.size > 0"> |
| | | AND D.NAME NOT IN |
| | | <foreach collection="genTable.params.genTableNames" open="(" close=")" separator="," item="item"> |
| | |
| | | <select id="selectDbTableListByNames" resultMap="GenTableResult"> |
| | | <if test="@org.dromara.common.mybatis.helper.DataBaseHelper@isMySql()"> |
| | | select table_name, table_comment, create_time, update_time from information_schema.tables |
| | | where table_name NOT LIKE 'xxl_job_%' and table_name NOT LIKE 'gen_%' and table_schema = (select database()) |
| | | where table_name NOT LIKE 'pj_%' and table_name NOT LIKE 'gen_%' and table_schema = (select database()) |
| | | and table_name in |
| | | <foreach collection="array" item="name" open="(" separator="," close=")"> |
| | | #{name} |
| | |
| | | where dt.table_name = dtc.table_name |
| | | and dt.table_name = uo.object_name |
| | | and uo.object_type = 'TABLE' |
| | | AND dt.table_name NOT LIKE 'XXL_JOB_%' AND dt.table_name NOT LIKE 'GEN_%' |
| | | AND dt.table_name NOT LIKE 'pj_%' AND dt.table_name NOT LIKE 'GEN_%' |
| | | and lower(dt.table_name) in |
| | | <foreach collection="array" item="name" open="(" separator="," close=")"> |
| | | #{name} |
| | |
| | | AND n.nspname = 'public'::name |
| | | AND n.nspname <![CDATA[ <> ]]> ''::name |
| | | ) list_table |
| | | where table_name NOT LIKE 'xxl_job_%' and table_name NOT LIKE 'gen_%' |
| | | where table_name NOT LIKE 'pj_%' and table_name NOT LIKE 'gen_%' |
| | | and table_name in |
| | | <foreach collection="array" item="name" open="(" separator="," close=")"> |
| | | #{name} |
| | |
| | | FROM SYSOBJECTS D |
| | | INNER JOIN SYS.EXTENDED_PROPERTIES F ON D.ID = F.MAJOR_ID |
| | | AND F.MINOR_ID = 0 AND D.XTYPE = 'U' AND D.NAME != 'DTPROPERTIES' |
| | | AND D.NAME NOT LIKE 'xxl_job_%' AND D.NAME NOT LIKE 'gen_%' |
| | | AND D.NAME NOT LIKE 'pj_%' AND D.NAME NOT LIKE 'gen_%' |
| | | AND D.NAME in |
| | | <foreach collection="array" item="name" open="(" separator="," close=")"> |
| | | #{name} |
| | |
| | | <select id="selectTableByName" parameterType="String" resultMap="GenTableResult"> |
| | | <if test="@org.dromara.common.mybatis.helper.DataBaseHelper@isMySql()"> |
| | | select table_name, table_comment, create_time, update_time from information_schema.tables |
| | | where table_name NOT LIKE 'xxl_job_%' and table_name NOT LIKE 'gen_%' and table_schema = (select database()) |
| | | where table_name NOT LIKE 'pj_%' and table_name NOT LIKE 'gen_%' and table_schema = (select database()) |
| | | and table_name = #{tableName} |
| | | </if> |
| | | <if test="@org.dromara.common.mybatis.helper.DataBaseHelper@isOracle()"> |
| | |
| | | where dt.table_name = dtc.table_name |
| | | and dt.table_name = uo.object_name |
| | | and uo.object_type = 'TABLE' |
| | | AND dt.table_name NOT LIKE 'XXL_JOB_%' AND dt.table_name NOT LIKE 'GEN_%' |
| | | AND dt.table_name NOT LIKE 'pj_%' AND dt.table_name NOT LIKE 'GEN_%' |
| | | AND dt.table_name NOT IN (select table_name from gen_table) |
| | | and lower(dt.table_name) = #{tableName} |
| | | </if> |
| | |
| | | AND n.nspname = 'public'::name |
| | | AND n.nspname <![CDATA[ <> ]]> ''::name |
| | | ) list_table |
| | | where table_name NOT LIKE 'xxl_job_%' and table_name NOT LIKE 'gen_%' |
| | | where table_name NOT LIKE 'pj_%' and table_name NOT LIKE 'gen_%' |
| | | and table_name = #{tableName} |
| | | </if> |
| | | <if test="@org.dromara.common.mybatis.helper.DataBaseHelper@isSqlServer()"> |
| | |
| | | FROM SYSOBJECTS D |
| | | INNER JOIN SYS.EXTENDED_PROPERTIES F ON D.ID = F.MAJOR_ID |
| | | AND F.MINOR_ID = 0 AND D.XTYPE = 'U' AND D.NAME != 'DTPROPERTIES' |
| | | AND D.NAME NOT LIKE 'xxl_job_%' AND D.NAME NOT LIKE 'gen_%' |
| | | AND D.NAME NOT LIKE 'pj_%' AND D.NAME NOT LIKE 'gen_%' |
| | | AND D.NAME = #{tableName} |
| | | </if> |
| | | </select> |
| | |
| | | <!-- éç¨å·¥å
·--> |
| | | <dependency> |
| | | <groupId>org.dromara</groupId> |
| | | <artifactId>ruoyi-common-core</artifactId> |
| | | <artifactId>ruoyi-common-json</artifactId> |
| | | </dependency> |
| | | |
| | | <!-- è°åº¦æ¨¡å --> |
| | | <dependency> |
| | | <groupId>org.dromara</groupId> |
| | | <artifactId>ruoyi-common-job</artifactId> |
| | | </dependency> |
| | | |
| | | |
| | | </dependencies> |
| | | |
| | | </project> |
¶Ô±ÈÐÂÎļþ |
| | |
| | | /** |
| | | * æ¼ç¤ºç¨ä¾ |
| | | * copy from https://github.com/PowerJob/PowerJob/tree/master/powerjob-worker-samples/src/main/java/tech/powerjob/samples |
| | | */ |
| | | |
| | | package org.dromara.job; |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package org.dromara.job.processors; |
| | | |
| | | import lombok.extern.slf4j.Slf4j; |
| | | import org.springframework.stereotype.Component; |
| | | import tech.powerjob.common.utils.NetUtils; |
| | | import tech.powerjob.worker.core.processor.ProcessResult; |
| | | import tech.powerjob.worker.core.processor.TaskContext; |
| | | import tech.powerjob.worker.core.processor.TaskResult; |
| | | import tech.powerjob.worker.core.processor.sdk.BroadcastProcessor; |
| | | import tech.powerjob.worker.log.OmsLogger; |
| | | |
| | | import java.util.List; |
| | | |
| | | /** |
| | | * 广æå¤çå¨ ç¤ºä¾ |
| | | * |
| | | * @author tjq |
| | | * @since 2020/4/17 |
| | | */ |
| | | @Slf4j |
| | | @Component |
| | | public class BroadcastProcessorDemo implements BroadcastProcessor { |
| | | |
| | | @Override |
| | | public ProcessResult preProcess(TaskContext context) { |
| | | System.out.println("===== BroadcastProcessorDemo#preProcess ======"); |
| | | context.getOmsLogger().info("BroadcastProcessorDemo#preProcess, current host: {}", NetUtils.getLocalHost()); |
| | | if ("rootFailed".equals(context.getJobParams())) { |
| | | return new ProcessResult(false, "console need failed"); |
| | | } else { |
| | | return new ProcessResult(true); |
| | | } |
| | | } |
| | | |
| | | @Override |
| | | public ProcessResult process(TaskContext taskContext) throws Exception { |
| | | OmsLogger logger = taskContext.getOmsLogger(); |
| | | System.out.println("===== BroadcastProcessorDemo#process ======"); |
| | | logger.info("BroadcastProcessorDemo#process, current host: {}", NetUtils.getLocalHost()); |
| | | long sleepTime = 1000; |
| | | try { |
| | | sleepTime = Long.parseLong(taskContext.getJobParams()); |
| | | } catch (Exception e) { |
| | | logger.warn("[BroadcastProcessor] parse sleep time failed!", e); |
| | | } |
| | | Thread.sleep(Math.max(sleepTime, 1000)); |
| | | return new ProcessResult(true); |
| | | } |
| | | |
| | | @Override |
| | | public ProcessResult postProcess(TaskContext context, List<TaskResult> taskResults) { |
| | | System.out.println("===== BroadcastProcessorDemo#postProcess ======"); |
| | | context.getOmsLogger().info("BroadcastProcessorDemo#postProcess, current host: {}, taskResult: {}", NetUtils.getLocalHost(), taskResults); |
| | | return new ProcessResult(true, "success"); |
| | | } |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package org.dromara.job.processors; |
| | | |
| | | import com.alibaba.fastjson.JSONObject; |
| | | import org.springframework.stereotype.Component; |
| | | import tech.powerjob.official.processors.util.CommonUtils; |
| | | import tech.powerjob.worker.core.processor.ProcessResult; |
| | | import tech.powerjob.worker.core.processor.TaskContext; |
| | | import tech.powerjob.worker.core.processor.sdk.BasicProcessor; |
| | | import tech.powerjob.worker.log.OmsLogger; |
| | | |
| | | import java.util.Date; |
| | | import java.util.Optional; |
| | | |
| | | /** |
| | | * LogTestProcessor |
| | | * |
| | | * @author tjq |
| | | * @since 2022/9/18 |
| | | */ |
| | | @Component |
| | | public class LogTestProcessor implements BasicProcessor { |
| | | |
| | | @Override |
| | | public ProcessResult process(TaskContext context) throws Exception { |
| | | |
| | | final OmsLogger omsLogger = context.getOmsLogger(); |
| | | final String parseParams = CommonUtils.parseParams(context); |
| | | final JSONObject config = Optional.ofNullable(JSONObject.parseObject(parseParams)).orElse(new JSONObject()); |
| | | |
| | | final long loopTimes = Optional.ofNullable(config.getLong("loopTimes")).orElse(1000L); |
| | | |
| | | for (int i = 0; i < loopTimes; i++) { |
| | | omsLogger.debug("[DEBUG] one DEBUG log in {}", new Date()); |
| | | omsLogger.info("[INFO] one INFO log in {}", new Date()); |
| | | omsLogger.warn("[WARN] one WARN log in {}", new Date()); |
| | | omsLogger.error("[ERROR] one ERROR log in {}", new Date()); |
| | | } |
| | | |
| | | return new ProcessResult(true); |
| | | } |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package org.dromara.job.processors; |
| | | |
| | | import com.google.common.collect.Lists; |
| | | import lombok.AllArgsConstructor; |
| | | import lombok.Getter; |
| | | import lombok.NoArgsConstructor; |
| | | import org.dromara.common.json.utils.JsonUtils; |
| | | import org.springframework.stereotype.Component; |
| | | import tech.powerjob.worker.core.processor.ProcessResult; |
| | | import tech.powerjob.worker.core.processor.TaskContext; |
| | | import tech.powerjob.worker.core.processor.sdk.MapProcessor; |
| | | |
| | | import java.util.List; |
| | | import java.util.concurrent.ThreadLocalRandom; |
| | | |
| | | /** |
| | | * Mapå¤çå¨ ç¤ºä¾ |
| | | * |
| | | * @author tjq |
| | | * @since 2020/4/18 |
| | | */ |
| | | @Component |
| | | public class MapProcessorDemo implements MapProcessor { |
| | | |
| | | |
| | | /** |
| | | * æ¯ä¸æ¹åéä»»å¡å¤§å° |
| | | */ |
| | | private static final int BATCH_SIZE = 100; |
| | | /** |
| | | * åéçæ¹æ¬¡ |
| | | */ |
| | | private static final int BATCH_NUM = 5; |
| | | |
| | | @Override |
| | | public ProcessResult process(TaskContext context) throws Exception { |
| | | |
| | | log.info("============== MapProcessorDemo#process =============="); |
| | | log.info("isRootTask:{}", isRootTask()); |
| | | log.info("taskContext:{}", JsonUtils.toJsonString(context)); |
| | | |
| | | if (isRootTask()) { |
| | | log.info("==== MAP ===="); |
| | | List<SubTask> subTasks = Lists.newLinkedList(); |
| | | for (int j = 0; j < BATCH_NUM; j++) { |
| | | SubTask subTask = new SubTask(); |
| | | subTask.siteId = j; |
| | | subTask.itemIds = Lists.newLinkedList(); |
| | | subTasks.add(subTask); |
| | | for (int i = 0; i < BATCH_SIZE; i++) { |
| | | subTask.itemIds.add(i + j * 100); |
| | | } |
| | | } |
| | | map(subTasks, "MAP_TEST_TASK"); |
| | | return new ProcessResult(true, "map successfully"); |
| | | } else { |
| | | |
| | | log.info("==== PROCESS ===="); |
| | | SubTask subTask = (SubTask) context.getSubTask(); |
| | | for (Integer itemId : subTask.getItemIds()) { |
| | | if (Thread.interrupted()) { |
| | | // ä»»å¡è¢«ä¸æ |
| | | log.info("job has been stop! so stop to process subTask: {} => {}", subTask.getSiteId(), itemId); |
| | | break; |
| | | } |
| | | log.info("processing subTask: {} => {}", subTask.getSiteId(), itemId); |
| | | int max = Integer.MAX_VALUE >> 7; |
| | | for (int i = 0; ; i++) { |
| | | // 模æèæ¶æä½ |
| | | if (i > max) { |
| | | break; |
| | | } |
| | | } |
| | | } |
| | | // æµè¯å¨ Map ä»»å¡ä¸è¿½å ä¸ä¸æ |
| | | context.getWorkflowContext().appendData2WfContext("Yasuo", "A sword's poor company for a long road."); |
| | | boolean b = ThreadLocalRandom.current().nextBoolean(); |
| | | if (context.getCurrentRetryTimes() >= 1) { |
| | | // éè¯çè¯ä¸å®ä¼æå |
| | | b = true; |
| | | } |
| | | return new ProcessResult(b, "RESULT:" + b); |
| | | } |
| | | } |
| | | |
| | | @Getter |
| | | @NoArgsConstructor |
| | | @AllArgsConstructor |
| | | public static class SubTask { |
| | | private Integer siteId; |
| | | private List<Integer> itemIds; |
| | | } |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package org.dromara.job.processors; |
| | | |
| | | import cn.hutool.core.lang.Dict; |
| | | import com.google.common.collect.Lists; |
| | | import lombok.AllArgsConstructor; |
| | | import lombok.Getter; |
| | | import lombok.NoArgsConstructor; |
| | | import lombok.ToString; |
| | | import lombok.extern.slf4j.Slf4j; |
| | | import org.dromara.common.json.utils.JsonUtils; |
| | | import org.springframework.stereotype.Component; |
| | | import tech.powerjob.worker.core.processor.ProcessResult; |
| | | import tech.powerjob.worker.core.processor.TaskContext; |
| | | import tech.powerjob.worker.core.processor.TaskResult; |
| | | import tech.powerjob.worker.core.processor.sdk.MapReduceProcessor; |
| | | import tech.powerjob.worker.log.OmsLogger; |
| | | |
| | | import java.util.List; |
| | | import java.util.concurrent.ThreadLocalRandom; |
| | | |
| | | /** |
| | | * MapReduce å¤çå¨ç¤ºä¾ |
| | | * æ§å¶å°åæ°ï¼{"batchSize": 100, "batchNum": 2} |
| | | * |
| | | * @author tjq |
| | | * @since 2020/4/17 |
| | | */ |
| | | @Slf4j |
| | | @Component |
| | | public class MapReduceProcessorDemo implements MapReduceProcessor { |
| | | |
| | | @Override |
| | | public ProcessResult process(TaskContext context) throws Exception { |
| | | |
| | | OmsLogger omsLogger = context.getOmsLogger(); |
| | | |
| | | log.info("============== TestMapReduceProcessor#process =============="); |
| | | log.info("isRootTask:{}", isRootTask()); |
| | | log.info("taskContext:{}", JsonUtils.toJsonString(context)); |
| | | |
| | | // æ ¹æ®æ§å¶å°åæ°è·åMRæ¹æ¬¡ååä»»å¡å¤§å° |
| | | final Dict jobParams = JsonUtils.parseMap(context.getJobParams()); |
| | | |
| | | Integer batchSize = (Integer) jobParams.getOrDefault("batchSize", 100); |
| | | Integer batchNum = (Integer) jobParams.getOrDefault("batchNum", 10); |
| | | |
| | | if (isRootTask()) { |
| | | log.info("==== MAP ===="); |
| | | omsLogger.info("[DemoMRProcessor] start root task~"); |
| | | List<TestSubTask> subTasks = Lists.newLinkedList(); |
| | | for (int j = 0; j < batchNum; j++) { |
| | | for (int i = 0; i < batchSize; i++) { |
| | | int x = j * batchSize + i; |
| | | subTasks.add(new TestSubTask("name" + x, x)); |
| | | } |
| | | map(subTasks, "MAP_TEST_TASK"); |
| | | subTasks.clear(); |
| | | } |
| | | omsLogger.info("[DemoMRProcessor] map success~"); |
| | | return new ProcessResult(true, "MAP_SUCCESS"); |
| | | } else { |
| | | log.info("==== NORMAL_PROCESS ===="); |
| | | omsLogger.info("[DemoMRProcessor] process subTask: {}.", JsonUtils.toJsonString(context.getSubTask())); |
| | | log.info("subTask: {}", JsonUtils.toJsonString(context.getSubTask())); |
| | | Thread.sleep(1000); |
| | | if (context.getCurrentRetryTimes() == 0) { |
| | | return new ProcessResult(false, "FIRST_FAILED"); |
| | | } else { |
| | | return new ProcessResult(true, "PROCESS_SUCCESS"); |
| | | } |
| | | } |
| | | } |
| | | |
| | | @Override |
| | | public ProcessResult reduce(TaskContext context, List<TaskResult> taskResults) { |
| | | log.info("================ MapReduceProcessorDemo#reduce ================"); |
| | | log.info("TaskContext: {}", JsonUtils.toJsonString(context)); |
| | | log.info("List<TaskResult>: {}", JsonUtils.toJsonString(taskResults)); |
| | | context.getOmsLogger().info("MapReduce job finished, result is {}.", taskResults); |
| | | |
| | | boolean success = ThreadLocalRandom.current().nextBoolean(); |
| | | return new ProcessResult(success, context + ": " + success); |
| | | } |
| | | |
| | | @Getter |
| | | @ToString |
| | | @NoArgsConstructor |
| | | @AllArgsConstructor |
| | | public static class TestSubTask { |
| | | private String name; |
| | | private int age; |
| | | } |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package org.dromara.job.processors; |
| | | |
| | | import org.springframework.stereotype.Component; |
| | | import tech.powerjob.worker.core.processor.ProcessResult; |
| | | import tech.powerjob.worker.core.processor.TaskContext; |
| | | import tech.powerjob.worker.core.processor.sdk.BasicProcessor; |
| | | import tech.powerjob.worker.log.OmsLogger; |
| | | |
| | | import java.util.Optional; |
| | | |
| | | /** |
| | | * @author Echo009 |
| | | * @since 2022/4/27 |
| | | */ |
| | | @Component |
| | | public class SimpleProcessor implements BasicProcessor { |
| | | |
| | | @Override |
| | | public ProcessResult process(TaskContext context) throws Exception { |
| | | |
| | | OmsLogger logger = context.getOmsLogger(); |
| | | |
| | | String jobParams = Optional.ofNullable(context.getJobParams()).orElse("S"); |
| | | logger.info("Current context:{}", context.getWorkflowContext()); |
| | | logger.info("Current job params:{}", jobParams); |
| | | |
| | | // æµè¯ä¸æé®é¢ #581 |
| | | if (jobParams.contains("CN")) { |
| | | return new ProcessResult(true, "任塿åå¦ï¼ï¼ï¼"); |
| | | } |
| | | |
| | | return jobParams.contains("F") ? new ProcessResult(false) : new ProcessResult(true, "yeah!"); |
| | | |
| | | } |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package org.dromara.job.processors; |
| | | |
| | | import lombok.extern.slf4j.Slf4j; |
| | | import org.apache.commons.lang3.StringUtils; |
| | | import org.springframework.stereotype.Component; |
| | | import tech.powerjob.worker.core.processor.ProcessResult; |
| | | import tech.powerjob.worker.core.processor.TaskContext; |
| | | import tech.powerjob.worker.core.processor.sdk.BasicProcessor; |
| | | import tech.powerjob.worker.log.OmsLogger; |
| | | |
| | | import java.util.Collections; |
| | | |
| | | /** |
| | | * åæºå¤çå¨ ç¤ºä¾ |
| | | * |
| | | * @author tjq |
| | | * @since 2020/4/17 |
| | | */ |
| | | @Slf4j |
| | | @Component |
| | | public class StandaloneProcessorDemo implements BasicProcessor { |
| | | |
| | | @Override |
| | | public ProcessResult process(TaskContext context) throws Exception { |
| | | OmsLogger omsLogger = context.getOmsLogger(); |
| | | omsLogger.info("StandaloneProcessorDemo start process,context is {}.", context); |
| | | omsLogger.info("Notice! If you want this job process failed, your jobParams need to be 'failed'"); |
| | | omsLogger.info("Let's test the exception~"); |
| | | // æµè¯å¼å¸¸æ¥å¿ |
| | | try { |
| | | Collections.emptyList().add("277"); |
| | | } catch (Exception e) { |
| | | omsLogger.error("oh~it seems that we have an exception~", e); |
| | | } |
| | | log.info("================ StandaloneProcessorDemo#process ================"); |
| | | log.info("jobParam:{}", context.getJobParams()); |
| | | log.info("instanceParams:{}", context.getInstanceParams()); |
| | | String param; |
| | | // è§£æåæ°ï¼éå¤äºå·¥ä½æµä¸æ¶ï¼ä¼å
åå®ä¾åæ°ï¼å
è®¸å¨æ[instanceParams]è¦çéæåæ°[jobParams]ï¼ |
| | | if (context.getWorkflowContext() == null) { |
| | | param = StringUtils.isBlank(context.getInstanceParams()) ? context.getJobParams() : context.getInstanceParams(); |
| | | } else { |
| | | param = context.getJobParams(); |
| | | } |
| | | // æ ¹æ®åæ°å¤ææ¯å¦æå |
| | | boolean success = !"failed".equals(param); |
| | | omsLogger.info("StandaloneProcessorDemo finished process,success: {}", success); |
| | | omsLogger.info("anyway, we finished the job successfully~Congratulations!"); |
| | | return new ProcessResult(success, context + ": " + success); |
| | | } |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package org.dromara.job.processors; |
| | | |
| | | import lombok.extern.slf4j.Slf4j; |
| | | import org.springframework.stereotype.Component; |
| | | import tech.powerjob.worker.core.processor.ProcessResult; |
| | | import tech.powerjob.worker.core.processor.TaskContext; |
| | | import tech.powerjob.worker.core.processor.sdk.BasicProcessor; |
| | | |
| | | /** |
| | | * æµè¯è¶
æ¶ä»»å¡ï¼å¯ä¸æï¼ |
| | | * |
| | | * @author tjq |
| | | * @since 2020/4/20 |
| | | */ |
| | | @Component |
| | | @Slf4j |
| | | public class TimeoutProcessor implements BasicProcessor { |
| | | @Override |
| | | public ProcessResult process(TaskContext context) throws Exception { |
| | | long sleepTime = Long.parseLong(context.getJobParams()); |
| | | log.info("TaskInstance({}) will sleep {} ms", context.getInstanceId(), sleepTime); |
| | | Thread.sleep(Long.parseLong(context.getJobParams())); |
| | | return new ProcessResult(true, "impossible~~~~QAQ~"); |
| | | } |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package org.dromara.job.workflow; |
| | | |
| | | import com.alibaba.fastjson.JSON; |
| | | import lombok.extern.slf4j.Slf4j; |
| | | import org.springframework.stereotype.Component; |
| | | import tech.powerjob.worker.core.processor.ProcessResult; |
| | | import tech.powerjob.worker.core.processor.TaskContext; |
| | | import tech.powerjob.worker.core.processor.sdk.BasicProcessor; |
| | | import tech.powerjob.worker.log.OmsLogger; |
| | | |
| | | import java.util.Map; |
| | | |
| | | /** |
| | | * 工使µæµè¯ |
| | | * |
| | | * @author tjq |
| | | * @since 2020/6/2 |
| | | */ |
| | | @Component |
| | | @Slf4j |
| | | public class WorkflowStandaloneProcessor implements BasicProcessor { |
| | | |
| | | @Override |
| | | public ProcessResult process(TaskContext context) throws Exception { |
| | | OmsLogger logger = context.getOmsLogger(); |
| | | logger.info("current jobParams: {}", context.getJobParams()); |
| | | logger.info("current context: {}", context.getWorkflowContext()); |
| | | log.info("jobParams:{}", context.getJobParams()); |
| | | log.info("currentContext:{}", JSON.toJSONString(context)); |
| | | |
| | | // å°è¯è·å䏿¸¸ä»»å¡ |
| | | Map<String, String> workflowContext = context.getWorkflowContext().fetchWorkflowContext(); |
| | | log.info("工使µä¸ä¸ææ°æ®:{}", workflowContext); |
| | | return new ProcessResult(true, context.getJobId() + " process successfully."); |
| | | } |
| | | } |
| | |
| | | package org.dromara.system.controller.system; |
| | | |
| | | import cn.dev33.satoken.annotation.SaCheckPermission; |
| | | import cn.dev33.satoken.exception.NotLoginException; |
| | | import cn.dev33.satoken.stp.StpUtil; |
| | | import cn.hutool.core.collection.CollUtil; |
| | | import org.dromara.common.core.constant.GlobalConstants; |
| | | import jakarta.servlet.http.HttpServletResponse; |
| | | import lombok.RequiredArgsConstructor; |
| | | import org.dromara.common.core.domain.R; |
| | | import org.dromara.common.core.domain.model.LoginUser; |
| | | import org.dromara.common.core.utils.StringUtils; |
| | | import org.dromara.common.excel.utils.ExcelUtil; |
| | | import org.dromara.common.log.annotation.Log; |
| | | import org.dromara.common.log.enums.BusinessType; |
| | | import org.dromara.common.mybatis.core.page.PageQuery; |
| | | import org.dromara.common.mybatis.core.page.TableDataInfo; |
| | | import org.dromara.common.satoken.utils.LoginHelper; |
| | | import org.dromara.common.web.core.BaseController; |
| | | import org.dromara.system.domain.SysUserRole; |
| | | import org.dromara.system.domain.bo.SysDeptBo; |
| | |
| | | import org.dromara.system.service.ISysDeptService; |
| | | import org.dromara.system.service.ISysRoleService; |
| | | import org.dromara.system.service.ISysUserService; |
| | | import jakarta.servlet.http.HttpServletResponse; |
| | | import lombok.RequiredArgsConstructor; |
| | | import org.springframework.validation.annotation.Validated; |
| | | import org.springframework.web.bind.annotation.*; |
| | | |
| | |
| | | @Log(title = "è§è²ç®¡ç", businessType = BusinessType.UPDATE) |
| | | @PutMapping |
| | | public R<Void> edit(@Validated @RequestBody SysRoleBo role) { |
| | | roleService.checkRoleAllowed(role.getRoleId()); |
| | | roleService.checkRoleAllowed(role); |
| | | roleService.checkRoleDataScope(role.getRoleId()); |
| | | if (!roleService.checkRoleNameUnique(role)) { |
| | | return R.fail("ä¿®æ¹è§è²'" + role.getRoleName() + "'失败ï¼è§è²åç§°å·²åå¨"); |
| | |
| | | @Log(title = "è§è²ç®¡ç", businessType = BusinessType.UPDATE) |
| | | @PutMapping("/dataScope") |
| | | public R<Void> dataScope(@RequestBody SysRoleBo role) { |
| | | roleService.checkRoleAllowed(role.getRoleId()); |
| | | roleService.checkRoleAllowed(role); |
| | | roleService.checkRoleDataScope(role.getRoleId()); |
| | | return toAjax(roleService.authDataScope(role)); |
| | | } |
| | |
| | | @Log(title = "è§è²ç®¡ç", businessType = BusinessType.UPDATE) |
| | | @PutMapping("/changeStatus") |
| | | public R<Void> changeStatus(@RequestBody SysRoleBo role) { |
| | | roleService.checkRoleAllowed(role.getRoleId()); |
| | | roleService.checkRoleAllowed(role); |
| | | roleService.checkRoleDataScope(role.getRoleId()); |
| | | return toAjax(roleService.updateRoleStatus(role.getRoleId(), role.getStatus())); |
| | | } |
| | |
| | | /** |
| | | * æ ¡éªè§è²æ¯å¦å
许æä½ |
| | | * |
| | | * @param roleId è§è²ID |
| | | * @param role è§è²ä¿¡æ¯ |
| | | */ |
| | | void checkRoleAllowed(Long roleId); |
| | | void checkRoleAllowed(SysRoleBo role); |
| | | |
| | | /** |
| | | * æ ¡éªè§è²æ¯å¦ææ°æ®æé |
| | |
| | | |
| | | import cn.dev33.satoken.exception.NotLoginException; |
| | | import cn.dev33.satoken.stp.StpUtil; |
| | | import cn.hutool.core.bean.BeanUtil; |
| | | import cn.hutool.core.collection.CollUtil; |
| | | import cn.hutool.core.util.ObjectUtil; |
| | | import com.baomidou.mybatisplus.core.conditions.Wrapper; |
| | |
| | | import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; |
| | | import com.baomidou.mybatisplus.core.toolkit.Wrappers; |
| | | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; |
| | | import lombok.RequiredArgsConstructor; |
| | | import org.dromara.common.core.constant.TenantConstants; |
| | | import org.dromara.common.core.constant.UserConstants; |
| | | import org.dromara.common.core.domain.model.LoginUser; |
| | | import org.dromara.common.core.exception.ServiceException; |
| | |
| | | import org.dromara.system.mapper.SysRoleMenuMapper; |
| | | import org.dromara.system.mapper.SysUserRoleMapper; |
| | | import org.dromara.system.service.ISysRoleService; |
| | | import lombok.RequiredArgsConstructor; |
| | | import org.springframework.stereotype.Service; |
| | | import org.springframework.transaction.annotation.Transactional; |
| | | |
| | |
| | | /** |
| | | * æ ¡éªè§è²æ¯å¦å
许æä½ |
| | | * |
| | | * @param roleId è§è²ID |
| | | * @param role è§è²ä¿¡æ¯ |
| | | */ |
| | | @Override |
| | | public void checkRoleAllowed(Long roleId) { |
| | | if (ObjectUtil.isNotNull(roleId) && LoginHelper.isSuperAdmin(roleId)) { |
| | | public void checkRoleAllowed(SysRoleBo role) { |
| | | if (ObjectUtil.isNotNull(role.getRoleId()) && LoginHelper.isSuperAdmin(role.getRoleId())) { |
| | | throw new ServiceException("ä¸å
许æä½è¶
级管çåè§è²"); |
| | | } |
| | | // æ°å¢ä¸å
è®¸ä½¿ç¨ ç®¡çåæ è¯ç¬¦ |
| | | if (ObjectUtil.isNull(role.getRoleId()) |
| | | && StringUtils.equalsAny(role.getRoleKey(), |
| | | TenantConstants.SUPER_ADMIN_ROLE_KEY, TenantConstants.TENANT_ADMIN_ROLE_KEY)) { |
| | | throw new ServiceException("ä¸å
许使ç¨ç³»ç»å
置管çåè§è²æ è¯ç¬¦!"); |
| | | } |
| | | // ä¿®æ¹ä¸å
è®¸ä¿®æ¹ ç®¡çåæ è¯ç¬¦ |
| | | if (ObjectUtil.isNotNull(role.getRoleId())) { |
| | | SysRole sysRole = baseMapper.selectById(role.getRoleId()); |
| | | // 妿æ è¯ç¬¦ä¸ç¸ç å¤æä¸ºä¿®æ¹äºç®¡çåæ è¯ç¬¦ |
| | | if (!StringUtils.equals(sysRole.getRoleKey(), role.getRoleKey()) |
| | | && StringUtils.equalsAny(sysRole.getRoleKey(), |
| | | TenantConstants.SUPER_ADMIN_ROLE_KEY, TenantConstants.TENANT_ADMIN_ROLE_KEY)) { |
| | | throw new ServiceException("ä¸å
许修æ¹ç³»ç»å
置管çåè§è²æ è¯ç¬¦!"); |
| | | } |
| | | } |
| | | } |
| | | |
| | |
| | | @Transactional(rollbackFor = Exception.class) |
| | | public int deleteRoleByIds(Long[] roleIds) { |
| | | for (Long roleId : roleIds) { |
| | | checkRoleAllowed(roleId); |
| | | checkRoleDataScope(roleId); |
| | | SysRole role = baseMapper.selectById(roleId); |
| | | checkRoleAllowed(BeanUtil.toBean(role, SysRoleBo.class)); |
| | | checkRoleDataScope(roleId); |
| | | if (countUserRoleByRoleId(roleId) > 0) { |
| | | throw new ServiceException(String.format("%1$så·²åé
,ä¸è½å é¤", role.getRoleName())); |
| | | } |
| | |
| | | privileged: true |
| | | network_mode: "host" |
| | | |
| | | ruoyi-xxl-job-admin: |
| | | image: ruoyi/ruoyi-xxl-job-admin:5.0.0 |
| | | container_name: ruoyi-xxl-job-admin |
| | | ruoyi-powerjob-server: |
| | | image: powerjob/powerjob-server:latest |
| | | restart: always |
| | | depends_on: |
| | | - mysql |
| | | environment: |
| | | # æ¶åºä¸æµ· |
| | | TZ: Asia/Shanghai |
| | | JVMOPTIONS: "-Xmx512m" |
| | | PARAMS: "--oms.mongodb.enable=false --spring.datasource.core.jdbc-url=jdbc:mysql://localhost:3306/ry-vue?useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai --spring.datasource.core.username=root --spring.datasource.core.password=root --oms.table-prefix=pj_" |
| | | ports: |
| | | - "7700:7700" |
| | | - "10086:10086" |
| | | - "10010:10010" |
| | | volumes: |
| | | # é
ç½®æä»¶ |
| | | - /docker/xxljob/logs/:/ruoyi/xxljob/logs |
| | | - /docker/powerjob-data/powerjob-server:/root/powerjob/server/ |
| | | privileged: true |
| | | network_mode: "host" |
| | | |
| | |
| | | server 127.0.0.1:9090; |
| | | } |
| | | |
| | | upstream xxljob-admin { |
| | | server 127.0.0.1:9100; |
| | | upstream powerjob { |
| | | server 127.0.0.1:7700; |
| | | } |
| | | |
| | | server { |
| | |
| | | } |
| | | |
| | | # https 伿¦æªå
龿æç http è¯·æ± é æåè½æ æ³ä½¿ç¨ |
| | | # è§£å³æ¹æ¡1 å° xxljob æå¡ ä¹é
ç½®æ https |
| | | # è§£å³æ¹æ¡1 å° powerjob æå¡ ä¹é
ç½®æ https |
| | | # è§£å³æ¹æ¡2 å°èåé
置为å¤é¾è®¿é® èµ°ç¬ç«é¡µé¢ http è®¿é® |
| | | location /xxl-job-admin/ { |
| | | location /powerjob/ { |
| | | proxy_set_header Host $http_host; |
| | | proxy_set_header X-Real-IP $remote_addr; |
| | | proxy_set_header REMOTE-HOST $remote_addr; |
| | | proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; |
| | | proxy_pass http://xxljob-admin/xxl-job-admin/; |
| | | proxy_pass http://powerjob/; |
| | | } |
| | | |
| | | error_page 500 502 503 504 /50x.html; |
| | |
| | | insert into sys_menu values('117', 'Adminçæ§', '2', '5', 'Admin', 'monitor/admin/index', '', 1, 0, 'C', '0', '0', 'monitor:admin:list', 'dashboard', 103, 1, sysdate, null, null, 'Adminçæ§èå'); |
| | | -- ossèå |
| | | insert into sys_menu values('118', 'æä»¶ç®¡ç', '1', '10', 'oss', 'system/oss/index', '', 1, 0, 'C', '0', '0', 'system:oss:list', 'upload', 103, 1, sysdate, null, null, 'æä»¶ç®¡çèå'); |
| | | -- xxl-job-adminæ§å¶å° |
| | | insert into sys_menu values('120', 'ä»»å¡è°åº¦ä¸å¿', '2', '5', 'XxlJob', 'monitor/xxljob/index', '', 1, 0, 'C', '0', '0', 'monitor:xxljob:list', 'job', 103, 1, sysdate, null, null, 'Xxl-Jobæ§å¶å°èå'); |
| | | -- powerjob serveræ§å¶å° |
| | | insert into sys_menu values('120', 'ä»»å¡è°åº¦ä¸å¿', '2', '5', 'powerjob', 'monitor/powerjob/index', '', 1, 0, 'C', '0', '0', 'monitor:powerjob:list', 'job', 103, 1, sysdate, null, null, 'PowerJobæ§å¶å°èå'); |
| | | |
| | | -- ä¸çº§èå |
| | | insert into sys_menu values('500', 'æä½æ¥å¿', '108', '1', 'operlog', 'monitor/operlog/index', '', 1, 0, 'C', '0', '0', 'monitor:operlog:list', 'form', 103, 1, sysdate, null, null, 'æä½æ¥å¿èå'); |
| | |
| | | insert into sys_menu values('117', 'Adminçæ§', '2', '5', 'Admin', 'monitor/admin/index', '', '1', '0', 'C', '0', '0', 'monitor:admin:list', 'dashboard', 103, 1, now(), null, null, 'Adminçæ§èå'); |
| | | -- ossèå |
| | | insert into sys_menu values('118', 'æä»¶ç®¡ç', '1', '10', 'oss', 'system/oss/index', '', '1', '0', 'C', '0', '0', 'system:oss:list', 'upload', 103, 1, now(), null, null, 'æä»¶ç®¡çèå'); |
| | | -- xxl-job-adminæ§å¶å° |
| | | insert into sys_menu values('120', 'ä»»å¡è°åº¦ä¸å¿', '2', '5', 'XxlJob', 'monitor/xxljob/index', '', '1', '0', 'C', '0', '0', 'monitor:xxljob:list', 'job', 103, 1, now(), null, null, 'Xxl-Jobæ§å¶å°èå'); |
| | | -- powerjob serveræ§å¶å° |
| | | insert into sys_menu values('120', 'ä»»å¡è°åº¦ä¸å¿', '2', '5', 'powerjob', 'monitor/powerjob/index', '', '1', '0', 'C', '0', '0', 'monitor:powerjob:list', 'job', 103, 1, now(), null, null, 'PowerJobæ§å¶å°èå'); |
| | | |
| | | -- ä¸çº§èå |
| | | insert into sys_menu values('500', 'æä½æ¥å¿', '108', '1', 'operlog', 'monitor/operlog/index', '', '1', '0', 'C', '0', '0', 'monitor:operlog:list', 'form', 103, 1, now(), null, null, 'æä½æ¥å¿èå'); |
¶Ô±ÈÐÂÎļþ |
| | |
| | | INSERT INTO `pj_app_info` (`id`, `app_name`, `current_server`, `gmt_create`, `gmt_modified`, `password`) VALUES (1, 'ruoyi-worker', '192.168.31.80:10010', '2023-06-13 16:32:59.263000', '2023-06-13 16:33:29.898000', '123456'); |
| | | INSERT INTO `pj_job_info` (`id`, `alarm_config`, `app_id`, `concurrency`, `designated_workers`, `dispatch_strategy`, `execute_type`, `extra`, `gmt_create`, `gmt_modified`, `instance_retry_num`, `instance_time_limit`, `job_description`, `job_name`, `job_params`, `lifecycle`, `log_config`, `max_instance_num`, `max_worker_count`, `min_cpu_cores`, `min_disk_space`, `min_memory_space`, `next_trigger_time`, `notify_user_ids`, `processor_info`, `processor_type`, `status`, `tag`, `task_retry_num`, `time_expression`, `time_expression_type`) VALUES (1, '{\"alertThreshold\":0,\"silenceWindowLen\":0,\"statisticWindowLen\":0}', 1, 5, '', 2, 1, NULL, '2023-06-02 15:01:27.717000', '2023-06-02 16:03:19.462000', 1, 0, '', 'åæºå¤ç卿§è¡æµè¯', NULL, '{}', '{\"type\":1}', 0, 0, 0, 0, 0, NULL, NULL, 'org.dromara.job.processors.StandaloneProcessorDemo', 1, 1, NULL, 1, '30000', 3); |
| | | INSERT INTO `pj_job_info` (`id`, `alarm_config`, `app_id`, `concurrency`, `designated_workers`, `dispatch_strategy`, `execute_type`, `extra`, `gmt_create`, `gmt_modified`, `instance_retry_num`, `instance_time_limit`, `job_description`, `job_name`, `job_params`, `lifecycle`, `log_config`, `max_instance_num`, `max_worker_count`, `min_cpu_cores`, `min_disk_space`, `min_memory_space`, `next_trigger_time`, `notify_user_ids`, `processor_info`, `processor_type`, `status`, `tag`, `task_retry_num`, `time_expression`, `time_expression_type`) VALUES (2, '{\"alertThreshold\":0,\"silenceWindowLen\":0,\"statisticWindowLen\":0}', 1, 5, '', 1, 2, NULL, '2023-06-02 15:04:45.342000', '2023-06-02 16:04:09.736000', 0, 0, NULL, '广æå¤ç卿µè¯', NULL, '{}', '{\"type\":1}', 0, 0, 0, 0, 0, NULL, NULL, 'org.dromara.job.processors.BroadcastProcessorDemo', 1, 1, NULL, 1, '30000', 3); |
| | | INSERT INTO `pj_job_info` (`id`, `alarm_config`, `app_id`, `concurrency`, `designated_workers`, `dispatch_strategy`, `execute_type`, `extra`, `gmt_create`, `gmt_modified`, `instance_retry_num`, `instance_time_limit`, `job_description`, `job_name`, `job_params`, `lifecycle`, `log_config`, `max_instance_num`, `max_worker_count`, `min_cpu_cores`, `min_disk_space`, `min_memory_space`, `next_trigger_time`, `notify_user_ids`, `processor_info`, `processor_type`, `status`, `tag`, `task_retry_num`, `time_expression`, `time_expression_type`) VALUES (3, '{\"alertThreshold\":0,\"silenceWindowLen\":0,\"statisticWindowLen\":0}', 1, 5, '', 1, 4, NULL, '2023-06-02 15:13:23.519000', '2023-06-02 16:03:22.421000', 0, 0, NULL, 'Mapå¤ç卿µè¯', NULL, '{}', '{\"type\":1}', 0, 0, 0, 0, 0, NULL, NULL, 'org.dromara.job.processors.MapProcessorDemo', 1, 2, NULL, 1, '1000', 3); |
| | | INSERT INTO `pj_job_info` (`id`, `alarm_config`, `app_id`, `concurrency`, `designated_workers`, `dispatch_strategy`, `execute_type`, `extra`, `gmt_create`, `gmt_modified`, `instance_retry_num`, `instance_time_limit`, `job_description`, `job_name`, `job_params`, `lifecycle`, `log_config`, `max_instance_num`, `max_worker_count`, `min_cpu_cores`, `min_disk_space`, `min_memory_space`, `next_trigger_time`, `notify_user_ids`, `processor_info`, `processor_type`, `status`, `tag`, `task_retry_num`, `time_expression`, `time_expression_type`) VALUES (4, '{\"alertThreshold\":0,\"silenceWindowLen\":0,\"statisticWindowLen\":0}', 1, 5, '', 1, 3, NULL, '2023-06-02 15:45:25.896000', '2023-06-02 16:03:23.125000', 0, 0, NULL, 'MapReduceå¤ç卿µè¯', NULL, '{}', '{\"type\":1}', 0, 0, 0, 0, 0, NULL, NULL, 'org.dromara.job.processors.MapReduceProcessorDemo', 1, 2, NULL, 1, '1000', 3); |
| | |
| | | values ('117', 'Adminçæ§', '2', '5', 'Admin', 'monitor/admin/index', '', 1, 0, 'C', '0', '0', 'monitor:admin:list', |
| | | 'dashboard', 103, 1, sysdate(), null, null, 'Adminçæ§èå'); |
| | | -- ossèå |
| | | insert into sys_menu |
| | | values ('118', 'æä»¶ç®¡ç', '1', '10', 'oss', 'system/oss/index', '', 1, 0, 'C', '0', '0', 'system:oss:list', 'upload', |
| | | 103, 1, sysdate(), null, null, 'æä»¶ç®¡çèå'); |
| | | -- xxl-job-adminæ§å¶å° |
| | | insert into sys_menu |
| | | values ('120', 'ä»»å¡è°åº¦ä¸å¿', '2', '5', 'XxlJob', 'monitor/xxljob/index', '', 1, 0, 'C', '0', '0', |
| | | 'monitor:xxljob:list', 'job', 103, 1, sysdate(), null, null, 'Xxl-Jobæ§å¶å°èå'); |
| | | insert into sys_menu values('118', 'æä»¶ç®¡ç', '1', '10', 'oss', 'system/oss/index', '', 1, 0, 'C', '0', '0', 'system:oss:list', 'upload', 103, 1, sysdate(), null, null, 'æä»¶ç®¡çèå'); |
| | | -- powerjob serveræ§å¶å° |
| | | insert into sys_menu values('120', 'ä»»å¡è°åº¦ä¸å¿', '2', '5', 'powerjob', 'monitor/powerjob/index', '', 1, 0, 'C', '0', '0', 'monitor:powerjob:list', 'job', 103, 1, sysdate(), null, null, 'PowerJobæ§å¶å°èå'); |
| | | |
| | | -- ä¸çº§èå |
| | | insert into sys_menu |
| | |
| | | GO |
| | | INSERT sys_menu VALUES (118, N'æä»¶ç®¡ç', 1, 10, N'oss', N'system/oss/index', N'', 1, 0, N'C', '0', N'0', N'system:oss:list', N'upload', 103, 1, getdate(), NULL, NULL, N'æä»¶ç®¡çèå'); |
| | | GO |
| | | INSERT sys_menu VALUES (120, N'ä»»å¡è°åº¦ä¸å¿', 2, 5, N'XxlJob', N'monitor/xxljob/index', N'', 1, 0, N'C', N'0', N'0', N'monitor:xxljob:list', N'job', 103, 1, getdate(), NULL, NULL, N'Xxl-Jobæ§å¶å°èå'); |
| | | INSERT sys_menu VALUES (120, N'ä»»å¡è°åº¦ä¸å¿', 2, 5, N'powerjob', N'monitor/powerjob/index', N'', 1, 0, N'C', N'0', N'0', N'monitor:powerjob:list', N'job', 103, 1, getdate(), NULL, NULL, N'PowerJobæ§å¶å°èå'); |
| | | GO |
| | | INSERT sys_menu VALUES (500, N'æä½æ¥å¿', 108, 1, N'operlog', N'monitor/operlog/index', N'', 1, 0, N'C', N'0', N'0', N'monitor:operlog:list', N'form', 103, 1, getdate(), NULL, NULL, N'æä½æ¥å¿èå') |
| | | GO |
| | |
| | | ALTER TABLE gen_table ADD (data_name VARCHAR2(200) DEFAULT ''); |
| | | |
| | | COMMENT ON COLUMN gen_table.data_name IS 'æ°æ®æºåç§°'; |
| | | |
| | | UPDATE sys_menu SET path = 'powerjob', component = 'monitor/powerjob/index', perms = 'monitor:powerjob:list', remark = 'powerjobæ§å¶å°èå' WHERE menu_id = 120; |
| | |
| | | ALTER TABLE gen_table ADD data_name varchar(200) default ''::varchar; |
| | | |
| | | COMMENT ON COLUMN gen_table.data_name IS 'æ°æ®æºåç§°'; |
| | | |
| | | UPDATE sys_menu SET path = 'powerjob', component = 'monitor/powerjob/index', perms = 'monitor:powerjob:list', remark = 'powerjobæ§å¶å°èå' WHERE menu_id = 120; |
| | |
| | | 'TABLE', N'gen_table', |
| | | 'COLUMN', N'data_name' |
| | | GO |
| | | |
| | | UPDATE sys_menu SET path = 'powerjob', component = 'monitor/powerjob/index', perms = 'monitor:powerjob:list', remark = 'powerjobæ§å¶å°èå' WHERE menu_id = 120 |
| | | GO |
| | |
| | | ALTER TABLE gen_table ADD COLUMN data_name varchar(200) NULL DEFAULT '' COMMENT 'æ°æ®æºåç§°' AFTER table_id; |
| | | |
| | | UPDATE sys_menu SET path = 'powerjob', component = 'monitor/powerjob/index', perms = 'monitor:powerjob:list', remark = 'powerjobæ§å¶å°èå' WHERE menu_id = 120 |