admin/backend/README.md

209 lines
4.2 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 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