From ab603cca06bfd98dd0c27e52c589edc1d63a772d Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E5=B0=8F=E5=82=85=E5=93=A5?= <184172133@qq.com>
Date: Sat, 4 Nov 2023 09:12:52 +0800
Subject: [PATCH] =?UTF-8?q?=E5=B0=8F=E5=82=85=E5=93=A5=EF=BC=8Cfeat?=
=?UTF-8?q?=EF=BC=9Ainit=20project?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
pom.xml | 215 ++++++++++++++++++
xfg-frame-archetype-std-api/pom.xml | 46 ++++
.../java/cn/bugstack/api/IUserService.java | 7 +
.../cn/bugstack/api/model/package-info.java | 4 +
xfg-frame-archetype-std-app/Dockerfile | 17 ++
xfg-frame-archetype-std-app/build.sh | 6 +
xfg-frame-archetype-std-app/pom.xml | 155 +++++++++++++
.../main/java/cn/bugstack/Application.java | 17 ++
.../java/cn/bugstack/config/GuavaConfig.java | 20 ++
.../cn/bugstack/config/ThreadPoolConfig.java | 50 ++++
.../config/ThreadPoolConfigProperties.java | 26 +++
.../java/cn/bugstack/config/package-info.java | 6 +
.../main/java/cn/bugstack/package-info.java | 4 +
.../src/main/resources/application-dev.yml | 55 +++++
.../src/main/resources/application-prod.yml | 41 ++++
.../src/main/resources/application-test.yml | 41 ++++
.../src/main/resources/application.yml | 5 +
.../src/main/resources/logback-spring.xml | 113 +++++++++
.../mybatis/config/mybatis-config.xml | 9 +
.../mybatis/mapper/frame_case_mapper.xml | 25 ++
.../test/java/cn/bugstack/test/ApiTest.java | 19 ++
xfg-frame-archetype-std-domain/pom.xml | 75 ++++++
.../domain/xxx/adapter/package-info.java | 4 +
.../xxx/model/aggregate/package-info.java | 7 +
.../domain/xxx/model/entity/package-info.java | 7 +
.../domain/xxx/model/valobj/package-info.java | 6 +
.../domain/xxx/repository/package-info.java | 5 +
.../domain/xxx/service/package-info.java | 1 +
.../yyy/model/aggregate/package-info.java | 7 +
.../domain/yyy/model/entity/package-info.java | 7 +
.../domain/yyy/model/valobj/package-info.java | 6 +
.../domain/yyy/repository/package-info.java | 5 +
.../domain/yyy/service/package-info.java | 1 +
.../pom.xml | 46 ++++
.../gateway/adapter/package-info.java | 1 +
.../gateway/api/package-info.java | 1 +
.../gateway/dto/package-info.java | 1 +
.../persistent/dao/package-info.java | 4 +
.../persistent/po/package-info.java | 4 +
.../persistent/repository/package-info.java | 4 +
xfg-frame-archetype-std-trigger/pom.xml | 72 ++++++
.../bugstack/trigger/http/package-info.java | 4 +
.../cn/bugstack/trigger/job/package-info.java | 4 +
.../trigger/listener/package-info.java | 5 +
.../cn/bugstack/trigger/rpc/UserService.java | 16 ++
xfg-frame-archetype-std-types/pom.xml | 53 +++++
.../cn/bugstack/types/common/Constants.java | 7 +
.../cn/bugstack/types/enums/ResponseCode.java | 20 ++
.../types/exception/AppException.java | 46 ++++
49 files changed, 1300 insertions(+)
create mode 100644 pom.xml
create mode 100644 xfg-frame-archetype-std-api/pom.xml
create mode 100644 xfg-frame-archetype-std-api/src/main/java/cn/bugstack/api/IUserService.java
create mode 100644 xfg-frame-archetype-std-api/src/main/java/cn/bugstack/api/model/package-info.java
create mode 100644 xfg-frame-archetype-std-app/Dockerfile
create mode 100644 xfg-frame-archetype-std-app/build.sh
create mode 100644 xfg-frame-archetype-std-app/pom.xml
create mode 100644 xfg-frame-archetype-std-app/src/main/java/cn/bugstack/Application.java
create mode 100644 xfg-frame-archetype-std-app/src/main/java/cn/bugstack/config/GuavaConfig.java
create mode 100644 xfg-frame-archetype-std-app/src/main/java/cn/bugstack/config/ThreadPoolConfig.java
create mode 100644 xfg-frame-archetype-std-app/src/main/java/cn/bugstack/config/ThreadPoolConfigProperties.java
create mode 100644 xfg-frame-archetype-std-app/src/main/java/cn/bugstack/config/package-info.java
create mode 100644 xfg-frame-archetype-std-app/src/main/java/cn/bugstack/package-info.java
create mode 100644 xfg-frame-archetype-std-app/src/main/resources/application-dev.yml
create mode 100644 xfg-frame-archetype-std-app/src/main/resources/application-prod.yml
create mode 100644 xfg-frame-archetype-std-app/src/main/resources/application-test.yml
create mode 100644 xfg-frame-archetype-std-app/src/main/resources/application.yml
create mode 100644 xfg-frame-archetype-std-app/src/main/resources/logback-spring.xml
create mode 100644 xfg-frame-archetype-std-app/src/main/resources/mybatis/config/mybatis-config.xml
create mode 100644 xfg-frame-archetype-std-app/src/main/resources/mybatis/mapper/frame_case_mapper.xml
create mode 100644 xfg-frame-archetype-std-app/src/test/java/cn/bugstack/test/ApiTest.java
create mode 100644 xfg-frame-archetype-std-domain/pom.xml
create mode 100644 xfg-frame-archetype-std-domain/src/main/java/cn/bugstack/domain/xxx/adapter/package-info.java
create mode 100644 xfg-frame-archetype-std-domain/src/main/java/cn/bugstack/domain/xxx/model/aggregate/package-info.java
create mode 100644 xfg-frame-archetype-std-domain/src/main/java/cn/bugstack/domain/xxx/model/entity/package-info.java
create mode 100644 xfg-frame-archetype-std-domain/src/main/java/cn/bugstack/domain/xxx/model/valobj/package-info.java
create mode 100644 xfg-frame-archetype-std-domain/src/main/java/cn/bugstack/domain/xxx/repository/package-info.java
create mode 100644 xfg-frame-archetype-std-domain/src/main/java/cn/bugstack/domain/xxx/service/package-info.java
create mode 100644 xfg-frame-archetype-std-domain/src/main/java/cn/bugstack/domain/yyy/model/aggregate/package-info.java
create mode 100644 xfg-frame-archetype-std-domain/src/main/java/cn/bugstack/domain/yyy/model/entity/package-info.java
create mode 100644 xfg-frame-archetype-std-domain/src/main/java/cn/bugstack/domain/yyy/model/valobj/package-info.java
create mode 100644 xfg-frame-archetype-std-domain/src/main/java/cn/bugstack/domain/yyy/repository/package-info.java
create mode 100644 xfg-frame-archetype-std-domain/src/main/java/cn/bugstack/domain/yyy/service/package-info.java
create mode 100644 xfg-frame-archetype-std-infrastructure/pom.xml
create mode 100644 xfg-frame-archetype-std-infrastructure/src/main/java/cn/bugstack/infrastructure/gateway/adapter/package-info.java
create mode 100644 xfg-frame-archetype-std-infrastructure/src/main/java/cn/bugstack/infrastructure/gateway/api/package-info.java
create mode 100644 xfg-frame-archetype-std-infrastructure/src/main/java/cn/bugstack/infrastructure/gateway/dto/package-info.java
create mode 100644 xfg-frame-archetype-std-infrastructure/src/main/java/cn/bugstack/infrastructure/persistent/dao/package-info.java
create mode 100644 xfg-frame-archetype-std-infrastructure/src/main/java/cn/bugstack/infrastructure/persistent/po/package-info.java
create mode 100644 xfg-frame-archetype-std-infrastructure/src/main/java/cn/bugstack/infrastructure/persistent/repository/package-info.java
create mode 100644 xfg-frame-archetype-std-trigger/pom.xml
create mode 100644 xfg-frame-archetype-std-trigger/src/main/java/cn/bugstack/trigger/http/package-info.java
create mode 100644 xfg-frame-archetype-std-trigger/src/main/java/cn/bugstack/trigger/job/package-info.java
create mode 100644 xfg-frame-archetype-std-trigger/src/main/java/cn/bugstack/trigger/listener/package-info.java
create mode 100644 xfg-frame-archetype-std-trigger/src/main/java/cn/bugstack/trigger/rpc/UserService.java
create mode 100644 xfg-frame-archetype-std-types/pom.xml
create mode 100644 xfg-frame-archetype-std-types/src/main/java/cn/bugstack/types/common/Constants.java
create mode 100644 xfg-frame-archetype-std-types/src/main/java/cn/bugstack/types/enums/ResponseCode.java
create mode 100644 xfg-frame-archetype-std-types/src/main/java/cn/bugstack/types/exception/AppException.java
diff --git a/pom.xml b/pom.xml
new file mode 100644
index 0000000..e2cf923
--- /dev/null
+++ b/pom.xml
@@ -0,0 +1,215 @@
+
+
+ 4.0.0
+
+ cn.bugstack
+ xfg-frame-archetype-std
+ 1.0-SNAPSHOT
+ pom
+
+
+ xfg-frame-archetype-std-app
+ xfg-frame-archetype-std-domain
+ xfg-frame-archetype-std-trigger
+ xfg-frame-archetype-std-infrastructure
+ xfg-frame-archetype-std-types
+ xfg-frame-archetype-std-api
+
+
+
+ 1.8
+ UTF-8
+ 8
+ 8
+ UTF-8
+
+
+
+
+ xiaofuge
+ 184172133@qq.com
+ fuzhengwei
+ https://github.com/fuzhengwei
+
+
+
+
+
+ Apache License, Version 2.0
+ https://www.apache.org/licenses/LICENSE-2.0
+
+
+
+
+ org.springframework.boot
+ spring-boot-starter-parent
+ 2.7.12
+
+
+
+
+
+ org.mybatis.spring.boot
+ mybatis-spring-boot-starter
+ 2.1.4
+
+
+
+ mysql
+ mysql-connector-java
+ 8.0.22
+
+
+ com.alibaba
+ fastjson
+ 2.0.28
+
+
+ org.apache.commons
+ commons-lang3
+ 3.9
+
+
+ com.google.guava
+ guava
+ 32.1.3-jre
+
+
+ dom4j
+ dom4j
+ 1.6.1
+
+
+ com.thoughtworks.xstream
+ xstream
+ 1.4.10
+
+
+ io.jsonwebtoken
+ jjwt
+ 0.9.1
+
+
+ com.auth0
+ java-jwt
+ 4.4.0
+
+
+ commons-codec
+ commons-codec
+ 1.15
+
+
+
+ org.apache.dubbo
+ dubbo
+ 3.0.9
+
+
+ org.apache.dubbo
+ dubbo-spring-boot-starter
+ 3.0.9
+
+
+
+
+
+
+
+ com.alibaba.nacos
+ nacos-client
+ 2.1.0
+
+
+
+
+ cn.bugstack
+ xfg-frame-archetype-std-domain
+ 1.0-SNAPSHOT
+
+
+ cn.bugstack
+ xfg-frame-archetype-std-infrastructure
+ 1.0-SNAPSHOT
+
+
+ cn.bugstack
+ xfg-frame-archetype-std-types
+ 1.0-SNAPSHOT
+
+
+ cn.bugstack
+ xfg-frame-archetype-std-trigger
+ 1.0-SNAPSHOT
+
+
+ cn.bugstack
+ xfg-frame-archetype-std-api
+ 1.0-SNAPSHOT
+
+
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-archetype-plugin
+ 3.2.0
+
+
+ org.apache.maven.plugins
+ maven-compiler-plugin
+ 3.0
+
+ ${java.version}
+ ${java.version}
+ ${project.build.sourceEncoding}
+
+
+
+ org.apache.maven.plugins
+ maven-resources-plugin
+ 2.5
+
+ UTF-8
+
+
+
+ org.codehaus.mojo
+ versions-maven-plugin
+ 2.7
+
+
+
+
+
+
+ dev
+
+ true
+
+
+ -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
+ dev
+
+
+
+ test
+
+ -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
+ test
+
+
+
+ prod
+
+ -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
+ prod
+
+
+
+
+
diff --git a/xfg-frame-archetype-std-api/pom.xml b/xfg-frame-archetype-std-api/pom.xml
new file mode 100644
index 0000000..2dee2f8
--- /dev/null
+++ b/xfg-frame-archetype-std-api/pom.xml
@@ -0,0 +1,46 @@
+
+
+ 4.0.0
+
+ cn.bugstack
+ xfg-frame-archetype-std
+ 1.0-SNAPSHOT
+
+
+ xfg-frame-archetype-std-api
+
+
+
+ org.projectlombok
+ lombok
+ 1.18.26
+
+
+ jakarta.validation
+ jakarta.validation-api
+ 3.0.2
+
+
+ cn.bugstack
+ xfg-frame-archetype-std-types
+ 1.0-SNAPSHOT
+
+
+
+
+ xfg-frame-archetype-std-api
+
+
+ org.apache.maven.plugins
+ maven-compiler-plugin
+
+ ${java.version}
+ ${java.version}
+
+
+
+
+
+
\ No newline at end of file
diff --git a/xfg-frame-archetype-std-api/src/main/java/cn/bugstack/api/IUserService.java b/xfg-frame-archetype-std-api/src/main/java/cn/bugstack/api/IUserService.java
new file mode 100644
index 0000000..febfa89
--- /dev/null
+++ b/xfg-frame-archetype-std-api/src/main/java/cn/bugstack/api/IUserService.java
@@ -0,0 +1,7 @@
+package cn.bugstack.api;
+
+public interface IUserService {
+
+ String queryUserInfo(String req);
+
+}
diff --git a/xfg-frame-archetype-std-api/src/main/java/cn/bugstack/api/model/package-info.java b/xfg-frame-archetype-std-api/src/main/java/cn/bugstack/api/model/package-info.java
new file mode 100644
index 0000000..e2a002b
--- /dev/null
+++ b/xfg-frame-archetype-std-api/src/main/java/cn/bugstack/api/model/package-info.java
@@ -0,0 +1,4 @@
+/**
+ * RPC 接口层;因为RPC的调用方式,需要调用方依赖接口提供方的接口描述信息,所以需要单独提供Jar。这个包下编写接口所需的基础对象和DTO对象
+ */
+package cn.bugstack.api.model;
\ No newline at end of file
diff --git a/xfg-frame-archetype-std-app/Dockerfile b/xfg-frame-archetype-std-app/Dockerfile
new file mode 100644
index 0000000..aa15a40
--- /dev/null
+++ b/xfg-frame-archetype-std-app/Dockerfile
@@ -0,0 +1,17 @@
+# 基础镜像
+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/xfg-frame-archetype-std-app-app.jar /xfg-frame-archetype-std-app-app.jar
+
+ENTRYPOINT ["sh","-c","java -jar $JAVA_OPTS /xfg-frame-archetype-std-app-app.jar $PARAMS"]
\ No newline at end of file
diff --git a/xfg-frame-archetype-std-app/build.sh b/xfg-frame-archetype-std-app/build.sh
new file mode 100644
index 0000000..6be66e2
--- /dev/null
+++ b/xfg-frame-archetype-std-app/build.sh
@@ -0,0 +1,6 @@
+
+# 普通镜像构建,随系统版本构建 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
diff --git a/xfg-frame-archetype-std-app/pom.xml b/xfg-frame-archetype-std-app/pom.xml
new file mode 100644
index 0000000..ffb7b64
--- /dev/null
+++ b/xfg-frame-archetype-std-app/pom.xml
@@ -0,0 +1,155 @@
+
+
+ 4.0.0
+
+ cn.bugstack
+ xfg-frame-archetype-std
+ 1.0-SNAPSHOT
+
+
+ xfg-frame-archetype-std-app
+
+ jar
+
+
+
+ org.springframework.boot
+ spring-boot-starter-web
+
+
+ org.springframework.boot
+ spring-boot-starter-test
+ test
+
+
+ org.apache.tomcat.embed
+ tomcat-embed-core
+
+
+ org.springframework.boot
+ spring-boot-configuration-processor
+
+
+ org.mybatis.spring.boot
+ mybatis-spring-boot-starter
+
+
+
+ mysql
+ mysql-connector-java
+
+
+ com.alibaba
+ fastjson
+
+
+ org.apache.commons
+ commons-lang3
+
+
+ org.projectlombok
+ lombok
+
+
+ com.google.guava
+ guava
+
+
+ junit
+ junit
+ test
+
+
+ io.jsonwebtoken
+ jjwt
+
+
+ com.auth0
+ java-jwt
+
+
+ commons-codec
+ commons-codec
+
+
+ com.squareup.retrofit2
+ converter-gson
+ 2.9.0
+
+
+
+ org.apache.dubbo
+ dubbo
+
+
+ org.apache.dubbo
+ dubbo-spring-boot-starter
+
+
+
+
+
+
+ com.alibaba.nacos
+ nacos-client
+
+
+
+
+ cn.bugstack
+ xfg-frame-archetype-std-trigger
+
+
+ cn.bugstack
+ xfg-frame-archetype-std-infrastructure
+
+
+
+
+ xfg-frame-archetype-std-app
+
+
+ src/main/resources
+ true
+
+ **/**
+
+
+
+
+
+ src/test/resources
+ true
+
+ **/**
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-surefire-plugin
+ 2.6
+
+ true
+ false
+
+ **/*Test.java
+
+
+
+
+ org.springframework.boot
+ spring-boot-maven-plugin
+
+ cn.bugstack.Application
+ JAR
+
+
+
+
+
+
+
diff --git a/xfg-frame-archetype-std-app/src/main/java/cn/bugstack/Application.java b/xfg-frame-archetype-std-app/src/main/java/cn/bugstack/Application.java
new file mode 100644
index 0000000..1e2160b
--- /dev/null
+++ b/xfg-frame-archetype-std-app/src/main/java/cn/bugstack/Application.java
@@ -0,0 +1,17 @@
+package cn.bugstack;
+
+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);
+ }
+
+}
diff --git a/xfg-frame-archetype-std-app/src/main/java/cn/bugstack/config/GuavaConfig.java b/xfg-frame-archetype-std-app/src/main/java/cn/bugstack/config/GuavaConfig.java
new file mode 100644
index 0000000..d677317
--- /dev/null
+++ b/xfg-frame-archetype-std-app/src/main/java/cn/bugstack/config/GuavaConfig.java
@@ -0,0 +1,20 @@
+package cn.bugstack.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 cache() {
+ return CacheBuilder.newBuilder()
+ .expireAfterWrite(3, TimeUnit.SECONDS)
+ .build();
+ }
+
+}
diff --git a/xfg-frame-archetype-std-app/src/main/java/cn/bugstack/config/ThreadPoolConfig.java b/xfg-frame-archetype-std-app/src/main/java/cn/bugstack/config/ThreadPoolConfig.java
new file mode 100644
index 0000000..629011a
--- /dev/null
+++ b/xfg-frame-archetype-std-app/src/main/java/cn/bugstack/config/ThreadPoolConfig.java
@@ -0,0 +1,50 @@
+package cn.bugstack.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);
+ }
+
+}
diff --git a/xfg-frame-archetype-std-app/src/main/java/cn/bugstack/config/ThreadPoolConfigProperties.java b/xfg-frame-archetype-std-app/src/main/java/cn/bugstack/config/ThreadPoolConfigProperties.java
new file mode 100644
index 0000000..d6b643d
--- /dev/null
+++ b/xfg-frame-archetype-std-app/src/main/java/cn/bugstack/config/ThreadPoolConfigProperties.java
@@ -0,0 +1,26 @@
+package cn.bugstack.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";
+
+}
diff --git a/xfg-frame-archetype-std-app/src/main/java/cn/bugstack/config/package-info.java b/xfg-frame-archetype-std-app/src/main/java/cn/bugstack/config/package-info.java
new file mode 100644
index 0000000..922bb89
--- /dev/null
+++ b/xfg-frame-archetype-std-app/src/main/java/cn/bugstack/config/package-info.java
@@ -0,0 +1,6 @@
+/**
+ * 1. 用于管理引入的Jar所需的资源启动或者初始化处理
+ * 2. 如果有AOP切面,可以再建一个aop包,来写切面逻辑
+ */
+package cn.bugstack.config;
+
diff --git a/xfg-frame-archetype-std-app/src/main/java/cn/bugstack/package-info.java b/xfg-frame-archetype-std-app/src/main/java/cn/bugstack/package-info.java
new file mode 100644
index 0000000..a39d3cd
--- /dev/null
+++ b/xfg-frame-archetype-std-app/src/main/java/cn/bugstack/package-info.java
@@ -0,0 +1,4 @@
+/**
+ * 应用启动层,注意Application所在的包路径,是在上一层。这样才能扫描到其他 module
+ * */
+package cn.bugstack;
\ No newline at end of file
diff --git a/xfg-frame-archetype-std-app/src/main/resources/application-dev.yml b/xfg-frame-archetype-std-app/src/main/resources/application-dev.yml
new file mode 100644
index 0000000..b40f3c2
--- /dev/null
+++ b/xfg-frame-archetype-std-app/src/main/resources/application-dev.yml
@@ -0,0 +1,55 @@
+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
+
+# 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
+
+# 日志
+logging:
+ level:
+ root: info
+ config: classpath:logback-spring.xml
\ No newline at end of file
diff --git a/xfg-frame-archetype-std-app/src/main/resources/application-prod.yml b/xfg-frame-archetype-std-app/src/main/resources/application-prod.yml
new file mode 100644
index 0000000..f369619
--- /dev/null
+++ b/xfg-frame-archetype-std-app/src/main/resources/application-prod.yml
@@ -0,0 +1,41 @@
+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
diff --git a/xfg-frame-archetype-std-app/src/main/resources/application-test.yml b/xfg-frame-archetype-std-app/src/main/resources/application-test.yml
new file mode 100644
index 0000000..f369619
--- /dev/null
+++ b/xfg-frame-archetype-std-app/src/main/resources/application-test.yml
@@ -0,0 +1,41 @@
+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
diff --git a/xfg-frame-archetype-std-app/src/main/resources/application.yml b/xfg-frame-archetype-std-app/src/main/resources/application.yml
new file mode 100644
index 0000000..3896141
--- /dev/null
+++ b/xfg-frame-archetype-std-app/src/main/resources/application.yml
@@ -0,0 +1,5 @@
+spring:
+ config:
+ name: xfg-frame-archetype-std-app
+ profiles:
+ active: dev
diff --git a/xfg-frame-archetype-std-app/src/main/resources/logback-spring.xml b/xfg-frame-archetype-std-app/src/main/resources/logback-spring.xml
new file mode 100644
index 0000000..932ad72
--- /dev/null
+++ b/xfg-frame-archetype-std-app/src/main/resources/logback-spring.xml
@@ -0,0 +1,113 @@
+
+
+
+
+ logback
+
+
+
+
+
+
+
+
+
+
+
+ info
+
+
+ %d{yy-MM-dd.HH:mm:ss.SSS} [%-16t] %-5p %-22c{0}%X{ServiceId} -%X{trace-id} %m%n
+ UTF-8
+
+
+
+
+
+
+
+ ./data/log/log_info.log
+
+
+ %d{yy-MM-dd.HH:mm:ss.SSS} [%-16t] %-5p %-22c{0}%X{ServiceId} -%X{trace-id} %m%n
+ UTF-8
+
+
+
+
+ ./data/log/log-info-%d{yyyy-MM-dd}.%i.log
+
+ 100MB
+
+
+ 15
+ 10GB
+
+
+
+
+
+
+ ./data/log/log_error.log
+
+
+ %d{yy-MM-dd.HH:mm:ss.SSS} [%-16t] %-5p %-22c{0}%X{ServiceId} -%X{trace-id} %m%n
+ UTF-8
+
+
+
+ ./data/log/log-error-%d{yyyy-MM-dd}.%i.log
+
+ 100MB
+
+
+ 7
+ 5GB
+
+
+
+ WARN
+
+
+
+
+
+
+ 0
+
+ 8192
+
+ true
+
+ false
+
+
+
+
+
+ 0
+
+ 1024
+
+ true
+
+ false
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/xfg-frame-archetype-std-app/src/main/resources/mybatis/config/mybatis-config.xml b/xfg-frame-archetype-std-app/src/main/resources/mybatis/config/mybatis-config.xml
new file mode 100644
index 0000000..ed8ee96
--- /dev/null
+++ b/xfg-frame-archetype-std-app/src/main/resources/mybatis/config/mybatis-config.xml
@@ -0,0 +1,9 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/xfg-frame-archetype-std-app/src/main/resources/mybatis/mapper/frame_case_mapper.xml b/xfg-frame-archetype-std-app/src/main/resources/mybatis/mapper/frame_case_mapper.xml
new file mode 100644
index 0000000..7e2ed51
--- /dev/null
+++ b/xfg-frame-archetype-std-app/src/main/resources/mybatis/mapper/frame_case_mapper.xml
@@ -0,0 +1,25 @@
+
+
+
+
+
+
+
+
+
+
+
+ INSERT INTO table(a,b,c) VALUES(#{a}, #{b}, #{c})
+
+
+
+ UPDATE table SET a = #{a} WHERE b = #{b}
+
+
+
+
+
diff --git a/xfg-frame-archetype-std-app/src/test/java/cn/bugstack/test/ApiTest.java b/xfg-frame-archetype-std-app/src/test/java/cn/bugstack/test/ApiTest.java
new file mode 100644
index 0000000..9bc1a20
--- /dev/null
+++ b/xfg-frame-archetype-std-app/src/test/java/cn/bugstack/test/ApiTest.java
@@ -0,0 +1,19 @@
+package cn.bugstack.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("测试完成");
+ }
+
+}
diff --git a/xfg-frame-archetype-std-domain/pom.xml b/xfg-frame-archetype-std-domain/pom.xml
new file mode 100644
index 0000000..5277f9b
--- /dev/null
+++ b/xfg-frame-archetype-std-domain/pom.xml
@@ -0,0 +1,75 @@
+
+
+ 4.0.0
+
+ cn.bugstack
+ xfg-frame-archetype-std
+ 1.0-SNAPSHOT
+
+
+ xfg-frame-archetype-std-domain
+
+
+
+ org.projectlombok
+ lombok
+
+
+ com.alibaba
+ fastjson
+
+
+ org.apache.commons
+ commons-lang3
+
+
+ com.google.guava
+ guava
+
+
+ io.jsonwebtoken
+ jjwt
+
+
+ com.auth0
+ java-jwt
+
+
+ commons-codec
+ commons-codec
+
+
+
+ cn.bugstack
+ xfg-frame-archetype-std-types
+
+
+
+
+ xfg-frame-archetype-std-domain
+
+
+ org.apache.maven.plugins
+ maven-archetype-plugin
+ 3.2.0
+
+
+
+ create-from-project
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-compiler-plugin
+
+ ${java.version}
+ ${java.version}
+ ${java.version}
+
+
+
+
+
+
diff --git a/xfg-frame-archetype-std-domain/src/main/java/cn/bugstack/domain/xxx/adapter/package-info.java b/xfg-frame-archetype-std-domain/src/main/java/cn/bugstack/domain/xxx/adapter/package-info.java
new file mode 100644
index 0000000..9a649da
--- /dev/null
+++ b/xfg-frame-archetype-std-domain/src/main/java/cn/bugstack/domain/xxx/adapter/package-info.java
@@ -0,0 +1,4 @@
+/**
+ * 外部接口适配器层;当需要调用外部接口时,则创建出这一层,并定义接口,之后由基础设施层的 adapter 层具体实现
+ */
+package cn.bugstack.domain.xxx.adapter;
\ No newline at end of file
diff --git a/xfg-frame-archetype-std-domain/src/main/java/cn/bugstack/domain/xxx/model/aggregate/package-info.java b/xfg-frame-archetype-std-domain/src/main/java/cn/bugstack/domain/xxx/model/aggregate/package-info.java
new file mode 100644
index 0000000..370736a
--- /dev/null
+++ b/xfg-frame-archetype-std-domain/src/main/java/cn/bugstack/domain/xxx/model/aggregate/package-info.java
@@ -0,0 +1,7 @@
+/**
+ * 聚合对象;
+ * 1. 聚合实体和值对象
+ * 2. 聚合是聚合的对象,和提供基础处理对象的方法。但不建议在聚合中引入仓储和接口来做过大的逻辑。而这些复杂的操作应该放到service中处理
+ * 3. 对象名称 XxxAggregate
+ */
+package cn.bugstack.domain.xxx.model.aggregate;
\ No newline at end of file
diff --git a/xfg-frame-archetype-std-domain/src/main/java/cn/bugstack/domain/xxx/model/entity/package-info.java b/xfg-frame-archetype-std-domain/src/main/java/cn/bugstack/domain/xxx/model/entity/package-info.java
new file mode 100644
index 0000000..56076f0
--- /dev/null
+++ b/xfg-frame-archetype-std-domain/src/main/java/cn/bugstack/domain/xxx/model/entity/package-info.java
@@ -0,0 +1,7 @@
+/**
+ * 实体对象;
+ * 1. 一般和数据库持久化对象1v1的关系,但因各自开发系统的不同,也有1vn的可能。
+ * 2. 如果是老系统改造,那么旧的库表冗余了太多的字段,可能会有nv1的情况
+ * 3. 对象名称 XxxEntity
+ */
+package cn.bugstack.domain.xxx.model.entity;
\ No newline at end of file
diff --git a/xfg-frame-archetype-std-domain/src/main/java/cn/bugstack/domain/xxx/model/valobj/package-info.java b/xfg-frame-archetype-std-domain/src/main/java/cn/bugstack/domain/xxx/model/valobj/package-info.java
new file mode 100644
index 0000000..49626ae
--- /dev/null
+++ b/xfg-frame-archetype-std-domain/src/main/java/cn/bugstack/domain/xxx/model/valobj/package-info.java
@@ -0,0 +1,6 @@
+/**
+ * 值对象;
+ * 1. 用于描述对象属性的值,如一个库表中有json后者一个字段多个属性信息的枚举对象
+ * 2. 对象名称如;XxxVO
+ */
+package cn.bugstack.domain.xxx.model.valobj;
\ No newline at end of file
diff --git a/xfg-frame-archetype-std-domain/src/main/java/cn/bugstack/domain/xxx/repository/package-info.java b/xfg-frame-archetype-std-domain/src/main/java/cn/bugstack/domain/xxx/repository/package-info.java
new file mode 100644
index 0000000..2834761
--- /dev/null
+++ b/xfg-frame-archetype-std-domain/src/main/java/cn/bugstack/domain/xxx/repository/package-info.java
@@ -0,0 +1,5 @@
+/**
+ * 仓储服务
+ * 1. 定义仓储接口,之后由基础设施层做具体实现
+ */
+package cn.bugstack.domain.xxx.repository;
\ No newline at end of file
diff --git a/xfg-frame-archetype-std-domain/src/main/java/cn/bugstack/domain/xxx/service/package-info.java b/xfg-frame-archetype-std-domain/src/main/java/cn/bugstack/domain/xxx/service/package-info.java
new file mode 100644
index 0000000..7941ad4
--- /dev/null
+++ b/xfg-frame-archetype-std-domain/src/main/java/cn/bugstack/domain/xxx/service/package-info.java
@@ -0,0 +1 @@
+package cn.bugstack.domain.xxx.service;
\ No newline at end of file
diff --git a/xfg-frame-archetype-std-domain/src/main/java/cn/bugstack/domain/yyy/model/aggregate/package-info.java b/xfg-frame-archetype-std-domain/src/main/java/cn/bugstack/domain/yyy/model/aggregate/package-info.java
new file mode 100644
index 0000000..43fd7a7
--- /dev/null
+++ b/xfg-frame-archetype-std-domain/src/main/java/cn/bugstack/domain/yyy/model/aggregate/package-info.java
@@ -0,0 +1,7 @@
+/**
+ * 聚合对象;
+ * 1. 聚合实体和值对象
+ * 2. 聚合是聚合的对象,和提供基础处理对象的方法。但不建议在聚合中引入仓储和接口来做过大的逻辑。而这些复杂的操作应该放到service中处理
+ * 3. 对象名称 XxxAggregate
+ */
+package cn.bugstack.domain.yyy.model.aggregate;
\ No newline at end of file
diff --git a/xfg-frame-archetype-std-domain/src/main/java/cn/bugstack/domain/yyy/model/entity/package-info.java b/xfg-frame-archetype-std-domain/src/main/java/cn/bugstack/domain/yyy/model/entity/package-info.java
new file mode 100644
index 0000000..4e4401c
--- /dev/null
+++ b/xfg-frame-archetype-std-domain/src/main/java/cn/bugstack/domain/yyy/model/entity/package-info.java
@@ -0,0 +1,7 @@
+/**
+ * 实体对象;
+ * 1. 一般和数据库持久化对象1v1的关系,但因各自开发系统的不同,也有1vn的可能。
+ * 2. 如果是老系统改造,那么旧的库表冗余了太多的字段,可能会有nv1的情况
+ * 3. 对象名称 XxxEntity
+ */
+package cn.bugstack.domain.yyy.model.entity;
\ No newline at end of file
diff --git a/xfg-frame-archetype-std-domain/src/main/java/cn/bugstack/domain/yyy/model/valobj/package-info.java b/xfg-frame-archetype-std-domain/src/main/java/cn/bugstack/domain/yyy/model/valobj/package-info.java
new file mode 100644
index 0000000..1cf2458
--- /dev/null
+++ b/xfg-frame-archetype-std-domain/src/main/java/cn/bugstack/domain/yyy/model/valobj/package-info.java
@@ -0,0 +1,6 @@
+/**
+ * 值对象;
+ * 1. 用于描述对象属性的值,如一个库表中有json后者一个字段多个属性信息的枚举对象
+ * 2. 对象名称如;XxxVO
+ */
+package cn.bugstack.domain.yyy.model.valobj;
\ No newline at end of file
diff --git a/xfg-frame-archetype-std-domain/src/main/java/cn/bugstack/domain/yyy/repository/package-info.java b/xfg-frame-archetype-std-domain/src/main/java/cn/bugstack/domain/yyy/repository/package-info.java
new file mode 100644
index 0000000..8ad8304
--- /dev/null
+++ b/xfg-frame-archetype-std-domain/src/main/java/cn/bugstack/domain/yyy/repository/package-info.java
@@ -0,0 +1,5 @@
+/**
+ * 仓储服务
+ * 1. 定义仓储接口,之后由基础设施层做具体实现
+ */
+package cn.bugstack.domain.yyy.repository;
\ No newline at end of file
diff --git a/xfg-frame-archetype-std-domain/src/main/java/cn/bugstack/domain/yyy/service/package-info.java b/xfg-frame-archetype-std-domain/src/main/java/cn/bugstack/domain/yyy/service/package-info.java
new file mode 100644
index 0000000..7e73392
--- /dev/null
+++ b/xfg-frame-archetype-std-domain/src/main/java/cn/bugstack/domain/yyy/service/package-info.java
@@ -0,0 +1 @@
+package cn.bugstack.domain.yyy.service;
\ No newline at end of file
diff --git a/xfg-frame-archetype-std-infrastructure/pom.xml b/xfg-frame-archetype-std-infrastructure/pom.xml
new file mode 100644
index 0000000..55dea5f
--- /dev/null
+++ b/xfg-frame-archetype-std-infrastructure/pom.xml
@@ -0,0 +1,46 @@
+
+
+ 4.0.0
+
+ cn.bugstack
+ xfg-frame-archetype-std
+ 1.0-SNAPSHOT
+
+
+ xfg-frame-archetype-std-infrastructure
+
+
+
+ org.mybatis.spring.boot
+ mybatis-spring-boot-starter
+
+
+ org.projectlombok
+ lombok
+
+
+
+ cn.bugstack
+ xfg-frame-archetype-std-domain
+
+
+
+
+ xfg-frame-archetype-std-infrastructure
+
+
+ org.apache.maven.plugins
+ maven-archetype-plugin
+ 3.2.0
+
+
+
+ create-from-project
+
+
+
+
+
+
+
+
diff --git a/xfg-frame-archetype-std-infrastructure/src/main/java/cn/bugstack/infrastructure/gateway/adapter/package-info.java b/xfg-frame-archetype-std-infrastructure/src/main/java/cn/bugstack/infrastructure/gateway/adapter/package-info.java
new file mode 100644
index 0000000..c79e366
--- /dev/null
+++ b/xfg-frame-archetype-std-infrastructure/src/main/java/cn/bugstack/infrastructure/gateway/adapter/package-info.java
@@ -0,0 +1 @@
+package cn.bugstack.infrastructure.gateway.adapter;
\ No newline at end of file
diff --git a/xfg-frame-archetype-std-infrastructure/src/main/java/cn/bugstack/infrastructure/gateway/api/package-info.java b/xfg-frame-archetype-std-infrastructure/src/main/java/cn/bugstack/infrastructure/gateway/api/package-info.java
new file mode 100644
index 0000000..e1319b9
--- /dev/null
+++ b/xfg-frame-archetype-std-infrastructure/src/main/java/cn/bugstack/infrastructure/gateway/api/package-info.java
@@ -0,0 +1 @@
+package cn.bugstack.infrastructure.gateway.api;
\ No newline at end of file
diff --git a/xfg-frame-archetype-std-infrastructure/src/main/java/cn/bugstack/infrastructure/gateway/dto/package-info.java b/xfg-frame-archetype-std-infrastructure/src/main/java/cn/bugstack/infrastructure/gateway/dto/package-info.java
new file mode 100644
index 0000000..80f3ccb
--- /dev/null
+++ b/xfg-frame-archetype-std-infrastructure/src/main/java/cn/bugstack/infrastructure/gateway/dto/package-info.java
@@ -0,0 +1 @@
+package cn.bugstack.infrastructure.gateway.dto;
\ No newline at end of file
diff --git a/xfg-frame-archetype-std-infrastructure/src/main/java/cn/bugstack/infrastructure/persistent/dao/package-info.java b/xfg-frame-archetype-std-infrastructure/src/main/java/cn/bugstack/infrastructure/persistent/dao/package-info.java
new file mode 100644
index 0000000..7e6cb8b
--- /dev/null
+++ b/xfg-frame-archetype-std-infrastructure/src/main/java/cn/bugstack/infrastructure/persistent/dao/package-info.java
@@ -0,0 +1,4 @@
+/**
+ * DAO 接口;IXxxDao
+ */
+package cn.bugstack.infrastructure.persistent.dao;
\ No newline at end of file
diff --git a/xfg-frame-archetype-std-infrastructure/src/main/java/cn/bugstack/infrastructure/persistent/po/package-info.java b/xfg-frame-archetype-std-infrastructure/src/main/java/cn/bugstack/infrastructure/persistent/po/package-info.java
new file mode 100644
index 0000000..0ff65fe
--- /dev/null
+++ b/xfg-frame-archetype-std-infrastructure/src/main/java/cn/bugstack/infrastructure/persistent/po/package-info.java
@@ -0,0 +1,4 @@
+/**
+ * 持久化对象;XxxPO 最后的 PO 是大写,UserPO
+ */
+package cn.bugstack.infrastructure.persistent.po;
\ No newline at end of file
diff --git a/xfg-frame-archetype-std-infrastructure/src/main/java/cn/bugstack/infrastructure/persistent/repository/package-info.java b/xfg-frame-archetype-std-infrastructure/src/main/java/cn/bugstack/infrastructure/persistent/repository/package-info.java
new file mode 100644
index 0000000..18041e1
--- /dev/null
+++ b/xfg-frame-archetype-std-infrastructure/src/main/java/cn/bugstack/infrastructure/persistent/repository/package-info.java
@@ -0,0 +1,4 @@
+/**
+ * 仓储实现;用于实现 domain 中定义的仓储接口,如;IXxxRepository 在 Repository 中调用服务
+ */
+package cn.bugstack.infrastructure.persistent.repository;
\ No newline at end of file
diff --git a/xfg-frame-archetype-std-trigger/pom.xml b/xfg-frame-archetype-std-trigger/pom.xml
new file mode 100644
index 0000000..4db8b62
--- /dev/null
+++ b/xfg-frame-archetype-std-trigger/pom.xml
@@ -0,0 +1,72 @@
+
+
+ 4.0.0
+
+ cn.bugstack
+ xfg-frame-archetype-std
+ 1.0-SNAPSHOT
+
+
+ xfg-frame-archetype-std-trigger
+
+
+
+ org.springframework.boot
+ spring-boot-starter-web
+
+
+ com.alibaba
+ fastjson
+
+
+ org.springframework
+ spring-tx
+
+
+ org.apache.commons
+ commons-lang3
+
+
+
+ org.apache.dubbo
+ dubbo
+
+
+ org.apache.dubbo
+ dubbo-spring-boot-starter
+
+
+
+
+ cn.bugstack
+ xfg-frame-archetype-std-types
+
+
+ cn.bugstack
+ xfg-frame-archetype-std-domain
+
+
+ cn.bugstack
+ xfg-frame-archetype-std-api
+
+
+
+
+ xfg-frame-archetype-std-trigger
+
+
+ org.apache.maven.plugins
+ maven-archetype-plugin
+ 3.2.0
+
+
+
+ create-from-project
+
+
+
+
+
+
+
+
diff --git a/xfg-frame-archetype-std-trigger/src/main/java/cn/bugstack/trigger/http/package-info.java b/xfg-frame-archetype-std-trigger/src/main/java/cn/bugstack/trigger/http/package-info.java
new file mode 100644
index 0000000..78923e0
--- /dev/null
+++ b/xfg-frame-archetype-std-trigger/src/main/java/cn/bugstack/trigger/http/package-info.java
@@ -0,0 +1,4 @@
+/**
+ * HTTP 接口服务
+ */
+package cn.bugstack.trigger.http;
\ No newline at end of file
diff --git a/xfg-frame-archetype-std-trigger/src/main/java/cn/bugstack/trigger/job/package-info.java b/xfg-frame-archetype-std-trigger/src/main/java/cn/bugstack/trigger/job/package-info.java
new file mode 100644
index 0000000..1c1926c
--- /dev/null
+++ b/xfg-frame-archetype-std-trigger/src/main/java/cn/bugstack/trigger/job/package-info.java
@@ -0,0 +1,4 @@
+/**
+ * 任务服务,可以选择使用 Spring 默认提供的 Schedule https://bugstack.cn/md/road-map/quartz.html
+ */
+package cn.bugstack.trigger.job;
\ No newline at end of file
diff --git a/xfg-frame-archetype-std-trigger/src/main/java/cn/bugstack/trigger/listener/package-info.java b/xfg-frame-archetype-std-trigger/src/main/java/cn/bugstack/trigger/listener/package-info.java
new file mode 100644
index 0000000..c561ee9
--- /dev/null
+++ b/xfg-frame-archetype-std-trigger/src/main/java/cn/bugstack/trigger/listener/package-info.java
@@ -0,0 +1,5 @@
+/**
+ * 监听服务;在单体服务中,解耦流程。类似MQ的使用,如Spring的Event,Guava的事件总线都可以。如果使用了 Redis 那么也可以有发布/订阅使用。
+ * Guava:https://bugstack.cn/md/road-map/guava.html
+ */
+package cn.bugstack.trigger.listener;
\ No newline at end of file
diff --git a/xfg-frame-archetype-std-trigger/src/main/java/cn/bugstack/trigger/rpc/UserService.java b/xfg-frame-archetype-std-trigger/src/main/java/cn/bugstack/trigger/rpc/UserService.java
new file mode 100644
index 0000000..408b29f
--- /dev/null
+++ b/xfg-frame-archetype-std-trigger/src/main/java/cn/bugstack/trigger/rpc/UserService.java
@@ -0,0 +1,16 @@
+package cn.bugstack.trigger.rpc;
+
+import cn.bugstack.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 "查询用户信息";
+ }
+
+}
diff --git a/xfg-frame-archetype-std-types/pom.xml b/xfg-frame-archetype-std-types/pom.xml
new file mode 100644
index 0000000..9f5dbce
--- /dev/null
+++ b/xfg-frame-archetype-std-types/pom.xml
@@ -0,0 +1,53 @@
+
+
+ 4.0.0
+
+ cn.bugstack
+ xfg-frame-archetype-std
+ 1.0-SNAPSHOT
+
+
+ xfg-frame-archetype-std-types
+
+
+
+ org.springframework.boot
+ spring-boot-starter-web
+
+
+ org.projectlombok
+ lombok
+
+
+ com.thoughtworks.xstream
+ xstream
+
+
+ dom4j
+ dom4j
+
+
+ org.apache.commons
+ commons-lang3
+
+
+
+
+ xfg-frame-archetype-std-types
+
+
+ org.apache.maven.plugins
+ maven-archetype-plugin
+ 3.2.0
+
+
+
+ create-from-project
+
+
+
+
+
+
+
+
diff --git a/xfg-frame-archetype-std-types/src/main/java/cn/bugstack/types/common/Constants.java b/xfg-frame-archetype-std-types/src/main/java/cn/bugstack/types/common/Constants.java
new file mode 100644
index 0000000..3e21a0d
--- /dev/null
+++ b/xfg-frame-archetype-std-types/src/main/java/cn/bugstack/types/common/Constants.java
@@ -0,0 +1,7 @@
+package cn.bugstack.types.common;
+
+public class Constants {
+
+ public final static String SPLIT = ",";
+
+}
diff --git a/xfg-frame-archetype-std-types/src/main/java/cn/bugstack/types/enums/ResponseCode.java b/xfg-frame-archetype-std-types/src/main/java/cn/bugstack/types/enums/ResponseCode.java
new file mode 100644
index 0000000..7460d4b
--- /dev/null
+++ b/xfg-frame-archetype-std-types/src/main/java/cn/bugstack/types/enums/ResponseCode.java
@@ -0,0 +1,20 @@
+package cn.bugstack.types.enums;
+
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+import lombok.NoArgsConstructor;
+
+@AllArgsConstructor
+@NoArgsConstructor
+@Getter
+public enum ResponseCode {
+
+ SUCCESS("0000", "成功"),
+ UN_ERROR("0001", "未知失败"),
+ ILLEGAL_PARAMETER("0002", "非法参数"),
+ ;
+
+ private String code;
+ private String info;
+
+}
diff --git a/xfg-frame-archetype-std-types/src/main/java/cn/bugstack/types/exception/AppException.java b/xfg-frame-archetype-std-types/src/main/java/cn/bugstack/types/exception/AppException.java
new file mode 100644
index 0000000..8a499d4
--- /dev/null
+++ b/xfg-frame-archetype-std-types/src/main/java/cn/bugstack/types/exception/AppException.java
@@ -0,0 +1,46 @@
+package cn.bugstack.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 "cn.bugstack.x.api.types.exception.XApiException{" +
+ "code='" + code + '\'' +
+ ", info='" + info + '\'' +
+ '}';
+ }
+
+}
--
GitLab