# 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