Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
KnowledgePlanet
road-map
xfg-frame-archetype-std
提交
41ae576f
xfg-frame-archetype-std
项目概览
KnowledgePlanet
/
road-map
/
xfg-frame-archetype-std
通知
1426
Star
117
Fork
125
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
2
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
xfg-frame-archetype-std
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
2
Issue
2
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
提交
41ae576f
编写于
11月 04, 2023
作者:
小傅哥
⛹
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
小傅哥,feat:脚手架提交
上级
983a8e1e
变更
92
展开全部
隐藏空白更改
内联
并排
Showing
92 changed file
with
4012 addition
and
11 deletion
+4012
-11
docs/dev-ops/environment/docker-compose.yml
docs/dev-ops/environment/docker-compose.yml
+3
-7
docs/dev-ops/environment/redis/redis.conf
docs/dev-ops/environment/redis/redis.conf
+1
-2
scaffold/README.md
scaffold/README.md
+19
-0
scaffold/pom.xml
scaffold/pom.xml
+54
-0
scaffold/src/main/resources/META-INF/maven/archetype-metadata.xml
.../src/main/resources/META-INF/maven/archetype-metadata.xml
+131
-0
scaffold/src/main/resources/archetype-resources/README.md
scaffold/src/main/resources/archetype-resources/README.md
+2
-0
scaffold/src/main/resources/archetype-resources/__rootArtifactId__-api/pom.xml
...ources/archetype-resources/__rootArtifactId__-api/pom.xml
+44
-0
scaffold/src/main/resources/archetype-resources/__rootArtifactId__-api/src/main/java/api/IUserService.java
..._rootArtifactId__-api/src/main/java/api/IUserService.java
+10
-0
scaffold/src/main/resources/archetype-resources/__rootArtifactId__-api/src/main/java/api/model/package-info.java
...rtifactId__-api/src/main/java/api/model/package-info.java
+7
-0
scaffold/src/main/resources/archetype-resources/__rootArtifactId__-app/Dockerfile
...ces/archetype-resources/__rootArtifactId__-app/Dockerfile
+17
-0
scaffold/src/main/resources/archetype-resources/__rootArtifactId__-app/build.sh
...urces/archetype-resources/__rootArtifactId__-app/build.sh
+6
-0
scaffold/src/main/resources/archetype-resources/__rootArtifactId__-app/pom.xml
...ources/archetype-resources/__rootArtifactId__-app/pom.xml
+173
-0
scaffold/src/main/resources/archetype-resources/__rootArtifactId__-app/src/main/java/Application.java
...ces/__rootArtifactId__-app/src/main/java/Application.java
+20
-0
scaffold/src/main/resources/archetype-resources/__rootArtifactId__-app/src/main/java/config/GuavaConfig.java
...ootArtifactId__-app/src/main/java/config/GuavaConfig.java
+23
-0
scaffold/src/main/resources/archetype-resources/__rootArtifactId__-app/src/main/java/config/RedisClientConfig.java
...ifactId__-app/src/main/java/config/RedisClientConfig.java
+87
-0
scaffold/src/main/resources/archetype-resources/__rootArtifactId__-app/src/main/java/config/RedisClientConfigProperties.java
...app/src/main/java/config/RedisClientConfigProperties.java
+41
-0
scaffold/src/main/resources/archetype-resources/__rootArtifactId__-app/src/main/java/config/ThreadPoolConfig.java
...tifactId__-app/src/main/java/config/ThreadPoolConfig.java
+53
-0
scaffold/src/main/resources/archetype-resources/__rootArtifactId__-app/src/main/java/config/ThreadPoolConfigProperties.java
...-app/src/main/java/config/ThreadPoolConfigProperties.java
+29
-0
scaffold/src/main/resources/archetype-resources/__rootArtifactId__-app/src/main/java/config/XxlJobAutoConfig.java
...tifactId__-app/src/main/java/config/XxlJobAutoConfig.java
+74
-0
scaffold/src/main/resources/archetype-resources/__rootArtifactId__-app/src/main/java/config/package-info.java
...otArtifactId__-app/src/main/java/config/package-info.java
+9
-0
scaffold/src/main/resources/archetype-resources/__rootArtifactId__-app/src/main/java/package-info.java
...es/__rootArtifactId__-app/src/main/java/package-info.java
+7
-0
scaffold/src/main/resources/archetype-resources/__rootArtifactId__-app/src/main/resources/application-dev.yml
...otArtifactId__-app/src/main/resources/application-dev.yml
+104
-0
scaffold/src/main/resources/archetype-resources/__rootArtifactId__-app/src/main/resources/application-prod.yml
...tArtifactId__-app/src/main/resources/application-prod.yml
+41
-0
scaffold/src/main/resources/archetype-resources/__rootArtifactId__-app/src/main/resources/application-test.yml
...tArtifactId__-app/src/main/resources/application-test.yml
+41
-0
scaffold/src/main/resources/archetype-resources/__rootArtifactId__-app/src/main/resources/application.yml
...__rootArtifactId__-app/src/main/resources/application.yml
+5
-0
scaffold/src/main/resources/archetype-resources/__rootArtifactId__-app/src/main/resources/logback-spring.xml
...ootArtifactId__-app/src/main/resources/logback-spring.xml
+116
-0
scaffold/src/main/resources/archetype-resources/__rootArtifactId__-app/src/main/resources/mybatis/config/mybatis-config.xml
...-app/src/main/resources/mybatis/config/mybatis-config.xml
+12
-0
scaffold/src/main/resources/archetype-resources/__rootArtifactId__-app/src/main/resources/mybatis/mapper/user_order_mapper.xml
...p/src/main/resources/mybatis/mapper/user_order_mapper.xml
+55
-0
scaffold/src/main/resources/archetype-resources/__rootArtifactId__-app/src/main/resources/sharding/sharding-jdbc-dev.yaml
...__-app/src/main/resources/sharding/sharding-jdbc-dev.yaml
+74
-0
scaffold/src/main/resources/archetype-resources/__rootArtifactId__-app/src/test/java/test/ApiTest.java
...es/__rootArtifactId__-app/src/test/java/test/ApiTest.java
+22
-0
scaffold/src/main/resources/archetype-resources/__rootArtifactId__-app/src/test/java/test/infrastructure/persistent/UserOrderTest.java
...st/java/test/infrastructure/persistent/UserOrderTest.java
+79
-0
scaffold/src/main/resources/archetype-resources/__rootArtifactId__-app/src/test/java/test/infrastructure/redis/RedisTest.java
...pp/src/test/java/test/infrastructure/redis/RedisTest.java
+66
-0
scaffold/src/main/resources/archetype-resources/__rootArtifactId__-domain/pom.xml
...ces/archetype-resources/__rootArtifactId__-domain/pom.xml
+75
-0
scaffold/src/main/resources/archetype-resources/__rootArtifactId__-domain/src/main/java/domain/xxx/adapter/package-info.java
...domain/src/main/java/domain/xxx/adapter/package-info.java
+7
-0
scaffold/src/main/resources/archetype-resources/__rootArtifactId__-domain/src/main/java/domain/xxx/model/aggregate/package-info.java
...rc/main/java/domain/xxx/model/aggregate/package-info.java
+10
-0
scaffold/src/main/resources/archetype-resources/__rootArtifactId__-domain/src/main/java/domain/xxx/model/entity/package-info.java
...n/src/main/java/domain/xxx/model/entity/package-info.java
+10
-0
scaffold/src/main/resources/archetype-resources/__rootArtifactId__-domain/src/main/java/domain/xxx/model/valobj/package-info.java
...n/src/main/java/domain/xxx/model/valobj/package-info.java
+9
-0
scaffold/src/main/resources/archetype-resources/__rootArtifactId__-domain/src/main/java/domain/xxx/repository/package-info.java
...ain/src/main/java/domain/xxx/repository/package-info.java
+8
-0
scaffold/src/main/resources/archetype-resources/__rootArtifactId__-domain/src/main/java/domain/xxx/service/package-info.java
...domain/src/main/java/domain/xxx/service/package-info.java
+4
-0
scaffold/src/main/resources/archetype-resources/__rootArtifactId__-domain/src/main/java/domain/yyy/model/aggregate/package-info.java
...rc/main/java/domain/yyy/model/aggregate/package-info.java
+10
-0
scaffold/src/main/resources/archetype-resources/__rootArtifactId__-domain/src/main/java/domain/yyy/model/entity/package-info.java
...n/src/main/java/domain/yyy/model/entity/package-info.java
+10
-0
scaffold/src/main/resources/archetype-resources/__rootArtifactId__-domain/src/main/java/domain/yyy/model/valobj/package-info.java
...n/src/main/java/domain/yyy/model/valobj/package-info.java
+9
-0
scaffold/src/main/resources/archetype-resources/__rootArtifactId__-domain/src/main/java/domain/yyy/repository/package-info.java
...ain/src/main/java/domain/yyy/repository/package-info.java
+8
-0
scaffold/src/main/resources/archetype-resources/__rootArtifactId__-domain/src/main/java/domain/yyy/service/package-info.java
...domain/src/main/java/domain/yyy/service/package-info.java
+4
-0
scaffold/src/main/resources/archetype-resources/__rootArtifactId__-infrastructure/pom.xml
...etype-resources/__rootArtifactId__-infrastructure/pom.xml
+51
-0
scaffold/src/main/resources/archetype-resources/__rootArtifactId__-infrastructure/src/main/java/infrastructure/gateway/adapter/package-info.java
...ain/java/infrastructure/gateway/adapter/package-info.java
+4
-0
scaffold/src/main/resources/archetype-resources/__rootArtifactId__-infrastructure/src/main/java/infrastructure/gateway/api/package-info.java
...rc/main/java/infrastructure/gateway/api/package-info.java
+4
-0
scaffold/src/main/resources/archetype-resources/__rootArtifactId__-infrastructure/src/main/java/infrastructure/gateway/dto/package-info.java
...rc/main/java/infrastructure/gateway/dto/package-info.java
+4
-0
scaffold/src/main/resources/archetype-resources/__rootArtifactId__-infrastructure/src/main/java/infrastructure/persistent/dao/IUserOrderDao.java
...ain/java/infrastructure/persistent/dao/IUserOrderDao.java
+20
-0
scaffold/src/main/resources/archetype-resources/__rootArtifactId__-infrastructure/src/main/java/infrastructure/persistent/dao/package-info.java
...main/java/infrastructure/persistent/dao/package-info.java
+7
-0
scaffold/src/main/resources/archetype-resources/__rootArtifactId__-infrastructure/src/main/java/infrastructure/persistent/po/UserOrderPO.java
...c/main/java/infrastructure/persistent/po/UserOrderPO.java
+63
-0
scaffold/src/main/resources/archetype-resources/__rootArtifactId__-infrastructure/src/main/java/infrastructure/persistent/po/package-info.java
.../main/java/infrastructure/persistent/po/package-info.java
+7
-0
scaffold/src/main/resources/archetype-resources/__rootArtifactId__-infrastructure/src/main/java/infrastructure/persistent/repository/package-info.java
...va/infrastructure/persistent/repository/package-info.java
+7
-0
scaffold/src/main/resources/archetype-resources/__rootArtifactId__-infrastructure/src/main/java/infrastructure/redis/IRedisService.java
...ure/src/main/java/infrastructure/redis/IRedisService.java
+234
-0
scaffold/src/main/resources/archetype-resources/__rootArtifactId__-infrastructure/src/main/java/infrastructure/redis/RedissonService.java
...e/src/main/java/infrastructure/redis/RedissonService.java
+152
-0
scaffold/src/main/resources/archetype-resources/__rootArtifactId__-trigger/pom.xml
...es/archetype-resources/__rootArtifactId__-trigger/pom.xml
+83
-0
scaffold/src/main/resources/archetype-resources/__rootArtifactId__-trigger/src/main/java/trigger/http/Controller.java
...ctId__-trigger/src/main/java/trigger/http/Controller.java
+47
-0
scaffold/src/main/resources/archetype-resources/__rootArtifactId__-trigger/src/main/java/trigger/job/XXLJob.java
...rtifactId__-trigger/src/main/java/trigger/job/XXLJob.java
+31
-0
scaffold/src/main/resources/archetype-resources/__rootArtifactId__-trigger/src/main/java/trigger/listener/MQListener.java
...__-trigger/src/main/java/trigger/listener/MQListener.java
+25
-0
scaffold/src/main/resources/archetype-resources/__rootArtifactId__-trigger/src/main/java/trigger/package-info.java
...ifactId__-trigger/src/main/java/trigger/package-info.java
+10
-0
scaffold/src/main/resources/archetype-resources/__rootArtifactId__-trigger/src/main/java/trigger/rpc/UserService.java
...ctId__-trigger/src/main/java/trigger/rpc/UserService.java
+19
-0
scaffold/src/main/resources/archetype-resources/__rootArtifactId__-types/pom.xml
...rces/archetype-resources/__rootArtifactId__-types/pom.xml
+53
-0
scaffold/src/main/resources/archetype-resources/__rootArtifactId__-types/src/main/java/types/common/Constants.java
...ifactId__-types/src/main/java/types/common/Constants.java
+29
-0
scaffold/src/main/resources/archetype-resources/__rootArtifactId__-types/src/main/java/types/exception/AppException.java
...d__-types/src/main/java/types/exception/AppException.java
+49
-0
scaffold/src/main/resources/archetype-resources/__rootArtifactId__-types/src/main/java/types/model/Response.java
...rtifactId__-types/src/main/java/types/model/Response.java
+25
-0
scaffold/src/main/resources/archetype-resources/docs/dev-ops/app/docker-compose-1.0.yml
...chetype-resources/docs/dev-ops/app/docker-compose-1.0.yml
+21
-0
scaffold/src/main/resources/archetype-resources/docs/dev-ops/app/start.sh
...n/resources/archetype-resources/docs/dev-ops/app/start.sh
+20
-0
scaffold/src/main/resources/archetype-resources/docs/dev-ops/app/stop.sh
...in/resources/archetype-resources/docs/dev-ops/app/stop.sh
+1
-0
scaffold/src/main/resources/archetype-resources/docs/dev-ops/environment/docker-compose.yml
...ype-resources/docs/dev-ops/environment/docker-compose.yml
+174
-0
scaffold/src/main/resources/archetype-resources/docs/dev-ops/environment/redis/redis.conf
...etype-resources/docs/dev-ops/environment/redis/redis.conf
+3
-0
scaffold/src/main/resources/archetype-resources/docs/dev-ops/environment/rocketmq/create-group.sh
...sources/docs/dev-ops/environment/rocketmq/create-group.sh
+2
-0
scaffold/src/main/resources/archetype-resources/docs/dev-ops/environment/rocketmq/create-topic.sh
...sources/docs/dev-ops/environment/rocketmq/create-topic.sh
+2
-0
scaffold/src/main/resources/archetype-resources/docs/dev-ops/environment/rocketmq/data/console/config/application.properties
...nment/rocketmq/data/console/config/application.properties
+57
-0
scaffold/src/main/resources/archetype-resources/docs/dev-ops/environment/rocketmq/data/console/config/logback.xml
...-ops/environment/rocketmq/data/console/config/logback.xml
+52
-0
scaffold/src/main/resources/archetype-resources/docs/dev-ops/environment/rocketmq/data/console/store/dashboard2023-11-04.json
...ment/rocketmq/data/console/store/dashboard2023-11-04.json
+1
-0
scaffold/src/main/resources/archetype-resources/docs/dev-ops/environment/rocketmq/data/console/store/dashboard2023-11-04_topic.json
...ocketmq/data/console/store/dashboard2023-11-04_topic.json
+1
-0
scaffold/src/main/resources/archetype-resources/docs/dev-ops/environment/rocketmq/data/console/store/users.properties
.../environment/rocketmq/data/console/store/users.properties
+28
-0
scaffold/src/main/resources/archetype-resources/docs/dev-ops/environment/rocketmq/data/logs/consolelogs/rocketmq-console.log
...nment/rocketmq/data/logs/consolelogs/rocketmq-console.log
+0
-0
scaffold/src/main/resources/archetype-resources/docs/dev-ops/environment/rocketmq/data/logs/logs.txt
...rces/docs/dev-ops/environment/rocketmq/data/logs/logs.txt
+3
-0
scaffold/src/main/resources/archetype-resources/docs/dev-ops/environment/rocketmq/data/logs/rocketmqlogs/brokerLogDir_IS_UNDEFINED/broker.log
...ta/logs/rocketmqlogs/brokerLogDir_IS_UNDEFINED/broker.log
+0
-0
scaffold/src/main/resources/archetype-resources/docs/dev-ops/environment/rocketmq/data/logs/rocketmqlogs/rocketmq_client.log
...nment/rocketmq/data/logs/rocketmqlogs/rocketmq_client.log
+0
-0
scaffold/src/main/resources/archetype-resources/docs/dev-ops/environment/rocketmq/data/rocketmq/conf/broker.conf
...v-ops/environment/rocketmq/data/rocketmq/conf/broker.conf
+33
-0
scaffold/src/main/resources/archetype-resources/docs/dev-ops/environment/rocketmq/data/rocketmq/store/store.txt
...ev-ops/environment/rocketmq/data/rocketmq/store/store.txt
+3
-0
scaffold/src/main/resources/archetype-resources/docs/dev-ops/environment/sql/nacos.sql
...rchetype-resources/docs/dev-ops/environment/sql/nacos.sql
+302
-0
scaffold/src/main/resources/archetype-resources/docs/dev-ops/environment/sql/xfg_dev_tech_db_00.sql
...urces/docs/dev-ops/environment/sql/xfg_dev_tech_db_00.sql
+215
-0
scaffold/src/main/resources/archetype-resources/docs/dev-ops/environment/sql/xfg_dev_tech_db_01.sql
...urces/docs/dev-ops/environment/sql/xfg_dev_tech_db_01.sql
+215
-0
scaffold/src/main/resources/archetype-resources/docs/dev-ops/environment/sql/xxl_job.sql
...hetype-resources/docs/dev-ops/environment/sql/xxl_job.sql
+121
-0
scaffold/src/main/resources/archetype-resources/pom.xml
scaffold/src/main/resources/archetype-resources/pom.xml
+234
-0
scaffold/src/test/resources/projects/basic/archetype.properties
...ld/src/test/resources/projects/basic/archetype.properties
+10
-0
scaffold/src/test/resources/projects/basic/goal.txt
scaffold/src/test/resources/projects/basic/goal.txt
+0
-0
xfg-frame-archetype-std-app/src/main/java/cn/bugstack/config/RedisClientConfig.java
...p/src/main/java/cn/bugstack/config/RedisClientConfig.java
+1
-1
xfg-frame-archetype-std-app/src/main/resources/application-dev.yml
...-archetype-std-app/src/main/resources/application-dev.yml
+0
-1
未找到文件。
docs/dev-ops/environment/docker-compose.yml
浏览文件 @
41ae576f
...
@@ -84,11 +84,12 @@ services:
...
@@ -84,11 +84,12 @@ services:
interval
:
5s
interval
:
5s
timeout
:
10s
timeout
:
10s
retries
:
10
retries
:
10
start_period
:
15s
deploy
:
deploy
:
resources
:
resources
:
limits
:
limits
:
cpus
:
'
0.5
0'
cpus
:
'
1.0
0'
memory
:
128
M
memory
:
512
M
volumes_from
:
volumes_from
:
-
mysql-job-dbdata
-
mysql-job-dbdata
...
@@ -148,11 +149,6 @@ services:
...
@@ -148,11 +149,6 @@ services:
interval
:
10s
interval
:
10s
timeout
:
5s
timeout
:
5s
retries
:
3
retries
:
3
deploy
:
resources
:
limits
:
cpus
:
'
0.50'
memory
:
128M
# https://hub.docker.com/r/xuchengen/rocketmq
# https://hub.docker.com/r/xuchengen/rocketmq
# 注意修改项;
# 注意修改项;
...
...
docs/dev-ops/environment/redis/redis.conf
浏览文件 @
41ae576f
bind
0
.
0
.
0
.
0
bind
0
.
0
.
0
.
0
port
6379
port
6379
requirepass
123456
\ No newline at end of file
\ No newline at end of file
scaffold/README.md
0 → 100644
浏览文件 @
41ae576f
# xfg-frame-archetype - DDD 脚手架
## 1. 脚手架安装使用
### 1. 生成
```
shell
mvn clean
install
```
-
在 IntelliJ IDEA 执行
`mvn clean install`
这样会把脚手架安装到本地仓库中
### 2. 配置
```
shell
/Users/fuzhengwei/Documents/develop/apache-maven-3.8.6/repository
```
-
把你的 Maven 路径的 repository 配置到 IntelliJ IDEA 创建 Maven 工程的路径下。
scaffold/pom.xml
0 → 100644
浏览文件 @
41ae576f
<?xml version="1.0" encoding="UTF-8"?>
<project
xmlns=
"http://maven.apache.org/POM/4.0.0"
xmlns:xsi=
"http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation=
"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
>
<modelVersion>
4.0.0
</modelVersion>
<groupId>
cn.bugstack
</groupId>
<artifactId>
scaffold
</artifactId>
<version>
1.1
</version>
<packaging>
maven-archetype
</packaging>
<name>
xfg-frame-archetype-std
</name>
<build>
<extensions>
<extension>
<groupId>
org.apache.maven.archetype
</groupId>
<artifactId>
archetype-packaging
</artifactId>
<version>
3.2.0
</version>
</extension>
</extensions>
<pluginManagement>
<plugins>
<plugin>
<artifactId>
maven-archetype-plugin
</artifactId>
<version>
3.2.0
</version>
</plugin>
</plugins>
</pluginManagement>
</build>
<description>
Parent pom providing dependency and plugin management for applications built with Maven
</description>
<url>
https://spring.io/projects/spring-boot/xfg-frame-archetype-std
</url>
<developers>
<developer>
<name>
xiaofuge
</name>
<email>
184172133@qq.com
</email>
<organization>
fuzhengwei
</organization>
<organizationUrl>
https://github.com/fuzhengwei
</organizationUrl>
</developer>
</developers>
<licenses>
<license>
<name>
Apache License, Version 2.0
</name>
<url>
https://www.apache.org/licenses/LICENSE-2.0
</url>
</license>
</licenses>
<scm>
<url>
https://github.com/spring-projects/spring-boot/xfg-frame-archetype-std
</url>
</scm>
</project>
scaffold/src/main/resources/META-INF/maven/archetype-metadata.xml
0 → 100644
浏览文件 @
41ae576f
<?xml version="1.0" encoding="UTF-8"?>
<archetype-descriptor
xsi:schemaLocation=
"https://maven.apache.org/plugins/maven-archetype-plugin/archetype-descriptor/1.1.0 http://maven.apache.org/xsd/archetype-descriptor-1.1.0.xsd"
name=
"xfg-frame-archetype-std"
xmlns=
"https://maven.apache.org/plugins/maven-archetype-plugin/archetype-descriptor/1.1.0"
xmlns:xsi=
"http://www.w3.org/2001/XMLSchema-instance"
>
<fileSets>
<fileSet
filtered=
"true"
encoding=
"UTF-8"
>
<directory>
docs/dev-ops
</directory>
<includes>
<include>
**/*.txt
</include>
<include>
**/*.xml
</include>
<include>
**/*.properties
</include>
</includes>
</fileSet>
<fileSet
encoding=
"UTF-8"
>
<directory>
docs/dev-ops
</directory>
<includes>
<include>
**/*.
</include>
<include>
**/*.sh
</include>
<include>
**/*.log
</include>
<include>
**/*.yml
</include>
<include>
**/*.json
</include>
<include>
**/*.conf
</include>
<include>
**/*.bak
</include>
<include>
**/*.sql
</include>
</includes>
</fileSet>
<fileSet
encoding=
"UTF-8"
>
<directory/>
<includes>
<include>
README.md
</include>
<include>
__gitignore__
</include>
</includes>
</fileSet>
</fileSets>
<modules>
<module
id=
"${rootArtifactId}-app"
dir=
"__rootArtifactId__-app"
name=
"${rootArtifactId}-app"
>
<fileSets>
<fileSet
filtered=
"true"
packaged=
"true"
encoding=
"UTF-8"
>
<directory>
src/main/java
</directory>
<includes>
<include>
**/*.java
</include>
</includes>
</fileSet>
<fileSet
filtered=
"true"
encoding=
"UTF-8"
>
<directory>
src/main/resources
</directory>
<includes>
<include>
**/*.xml
</include>
</includes>
</fileSet>
<fileSet
encoding=
"UTF-8"
>
<directory>
src/main/resources
</directory>
<includes>
<include>
**/*.yml
</include>
<include>
**/*.yaml
</include>
</includes>
</fileSet>
<fileSet
filtered=
"true"
packaged=
"true"
encoding=
"UTF-8"
>
<directory>
src/test/java
</directory>
<includes>
<include>
**/*.java
</include>
</includes>
</fileSet>
<fileSet
encoding=
"UTF-8"
>
<directory>
data/log
</directory>
<includes>
<include>
**/*.log
</include>
</includes>
</fileSet>
<fileSet
encoding=
"UTF-8"
>
<directory/>
<includes>
<include>
Dockerfile
</include>
<include>
build.sh
</include>
</includes>
</fileSet>
</fileSets>
</module>
<module
id=
"${rootArtifactId}-domain"
dir=
"__rootArtifactId__-domain"
name=
"${rootArtifactId}-domain"
>
<fileSets>
<fileSet
filtered=
"true"
packaged=
"true"
encoding=
"UTF-8"
>
<directory>
src/main/java
</directory>
<includes>
<include>
**/*.java
</include>
</includes>
</fileSet>
</fileSets>
</module>
<module
id=
"${rootArtifactId}-trigger"
dir=
"__rootArtifactId__-trigger"
name=
"${rootArtifactId}-trigger"
>
<fileSets>
<fileSet
filtered=
"true"
packaged=
"true"
encoding=
"UTF-8"
>
<directory>
src/main/java
</directory>
<includes>
<include>
**/*.java
</include>
</includes>
</fileSet>
</fileSets>
</module>
<module
id=
"${rootArtifactId}-infrastructure"
dir=
"__rootArtifactId__-infrastructure"
name=
"${rootArtifactId}-infrastructure"
>
<fileSets>
<fileSet
filtered=
"true"
packaged=
"true"
encoding=
"UTF-8"
>
<directory>
src/main/java
</directory>
<includes>
<include>
**/*.java
</include>
</includes>
</fileSet>
</fileSets>
</module>
<module
id=
"${rootArtifactId}-types"
dir=
"__rootArtifactId__-types"
name=
"${rootArtifactId}-types"
>
<fileSets>
<fileSet
filtered=
"true"
packaged=
"true"
encoding=
"UTF-8"
>
<directory>
src/main/java
</directory>
<includes>
<include>
**/*.java
</include>
</includes>
</fileSet>
</fileSets>
</module>
<module
id=
"${rootArtifactId}-api"
dir=
"__rootArtifactId__-api"
name=
"${rootArtifactId}-api"
>
<fileSets>
<fileSet
filtered=
"true"
packaged=
"true"
encoding=
"UTF-8"
>
<directory>
src/main/java
</directory>
<includes>
<include>
**/*.java
</include>
</includes>
</fileSet>
</fileSets>
</module>
</modules>
</archetype-descriptor>
scaffold/src/main/resources/archetype-resources/README.md
0 → 100644
浏览文件 @
41ae576f
# xfg-frame-archetype - DDD 脚手架
scaffold/src/main/resources/archetype-resources/__rootArtifactId__-api/pom.xml
0 → 100644
浏览文件 @
41ae576f
<?xml version="1.0" encoding="UTF-8"?>
<project
xmlns=
"http://maven.apache.org/POM/4.0.0"
xmlns:xsi=
"http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation=
"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
>
<modelVersion>
4.0.0
</modelVersion>
<parent>
<groupId>
${groupId}
</groupId>
<artifactId>
${rootArtifactId}
</artifactId>
<version>
${version}
</version>
</parent>
<artifactId>
${artifactId}
</artifactId>
<dependencies>
<dependency>
<groupId>
org.projectlombok
</groupId>
<artifactId>
lombok
</artifactId>
<version>
1.18.26
</version>
</dependency>
<dependency>
<groupId>
jakarta.validation
</groupId>
<artifactId>
jakarta.validation-api
</artifactId>
<version>
3.0.2
</version>
</dependency>
<dependency>
<groupId>
${groupId}
</groupId>
<artifactId>
${rootArtifactId}-types
</artifactId>
<version>
${version}
</version>
</dependency>
</dependencies>
<build>
<finalName>
${rootArtifactId}-api
</finalName>
<plugins>
<plugin>
<groupId>
org.apache.maven.plugins
</groupId>
<artifactId>
maven-compiler-plugin
</artifactId>
<configuration>
<source>
${java.version}
</source>
<target>
${java.version}
</target>
</configuration>
</plugin>
</plugins>
</build>
</project>
scaffold/src/main/resources/archetype-resources/__rootArtifactId__-api/src/main/java/api/IUserService.java
0 → 100644
浏览文件 @
41ae576f
#
set
(
$symbol_pound
=
'#'
)
#
set
(
$symbol_dollar
=
'$'
)
#
set
(
$symbol_escape
=
'\'
)
package
${
package
}.
api
;
public
interface
IUserService
{
String
queryUserInfo
(
String
req
);
}
scaffold/src/main/resources/archetype-resources/__rootArtifactId__-api/src/main/java/api/model/package-info.java
0 → 100644
浏览文件 @
41ae576f
#
set
(
$symbol_pound
=
'#'
)
#
set
(
$symbol_dollar
=
'$'
)
#
set
(
$symbol_escape
=
'\'
)
/**
* RPC 接口层;因为RPC的调用方式,需要调用方依赖接口提供方的接口描述信息,所以需要单独提供Jar。这个包下编写接口所需的基础对象和DTO对象
*/
package
${
package
}.
api
.
model
;
\ No newline at end of file
scaffold/src/main/resources/archetype-resources/__rootArtifactId__-app/Dockerfile
0 → 100644
浏览文件 @
41ae576f
# 基础镜像
FROM
openjdk:8-jre-slim
# 作者
MAINTAINER
xiaofuge
# 配置
ENV
PARAMS=""
# 时区
ENV
TZ=PRC
RUN
ln
-snf
/usr/share/zoneinfo/
$TZ
/etc/localtime
&&
echo
$TZ
>
/etc/timezone
# 添加应用
ADD
target/${artifactId}-app.jar /${artifactId}-app.jar
ENTRYPOINT
["sh","-c","java -jar $JAVA_OPTS /${artifactId}-app.jar $PARAMS"]
\ No newline at end of file
scaffold/src/main/resources/archetype-resources/__rootArtifactId__-app/build.sh
0 → 100644
浏览文件 @
41ae576f
# 普通镜像构建,随系统版本构建 amd/arm
docker build
-t
system/xfg-frame-archetype-std-app:1.0-SNAPSHOT
-f
./Dockerfile
.
# 兼容 amd、arm 构建镜像
# docker buildx build --load --platform liunx/amd64,linux/arm64 -t xiaofuge/xfg-frame-archetype-app:1.0 -f ./Dockerfile . --push
\ No newline at end of file
scaffold/src/main/resources/archetype-resources/__rootArtifactId__-app/pom.xml
0 → 100644
浏览文件 @
41ae576f
<?xml version="1.0" encoding="UTF-8"?>
<project
xmlns=
"http://maven.apache.org/POM/4.0.0"
xmlns:xsi=
"http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation=
"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
>
<modelVersion>
4.0.0
</modelVersion>
<parent>
<groupId>
${groupId}
</groupId>
<artifactId>
${rootArtifactId}
</artifactId>
<version>
${version}
</version>
</parent>
<artifactId>
${artifactId}
</artifactId>
<packaging>
jar
</packaging>
<dependencies>
<dependency>
<groupId>
org.springframework.boot
</groupId>
<artifactId>
spring-boot-starter-web
</artifactId>
</dependency>
<dependency>
<groupId>
org.springframework.boot
</groupId>
<artifactId>
spring-boot-starter-test
</artifactId>
<scope>
test
</scope>
</dependency>
<dependency>
<groupId>
org.apache.tomcat.embed
</groupId>
<artifactId>
tomcat-embed-core
</artifactId>
</dependency>
<dependency>
<groupId>
org.springframework.boot
</groupId>
<artifactId>
spring-boot-configuration-processor
</artifactId>
</dependency>
<dependency>
<groupId>
org.mybatis.spring.boot
</groupId>
<artifactId>
mybatis-spring-boot-starter
</artifactId>
</dependency>
<!-- # 多数据源路由配置
# mysql 5.x driver-class-name: com.mysql.jdbc.Driver mysql-connector-java 5.1.34
# mysql 8.x driver-class-name: com.mysql.cj.jdbc.Driver mysql-connector-java 8.0.22-->
<dependency>
<groupId>
mysql
</groupId>
<artifactId>
mysql-connector-java
</artifactId>
</dependency>
<dependency>
<groupId>
com.alibaba
</groupId>
<artifactId>
fastjson
</artifactId>
</dependency>
<dependency>
<groupId>
org.apache.commons
</groupId>
<artifactId>
commons-lang3
</artifactId>
</dependency>
<dependency>
<groupId>
org.projectlombok
</groupId>
<artifactId>
lombok
</artifactId>
</dependency>
<dependency>
<groupId>
com.google.guava
</groupId>
<artifactId>
guava
</artifactId>
</dependency>
<dependency>
<groupId>
junit
</groupId>
<artifactId>
junit
</artifactId>
<scope>
test
</scope>
</dependency>
<dependency>
<groupId>
io.jsonwebtoken
</groupId>
<artifactId>
jjwt
</artifactId>
</dependency>
<dependency>
<groupId>
com.auth0
</groupId>
<artifactId>
java-jwt
</artifactId>
</dependency>
<dependency>
<groupId>
commons-codec
</groupId>
<artifactId>
commons-codec
</artifactId>
</dependency>
<dependency>
<groupId>
com.squareup.retrofit2
</groupId>
<artifactId>
converter-gson
</artifactId>
<version>
2.9.0
</version>
</dependency>
<dependency>
<groupId>
org.apache.dubbo
</groupId>
<artifactId>
dubbo
</artifactId>
</dependency>
<dependency>
<groupId>
org.apache.dubbo
</groupId>
<artifactId>
dubbo-spring-boot-starter
</artifactId>
</dependency>
<dependency>
<groupId>
com.alibaba.nacos
</groupId>
<artifactId>
nacos-client
</artifactId>
</dependency>
<dependency>
<groupId>
org.redisson
</groupId>
<artifactId>
redisson-spring-boot-starter
</artifactId>
</dependency>
<dependency>
<groupId>
org.apache.shardingsphere
</groupId>
<artifactId>
shardingsphere-jdbc-core
</artifactId>
</dependency>
<dependency>
<groupId>
org.yaml
</groupId>
<artifactId>
snakeyaml
</artifactId>
</dependency>
<dependency>
<groupId>
com.xuxueli
</groupId>
<artifactId>
xxl-job-core
</artifactId>
</dependency>
<dependency>
<groupId>
org.apache.rocketmq
</groupId>
<artifactId>
rocketmq-client-java
</artifactId>
</dependency>
<dependency>
<groupId>
org.apache.rocketmq
</groupId>
<artifactId>
rocketmq-spring-boot-starter
</artifactId>
</dependency>
<!-- 工程模块;启动依赖 trigger->domain, infrastructure-->
<dependency>
<groupId>
${groupId}
</groupId>
<artifactId>
${rootArtifactId}-trigger
</artifactId>
</dependency>
<dependency>
<groupId>
${groupId}
</groupId>
<artifactId>
${rootArtifactId}-infrastructure
</artifactId>
</dependency>
</dependencies>
<build>
<finalName>
${rootArtifactId}-app
</finalName>
<resources>
<resource>
<directory>
src/main/resources
</directory>
<filtering>
true
</filtering>
<includes>
<include>
**/**
</include>
</includes>
</resource>
</resources>
<testResources>
<testResource>
<directory>
src/test/resources
</directory>
<filtering>
true
</filtering>
<includes>
<include>
**/**
</include>
</includes>
</testResource>
</testResources>
<plugins>
<plugin>
<groupId>
org.apache.maven.plugins
</groupId>
<artifactId>
maven-surefire-plugin
</artifactId>
<version>
2.6
</version>
<configuration>
<skipTests>
true
</skipTests>
<testFailureIgnore>
false
</testFailureIgnore>
<includes>
<include>
**/*Test.java
</include>
</includes>
</configuration>
</plugin>
<plugin>
<groupId>
org.springframework.boot
</groupId>
<artifactId>
spring-boot-maven-plugin
</artifactId>
<configuration>
<mainClass>
cn.bugstack.Application
</mainClass>
<layout>
JAR
</layout>
</configuration>
</plugin>
</plugins>
</build>
</project>
scaffold/src/main/resources/archetype-resources/__rootArtifactId__-app/src/main/java/Application.java
0 → 100644
浏览文件 @
41ae576f
#
set
(
$symbol_pound
=
'#'
)
#
set
(
$symbol_dollar
=
'$'
)
#
set
(
$symbol_escape
=
'\'
)
package
${
package
};
import
org.apache.dubbo.config.spring.context.annotation.EnableDubbo
;
import
org.springframework.beans.factory.annotation.Configurable
;
import
org.springframework.boot.SpringApplication
;
import
org.springframework.boot.autoconfigure.SpringBootApplication
;
@SpringBootApplication
@Configurable
@EnableDubbo
public
class
Application
{
public
static
void
main
(
String
[]
args
){
SpringApplication
.
run
(
Application
.
class
);
}
}
scaffold/src/main/resources/archetype-resources/__rootArtifactId__-app/src/main/java/config/GuavaConfig.java
0 → 100644
浏览文件 @
41ae576f
#
set
(
$symbol_pound
=
'#'
)
#
set
(
$symbol_dollar
=
'$'
)
#
set
(
$symbol_escape
=
'\'
)
package
${
package
}.
config
;
import
com.google.common.cache.Cache
;
import
com.google.common.cache.CacheBuilder
;
import
org.springframework.context.annotation.Bean
;
import
org.springframework.context.annotation.Configuration
;
import
java.util.concurrent.TimeUnit
;
@Configuration
public
class
GuavaConfig
{
@Bean
(
name
=
"cache"
)
public
Cache
<
String
,
String
>
cache
()
{
return
CacheBuilder
.
newBuilder
()
.
expireAfterWrite
(
3
,
TimeUnit
.
SECONDS
)
.
build
();
}
}
scaffold/src/main/resources/archetype-resources/__rootArtifactId__-app/src/main/java/config/RedisClientConfig.java
0 → 100644
浏览文件 @
41ae576f
#
set
(
$symbol_pound
=
'#'
)
#
set
(
$symbol_dollar
=
'$'
)
#
set
(
$symbol_escape
=
'\'
)
package
${
package
}.
config
;
import
com.alibaba.fastjson.JSON
;
import
com.alibaba.fastjson.serializer.SerializerFeature
;
import
io.netty.buffer.ByteBuf
;
import
io.netty.buffer.ByteBufAllocator
;
import
io.netty.buffer.ByteBufInputStream
;
import
io.netty.buffer.ByteBufOutputStream
;
import
org.redisson.Redisson
;
import
org.redisson.api.RedissonClient
;
import
org.redisson.client.codec.BaseCodec
;
import
org.redisson.client.protocol.Decoder
;
import
org.redisson.client.protocol.Encoder
;
import
org.redisson.config.Config
;
import
org.springframework.boot.context.properties.EnableConfigurationProperties
;
import
org.springframework.context.ConfigurableApplicationContext
;
import
org.springframework.context.annotation.Bean
;
import
org.springframework.context.annotation.Configuration
;
import
java.io.IOException
;
/**
* Redis 客户端,使用 Redisson <a href="https://github.com/redisson/redisson">Redisson</a>
*
* @author Fuzhengwei bugstack.cn @小傅哥
*/
@Configuration
@EnableConfigurationProperties
(
RedisClientConfigProperties
.
class
)
public
class
RedisClientConfig
{
@Bean
(
"redissonClient"
)
public
RedissonClient
redissonClient
(
ConfigurableApplicationContext
applicationContext
,
RedisClientConfigProperties
properties
)
{
Config
config
=
new
Config
();
// 根据需要可以设定编解码器;https://github.com/redisson/redisson/wiki/4.-%E6%95%B0%E6%8D%AE%E5%BA%8F%E5%88%97%E5%8C%96
// config.setCodec(new RedisCodec());
config
.
useSingleServer
()
.
setAddress
(
"redis://"
+
properties
.
getHost
()
+
":"
+
properties
.
getPort
())
.
setPassword
(
properties
.
getPassword
())
.
setConnectionPoolSize
(
properties
.
getPoolSize
())
.
setConnectionMinimumIdleSize
(
properties
.
getMinIdleSize
())
.
setIdleConnectionTimeout
(
properties
.
getIdleTimeout
())
.
setConnectTimeout
(
properties
.
getConnectTimeout
())
.
setRetryAttempts
(
properties
.
getRetryAttempts
())
.
setRetryInterval
(
properties
.
getRetryInterval
())
.
setPingConnectionInterval
(
properties
.
getPingInterval
())
.
setKeepAlive
(
properties
.
isKeepAlive
())
;
return
Redisson
.
create
(
config
);
}
static
class
RedisCodec
extends
BaseCodec
{
private
final
Encoder
encoder
=
in
->
{
ByteBuf
out
=
ByteBufAllocator
.
DEFAULT
.
buffer
();
try
{
ByteBufOutputStream
os
=
new
ByteBufOutputStream
(
out
);
JSON
.
writeJSONString
(
os
,
in
,
SerializerFeature
.
WriteClassName
);
return
os
.
buffer
();
}
catch
(
IOException
e
)
{
out
.
release
();
throw
e
;
}
catch
(
Exception
e
)
{
out
.
release
();
throw
new
IOException
(
e
);
}
};
private
final
Decoder
<
Object
>
decoder
=
(
buf
,
state
)
->
JSON
.
parseObject
(
new
ByteBufInputStream
(
buf
),
Object
.
class
);
@Override
public
Decoder
<
Object
>
getValueDecoder
()
{
return
decoder
;
}
@Override
public
Encoder
getValueEncoder
()
{
return
encoder
;
}
}
}
scaffold/src/main/resources/archetype-resources/__rootArtifactId__-app/src/main/java/config/RedisClientConfigProperties.java
0 → 100644
浏览文件 @
41ae576f
#
set
(
$symbol_pound
=
'#'
)
#
set
(
$symbol_dollar
=
'$'
)
#
set
(
$symbol_escape
=
'\'
)
package
${
package
}.
config
;
import
lombok.Data
;
import
org.springframework.boot.context.properties.ConfigurationProperties
;
/**
* @author Fuzhengwei bugstack.cn @小傅哥
* @description Redis 连接配置 <a href="https://github.com/redisson/redisson/tree/master/redisson-spring-boot-starter">redisson-spring-boot-starter</a>
* @create 2023-09-03 16:51
*/
@Data
@ConfigurationProperties
(
prefix
=
"redis.sdk.config"
,
ignoreInvalidFields
=
true
)
public
class
RedisClientConfigProperties
{
/** host:ip */
private
String
host
;
/** 端口 */
private
int
port
;
/** 账密 */
private
String
password
;
/** 设置连接池的大小,默认为64 */
private
int
poolSize
=
64
;
/** 设置连接池的最小空闲连接数,默认为10 */
private
int
minIdleSize
=
10
;
/** 设置连接的最大空闲时间(单位:毫秒),超过该时间的空闲连接将被关闭,默认为10000 */
private
int
idleTimeout
=
10000
;
/** 设置连接超时时间(单位:毫秒),默认为10000 */
private
int
connectTimeout
=
10000
;
/** 设置连接重试次数,默认为3 */
private
int
retryAttempts
=
3
;
/** 设置连接重试的间隔时间(单位:毫秒),默认为1000 */
private
int
retryInterval
=
1000
;
/** 设置定期检查连接是否可用的时间间隔(单位:毫秒),默认为0,表示不进行定期检查 */
private
int
pingInterval
=
0
;
/** 设置是否保持长连接,默认为true */
private
boolean
keepAlive
=
true
;
}
scaffold/src/main/resources/archetype-resources/__rootArtifactId__-app/src/main/java/config/ThreadPoolConfig.java
0 → 100644
浏览文件 @
41ae576f
#
set
(
$symbol_pound
=
'#'
)
#
set
(
$symbol_dollar
=
'$'
)
#
set
(
$symbol_escape
=
'\'
)
package
${
package
}.
config
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean
;
import
org.springframework.boot.context.properties.EnableConfigurationProperties
;
import
org.springframework.context.annotation.Bean
;
import
org.springframework.context.annotation.Configuration
;
import
org.springframework.scheduling.annotation.EnableAsync
;
import
java.util.concurrent.*
;
@Slf4j
@EnableAsync
@Configuration
@EnableConfigurationProperties
(
ThreadPoolConfigProperties
.
class
)
public
class
ThreadPoolConfig
{
@Bean
@ConditionalOnMissingBean
(
ThreadPoolExecutor
.
class
)
public
ThreadPoolExecutor
threadPoolExecutor
(
ThreadPoolConfigProperties
properties
)
throws
ClassNotFoundException
,
InstantiationException
,
IllegalAccessException
{
// 实例化策略
RejectedExecutionHandler
handler
;
switch
(
properties
.
getPolicy
()){
case
"AbortPolicy"
:
handler
=
new
ThreadPoolExecutor
.
AbortPolicy
();
break
;
case
"DiscardPolicy"
:
handler
=
new
ThreadPoolExecutor
.
DiscardPolicy
();
break
;
case
"DiscardOldestPolicy"
:
handler
=
new
ThreadPoolExecutor
.
DiscardOldestPolicy
();
break
;
case
"CallerRunsPolicy"
:
handler
=
new
ThreadPoolExecutor
.
CallerRunsPolicy
();
break
;
default
:
handler
=
new
ThreadPoolExecutor
.
AbortPolicy
();
break
;
}
// 创建线程池
return
new
ThreadPoolExecutor
(
properties
.
getCorePoolSize
(),
properties
.
getMaxPoolSize
(),
properties
.
getKeepAliveTime
(),
TimeUnit
.
SECONDS
,
new
LinkedBlockingQueue
<>(
properties
.
getBlockQueueSize
()),
Executors
.
defaultThreadFactory
(),
handler
);
}
}
scaffold/src/main/resources/archetype-resources/__rootArtifactId__-app/src/main/java/config/ThreadPoolConfigProperties.java
0 → 100644
浏览文件 @
41ae576f
#
set
(
$symbol_pound
=
'#'
)
#
set
(
$symbol_dollar
=
'$'
)
#
set
(
$symbol_escape
=
'\'
)
package
${
package
}.
config
;
import
lombok.Data
;
import
org.springframework.boot.context.properties.ConfigurationProperties
;
@Data
@ConfigurationProperties
(
prefix
=
"thread.pool.executor.config"
,
ignoreInvalidFields
=
true
)
public
class
ThreadPoolConfigProperties
{
/** 核心线程数 */
private
Integer
corePoolSize
=
20
;
/** 最大线程数 */
private
Integer
maxPoolSize
=
200
;
/** 最大等待时间 */
private
Long
keepAliveTime
=
10L
;
/** 最大队列数 */
private
Integer
blockQueueSize
=
5000
;
/*
* AbortPolicy:丢弃任务并抛出RejectedExecutionException异常。
* DiscardPolicy:直接丢弃任务,但是不会抛出异常
* DiscardOldestPolicy:将最早进入队列的任务删除,之后再尝试加入队列的任务被拒绝
* CallerRunsPolicy:如果任务添加线程池失败,那么主线程自己执行该任务
* */
private
String
policy
=
"AbortPolicy"
;
}
scaffold/src/main/resources/archetype-resources/__rootArtifactId__-app/src/main/java/config/XxlJobAutoConfig.java
0 → 100644
浏览文件 @
41ae576f
#
set
(
$symbol_pound
=
'#'
)
#
set
(
$symbol_dollar
=
'$'
)
#
set
(
$symbol_escape
=
'\'
)
package
${
package
}.
config
;
import
com.xxl.job.core.executor.impl.XxlJobSpringExecutor
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.beans.factory.annotation.Value
;
import
org.springframework.context.annotation.Bean
;
import
org.springframework.context.annotation.Configuration
;
@Slf4j
@Configuration
public
class
XxlJobAutoConfig
{
@Value
(
"${symbol_dollar}{xxl.job.admin.addresses}"
)
private
String
adminAddresses
;
@Value
(
"${symbol_dollar}{xxl.job.accessToken}"
)
private
String
accessToken
;
@Value
(
"${symbol_dollar}{xxl.job.executor.appname}"
)
private
String
appname
;
@Value
(
"${symbol_dollar}{xxl.job.executor.address}"
)
private
String
address
;
@Value
(
"${symbol_dollar}{xxl.job.executor.ip}"
)
private
String
ip
;
@Value
(
"${symbol_dollar}{xxl.job.executor.port}"
)
private
int
port
;
@Value
(
"${symbol_dollar}{xxl.job.executor.logpath}"
)
private
String
logPath
;
@Value
(
"${symbol_dollar}{xxl.job.executor.logretentiondays}"
)
private
int
logRetentionDays
;
@Bean
public
XxlJobSpringExecutor
xxlJobExecutor
()
{
log
.
info
(
">>>>>>>>>>> xxl-job config init."
);
XxlJobSpringExecutor
xxlJobSpringExecutor
=
new
XxlJobSpringExecutor
();
xxlJobSpringExecutor
.
setAdminAddresses
(
adminAddresses
);
xxlJobSpringExecutor
.
setAppname
(
appname
);
xxlJobSpringExecutor
.
setAddress
(
address
);
xxlJobSpringExecutor
.
setIp
(
ip
);
xxlJobSpringExecutor
.
setPort
(
port
);
xxlJobSpringExecutor
.
setAccessToken
(
accessToken
);
xxlJobSpringExecutor
.
setLogPath
(
logPath
);
xxlJobSpringExecutor
.
setLogRetentionDays
(
logRetentionDays
);
return
xxlJobSpringExecutor
;
}
/**********************************************************************************************
* 针对多网卡、容器内部署等情况,可借助 "spring-cloud-commons" 提供的 "InetUtils" 组件灵活定制注册IP;
*
* 1、引入依赖:
* <dependency>
* <groupId>org.springframework.cloud</groupId>
* <artifactId>spring-cloud-commons</artifactId>
* <version>${symbol_dollar}{version}</version>
* </dependency>
*
* 2、配置文件,或者容器启动变量
* spring.cloud.inetutils.preferred-networks: 'xxx.xxx.xxx.'
*
* 3、获取IP
* String ip_ = inetUtils.findFirstNonLoopbackHostInfo().getIpAddress();
**********************************************************************************************/
}
scaffold/src/main/resources/archetype-resources/__rootArtifactId__-app/src/main/java/config/package-info.java
0 → 100644
浏览文件 @
41ae576f
#
set
(
$symbol_pound
=
'#'
)
#
set
(
$symbol_dollar
=
'$'
)
#
set
(
$symbol_escape
=
'\'
)
/**
* 1. 用于管理引入的Jar所需的资源启动或者初始化处理
* 2. 如果有AOP切面,可以再建一个aop包,来写切面逻辑
*/
package
${
package
}.
config
;
scaffold/src/main/resources/archetype-resources/__rootArtifactId__-app/src/main/java/package-info.java
0 → 100644
浏览文件 @
41ae576f
#
set
(
$symbol_pound
=
'#'
)
#
set
(
$symbol_dollar
=
'$'
)
#
set
(
$symbol_escape
=
'\'
)
/**
* 应用启动层,注意Application所在的包路径,是在上一层。这样才能扫描到其他 module
* */
package
${
package
};
\ No newline at end of file
scaffold/src/main/resources/archetype-resources/__rootArtifactId__-app/src/main/resources/application-dev.yml
0 → 100644
浏览文件 @
41ae576f
server
:
port
:
8091
# 线程池配置
thread
:
pool
:
executor
:
config
:
core-pool-size
:
20
max-pool-size
:
50
keep-alive-time
:
5000
block-queue-size
:
5000
policy
:
CallerRunsPolicy
# 数据库配置 - sharding-jdbc 分库分表
spring
:
datasource
:
driver-class-name
:
org.apache.shardingsphere.driver.ShardingSphereDriver
url
:
jdbc:shardingsphere:classpath:sharding/sharding-jdbc-dev.yaml
mybatis
:
mapper-locations
:
classpath:/mybatis/mapper/*.xml
config-location
:
classpath:/mybatis/config/mybatis-config.xml
# Redis
redis
:
sdk
:
config
:
host
:
127.0.0.1
port
:
6379
password
:
123456
pool-size
:
10
min-idle-size
:
5
idle-timeout
:
30000
connect-timeout
:
5000
retry-attempts
:
3
retry-interval
:
1000
ping-interval
:
60000
keep-alive
:
true
# Dubbo
dubbo
:
application
:
name
:
xfg-frame-archetype-std
version
:
1.0.0
registry
:
id
:
nacos-registry
address
:
nacos://127.0.0.1:8848
protocol
:
name
:
dubbo
port
:
-1
scan
:
base-packages
:
cn.bugstack.api
# RocketMQ 配置,在docs/dev-ops下,有创建 xfg-group 脚本,也有场景mq消息的脚本
rocketmq
:
name-server
:
127.0.0.1:9876
consumer
:
group
:
xfg-group
# 一次拉取消息最大值,注意是拉取消息的最大值而非消费最大值
pull-batch-size
:
10
producer
:
# 发送同一类消息的设置为同一个group,保证唯一
group
:
xfg-group
# 发送消息超时时间,默认3000
sendMessageTimeout
:
10000
# 发送消息失败重试次数,默认2
retryTimesWhenSendFailed
:
2
# 异步消息重试此处,默认2
retryTimesWhenSendAsyncFailed
:
2
# 消息最大长度,默认1024 * 1024 * 4(默认4M)
maxMessageSize
:
4096
# 压缩消息阈值,默认4k(1024 * 4)
compressMessageBodyThreshold
:
4096
# 是否在内部发送失败时重试另一个broker,默认false
retryNextServer
:
false
# xxl-job https://www.xuxueli.com/xxl-job/#%E6%AD%A5%E9%AA%A4%E4%B8%80%EF%BC%9A%E8%B0%83%E5%BA%A6%E4%B8%AD%E5%BF%83%E9%85%8D%E7%BD%AE%EF%BC%9A
xxl
:
job
:
# 验证信息 官网Bug https://github.com/xuxueli/xxl-job/issues/1951
accessToken
:
default_token
# 注册地址
admin
:
addresses
:
http://localhost:9090/xxl-job-admin
# 注册执行器
executor
:
# 执行器注册 [选填]:优先使用该配置作为注册地址,为空时使用内嵌服务 ”IP:PORT“ 作为注册地址。从而更灵活的支持容器类型执行器动态IP和动态映射端口问题。
address
:
appname
:
xxl-job-executor-sample
# 执行器IP 配置为本机IP [选填]:默认为空表示自动获取IP,多网卡时可手动设置指定IP,该IP不会绑定Host仅作为通讯实用;地址信息用于 "执行器注册" 和 "调度中心请求并触发任务";
ip
:
# 执行器端口号 [选填]:小于等于0则自动获取;默认端口为9999,单机部署多个执行器时,注意要配置不同执行器端口;
port
:
9999
# 执行器运行日志文件存储磁盘路径 [选填] :需要对该路径拥有读写权限;为空则使用默认路径;
logpath
:
./data/applogs/xxl-job/jobhandler
# 执行器日志文件保存天数 [选填] : 过期日志自动清理, 限制值大于等于3时生效; 否则, 如-1, 关闭自动清理功能;
logretentiondays
:
30
# 日志
logging
:
level
:
root
:
info
config
:
classpath:logback-spring.xml
\ No newline at end of file
scaffold/src/main/resources/archetype-resources/__rootArtifactId__-app/src/main/resources/application-prod.yml
0 → 100644
浏览文件 @
41ae576f
server
:
port
:
8091
# 线程池配置
thread
:
pool
:
executor
:
config
:
core-pool-size
:
20
max-pool-size
:
50
keep-alive-time
:
5000
block-queue-size
:
5000
policy
:
CallerRunsPolicy
# 数据库配置
#spring:
# datasource:
# username: root
# password: 123456
# url: jdbc:mysql://127.0.0.1:3306/xfg_frame_archetype?useUnicode=true&characterEncoding=utf8&autoReconnect=true&zeroDateTimeBehavior=convertToNull&serverTimezone=UTC&useSSL=true
# driver-class-name: com.mysql.cj.jdbc.Driver
# hikari:
# pool-name: Retail_HikariCP
# minimum-idle: 15 #最小空闲连接数量
# idle-timeout: 180000 #空闲连接存活最大时间,默认600000(10分钟)
# maximum-pool-size: 25 #连接池最大连接数,默认是10
# auto-commit: true #此属性控制从池返回的连接的默认自动提交行为,默认值:true
# max-lifetime: 1800000 #此属性控制池中连接的最长生命周期,值0表示无限生命周期,默认1800000即30分钟
# connection-timeout: 30000 #数据库连接超时时间,默认30秒,即30000
# connection-test-query: SELECT 1
# type: com.zaxxer.hikari.HikariDataSource
#mybatis:
# mapper-locations: classpath:/mybatis/mapper/*.xml
# config-location: classpath:/mybatis/config/mybatis-config.xml
# 日志
logging
:
level
:
root
:
info
config
:
classpath:logback-spring.xml
\ No newline at end of file
scaffold/src/main/resources/archetype-resources/__rootArtifactId__-app/src/main/resources/application-test.yml
0 → 100644
浏览文件 @
41ae576f
server
:
port
:
8091
# 线程池配置
thread
:
pool
:
executor
:
config
:
core-pool-size
:
20
max-pool-size
:
50
keep-alive-time
:
5000
block-queue-size
:
5000
policy
:
CallerRunsPolicy
# 数据库配置
#spring:
# datasource:
# username: root
# password: 123456
# url: jdbc:mysql://127.0.0.1:3306/xfg_frame_archetype?useUnicode=true&characterEncoding=utf8&autoReconnect=true&zeroDateTimeBehavior=convertToNull&serverTimezone=UTC&useSSL=true
# driver-class-name: com.mysql.cj.jdbc.Driver
# hikari:
# pool-name: Retail_HikariCP
# minimum-idle: 15 #最小空闲连接数量
# idle-timeout: 180000 #空闲连接存活最大时间,默认600000(10分钟)
# maximum-pool-size: 25 #连接池最大连接数,默认是10
# auto-commit: true #此属性控制从池返回的连接的默认自动提交行为,默认值:true
# max-lifetime: 1800000 #此属性控制池中连接的最长生命周期,值0表示无限生命周期,默认1800000即30分钟
# connection-timeout: 30000 #数据库连接超时时间,默认30秒,即30000
# connection-test-query: SELECT 1
# type: com.zaxxer.hikari.HikariDataSource
#mybatis:
# mapper-locations: classpath:/mybatis/mapper/*.xml
# config-location: classpath:/mybatis/config/mybatis-config.xml
# 日志
logging
:
level
:
root
:
info
config
:
classpath:logback-spring.xml
\ No newline at end of file
scaffold/src/main/resources/archetype-resources/__rootArtifactId__-app/src/main/resources/application.yml
0 → 100644
浏览文件 @
41ae576f
spring
:
config
:
name
:
xfg-frame-archetype-std-app
profiles
:
active
:
dev
scaffold/src/main/resources/archetype-resources/__rootArtifactId__-app/src/main/resources/logback-spring.xml
0 → 100644
浏览文件 @
41ae576f
#set( $symbol_pound = '#' )
#set( $symbol_dollar = '$' )
#set( $symbol_escape = '\' )
<?xml version="1.0" encoding="UTF-8"?>
<!-- 日志级别从低到高分为TRACE < DEBUG < INFO < WARN < ERROR < FATAL,如果设置为WARN,则低于WARN的信息都不会输出 -->
<configuration
scan=
"true"
scanPeriod=
"10 seconds"
>
<contextName>
logback
</contextName>
<!-- name的值是变量的名称,value的值时变量定义的值。通过定义的值会被插入到logger上下文中。定义变量后,可以使“${symbol_dollar}{}”来使用变量。 -->
<springProperty
scope=
"context"
name=
"log.path"
source=
"logging.path"
/>
<!-- 日志格式 -->
<conversionRule
conversionWord=
"clr"
converterClass=
"org.springframework.boot.logging.logback.ColorConverter"
/>
<conversionRule
conversionWord=
"wex"
converterClass=
"org.springframework.boot.logging.logback.WhitespaceThrowableProxyConverter"
/>
<conversionRule
conversionWord=
"wEx"
converterClass=
"org.springframework.boot.logging.logback.ExtendedWhitespaceThrowableProxyConverter"
/>
<!-- 输出到控制台 -->
<appender
name=
"CONSOLE"
class=
"ch.qos.logback.core.ConsoleAppender"
>
<!-- 此日志appender是为开发使用,只配置最底级别,控制台输出的日志级别是大于或等于此级别的日志信息 -->
<filter
class=
"ch.qos.logback.classic.filter.ThresholdFilter"
>
<level>
info
</level>
</filter>
<encoder>
<pattern>
%d{yy-MM-dd.HH:mm:ss.SSS} [%-16t] %-5p %-22c{0}%X{ServiceId} -%X{trace-id} %m%n
</pattern>
<charset>
UTF-8
</charset>
</encoder>
</appender>
<!--输出到文件-->
<!-- 时间滚动输出 level为 INFO 日志 -->
<appender
name=
"INFO_FILE"
class=
"ch.qos.logback.core.rolling.RollingFileAppender"
>
<!-- 正在记录的日志文件的路径及文件名 -->
<file>
./data/log/log_info.log
</file>
<!--日志文件输出格式-->
<encoder>
<pattern>
%d{yy-MM-dd.HH:mm:ss.SSS} [%-16t] %-5p %-22c{0}%X{ServiceId} -%X{trace-id} %m%n
</pattern>
<charset>
UTF-8
</charset>
</encoder>
<!-- 日志记录器的滚动策略,按日期,按大小记录 -->
<rollingPolicy
class=
"ch.qos.logback.core.rolling.TimeBasedRollingPolicy"
>
<!-- 每天日志归档路径以及格式 -->
<fileNamePattern>
./data/log/log-info-%d{yyyy-MM-dd}.%i.log
</fileNamePattern>
<timeBasedFileNamingAndTriggeringPolicy
class=
"ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"
>
<maxFileSize>
100MB
</maxFileSize>
</timeBasedFileNamingAndTriggeringPolicy>
<!--日志文件保留天数-->
<maxHistory>
15
</maxHistory>
<totalSizeCap>
10GB
</totalSizeCap>
</rollingPolicy>
</appender>
<!-- 时间滚动输出 level为 ERROR 日志 -->
<appender
name=
"ERROR_FILE"
class=
"ch.qos.logback.core.rolling.RollingFileAppender"
>
<!-- 正在记录的日志文件的路径及文件名 -->
<file>
./data/log/log_error.log
</file>
<!--日志文件输出格式-->
<encoder>
<pattern>
%d{yy-MM-dd.HH:mm:ss.SSS} [%-16t] %-5p %-22c{0}%X{ServiceId} -%X{trace-id} %m%n
</pattern>
<charset>
UTF-8
</charset>
</encoder>
<!-- 日志记录器的滚动策略,按日期,按大小记录 -->
<rollingPolicy
class=
"ch.qos.logback.core.rolling.TimeBasedRollingPolicy"
>
<fileNamePattern>
./data/log/log-error-%d{yyyy-MM-dd}.%i.log
</fileNamePattern>
<timeBasedFileNamingAndTriggeringPolicy
class=
"ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"
>
<maxFileSize>
100MB
</maxFileSize>
</timeBasedFileNamingAndTriggeringPolicy>
<!-- 日志文件保留天数【根据服务器预留,可自行调整】 -->
<maxHistory>
7
</maxHistory>
<totalSizeCap>
5GB
</totalSizeCap>
</rollingPolicy>
<!-- WARN 级别及以上 -->
<filter
class=
"ch.qos.logback.classic.filter.ThresholdFilter"
>
<level>
WARN
</level>
</filter>
</appender>
<!-- 异步输出 -->
<appender
name=
"ASYNC_FILE_INFO"
class=
"ch.qos.logback.classic.AsyncAppender"
>
<!-- 队列剩余容量小于discardingThreshold,则会丢弃TRACT、DEBUG、INFO级别的日志;默认值-1,为queueSize的20%;0不丢失日志 -->
<discardingThreshold>
0
</discardingThreshold>
<!-- 更改默认的队列的深度,该值会影响性能.默认值为256 -->
<queueSize>
8192
</queueSize>
<!-- neverBlock:true 会丢失日志,但业务性能不受影响 -->
<neverBlock>
true
</neverBlock>
<!--是否提取调用者数据-->
<includeCallerData>
false
</includeCallerData>
<appender-ref
ref=
"INFO_FILE"
/>
</appender>
<appender
name=
"ASYNC_FILE_ERROR"
class=
"ch.qos.logback.classic.AsyncAppender"
>
<!-- 队列剩余容量小于discardingThreshold,则会丢弃TRACT、DEBUG、INFO级别的日志;默认值-1,为queueSize的20%;0不丢失日志 -->
<discardingThreshold>
0
</discardingThreshold>
<!-- 更改默认的队列的深度,该值会影响性能.默认值为256 -->
<queueSize>
1024
</queueSize>
<!-- neverBlock:true 会丢失日志,但业务性能不受影响 -->
<neverBlock>
true
</neverBlock>
<!--是否提取调用者数据-->
<includeCallerData>
false
</includeCallerData>
<appender-ref
ref=
"ERROR_FILE"
/>
</appender>
<!-- 开发环境:控制台打印 -->
<springProfile
name=
"dev"
>
<logger
name=
"com.nmys.view"
level=
"debug"
/>
</springProfile>
<root
level=
"info"
>
<appender-ref
ref=
"CONSOLE"
/>
<!-- 异步日志-INFO -->
<appender-ref
ref=
"ASYNC_FILE_INFO"
/>
<!-- 异步日志-ERROR -->
<appender-ref
ref=
"ASYNC_FILE_ERROR"
/>
</root>
</configuration>
\ No newline at end of file
scaffold/src/main/resources/archetype-resources/__rootArtifactId__-app/src/main/resources/mybatis/config/mybatis-config.xml
0 → 100644
浏览文件 @
41ae576f
#set( $symbol_pound = '#' )
#set( $symbol_dollar = '$' )
#set( $symbol_escape = '\' )
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<!-- 暂时未使用 文档:https://mybatis.org/mybatis-3/zh/configuration.html${symbol_pound}typeAliases -->
<typeAliases>
</typeAliases>
</configuration>
\ No newline at end of file
scaffold/src/main/resources/archetype-resources/__rootArtifactId__-app/src/main/resources/mybatis/mapper/user_order_mapper.xml
0 → 100644
浏览文件 @
41ae576f
#set( $symbol_pound = '#' )
#set( $symbol_dollar = '$' )
#set( $symbol_escape = '\' )
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper
namespace=
"${package}.infrastructure.persistent.dao.IUserOrderDao"
>
<resultMap
id=
"dataMap"
type=
"${package}.infrastructure.persistent.po.UserOrderPO"
>
<id
column=
"id"
property=
"id"
/>
<result
column=
"user_name"
property=
"userName"
/>
<result
column=
"user_id"
property=
"userId"
/>
<result
column=
"user_mobile"
property=
"userMobile"
/>
<result
column=
"sku"
property=
"sku"
/>
<result
column=
"sku_name"
property=
"skuName"
/>
<result
column=
"order_id"
property=
"orderId"
/>
<result
column=
"quantity"
property=
"quantity"
/>
<result
column=
"unit_price"
property=
"unitPrice"
/>
<result
column=
"discount_amount"
property=
"discountAmount"
/>
<result
column=
"tax"
property=
"tax"
/>
<result
column=
"total_amount"
property=
"totalAmount"
/>
<result
column=
"order_date"
property=
"orderDate"
/>
<result
column=
"order_status"
property=
"orderStatus"
/>
<result
column=
"is_delete"
property=
"isDelete"
/>
<result
column=
"uuid"
property=
"uuid"
/>
<result
column=
"ipv4"
property=
"ipv4"
/>
<result
column=
"ipv6"
property=
"ipv6"
/>
<result
column=
"ext_data"
property=
"extData"
/>
<result
column=
"update_time"
property=
"updateTime"
/>
</resultMap>
<select
id=
"insert"
parameterType=
"${package}.infrastructure.persistent.po.UserOrderPO"
>
INSERT INTO user_order (user_name, user_id, user_mobile, sku, sku_name,
order_id, quantity, unit_price, discount_amount, tax,
total_amount, order_date, order_status, is_delete, uuid,
ipv4, ipv6, ext_data, update_time, create_time)
VALUES (${symbol_pound}{userName}, ${symbol_pound}{userId}, ${symbol_pound}{userMobile}, ${symbol_pound}{sku}, ${symbol_pound}{skuName},
${symbol_pound}{orderId}, ${symbol_pound}{quantity}, ${symbol_pound}{unitPrice}, ${symbol_pound}{discountAmount}, ${symbol_pound}{tax},
${symbol_pound}{totalAmount}, ${symbol_pound}{orderDate}, ${symbol_pound}{orderStatus}, ${symbol_pound}{isDelete}, ${symbol_pound}{uuid},
INET_ATON(${symbol_pound}{ipv4}), INET6_ATON(${symbol_pound}{ipv6}), ${symbol_pound}{extData}, now(), now())
</select>
<update
id=
"updateOrderStatusByUserId"
parameterType=
"java.lang.String"
>
UPDATE user_order SET order_status = 1 WHERE user_id = ${symbol_pound}{userId}
</update>
<select
id=
"selectByUserId"
parameterType=
"java.lang.String"
resultMap=
"dataMap"
>
SELECT id, user_name, user_id, user_mobile, sku, sku_name,
order_id, quantity, unit_price, discount_amount, tax,
total_amount, order_date, order_status, is_delete, uuid,
ipv4, ipv6, ext_data, update_time, create_time
FROM user_order
WHERE user_id = ${symbol_pound}{userId}
</select>
</mapper>
scaffold/src/main/resources/archetype-resources/__rootArtifactId__-app/src/main/resources/sharding/sharding-jdbc-dev.yaml
0 → 100644
浏览文件 @
41ae576f
# https://shardingsphere.apache.org/index_zh.html
mode
:
# 运行模式类型。可选配置:内存模式 Memory、单机模式 Standalone、集群模式 Cluster - 目前为单机模式
type
:
Standalone
dataSources
:
ds_0
:
dataSourceClassName
:
com.zaxxer.hikari.HikariDataSource
driverClassName
:
com.mysql.cj.jdbc.Driver
jdbcUrl
:
jdbc:mysql://127.0.0.1:13306/xfg_dev_tech_db_00?useUnicode=true&characterEncoding=utf8&autoReconnect=true&zeroDateTimeBehavior=convertToNull&serverTimezone=UTC&useSSL=true
username
:
root
password
:
123456
connectionTimeoutMilliseconds
:
30000
idleTimeoutMilliseconds
:
60000
maxLifetimeMilliseconds
:
1800000
maxPoolSize
:
15
minPoolSize
:
5
ds_1
:
dataSourceClassName
:
com.zaxxer.hikari.HikariDataSource
driverClassName
:
com.mysql.cj.jdbc.Driver
jdbcUrl
:
jdbc:mysql://127.0.0.1:13306/xfg_dev_tech_db_01?useUnicode=true&characterEncoding=utf8&autoReconnect=true&zeroDateTimeBehavior=convertToNull&serverTimezone=UTC&useSSL=true
username
:
root
password
:
123456
connectionTimeoutMilliseconds
:
30000
idleTimeoutMilliseconds
:
60000
maxLifetimeMilliseconds
:
1800000
maxPoolSize
:
15
minPoolSize
:
5
rules
:
-
!SHARDING
# 库的路由
defaultDatabaseStrategy
:
standard
:
shardingColumn
:
user_id
shardingAlgorithmName
:
database_inline
# 表的路由
tables
:
user_order
:
actualDataNodes
:
ds_$->{0..1}.user_order_$->{0..3}
tableStrategy
:
standard
:
shardingColumn
:
user_id
shardingAlgorithmName
:
user_order_inline
# 路由算法
shardingAlgorithms
:
# 库-路由算法 2是两个库,库的数量。库的数量用哈希模2来计算。
database_inline
:
type
:
INLINE
props
:
algorithm-expression
:
ds_$->{Math.abs(user_id.hashCode()) % 2}
# 表-路由算法 4是一个库里,表的数量。4 - 1 为了获得 011 这样的二进制值。不推荐 user_order_$->{Math.abs(user_id.hashCode()) % 2} 作为表的路由
user_order_inline
:
type
:
INLINE
props
:
algorithm-expression
:
user_order_$->{(user_id.hashCode() ^ (user_id.hashCode()) >>> 16) & (4 - 1)}
props
:
# 是否在日志中打印 SQL。
# 打印 SQL 可以帮助开发者快速定位系统问题。日志内容包含:逻辑 SQL,真实 SQL 和 SQL 解析结果。
# 如果开启配置,日志将使用 Topic ShardingSphere-SQL,日志级别是 INFO。 false
sql-show
:
true
# 是否在日志中打印简单风格的 SQL。false
sql-simple
:
true
# 用于设置任务处理线程池的大小。每个 ShardingSphereDataSource 使用一个独立的线程池,同一个 JVM 的不同数据源不共享线程池。
executor-size
:
20
# 查询请求在每个数据库实例中所能使用的最大连接数。1
max-connections-size-per-query
:
1
# 在程序启动和更新时,是否检查分片元数据的结构一致性。
check-table-metadata-enabled
:
false
# 在程序启动和更新时,是否检查重复表。false
check-duplicate-table-enabled
:
false
\ No newline at end of file
scaffold/src/main/resources/archetype-resources/__rootArtifactId__-app/src/test/java/test/ApiTest.java
0 → 100644
浏览文件 @
41ae576f
#
set
(
$symbol_pound
=
'#'
)
#
set
(
$symbol_dollar
=
'$'
)
#
set
(
$symbol_escape
=
'\'
)
package
${
package
}.
test
;
import
lombok.extern.slf4j.Slf4j
;
import
org.junit.Test
;
import
org.junit.runner.RunWith
;
import
org.springframework.boot.test.context.SpringBootTest
;
import
org.springframework.test.context.junit4.SpringRunner
;
@Slf4j
@RunWith
(
SpringRunner
.
class
)
@SpringBootTest
public
class
ApiTest
{
@Test
public
void
test
()
{
log
.
info
(
"测试完成"
);
}
}
scaffold/src/main/resources/archetype-resources/__rootArtifactId__-app/src/test/java/test/infrastructure/persistent/UserOrderTest.java
0 → 100644
浏览文件 @
41ae576f
#
set
(
$symbol_pound
=
'#'
)
#
set
(
$symbol_dollar
=
'$'
)
#
set
(
$symbol_escape
=
'\'
)
package
${
package
}.
test
.
infrastructure
.
persistent
;
import
${
package
}.
infrastructure
.
persistent
.
dao
.
IUserOrderDao
;
import
${
package
}.
infrastructure
.
persistent
.
po
.
UserOrderPO
;
import
com.alibaba.fastjson2.JSON
;
import
lombok.extern.slf4j.Slf4j
;
import
org.apache.commons.lang3.RandomStringUtils
;
import
org.junit.Test
;
import
org.junit.runner.RunWith
;
import
org.springframework.boot.test.context.SpringBootTest
;
import
org.springframework.test.context.junit4.SpringRunner
;
import
javax.annotation.Resource
;
import
java.math.BigDecimal
;
import
java.util.Date
;
import
java.util.List
;
import
java.util.UUID
;
/**
* 单元测试
* @author Fuzhengwei bugstack.cn @小傅哥
*/
@Slf4j
@RunWith
(
SpringRunner
.
class
)
@SpringBootTest
public
class
UserOrderTest
{
@Resource
private
IUserOrderDao
userOrderDao
;
@Test
public
void
test_selectByUserId
()
{
List
<
UserOrderPO
>
list
=
userOrderDao
.
selectByUserId
(
"xfg_FOawiP"
);
log
.
info
(
"测试结果:{}"
,
JSON
.
toJSONString
(
list
));
}
@Test
public
void
test_insert
()
{
for
(
int
i
=
0
;
i
<
10
;
i
++)
{
UserOrderPO
userOrderPO
=
UserOrderPO
.
builder
()
.
userName
(
"小傅哥"
)
.
userId
(
"xfg_"
+
RandomStringUtils
.
randomAlphabetic
(
6
))
.
userMobile
(
"+86 13521408***"
)
.
sku
(
"13811216"
)
.
skuName
(
"《手写MyBatis:渐进式源码实践》"
)
.
orderId
(
RandomStringUtils
.
randomNumeric
(
11
))
.
quantity
(
1
)
.
unitPrice
(
BigDecimal
.
valueOf
(
128
))
.
discountAmount
(
BigDecimal
.
valueOf
(
50
))
.
tax
(
BigDecimal
.
ZERO
)
.
totalAmount
(
BigDecimal
.
valueOf
(
78
))
.
orderDate
(
new
Date
())
.
orderStatus
(
0
)
.
isDelete
(
0
)
.
uuid
(
UUID
.
randomUUID
().
toString
().
replace
(
"-"
,
""
))
.
ipv4
(
"127.0.0.1"
)
.
ipv6
(
"2001:0db8:85a3:0000:0000:8a2e:0370:7334"
.
getBytes
())
.
extData
(
"{${symbol_escape}"
device
$
{
symbol_escape
}
": {${symbol_escape}"
machine
$
{
symbol_escape
}
": ${symbol_escape}"
IPhone
14
Pro
$
{
symbol_escape
}
", ${symbol_escape}"
location
$
{
symbol_escape
}
": ${symbol_escape}"
shanghai
$
{
symbol_escape
}
"}}"
)
.
build
();
userOrderDao
.
insert
(
userOrderPO
);
}
}
/**
* 路由测试
*/
@Test
public
void
test_idx
()
{
for
(
int
i
=
0
;
i
<
50
;
i
++)
{
String
user_id
=
"xfg_"
+
RandomStringUtils
.
randomAlphabetic
(
6
);
log
.
info
(
"测试结果 {}"
,
(
user_id
.
hashCode
()
^
(
user_id
.
hashCode
())
>>>
16
)
&
3
);
}
}
}
scaffold/src/main/resources/archetype-resources/__rootArtifactId__-app/src/test/java/test/infrastructure/redis/RedisTest.java
0 → 100644
浏览文件 @
41ae576f
#
set
(
$symbol_pound
=
'#'
)
#
set
(
$symbol_dollar
=
'$'
)
#
set
(
$symbol_escape
=
'\'
)
package
${
package
}.
test
.
infrastructure
.
persistent
;
import
${
package
}.
infrastructure
.
redis
.
IRedisService
;
import
lombok.extern.slf4j.Slf4j
;
import
org.junit.Test
;
import
org.junit.runner.RunWith
;
import
org.redisson.api.RLock
;
import
org.springframework.boot.test.context.SpringBootTest
;
import
org.springframework.test.context.junit4.SpringRunner
;
import
javax.annotation.Resource
;
/**
* Redis 案例;<a href="https://bugstack.cn/md/road-map/redis.html">Redis</a>
* @author Fuzhengwei bugstack.cn @小傅哥
*/
@Slf4j
@RunWith
(
SpringRunner
.
class
)
@SpringBootTest
public
class
RedisTest
{
@Resource
private
IRedisService
redissonService
;
@Test
public
void
test_setValue
()
{
redissonService
.
setValue
(
"xfg"
,
"test123"
);
log
.
info
(
"设置属性值"
);
}
@Test
public
void
test_getValue
()
{
String
xfg
=
redissonService
.
getValue
(
"xfg"
);
log
.
info
(
"测试结果:{}"
,
xfg
);
}
@Test
public
void
test_remove
()
{
redissonService
.
remove
(
"60711088280"
);
}
/**
* 可重入锁,加锁和解锁。Redisson的分布式可重入锁RLock Java对象实现了java.util.concurrent.locks.Lock接口,同时还支持自动过期解锁。
* lock.lock();
* lock.lock(10, TimeUnit.SECONDS);
* lock.tryLock(3, 10, TimeUnit.SECONDS);
* lock.lockAsync();
* lock.lockAsync(10, TimeUnit.SECONDS);
* Future<Boolean> res = lock.tryLockAsync(3, 10, TimeUnit.SECONDS);
*/
@Test
public
void
test_ReentrantLock
()
throws
Exception
{
RLock
lock
=
redissonService
.
getLock
(
""
);
try
{
// 1. 最常见的使用方法
lock
.
lock
();
}
finally
{
lock
.
unlock
();
}
}
}
scaffold/src/main/resources/archetype-resources/__rootArtifactId__-domain/pom.xml
0 → 100644
浏览文件 @
41ae576f
<?xml version="1.0" encoding="UTF-8"?>
<project
xmlns=
"http://maven.apache.org/POM/4.0.0"
xmlns:xsi=
"http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation=
"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
>
<modelVersion>
4.0.0
</modelVersion>
<parent>
<groupId>
${groupId}
</groupId>
<artifactId>
${rootArtifactId}
</artifactId>
<version>
${version}
</version>
</parent>
<artifactId>
${artifactId}
</artifactId>
<dependencies>
<dependency>
<groupId>
org.projectlombok
</groupId>
<artifactId>
lombok
</artifactId>
</dependency>
<dependency>
<groupId>
com.alibaba
</groupId>
<artifactId>
fastjson
</artifactId>
</dependency>
<dependency>
<groupId>
org.apache.commons
</groupId>
<artifactId>
commons-lang3
</artifactId>
</dependency>
<dependency>
<groupId>
com.google.guava
</groupId>
<artifactId>
guava
</artifactId>
</dependency>
<dependency>
<groupId>
io.jsonwebtoken
</groupId>
<artifactId>
jjwt
</artifactId>
</dependency>
<dependency>
<groupId>
com.auth0
</groupId>
<artifactId>
java-jwt
</artifactId>
</dependency>
<dependency>
<groupId>
commons-codec
</groupId>
<artifactId>
commons-codec
</artifactId>
</dependency>
<!-- 系统模块 -->
<dependency>
<groupId>
${groupId}
</groupId>
<artifactId>
${rootArtifactId}-types
</artifactId>
</dependency>
</dependencies>
<build>
<finalName>
${rootArtifactId}-domain
</finalName>
<plugins>
<plugin>
<groupId>
org.apache.maven.plugins
</groupId>
<artifactId>
maven-archetype-plugin
</artifactId>
<version>
3.2.0
</version>
<executions>
<execution>
<goals>
<goal>
create-from-project
</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>
org.apache.maven.plugins
</groupId>
<artifactId>
maven-compiler-plugin
</artifactId>
<configuration>
<source>
${java.version}
</source>
<target>
${java.version}
</target>
<compilerVersion>
${java.version}
</compilerVersion>
</configuration>
</plugin>
</plugins>
</build>
</project>
scaffold/src/main/resources/archetype-resources/__rootArtifactId__-domain/src/main/java/domain/xxx/adapter/package-info.java
0 → 100644
浏览文件 @
41ae576f
#
set
(
$symbol_pound
=
'#'
)
#
set
(
$symbol_dollar
=
'$'
)
#
set
(
$symbol_escape
=
'\'
)
/**
* 外部接口适配器层;当需要调用外部接口时,则创建出这一层,并定义接口,之后由基础设施层的 adapter 层具体实现
*/
package
${
package
}.
domain
.
xxx
.
adapter
;
\ No newline at end of file
scaffold/src/main/resources/archetype-resources/__rootArtifactId__-domain/src/main/java/domain/xxx/model/aggregate/package-info.java
0 → 100644
浏览文件 @
41ae576f
#
set
(
$symbol_pound
=
'#'
)
#
set
(
$symbol_dollar
=
'$'
)
#
set
(
$symbol_escape
=
'\'
)
/**
* 聚合对象;
* 1. 聚合实体和值对象
* 2. 聚合是聚合的对象,和提供基础处理对象的方法。但不建议在聚合中引入仓储和接口来做过大的逻辑。而这些复杂的操作应该放到service中处理
* 3. 对象名称 XxxAggregate
*/
package
${
package
}.
domain
.
xxx
.
model
.
aggregate
;
\ No newline at end of file
scaffold/src/main/resources/archetype-resources/__rootArtifactId__-domain/src/main/java/domain/xxx/model/entity/package-info.java
0 → 100644
浏览文件 @
41ae576f
#
set
(
$symbol_pound
=
'#'
)
#
set
(
$symbol_dollar
=
'$'
)
#
set
(
$symbol_escape
=
'\'
)
/**
* 实体对象;
* 1. 一般和数据库持久化对象1v1的关系,但因各自开发系统的不同,也有1vn的可能。
* 2. 如果是老系统改造,那么旧的库表冗余了太多的字段,可能会有nv1的情况
* 3. 对象名称 XxxEntity
*/
package
${
package
}.
domain
.
xxx
.
model
.
entity
;
\ No newline at end of file
scaffold/src/main/resources/archetype-resources/__rootArtifactId__-domain/src/main/java/domain/xxx/model/valobj/package-info.java
0 → 100644
浏览文件 @
41ae576f
#
set
(
$symbol_pound
=
'#'
)
#
set
(
$symbol_dollar
=
'$'
)
#
set
(
$symbol_escape
=
'\'
)
/**
* 值对象;
* 1. 用于描述对象属性的值,如一个库表中有json后者一个字段多个属性信息的枚举对象
* 2. 对象名称如;XxxVO
*/
package
${
package
}.
domain
.
xxx
.
model
.
valobj
;
\ No newline at end of file
scaffold/src/main/resources/archetype-resources/__rootArtifactId__-domain/src/main/java/domain/xxx/repository/package-info.java
0 → 100644
浏览文件 @
41ae576f
#
set
(
$symbol_pound
=
'#'
)
#
set
(
$symbol_dollar
=
'$'
)
#
set
(
$symbol_escape
=
'\'
)
/**
* 仓储服务
* 1. 定义仓储接口,之后由基础设施层做具体实现
*/
package
${
package
}.
domain
.
xxx
.
repository
;
\ No newline at end of file
scaffold/src/main/resources/archetype-resources/__rootArtifactId__-domain/src/main/java/domain/xxx/service/package-info.java
0 → 100644
浏览文件 @
41ae576f
#
set
(
$symbol_pound
=
'#'
)
#
set
(
$symbol_dollar
=
'$'
)
#
set
(
$symbol_escape
=
'\'
)
package
${
package
}.
domain
.
xxx
.
service
;
\ No newline at end of file
scaffold/src/main/resources/archetype-resources/__rootArtifactId__-domain/src/main/java/domain/yyy/model/aggregate/package-info.java
0 → 100644
浏览文件 @
41ae576f
#
set
(
$symbol_pound
=
'#'
)
#
set
(
$symbol_dollar
=
'$'
)
#
set
(
$symbol_escape
=
'\'
)
/**
* 聚合对象;
* 1. 聚合实体和值对象
* 2. 聚合是聚合的对象,和提供基础处理对象的方法。但不建议在聚合中引入仓储和接口来做过大的逻辑。而这些复杂的操作应该放到service中处理
* 3. 对象名称 XxxAggregate
*/
package
${
package
}.
domain
.
yyy
.
model
.
aggregate
;
\ No newline at end of file
scaffold/src/main/resources/archetype-resources/__rootArtifactId__-domain/src/main/java/domain/yyy/model/entity/package-info.java
0 → 100644
浏览文件 @
41ae576f
#
set
(
$symbol_pound
=
'#'
)
#
set
(
$symbol_dollar
=
'$'
)
#
set
(
$symbol_escape
=
'\'
)
/**
* 实体对象;
* 1. 一般和数据库持久化对象1v1的关系,但因各自开发系统的不同,也有1vn的可能。
* 2. 如果是老系统改造,那么旧的库表冗余了太多的字段,可能会有nv1的情况
* 3. 对象名称 XxxEntity
*/
package
${
package
}.
domain
.
yyy
.
model
.
entity
;
\ No newline at end of file
scaffold/src/main/resources/archetype-resources/__rootArtifactId__-domain/src/main/java/domain/yyy/model/valobj/package-info.java
0 → 100644
浏览文件 @
41ae576f
#
set
(
$symbol_pound
=
'#'
)
#
set
(
$symbol_dollar
=
'$'
)
#
set
(
$symbol_escape
=
'\'
)
/**
* 值对象;
* 1. 用于描述对象属性的值,如一个库表中有json后者一个字段多个属性信息的枚举对象
* 2. 对象名称如;XxxVO
*/
package
${
package
}.
domain
.
yyy
.
model
.
valobj
;
\ No newline at end of file
scaffold/src/main/resources/archetype-resources/__rootArtifactId__-domain/src/main/java/domain/yyy/repository/package-info.java
0 → 100644
浏览文件 @
41ae576f
#
set
(
$symbol_pound
=
'#'
)
#
set
(
$symbol_dollar
=
'$'
)
#
set
(
$symbol_escape
=
'\'
)
/**
* 仓储服务
* 1. 定义仓储接口,之后由基础设施层做具体实现
*/
package
${
package
}.
domain
.
yyy
.
repository
;
\ No newline at end of file
scaffold/src/main/resources/archetype-resources/__rootArtifactId__-domain/src/main/java/domain/yyy/service/package-info.java
0 → 100644
浏览文件 @
41ae576f
#
set
(
$symbol_pound
=
'#'
)
#
set
(
$symbol_dollar
=
'$'
)
#
set
(
$symbol_escape
=
'\'
)
package
${
package
}.
domain
.
yyy
.
service
;
\ No newline at end of file
scaffold/src/main/resources/archetype-resources/__rootArtifactId__-infrastructure/pom.xml
0 → 100644
浏览文件 @
41ae576f
<?xml version="1.0" encoding="UTF-8"?>
<project
xmlns=
"http://maven.apache.org/POM/4.0.0"
xmlns:xsi=
"http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation=
"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
>
<modelVersion>
4.0.0
</modelVersion>
<parent>
<groupId>
${groupId}
</groupId>
<artifactId>
${rootArtifactId}
</artifactId>
<version>
${version}
</version>
</parent>
<artifactId>
${artifactId}
</artifactId>
<dependencies>
<dependency>
<groupId>
org.mybatis.spring.boot
</groupId>
<artifactId>
mybatis-spring-boot-starter
</artifactId>
</dependency>
<dependency>
<groupId>
org.projectlombok
</groupId>
<artifactId>
lombok
</artifactId>
</dependency>
<dependency>
<groupId>
org.redisson
</groupId>
<artifactId>
redisson-spring-boot-starter
</artifactId>
</dependency>
<!-- 系统模块 -->
<dependency>
<groupId>
${groupId}
</groupId>
<artifactId>
${rootArtifactId}-domain
</artifactId>
</dependency>
</dependencies>
<build>
<finalName>
${rootArtifactId}-infrastructure
</finalName>
<plugins>
<plugin>
<groupId>
org.apache.maven.plugins
</groupId>
<artifactId>
maven-archetype-plugin
</artifactId>
<version>
3.2.0
</version>
<executions>
<execution>
<goals>
<goal>
create-from-project
</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>
scaffold/src/main/resources/archetype-resources/__rootArtifactId__-infrastructure/src/main/java/infrastructure/gateway/adapter/package-info.java
0 → 100644
浏览文件 @
41ae576f
#
set
(
$symbol_pound
=
'#'
)
#
set
(
$symbol_dollar
=
'$'
)
#
set
(
$symbol_escape
=
'\'
)
package
${
package
}.
infrastructure
.
gateway
.
adapter
;
\ No newline at end of file
scaffold/src/main/resources/archetype-resources/__rootArtifactId__-infrastructure/src/main/java/infrastructure/gateway/api/package-info.java
0 → 100644
浏览文件 @
41ae576f
#
set
(
$symbol_pound
=
'#'
)
#
set
(
$symbol_dollar
=
'$'
)
#
set
(
$symbol_escape
=
'\'
)
package
${
package
}.
infrastructure
.
gateway
.
api
;
\ No newline at end of file
scaffold/src/main/resources/archetype-resources/__rootArtifactId__-infrastructure/src/main/java/infrastructure/gateway/dto/package-info.java
0 → 100644
浏览文件 @
41ae576f
#
set
(
$symbol_pound
=
'#'
)
#
set
(
$symbol_dollar
=
'$'
)
#
set
(
$symbol_escape
=
'\'
)
package
${
package
}.
infrastructure
.
gateway
.
dto
;
\ No newline at end of file
scaffold/src/main/resources/archetype-resources/__rootArtifactId__-infrastructure/src/main/java/infrastructure/persistent/dao/IUserOrderDao.java
0 → 100644
浏览文件 @
41ae576f
#
set
(
$symbol_pound
=
'#'
)
#
set
(
$symbol_dollar
=
'$'
)
#
set
(
$symbol_escape
=
'\'
)
package
${
package
}.
infrastructure
.
persistent
.
dao
;
import
${
package
}.
infrastructure
.
persistent
.
po
.
UserOrderPO
;
import
org.apache.ibatis.annotations.Mapper
;
import
java.util.List
;
@Mapper
public
interface
IUserOrderDao
{
void
insert
(
UserOrderPO
userOrderPO
);
void
updateOrderStatusByUserId
(
String
userId
);
List
<
UserOrderPO
>
selectByUserId
(
String
userId
);
}
scaffold/src/main/resources/archetype-resources/__rootArtifactId__-infrastructure/src/main/java/infrastructure/persistent/dao/package-info.java
0 → 100644
浏览文件 @
41ae576f
#
set
(
$symbol_pound
=
'#'
)
#
set
(
$symbol_dollar
=
'$'
)
#
set
(
$symbol_escape
=
'\'
)
/**
* DAO 接口;IXxxDao
*/
package
${
package
}.
infrastructure
.
persistent
.
dao
;
\ No newline at end of file
scaffold/src/main/resources/archetype-resources/__rootArtifactId__-infrastructure/src/main/java/infrastructure/persistent/po/UserOrderPO.java
0 → 100644
浏览文件 @
41ae576f
#
set
(
$symbol_pound
=
'#'
)
#
set
(
$symbol_dollar
=
'$'
)
#
set
(
$symbol_escape
=
'\'
)
package
${
package
}.
infrastructure
.
persistent
.
po
;
import
lombok.AllArgsConstructor
;
import
lombok.Builder
;
import
lombok.Data
;
import
lombok.NoArgsConstructor
;
import
java.math.BigDecimal
;
import
java.util.Date
;
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public
class
UserOrderPO
{
/** 自增ID */
private
Long
id
;
/** 用户姓名 */
private
String
userName
;
/** 用户编号 */
private
String
userId
;
/** 用户电话 */
private
String
userMobile
;
/** 商品编号 */
private
String
sku
;
/** 商品名称 */
private
String
skuName
;
/** 订单ID */
private
String
orderId
;
/** 商品数量 */
private
int
quantity
;
/** 商品价格 */
private
BigDecimal
unitPrice
;
/** 折扣金额 */
private
BigDecimal
discountAmount
;
/** 费率金额 */
private
BigDecimal
tax
;
/** 支付金额 */
private
BigDecimal
totalAmount
;
/** 订单日期 */
private
Date
orderDate
;
/** 订单状态 */
private
int
orderStatus
;
/** 逻辑删单 */
private
int
isDelete
;
/** 唯一索引 */
private
String
uuid
;
/** 设备地址 */
private
String
ipv4
;
/** 设备地址 */
private
byte
[]
ipv6
;
/** 扩展数据 */
private
String
extData
;
/** 更新时间 */
private
Date
updateTime
;
/** 创建时间 */
private
Date
createTime
;
}
scaffold/src/main/resources/archetype-resources/__rootArtifactId__-infrastructure/src/main/java/infrastructure/persistent/po/package-info.java
0 → 100644
浏览文件 @
41ae576f
#
set
(
$symbol_pound
=
'#'
)
#
set
(
$symbol_dollar
=
'$'
)
#
set
(
$symbol_escape
=
'\'
)
/**
* 持久化对象;XxxPO 最后的 PO 是大写,UserPO
*/
package
${
package
}.
infrastructure
.
persistent
.
po
;
\ No newline at end of file
scaffold/src/main/resources/archetype-resources/__rootArtifactId__-infrastructure/src/main/java/infrastructure/persistent/repository/package-info.java
0 → 100644
浏览文件 @
41ae576f
#
set
(
$symbol_pound
=
'#'
)
#
set
(
$symbol_dollar
=
'$'
)
#
set
(
$symbol_escape
=
'\'
)
/**
* 仓储实现;用于实现 domain 中定义的仓储接口,如;IXxxRepository 在 Repository 中调用服务
*/
package
${
package
}.
infrastructure
.
persistent
.
repository
;
\ No newline at end of file
scaffold/src/main/resources/archetype-resources/__rootArtifactId__-infrastructure/src/main/java/infrastructure/redis/IRedisService.java
0 → 100644
浏览文件 @
41ae576f
#
set
(
$symbol_pound
=
'#'
)
#
set
(
$symbol_dollar
=
'$'
)
#
set
(
$symbol_escape
=
'\'
)
package
${
package
}.
infrastructure
.
redis
;
import
org.redisson.api.*
;
/**
* Redis 服务
* @author Fuzhengwei bugstack.cn @小傅哥
*/
public
interface
IRedisService
{
/**
* 设置指定 key 的值
*
* @param key 键
* @param value 值
*/
<
T
>
void
setValue
(
String
key
,
T
value
);
/**
* 设置指定 key 的值
*
* @param key 键
* @param value 值
* @param expired 过期时间
*/
<
T
>
void
setValue
(
String
key
,
T
value
,
long
expired
);
/**
* 获取指定 key 的值
*
* @param key 键
* @return 值
*/
<
T
>
T
getValue
(
String
key
);
/**
* 获取队列
*
* @param key 键
* @param <T> 泛型
* @return 队列
*/
<
T
>
RQueue
<
T
>
getQueue
(
String
key
);
/**
* 加锁队列
*
* @param key 键
* @param <T> 泛型
* @return 队列
*/
<
T
>
RBlockingQueue
<
T
>
getBlockingQueue
(
String
key
);
/**
* 延迟队列
*
* @param rBlockingQueue 加锁队列
* @param <T> 泛型
* @return 队列
*/
<
T
>
RDelayedQueue
<
T
>
getDelayedQueue
(
RBlockingQueue
<
T
>
rBlockingQueue
);
/**
* 自增 Key 的值;1、2、3、4
*
* @param key 键
* @return 自增后的值
*/
long
incr
(
String
key
);
/**
* 指定值,自增 Key 的值;1、2、3、4
*
* @param key 键
* @return 自增后的值
*/
long
incrBy
(
String
key
,
long
delta
);
/**
* 自减 Key 的值;1、2、3、4
*
* @param key 键
* @return 自增后的值
*/
long
decr
(
String
key
);
/**
* 指定值,自增 Key 的值;1、2、3、4
*
* @param key 键
* @return 自增后的值
*/
long
decrBy
(
String
key
,
long
delta
);
/**
* 移除指定 key 的值
*
* @param key 键
*/
void
remove
(
String
key
);
/**
* 判断指定 key 的值是否存在
*
* @param key 键
* @return true/false
*/
boolean
isExists
(
String
key
);
/**
* 将指定的值添加到集合中
*
* @param key 键
* @param value 值
*/
void
addToSet
(
String
key
,
String
value
);
/**
* 判断指定的值是否是集合的成员
*
* @param key 键
* @param value 值
* @return 如果是集合的成员返回 true,否则返回 false
*/
boolean
isSetMember
(
String
key
,
String
value
);
/**
* 将指定的值添加到列表中
*
* @param key 键
* @param value 值
*/
void
addToList
(
String
key
,
String
value
);
/**
* 获取列表中指定索引的值
*
* @param key 键
* @param index 索引
* @return 值
*/
String
getFromList
(
String
key
,
int
index
);
/**
* 将指定的键值对添加到哈希表中
*
* @param key 键
* @param field 字段
* @param value 值
*/
void
addToMap
(
String
key
,
String
field
,
String
value
);
/**
* 获取哈希表中指定字段的值
*
* @param key 键
* @param field 字段
* @return 值
*/
String
getFromMap
(
String
key
,
String
field
);
/**
* 将指定的值添加到有序集合中
*
* @param key 键
* @param value 值
*/
void
addToSortedSet
(
String
key
,
String
value
);
/**
* 获取 Redis 锁(可重入锁)
*
* @param key 键
* @return Lock
*/
RLock
getLock
(
String
key
);
/**
* 获取 Redis 锁(公平锁)
*
* @param key 键
* @return Lock
*/
RLock
getFairLock
(
String
key
);
/**
* 获取 Redis 锁(读写锁)
*
* @param key 键
* @return RReadWriteLock
*/
RReadWriteLock
getReadWriteLock
(
String
key
);
/**
* 获取 Redis 信号量
*
* @param key 键
* @return RSemaphore
*/
RSemaphore
getSemaphore
(
String
key
);
/**
* 获取 Redis 过期信号量
* <p>
* 基于Redis的Redisson的分布式信号量(Semaphore)Java对象RSemaphore采用了与java.util.concurrent.Semaphore相似的接口和用法。
* 同时还提供了异步(Async)、反射式(Reactive)和RxJava2标准的接口。
*
* @param key 键
* @return RPermitExpirableSemaphore
*/
RPermitExpirableSemaphore
getPermitExpirableSemaphore
(
String
key
);
/**
* 闭锁
*
* @param key 键
* @return RCountDownLatch
*/
RCountDownLatch
getCountDownLatch
(
String
key
);
/**
* 布隆过滤器
*
* @param key 键
* @param <T> 存放对象
* @return 返回结果
*/
<
T
>
RBloomFilter
<
T
>
getBloomFilter
(
String
key
);
}
scaffold/src/main/resources/archetype-resources/__rootArtifactId__-infrastructure/src/main/java/infrastructure/redis/RedissonService.java
0 → 100644
浏览文件 @
41ae576f
#
set
(
$symbol_pound
=
'#'
)
#
set
(
$symbol_dollar
=
'$'
)
#
set
(
$symbol_escape
=
'\'
)
package
${
package
}.
infrastructure
.
redis
;
import
org.redisson.api.*
;
import
org.springframework.stereotype.Service
;
import
javax.annotation.Resource
;
import
java.time.Duration
;
/**
* Redis 服务 - Redisson
* @author Fuzhengwei bugstack.cn @小傅哥
*/
@Service
(
"redissonService"
)
public
class
RedissonService
implements
IRedisService
{
@Resource
private
RedissonClient
redissonClient
;
public
<
T
>
void
setValue
(
String
key
,
T
value
)
{
redissonClient
.<
T
>
getBucket
(
key
).
set
(
value
);
}
@Override
public
<
T
>
void
setValue
(
String
key
,
T
value
,
long
expired
)
{
RBucket
<
T
>
bucket
=
redissonClient
.
getBucket
(
key
);
bucket
.
set
(
value
,
Duration
.
ofMillis
(
expired
));
}
public
<
T
>
T
getValue
(
String
key
)
{
return
redissonClient
.<
T
>
getBucket
(
key
).
get
();
}
@Override
public
<
T
>
RQueue
<
T
>
getQueue
(
String
key
)
{
return
redissonClient
.
getQueue
(
key
);
}
@Override
public
<
T
>
RBlockingQueue
<
T
>
getBlockingQueue
(
String
key
)
{
return
redissonClient
.
getBlockingQueue
(
key
);
}
@Override
public
<
T
>
RDelayedQueue
<
T
>
getDelayedQueue
(
RBlockingQueue
<
T
>
rBlockingQueue
)
{
return
redissonClient
.
getDelayedQueue
(
rBlockingQueue
);
}
@Override
public
long
incr
(
String
key
)
{
return
redissonClient
.
getAtomicLong
(
key
).
incrementAndGet
();
}
@Override
public
long
incrBy
(
String
key
,
long
delta
)
{
return
redissonClient
.
getAtomicLong
(
key
).
addAndGet
(
delta
);
}
@Override
public
long
decr
(
String
key
)
{
return
redissonClient
.
getAtomicLong
(
key
).
decrementAndGet
();
}
@Override
public
long
decrBy
(
String
key
,
long
delta
)
{
return
redissonClient
.
getAtomicLong
(
key
).
addAndGet
(-
delta
);
}
@Override
public
void
remove
(
String
key
)
{
redissonClient
.
getBucket
(
key
).
delete
();
}
@Override
public
boolean
isExists
(
String
key
)
{
return
redissonClient
.
getBucket
(
key
).
isExists
();
}
public
void
addToSet
(
String
key
,
String
value
)
{
RSet
<
String
>
set
=
redissonClient
.
getSet
(
key
);
set
.
add
(
value
);
}
public
boolean
isSetMember
(
String
key
,
String
value
)
{
RSet
<
String
>
set
=
redissonClient
.
getSet
(
key
);
return
set
.
contains
(
value
);
}
public
void
addToList
(
String
key
,
String
value
)
{
RList
<
String
>
list
=
redissonClient
.
getList
(
key
);
list
.
add
(
value
);
}
public
String
getFromList
(
String
key
,
int
index
)
{
RList
<
String
>
list
=
redissonClient
.
getList
(
key
);
return
list
.
get
(
index
);
}
public
void
addToMap
(
String
key
,
String
field
,
String
value
)
{
RMap
<
String
,
String
>
map
=
redissonClient
.
getMap
(
key
);
map
.
put
(
field
,
value
);
}
public
String
getFromMap
(
String
key
,
String
field
)
{
RMap
<
String
,
String
>
map
=
redissonClient
.
getMap
(
key
);
return
map
.
get
(
field
);
}
public
void
addToSortedSet
(
String
key
,
String
value
)
{
RSortedSet
<
String
>
sortedSet
=
redissonClient
.
getSortedSet
(
key
);
sortedSet
.
add
(
value
);
}
@Override
public
RLock
getLock
(
String
key
)
{
return
redissonClient
.
getLock
(
key
);
}
@Override
public
RLock
getFairLock
(
String
key
)
{
return
redissonClient
.
getFairLock
(
key
);
}
@Override
public
RReadWriteLock
getReadWriteLock
(
String
key
)
{
return
redissonClient
.
getReadWriteLock
(
key
);
}
@Override
public
RSemaphore
getSemaphore
(
String
key
)
{
return
redissonClient
.
getSemaphore
(
key
);
}
@Override
public
RPermitExpirableSemaphore
getPermitExpirableSemaphore
(
String
key
)
{
return
redissonClient
.
getPermitExpirableSemaphore
(
key
);
}
@Override
public
RCountDownLatch
getCountDownLatch
(
String
key
)
{
return
redissonClient
.
getCountDownLatch
(
key
);
}
@Override
public
<
T
>
RBloomFilter
<
T
>
getBloomFilter
(
String
key
)
{
return
redissonClient
.
getBloomFilter
(
key
);
}
}
scaffold/src/main/resources/archetype-resources/__rootArtifactId__-trigger/pom.xml
0 → 100644
浏览文件 @
41ae576f
<?xml version="1.0" encoding="UTF-8"?>
<project
xmlns=
"http://maven.apache.org/POM/4.0.0"
xmlns:xsi=
"http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation=
"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
>
<modelVersion>
4.0.0
</modelVersion>
<parent>
<groupId>
${groupId}
</groupId>
<artifactId>
${rootArtifactId}
</artifactId>
<version>
${version}
</version>
</parent>
<artifactId>
${artifactId}
</artifactId>
<dependencies>
<dependency>
<groupId>
org.springframework.boot
</groupId>
<artifactId>
spring-boot-starter-web
</artifactId>
</dependency>
<dependency>
<groupId>
com.alibaba
</groupId>
<artifactId>
fastjson
</artifactId>
</dependency>
<dependency>
<groupId>
org.springframework
</groupId>
<artifactId>
spring-tx
</artifactId>
</dependency>
<dependency>
<groupId>
org.apache.commons
</groupId>
<artifactId>
commons-lang3
</artifactId>
</dependency>
<dependency>
<groupId>
org.apache.dubbo
</groupId>
<artifactId>
dubbo
</artifactId>
</dependency>
<dependency>
<groupId>
org.apache.dubbo
</groupId>
<artifactId>
dubbo-spring-boot-starter
</artifactId>
</dependency>
<dependency>
<groupId>
com.xuxueli
</groupId>
<artifactId>
xxl-job-core
</artifactId>
</dependency>
<dependency>
<groupId>
org.apache.rocketmq
</groupId>
<artifactId>
rocketmq-client-java
</artifactId>
</dependency>
<dependency>
<groupId>
org.apache.rocketmq
</groupId>
<artifactId>
rocketmq-spring-boot-starter
</artifactId>
</dependency>
<!-- 系统模块 -->
<dependency>
<groupId>
${groupId}
</groupId>
<artifactId>
${rootArtifactId}-types
</artifactId>
</dependency>
<dependency>
<groupId>
${groupId}
</groupId>
<artifactId>
${rootArtifactId}-domain
</artifactId>
</dependency>
<dependency>
<groupId>
${groupId}
</groupId>
<artifactId>
${rootArtifactId}-api
</artifactId>
</dependency>
</dependencies>
<build>
<finalName>
${rootArtifactId}-trigger
</finalName>
<plugins>
<plugin>
<groupId>
org.apache.maven.plugins
</groupId>
<artifactId>
maven-archetype-plugin
</artifactId>
<version>
3.2.0
</version>
<executions>
<execution>
<goals>
<goal>
create-from-project
</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>
scaffold/src/main/resources/archetype-resources/__rootArtifactId__-trigger/src/main/java/trigger/http/Controller.java
0 → 100644
浏览文件 @
41ae576f
#
set
(
$symbol_pound
=
'#'
)
#
set
(
$symbol_dollar
=
'$'
)
#
set
(
$symbol_escape
=
'\'
)
package
${
package
}.
xfg
.
frame
.
trigger
.
http
;
import
${
package
}.
types
.
common
.
Constants
;
import
${
package
}.
types
.
model
.
Response
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.web.bind.annotation.RequestMapping
;
import
org.springframework.web.bind.annotation.RestController
;
import
javax.annotation.Resource
;
import
java.util.Random
;
import
java.util.concurrent.ThreadPoolExecutor
;
@Slf4j
@RestController
public
class
Controller
{
@Resource
private
ThreadPoolExecutor
threadPoolExecutor
;
/**
* http://localhost:8090/success
*/
@RequestMapping
(
"/success"
)
public
Response
<
String
>
success
()
{
log
.
info
(
"测试调用"
);
try
{
// 随机休眠
Thread
.
sleep
(
new
Random
().
nextInt
(
1000
));
// 开启线程
threadPoolExecutor
.
execute
(()
->
{
log
.
info
(
"开启线程"
);
});
}
catch
(
InterruptedException
e
)
{
throw
new
RuntimeException
(
e
);
}
if
(
new
Random
().
nextInt
(
100
)
==
1
)
throw
new
RuntimeException
(
"异常"
);
return
Response
.<
String
>
builder
()
.
code
(
Constants
.
ResponseCode
.
SUCCESS
.
getCode
())
.
info
(
Constants
.
ResponseCode
.
SUCCESS
.
getInfo
())
.
data
(
"查询用户信息,小傅哥"
)
.
build
();
}
}
scaffold/src/main/resources/archetype-resources/__rootArtifactId__-trigger/src/main/java/trigger/job/XXLJob.java
0 → 100644
浏览文件 @
41ae576f
#
set
(
$symbol_pound
=
'#'
)
#
set
(
$symbol_dollar
=
'$'
)
#
set
(
$symbol_escape
=
'\'
)
package
${
package
}.
trigger
.
job
;
import
com.xxl.job.core.handler.annotation.XxlJob
;
import
lombok.Setter
;
import
lombok.extern.slf4j.Slf4j
;
import
org.apache.rocketmq.spring.core.RocketMQTemplate
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Component
;
/**
* XXL-Job
*/
@Slf4j
@Component
public
class
XXLJob
{
@Setter
(
onMethod_
=
@Autowired
)
private
RocketMQTemplate
rocketmqTemplate
;
@XxlJob
(
"demoJobHandler"
)
public
void
doJob
()
{
// 可以在任务中,调用一些业务方法逻辑的实现,如定时扫描超时未支付订单为关单处理,恢复库存
log
.
info
(
"执行任务 - XXL-Job - 01 发送一条MQ消息"
);
// 发送MQ消息
rocketmqTemplate
.
convertAndSend
(
"xfg-mq"
,
"我是测试消息"
);
}
}
scaffold/src/main/resources/archetype-resources/__rootArtifactId__-trigger/src/main/java/trigger/listener/MQListener.java
0 → 100644
浏览文件 @
41ae576f
#
set
(
$symbol_pound
=
'#'
)
#
set
(
$symbol_dollar
=
'$'
)
#
set
(
$symbol_escape
=
'\'
)
package
${
package
}.
trigger
.
listener
;
import
lombok.extern.slf4j.Slf4j
;
import
org.apache.rocketmq.spring.annotation.RocketMQMessageListener
;
import
org.apache.rocketmq.spring.core.RocketMQListener
;
import
org.springframework.stereotype.Component
;
/**
* RocketMQ 接收消息
* @author Fuzhengwei bugstack.cn @小傅哥
*/
@Component
@Slf4j
@RocketMQMessageListener
(
topic
=
"xfg-mq"
,
consumerGroup
=
"xfg-group"
)
public
class
MQListener
implements
RocketMQListener
<
String
>
{
@Override
public
void
onMessage
(
String
s
)
{
log
.
info
(
"接收到RocketMQ消息 {}"
,
s
);
}
}
scaffold/src/main/resources/archetype-resources/__rootArtifactId__-trigger/src/main/java/trigger/package-info.java
0 → 100644
浏览文件 @
41ae576f
#
set
(
$symbol_pound
=
'#'
)
#
set
(
$symbol_dollar
=
'$'
)
#
set
(
$symbol_escape
=
'\'
)
/**
* http 提供服务
* job xxl-job 任务调度
* listener RocketMQ 监听
* rpc Dubbo 接口,实现RPC服务
*/
package
${
package
}.
trigger
;
\ No newline at end of file
scaffold/src/main/resources/archetype-resources/__rootArtifactId__-trigger/src/main/java/trigger/rpc/UserService.java
0 → 100644
浏览文件 @
41ae576f
#
set
(
$symbol_pound
=
'#'
)
#
set
(
$symbol_dollar
=
'$'
)
#
set
(
$symbol_escape
=
'\'
)
package
${
package
}.
trigger
.
rpc
;
import
${
package
}.
api
.
IUserService
;
import
lombok.extern.slf4j.Slf4j
;
import
org.apache.dubbo.config.annotation.DubboService
;
@Slf4j
@DubboService
(
version
=
"1.0.0"
,
timeout
=
450
)
public
class
UserService
implements
IUserService
{
@Override
public
String
queryUserInfo
(
String
req
)
{
return
"查询用户信息"
;
}
}
scaffold/src/main/resources/archetype-resources/__rootArtifactId__-types/pom.xml
0 → 100644
浏览文件 @
41ae576f
<?xml version="1.0" encoding="UTF-8"?>
<project
xmlns=
"http://maven.apache.org/POM/4.0.0"
xmlns:xsi=
"http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation=
"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
>
<modelVersion>
4.0.0
</modelVersion>
<parent>
<groupId>
${groupId}
</groupId>
<artifactId>
${rootArtifactId}
</artifactId>
<version>
${version}
</version>
</parent>
<artifactId>
${artifactId}
</artifactId>
<dependencies>
<dependency>
<groupId>
org.springframework.boot
</groupId>
<artifactId>
spring-boot-starter-web
</artifactId>
</dependency>
<dependency>
<groupId>
org.projectlombok
</groupId>
<artifactId>
lombok
</artifactId>
</dependency>
<dependency>
<groupId>
com.thoughtworks.xstream
</groupId>
<artifactId>
xstream
</artifactId>
</dependency>
<dependency>
<groupId>
dom4j
</groupId>
<artifactId>
dom4j
</artifactId>
</dependency>
<dependency>
<groupId>
org.apache.commons
</groupId>
<artifactId>
commons-lang3
</artifactId>
</dependency>
</dependencies>
<build>
<finalName>
${rootArtifactId}-types
</finalName>
<plugins>
<plugin>
<groupId>
org.apache.maven.plugins
</groupId>
<artifactId>
maven-archetype-plugin
</artifactId>
<version>
3.2.0
</version>
<executions>
<execution>
<goals>
<goal>
create-from-project
</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>
scaffold/src/main/resources/archetype-resources/__rootArtifactId__-types/src/main/java/types/common/Constants.java
0 → 100644
浏览文件 @
41ae576f
#
set
(
$symbol_pound
=
'#'
)
#
set
(
$symbol_dollar
=
'$'
)
#
set
(
$symbol_escape
=
'\'
)
package
${
package
}.
types
.
common
;
import
lombok.AllArgsConstructor
;
import
lombok.Getter
;
import
lombok.NoArgsConstructor
;
public
class
Constants
{
public
final
static
String
SPLIT
=
","
;
@AllArgsConstructor
@NoArgsConstructor
@Getter
public
enum
ResponseCode
{
SUCCESS
(
"0000"
,
"成功"
),
UN_ERROR
(
"0001"
,
"未知失败"
),
ILLEGAL_PARAMETER
(
"0002"
,
"非法参数"
),
;
private
String
code
;
private
String
info
;
}
}
scaffold/src/main/resources/archetype-resources/__rootArtifactId__-types/src/main/java/types/exception/AppException.java
0 → 100644
浏览文件 @
41ae576f
#
set
(
$symbol_pound
=
'#'
)
#
set
(
$symbol_dollar
=
'$'
)
#
set
(
$symbol_escape
=
'\'
)
package
${
package
}.
types
.
exception
;
import
lombok.Data
;
import
lombok.EqualsAndHashCode
;
@EqualsAndHashCode
(
callSuper
=
true
)
@Data
public
class
AppException
extends
RuntimeException
{
private
static
final
long
serialVersionUID
=
5317680961212299217L
;
/** 异常码 */
private
String
code
;
/** 异常信息 */
private
String
info
;
public
AppException
(
String
code
)
{
this
.
code
=
code
;
}
public
AppException
(
String
code
,
Throwable
cause
)
{
this
.
code
=
code
;
super
.
initCause
(
cause
);
}
public
AppException
(
String
code
,
String
message
)
{
this
.
code
=
code
;
this
.
info
=
message
;
}
public
AppException
(
String
code
,
String
message
,
Throwable
cause
)
{
this
.
code
=
code
;
this
.
info
=
message
;
super
.
initCause
(
cause
);
}
@Override
public
String
toString
()
{
return
"${package}.x.api.types.exception.XApiException{"
+
"code='"
+
code
+
'$
{
symbol_escape
}
''
+
", info='"
+
info
+
'$
{
symbol_escape
}
''
+
'}'
;
}
}
scaffold/src/main/resources/archetype-resources/__rootArtifactId__-types/src/main/java/types/model/Response.java
0 → 100644
浏览文件 @
41ae576f
#
set
(
$symbol_pound
=
'#'
)
#
set
(
$symbol_dollar
=
'$'
)
#
set
(
$symbol_escape
=
'\'
)
package
${
package
}.
types
.
model
;
import
lombok.AllArgsConstructor
;
import
lombok.Builder
;
import
lombok.Data
;
import
lombok.NoArgsConstructor
;
import
java.io.Serializable
;
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public
class
Response
<
T
>
implements
Serializable
{
private
static
final
long
serialVersionUID
=
5130392244064623509L
;
private
String
code
;
private
String
info
;
private
T
data
;
}
\ No newline at end of file
scaffold/src/main/resources/archetype-resources/docs/dev-ops/app/docker-compose-1.0.yml
0 → 100644
浏览文件 @
41ae576f
# /usr/local/bin/docker-compose -f /docs/dev-ops/environment/environment-docker-compose-2.4.yml up -d
version
:
'
3.8'
# docker-compose -f docker-compose-1.0.yml up -d
# 你需要修改system为你自身系统的仓库名
services
:
x-api-app
:
image
:
system/${artifactId}:${version}
container_name
:
${artifactId}
restart
:
on-failure
ports
:
-
"
8091:8091"
environment
:
-
TZ=PRC
-
SERVER_PORT=8091
volumes
:
-
./log:/data/log
logging
:
driver
:
"
json-file"
options
:
max-size
:
"
10m"
max-file
:
"
3"
\ No newline at end of file
scaffold/src/main/resources/archetype-resources/docs/dev-ops/app/start.sh
0 → 100644
浏览文件 @
41ae576f
CONTAINER_NAME
=
${
artifactId
}
IMAGE_NAME
=
system/
${
artifactId
}
:
${
version
}
PORT
=
8091
echo
"容器部署开始
${
CONTAINER_NAME
}
"
# 停止容器
docker stop
${
CONTAINER_NAME
}
# 删除容器
docker
rm
${
CONTAINER_NAME
}
# 启动容器
docker run
--name
${
CONTAINER_NAME
}
\
-p
${
PORT
}
:
${
PORT
}
\
-d
${
IMAGE_NAME
}
echo
"容器部署成功
${
CONTAINER_NAME
}
"
docker logs
-f
${
CONTAINER_NAME
}
\ No newline at end of file
scaffold/src/main/resources/archetype-resources/docs/dev-ops/app/stop.sh
0 → 100644
浏览文件 @
41ae576f
docker stop
${
artifactId
}
\ No newline at end of file
scaffold/src/main/resources/archetype-resources/docs/dev-ops/environment/docker-compose.yml
0 → 100644
浏览文件 @
41ae576f
# 命令执行 docker-compose up -d
version
:
'
3.9'
# 安装开发环境
# 配置中心nacos:http://127.0.0.1:8848/nacos - 【账号:nacos 密码:nacos】
# 消息rocketmq:http://localhost:8080/#/ - 【账号:admin 密码:admin】
# 任务调度xxl-job-admin:http://127.0.0.1:9090/xxl-job-admin/ - 【账号:admin 密码:123456】
# 数据库mysql
# 缓存redis
services
:
# 注册中心 https://github.com/nacos-group/nacos-docker - 其他配置可参考(集群)
# http://127.0.0.1:8848/nacos 【账号:nacos 密码:nacos】
nacos
:
image
:
nacos/nacos-server:v2.2.3-slim
container_name
:
nacos
restart
:
always
ports
:
-
"
8848:8848"
-
"
9848:9848"
environment
:
-
PREFER_HOST_MODE=hostname
-
MODE=standalone
-
SPRING_DATASOURCE_PLATFORM=mysql
-
MYSQL_SERVICE_HOST=mysql
-
MYSQL_SERVICE_DB_NAME=nacos_config
-
MYSQL_SERVICE_PORT=3306
-
MYSQL_SERVICE_USER=root
-
MYSQL_SERVICE_PASSWORD=123456
-
MYSQL_SERVICE_DB_PARAM=characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useSSL=false&allowPublicKeyRetrieval=true
-
NACOS_AUTH_IDENTITY_KEY=2222
-
NACOS_AUTH_IDENTITY_VALUE=2xxx
-
NACOS_AUTH_TOKEN=SecretKey012345678901234567890123456789012345678901234567890123456789
networks
:
-
my-network
depends_on
:
mysql
:
condition
:
service_healthy
# http://127.0.0.1:9090/xxl-job-admin admin/123456 - 安装后稍等会访问即可
# 官网镜像为 xuxueli/xxl-job-admin:2.4.0 但不支持ARM架构【需要自己打包】,所以找了一个 kuschzzp/xxl-job-aarch64:2.4.0 镜像支持 AMD/ARM
xxl-job-admin
:
image
:
xuxueli/xxl-job-admin:2.4.0
container_name
:
xxl-job-admin
restart
:
always
depends_on
:
mysql
:
condition
:
service_healthy
ports
:
-
"
9090:9090"
links
:
-
mysql
volumes
:
-
./data/logs:/data/applogs
-
./data/xxl-job/:/xxl-job
environment
:
-
SPRING_DATASOURCE_URL=jdbc:mysql://mysql:3306/xxl_job?serverTimezone=UTC&characterEncoding=utf8&autoReconnect=true&serverTimezone=Asia/Shanghai
-
SPRING_DATASOURCE_USERNAME=root
-
SPRING_DATASOURCE_PASSWORD=123456
-
SERVER_PORT=9090
networks
:
-
my-network
# MySQL 增加健康检测,避免
mysql
:
image
:
mysql:8.0.32
container_name
:
mysql
hostname
:
mysql
command
:
--default-authentication-plugin=mysql_native_password
restart
:
always
environment
:
TZ
:
Asia/Shanghai
MYSQL_ROOT_PASSWORD
:
123456
MYSQL_USER
:
xfg
MYSQL_PASSWORD
:
123456
networks
:
-
my-network
depends_on
:
-
mysql-job-dbdata
ports
:
-
"
13306:3306"
volumes
:
-
./sql:/docker-entrypoint-initdb.d
healthcheck
:
test
:
[
"
CMD"
,
"
mysqladmin"
,
"
ping"
,
"
-h"
,
"
localhost"
]
interval
:
5s
timeout
:
10s
retries
:
10
start_period
:
15s
deploy
:
resources
:
limits
:
cpus
:
'
1.00'
memory
:
512M
volumes_from
:
-
mysql-job-dbdata
# 自动加载数据
mysql-job-dbdata
:
image
:
alpine:3.18.2
container_name
:
mysql-job-dbdata
volumes
:
-
/var/lib/mysql
# phpmyadmin https://hub.docker.com/_/phpmyadmin
phpmyadmin
:
image
:
phpmyadmin:5.2.1
container_name
:
phpmyadmin
hostname
:
phpmyadmin
ports
:
-
8899:80
environment
:
-
PMA_ARBITRARY=1
-
PMA_HOST=mysql
-
PMA_PORT=3306
-
MYSQL_ROOT_PASSWORD=123456
networks
:
-
my-network
# RedisAdmin https://github.com/joeferner/redis-commander
redis-admin
:
image
:
spryker/redis-commander:0.8.0
container_name
:
redis-admin
hostname
:
redis-commander
restart
:
always
ports
:
-
8081:8081
environment
:
-
REDIS_HOSTS=local:redis:6379
networks
:
-
my-network
depends_on
:
redis
:
condition
:
service_healthy
# Redis
redis
:
image
:
redis:7.2.0
container_name
:
redis
restart
:
always
hostname
:
redis
ports
:
-
6379:6379
volumes
:
-
./redis/redis.conf:/usr/local/etc/redis/redis.conf
command
:
redis-server /usr/local/etc/redis/redis.conf
networks
:
-
my-network
healthcheck
:
test
:
[
"
CMD"
,
"
redis-cli"
,
"
ping"
]
interval
:
10s
timeout
:
5s
retries
:
3
# https://hub.docker.com/r/xuchengen/rocketmq
# 注意修改项;
# 01:data/rocketmq/conf/broker.conf 添加 brokerIP1=127.0.0.1
# 02:data/console/config/application.properties server.port=9009 - 如果8080端口被占用,可以修改或者添加映射端口
rocketmq
:
image
:
livinphp/rocketmq:5.1.0
container_name
:
rocketmq
ports
:
-
8080:8080
-
9876:9876
-
10909:10909
-
10911:10911
-
10912:10912
volumes
:
-
./rocketmq/data:/home/app/data
environment
:
TZ
:
"
Asia/Shanghai"
NAMESRV_ADDR
:
"
rocketmq:9876"
networks
:
my-network
:
driver
:
bridge
\ No newline at end of file
scaffold/src/main/resources/archetype-resources/docs/dev-ops/environment/redis/redis.conf
0 → 100644
浏览文件 @
41ae576f
bind
0
.
0
.
0
.
0
port
6379
requirepass
123456
\ No newline at end of file
scaffold/src/main/resources/archetype-resources/docs/dev-ops/environment/rocketmq/create-group.sh
0 → 100644
浏览文件 @
41ae576f
# 命令创建 消费者组 Group xfg-group 你可以更换你需要的
docker
exec
-it
rocketmq sh /home/app/rocketmq/bin/mqadmin updateSubGroup
-n
localhost:9876
-c
DefaultCluster
-g
xfg-group
scaffold/src/main/resources/archetype-resources/docs/dev-ops/environment/rocketmq/create-topic.sh
0 → 100644
浏览文件 @
41ae576f
# 命令创建 主题消息 Topic xfg-mq 你可以更换你需要的
docker
exec
-it
rocketmq sh /home/app/rocketmq/bin/mqadmin updateTopic
-n
localhost:9876
-c
DefaultCluster
-t
xfg-mq
scaffold/src/main/resources/archetype-resources/docs/dev-ops/environment/rocketmq/data/console/config/application.properties
0 → 100644
浏览文件 @
41ae576f
#set( $symbol_pound = '#' )
#set( $symbol_dollar = '$' )
#set( $symbol_escape = '\' )
${symbol_pound}
${symbol_pound}
Licensed
to
the
Apache
Software
Foundation
(ASF)
under
one
or
more
${symbol_pound}
contributor
license
agreements.
See
the
NOTICE
file
distributed
with
${symbol_pound}
this
work
for
additional
information
regarding
copyright
ownership.
${symbol_pound}
The
ASF
licenses
this
file
to
You
under
the
Apache
License,
Version
2.0
${symbol_pound}
(the
"License");
you
may
not
use
this
file
except
in
compliance
with
${symbol_pound}
the
License.
You
may
obtain
a
copy
of
the
License
at
${symbol_pound}
${symbol_pound}
http
:
//www.apache.org/licenses/LICENSE-2.0
${symbol_pound}
${symbol_pound}
Unless
required
by
applicable
law
or
agreed
to
in
writing,
software
${symbol_pound}
distributed
under
the
License
is
distributed
on
an
"AS
IS"
BASIS,
${symbol_pound}
WITHOUT
WARRANTIES
OR
CONDITIONS
OF
ANY
KIND,
either
express
or
implied.
${symbol_pound}
See
the
License
for
the
specific
language
governing
permissions
and
${symbol_pound}
limitations
under
the
License.
${symbol_pound}
server.address
=
0.0.0.0
server.port
=
8080
${symbol_pound}${symbol_pound}${symbol_pound}
SSL
setting
${symbol_pound}
server.ssl.key-store
=
classpath:rmqcngkeystore.jks
${symbol_pound}
server.ssl.key-store-password
=
rocketmq
${symbol_pound}
server.ssl.keyStoreType
=
PKCS12
${symbol_pound}
server.ssl.keyAlias
=
rmqcngkey
${symbol_pound}
spring.application.index
=
true
spring.application.name
=
rocketmq-dashboard
spring.http.encoding.charset
=
UTF-8
spring.http.encoding.enabled
=
true
spring.http.encoding.force
=
true
logging.level.root
=
INFO
logging.config
=
./config/logback.xml
${symbol_pound}if
this
value
is
empty,use
env
value
rocketmq.config.namesrvAddr
NAMESRV_ADDR
|
now,
you
can
set
it
in
ops
page.default
localhost
:
9876
rocketmq.config.namesrvAddr
=
${symbol_pound}if
you
use
rocketmq
version
<
3.5.8,
rocketmq.config.isVIPChannel
should
be
false.default
true
rocketmq.config.isVIPChannel
=
${symbol_pound}timeout
for
mqadminExt,
default
5000ms
rocketmq.config.timeoutMillis
=
${symbol_pound}rocketmq-console's
data
path
:
dashboard/monitor
rocketmq.config.dataPath
=
./store
${symbol_pound}set
it
false
if
you
don't
want
use
dashboard.default
true
rocketmq.config.enableDashBoardCollect
=
true
${symbol_pound}set
the
message
track
trace
topic
if
you
don't
want
use
the
default
one
rocketmq.config.msgTrackTopicName
=
rocketmq.config.ticketKey
=
ticket
${symbol_pound}Must
create
userInfo
file
:
${symbol_dollar}{rocketmq.config.dataPath}/users.properties if the login is required
rocketmq.config.loginRequired
=
true
${symbol_pound}set
the
accessKey
and
secretKey
if
you
used
acl
${symbol_pound}
rocketmq.config.accessKey
=
${symbol_pound}
rocketmq.config.secretKey
=
rocketmq.config.useTLS
=
false
scaffold/src/main/resources/archetype-resources/docs/dev-ops/environment/rocketmq/data/console/config/logback.xml
0 → 100644
浏览文件 @
41ae576f
#set( $symbol_pound = '#' )
#set( $symbol_dollar = '$' )
#set( $symbol_escape = '\' )
<?xml version="1.0" encoding="UTF-8"?>
<!--
~ Licensed to the Apache Software Foundation (ASF) under one or more
~ contributor license agreements. See the NOTICE file distributed with
~ this work for additional information regarding copyright ownership.
~ The ASF licenses this file to You under the Apache License, Version 2.0
~ (the "License"); you may not use this file except in compliance with
~ the License. You may obtain a copy of the License at
~
~ http://www.apache.org/licenses/LICENSE-2.0
~
~ Unless required by applicable law or agreed to in writing, software
~ distributed under the License is distributed on an "AS IS" BASIS,
~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
~ See the License for the specific language governing permissions and
~ limitations under the License.
-->
<configuration>
<appender
name=
"STDOUT"
class=
"ch.qos.logback.core.ConsoleAppender"
>
<encoder
charset=
"UTF-8"
>
<pattern>
[%d{yyyy-MM-dd HH:mm:ss.SSS}] %5p %m%n
</pattern>
</encoder>
</appender>
<appender
name=
"FILE"
class=
"ch.qos.logback.core.rolling.RollingFileAppender"
>
<file>
${symbol_dollar}{user.home}${symbol_dollar}{file.separator}data${symbol_dollar}{file.separator}logs${symbol_dollar}{file.separator}consolelogs${symbol_dollar}{file.separator}rocketmq-console.log
</file>
<append>
true
</append>
<rollingPolicy
class=
"ch.qos.logback.core.rolling.TimeBasedRollingPolicy"
>
<fileNamePattern>
${symbol_dollar}{user.home}${symbol_dollar}{file.separator}data${symbol_dollar}{file.separator}logs${symbol_dollar}{file.separator}consolelogs${symbol_dollar}{file.separator}rocketmq-console-%d{yyyy-MM-dd}.%i.log
</fileNamePattern>
<timeBasedFileNamingAndTriggeringPolicy
class=
"ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"
>
<maxFileSize>
104857600
</maxFileSize>
</timeBasedFileNamingAndTriggeringPolicy>
<MaxHistory>
10
</MaxHistory>
</rollingPolicy>
<encoder>
<pattern>
[%d{yyyy-MM-dd HH:mm:ss.SSS}] %5p %m%n
</pattern>
<charset
class=
"java.nio.charset.Charset"
>
UTF-8
</charset>
</encoder>
</appender>
<root
level=
"INFO"
>
<appender-ref
ref=
"STDOUT"
/>
<appender-ref
ref=
"FILE"
/>
</root>
</configuration>
\ No newline at end of file
scaffold/src/main/resources/archetype-resources/docs/dev-ops/environment/rocketmq/data/console/store/dashboard2023-11-04.json
0 → 100644
浏览文件 @
41ae576f
{
"broker-a:0"
:[
"1699081019975,10.92678"
,
"1699081079957,29.70046"
,
"1699081139966,26.54158"
,
"1699081199949,25.17176"
,
"1699081259958,30.19899"
,
"1699081319958,23.90083"
,
"1699081379958,29.42203"
,
"1699081439958,26.88845"
,
"1699081499958,23.75058"
,
"1699081559958,30.02172"
,
"1699081619958,37.96032"
,
"1699081679958,41.84854"
,
"1699081739958,42.57691"
,
"1699081799958,36.82512"
,
"1699081859958,41.84120"
,
"1699081919881,41.43369"
,
"1699081979958,37.93306"
,
"1699082039957,43.53979"
,
"1699082099959,37.91108"
,
"1699082159957,41.09514"
,
"1699082224929,25.22857"
,
"1699084080001,3.79591"
,
"1699084139489,14.39676"
,
"1699085279719,16.56811"
,
"1699086292538,2.25068"
,
"1699086899956,8.76239"
,
"1699086959943,30.15414"
,
"1699087019958,25.50150"
,
"1699087079957,30.98184"
,
"1699087139959,27.19344"
,
"1699087199957,27.63796"
,
"1699087259957,31.26747"
,
"1699087319957,26.40225"
,
"1699087379981,31.67858"
,
"1699087439959,30.32723"
,
"1699087499957,38.91828"
,
"1699087559958,43.15065"
,
"1699087619958,37.67023"
,
"1699087679958,42.32411"
,
"1699087739958,40.43330"
,
"1699087799958,38.63847"
,
"1699087859958,43.49639"
,
"1699087919957,37.84353"
,
"1699087979957,42.04197"
,
"1699088039957,41.09007"
,
"1699088099958,38.12312"
]}
\ No newline at end of file
scaffold/src/main/resources/archetype-resources/docs/dev-ops/environment/rocketmq/data/console/store/dashboard2023-11-04_topic.json
0 → 100644
浏览文件 @
41ae576f
{
"DefaultCluster_REPLY_TOPIC"
:[
"1699080990000,0.00000,0,0.00000,0"
,
"1699081049952,0.00000,0,0.00000,0"
,
"1699081109958,0.00000,0,0.00000,0"
,
"1699081169957,0.00000,0,0.00000,0"
,
"1699081229958,0.00000,0,0.00000,0"
,
"1699081289958,0.00000,0,0.00000,0"
,
"1699081349958,0.00000,0,0.00000,0"
,
"1699081409957,0.00000,0,0.00000,0"
,
"1699081469959,0.00000,0,0.00000,0"
,
"1699081529957,0.00000,0,0.00000,0"
,
"1699081589957,0.00000,0,0.00000,0"
,
"1699081649957,0.00000,0,0.00000,0"
,
"1699081709960,0.00000,0,0.00000,0"
,
"1699081769958,0.00000,0,0.00000,0"
,
"1699081829956,0.00000,0,0.00000,0"
,
"1699081889886,0.00000,0,0.00000,0"
,
"1699081949957,0.00000,0,0.00000,0"
,
"1699082009957,0.00000,0,0.00000,0"
,
"1699082069960,0.00000,0,0.00000,0"
,
"1699082129957,0.00000,0,0.00000,0"
,
"1699082189955,0.00000,0,0.00000,0"
,
"1699082250222,0.00000,0,0.00000,0"
,
"1699085256224,0.00000,0,0.00000,0"
,
"1699086290774,0.00000,0,0.00000,0"
,
"1699086929664,0.00000,0,0.00000,0"
,
"1699086989922,0.00000,0,0.00000,0"
,
"1699087049957,0.00000,0,0.00000,0"
,
"1699087109957,0.00000,0,0.00000,0"
,
"1699087169957,0.00000,0,0.00000,0"
,
"1699087229958,0.00000,0,0.00000,0"
,
"1699087289957,0.00000,0,0.00000,0"
,
"1699087349973,0.00000,0,0.00000,0"
,
"1699087409965,0.00000,0,0.00000,0"
,
"1699087469959,0.00000,0,0.00000,0"
,
"1699087529958,0.00000,0,0.00000,0"
,
"1699087589957,0.00000,0,0.00000,0"
,
"1699087649957,0.00000,0,0.00000,0"
,
"1699087709958,0.00000,0,0.00000,0"
,
"1699087769958,0.00000,0,0.00000,0"
,
"1699087829957,0.00000,0,0.00000,0"
,
"1699087889958,0.00000,0,0.00000,0"
,
"1699087949958,0.00000,0,0.00000,0"
,
"1699088009956,0.00000,0,0.00000,0"
,
"1699088069959,0.00000,0,0.00000,0"
],
"xfg-mq"
:[
"1699081049952,0.00000,0,0.00000,0"
,
"1699081109958,0.00000,0,0.00000,0"
,
"1699081169957,0.00000,0,0.00000,0"
,
"1699081229958,0.00000,0,0.00000,0"
,
"1699081289958,0.00000,0,0.00000,0"
,
"1699081349958,0.00000,0,0.00000,0"
,
"1699081409957,0.00000,0,0.00000,0"
,
"1699081469959,0.00000,0,0.00000,0"
,
"1699081529957,0.00000,0,0.00000,0"
,
"1699081589957,0.00000,0,0.00000,0"
,
"1699081649957,0.05000,1,0.05000,1"
,
"1699081709960,0.00000,0,0.00000,0"
,
"1699081769958,0.00000,0,0.00000,0"
,
"1699081829956,0.00000,0,0.00000,0"
,
"1699081889886,0.00000,0,0.00000,0"
,
"1699081949957,0.00000,0,0.00000,0"
,
"1699082009957,0.00000,0,0.00000,0"
,
"1699082069960,0.00000,0,0.00000,0"
,
"1699082129957,0.00000,0,0.00000,0"
,
"1699082189955,0.00000,1,0.00000,1"
,
"1699082250222,0.00000,1,0.00000,1"
,
"1699085256224,0.00000,1,0.00000,1"
,
"1699086290774,0.00000,1,0.00000,1"
,
"1699086929664,0.00000,1,0.00000,1"
,
"1699086989922,0.00000,1,0.00000,1"
,
"1699087049957,0.00000,1,0.00000,1"
,
"1699087109957,0.00000,1,0.00000,1"
,
"1699087169957,0.00000,1,0.00000,1"
,
"1699087229958,0.00000,1,0.00000,1"
,
"1699087289957,0.00000,1,0.00000,1"
,
"1699087349973,0.00000,1,0.00000,1"
,
"1699087409965,0.00000,1,0.00000,1"
,
"1699087469959,0.00000,1,0.00000,1"
,
"1699087529958,0.00000,1,0.00000,1"
,
"1699087589957,0.00000,1,0.00000,1"
,
"1699087649957,0.00000,1,0.00000,1"
,
"1699087709958,0.00000,1,0.00000,1"
,
"1699087769958,0.00000,1,0.00000,1"
,
"1699087829957,0.00000,1,0.00000,1"
,
"1699087889958,0.00000,1,0.00000,1"
,
"1699087949958,0.00000,1,0.00000,1"
,
"1699088009956,0.00000,1,0.00000,1"
,
"1699088069959,0.00000,1,0.00000,1"
]}
\ No newline at end of file
scaffold/src/main/resources/archetype-resources/docs/dev-ops/environment/rocketmq/data/console/store/users.properties
0 → 100644
浏览文件 @
41ae576f
#set( $symbol_pound = '#' )
#set( $symbol_dollar = '$' )
#set( $symbol_escape = '\' )
${symbol_pound}
${symbol_pound}
Licensed
to
the
Apache
Software
Foundation
(ASF)
under
one
or
more
${symbol_pound}
contributor
license
agreements.
See
the
NOTICE
file
distributed
with
${symbol_pound}
this
work
for
additional
information
regarding
copyright
ownership.
${symbol_pound}
The
ASF
licenses
this
file
to
You
under
the
Apache
License,
Version
2.0
${symbol_pound}
(the
"License");
you
may
not
use
this
file
except
in
compliance
with
${symbol_pound}
the
License.
You
may
obtain
a
copy
of
the
License
at
${symbol_pound}
${symbol_pound}
http
:
//www.apache.org/licenses/LICENSE-2.0
${symbol_pound}
${symbol_pound}
Unless
required
by
applicable
law
or
agreed
to
in
writing,
software
${symbol_pound}
distributed
under
the
License
is
distributed
on
an
"AS
IS"
BASIS,
${symbol_pound}
WITHOUT
WARRANTIES
OR
CONDITIONS
OF
ANY
KIND,
either
express
or
implied.
${symbol_pound}
See
the
License
for
the
specific
language
governing
permissions
and
${symbol_pound}
limitations
under
the
License.
${symbol_pound}
${symbol_pound}
This
file
supports
hot
change,
any
change
will
be
auto-reloaded
without
Dashboard
restarting.
${symbol_pound}
Format
:
a user per line, username=password[,N] ${symbol_pound}N is optional, 0 (Normal User); 1 (Admin)
${symbol_pound}
Define
Admin
admin
=
admin,1
${symbol_pound}
Define
Users
normal
=
normal
\ No newline at end of file
scaffold/src/main/resources/archetype-resources/docs/dev-ops/environment/rocketmq/data/logs/consolelogs/rocketmq-console.log
0 → 100644
浏览文件 @
41ae576f
scaffold/src/main/resources/archetype-resources/docs/dev-ops/environment/rocketmq/data/logs/logs.txt
0 → 100644
浏览文件 @
41ae576f
#set( $symbol_pound = '#' )
#set( $symbol_dollar = '$' )
#set( $symbol_escape = '\' )
scaffold/src/main/resources/archetype-resources/docs/dev-ops/environment/rocketmq/data/logs/rocketmqlogs/brokerLogDir_IS_UNDEFINED/broker.log
0 → 100644
浏览文件 @
41ae576f
scaffold/src/main/resources/archetype-resources/docs/dev-ops/environment/rocketmq/data/logs/rocketmqlogs/rocketmq_client.log
0 → 100644
浏览文件 @
41ae576f
scaffold/src/main/resources/archetype-resources/docs/dev-ops/environment/rocketmq/data/rocketmq/conf/broker.conf
0 → 100644
浏览文件 @
41ae576f
# Licensed to the Apache Software Foundation (ASF) under one or more
# contributor license agreements. See the NOTICE file distributed with
# this work for additional information regarding copyright ownership.
# The ASF licenses this file to You under the Apache License, Version 2.0
# (the "License"); you may not use this file except in compliance with
# the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
# 集群名称
brokerClusterName
=
DefaultCluster
# BROKER 名称
brokerName
=
broker
-
a
# 0 表示 Master, > 0 表示 Slave
brokerId
=
0
# 删除文件时间点,默认凌晨 4 点
deleteWhen
=
04
# 文件保留时间,默认 48 小时
fileReservedTime
=
48
# BROKER 角色 ASYNC_MASTER为异步主节点,SYNC_MASTER为同步主节点,SLAVE为从节点
brokerRole
=
ASYNC_MASTER
# 刷新数据到磁盘的方式,ASYNC_FLUSH 刷新
flushDiskType
=
ASYNC_FLUSH
# 存储路径
storePathRootDir
= /
home
/
app
/
data
/
rocketmq
/
store
# IP地址
brokerIP1
=
127
.
0
.
0
.
1
\ No newline at end of file
scaffold/src/main/resources/archetype-resources/docs/dev-ops/environment/rocketmq/data/rocketmq/store/store.txt
0 → 100644
浏览文件 @
41ae576f
#set( $symbol_pound = '#' )
#set( $symbol_dollar = '$' )
#set( $symbol_escape = '\' )
scaffold/src/main/resources/archetype-resources/docs/dev-ops/environment/sql/nacos.sql
0 → 100644
浏览文件 @
41ae576f
#
************************************************************
#
Sequel
Ace
SQL
dump
#
版本号:
20050
#
#
https
:
//
sequel
-
ace
.
com
/
#
https
:
//
github
.
com
/
Sequel
-
Ace
/
Sequel
-
Ace
#
#
主机
:
127
.
0
.
0
.
1
(
MySQL
8
.
0
.
32
)
#
数据库
:
nacos_config
#
生成时间
:
2023
-
11
-
03
06
:
44
:
40
+
0000
#
************************************************************
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */
;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */
;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */
;
SET
NAMES
utf8mb4
;
/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */
;
/*!40101 SET @OLD_SQL_MODE='NO_AUTO_VALUE_ON_ZERO', SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */
;
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */
;
CREATE
database
if
NOT
EXISTS
`nacos_config`
default
character
set
utf8mb4
collate
utf8mb4_0900_ai_ci
;
use
`nacos_config`
;
#
转储表
config_info
#
------------------------------------------------------------
DROP
TABLE
IF
EXISTS
`config_info`
;
CREATE
TABLE
`config_info`
(
`id`
bigint
NOT
NULL
AUTO_INCREMENT
COMMENT
'id'
,
`data_id`
varchar
(
255
)
COLLATE
utf8mb3_bin
NOT
NULL
COMMENT
'data_id'
,
`group_id`
varchar
(
128
)
COLLATE
utf8mb3_bin
DEFAULT
NULL
,
`content`
longtext
COLLATE
utf8mb3_bin
NOT
NULL
COMMENT
'content'
,
`md5`
varchar
(
32
)
COLLATE
utf8mb3_bin
DEFAULT
NULL
COMMENT
'md5'
,
`gmt_create`
datetime
NOT
NULL
DEFAULT
'2010-05-05 00:00:00'
COMMENT
'创建时间'
,
`gmt_modified`
datetime
NOT
NULL
DEFAULT
'2010-05-05 00:00:00'
COMMENT
'修改时间'
,
`src_user`
text
COLLATE
utf8mb3_bin
COMMENT
'source user'
,
`src_ip`
varchar
(
20
)
COLLATE
utf8mb3_bin
DEFAULT
NULL
COMMENT
'source ip'
,
`app_name`
varchar
(
128
)
COLLATE
utf8mb3_bin
DEFAULT
NULL
,
`tenant_id`
varchar
(
128
)
COLLATE
utf8mb3_bin
DEFAULT
''
COMMENT
'ç§Ÿæˆ·å—æ®µ'
,
`c_desc`
varchar
(
256
)
COLLATE
utf8mb3_bin
DEFAULT
NULL
,
`c_use`
varchar
(
64
)
COLLATE
utf8mb3_bin
DEFAULT
NULL
,
`effect`
varchar
(
64
)
COLLATE
utf8mb3_bin
DEFAULT
NULL
,
`type`
varchar
(
64
)
COLLATE
utf8mb3_bin
DEFAULT
NULL
,
`c_schema`
text
COLLATE
utf8mb3_bin
,
`encrypted_data_key`
text
COLLATE
utf8mb3_bin
NOT
NULL
COMMENT
'秘钥'
,
PRIMARY
KEY
(
`id`
),
UNIQUE
KEY
`uk_configinfo_datagrouptenant`
(
`data_id`
,
`group_id`
,
`tenant_id`
)
)
ENGINE
=
InnoDB
DEFAULT
CHARSET
=
utf8mb3
COLLATE
=
utf8mb3_bin
COMMENT
=
'config_info'
;
#
转储表
config_info_aggr
#
------------------------------------------------------------
DROP
TABLE
IF
EXISTS
`config_info_aggr`
;
CREATE
TABLE
`config_info_aggr`
(
`id`
bigint
NOT
NULL
AUTO_INCREMENT
COMMENT
'id'
,
`data_id`
varchar
(
255
)
COLLATE
utf8mb3_bin
NOT
NULL
COMMENT
'data_id'
,
`group_id`
varchar
(
128
)
COLLATE
utf8mb3_bin
NOT
NULL
COMMENT
'group_id'
,
`datum_id`
varchar
(
255
)
COLLATE
utf8mb3_bin
NOT
NULL
COMMENT
'datum_id'
,
`content`
longtext
COLLATE
utf8mb3_bin
NOT
NULL
COMMENT
'内容'
,
`gmt_modified`
datetime
NOT
NULL
COMMENT
'修改时间'
,
`app_name`
varchar
(
128
)
COLLATE
utf8mb3_bin
DEFAULT
NULL
,
`tenant_id`
varchar
(
128
)
COLLATE
utf8mb3_bin
DEFAULT
''
COMMENT
'ç§Ÿæˆ·å—æ®µ'
,
PRIMARY
KEY
(
`id`
),
UNIQUE
KEY
`uk_configinfoaggr_datagrouptenantdatum`
(
`data_id`
,
`group_id`
,
`tenant_id`
,
`datum_id`
)
)
ENGINE
=
InnoDB
DEFAULT
CHARSET
=
utf8mb3
COLLATE
=
utf8mb3_bin
COMMENT
=
'å¢žåŠ ç§Ÿæˆ·å—æ®µ'
;
#
转储表
config_info_beta
#
------------------------------------------------------------
DROP
TABLE
IF
EXISTS
`config_info_beta`
;
CREATE
TABLE
`config_info_beta`
(
`id`
bigint
NOT
NULL
AUTO_INCREMENT
COMMENT
'id'
,
`data_id`
varchar
(
255
)
COLLATE
utf8mb3_bin
NOT
NULL
COMMENT
'data_id'
,
`group_id`
varchar
(
128
)
COLLATE
utf8mb3_bin
NOT
NULL
COMMENT
'group_id'
,
`app_name`
varchar
(
128
)
COLLATE
utf8mb3_bin
DEFAULT
NULL
COMMENT
'app_name'
,
`content`
longtext
COLLATE
utf8mb3_bin
NOT
NULL
COMMENT
'content'
,
`beta_ips`
varchar
(
1024
)
COLLATE
utf8mb3_bin
DEFAULT
NULL
COMMENT
'betaIps'
,
`md5`
varchar
(
32
)
COLLATE
utf8mb3_bin
DEFAULT
NULL
COMMENT
'md5'
,
`gmt_create`
datetime
NOT
NULL
DEFAULT
'2010-05-05 00:00:00'
COMMENT
'创建时间'
,
`gmt_modified`
datetime
NOT
NULL
DEFAULT
'2010-05-05 00:00:00'
COMMENT
'修改时间'
,
`src_user`
text
COLLATE
utf8mb3_bin
COMMENT
'source user'
,
`src_ip`
varchar
(
20
)
COLLATE
utf8mb3_bin
DEFAULT
NULL
COMMENT
'source ip'
,
`tenant_id`
varchar
(
128
)
COLLATE
utf8mb3_bin
DEFAULT
''
COMMENT
'ç§Ÿæˆ·å—æ®µ'
,
`encrypted_data_key`
text
COLLATE
utf8mb3_bin
NOT
NULL
COMMENT
'秘钥'
,
PRIMARY
KEY
(
`id`
),
UNIQUE
KEY
`uk_configinfobeta_datagrouptenant`
(
`data_id`
,
`group_id`
,
`tenant_id`
)
)
ENGINE
=
InnoDB
DEFAULT
CHARSET
=
utf8mb3
COLLATE
=
utf8mb3_bin
COMMENT
=
'config_info_beta'
;
#
转储表
config_info_tag
#
------------------------------------------------------------
DROP
TABLE
IF
EXISTS
`config_info_tag`
;
CREATE
TABLE
`config_info_tag`
(
`id`
bigint
NOT
NULL
AUTO_INCREMENT
COMMENT
'id'
,
`data_id`
varchar
(
255
)
COLLATE
utf8mb3_bin
NOT
NULL
COMMENT
'data_id'
,
`group_id`
varchar
(
128
)
COLLATE
utf8mb3_bin
NOT
NULL
COMMENT
'group_id'
,
`tenant_id`
varchar
(
128
)
COLLATE
utf8mb3_bin
DEFAULT
''
COMMENT
'tenant_id'
,
`tag_id`
varchar
(
128
)
COLLATE
utf8mb3_bin
NOT
NULL
COMMENT
'tag_id'
,
`app_name`
varchar
(
128
)
COLLATE
utf8mb3_bin
DEFAULT
NULL
COMMENT
'app_name'
,
`content`
longtext
COLLATE
utf8mb3_bin
NOT
NULL
COMMENT
'content'
,
`md5`
varchar
(
32
)
COLLATE
utf8mb3_bin
DEFAULT
NULL
COMMENT
'md5'
,
`gmt_create`
datetime
NOT
NULL
DEFAULT
'2010-05-05 00:00:00'
COMMENT
'创建时间'
,
`gmt_modified`
datetime
NOT
NULL
DEFAULT
'2010-05-05 00:00:00'
COMMENT
'修改时间'
,
`src_user`
text
COLLATE
utf8mb3_bin
COMMENT
'source user'
,
`src_ip`
varchar
(
20
)
COLLATE
utf8mb3_bin
DEFAULT
NULL
COMMENT
'source ip'
,
PRIMARY
KEY
(
`id`
),
UNIQUE
KEY
`uk_configinfotag_datagrouptenanttag`
(
`data_id`
,
`group_id`
,
`tenant_id`
,
`tag_id`
)
)
ENGINE
=
InnoDB
DEFAULT
CHARSET
=
utf8mb3
COLLATE
=
utf8mb3_bin
COMMENT
=
'config_info_tag'
;
#
转储表
config_tags_relation
#
------------------------------------------------------------
DROP
TABLE
IF
EXISTS
`config_tags_relation`
;
CREATE
TABLE
`config_tags_relation`
(
`id`
bigint
NOT
NULL
COMMENT
'id'
,
`tag_name`
varchar
(
128
)
COLLATE
utf8mb3_bin
NOT
NULL
COMMENT
'tag_name'
,
`tag_type`
varchar
(
64
)
COLLATE
utf8mb3_bin
DEFAULT
NULL
COMMENT
'tag_type'
,
`data_id`
varchar
(
255
)
COLLATE
utf8mb3_bin
NOT
NULL
COMMENT
'data_id'
,
`group_id`
varchar
(
128
)
COLLATE
utf8mb3_bin
NOT
NULL
COMMENT
'group_id'
,
`tenant_id`
varchar
(
128
)
COLLATE
utf8mb3_bin
DEFAULT
''
COMMENT
'tenant_id'
,
`nid`
bigint
NOT
NULL
AUTO_INCREMENT
,
PRIMARY
KEY
(
`nid`
),
UNIQUE
KEY
`uk_configtagrelation_configidtag`
(
`id`
,
`tag_name`
,
`tag_type`
),
KEY
`idx_tenant_id`
(
`tenant_id`
)
)
ENGINE
=
InnoDB
DEFAULT
CHARSET
=
utf8mb3
COLLATE
=
utf8mb3_bin
COMMENT
=
'config_tag_relation'
;
#
转储表
group_capacity
#
------------------------------------------------------------
DROP
TABLE
IF
EXISTS
`group_capacity`
;
CREATE
TABLE
`group_capacity`
(
`id`
bigint
unsigned
NOT
NULL
AUTO_INCREMENT
COMMENT
'主键ID'
,
`group_id`
varchar
(
128
)
COLLATE
utf8mb3_bin
NOT
NULL
DEFAULT
''
COMMENT
'Group ID,空å—符表示整个集群'
,
`quota`
int
unsigned
NOT
NULL
DEFAULT
'0'
COMMENT
'é…é¢ï¼Œ0表示使用默认值'
,
`usage`
int
unsigned
NOT
NULL
DEFAULT
'0'
COMMENT
'使用é‡'
,
`max_size`
int
unsigned
NOT
NULL
DEFAULT
'0'
COMMENT
'å•个é…置大å°ä¸Šé™ï¼Œå•ä½ä¸ºå—节,0表示使用默认值'
,
`max_aggr_count`
int
unsigned
NOT
NULL
DEFAULT
'0'
COMMENT
'èšåˆåé…置最大个数,,0表示使用默认值'
,
`max_aggr_size`
int
unsigned
NOT
NULL
DEFAULT
'0'
COMMENT
'å•个èšåˆæ•°æ®çš„åé…置大å°ä¸Šé™ï¼Œå•ä½ä¸ºå—节,0表示使用默认值'
,
`max_history_count`
int
unsigned
NOT
NULL
DEFAULT
'0'
COMMENT
'æœ€å¤§å˜æ›´åކ岿•°é‡'
,
`gmt_create`
datetime
NOT
NULL
DEFAULT
'2010-05-05 00:00:00'
COMMENT
'创建时间'
,
`gmt_modified`
datetime
NOT
NULL
DEFAULT
'2010-05-05 00:00:00'
COMMENT
'修改时间'
,
PRIMARY
KEY
(
`id`
),
UNIQUE
KEY
`uk_group_id`
(
`group_id`
)
)
ENGINE
=
InnoDB
DEFAULT
CHARSET
=
utf8mb3
COLLATE
=
utf8mb3_bin
COMMENT
=
'集群ã€å„Group容é‡ä¿¡æ¯è¡¨'
;
#
转储表
his_config_info
#
------------------------------------------------------------
DROP
TABLE
IF
EXISTS
`his_config_info`
;
CREATE
TABLE
`his_config_info`
(
`id`
bigint
unsigned
NOT
NULL
,
`nid`
bigint
unsigned
NOT
NULL
AUTO_INCREMENT
,
`data_id`
varchar
(
255
)
COLLATE
utf8mb3_bin
NOT
NULL
,
`group_id`
varchar
(
128
)
COLLATE
utf8mb3_bin
NOT
NULL
,
`app_name`
varchar
(
128
)
COLLATE
utf8mb3_bin
DEFAULT
NULL
COMMENT
'app_name'
,
`content`
longtext
COLLATE
utf8mb3_bin
NOT
NULL
,
`md5`
varchar
(
32
)
COLLATE
utf8mb3_bin
DEFAULT
NULL
,
`gmt_create`
datetime
NOT
NULL
DEFAULT
'2010-05-05 00:00:00'
,
`gmt_modified`
datetime
NOT
NULL
DEFAULT
'2010-05-05 00:00:00'
,
`src_user`
text
COLLATE
utf8mb3_bin
,
`src_ip`
varchar
(
20
)
COLLATE
utf8mb3_bin
DEFAULT
NULL
,
`op_type`
char
(
10
)
COLLATE
utf8mb3_bin
DEFAULT
NULL
,
`tenant_id`
varchar
(
128
)
COLLATE
utf8mb3_bin
DEFAULT
''
COMMENT
'ç§Ÿæˆ·å—æ®µ'
,
`encrypted_data_key`
text
COLLATE
utf8mb3_bin
NOT
NULL
COMMENT
'秘钥'
,
PRIMARY
KEY
(
`nid`
),
KEY
`idx_gmt_create`
(
`gmt_create`
),
KEY
`idx_gmt_modified`
(
`gmt_modified`
),
KEY
`idx_did`
(
`data_id`
)
)
ENGINE
=
InnoDB
DEFAULT
CHARSET
=
utf8mb3
COLLATE
=
utf8mb3_bin
COMMENT
=
'å¤šç§Ÿæˆ·æ”¹é€ '
;
#
转储表
permissions
#
------------------------------------------------------------
DROP
TABLE
IF
EXISTS
`permissions`
;
CREATE
TABLE
`permissions`
(
`role`
varchar
(
50
)
NOT
NULL
,
`resource`
varchar
(
512
)
NOT
NULL
,
`action`
varchar
(
8
)
NOT
NULL
,
UNIQUE
KEY
`uk_role_permission`
(
`role`
,
`resource`
,
`action`
)
)
ENGINE
=
InnoDB
DEFAULT
CHARSET
=
utf8mb4
COLLATE
=
utf8mb4_0900_ai_ci
;
#
转储表
roles
#
------------------------------------------------------------
DROP
TABLE
IF
EXISTS
`roles`
;
CREATE
TABLE
`roles`
(
`username`
varchar
(
50
)
NOT
NULL
,
`role`
varchar
(
50
)
NOT
NULL
,
UNIQUE
KEY
`uk_username_role`
(
`username`
,
`role`
)
)
ENGINE
=
InnoDB
DEFAULT
CHARSET
=
utf8mb4
COLLATE
=
utf8mb4_0900_ai_ci
;
LOCK
TABLES
`roles`
WRITE
;
/*!40000 ALTER TABLE `roles` DISABLE KEYS */
;
INSERT
INTO
`roles`
(
`username`
,
`role`
)
VALUES
(
'nacos'
,
'ROLE_ADMIN'
);
/*!40000 ALTER TABLE `roles` ENABLE KEYS */
;
UNLOCK
TABLES
;
#
转储表
tenant_capacity
#
------------------------------------------------------------
DROP
TABLE
IF
EXISTS
`tenant_capacity`
;
CREATE
TABLE
`tenant_capacity`
(
`id`
bigint
unsigned
NOT
NULL
AUTO_INCREMENT
COMMENT
'主键ID'
,
`tenant_id`
varchar
(
128
)
COLLATE
utf8mb3_bin
NOT
NULL
DEFAULT
''
COMMENT
'Tenant ID'
,
`quota`
int
unsigned
NOT
NULL
DEFAULT
'0'
COMMENT
'é…é¢ï¼Œ0表示使用默认值'
,
`usage`
int
unsigned
NOT
NULL
DEFAULT
'0'
COMMENT
'使用é‡'
,
`max_size`
int
unsigned
NOT
NULL
DEFAULT
'0'
COMMENT
'å•个é…置大å°ä¸Šé™ï¼Œå•ä½ä¸ºå—节,0表示使用默认值'
,
`max_aggr_count`
int
unsigned
NOT
NULL
DEFAULT
'0'
COMMENT
'èšåˆåé…置最大个数'
,
`max_aggr_size`
int
unsigned
NOT
NULL
DEFAULT
'0'
COMMENT
'å•个èšåˆæ•°æ®çš„åé…置大å°ä¸Šé™ï¼Œå•ä½ä¸ºå—节,0表示使用默认值'
,
`max_history_count`
int
unsigned
NOT
NULL
DEFAULT
'0'
COMMENT
'æœ€å¤§å˜æ›´åކ岿•°é‡'
,
`gmt_create`
datetime
NOT
NULL
DEFAULT
'2010-05-05 00:00:00'
COMMENT
'创建时间'
,
`gmt_modified`
datetime
NOT
NULL
DEFAULT
'2010-05-05 00:00:00'
COMMENT
'修改时间'
,
PRIMARY
KEY
(
`id`
),
UNIQUE
KEY
`uk_tenant_id`
(
`tenant_id`
)
)
ENGINE
=
InnoDB
DEFAULT
CHARSET
=
utf8mb3
COLLATE
=
utf8mb3_bin
COMMENT
=
'租户容é‡ä¿¡æ¯è¡¨'
;
#
转储表
tenant_info
#
------------------------------------------------------------
DROP
TABLE
IF
EXISTS
`tenant_info`
;
CREATE
TABLE
`tenant_info`
(
`id`
bigint
NOT
NULL
AUTO_INCREMENT
COMMENT
'id'
,
`kp`
varchar
(
128
)
COLLATE
utf8mb3_bin
NOT
NULL
COMMENT
'kp'
,
`tenant_id`
varchar
(
128
)
COLLATE
utf8mb3_bin
DEFAULT
''
COMMENT
'tenant_id'
,
`tenant_name`
varchar
(
128
)
COLLATE
utf8mb3_bin
DEFAULT
''
COMMENT
'tenant_name'
,
`tenant_desc`
varchar
(
256
)
COLLATE
utf8mb3_bin
DEFAULT
NULL
COMMENT
'tenant_desc'
,
`create_source`
varchar
(
32
)
COLLATE
utf8mb3_bin
DEFAULT
NULL
COMMENT
'create_source'
,
`gmt_create`
bigint
NOT
NULL
COMMENT
'创建时间'
,
`gmt_modified`
bigint
NOT
NULL
COMMENT
'修改时间'
,
PRIMARY
KEY
(
`id`
),
UNIQUE
KEY
`uk_tenant_info_kptenantid`
(
`kp`
,
`tenant_id`
),
KEY
`idx_tenant_id`
(
`tenant_id`
)
)
ENGINE
=
InnoDB
DEFAULT
CHARSET
=
utf8mb3
COLLATE
=
utf8mb3_bin
COMMENT
=
'tenant_info'
;
#
转储表
users
#
------------------------------------------------------------
DROP
TABLE
IF
EXISTS
`users`
;
CREATE
TABLE
`users`
(
`username`
varchar
(
50
)
NOT
NULL
,
`password`
varchar
(
500
)
NOT
NULL
,
`enabled`
tinyint
(
1
)
NOT
NULL
,
PRIMARY
KEY
(
`username`
)
)
ENGINE
=
InnoDB
DEFAULT
CHARSET
=
utf8mb4
COLLATE
=
utf8mb4_0900_ai_ci
;
LOCK
TABLES
`users`
WRITE
;
/*!40000 ALTER TABLE `users` DISABLE KEYS */
;
INSERT
INTO
`users`
(
`username`
,
`password`
,
`enabled`
)
VALUES
(
'nacos'
,
'$2a$10$EuWPZHzz32dJN7jexM34MOeYirDdFAZm2kuWj7VEOJhhZkDrxfvUu'
,
1
);
/*!40000 ALTER TABLE `users` ENABLE KEYS */
;
UNLOCK
TABLES
;
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */
;
/*!40101 SET SQL_MODE=@OLD_SQL_MODE */
;
/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */
;
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */
;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */
;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */
;
scaffold/src/main/resources/archetype-resources/docs/dev-ops/environment/sql/xfg_dev_tech_db_00.sql
0 → 100644
浏览文件 @
41ae576f
此差异已折叠。
点击以展开。
scaffold/src/main/resources/archetype-resources/docs/dev-ops/environment/sql/xfg_dev_tech_db_01.sql
0 → 100644
浏览文件 @
41ae576f
此差异已折叠。
点击以展开。
scaffold/src/main/resources/archetype-resources/docs/dev-ops/environment/sql/xxl_job.sql
0 → 100644
浏览文件 @
41ae576f
#
获取地址:
https
:
//
github
.
com
/
xuxueli
/
xxl
-
job
/
tree
/
master
/
doc
/
db
#
XXL
-
JOB
v2
.
4
.
1
-
SNAPSHOT
#
Copyright
(
c
)
2015
-
present
,
xuxueli
.
CREATE
database
if
NOT
EXISTS
`xxl_job`
default
character
set
utf8mb4
collate
utf8mb4_0900_ai_ci
;
use
`xxl_job`
;
SET
NAMES
utf8mb4
;
CREATE
TABLE
`xxl_job_info`
(
`id`
int
(
11
)
NOT
NULL
AUTO_INCREMENT
,
`job_group`
int
(
11
)
NOT
NULL
COMMENT
'执行器主键ID'
,
`job_desc`
varchar
(
255
)
NOT
NULL
,
`add_time`
datetime
DEFAULT
NULL
,
`update_time`
datetime
DEFAULT
NULL
,
`author`
varchar
(
64
)
DEFAULT
NULL
COMMENT
'作者'
,
`alarm_email`
varchar
(
255
)
DEFAULT
NULL
COMMENT
'报警邮件'
,
`schedule_type`
varchar
(
50
)
NOT
NULL
DEFAULT
'NONE'
COMMENT
'调度类型'
,
`schedule_conf`
varchar
(
128
)
DEFAULT
NULL
COMMENT
'调度配置,值含义取决于调度类型'
,
`misfire_strategy`
varchar
(
50
)
NOT
NULL
DEFAULT
'DO_NOTHING'
COMMENT
'调度过期策略'
,
`executor_route_strategy`
varchar
(
50
)
DEFAULT
NULL
COMMENT
'执行器路由策略'
,
`executor_handler`
varchar
(
255
)
DEFAULT
NULL
COMMENT
'执行器任务handler'
,
`executor_param`
varchar
(
512
)
DEFAULT
NULL
COMMENT
'执行器任务参数'
,
`executor_block_strategy`
varchar
(
50
)
DEFAULT
NULL
COMMENT
'阻塞处理策略'
,
`executor_timeout`
int
(
11
)
NOT
NULL
DEFAULT
'0'
COMMENT
'任务执行超时时间,单位秒'
,
`executor_fail_retry_count`
int
(
11
)
NOT
NULL
DEFAULT
'0'
COMMENT
'失败重试次数'
,
`glue_type`
varchar
(
50
)
NOT
NULL
COMMENT
'GLUE类型'
,
`glue_source`
mediumtext
COMMENT
'GLUE源代码'
,
`glue_remark`
varchar
(
128
)
DEFAULT
NULL
COMMENT
'GLUE备注'
,
`glue_updatetime`
datetime
DEFAULT
NULL
COMMENT
'GLUE更新时间'
,
`child_jobid`
varchar
(
255
)
DEFAULT
NULL
COMMENT
'子任务ID,多个逗号分隔'
,
`trigger_status`
tinyint
(
4
)
NOT
NULL
DEFAULT
'0'
COMMENT
'调度状态:0-停止,1-运行'
,
`trigger_last_time`
bigint
(
13
)
NOT
NULL
DEFAULT
'0'
COMMENT
'上次调度时间'
,
`trigger_next_time`
bigint
(
13
)
NOT
NULL
DEFAULT
'0'
COMMENT
'下次调度时间'
,
PRIMARY
KEY
(
`id`
)
)
ENGINE
=
InnoDB
DEFAULT
CHARSET
=
utf8mb4
;
CREATE
TABLE
`xxl_job_log`
(
`id`
bigint
(
20
)
NOT
NULL
AUTO_INCREMENT
,
`job_group`
int
(
11
)
NOT
NULL
COMMENT
'执行器主键ID'
,
`job_id`
int
(
11
)
NOT
NULL
COMMENT
'任务,主键ID'
,
`executor_address`
varchar
(
255
)
DEFAULT
NULL
COMMENT
'执行器地址,本次执行的地址'
,
`executor_handler`
varchar
(
255
)
DEFAULT
NULL
COMMENT
'执行器任务handler'
,
`executor_param`
varchar
(
512
)
DEFAULT
NULL
COMMENT
'执行器任务参数'
,
`executor_sharding_param`
varchar
(
20
)
DEFAULT
NULL
COMMENT
'执行器任务分片参数,格式如 1/2'
,
`executor_fail_retry_count`
int
(
11
)
NOT
NULL
DEFAULT
'0'
COMMENT
'失败重试次数'
,
`trigger_time`
datetime
DEFAULT
NULL
COMMENT
'调度-时间'
,
`trigger_code`
int
(
11
)
NOT
NULL
COMMENT
'调度-结果'
,
`trigger_msg`
text
COMMENT
'调度-日志'
,
`handle_time`
datetime
DEFAULT
NULL
COMMENT
'执行-时间'
,
`handle_code`
int
(
11
)
NOT
NULL
COMMENT
'执行-状态'
,
`handle_msg`
text
COMMENT
'执行-日志'
,
`alarm_status`
tinyint
(
4
)
NOT
NULL
DEFAULT
'0'
COMMENT
'告警状态:0-默认、1-无需告警、2-告警成功、3-告警失败'
,
PRIMARY
KEY
(
`id`
),
KEY
`I_trigger_time`
(
`trigger_time`
),
KEY
`I_handle_code`
(
`handle_code`
)
)
ENGINE
=
InnoDB
DEFAULT
CHARSET
=
utf8mb4
;
CREATE
TABLE
`xxl_job_log_report`
(
`id`
int
(
11
)
NOT
NULL
AUTO_INCREMENT
,
`trigger_day`
datetime
DEFAULT
NULL
COMMENT
'调度-时间'
,
`running_count`
int
(
11
)
NOT
NULL
DEFAULT
'0'
COMMENT
'运行中-日志数量'
,
`suc_count`
int
(
11
)
NOT
NULL
DEFAULT
'0'
COMMENT
'执行成功-日志数量'
,
`fail_count`
int
(
11
)
NOT
NULL
DEFAULT
'0'
COMMENT
'执行失败-日志数量'
,
`update_time`
datetime
DEFAULT
NULL
,
PRIMARY
KEY
(
`id`
),
UNIQUE
KEY
`i_trigger_day`
(
`trigger_day`
)
USING
BTREE
)
ENGINE
=
InnoDB
DEFAULT
CHARSET
=
utf8mb4
;
CREATE
TABLE
`xxl_job_logglue`
(
`id`
int
(
11
)
NOT
NULL
AUTO_INCREMENT
,
`job_id`
int
(
11
)
NOT
NULL
COMMENT
'任务,主键ID'
,
`glue_type`
varchar
(
50
)
DEFAULT
NULL
COMMENT
'GLUE类型'
,
`glue_source`
mediumtext
COMMENT
'GLUE源代码'
,
`glue_remark`
varchar
(
128
)
NOT
NULL
COMMENT
'GLUE备注'
,
`add_time`
datetime
DEFAULT
NULL
,
`update_time`
datetime
DEFAULT
NULL
,
PRIMARY
KEY
(
`id`
)
)
ENGINE
=
InnoDB
DEFAULT
CHARSET
=
utf8mb4
;
CREATE
TABLE
`xxl_job_registry`
(
`id`
int
(
11
)
NOT
NULL
AUTO_INCREMENT
,
`registry_group`
varchar
(
50
)
NOT
NULL
,
`registry_key`
varchar
(
255
)
NOT
NULL
,
`registry_value`
varchar
(
255
)
NOT
NULL
,
`update_time`
datetime
DEFAULT
NULL
,
PRIMARY
KEY
(
`id`
),
KEY
`i_g_k_v`
(
`registry_group`
,
`registry_key`
,
`registry_value`
)
)
ENGINE
=
InnoDB
DEFAULT
CHARSET
=
utf8mb4
;
CREATE
TABLE
`xxl_job_group`
(
`id`
int
(
11
)
NOT
NULL
AUTO_INCREMENT
,
`app_name`
varchar
(
64
)
NOT
NULL
COMMENT
'执行器AppName'
,
`title`
varchar
(
12
)
NOT
NULL
COMMENT
'执行器名称'
,
`address_type`
tinyint
(
4
)
NOT
NULL
DEFAULT
'0'
COMMENT
'执行器地址类型:0=自动注册、1=手动录入'
,
`address_list`
text
COMMENT
'执行器地址列表,多地址逗号分隔'
,
`update_time`
datetime
DEFAULT
NULL
,
PRIMARY
KEY
(
`id`
)
)
ENGINE
=
InnoDB
DEFAULT
CHARSET
=
utf8mb4
;
CREATE
TABLE
`xxl_job_user`
(
`id`
int
(
11
)
NOT
NULL
AUTO_INCREMENT
,
`username`
varchar
(
50
)
NOT
NULL
COMMENT
'账号'
,
`password`
varchar
(
50
)
NOT
NULL
COMMENT
'密码'
,
`role`
tinyint
(
4
)
NOT
NULL
COMMENT
'角色:0-普通用户、1-管理员'
,
`permission`
varchar
(
255
)
DEFAULT
NULL
COMMENT
'权限:执行器ID列表,多个逗号分割'
,
PRIMARY
KEY
(
`id`
),
UNIQUE
KEY
`i_username`
(
`username`
)
USING
BTREE
)
ENGINE
=
InnoDB
DEFAULT
CHARSET
=
utf8mb4
;
CREATE
TABLE
`xxl_job_lock`
(
`lock_name`
varchar
(
50
)
NOT
NULL
COMMENT
'锁名称'
,
PRIMARY
KEY
(
`lock_name`
)
)
ENGINE
=
InnoDB
DEFAULT
CHARSET
=
utf8mb4
;
INSERT
INTO
`xxl_job_group`
(
`id`
,
`app_name`
,
`title`
,
`address_type`
,
`address_list`
,
`update_time`
)
VALUES
(
1
,
'xxl-job-executor-sample'
,
'示例执行器'
,
0
,
NULL
,
'2018-11-03 22:21:31'
);
INSERT
INTO
`xxl_job_info`
(
`id`
,
`job_group`
,
`job_desc`
,
`add_time`
,
`update_time`
,
`author`
,
`alarm_email`
,
`schedule_type`
,
`schedule_conf`
,
`misfire_strategy`
,
`executor_route_strategy`
,
`executor_handler`
,
`executor_param`
,
`executor_block_strategy`
,
`executor_timeout`
,
`executor_fail_retry_count`
,
`glue_type`
,
`glue_source`
,
`glue_remark`
,
`glue_updatetime`
,
`child_jobid`
)
VALUES
(
1
,
1
,
'测试任务1'
,
'2018-11-03 22:21:31'
,
'2018-11-03 22:21:31'
,
'XXL'
,
''
,
'CRON'
,
'0 0 0 * * ? *'
,
'DO_NOTHING'
,
'FIRST'
,
'demoJobHandler'
,
''
,
'SERIAL_EXECUTION'
,
0
,
0
,
'BEAN'
,
''
,
'GLUE代码初始化'
,
'2018-11-03 22:21:31'
,
''
);
INSERT
INTO
`xxl_job_user`
(
`id`
,
`username`
,
`password`
,
`role`
,
`permission`
)
VALUES
(
1
,
'admin'
,
'e10adc3949ba59abbe56e057f20f883e'
,
1
,
NULL
);
INSERT
INTO
`xxl_job_lock`
(
`lock_name`
)
VALUES
(
'schedule_lock'
);
commit
;
\ No newline at end of file
scaffold/src/main/resources/archetype-resources/pom.xml
0 → 100644
浏览文件 @
41ae576f
<?xml version="1.0" encoding="UTF-8"?>
<project
xmlns=
"http://maven.apache.org/POM/4.0.0"
xmlns:xsi=
"http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation=
"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
>
<modelVersion>
4.0.0
</modelVersion>
<groupId>
${groupId}
</groupId>
<artifactId>
${artifactId}
</artifactId>
<version>
${version}
</version>
<packaging>
pom
</packaging>
<modules>
<module>
${rootArtifactId}-api
</module>
<module>
${rootArtifactId}-app
</module>
<module>
${rootArtifactId}-domain
</module>
<module>
${rootArtifactId}-trigger
</module>
<module>
${rootArtifactId}-infrastructure
</module>
<module>
${rootArtifactId}-types
</module>
</modules>
<properties>
<java.version>
1.8
</java.version>
<project.build.sourceEncoding>
UTF-8
</project.build.sourceEncoding>
<maven.compiler.source>
8
</maven.compiler.source>
<maven.compiler.target>
8
</maven.compiler.target>
<project.build.sourceEncoding>
UTF-8
</project.build.sourceEncoding>
</properties>
<developers>
<developer>
<name>
xiaofuge
</name>
<email>
184172133@qq.com
</email>
<organization>
fuzhengwei
</organization>
<organizationUrl>
https://github.com/fuzhengwei
</organizationUrl>
</developer>
</developers>
<licenses>
<license>
<name>
Apache License, Version 2.0
</name>
<url>
https://www.apache.org/licenses/LICENSE-2.0
</url>
</license>
</licenses>
<parent>
<groupId>
org.springframework.boot
</groupId>
<artifactId>
spring-boot-starter-parent
</artifactId>
<version>
2.7.12
</version>
</parent>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>
org.mybatis.spring.boot
</groupId>
<artifactId>
mybatis-spring-boot-starter
</artifactId>
<version>
2.1.4
</version>
</dependency>
<!-- # 多数据源路由配置
# mysql 5.x driver-class-name: com.mysql.jdbc.Driver mysql-connector-java 5.1.34
# mysql 8.x driver-class-name: com.mysql.cj.jdbc.Driver mysql-connector-java 8.0.22-->
<dependency>
<groupId>
mysql
</groupId>
<artifactId>
mysql-connector-java
</artifactId>
<version>
8.0.22
</version>
</dependency>
<dependency>
<groupId>
com.alibaba
</groupId>
<artifactId>
fastjson
</artifactId>
<version>
2.0.28
</version>
</dependency>
<dependency>
<groupId>
org.apache.commons
</groupId>
<artifactId>
commons-lang3
</artifactId>
<version>
3.9
</version>
</dependency>
<dependency>
<groupId>
com.google.guava
</groupId>
<artifactId>
guava
</artifactId>
<version>
32.1.3-jre
</version>
</dependency>
<dependency>
<groupId>
dom4j
</groupId>
<artifactId>
dom4j
</artifactId>
<version>
1.6.1
</version>
</dependency>
<dependency>
<groupId>
com.thoughtworks.xstream
</groupId>
<artifactId>
xstream
</artifactId>
<version>
1.4.10
</version>
</dependency>
<dependency>
<groupId>
io.jsonwebtoken
</groupId>
<artifactId>
jjwt
</artifactId>
<version>
0.9.1
</version>
</dependency>
<dependency>
<groupId>
com.auth0
</groupId>
<artifactId>
java-jwt
</artifactId>
<version>
4.4.0
</version>
</dependency>
<dependency>
<groupId>
commons-codec
</groupId>
<artifactId>
commons-codec
</artifactId>
<version>
1.15
</version>
</dependency>
<dependency>
<groupId>
org.apache.dubbo
</groupId>
<artifactId>
dubbo
</artifactId>
<version>
3.0.9
</version>
</dependency>
<dependency>
<groupId>
org.apache.dubbo
</groupId>
<artifactId>
dubbo-spring-boot-starter
</artifactId>
<version>
3.0.9
</version>
</dependency>
<dependency>
<groupId>
com.alibaba.nacos
</groupId>
<artifactId>
nacos-client
</artifactId>
<version>
2.1.0
</version>
</dependency>
<dependency>
<groupId>
org.redisson
</groupId>
<artifactId>
redisson-spring-boot-starter
</artifactId>
<version>
3.23.4
</version>
</dependency>
<dependency>
<groupId>
org.apache.shardingsphere
</groupId>
<artifactId>
shardingsphere-jdbc-core
</artifactId>
<version>
5.4.1
</version>
</dependency>
<dependency>
<groupId>
org.yaml
</groupId>
<artifactId>
snakeyaml
</artifactId>
<version>
1.33
</version>
</dependency>
<dependency>
<groupId>
com.xuxueli
</groupId>
<artifactId>
xxl-job-core
</artifactId>
<version>
2.4.0
</version>
</dependency>
<dependency>
<groupId>
org.apache.rocketmq
</groupId>
<artifactId>
rocketmq-client-java
</artifactId>
<version>
5.0.4
</version>
</dependency>
<dependency>
<groupId>
org.apache.rocketmq
</groupId>
<artifactId>
rocketmq-spring-boot-starter
</artifactId>
<version>
2.2.0
</version>
</dependency>
<!-- 工程模块 -->
<dependency>
<groupId>
${groupId}
</groupId>
<artifactId>
${rootArtifactId}-domain
</artifactId>
<version>
${version}
</version>
</dependency>
<dependency>
<groupId>
${groupId}
</groupId>
<artifactId>
${rootArtifactId}-infrastructure
</artifactId>
<version>
${version}
</version>
</dependency>
<dependency>
<groupId>
${groupId}
</groupId>
<artifactId>
${rootArtifactId}-types
</artifactId>
<version>
${version}
</version>
</dependency>
<dependency>
<groupId>
${groupId}
</groupId>
<artifactId>
${rootArtifactId}-trigger
</artifactId>
<version>
${version}
</version>
</dependency>
<dependency>
<groupId>
${groupId}
</groupId>
<artifactId>
${rootArtifactId}-api
</artifactId>
<version>
${version}
</version>
</dependency>
</dependencies>
</dependencyManagement>
<build>
<plugins>
<plugin>
<groupId>
org.apache.maven.plugins
</groupId>
<artifactId>
maven-compiler-plugin
</artifactId>
<version>
3.0
</version>
<configuration>
<source>
${java.version}
</source>
<target>
${java.version}
</target>
<encoding>
${project.build.sourceEncoding}
</encoding>
</configuration>
</plugin>
<plugin>
<groupId>
org.apache.maven.plugins
</groupId>
<artifactId>
maven-resources-plugin
</artifactId>
<version>
2.5
</version>
<configuration>
<encoding>
UTF-8
</encoding>
</configuration>
</plugin>
<plugin>
<groupId>
org.codehaus.mojo
</groupId>
<artifactId>
versions-maven-plugin
</artifactId>
<version>
2.7
</version>
</plugin>
</plugins>
</build>
<profiles>
<profile>
<id>
dev
</id>
<activation>
<activeByDefault>
true
</activeByDefault>
</activation>
<properties>
<java_jvm>
-Xms1G -Xmx1G -server -XX:MaxPermSize=256M -Xss256K -Dspring.profiles.active=test -XX:+DisableExplicitGC -XX:+UseG1GC -XX:LargePageSizeInBytes=128m -XX:+UseFastAccessorMethods -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/export/Logs/xfg-frame-archetype-std-boot -Xloggc:/export/Logs/xfg-frame-archetype-std-boot/gc-xfg-frame-archetype-std-boot.log -XX:+PrintGCDetails -XX:+PrintGCDateStamps
</java_jvm>
<profileActive>
dev
</profileActive>
</properties>
</profile>
<profile>
<id>
test
</id>
<properties>
<java_jvm>
-Xms1G -Xmx1G -server -XX:MaxPermSize=256M -Xss256K -Dspring.profiles.active=test -XX:+DisableExplicitGC -XX:+UseG1GC -XX:LargePageSizeInBytes=128m -XX:+UseFastAccessorMethods -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/export/Logs/xfg-frame-archetype-std-boot -Xloggc:/export/Logs/xfg-frame-archetype-std-boot/gc-xfg-frame-archetype-std-boot.log -XX:+PrintGCDetails -XX:+PrintGCDateStamps
</java_jvm>
<profileActive>
test
</profileActive>
</properties>
</profile>
<profile>
<id>
prod
</id>
<properties>
<java_jvm>
-Xms6G -Xmx6G -server -XX:MaxPermSize=256M -Xss256K -Dspring.profiles.active=release -XX:+DisableExplicitGC -XX:+UseG1GC -XX:LargePageSizeInBytes=128m -XX:+UseFastAccessorMethods -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/export/Logs/fq-mall-activity-app -Xloggc:/export/Logs/xfg-frame-archetype-std-boot/gc-xfg-frame-archetype-std-boot.log -XX:+PrintGCDetails -XX:+PrintGCDateStamps
</java_jvm>
<profileActive>
prod
</profileActive>
</properties>
</profile>
</profiles>
</project>
scaffold/src/test/resources/projects/basic/archetype.properties
0 → 100644
浏览文件 @
41ae576f
#Mon Oct 30 15:50:35 CST 2023
package
=
cn.bugstack
version
=
1.0.0-SNAPSHOT
groupId
=
cn.bugstack
artifactId
=
xfg-frame-archetype-std
gitignore
=
.gitignore
appName
=
xfg-ddd
uAppName
=
XfgDDD
author
=
system
date
=
2023-10-24 10:24
\ No newline at end of file
scaffold/src/test/resources/projects/basic/goal.txt
0 → 100644
浏览文件 @
41ae576f
xfg-frame-archetype-std-app/src/main/java/cn/bugstack/config/RedisClientConfig.java
浏览文件 @
41ae576f
...
@@ -36,7 +36,7 @@ public class RedisClientConfig {
...
@@ -36,7 +36,7 @@ public class RedisClientConfig {
config
.
useSingleServer
()
config
.
useSingleServer
()
.
setAddress
(
"redis://"
+
properties
.
getHost
()
+
":"
+
properties
.
getPort
())
.
setAddress
(
"redis://"
+
properties
.
getHost
()
+
":"
+
properties
.
getPort
())
.
setPassword
(
properties
.
getPassword
())
//
.setPassword(properties.getPassword())
.
setConnectionPoolSize
(
properties
.
getPoolSize
())
.
setConnectionPoolSize
(
properties
.
getPoolSize
())
.
setConnectionMinimumIdleSize
(
properties
.
getMinIdleSize
())
.
setConnectionMinimumIdleSize
(
properties
.
getMinIdleSize
())
.
setIdleConnectionTimeout
(
properties
.
getIdleTimeout
())
.
setIdleConnectionTimeout
(
properties
.
getIdleTimeout
())
...
...
xfg-frame-archetype-std-app/src/main/resources/application-dev.yml
浏览文件 @
41ae576f
...
@@ -28,7 +28,6 @@ redis:
...
@@ -28,7 +28,6 @@ redis:
config
:
config
:
host
:
127.0.0.1
host
:
127.0.0.1
port
:
6379
port
:
6379
password
:
123456
pool-size
:
10
pool-size
:
10
min-idle-size
:
5
min-idle-size
:
5
idle-timeout
:
30000
idle-timeout
:
30000
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录