From baa8bb57d8e1a4d60170904c40d149fcdfc1c460 Mon Sep 17 00:00:00 2001
From: chaos <7676076@qq.com>
Date: Fri, 18 Jul 2025 15:11:16 +0800
Subject: [PATCH] =?UTF-8?q?feat(chaos-api):=20=E5=88=9D=E5=A7=8B=E5=8C=96?=
=?UTF-8?q?=E9=A1=B9=E7=9B=AE=E5=9F=BA=E7=A1=80=E7=BB=93=E6=9E=84?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
- 新增 ApiResult 类用于统一返回结果
- 添加应用配置文件和日志配置文件
- 配置 MyBatis-Plus 和 Druid 数据源
- 实现基本的安全配置,包括未授权和权限不足的处理
- 引入必要的依赖,如 lombok、fastjson2、MariaDB驱动等
---
chaos_api_common/pom.xml | 12 +++++-
.../cn/nopj/chaos_api/model/ApiResult.java | 30 ++++++++++++++
chaos_api_data/pom.xml | 10 +++++
.../chaos_api/config/MyBatisPlusConfig.java | 9 +++++
.../sec/RestAuthenticationEntryPoint.java | 28 +++++++++++++
.../sec/RestfulAccessDeniedHandler.java | 29 ++++++++++++++
.../chaos_api/config/sec/SecurityConfig.java | 40 +++++++++++++++++++
.../src/main/resources/application.yaml | 28 +++++++++++++
.../src/main/resources/log4j2-spring.xml | 38 ++++++++++++++++++
pom.xml | 26 ++++++++++++
10 files changed, 249 insertions(+), 1 deletion(-)
create mode 100644 chaos_api_common/src/main/java/cn/nopj/chaos_api/model/ApiResult.java
create mode 100644 chaos_api_data/src/main/java/cn/nopj/chaos_api/config/MyBatisPlusConfig.java
create mode 100644 chaos_api_web/src/main/java/cn/nopj/chaos_api/config/sec/RestAuthenticationEntryPoint.java
create mode 100644 chaos_api_web/src/main/java/cn/nopj/chaos_api/config/sec/RestfulAccessDeniedHandler.java
create mode 100644 chaos_api_web/src/main/java/cn/nopj/chaos_api/config/sec/SecurityConfig.java
create mode 100644 chaos_api_web/src/main/resources/application.yaml
create mode 100644 chaos_api_web/src/main/resources/log4j2-spring.xml
diff --git a/chaos_api_common/pom.xml b/chaos_api_common/pom.xml
index 14197f9..7f56791 100644
--- a/chaos_api_common/pom.xml
+++ b/chaos_api_common/pom.xml
@@ -19,5 +19,15 @@
21
UTF-8
-
+
+
+ org.projectlombok
+ lombok
+ true
+
+
+ com.alibaba.fastjson2
+ fastjson2
+
+
\ No newline at end of file
diff --git a/chaos_api_common/src/main/java/cn/nopj/chaos_api/model/ApiResult.java b/chaos_api_common/src/main/java/cn/nopj/chaos_api/model/ApiResult.java
new file mode 100644
index 0000000..3d2eb54
--- /dev/null
+++ b/chaos_api_common/src/main/java/cn/nopj/chaos_api/model/ApiResult.java
@@ -0,0 +1,30 @@
+package cn.nopj.chaos_api.model;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+public class ApiResult {
+
+ private int code;
+ private String msg;
+ private T data;
+
+
+
+ public static ApiResult success(T data) {
+ return new ApiResult<>(200, "success", data);
+ }
+ public static ApiResult success(String msg, T data) {
+ return new ApiResult<>(200, msg, data);
+ }
+ public static ApiResult failed(int code, String msg) {
+ return new ApiResult<>(code, msg, null);
+ }
+ public static ApiResult failed(String msg) {
+ return new ApiResult<>(500, msg, null);
+ }
+}
diff --git a/chaos_api_data/pom.xml b/chaos_api_data/pom.xml
index 8a5ca58..bd564aa 100644
--- a/chaos_api_data/pom.xml
+++ b/chaos_api_data/pom.xml
@@ -40,5 +40,15 @@
com.mysql
mysql-connector-j
+
+ com.alibaba
+ druid-spring-boot-starter
+
+
+
+ org.mariadb.jdbc
+ mariadb-java-client
+ 3.5.4
+
\ No newline at end of file
diff --git a/chaos_api_data/src/main/java/cn/nopj/chaos_api/config/MyBatisPlusConfig.java b/chaos_api_data/src/main/java/cn/nopj/chaos_api/config/MyBatisPlusConfig.java
new file mode 100644
index 0000000..e0bfb09
--- /dev/null
+++ b/chaos_api_data/src/main/java/cn/nopj/chaos_api/config/MyBatisPlusConfig.java
@@ -0,0 +1,9 @@
+package cn.nopj.chaos_api.config;
+
+import org.mybatis.spring.annotation.MapperScan;
+import org.springframework.context.annotation.Configuration;
+
+@Configuration
+@MapperScan("cn.nopj.chaos_api.mapper")
+public class MyBatisPlusConfig {
+}
diff --git a/chaos_api_web/src/main/java/cn/nopj/chaos_api/config/sec/RestAuthenticationEntryPoint.java b/chaos_api_web/src/main/java/cn/nopj/chaos_api/config/sec/RestAuthenticationEntryPoint.java
new file mode 100644
index 0000000..1816734
--- /dev/null
+++ b/chaos_api_web/src/main/java/cn/nopj/chaos_api/config/sec/RestAuthenticationEntryPoint.java
@@ -0,0 +1,28 @@
+package cn.nopj.chaos_api.config.sec;
+
+import cn.nopj.chaos_api.model.ApiResult;
+import com.alibaba.fastjson2.JSONObject;
+import jakarta.servlet.ServletException;
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletResponse;
+import org.springframework.security.core.AuthenticationException;
+import org.springframework.security.web.AuthenticationEntryPoint;
+import org.springframework.stereotype.Component;
+
+import java.io.IOException;
+
+@Component
+public class RestAuthenticationEntryPoint implements AuthenticationEntryPoint {
+ @Override
+ public void commence(HttpServletRequest request, HttpServletResponse response, AuthenticationException authException) throws IOException {
+ response.setCharacterEncoding("UTF-8");
+ response.setContentType("application/json");
+ response.setStatus(HttpServletResponse.SC_UNAUTHORIZED);
+
+ ApiResult