diff --git a/java-backend/.gitignore b/java-backend/.gitignore
deleted file mode 100644
index 63c5eb2..0000000
--- a/java-backend/.gitignore
+++ /dev/null
@@ -1,44 +0,0 @@
-# Maven
-target/
-*.class
-*.log
-.mvn/
-mvnw*
-pom.xml.tag
-pom.xml.releaseBackup
-pom.xml.versionsBackup
-pom.xml.next
-release.properties
-dependency-reduced-pom.xml
-buildNumber.properties
-.mvn/timing.properties
-
-# IDE
-.idea/
-*.iml
-*.ipr
-*.iws
-.project
-.classpath
-.settings/
-.vscode/
-
-# OS
-.DS_Store
-Thumbs.db
-
-# 配置文件(敏感信息)
-src/main/resources/application-local.yml
-src/main/resources/application-prod.yml.local
-
-# 日志
-logs/
-*.log
-
-# 临时文件
-tmp/
-temp/
-*.tmp
-*.bak
-*.swp
-*~
diff --git a/java-backend/README.md b/java-backend/README.md
deleted file mode 100644
index fa24612..0000000
--- a/java-backend/README.md
+++ /dev/null
@@ -1,177 +0,0 @@
-# Creation Java Backend
-
-Spring Boot 后端基础框架
-
-## 技术栈
-
-| 组件 | 技术 | 版本 |
-|:------|:------|:------|
-| 框架 | Spring Boot | 3.2.4 |
-| 持久层 | MyBatis-Plus | 3.5.5 |
-| 数据库 | MySQL 8.0 | 8.0.33 |
-| 迁移 | Flyway | 10.10.0 |
-| 认证 | Spring Security + JWT | 0.12.3 |
-| 缓存 | Redis | - |
-| 连接池 | Alibaba Druid | 1.2.20 |
-| 对象映射 | MapStruct | 1.5.5.Final |
-| API 文档 | Knife4j | 4.4.0 |
-| 日志 | Logback | - |
-| JSON | FastJSON2 | 2.0.43 |
-| 工具类 | Hutool | 5.8.26 |
-
-## 快速开始
-
-### 环境要求
-- Java 17+
-- Maven 3.8+
-- MySQL 8.0+
-- Redis 6.0+
-
-### 配置数据库
-
-1. 创建数据库
-```sql
-CREATE DATABASE creation_db DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
-```
-
-2. 修改 `src/main/resources/application-dev.yml` 中的数据库连接信息
-
-### 启动应用
-
-```bash
-cd java-backend
-mvn spring-boot:run -Dspring-boot.run.profiles=dev
-```
-
-启动成功后访问:
-- 应用地址:http://localhost:8580
-- API 文档:http://localhost:8580/swagger-ui.html
-
-## 项目结构
-
-```
-java-backend/
-├── src/main/java/com/lesingle/creation/
-│ ├── CreationApplication.java # 启动类
-│ ├── common/ # 公共模块
-│ │ ├── config/ # 配置类
-│ │ │ ├── MybatisPlusConfig.java
-│ │ │ ├── SecurityConfig.java
-│ │ │ └── JwtProperties.java
-│ │ ├── constant/ # 常量定义
-│ │ │ └── ErrorCode.java
-│ │ ├── core/ # 核心类
-│ │ │ └── Result.java
-│ │ ├── exception/ # 异常处理
-│ │ │ ├── BusinessException.java
-│ │ │ └── GlobalExceptionHandler.java
-│ │ ├── filter/ # 过滤器
-│ │ │ └── JwtAuthenticationFilter.java
-│ │ └── util/ # 工具类
-│ │ └── JwtTokenUtil.java
-│ ├── controller/ # 控制器
-│ ├── service/ # 服务层
-│ ├── mapper/ # Mapper 接口
-│ ├── entity/ # 实体类
-│ ├── dto/ # 数据传输对象
-│ └── vo/ # 视图对象
-├── src/main/resources/
-│ ├── application.yml # 主配置
-│ ├── application-dev.yml # 开发环境
-│ ├── application-test.yml # 测试环境
-│ ├── application-prod.yml # 生产环境
-│ ├── db/migration/ # Flyway 迁移脚本
-│ │ └── V1.0__init_schema.sql
-│ └── logback-spring.xml # 日志配置
-└── pom.xml # Maven 配置
-```
-
-## 默认账户
-
-Flyway 初始迁移后会自动创建以下账户:
-
-| 用户名 | 密码 | 角色 |
-|:------|:------|:------|
-| admin | admin123 | 超级管理员 |
-
-## 开发规范
-
-### 三层架构
-
-| 层级 | 职责 | 数据流 |
-|:------|:------|:------|
-| **Controller** | 接收请求、参数校验 | DTO ↔ VO |
-| **Service** | 业务逻辑、事务控制 | 使用 Entity |
-| **Mapper** | 数据库 CRUD | 使用 Entity |
-
-### 代码规范
-
-- Java 17 严格模式
-- 注释和日志使用中文
-- 使用 Lombok 简化代码
-- 使用 MapStruct 进行对象映射
-
-### 日志规范
-
-- 所有日志使用中文
-- 使用 MDC 实现 TraceId 链路追踪
-- 开发环境:DEBUG 级别
-- 生产环境:INFO/WARN 级别
-
-## 常用命令
-
-```bash
-# 编译
-mvn clean compile
-
-# 打包
-mvn clean package
-
-# 运行(开发环境)
-mvn spring-boot:run -Dspring-boot.run.profiles=dev
-
-# 运行(测试环境)
-mvn spring-boot:run -Dspring-boot.run.profiles=test
-
-# 运行(生产环境)
-mvn spring-boot:run -Dspring-boot.run.profiles=prod
-
-# 跳过测试打包
-mvn clean package -DskipTests
-
-# 查看依赖
-mvn dependency:tree
-```
-
-## API 接口
-
-### 认证相关
-- `POST /api/auth/login` - 用户登录
-- `POST /api/auth/logout` - 用户登出
-- `POST /api/auth/register` - 用户注册
-- `POST /api/auth/refresh` - 刷新 Token
-
-### 用户相关
-- `GET /api/users` - 用户列表
-- `GET /api/users/{id}` - 获取用户详情
-- `POST /api/users` - 创建用户
-- `PUT /api/users/{id}` - 更新用户
-- `DELETE /api/users/{id}` - 删除用户
-
-## 环境变量(生产环境)
-
-生产环境部署时需设置以下环境变量:
-
-| 变量名 | 说明 | 示例 |
-|:------|:------|:------|
-| `DATABASE_URL` | 数据库连接 URL | `jdbc:mysql://host:3306/db` |
-| `DB_USERNAME` | 数据库用户名 | `root` |
-| `DB_PASSWORD` | 数据库密码 | `password` |
-| `REDIS_HOST` | Redis 主机 | `localhost` |
-| `REDIS_PORT` | Redis 端口 | `6379` |
-| `REDIS_PASSWORD` | Redis 密码 | `password` |
-| `JWT_SECRET` | JWT 密钥 | `your-secret-key` |
-
-## License
-
-MIT
diff --git a/java-backend/lombok.config b/java-backend/lombok.config
deleted file mode 100644
index 7a21e88..0000000
--- a/java-backend/lombok.config
+++ /dev/null
@@ -1 +0,0 @@
-lombok.addLombokGeneratedAnnotation = true
diff --git a/java-backend/pom.xml b/java-backend/pom.xml
deleted file mode 100644
index 142a960..0000000
--- a/java-backend/pom.xml
+++ /dev/null
@@ -1,241 +0,0 @@
-
-
- 4.0.0
-
-
- org.springframework.boot
- spring-boot-starter-parent
- 3.2.4
-
-
-
- com.lesingle.creation
- creation
- 1.0.0-SNAPSHOT
- creation
- Lesingle Creation - Spring Boot 后端服务
-
-
- 17
- 3.5.5
- 1.2.20
- 8.0.33
- 1.5.5.Final
- 1.18.34
- 5.8.26
- 2.0.43
- 0.12.3
- 10.10.0
- 3.17.2
- 17
- 17
-
-
-
-
-
- aliyun
- Aliyun Maven
- https://maven.aliyun.com/repository/public
-
-
-
-
-
-
- org.springframework.boot
- spring-boot-starter-web
-
-
-
- org.springframework.boot
- spring-boot-starter-security
-
-
-
- org.springframework.boot
- spring-boot-starter-data-redis
-
-
-
- org.springframework.boot
- spring-boot-starter-validation
-
-
-
- org.springframework.boot
- spring-boot-starter-aop
-
-
-
- org.springframework.boot
- spring-boot-configuration-processor
- true
-
-
-
-
- com.baomidou
- mybatis-plus-spring-boot3-starter
- ${mybatis-plus.version}
-
-
-
-
- com.mysql
- mysql-connector-j
- ${mysql.version}
-
-
-
-
- com.alibaba
- druid-spring-boot-3-starter
- ${druid.version}
-
-
-
-
- org.flywaydb
- flyway-core
- ${flyway.version}
-
-
-
-
- org.flywaydb
- flyway-mysql
- ${flyway.version}
-
-
-
-
- org.springdoc
- springdoc-openapi-starter-webmvc-ui
- 2.3.0
-
-
-
-
- org.mapstruct
- mapstruct
- ${mapstruct.version}
-
-
-
- org.mapstruct
- mapstruct-processor
- ${mapstruct.version}
-
-
-
-
- org.projectlombok
- lombok
- ${lombok.version}
- true
-
-
-
-
- cn.hutool
- hutool-all
- ${hutool.version}
-
-
-
-
- com.aliyun.oss
- aliyun-sdk-oss
- ${aliyun.oss.version}
-
-
-
-
- com.alibaba.fastjson2
- fastjson2
- ${fastjson2.version}
-
-
-
-
- io.jsonwebtoken
- jjwt-api
- ${jjwt.version}
-
-
-
- io.jsonwebtoken
- jjwt-impl
- ${jjwt.version}
- runtime
-
-
-
- io.jsonwebtoken
- jjwt-jackson
- ${jjwt.version}
- runtime
-
-
-
-
- org.springframework.boot
- spring-boot-starter-test
- test
-
-
-
- org.springframework.security
- spring-security-test
- test
-
-
-
-
-
-
- org.springframework.boot
- spring-boot-maven-plugin
-
-
-
- org.projectlombok
- lombok
-
-
-
-
-
-
- org.apache.maven.plugins
- maven-compiler-plugin
-
- 17
- 17
- UTF-8
-
-
- org.projectlombok
- lombok
- ${lombok.version}
-
-
- org.projectlombok
- lombok-mapstruct-binding
- 0.2.0
-
-
- org.mapstruct
- mapstruct-processor
- ${mapstruct.version}
-
-
-
-
-
-
-
-
diff --git a/java-backend/src/main/java/com/lesingle/creation/CreationApplication.java b/java-backend/src/main/java/com/lesingle/creation/CreationApplication.java
deleted file mode 100644
index 35f3e89..0000000
--- a/java-backend/src/main/java/com/lesingle/creation/CreationApplication.java
+++ /dev/null
@@ -1,25 +0,0 @@
-package com.lesingle.creation;
-
-import org.mybatis.spring.annotation.MapperScan;
-import org.springframework.boot.SpringApplication;
-import org.springframework.boot.autoconfigure.SpringBootApplication;
-
-/**
- * Spring Boot 启动类
- *
- * @author lesingle
- * @since 1.0.0
- */
-@SpringBootApplication
-@MapperScan("com.lesingle.creation.mapper")
-public class CreationApplication {
-
- public static void main(String[] args) {
- SpringApplication.run(CreationApplication.class, args);
- System.out.println("============================================");
- System.out.println(" Creation 应用启动成功!");
- System.out.println(" 端口:8580");
- System.out.println(" API 文档:http://localhost:8580/doc.html");
- System.out.println("============================================");
- }
-}
diff --git a/java-backend/src/main/java/com/lesingle/creation/common/annotation/RateLimiter.java b/java-backend/src/main/java/com/lesingle/creation/common/annotation/RateLimiter.java
deleted file mode 100644
index 5a062b4..0000000
--- a/java-backend/src/main/java/com/lesingle/creation/common/annotation/RateLimiter.java
+++ /dev/null
@@ -1,45 +0,0 @@
-package com.lesingle.creation.common.annotation;
-
-import java.lang.annotation.Documented;
-import java.lang.annotation.ElementType;
-import java.lang.annotation.Retention;
-import java.lang.annotation.RetentionPolicy;
-import java.lang.annotation.Target;
-
-/**
- * 限流注解
- *
- * 基于 Redis 滑动窗口实现限流
- *
- * @author lesingle
- * @since 1.0.0
- */
-@Target({ElementType.METHOD})
-@Retention(RetentionPolicy.RUNTIME)
-@Documented
-public @interface RateLimiter {
-
- /**
- * 限流 Key
- * 支持 SpEL 表达式,如 "#username"
- */
- String key() default "";
-
- /**
- * 限流时间窗口(秒)
- * 默认 60 秒
- */
- int time() default 60;
-
- /**
- * 时间窗口内最大请求数
- * 默认 100 次
- */
- int count() default 100;
-
- /**
- * 提示信息
- */
- String message() default "请求过于频繁,请稍后再试";
-
-}
diff --git a/java-backend/src/main/java/com/lesingle/creation/common/aspect/LogAspect.java b/java-backend/src/main/java/com/lesingle/creation/common/aspect/LogAspect.java
deleted file mode 100644
index 1b93a46..0000000
--- a/java-backend/src/main/java/com/lesingle/creation/common/aspect/LogAspect.java
+++ /dev/null
@@ -1,104 +0,0 @@
-package com.lesingle.creation.common.aspect;
-
-import com.lesingle.creation.common.util.TraceIdUtil;
-import lombok.extern.slf4j.Slf4j;
-import org.aspectj.lang.JoinPoint;
-import org.aspectj.lang.ProceedingJoinPoint;
-import org.aspectj.lang.annotation.Around;
-import org.aspectj.lang.annotation.Aspect;
-import org.aspectj.lang.annotation.Pointcut;
-import org.springframework.stereotype.Component;
-import org.springframework.web.context.request.RequestContextHolder;
-import org.springframework.web.context.request.ServletRequestAttributes;
-
-import jakarta.servlet.http.HttpServletRequest;
-import java.net.InetAddress;
-import java.net.UnknownHostException;
-
-/**
- * 日志切面
- *
- * 拦截 Controller 层所有方法,记录请求日志
- * 包含:TraceId、请求方法、请求路径、IP、耗时
- *
- * @author lesingle
- * @since 1.0.0
- */
-@Slf4j
-@Aspect
-@Component
-public class LogAspect {
-
- /**
- * 定义切点:拦截 Controller 层所有方法
- */
- @Pointcut("execution(* com.lesingle.creation.controller..*.*(..))")
- public void controllerPointcut() {
- }
-
- /**
- * 环绕通知:记录请求耗时
- */
- @Around("controllerPointcut()")
- public Object around(ProceedingJoinPoint joinPoint) throws Throwable {
- ServletRequestAttributes attributes =
- (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();
- if (attributes == null) {
- return joinPoint.proceed();
- }
-
- HttpServletRequest request = attributes.getRequest();
- String traceId = TraceIdUtil.getTraceId();
- String method = request.getMethod();
- String uri = request.getRequestURI();
- String ip = getIpAddress(request);
-
- long startTime = System.currentTimeMillis();
- log.info("【{}】请求开始 | 方法:{} | 路径:{} | IP:{}", traceId, method, uri, ip);
-
- Object result;
- try {
- result = joinPoint.proceed();
- long endTime = System.currentTimeMillis();
- log.info("【{}】请求成功 | 方法:{} | 路径:{} | 耗时:{}ms",
- traceId, method, uri, (endTime - startTime));
- } catch (Throwable e) {
- long endTime = System.currentTimeMillis();
- log.error("【{}】请求异常 | 方法:{} | 路径:{} | 耗时:{}ms | 异常:{}",
- traceId, method, uri, (endTime - startTime), e.getMessage(), e);
- throw e;
- }
-
- return result;
- }
-
- /**
- * 获取请求 IP 地址
- */
- private String getIpAddress(HttpServletRequest request) {
- String ip = request.getHeader("x-forwarded-for");
- if (ip == null || ip.isEmpty() || "unknown".equalsIgnoreCase(ip)) {
- ip = request.getHeader("Proxy-Client-IP");
- }
- if (ip == null || ip.isEmpty() || "unknown".equalsIgnoreCase(ip)) {
- ip = request.getHeader("WL-Proxy-Client-IP");
- }
- if (ip == null || ip.isEmpty() || "unknown".equalsIgnoreCase(ip)) {
- ip = request.getRemoteAddr();
- // 如果是本地 IPv6,转换为 IPv4
- if ("127.0.0.1".equals(ip) || "0:0:0:0:0:0:0:1".equals(ip)) {
- try {
- ip = InetAddress.getLocalHost().getHostAddress();
- } catch (UnknownHostException e) {
- log.error("获取 IP 地址失败:{}", e.getMessage());
- }
- }
- }
- // 多个代理时,取第一个 IP
- if (ip != null && ip.contains(",")) {
- ip = ip.split(",")[0].trim();
- }
- return ip;
- }
-
-}
diff --git a/java-backend/src/main/java/com/lesingle/creation/common/aspect/RateLimiterAspect.java b/java-backend/src/main/java/com/lesingle/creation/common/aspect/RateLimiterAspect.java
deleted file mode 100644
index d1012c3..0000000
--- a/java-backend/src/main/java/com/lesingle/creation/common/aspect/RateLimiterAspect.java
+++ /dev/null
@@ -1,120 +0,0 @@
-package com.lesingle.creation.common.aspect;
-
-import com.lesingle.creation.common.annotation.RateLimiter;
-import com.lesingle.creation.common.exception.BusinessException;
-import com.lesingle.creation.common.util.RateLimiterUtil;
-import com.lesingle.creation.common.util.TraceIdUtil;
-import lombok.extern.slf4j.Slf4j;
-import org.aspectj.lang.JoinPoint;
-import org.aspectj.lang.annotation.Aspect;
-import org.aspectj.lang.annotation.Before;
-import org.aspectj.lang.reflect.MethodSignature;
-import org.springframework.expression.Expression;
-import org.springframework.expression.ExpressionParser;
-import org.springframework.expression.spel.standard.SpelExpressionParser;
-import org.springframework.expression.spel.support.StandardEvaluationContext;
-import org.springframework.stereotype.Component;
-import org.springframework.web.context.request.RequestContextHolder;
-import org.springframework.web.context.request.ServletRequestAttributes;
-
-import jakarta.servlet.http.HttpServletRequest;
-import java.lang.reflect.Method;
-import java.net.InetAddress;
-import java.net.UnknownHostException;
-
-/**
- * 限流切面
- *
- * 拦截标注了 @RateLimiter 注解的方法,实现限流控制
- *
- * @author lesingle
- * @since 1.0.0
- */
-@Slf4j
-@Aspect
-@Component
-public class RateLimiterAspect {
-
- private static final ExpressionParser PARSER = new SpelExpressionParser();
-
- /**
- * 前置通知:执行限流检查
- */
- @Before("@annotation(rateLimiter)")
- public void before(JoinPoint joinPoint, RateLimiter rateLimiter) {
- // 获取注解参数
- String keyExpression = rateLimiter.key();
- int time = rateLimiter.time();
- int count = rateLimiter.count();
- String message = rateLimiter.message();
-
- // 解析 Key
- String key = parseKey(keyExpression, joinPoint);
-
- // 执行限流检查
- boolean allowed = RateLimiterUtil.tryAcquire(key, time, count);
- if (!allowed) {
- String traceId = TraceIdUtil.getTraceId();
- log.warn("【{}】请求被限流 | Key: {} | 限制:{}/{}s", traceId, key, count, time);
- throw new BusinessException(message);
- }
-
- log.debug("限流检查通过 | Key: {} | 当前计数:{}", key, RateLimiterUtil.getCurrentCount(key));
- }
-
- /**
- * 解析限流 Key
- * 支持 SpEL 表达式
- */
- private String parseKey(String keyExpression, JoinPoint joinPoint) {
- if (keyExpression.isEmpty()) {
- // 默认使用 IP 地址作为 key
- return "rate_limit:" + getIpAddress();
- }
-
- // 解析 SpEL 表达式
- MethodSignature signature = (MethodSignature) joinPoint.getSignature();
- Method method = signature.getMethod();
- Object[] args = joinPoint.getArgs();
- String[] paramNames = signature.getParameterNames();
-
- StandardEvaluationContext context = new StandardEvaluationContext();
- for (int i = 0; i < args.length; i++) {
- context.setVariable(paramNames[i], args[i]);
- }
-
- try {
- Expression expression = PARSER.parseExpression(keyExpression);
- Object value = expression.getValue(context);
- return "rate_limit:" + (value != null ? value.toString() : "unknown");
- } catch (Exception e) {
- log.error("解析限流 Key 失败:{}", keyExpression, e);
- return "rate_limit:error";
- }
- }
-
- /**
- * 获取请求 IP 地址
- */
- private String getIpAddress() {
- try {
- ServletRequestAttributes attributes =
- (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();
- if (attributes != null) {
- HttpServletRequest request = attributes.getRequest();
- String ip = request.getHeader("x-forwarded-for");
- if (ip == null || ip.isEmpty() || "unknown".equalsIgnoreCase(ip)) {
- ip = request.getRemoteAddr();
- }
- if ("127.0.0.1".equals(ip) || "0:0:0:0:0:0:0:1".equals(ip)) {
- ip = InetAddress.getLocalHost().getHostAddress();
- }
- return ip;
- }
- } catch (UnknownHostException e) {
- log.error("获取 IP 地址失败:{}", e.getMessage());
- }
- return "unknown";
- }
-
-}
diff --git a/java-backend/src/main/java/com/lesingle/creation/common/aspect/TraceIdAspect.java b/java-backend/src/main/java/com/lesingle/creation/common/aspect/TraceIdAspect.java
deleted file mode 100644
index 0f6b269..0000000
--- a/java-backend/src/main/java/com/lesingle/creation/common/aspect/TraceIdAspect.java
+++ /dev/null
@@ -1,48 +0,0 @@
-package com.lesingle.creation.common.aspect;
-
-import com.lesingle.creation.common.util.TraceIdUtil;
-import lombok.extern.slf4j.Slf4j;
-import org.aspectj.lang.ProceedingJoinPoint;
-import org.aspectj.lang.annotation.Around;
-import org.aspectj.lang.annotation.Aspect;
-import org.springframework.stereotype.Component;
-
-/**
- * TraceId 日志链路追踪切面
- *
- * 在 Controller 层拦截请求,生成 TraceId 并放入 MDC,实现全链路日志追踪
- *
- * @author lesingle
- * @since 1.0.0
- */
-@Slf4j
-@Aspect
-@Component
-public class TraceIdAspect {
-
- /**
- * 环绕通知,拦截 Controller 层所有方法
- */
- @Around("execution(* com.lesingle.creation.controller..*.*(..))")
- public Object around(ProceedingJoinPoint joinPoint) throws Throwable {
- long startTime = System.currentTimeMillis();
-
- try {
- // 生成 TraceId 并放入 MDC
- TraceIdUtil.setTraceId();
-
- log.debug("请求开始,TraceId: {}", TraceIdUtil.getTraceId());
-
- // 执行目标方法
- Object result = joinPoint.proceed();
-
- long costTime = System.currentTimeMillis() - startTime;
- log.debug("请求结束,TraceId: {}, 耗时:{}ms", TraceIdUtil.getTraceId(), costTime);
-
- return result;
- } finally {
- // 清除 MDC,防止内存泄漏
- TraceIdUtil.clear();
- }
- }
-}
diff --git a/java-backend/src/main/java/com/lesingle/creation/common/base/BaseEntity.java b/java-backend/src/main/java/com/lesingle/creation/common/base/BaseEntity.java
deleted file mode 100644
index d663856..0000000
--- a/java-backend/src/main/java/com/lesingle/creation/common/base/BaseEntity.java
+++ /dev/null
@@ -1,59 +0,0 @@
-package com.lesingle.creation.common.base;
-
-import com.baomidou.mybatisplus.annotation.*;
-import lombok.Data;
-
-import java.io.Serializable;
-import java.time.LocalDateTime;
-
-/**
- * 实体基类
- *
- * 包含基础字段:id、createBy、createTime、updateBy、updateTime、deleted
- * 所有实体类应继承此类
- *
- * @author lesingle
- * @since 1.0.0
- */
-@Data
-public abstract class BaseEntity implements Serializable {
-
- private static final long serialVersionUID = 1L;
-
- /**
- * 主键 ID
- */
- @TableId(type = IdType.AUTO)
- private Long id;
-
- /**
- * 创建人账号
- */
- @TableField(fill = FieldFill.INSERT)
- private String createBy;
-
- /**
- * 创建时间
- */
- @TableField(fill = FieldFill.INSERT)
- private LocalDateTime createTime;
-
- /**
- * 更新人账号
- */
- @TableField(fill = FieldFill.INSERT_UPDATE)
- private String updateBy;
-
- /**
- * 更新时间
- */
- @TableField(fill = FieldFill.INSERT_UPDATE)
- private LocalDateTime updateTime;
-
- /**
- * 逻辑删除标识(0-未删除,1-已删除)
- */
- @TableLogic
- private Integer deleted;
-
-}
diff --git a/java-backend/src/main/java/com/lesingle/creation/common/config/JwtProperties.java b/java-backend/src/main/java/com/lesingle/creation/common/config/JwtProperties.java
deleted file mode 100644
index 93ec7b6..0000000
--- a/java-backend/src/main/java/com/lesingle/creation/common/config/JwtProperties.java
+++ /dev/null
@@ -1,38 +0,0 @@
-package com.lesingle.creation.common.config;
-
-import lombok.Data;
-import org.springframework.boot.context.properties.ConfigurationProperties;
-import org.springframework.stereotype.Component;
-
-/**
- * JWT 配置属性
- *
- * @author lesingle
- * @since 1.0.0
- */
-@Data
-@Component
-@ConfigurationProperties(prefix = "jwt")
-public class JwtProperties {
-
- /**
- * JWT 密钥
- */
- private String secret;
-
- /**
- * Token 过期时间(毫秒)
- */
- private Long expiration;
-
- /**
- * Token 前缀
- */
- private String tokenPrefix;
-
- /**
- * Token 请求头名称
- */
- private String header;
-
-}
diff --git a/java-backend/src/main/java/com/lesingle/creation/common/config/MybatisPlusConfig.java b/java-backend/src/main/java/com/lesingle/creation/common/config/MybatisPlusConfig.java
deleted file mode 100644
index 3e7e1a3..0000000
--- a/java-backend/src/main/java/com/lesingle/creation/common/config/MybatisPlusConfig.java
+++ /dev/null
@@ -1,28 +0,0 @@
-package com.lesingle.creation.common.config;
-
-import com.baomidou.mybatisplus.annotation.DbType;
-import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;
-import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor;
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.Configuration;
-
-/**
- * MyBatis-Plus 配置类
- *
- * @author lesingle
- * @since 1.0.0
- */
-@Configuration
-public class MybatisPlusConfig {
-
- /**
- * 分页插件配置
- */
- @Bean
- public MybatisPlusInterceptor mybatisPlusInterceptor() {
- MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
- // 添加分页插件
- interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL));
- return interceptor;
- }
-}
diff --git a/java-backend/src/main/java/com/lesingle/creation/common/config/OssProperties.java b/java-backend/src/main/java/com/lesingle/creation/common/config/OssProperties.java
deleted file mode 100644
index 2802405..0000000
--- a/java-backend/src/main/java/com/lesingle/creation/common/config/OssProperties.java
+++ /dev/null
@@ -1,51 +0,0 @@
-package com.lesingle.creation.common.config;
-
-import lombok.Data;
-import org.springframework.boot.context.properties.ConfigurationProperties;
-import org.springframework.stereotype.Component;
-
-/**
- * 阿里云 OSS 配置属性
- *
- * @author lesingle
- * @since 1.0.0
- */
-@Data
-@Component
-@ConfigurationProperties(prefix = "aliyun.oss")
-public class OssProperties {
-
- /**
- * OSS Endpoint
- * 如:oss-cn-hangzhou.aliyuncs.com
- */
- private String endpoint;
-
- /**
- * Access Key ID
- */
- private String accessKeyId;
-
- /**
- * Access Key Secret
- */
- private String accessKeySecret;
-
- /**
- * Bucket 名称
- */
- private String bucketName;
-
- /**
- * 自定义域名(可选)
- * 如:https://cdn.example.com
- */
- private String customDomain;
-
- /**
- * 文件上传根目录
- * 如:uploads/
- */
- private String rootDir = "";
-
-}
diff --git a/java-backend/src/main/java/com/lesingle/creation/common/config/RedisConfig.java b/java-backend/src/main/java/com/lesingle/creation/common/config/RedisConfig.java
deleted file mode 100644
index 365a771..0000000
--- a/java-backend/src/main/java/com/lesingle/creation/common/config/RedisConfig.java
+++ /dev/null
@@ -1,92 +0,0 @@
-package com.lesingle.creation.common.config;
-
-import com.fasterxml.jackson.annotation.JsonAutoDetect;
-import com.fasterxml.jackson.annotation.PropertyAccessor;
-import com.fasterxml.jackson.databind.ObjectMapper;
-import com.fasterxml.jackson.databind.jsontype.impl.LaissezFaireSubTypeValidator;
-import org.springframework.cache.CacheManager;
-import org.springframework.cache.annotation.EnableCaching;
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.Configuration;
-import org.springframework.data.redis.cache.RedisCacheConfiguration;
-import org.springframework.data.redis.cache.RedisCacheManager;
-import org.springframework.data.redis.connection.RedisConnectionFactory;
-import org.springframework.data.redis.core.RedisTemplate;
-import org.springframework.data.redis.serializer.Jackson2JsonRedisSerializer;
-import org.springframework.data.redis.serializer.RedisSerializationContext;
-import org.springframework.data.redis.serializer.StringRedisSerializer;
-
-import java.time.Duration;
-
-/**
- * Redis 配置类
- *
- * 配置 RedisTemplate 和 CacheManager
- *
- * @author lesingle
- * @since 1.0.0
- */
-@Configuration
-@EnableCaching
-public class RedisConfig {
-
- /**
- * 配置 RedisTemplate
- */
- @Bean
- public RedisTemplate redisTemplate(RedisConnectionFactory factory) {
- RedisTemplate template = new RedisTemplate<>();
- template.setConnectionFactory(factory);
-
- // 配置 JSON 序列化器
- Jackson2JsonRedisSerializer