diff --git a/.flattened-pom.xml b/.flattened-pom.xml
new file mode 100644
index 0000000..80616b8
--- /dev/null
+++ b/.flattened-pom.xml
@@ -0,0 +1,239 @@
+
+
+ 4.0.0
+
+ org.springframework.boot
+ spring-boot-starter-parent
+ 3.5.7
+
+
+ cn.meowrain.aioj
+ ai-oj
+ 1.0.0
+ pom
+ ai-oj-microservices
+ 一款集成了AI功能的OJ判题系统
+
+
+ Apache License, Version 2.0
+ https://www.apache.org/licenses/LICENSE-2.0
+
+
+
+ aioj-backend-common
+ aioj-backend-gateway
+ aioj-backend-judge-service
+ aioj-backend-user-service
+ aioj-backend-question-service
+ aioj-backend-ai-service
+ aioj-backend-auth
+ aioj-backend-upms
+ aioj-backend-file-service
+
+
+ dev
+ 1.6.0
+ 9.0.2
+ 17
+ 3.4.5
+ ${java.version}
+ 3.5.7
+ 2025.0.0.0
+ 1.0.0
+ 2025.0.0
+ ${java.version}
+ 3.14.1
+ UTF-8
+ 0.0.47
+
+
+
+
+ cn.meowrain.aioj
+ aioj-backend-common-bom
+ 1.0.0
+ pom
+ import
+
+
+ org.springframework.boot
+ spring-boot-dependencies
+ ${spring-boot.version}
+ pom
+ import
+
+
+ org.springframework.cloud
+ spring-cloud-dependencies
+ ${spring-cloud.version}
+ pom
+ import
+
+
+ com.alibaba.cloud
+ spring-cloud-alibaba-dependencies
+ ${spring-cloud-alibaba.version}
+ pom
+ import
+
+
+
+
+
+ org.projectlombok
+ lombok
+ true
+
+
+
+
+
+ true
+ src/main/resources
+
+
+
+
+
+ com.google.cloud.tools
+ jib-maven-plugin
+ ${jib.plugin.version}
+
+
+ package
+
+ build
+ buildTar
+
+
+
+
+ true
+
+ registry.cn-shanghai.aliyuncs.com/all_lib/eclipse-temurin:17.0.10_7-jdk-jammy
+
+
+ 10.0.0.3/aioj/${project.artifactId}:${project.version}
+
+ ${project.version}
+
+
+
+
+
+
+
+ ${project.build.directory}/${project.artifactId}-${project.version}.tar
+
+
+
+ Asia/Shanghai
+ ${docker.spring.active}
+
+
+ -Xms512m
+ -Xmx512m
+
+
+
+
+
+
+
+
+ maven-compiler-plugin
+ ${maven.compiler.plugin.version}
+
+ ${java.version}
+ ${java.version}
+ UTF-8
+
+
+
+ org.springframework.boot
+ spring-boot-maven-plugin
+ ${spring-boot.version}
+
+
+ org.codehaus.mojo
+ flatten-maven-plugin
+ ${flatten.plugin.version}
+
+
+ flatten
+ process-resources
+
+ flatten
+
+
+
+ flatten.clean
+ clean
+
+ clean
+
+
+
+
+ true
+ resolveCiFriendliesOnly
+
+
+
+ io.spring.javaformat
+ spring-javaformat-maven-plugin
+ ${spring.checkstyle.plugin}
+
+
+ validate
+ true
+
+
+
+
+ io.github.git-commit-id
+ git-commit-id-maven-plugin
+ ${git.commit.plugin}
+
+
+ get-the-git-infos
+ initialize
+
+
+
+ false
+ true
+ yyyy-MM-dd HH:mm:ss
+
+ ^git.build.(time|version)$
+ ^git.commit.(id|message|time).*$
+
+
+
+
+
+
+
+ dev
+
+ true
+
+
+ dev
+
+
+
+ test
+
+ test
+
+
+
+ prod
+
+ prod
+
+
+
+
diff --git a/.idea/CoolRequestCommonStatePersistent.xml b/.idea/CoolRequestCommonStatePersistent.xml
index 9b96684..9d0591c 100644
--- a/.idea/CoolRequestCommonStatePersistent.xml
+++ b/.idea/CoolRequestCommonStatePersistent.xml
@@ -1,6 +1,6 @@
-
+
\ No newline at end of file
diff --git a/.idea/dataSources.xml b/.idea/dataSources.xml
index 267fcc1..c4d21bb 100644
--- a/.idea/dataSources.xml
+++ b/.idea/dataSources.xml
@@ -25,5 +25,29 @@
jdbc:mysql://10.0.0.10/aioj_dev
$ProjectFileDir$
+
+ mysql.8
+ true
+ true
+ com.mysql.cj.jdbc.Driver
+ jdbc:mysql://10.0.0.10/aioj_dev
+ $ProjectFileDir$
+
+
+ mysql.8
+ true
+ true
+ com.mysql.cj.jdbc.Driver
+ jdbc:mysql://10.0.0.10/aioj_dev
+ $ProjectFileDir$
+
+
+ mysql.8
+ true
+ true
+ com.mysql.cj.jdbc.Driver
+ jdbc:mysql://10.0.0.10/aioj_dev
+ $ProjectFileDir$
+
\ No newline at end of file
diff --git a/.idea/db-forest-config.xml b/.idea/db-forest-config.xml
index de227fd..6437a7f 100644
--- a/.idea/db-forest-config.xml
+++ b/.idea/db-forest-config.xml
@@ -1,6 +1,6 @@
-
+
\ No newline at end of file
diff --git a/.idea/encodings.xml b/.idea/encodings.xml
index 06c2395..000e721 100644
--- a/.idea/encodings.xml
+++ b/.idea/encodings.xml
@@ -19,6 +19,7 @@
+
@@ -36,5 +37,7 @@
+
+
\ No newline at end of file
diff --git a/.idea/misc.xml b/.idea/misc.xml
index efe95dd..050f06f 100644
--- a/.idea/misc.xml
+++ b/.idea/misc.xml
@@ -10,6 +10,7 @@
+ *
+ * @author meowrain
+ * @since 1.0.0
+ */
+@NonNullApi
+@NonNullFields
+package cn.meowrain.aioj.backend.auth;
+
+import org.springframework.lang.NonNullApi;
+import org.springframework.lang.NonNullFields;
diff --git a/aioj-backend-common/.flattened-pom.xml b/aioj-backend-common/.flattened-pom.xml
new file mode 100644
index 0000000..594a3d6
--- /dev/null
+++ b/aioj-backend-common/.flattened-pom.xml
@@ -0,0 +1,28 @@
+
+
+ 4.0.0
+
+ cn.meowrain.aioj
+ ai-oj
+ 1.0.0
+
+ aioj-backend-common
+ 1.0.0
+ pom
+ AIOJ 公共模块聚合
+
+
+ Apache License, Version 2.0
+ https://www.apache.org/licenses/LICENSE-2.0
+
+
+
+ aioj-backend-common-bom
+ aioj-backend-common-core
+ aioj-backend-common-log
+ aioj-backend-common-mybatis
+ aioj-backend-common-feign
+ aioj-backend-common-starter
+
+
diff --git a/aioj-backend-common/aioj-backend-common-bom/.flattened-pom.xml b/aioj-backend-common/aioj-backend-common-bom/.flattened-pom.xml
new file mode 100644
index 0000000..933f5cc
--- /dev/null
+++ b/aioj-backend-common/aioj-backend-common-bom/.flattened-pom.xml
@@ -0,0 +1,9 @@
+
+
+ 4.0.0
+ cn.meowrain.aioj
+ aioj-backend-common-bom
+ 1.0.0
+ pom
+
diff --git a/aioj-backend-common/aioj-backend-common-bom/pom.xml b/aioj-backend-common/aioj-backend-common-bom/pom.xml
index b39f94d..2a5aaa9 100644
--- a/aioj-backend-common/aioj-backend-common-bom/pom.xml
+++ b/aioj-backend-common/aioj-backend-common-bom/pom.xml
@@ -3,43 +3,109 @@
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">
4.0.0
- aioj-backend-common-bom
+
cn.meowrain.aioj
- pom
+ aioj-backend-common-bom
${revision}
+ pom
aioj-common-bom
- 依赖管理
+ AIOJ 依赖版本统一管理 (Bill of Materials)
+
- 17
- 17
- UTF-8
+
1.0.0
- 3.5.14
+
+
3.5.7
+ 2025.0.0
2025.0.0.0
+ 6.5.6
+
+
+ 3.5.14
9.4.0
- 3.0.2
+
+
+ 5.8.41
+ 3.0.2
+ 2.9.1
+ 4.0.3
+
+
+ 2.8.4
+ 4.5.0
+
+
+ 0.13.0
+
+
+ 4.3.2
+ 4.3.0
+
+
+ 2.3.33
+
-
+
+
+ cn.meowrain.aioj
+ aioj-backend-common-core
+ ${revision}
+
+
+ cn.meowrain.aioj
+ aioj-backend-common-log
+ ${revision}
+
+
+ cn.meowrain.aioj
+ aioj-backend-common-mybatis
+ ${revision}
+
+
+ cn.meowrain.aioj
+ aioj-backend-common-feign
+ ${revision}
+
+
+ cn.meowrain.aioj
+ aioj-backend-common-starter
+ ${revision}
+
+
+ cn.meowrain.aioj
+ aioj-backend-upms-api
+ ${revision}
+
+
+ cn.meowrain.aioj
+ aioj-backend-upms-biz
+ ${revision}
+
+
+
+
tools.jackson
jackson-bom
- ${jackson.bom}
+ ${jackson.version}
pom
import
-
+
+
cn.hutool
hutool-bom
- 5.8.41
+ ${hutool.version}
pom
import
-
+
+
com.baomidou
mybatis-plus-bom
@@ -47,44 +113,105 @@
pom
import
+
+
com.mysql
mysql-connector-j
${mysql.version}
-
-
+
+
+ com.google.code.gson
+ gson
+ ${gson.version}
+
com.alibaba
easyexcel
- 4.0.3
+ ${easyexcel.version}
-
-
-
-
+
- org.springframework.boot
- spring-boot-starter-oauth2-client
- 3.5.7
+ org.springdoc
+ springdoc-openapi-starter-webmvc-ui
+ ${springdoc.version}
-
+
+ com.github.xiaoymin
+ knife4j-openapi3-jakarta-spring-boot-starter
+ ${knife4j.version}
+
+
+ org.springdoc
+ springdoc-openapi-starter-webmvc-ui
+
+
+ org.springdoc
+ springdoc-openapi-starter-webmvc-api
+
+
+ org.springdoc
+ springdoc-openapi-starter-common
+
+
+
+
+ com.github.xiaoymin
+ knife4j-gateway-spring-boot-starter
+ ${knife4j.version}
+
+
+
+
+ io.jsonwebtoken
+ jjwt-api
+ ${jjwt.version}
+
+
+ io.jsonwebtoken
+ jjwt-impl
+ ${jjwt.version}
+
+
+ io.jsonwebtoken
+ jjwt-jackson
+ ${jjwt.version}
+
+
+
+
+ org.springframework.cloud
+ spring-cloud-starter-gateway-server-webflux
+ ${spring-cloud-gateway.version}
+
+
+ org.springframework.cloud
+ spring-cloud-starter-loadbalancer
+ ${spring-cloud-loadbalancer.version}
+
+
+
org.springframework.security
spring-security-test
- 6.5.6
+ ${spring-security.version}
test
-
+
- org.springframework.boot
- spring-boot-starter-security
- 3.5.7
+ com.baomidou
+ mybatis-plus-generator
+ ${mybatis-plus.version}
+
+
+ org.freemarker
+ freemarker
+ ${freemarker.version}
-
\ No newline at end of file
diff --git a/aioj-backend-common/aioj-backend-common-core/.flattened-pom.xml b/aioj-backend-common/aioj-backend-common-core/.flattened-pom.xml
new file mode 100644
index 0000000..e9b54a3
--- /dev/null
+++ b/aioj-backend-common/aioj-backend-common-core/.flattened-pom.xml
@@ -0,0 +1,68 @@
+
+
+ 4.0.0
+
+ cn.meowrain.aioj
+ aioj-backend-common
+ 1.0.0
+
+ aioj-backend-common-core
+ 1.0.0
+ AIOJ 公共工具类核心包
+
+
+ Apache License, Version 2.0
+ https://www.apache.org/licenses/LICENSE-2.0
+
+
+
+
+ cn.hutool
+ hutool-core
+
+
+ jakarta.servlet
+ jakarta.servlet-api
+
+
+ org.springframework.cloud
+ spring-cloud-commons
+
+
+ org.springframework
+ spring-webmvc
+ provided
+
+
+ cn.hutool
+ hutool-extra
+
+
+ cn.hutool
+ hutool-http
+
+
+ org.springframework.boot
+ spring-boot-starter-web
+ true
+
+
+ org.springframework.boot
+ spring-boot-starter-json
+
+
+ org.springframework.boot
+ spring-boot-starter-validation
+
+
+ org.springframework.boot
+ spring-boot-autoconfigure
+
+
+ org.springframework.boot
+ spring-boot-starter-security
+ true
+
+
+
diff --git a/aioj-backend-common/aioj-backend-common-core/pom.xml b/aioj-backend-common/aioj-backend-common-core/pom.xml
index 23cbba8..739af61 100644
--- a/aioj-backend-common/aioj-backend-common-core/pom.xml
+++ b/aioj-backend-common/aioj-backend-common-core/pom.xml
@@ -3,22 +3,16 @@
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">
4.0.0
+
- cn.meowrain
+ cn.meowrain.aioj
aioj-backend-common
- 1.0-SNAPSHOT
+ ${revision}
aioj-backend-common-core
-
jar
- aioj 公共工具类核心包
-
-
- 17
- 17
- UTF-8
-
+ AIOJ 公共工具类核心包
diff --git a/aioj-backend-common/aioj-backend-common-core/src/main/java/cn/meowrain/aioj/backend/framework/package-info.java b/aioj-backend-common/aioj-backend-common-core/src/main/java/cn/meowrain/aioj/backend/framework/package-info.java
new file mode 100644
index 0000000..075a972
--- /dev/null
+++ b/aioj-backend-common/aioj-backend-common-core/src/main/java/cn/meowrain/aioj/backend/framework/package-info.java
@@ -0,0 +1,21 @@
+/**
+ * AIOJ 框架层
+ *
+ * 提供通用的框架支持,包括:
+ *
+ * - 统一响应封装 (Result)
+ * - 全局异常处理
+ * - 通用工具类
+ * - 公共配置
+ *
+ *
+ *
+ * @author meowrain
+ * @since 1.0.0
+ */
+@NonNullApi
+@NonNullFields
+package cn.meowrain.aioj.backend.framework;
+
+import org.springframework.lang.NonNullApi;
+import org.springframework.lang.NonNullFields;
diff --git a/aioj-backend-common/aioj-backend-common-core/src/main/java/cn/meowrain/aioj/backend/package-info.java b/aioj-backend-common/aioj-backend-common-core/src/main/java/cn/meowrain/aioj/backend/package-info.java
new file mode 100644
index 0000000..671e945
--- /dev/null
+++ b/aioj-backend-common/aioj-backend-common-core/src/main/java/cn/meowrain/aioj/backend/package-info.java
@@ -0,0 +1,15 @@
+/**
+ * AIOJ 后端服务模块
+ *
+ * 包含所有后端微服务的公共代码和业务逻辑。
+ *
+ *
+ * @author meowrain
+ * @since 1.0.0
+ */
+@NonNullApi
+@NonNullFields
+package cn.meowrain.aioj.backend;
+
+import org.springframework.lang.NonNullApi;
+import org.springframework.lang.NonNullFields;
diff --git a/aioj-backend-common/aioj-backend-common-core/src/main/java/cn/meowrain/aioj/package-info.java b/aioj-backend-common/aioj-backend-common-core/src/main/java/cn/meowrain/aioj/package-info.java
new file mode 100644
index 0000000..c105c6f
--- /dev/null
+++ b/aioj-backend-common/aioj-backend-common-core/src/main/java/cn/meowrain/aioj/package-info.java
@@ -0,0 +1,15 @@
+/**
+ * AIOJ - AI在线判题系统
+ *
+ * 一款集成了AI功能的OJ判题系统,支持多种编程语言的在线编译运行与判题。
+ *
+ *
+ * @author meowrain
+ * @since 1.0.0
+ */
+@NonNullApi
+@NonNullFields
+package cn.meowrain.aioj;
+
+import org.springframework.lang.NonNullApi;
+import org.springframework.lang.NonNullFields;
diff --git a/aioj-backend-common/aioj-backend-common-feign/.flattened-pom.xml b/aioj-backend-common/aioj-backend-common-feign/.flattened-pom.xml
new file mode 100644
index 0000000..80693cd
--- /dev/null
+++ b/aioj-backend-common/aioj-backend-common-feign/.flattened-pom.xml
@@ -0,0 +1,53 @@
+
+
+ 4.0.0
+
+ cn.meowrain.aioj
+ aioj-backend-common
+ 1.0.0
+
+ aioj-backend-common-feign
+ 1.0.0
+ AIOJ Feign 远程调用封装
+
+
+ Apache License, Version 2.0
+ https://www.apache.org/licenses/LICENSE-2.0
+
+
+
+
+ cn.meowrain.aioj
+ aioj-backend-common-core
+
+
+ com.alibaba.cloud
+ spring-cloud-starter-alibaba-sentinel
+
+
+ org.springframework.cloud
+ spring-cloud-starter-openfeign
+
+
+ io.github.openfeign
+ feign-okhttp
+
+
+ org.springframework.cloud
+ spring-cloud-starter-loadbalancer
+
+
+ com.github.ben-manes.caffeine
+ caffeine
+
+
+ org.springframework.security
+ spring-security-core
+
+
+ org.springframework
+ spring-webmvc
+
+
+
diff --git a/aioj-backend-common/aioj-backend-common-feign/pom.xml b/aioj-backend-common/aioj-backend-common-feign/pom.xml
index b7a00bf..7c8a4a7 100644
--- a/aioj-backend-common/aioj-backend-common-feign/pom.xml
+++ b/aioj-backend-common/aioj-backend-common-feign/pom.xml
@@ -3,24 +3,21 @@
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">
4.0.0
+
- cn.meowrain
+ cn.meowrain.aioj
aioj-backend-common
- 1.0-SNAPSHOT
+ ${revision}
aioj-backend-common-feign
+ jar
+ AIOJ Feign 远程调用封装
-
- 17
- 17
- UTF-8
-
- cn.meowrain
+ cn.meowrain.aioj
aioj-backend-common-core
- 1.0-SNAPSHOT
com.alibaba.cloud
diff --git a/aioj-backend-common/aioj-backend-common-log/.flattened-pom.xml b/aioj-backend-common/aioj-backend-common-log/.flattened-pom.xml
new file mode 100644
index 0000000..daf8740
--- /dev/null
+++ b/aioj-backend-common/aioj-backend-common-log/.flattened-pom.xml
@@ -0,0 +1,45 @@
+
+
+ 4.0.0
+
+ cn.meowrain.aioj
+ aioj-backend-common
+ 1.0.0
+
+ aioj-backend-common-log
+ 1.0.0
+ AIOJ 日志模块
+
+
+ Apache License, Version 2.0
+ https://www.apache.org/licenses/LICENSE-2.0
+
+
+
+
+ org.springframework.security
+ spring-security-core
+
+
+ org.springframework.security
+ spring-security-oauth2-core
+
+
+ cn.hutool
+ hutool-extra
+
+
+ cn.hutool
+ hutool-http
+
+
+ cn.meowrain.aioj
+ aioj-backend-common-core
+
+
+ cn.meowrain.aioj
+ aioj-backend-upms-api
+
+
+
diff --git a/aioj-backend-common/aioj-backend-common-log/pom.xml b/aioj-backend-common/aioj-backend-common-log/pom.xml
index 77aca82..05ef541 100644
--- a/aioj-backend-common/aioj-backend-common-log/pom.xml
+++ b/aioj-backend-common/aioj-backend-common-log/pom.xml
@@ -3,19 +3,16 @@
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">
4.0.0
+
- cn.meowrain
+ cn.meowrain.aioj
aioj-backend-common
- 1.0-SNAPSHOT
+ ${revision}
aioj-backend-common-log
-
-
- 17
- 17
- UTF-8
-
+ jar
+ AIOJ 日志模块
@@ -36,15 +33,12 @@
hutool-http
- cn.meowrain
+ cn.meowrain.aioj
aioj-backend-common-core
- 1.0-SNAPSHOT
-
- cn.meowrain
+ cn.meowrain.aioj
aioj-backend-upms-api
- 1.0-SNAPSHOT
\ No newline at end of file
diff --git a/aioj-backend-common/aioj-backend-common-mybatis/.flattened-pom.xml b/aioj-backend-common/aioj-backend-common-mybatis/.flattened-pom.xml
new file mode 100644
index 0000000..4f0d620
--- /dev/null
+++ b/aioj-backend-common/aioj-backend-common-mybatis/.flattened-pom.xml
@@ -0,0 +1,50 @@
+
+
+ 4.0.0
+
+ cn.meowrain.aioj
+ aioj-backend-common
+ 1.0.0
+
+ aioj-backend-common-mybatis
+ 1.0.0
+ AIOJ MyBatis Plus 封装
+
+
+ Apache License, Version 2.0
+ https://www.apache.org/licenses/LICENSE-2.0
+
+
+
+
+ cn.hutool
+ hutool-core
+
+
+ com.baomidou
+ mybatis-plus-spring-boot3-starter
+
+
+ com.baomidou
+ mybatis-plus-spring
+
+
+ com.baomidou
+ mybatis-plus-jsqlparser
+
+
+ com.mysql
+ mysql-connector-j
+
+
+ org.springframework.security
+ spring-security-core
+ true
+
+
+ cn.meowrain.aioj
+ aioj-backend-common-core
+
+
+
diff --git a/aioj-backend-common/aioj-backend-common-mybatis/pom.xml b/aioj-backend-common/aioj-backend-common-mybatis/pom.xml
index ff68bc2..eec8c20 100644
--- a/aioj-backend-common/aioj-backend-common-mybatis/pom.xml
+++ b/aioj-backend-common/aioj-backend-common-mybatis/pom.xml
@@ -3,22 +3,17 @@
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">
4.0.0
+
- cn.meowrain
+ cn.meowrain.aioj
aioj-backend-common
- 1.0-SNAPSHOT
+ ${revision}
aioj-backend-common-mybatis
jar
+ AIOJ MyBatis Plus 封装
- aioj mybatis 封装
-
-
- 17
- 17
- UTF-8
-
@@ -52,9 +47,20 @@
- cn.meowrain
+ cn.meowrain.aioj
aioj-backend-common-core
- 1.0-SNAPSHOT
+
+
+
+
+ com.baomidou
+ mybatis-plus-generator
+ test
+
+
+ org.freemarker
+ freemarker
+ test
\ No newline at end of file
diff --git a/aioj-backend-common/aioj-backend-common-mybatis/src/test/java/cn/meowrain/aioj/generator/CodeGenerator.java b/aioj-backend-common/aioj-backend-common-mybatis/src/test/java/cn/meowrain/aioj/generator/CodeGenerator.java
new file mode 100644
index 0000000..3059b50
--- /dev/null
+++ b/aioj-backend-common/aioj-backend-common-mybatis/src/test/java/cn/meowrain/aioj/generator/CodeGenerator.java
@@ -0,0 +1,119 @@
+package cn.meowrain.aioj.generator;
+
+import com.baomidou.mybatisplus.annotation.FieldFill;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.generator.FastAutoGenerator;
+import com.baomidou.mybatisplus.generator.config.OutputFile;
+import com.baomidou.mybatisplus.generator.config.rules.DateType;
+import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;
+import com.baomidou.mybatisplus.generator.engine.FreemarkerTemplateEngine;
+import com.baomidou.mybatisplus.generator.fill.Column;
+
+import java.util.Collections;
+
+/**
+ * MyBatis Plus 代码生成器
+ *
+ * 使用方法:
+ * 1. 修改下方的数据库连接配置
+ * 2. 修改要生成的表名
+ * 3. 修改输出路径和包名
+ * 4. 运行 main 方法
+ *
+ *
+ * @author meowrain
+ * @since 1.0.0
+ */
+public class CodeGenerator {
+
+ // ==================== 数据库配置 ====================
+ /** 数据库地址 */
+ private static final String DB_URL = "jdbc:mysql://10.0.0.10:3306/aioj?useUnicode=true&characterEncoding=utf8&serverTimezone=Asia/Shanghai";
+ /** 数据库用户名 */
+ private static final String DB_USERNAME = "root";
+ /** 数据库密码 */
+ private static final String DB_PASSWORD = "123456";
+
+ // ==================== 代码生成配置 ====================
+ /** 作者名 */
+ private static final String AUTHOR = "meowrain";
+ /** 父包名 */
+ private static final String PARENT_PACKAGE = "cn.meowrain.aioj.backend";
+ /** 模块名 (如: userservice, questionservice) */
+ private static final String MODULE_NAME = "userservice";
+ /** 要生成的表名 (多个表用逗号分隔) */
+ private static final String[] TABLE_NAMES = {"sys_user", "sys_role"};
+ /** 表前缀 (生成时会去掉前缀) */
+ private static final String[] TABLE_PREFIX = {"sys_", "t_"};
+
+ // ==================== 输出路径配置 ====================
+ /** 代码输出目录 (默认当前项目的 src/main/java) */
+ private static final String OUTPUT_DIR = System.getProperty("user.dir") + "/src/main/java";
+ /** Mapper XML 输出目录 */
+ private static final String MAPPER_XML_DIR = System.getProperty("user.dir") + "/src/main/resources/mapper";
+
+ public static void main(String[] args) {
+ generateCode();
+ }
+
+ /**
+ * 执行代码生成
+ */
+ public static void generateCode() {
+ FastAutoGenerator.create(DB_URL, DB_USERNAME, DB_PASSWORD)
+ // 全局配置
+ .globalConfig(builder -> builder
+ .author(AUTHOR)
+ .outputDir(OUTPUT_DIR)
+ .dateType(DateType.TIME_PACK) // 使用 Java 8 日期类型
+ .commentDate("yyyy-MM-dd")
+ .disableOpenDir() // 生成后不打开目录
+ )
+ // 包配置
+ .packageConfig(builder -> builder
+ .parent(PARENT_PACKAGE)
+ .moduleName(MODULE_NAME)
+ .entity("dao.entity")
+ .mapper("dao.mapper")
+ .service("service")
+ .serviceImpl("service.impl")
+ .controller("controller")
+ .xml("mapper")
+ .pathInfo(Collections.singletonMap(OutputFile.xml, MAPPER_XML_DIR))
+ )
+ // 策略配置
+ .strategyConfig(builder -> builder
+ .addInclude(TABLE_NAMES)
+ .addTablePrefix(TABLE_PREFIX)
+ // Entity 策略
+ .entityBuilder()
+ .enableLombok()
+ .enableTableFieldAnnotation()
+ .naming(NamingStrategy.underline_to_camel)
+ .columnNaming(NamingStrategy.underline_to_camel)
+ .idType(IdType.ASSIGN_ID) // 雪花算法ID
+ .addTableFills(new Column("create_time", FieldFill.INSERT))
+ .addTableFills(new Column("update_time", FieldFill.INSERT_UPDATE))
+ .logicDeleteColumnName("del_flag")
+ .logicDeletePropertyName("delFlag")
+ // Mapper 策略
+ .mapperBuilder()
+ .enableBaseResultMap()
+ .enableBaseColumnList()
+ // Service 策略
+ .serviceBuilder()
+ .formatServiceFileName("%sService")
+ .formatServiceImplFileName("%sServiceImpl")
+ // Controller 策略
+ .controllerBuilder()
+ .enableRestStyle()
+ )
+ // 模板引擎
+ .templateEngine(new FreemarkerTemplateEngine())
+ .execute();
+
+ System.out.println("========== 代码生成完成 ==========");
+ System.out.println("输出目录: " + OUTPUT_DIR);
+ System.out.println("Mapper XML: " + MAPPER_XML_DIR);
+ }
+}
diff --git a/aioj-backend-common/aioj-backend-common-mybatis/src/test/java/cn/meowrain/aioj/generator/InteractiveCodeGenerator.java b/aioj-backend-common/aioj-backend-common-mybatis/src/test/java/cn/meowrain/aioj/generator/InteractiveCodeGenerator.java
new file mode 100644
index 0000000..5cf0421
--- /dev/null
+++ b/aioj-backend-common/aioj-backend-common-mybatis/src/test/java/cn/meowrain/aioj/generator/InteractiveCodeGenerator.java
@@ -0,0 +1,153 @@
+package cn.meowrain.aioj.generator;
+
+import com.baomidou.mybatisplus.annotation.FieldFill;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.generator.FastAutoGenerator;
+import com.baomidou.mybatisplus.generator.config.OutputFile;
+import com.baomidou.mybatisplus.generator.config.rules.DateType;
+import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;
+import com.baomidou.mybatisplus.generator.engine.FreemarkerTemplateEngine;
+import com.baomidou.mybatisplus.generator.fill.Column;
+
+import java.util.Collections;
+import java.util.Scanner;
+
+/**
+ * 交互式代码生成器
+ *
+ * 运行后会在控制台提示输入相关配置信息
+ *
+ *
+ * @author meowrain
+ * @since 1.0.0
+ */
+public class InteractiveCodeGenerator {
+
+ public static void main(String[] args) {
+ Scanner scanner = new Scanner(System.in);
+
+ System.out.println("========== AIOJ 代码生成器 ==========");
+ System.out.println();
+
+ // 数据库配置
+ System.out.print("请输入数据库地址 (默认: localhost:3306/aioj): ");
+ String dbHost = scanner.nextLine().trim();
+ if (dbHost.isEmpty()) {
+ dbHost = "localhost:3306/aioj";
+ }
+ String dbUrl = "jdbc:mysql://" + dbHost + "?useUnicode=true&characterEncoding=utf8&serverTimezone=Asia/Shanghai";
+
+ System.out.print("请输入数据库用户名 (默认: root): ");
+ String dbUsername = scanner.nextLine().trim();
+ if (dbUsername.isEmpty()) {
+ dbUsername = "root";
+ }
+
+ System.out.print("请输入数据库密码: ");
+ String dbPassword = scanner.nextLine().trim();
+
+ // 代码配置
+ System.out.print("请输入模块名 (如 userservice, questionservice): ");
+ String moduleName = scanner.nextLine().trim();
+
+ System.out.print("请输入要生成的表名 (多个表用逗号分隔): ");
+ String tableInput = scanner.nextLine().trim();
+ String[] tableNames = tableInput.split(",");
+
+ System.out.print("请输入表前缀 (如 sys_,t_ 留空则不去除前缀): ");
+ String prefixInput = scanner.nextLine().trim();
+ String[] tablePrefixes = prefixInput.isEmpty() ? new String[]{} : prefixInput.split(",");
+
+ System.out.print("请输入输出目录 (留空使用当前目录): ");
+ String outputDir = scanner.nextLine().trim();
+ if (outputDir.isEmpty()) {
+ outputDir = System.getProperty("user.dir") + "/src/main/java";
+ }
+
+ String mapperXmlDir = outputDir.replace("/java", "/resources") + "/mapper";
+
+ System.out.println();
+ System.out.println("========== 配置确认 ==========");
+ System.out.println("数据库: " + dbUrl);
+ System.out.println("模块名: " + moduleName);
+ System.out.println("表名: " + String.join(", ", tableNames));
+ System.out.println("输出目录: " + outputDir);
+ System.out.println();
+ System.out.print("确认生成? (y/n): ");
+
+ String confirm = scanner.nextLine().trim().toLowerCase();
+ if (!confirm.equals("y") && !confirm.equals("yes")) {
+ System.out.println("已取消生成");
+ return;
+ }
+
+ // 执行生成
+ generate(dbUrl, dbUsername, dbPassword, moduleName, tableNames, tablePrefixes, outputDir, mapperXmlDir);
+
+ scanner.close();
+ }
+
+ private static void generate(String dbUrl, String dbUsername, String dbPassword,
+ String moduleName, String[] tableNames, String[] tablePrefixes,
+ String outputDir, String mapperXmlDir) {
+ FastAutoGenerator.create(dbUrl, dbUsername, dbPassword)
+ // 全局配置
+ .globalConfig(builder -> builder
+ .author("meowrain")
+ .outputDir(outputDir)
+ .dateType(DateType.TIME_PACK)
+ .commentDate("yyyy-MM-dd")
+ .disableOpenDir()
+ )
+ // 包配置
+ .packageConfig(builder -> builder
+ .parent("cn.meowrain.aioj.backend")
+ .moduleName(moduleName)
+ .entity("dao.entity")
+ .mapper("dao.mapper")
+ .service("service")
+ .serviceImpl("service.impl")
+ .controller("controller")
+ .xml("mapper")
+ .pathInfo(Collections.singletonMap(OutputFile.xml, mapperXmlDir))
+ )
+ // 策略配置
+ .strategyConfig(builder -> {
+ builder.addInclude(tableNames);
+ if (tablePrefixes.length > 0) {
+ builder.addTablePrefix(tablePrefixes);
+ }
+ builder
+ // Entity 策略
+ .entityBuilder()
+ .enableLombok()
+ .enableTableFieldAnnotation()
+ .naming(NamingStrategy.underline_to_camel)
+ .columnNaming(NamingStrategy.underline_to_camel)
+ .idType(IdType.ASSIGN_ID)
+ .addTableFills(new Column("create_time", FieldFill.INSERT))
+ .addTableFills(new Column("update_time", FieldFill.INSERT_UPDATE))
+ .logicDeleteColumnName("del_flag")
+ .logicDeletePropertyName("delFlag")
+ // Mapper 策略
+ .mapperBuilder()
+ .enableBaseResultMap()
+ .enableBaseColumnList()
+ // Service 策略
+ .serviceBuilder()
+ .formatServiceFileName("%sService")
+ .formatServiceImplFileName("%sServiceImpl")
+ // Controller 策略
+ .controllerBuilder()
+ .enableRestStyle();
+ })
+ // 模板引擎
+ .templateEngine(new FreemarkerTemplateEngine())
+ .execute();
+
+ System.out.println();
+ System.out.println("========== 代码生成完成 ==========");
+ System.out.println("Java 代码: " + outputDir);
+ System.out.println("Mapper XML: " + mapperXmlDir);
+ }
+}
diff --git a/aioj-backend-common/aioj-backend-common-starter/.flattened-pom.xml b/aioj-backend-common/aioj-backend-common-starter/.flattened-pom.xml
new file mode 100644
index 0000000..1cdf92b
--- /dev/null
+++ b/aioj-backend-common/aioj-backend-common-starter/.flattened-pom.xml
@@ -0,0 +1,30 @@
+
+
+ 4.0.0
+
+ cn.meowrain.aioj
+ aioj-backend-common
+ 1.0.0
+
+ aioj-backend-common-starter
+ 1.0.0
+ pom
+ AIOJ 公共模块启动器 (聚合常用依赖)
+
+
+ Apache License, Version 2.0
+ https://www.apache.org/licenses/LICENSE-2.0
+
+
+
+
+ cn.meowrain.aioj
+ aioj-backend-common-core
+
+
+ cn.meowrain.aioj
+ aioj-backend-common-log
+
+
+
diff --git a/aioj-backend-common/aioj-backend-common-starter/pom.xml b/aioj-backend-common/aioj-backend-common-starter/pom.xml
index 1ba3521..594c787 100644
--- a/aioj-backend-common/aioj-backend-common-starter/pom.xml
+++ b/aioj-backend-common/aioj-backend-common-starter/pom.xml
@@ -3,31 +3,25 @@
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">
4.0.0
+
- cn.meowrain
+ cn.meowrain.aioj
aioj-backend-common
- 1.0-SNAPSHOT
+ ${revision}
- pom
aioj-backend-common-starter
-
-
- 17
- 17
- UTF-8
-
+ pom
+ AIOJ 公共模块启动器 (聚合常用依赖)
- cn.meowrain
+ cn.meowrain.aioj
aioj-backend-common-core
- 1.0-SNAPSHOT
- cn.meowrain
+ cn.meowrain.aioj
aioj-backend-common-log
- 1.0-SNAPSHOT
\ No newline at end of file
diff --git a/aioj-backend-common/aioj-backend-common-swagger/pom.xml b/aioj-backend-common/aioj-backend-common-swagger/pom.xml
deleted file mode 100644
index ec11c36..0000000
--- a/aioj-backend-common/aioj-backend-common-swagger/pom.xml
+++ /dev/null
@@ -1,21 +0,0 @@
-
-
- 4.0.0
-
- cn.meowrain
- aioj-backend-common
- 1.0-SNAPSHOT
-
-
- cn.meowrain.aioj.backend.common.swagger
- aioj-backend-common-swagger
-
-
- 17
- 17
- UTF-8
-
-
-
\ No newline at end of file
diff --git a/aioj-backend-common/aioj-backend-common-swagger/src/main/java/cn/meowrain/aioj/backend/common/swagger/Main.java b/aioj-backend-common/aioj-backend-common-swagger/src/main/java/cn/meowrain/aioj/backend/common/swagger/Main.java
deleted file mode 100644
index 53a9441..0000000
--- a/aioj-backend-common/aioj-backend-common-swagger/src/main/java/cn/meowrain/aioj/backend/common/swagger/Main.java
+++ /dev/null
@@ -1,17 +0,0 @@
-package cn.meowrain.aioj.backend.common.swagger;
-
-//TIP 要运行代码,请按 或
-// 点击装订区域中的 图标。
-public class Main {
- public static void main(String[] args) {
- //TIP 当文本光标位于高亮显示的文本处时按
- // 查看 IntelliJ IDEA 建议如何修正。
- System.out.printf("Hello and welcome!");
-
- for (int i = 1; i <= 5; i++) {
- //TIP 按 开始调试代码。我们已经设置了一个 断点
- // 但您始终可以通过按 添加更多断点。
- System.out.println("i = " + i);
- }
- }
-}
\ No newline at end of file
diff --git a/aioj-backend-common/pom.xml b/aioj-backend-common/pom.xml
index 4e45643..e918cef 100644
--- a/aioj-backend-common/pom.xml
+++ b/aioj-backend-common/pom.xml
@@ -3,38 +3,23 @@
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">
4.0.0
+
- cn.meowrain
+ cn.meowrain.aioj
ai-oj
- 1.0-SNAPSHOT
+ ${revision}
aioj-backend-common
pom
+ AIOJ 公共模块聚合
+
- aioj-backend-common-log
- aioj-backend-common-core
- aioj-backend-common-starter
- aioj-backend-common-mybatis
aioj-backend-common-bom
+ aioj-backend-common-core
+ aioj-backend-common-log
+ aioj-backend-common-mybatis
aioj-backend-common-feign
+ aioj-backend-common-starter
-
-
- 17
- 17
- UTF-8
-
-
-
-
-
- cn.meowrain.aioj
- aioj-backend-common-bom
- 1.0.0
- pom
- import
-
-
-
\ No newline at end of file
diff --git a/aioj-backend-file-service/.flattened-pom.xml b/aioj-backend-file-service/.flattened-pom.xml
new file mode 100644
index 0000000..202478e
--- /dev/null
+++ b/aioj-backend-file-service/.flattened-pom.xml
@@ -0,0 +1,73 @@
+
+
+ 4.0.0
+
+ cn.meowrain.aioj
+ ai-oj
+ 1.0.0
+
+ aioj-backend-file-service
+ 1.0.0
+ AIOJ 文件服务
+
+
+ Apache License, Version 2.0
+ https://www.apache.org/licenses/LICENSE-2.0
+
+
+
+ 17
+ 17
+ UTF-8
+
+
+
+ com.qcloud
+ cos_api
+ 5.6.260.1
+
+
+ org.springdoc
+ springdoc-openapi-starter-webmvc-ui
+
+
+ com.github.xiaoymin
+ knife4j-openapi3-jakarta-spring-boot-starter
+
+
+ cn.meowrain.aioj
+ aioj-backend-common-core
+
+
+ cn.meowrain.aioj
+ aioj-backend-common-log
+
+
+ cn.meowrain.aioj
+ aioj-backend-common-mybatis
+
+
+ org.springframework.boot
+ spring-boot-starter-web
+
+
+ cn.hutool
+ hutool-core
+
+
+ com.mysql
+ mysql-connector-j
+ runtime
+
+
+ com.alibaba.cloud
+ spring-cloud-starter-alibaba-nacos-discovery
+
+
+ org.springframework.boot
+ spring-boot-starter-test
+ test
+
+
+
diff --git a/aioj-backend-file-service/pom.xml b/aioj-backend-file-service/pom.xml
new file mode 100644
index 0000000..9f0b477
--- /dev/null
+++ b/aioj-backend-file-service/pom.xml
@@ -0,0 +1,85 @@
+
+
+ 4.0.0
+
+ cn.meowrain.aioj
+ ai-oj
+ ${revision}
+
+
+ jar
+ AIOJ 文件服务
+ aioj-backend-file-service
+
+
+ 17
+ 17
+ UTF-8
+
+
+
+
+
+ com.qcloud
+ cos_api
+ 5.6.260.1
+
+
+
+ org.springdoc
+ springdoc-openapi-starter-webmvc-ui
+
+
+ com.github.xiaoymin
+ knife4j-openapi3-jakarta-spring-boot-starter
+
+
+
+
+ cn.meowrain.aioj
+ aioj-backend-common-core
+
+
+ cn.meowrain.aioj
+ aioj-backend-common-log
+
+
+ cn.meowrain.aioj
+ aioj-backend-common-mybatis
+
+
+
+
+ org.springframework.boot
+ spring-boot-starter-web
+
+
+
+
+ cn.hutool
+ hutool-core
+
+
+
+
+ com.mysql
+ mysql-connector-j
+ runtime
+
+
+
+
+ com.alibaba.cloud
+ spring-cloud-starter-alibaba-nacos-discovery
+
+
+
+
+ org.springframework.boot
+ spring-boot-starter-test
+ test
+
+
+
\ No newline at end of file
diff --git a/aioj-backend-file-service/src/main/java/cn/meowrain/aioj/backend/fileservice/FileServiceApplication.java b/aioj-backend-file-service/src/main/java/cn/meowrain/aioj/backend/fileservice/FileServiceApplication.java
new file mode 100644
index 0000000..9033663
--- /dev/null
+++ b/aioj-backend-file-service/src/main/java/cn/meowrain/aioj/backend/fileservice/FileServiceApplication.java
@@ -0,0 +1,11 @@
+package cn.meowrain.aioj.backend.fileservice;
+
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+
+@SpringBootApplication
+public class FileServiceApplication {
+ public static void main(String[] args) {
+ SpringApplication.run(FileServiceApplication.class);
+ }
+}
diff --git a/aioj-backend-file-service/src/main/java/cn/meowrain/aioj/backend/fileservice/dao/AttachmentDAO.java b/aioj-backend-file-service/src/main/java/cn/meowrain/aioj/backend/fileservice/dao/AttachmentDAO.java
new file mode 100644
index 0000000..1464bc1
--- /dev/null
+++ b/aioj-backend-file-service/src/main/java/cn/meowrain/aioj/backend/fileservice/dao/AttachmentDAO.java
@@ -0,0 +1,8 @@
+package cn.meowrain.aioj.backend.fileservice.dao;
+
+import lombok.Data;
+
+@Data
+public class AttachmentDAO {
+
+}
diff --git a/aioj-backend-file-service/src/main/resources/application-dev.yml b/aioj-backend-file-service/src/main/resources/application-dev.yml
new file mode 100644
index 0000000..9448ab5
--- /dev/null
+++ b/aioj-backend-file-service/src/main/resources/application-dev.yml
@@ -0,0 +1,35 @@
+spring:
+ mail:
+ host: smtp.qq.com
+ port: 465
+ username: 2705356115@qq.com
+ # 这里使用授权码
+ password: yohcndfrlxwcdfed
+ default-encoding: UTF-8
+ protocol: smtp
+ properties:
+ mail:
+ smtp:
+ ssl:
+ enable: true # 在 properties 中明确指定
+ auth: true
+ starttls:
+ enable: true # QQ邮箱也支持STARTTLS,但使用465端口时,ssl.enable=true是必须的
+ data:
+ redis:
+ host: 10.0.0.10
+ port: 6379
+ password: 123456
+ datasource:
+ driver-class-name: com.mysql.cj.jdbc.Driver
+ url: jdbc:mysql://10.0.0.10/aioj_dev
+ username: root
+ password: root
+ cloud:
+ nacos:
+ discovery:
+ enabled: true
+ register-enabled: true
+ server-addr: 10.0.0.10:8848
+ username: nacos
+ password: nacos
\ No newline at end of file
diff --git a/aioj-backend-file-service/src/main/resources/application-prod.yml b/aioj-backend-file-service/src/main/resources/application-prod.yml
new file mode 100644
index 0000000..ed56224
--- /dev/null
+++ b/aioj-backend-file-service/src/main/resources/application-prod.yml
@@ -0,0 +1,11 @@
+spring:
+ data:
+ redis:
+ host: 10.0.0.10
+ port: 6379
+ password: 123456
+ datasource:
+ driver-class-name: com.mysql.cj.jdbc.Driver
+ url: jdbc:mysql://10.0.0.10/aioj_prod
+ username: root
+ password: root
\ No newline at end of file
diff --git a/aioj-backend-file-service/src/main/resources/application-test.yml b/aioj-backend-file-service/src/main/resources/application-test.yml
new file mode 100644
index 0000000..1e38912
--- /dev/null
+++ b/aioj-backend-file-service/src/main/resources/application-test.yml
@@ -0,0 +1,11 @@
+spring:
+ data:
+ redis:
+ host: 10.0.0.10
+ port: 6379
+ password: 123456
+ datasource:
+ driver-class-name: com.mysql.cj.jdbc.Driver
+ url: jdbc:mysql://10.0.0.10/aioj_test
+ username: root
+ password: 123456
\ No newline at end of file
diff --git a/aioj-backend-file-service/src/main/resources/application.yml b/aioj-backend-file-service/src/main/resources/application.yml
new file mode 100644
index 0000000..5f2c040
--- /dev/null
+++ b/aioj-backend-file-service/src/main/resources/application.yml
@@ -0,0 +1,37 @@
+spring:
+ application:
+ name: file-service
+ profiles:
+ active: @env@
+server:
+ port: 10013
+ servlet:
+ context-path: /api
+ error:
+ include-stacktrace: never
+springdoc:
+ api-docs:
+ enabled: true
+ path: /v3/api-docs
+ default-flat-param-object: true
+ swagger-ui:
+ path: /swagger-ui.html
+ tags-sorter: alpha
+ operations-sorter: alpha
+ group-configs:
+ - group: 'default'
+ paths-to-match: '/api/**'
+ packages-to-scan: cn.meowrain.aioj.backend.fileservice.controller
+knife4j:
+ basic:
+ enable: true
+ setting:
+ language: zh_cn
+mybatis-plus:
+ configuration:
+ log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
+ mapper-locations: classpath*:/mapper/**/*.xml
+aioj:
+ log:
+ enabled: true
+ max-length: 20000
\ No newline at end of file
diff --git a/aioj-backend-gateway/.flattened-pom.xml b/aioj-backend-gateway/.flattened-pom.xml
new file mode 100644
index 0000000..ff26a0e
--- /dev/null
+++ b/aioj-backend-gateway/.flattened-pom.xml
@@ -0,0 +1,75 @@
+
+
+ 4.0.0
+
+ cn.meowrain.aioj
+ ai-oj
+ 1.0.0
+
+ aioj-backend-gateway
+ 1.0.0
+ AIOJ API网关服务
+
+
+ Apache License, Version 2.0
+ https://www.apache.org/licenses/LICENSE-2.0
+
+
+
+
+ org.springframework.boot
+ spring-boot-starter-webflux
+
+
+ org.springframework.cloud
+ spring-cloud-starter-gateway-server-webflux
+
+
+ com.alibaba.cloud
+ spring-cloud-starter-alibaba-nacos-discovery
+
+
+ com.alibaba.cloud
+ spring-cloud-starter-alibaba-nacos-config
+
+
+ com.alibaba.cloud
+ spring-cloud-alibaba-sentinel-gateway
+
+
+ com.alibaba.csp
+ sentinel-datasource-extension
+
+
+ org.springframework.cloud
+ spring-cloud-starter-loadbalancer
+
+
+ com.github.xiaoymin
+ knife4j-gateway-spring-boot-starter
+
+
+ cn.meowrain.aioj
+ aioj-backend-common-core
+
+
+ org.springframework.boot
+ spring-boot-starter-web
+
+
+ jakarta.servlet
+ jakarta.servlet-api
+
+
+ org.springframework
+ spring-webmvc
+
+
+
+
+ org.springframework.boot
+ spring-boot-starter-actuator
+
+
+
diff --git a/aioj-backend-gateway/pom.xml b/aioj-backend-gateway/pom.xml
index 8bf41e4..78540e1 100644
--- a/aioj-backend-gateway/pom.xml
+++ b/aioj-backend-gateway/pom.xml
@@ -3,32 +3,29 @@
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">
4.0.0
+
- cn.meowrain
+ cn.meowrain.aioj
ai-oj
- 1.0-SNAPSHOT
+ ${revision}
aioj-backend-gateway
+ jar
+ AIOJ API网关服务
-
- 17
- 17
- UTF-8
- 4.3.2
-
+
org.springframework.boot
spring-boot-starter-webflux
-
org.springframework.cloud
spring-cloud-starter-gateway-server-webflux
- 4.3.2
-
+
+
com.alibaba.cloud
spring-cloud-starter-alibaba-nacos-discovery
@@ -37,48 +34,50 @@
com.alibaba.cloud
spring-cloud-starter-alibaba-nacos-config
+
+
com.alibaba.cloud
spring-cloud-alibaba-sentinel-gateway
-
- org.springframework.cloud
- spring-cloud-starter-loadbalancer
- 4.3.0
-
com.alibaba.csp
sentinel-datasource-extension
+
+
+
+ org.springframework.cloud
+ spring-cloud-starter-loadbalancer
+
+
com.github.xiaoymin
knife4j-gateway-spring-boot-starter
- 4.5.0
+
- cn.meowrain
+ cn.meowrain.aioj
aioj-backend-common-core
- 1.0-SNAPSHOT
-
org.springframework.boot
spring-boot-starter-web
-
jakarta.servlet
jakarta.servlet-api
-
org.springframework
spring-webmvc
+
+
org.springframework.boot
spring-boot-starter-actuator
diff --git a/aioj-backend-gateway/src/main/java/cn/meowrain/aioj/backend/gateway/package-info.java b/aioj-backend-gateway/src/main/java/cn/meowrain/aioj/backend/gateway/package-info.java
new file mode 100644
index 0000000..91fa0e1
--- /dev/null
+++ b/aioj-backend-gateway/src/main/java/cn/meowrain/aioj/backend/gateway/package-info.java
@@ -0,0 +1,16 @@
+/**
+ * AIOJ API网关模块
+ *
+ * 基于 Spring Cloud Gateway 实现的API网关,提供:
+ *
+ * - 请求路由转发
+ * - 负载均衡
+ * - 限流熔断 (Sentinel)
+ * - API文档聚合 (Knife4j)
+ *
+ *
+ *
+ * @author meowrain
+ * @since 1.0.0
+ */
+package cn.meowrain.aioj.backend.gateway;
diff --git a/aioj-backend-judge-service/.flattened-pom.xml b/aioj-backend-judge-service/.flattened-pom.xml
new file mode 100644
index 0000000..8969325
--- /dev/null
+++ b/aioj-backend-judge-service/.flattened-pom.xml
@@ -0,0 +1,19 @@
+
+
+ 4.0.0
+
+ cn.meowrain.aioj
+ ai-oj
+ 1.0.0
+
+ aioj-backend-judge-service
+ 1.0.0
+ AIOJ 判题服务
+
+
+ Apache License, Version 2.0
+ https://www.apache.org/licenses/LICENSE-2.0
+
+
+
diff --git a/aioj-backend-judge-service/pom.xml b/aioj-backend-judge-service/pom.xml
index 00c0116..36778c9 100644
--- a/aioj-backend-judge-service/pom.xml
+++ b/aioj-backend-judge-service/pom.xml
@@ -3,18 +3,16 @@
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">
4.0.0
+
- cn.meowrain
+ cn.meowrain.aioj
ai-oj
- 1.0-SNAPSHOT
+ ${revision}
aioj-backend-judge-service
+ jar
+ AIOJ 判题服务
-
- 17
- 17
- UTF-8
-
-
+
\ No newline at end of file
diff --git a/aioj-backend-question-service/.flattened-pom.xml b/aioj-backend-question-service/.flattened-pom.xml
new file mode 100644
index 0000000..cceb665
--- /dev/null
+++ b/aioj-backend-question-service/.flattened-pom.xml
@@ -0,0 +1,19 @@
+
+
+ 4.0.0
+
+ cn.meowrain.aioj
+ ai-oj
+ 1.0.0
+
+ aioj-backend-question-service
+ 1.0.0
+ AIOJ 题目服务
+
+
+ Apache License, Version 2.0
+ https://www.apache.org/licenses/LICENSE-2.0
+
+
+
diff --git a/aioj-backend-question-service/pom.xml b/aioj-backend-question-service/pom.xml
index 0424c61..fe987f1 100644
--- a/aioj-backend-question-service/pom.xml
+++ b/aioj-backend-question-service/pom.xml
@@ -3,18 +3,16 @@
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">
4.0.0
+
- cn.meowrain
+ cn.meowrain.aioj
ai-oj
- 1.0-SNAPSHOT
+ ${revision}
aioj-backend-question-service
+ jar
+ AIOJ 题目服务
-
- 17
- 17
- UTF-8
-
-
+
\ No newline at end of file
diff --git a/aioj-backend-upms/.flattened-pom.xml b/aioj-backend-upms/.flattened-pom.xml
new file mode 100644
index 0000000..04ca761
--- /dev/null
+++ b/aioj-backend-upms/.flattened-pom.xml
@@ -0,0 +1,24 @@
+
+
+ 4.0.0
+
+ cn.meowrain.aioj
+ ai-oj
+ 1.0.0
+
+ aioj-backend-upms
+ 1.0.0
+ pom
+ AIOJ 用户权限管理系统 (UPMS)
+
+
+ Apache License, Version 2.0
+ https://www.apache.org/licenses/LICENSE-2.0
+
+
+
+ aioj-backend-upms-api
+ aioj-backend-upms-biz
+
+
diff --git a/aioj-backend-upms/aioj-backend-upms-api/.flattened-pom.xml b/aioj-backend-upms/aioj-backend-upms-api/.flattened-pom.xml
new file mode 100644
index 0000000..d66ee98
--- /dev/null
+++ b/aioj-backend-upms/aioj-backend-upms-api/.flattened-pom.xml
@@ -0,0 +1,41 @@
+
+
+ 4.0.0
+
+ cn.meowrain.aioj
+ aioj-backend-upms
+ 1.0.0
+
+ aioj-backend-upms-api
+ 1.0.0
+ AIOJ UPMS API 接口定义
+
+
+ Apache License, Version 2.0
+ https://www.apache.org/licenses/LICENSE-2.0
+
+
+
+
+ org.springdoc
+ springdoc-openapi-starter-webmvc-ui
+
+
+ com.github.xiaoymin
+ knife4j-openapi3-jakarta-spring-boot-starter
+
+
+ cn.meowrain.aioj
+ aioj-backend-common-core
+
+
+ cn.meowrain.aioj
+ aioj-backend-common-mybatis
+
+
+ cn.meowrain.aioj
+ aioj-backend-common-feign
+
+
+
diff --git a/aioj-backend-upms/aioj-backend-upms-api/pom.xml b/aioj-backend-upms/aioj-backend-upms-api/pom.xml
index 13b113d..4c51f81 100644
--- a/aioj-backend-upms/aioj-backend-upms-api/pom.xml
+++ b/aioj-backend-upms/aioj-backend-upms-api/pom.xml
@@ -3,62 +3,40 @@
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">
4.0.0
+
- cn.meowrain
+ cn.meowrain.aioj
aioj-backend-upms
- 1.0-SNAPSHOT
+ ${revision}
aioj-backend-upms-api
-
-
- 17
- 17
- UTF-8
-
+ jar
+ AIOJ UPMS API 接口定义
-
+
org.springdoc
springdoc-openapi-starter-webmvc-ui
- 2.8.4
com.github.xiaoymin
knife4j-openapi3-jakarta-spring-boot-starter
- 4.5.0
-
-
- org.springdoc
- springdoc-openapi-starter-webmvc-ui
-
-
- org.springdoc
- springdoc-openapi-starter-webmvc-api
-
-
- org.springdoc
- springdoc-openapi-starter-common
-
-
-
+
+
- cn.meowrain
+ cn.meowrain.aioj
aioj-backend-common-core
- 1.0-SNAPSHOT
- cn.meowrain
+ cn.meowrain.aioj
aioj-backend-common-mybatis
- 1.0-SNAPSHOT
-
- cn.meowrain
+ cn.meowrain.aioj
aioj-backend-common-feign
- 1.0-SNAPSHOT
\ No newline at end of file
diff --git a/aioj-backend-upms/aioj-backend-upms-api/src/main/java/cn/meowrain/aioj/backend/upms/package-info.java b/aioj-backend-upms/aioj-backend-upms-api/src/main/java/cn/meowrain/aioj/backend/upms/package-info.java
new file mode 100644
index 0000000..f484068
--- /dev/null
+++ b/aioj-backend-upms/aioj-backend-upms-api/src/main/java/cn/meowrain/aioj/backend/upms/package-info.java
@@ -0,0 +1,21 @@
+/**
+ * AIOJ 用户权限管理系统 (UPMS)
+ *
+ * 统一的权限管理模块,提供:
+ *
+ * - 用户管理
+ * - 角色管理
+ * - 菜单权限
+ * - 操作日志
+ *
+ *
+ *
+ * @author meowrain
+ * @since 1.0.0
+ */
+@NonNullApi
+@NonNullFields
+package cn.meowrain.aioj.backend.upms;
+
+import org.springframework.lang.NonNullApi;
+import org.springframework.lang.NonNullFields;
diff --git a/aioj-backend-upms/aioj-backend-upms-biz/.flattened-pom.xml b/aioj-backend-upms/aioj-backend-upms-biz/.flattened-pom.xml
new file mode 100644
index 0000000..91d5071
--- /dev/null
+++ b/aioj-backend-upms/aioj-backend-upms-biz/.flattened-pom.xml
@@ -0,0 +1,41 @@
+
+
+ 4.0.0
+
+ cn.meowrain.aioj
+ aioj-backend-upms
+ 1.0.0
+
+ aioj-backend-upms-biz
+ 1.0.0
+ AIOJ UPMS 业务实现
+
+
+ Apache License, Version 2.0
+ https://www.apache.org/licenses/LICENSE-2.0
+
+
+
+
+ org.springdoc
+ springdoc-openapi-starter-webmvc-ui
+
+
+ com.github.xiaoymin
+ knife4j-openapi3-jakarta-spring-boot-starter
+
+
+ cn.meowrain.aioj
+ aioj-backend-common-mybatis
+
+
+ cn.meowrain.aioj
+ aioj-backend-upms-api
+
+
+ org.springframework.boot
+ spring-boot-starter-web
+
+
+
diff --git a/aioj-backend-upms/aioj-backend-upms-biz/pom.xml b/aioj-backend-upms/aioj-backend-upms-biz/pom.xml
index 408d51d..e604039 100644
--- a/aioj-backend-upms/aioj-backend-upms-biz/pom.xml
+++ b/aioj-backend-upms/aioj-backend-upms-biz/pom.xml
@@ -3,57 +3,39 @@
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">
4.0.0
+
- cn.meowrain
+ cn.meowrain.aioj
aioj-backend-upms
- 1.0-SNAPSHOT
+ ${revision}
aioj-backend-upms-biz
-
-
- 17
- 17
- UTF-8
-
+ jar
+ AIOJ UPMS 业务实现
-
+
org.springdoc
springdoc-openapi-starter-webmvc-ui
- 2.8.4
com.github.xiaoymin
knife4j-openapi3-jakarta-spring-boot-starter
- 4.5.0
-
-
- org.springdoc
- springdoc-openapi-starter-webmvc-ui
-
-
- org.springdoc
- springdoc-openapi-starter-webmvc-api
-
-
- org.springdoc
- springdoc-openapi-starter-common
-
-
-
+
+
- cn.meowrain
+ cn.meowrain.aioj
aioj-backend-common-mybatis
- 1.0-SNAPSHOT
- cn.meowrain
+ cn.meowrain.aioj
aioj-backend-upms-api
- 1.0-SNAPSHOT
+
+
org.springframework.boot
spring-boot-starter-web
diff --git a/aioj-backend-upms/pom.xml b/aioj-backend-upms/pom.xml
index ce2311f..b91e308 100644
--- a/aioj-backend-upms/pom.xml
+++ b/aioj-backend-upms/pom.xml
@@ -3,23 +3,19 @@
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">
4.0.0
+
- cn.meowrain
+ cn.meowrain.aioj
ai-oj
- 1.0-SNAPSHOT
+ ${revision}
aioj-backend-upms
pom
+ AIOJ 用户权限管理系统 (UPMS)
+
aioj-backend-upms-api
aioj-backend-upms-biz
-
-
- 17
- 17
- UTF-8
-
-
\ No newline at end of file
diff --git a/aioj-backend-user-service/.flattened-pom.xml b/aioj-backend-user-service/.flattened-pom.xml
new file mode 100644
index 0000000..ff9ff70
--- /dev/null
+++ b/aioj-backend-user-service/.flattened-pom.xml
@@ -0,0 +1,79 @@
+
+
+ 4.0.0
+
+ cn.meowrain.aioj
+ ai-oj
+ 1.0.0
+
+ aioj-backend-user-service
+ 1.0.0
+ AIOJ 用户服务
+
+
+ Apache License, Version 2.0
+ https://www.apache.org/licenses/LICENSE-2.0
+
+
+
+
+ org.springdoc
+ springdoc-openapi-starter-webmvc-ui
+
+
+ com.github.xiaoymin
+ knife4j-openapi3-jakarta-spring-boot-starter
+
+
+ cn.meowrain.aioj
+ aioj-backend-common-core
+
+
+ cn.meowrain.aioj
+ aioj-backend-common-log
+
+
+ cn.meowrain.aioj
+ aioj-backend-common-mybatis
+
+
+ org.springframework.boot
+ spring-boot-starter-web
+
+
+ cn.hutool
+ hutool-crypto
+
+
+ org.springframework.boot
+ spring-boot-starter-mail
+
+
+ org.springframework.boot
+ spring-boot-starter-data-redis
+
+
+ org.springframework.session
+ spring-session-data-redis
+
+
+ org.springframework.boot
+ spring-boot-starter-cache
+
+
+ com.mysql
+ mysql-connector-j
+ runtime
+
+
+ com.alibaba.cloud
+ spring-cloud-starter-alibaba-nacos-discovery
+
+
+ org.springframework.boot
+ spring-boot-starter-test
+ test
+
+
+
diff --git a/aioj-backend-user-service/pom.xml b/aioj-backend-user-service/pom.xml
index 7b0d2fe..490a73f 100644
--- a/aioj-backend-user-service/pom.xml
+++ b/aioj-backend-user-service/pom.xml
@@ -3,76 +3,61 @@
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">
4.0.0
+
- cn.meowrain
+ cn.meowrain.aioj
ai-oj
- 1.0-SNAPSHOT
+ ${revision}
aioj-backend-user-service
-
-
- 17
- 17
- UTF-8
-
+ jar
+ AIOJ 用户服务
-
-
- org.springframework.boot
- spring-boot-starter-mail
-
-
+
org.springdoc
springdoc-openapi-starter-webmvc-ui
- 2.8.4
com.github.xiaoymin
knife4j-openapi3-jakarta-spring-boot-starter
- 4.5.0
-
-
- org.springdoc
- springdoc-openapi-starter-webmvc-ui
-
-
- org.springdoc
- springdoc-openapi-starter-webmvc-api
-
-
- org.springdoc
- springdoc-openapi-starter-common
-
-
+
- cn.meowrain
+ cn.meowrain.aioj
aioj-backend-common-core
- 1.0-SNAPSHOT
- cn.meowrain
+ cn.meowrain.aioj
aioj-backend-common-log
- 1.0-SNAPSHOT
- cn.meowrain
+ cn.meowrain.aioj
aioj-backend-common-mybatis
- 1.0-SNAPSHOT
+
+
org.springframework.boot
spring-boot-starter-web
+
+
cn.hutool
hutool-crypto
+
+
+ org.springframework.boot
+ spring-boot-starter-mail
+
+
+
org.springframework.boot
spring-boot-starter-data-redis
@@ -81,30 +66,29 @@
org.springframework.session
spring-session-data-redis
-
org.springframework.boot
spring-boot-starter-cache
+
+
com.mysql
mysql-connector-j
runtime
+
+
+
+ com.alibaba.cloud
+ spring-cloud-starter-alibaba-nacos-discovery
+
+
+
org.springframework.boot
spring-boot-starter-test
test
-
-
-
-
-
-
-
- com.alibaba.cloud
- spring-cloud-starter-alibaba-nacos-discovery
-
\ No newline at end of file
diff --git a/aioj-backend-user-service/src/main/java/cn/meowrain/aioj/backend/userservice/controller/UserController.java b/aioj-backend-user-service/src/main/java/cn/meowrain/aioj/backend/userservice/controller/UserController.java
index 8f5a064..203ee3a 100644
--- a/aioj-backend-user-service/src/main/java/cn/meowrain/aioj/backend/userservice/controller/UserController.java
+++ b/aioj-backend-user-service/src/main/java/cn/meowrain/aioj/backend/userservice/controller/UserController.java
@@ -14,6 +14,7 @@ import io.swagger.v3.oas.annotations.tags.Tag;
import jakarta.validation.Valid;
import lombok.RequiredArgsConstructor;
import org.springframework.web.bind.annotation.*;
+import org.springframework.web.multipart.MultipartFile;
@RequiredArgsConstructor
@RestController()
@@ -79,13 +80,36 @@ public class UserController {
/**
* 解绑邮箱
*
- * @param email 邮箱
* @return
*/
@Operation(summary = "解绑邮箱", description = "根据用户注册的邮箱解绑邮箱")
@PostMapping("/email/unbind")
- public Result unbindEmail(@RequestBody String email) {
+ public Result unbindEmail() {
userService.unbindEmail(ContextHolderUtils.getCurrentUserId());
return Results.success(null);
}
+
+
+ @Operation(summary = "个人资料管理", description = "获取完整个人资料")
+ @GetMapping("/profile")
+ public Result getUserProfile() {
+ return Results.success();
+ }
+
+ @Operation(summary = "个人资料管理", description = "更新个人资料")
+ @PutMapping("/profile")
+ public Result updateUserProfile() {
+ return Results.success();
+ }
+
+ @Operation(summary = "个人资料管理", description = "上传/更新头像")
+ @PostMapping("/avatar")
+ public Result uploadAvatar(@RequestParam("file") MultipartFile file) {
+ return Results.success();
+ }
+
+ @Operation(summary = "个人资料管理",description = "修改密码")
+ public Result changePassword() {
+ return Results.success();
+ }
}
diff --git a/aioj-backend-user-service/src/main/java/cn/meowrain/aioj/backend/userservice/package-info.java b/aioj-backend-user-service/src/main/java/cn/meowrain/aioj/backend/userservice/package-info.java
new file mode 100644
index 0000000..6f0882d
--- /dev/null
+++ b/aioj-backend-user-service/src/main/java/cn/meowrain/aioj/backend/userservice/package-info.java
@@ -0,0 +1,21 @@
+/**
+ * AIOJ 用户服务模块
+ *
+ * 提供用户相关的功能,包括:
+ *
+ * - 用户注册与登录
+ * - 用户信息管理
+ * - 邮箱验证
+ * - 用户权限
+ *
+ *
+ *
+ * @author meowrain
+ * @since 1.0.0
+ */
+@NonNullApi
+@NonNullFields
+package cn.meowrain.aioj.backend.userservice;
+
+import org.springframework.lang.NonNullApi;
+import org.springframework.lang.NonNullFields;
diff --git a/pom.xml b/pom.xml
index 4b88ff7..f069109 100644
--- a/pom.xml
+++ b/pom.xml
@@ -3,18 +3,21 @@
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">
4.0.0
+
org.springframework.boot
spring-boot-starter-parent
3.5.7
- cn.meowrain
+
+ cn.meowrain.aioj
ai-oj
- 1.0-SNAPSHOT
+ ${revision}
pom
ai-oj-microservices
一款集成了AI功能的OJ判题系统
+
aioj-backend-common
aioj-backend-gateway
@@ -24,51 +27,54 @@
aioj-backend-ai-service
aioj-backend-auth
aioj-backend-upms
- aioj-backend-common/aioj-backend-common-swagger
+ aioj-backend-file-service
+
- 17
- 17
+
+ 1.0.0
+ 17
+ ${java.version}
+ ${java.version}
UTF-8
+
+
3.5.7
2025.0.0
2025.0.0.0
+
+
0.0.47
9.0.2
+ 3.14.1
+ 3.4.5
+ 1.6.0
+
+
dev
+
+
-
- org.springframework.boot
- spring-boot-starter-aop
-
-
-
- org.apache.commons
- commons-lang3
-
-
- com.google.code.gson
- gson
- 2.9.1
-
org.projectlombok
lombok
true
+
+
cn.meowrain.aioj
aioj-backend-common-bom
- 1.0.0
+ ${revision}
pom
import
-
+
+
org.springframework.boot
spring-boot-dependencies
@@ -76,9 +82,8 @@
pom
import
-
-
+
+
org.springframework.cloud
spring-cloud-dependencies
@@ -86,6 +91,8 @@
pom
import
+
+
com.alibaba.cloud
spring-cloud-alibaba-dependencies
@@ -102,27 +109,55 @@
true
+
+
org.apache.maven.plugins
maven-compiler-plugin
- 3.14.1
+ ${maven.compiler.plugin.version}
- 17
- 17
+ ${java.version}
+ ${java.version}
UTF-8
+
+
org.springframework.boot
spring-boot-maven-plugin
${spring-boot.version}
-
+
+
+
+ org.codehaus.mojo
+ flatten-maven-plugin
+ ${flatten.plugin.version}
+
+ true
+ resolveCiFriendliesOnly
+
+
+
+ flatten
+ process-resources
+
+ flatten
+
+
+
+ flatten.clean
+ clean
+
+ clean
+
+
+
+
+
+
io.spring.javaformat
spring-javaformat-maven-plugin
@@ -135,8 +170,7 @@
-
+
io.github.git-commit-id
git-commit-id-maven-plugin
@@ -150,7 +184,6 @@
false
true
-
yyyy-MM-dd HH:mm:ss
^git.build.(time|version)$
@@ -159,12 +192,14 @@
+
+
com.google.cloud.tools
jib-maven-plugin
- 3.4.5
+ ${jib.plugin.version}
true