# 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
