..
2026-02-28 21:34:04 +08:00
2026-02-28 21:34:04 +08:00
2026-02-28 21:34:04 +08:00
2026-02-28 21:34:04 +08:00
2026-02-28 21:34:04 +08:00

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. 数据库初始化

# 登录 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,确认数据库配置:

spring:
  datasource:
    url: jdbc:mysql://localhost:3306/soybean_admin?useUnicode=true&characterEncoding=utf8&serverTimezone=Asia/Shanghai&useSSL=false
    username: root
    password: root

4. 启动项目

# 使用 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}

响应格式

所有接口统一返回格式:

{
  "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 文件:

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