209 lines
4.2 KiB
Markdown
209 lines
4.2 KiB
Markdown
# Soybean Admin Backend
|
||
|
||
基于 Spring Boot 3.2 的后端服务,为 Soybean Admin 前端提供 API 支持。
|
||
|
||
## 技术栈
|
||
|
||
- Spring Boot 3.2.0
|
||
- MyBatis Plus 3.5.5
|
||
- MySQL 8.0+
|
||
- JWT (jjwt 0.12.3)
|
||
- Lombok
|
||
|
||
## 快速开始
|
||
|
||
### 1. 环境要求
|
||
|
||
- JDK 17+
|
||
- Maven 3.6+
|
||
- MySQL 8.0+
|
||
|
||
### 2. 数据库初始化
|
||
|
||
```bash
|
||
# 登录 MySQL
|
||
mysql -u root -p
|
||
|
||
# 执行初始化脚本
|
||
source src/main/resources/sql/init.sql
|
||
```
|
||
|
||
或者直接在 MySQL 客户端中执行 `src/main/resources/sql/init.sql` 文件。
|
||
|
||
### 3. 配置数据库
|
||
|
||
编辑 `src/main/resources/application.yml`,确认数据库配置:
|
||
|
||
```yaml
|
||
spring:
|
||
datasource:
|
||
url: jdbc:mysql://localhost:3306/soybean_admin?useUnicode=true&characterEncoding=utf8&serverTimezone=Asia/Shanghai&useSSL=false
|
||
username: root
|
||
password: root
|
||
```
|
||
|
||
### 4. 启动项目
|
||
|
||
```bash
|
||
# 使用 Maven 启动
|
||
mvn spring-boot:run
|
||
|
||
# 或者先编译再运行
|
||
mvn clean package
|
||
java -jar target/soybean-admin-backend-1.0.0.jar
|
||
```
|
||
|
||
服务将在 `http://localhost:8080` 启动。
|
||
|
||
## 默认账号
|
||
|
||
| 用户名 | 密码 | 角色 | 说明 |
|
||
|--------|------|------|------|
|
||
| admin | admin123 | R_SUPER, R_ADMIN | 超级管理员 |
|
||
| user | user123 | R_USER | 普通用户 |
|
||
|
||
## API 接口
|
||
|
||
### 认证接口
|
||
|
||
#### 1. 登录
|
||
```
|
||
POST /auth/login
|
||
Content-Type: application/json
|
||
|
||
{
|
||
"userName": "admin",
|
||
"password": "admin123"
|
||
}
|
||
```
|
||
|
||
#### 2. 获取用户信息
|
||
```
|
||
GET /auth/getUserInfo
|
||
Authorization: Bearer {token}
|
||
```
|
||
|
||
#### 3. 刷新令牌
|
||
```
|
||
POST /auth/refreshToken
|
||
Content-Type: application/json
|
||
|
||
{
|
||
"refreshToken": "xxx"
|
||
}
|
||
```
|
||
|
||
### 路由接口
|
||
|
||
#### 1. 获取常量路由
|
||
```
|
||
GET /route/getConstantRoutes
|
||
Authorization: Bearer {token}
|
||
```
|
||
|
||
#### 2. 获取用户路由
|
||
```
|
||
GET /route/getUserRoutes
|
||
Authorization: Bearer {token}
|
||
```
|
||
|
||
#### 3. 检查路由是否存在
|
||
```
|
||
GET /route/isRouteExist?routeName=home
|
||
Authorization: Bearer {token}
|
||
```
|
||
|
||
## 响应格式
|
||
|
||
所有接口统一返回格式:
|
||
|
||
```json
|
||
{
|
||
"code": "0000",
|
||
"msg": "success",
|
||
"data": {}
|
||
}
|
||
```
|
||
|
||
- `code`: "0000" 表示成功,其他表示失败
|
||
- `msg`: 响应消息
|
||
- `data`: 响应数据
|
||
|
||
## 错误码
|
||
|
||
| 错误码 | 说明 |
|
||
|--------|------|
|
||
| 0000 | 成功 |
|
||
| 1111 | 通用错误 |
|
||
| 7777 | 需要弹窗提示的登出 |
|
||
| 8888 | 直接登出 |
|
||
| 9999 | Token 过期 |
|
||
|
||
## 项目结构
|
||
|
||
```
|
||
backend/
|
||
├── src/main/java/com/soybean/admin/
|
||
│ ├── common/ # 通用类
|
||
│ │ └── Result.java # 统一响应格式
|
||
│ ├── config/ # 配置类
|
||
│ │ ├── WebConfig.java
|
||
│ │ └── InterceptorConfig.java
|
||
│ ├── controller/ # 控制器
|
||
│ │ ├── AuthController.java
|
||
│ │ └── RouteController.java
|
||
│ ├── dto/ # 数据传输对象
|
||
│ ├── entity/ # 实体类
|
||
│ │ ├── User.java
|
||
│ │ └── Route.java
|
||
│ ├── interceptor/ # 拦截器
|
||
│ │ └── AuthInterceptor.java
|
||
│ ├── mapper/ # MyBatis Mapper
|
||
│ │ ├── UserMapper.java
|
||
│ │ └── RouteMapper.java
|
||
│ ├── service/ # 服务层
|
||
│ │ ├── AuthService.java
|
||
│ │ └── RouteService.java
|
||
│ └── util/ # 工具类
|
||
│ └── JwtUtil.java
|
||
└── src/main/resources/
|
||
├── application.yml # 配置文件
|
||
└── sql/
|
||
└── init.sql # 数据库初始化脚本
|
||
```
|
||
|
||
## 前端配置
|
||
|
||
修改前端项目的 `.env.test` 或 `.env.prod` 文件:
|
||
|
||
```env
|
||
VITE_SERVICE_BASE_URL=http://localhost:8080
|
||
```
|
||
|
||
## 开发说明
|
||
|
||
### 添加新接口
|
||
|
||
1. 在 `entity` 包中创建实体类
|
||
2. 在 `mapper` 包中创建 Mapper 接口
|
||
3. 在 `service` 包中创建服务类
|
||
4. 在 `controller` 包中创建控制器
|
||
5. 在 `dto` 包中创建 DTO 类(如需要)
|
||
|
||
### 权限控制
|
||
|
||
- 不需要认证的接口在 `InterceptorConfig` 中配置 `excludePathPatterns`
|
||
- 需要特定角色的路由在数据库 `sys_route` 表的 `roles` 字段配置
|
||
|
||
## 注意事项
|
||
|
||
1. 生产环境请修改 JWT 密钥(`application.yml` 中的 `jwt.secret`)
|
||
2. 生产环境请使用加密的密码存储(建议使用 BCrypt)
|
||
3. 建议配置日志输出到文件
|
||
4. 建议添加全局异常处理
|
||
5. 建议添加接口限流和防重放攻击
|
||
|
||
## License
|
||
|
||
MIT
|