# RuoYi-SpringBoot3-Pro
**Repository Path**: XlSmallMing/RuoYi-SpringBoot3-Pro
## Basic Information
- **Project Name**: RuoYi-SpringBoot3-Pro
- **Description**: No description available
- **Primary Language**: Unknown
- **License**: MIT
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 3
- **Created**: 2025-12-25
- **Last Updated**: 2025-12-25
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
RuoYi SpringBoot3 Pro v3.9.0
基于 SpringBoot 3 + MyBatis-Plus 的企业级快速开发框架
## 平台简介
RuoYi SpringBoot3 Pro 是在 [RuoYi-Vue](https://gitee.com/y_project/RuoYi-Vue/tree/springboot3/) 基础上的企业级增强版本,保留了原有的所有功能,并新增了多项企业级特性,全部开源免费。
本项目采用最新技术栈,提供 **代码加密保护**、**三级等保支持**、**AI 对话能力**、**更强大的 ORM 支持**、**多数据库适配**、**低代码开发能力**等企业级功能,适合中大型项目和政企系统快速开发。
## 📑 目录导航
- [平台简介](#平台简介)
- [前端项目](#前端项目)
- [UniApp 移动端](#uniapp-移动端)
- [核心新特性](#核心新特性)
- [技术栈](#技术栈)
- [内置功能](#内置功能)
- [快速开始](#快速开始)
- [使用说明](#使用说明)
- [项目结构](#项目结构)
- [与原版对比](#与原版对比)
- [常见问题](#常见问题)
- [部署说明](#部署说明)
- [参与贡献](#参与贡献)
- [开源协议](#开源协议)
- [鸣谢](#鸣谢)
- [联系方式](#联系方式)
## 前端项目
- 🖥️ Element Plus 版本:https://github.com/undsky/RuoYi-SpringBoot3-ElementPlus
- 🎨 Vue3 Prettier 版本:https://github.com/undsky/ruoyi-vue3-prettier
( fork from https://gitee.com/codelm/ruoyi-vue3-lmw )
- 🐻 BearJia Vue3 版本:https://github.com/undsky/BearJia-Vue3/blob/master/docs/ruoyi-usage.md
( fork from https://gitee.com/javaxiaobear_admin/bear-jia-vue3 )
## UniApp 移动端
- 📱 [RuoYi-SpringBoot3-UniApp](https://github.com/undsky/RuoYi-SpringBoot3-UniApp)
## ✨ 核心新特性
### 1. 🛡️ ClassFinal 代码加密
集成 ClassFinal Maven 插件,保护核心业务代码不被反编译:
- **字节码加密**:对编译后的 class 文件进行深度加密
- **防反编译**:即使被反编译也无法查看源代码
- **选择性加密**:可指定需要加密的包(如 `com.ruoyi.biz`)
- **配置文件保护**:支持对 yml、properties 等配置文件加密
- **排除机制**:可排除第三方库(如 `org.spring`)
- **密码保护**:使用密码保护加密的代码,防止未授权运行
- **Maven 集成**:打包时自动加密,无需额外操作
- **企业级方案**:适合商业项目代码保护
### 2. 🔒 三级等保支持
满足国家信息安全等级保护三级要求,内置完善的安全策略:
- **密码更新周期**:可配置密码有效期(0-365天),超期强制修改
- **登录失败锁定**:支持 N 次失败锁定 M 分钟策略(如 5-30 表示5次失败锁定30分钟)
- **初始密码强制修改**:首次登录强制修改初始密码
- **密码过期提醒**:登录时自动检测密码是否过期,提示用户更新
- **IP 黑名单**:支持 IP 黑名单配置,支持通配符和网段匹配
- **失败次数跟踪**:数据库记录登录失败次数,自动锁定/解锁
- **可配置化管理**:所有安全策略通过系统配置表动态管理,无需重启
- **Redis 缓存支持**:失败次数缓存到 Redis,提升性能
### 3. 🤖 AI 能力集成
内置 OpenAI 工具类,快速集成 AI 对话能力:
- **OpenAI SDK 集成**:基于官方 OpenAI Java SDK 封装
- **同步对话**:支持标准的请求-响应模式
- **流式对话**:支持 SSE 流式输出,实时展示生成内容
- **多角色支持**:支持 User、System、Assistant 三种角色
- **代理支持**:支持 HTTP/SOCKS 代理配置
- **自定义 API**:支持配置自定义 API 地址(兼容 OpenAI 协议的 API)
- **开箱即用**:提供完整的工具类和示例代码
### 4. 🚀 MyBatis-Plus 集成
- 替换原有 MyBatis,提供更强大的 ORM 功能
- **分页插件**:自动识别数据库类型,无需手动配置
- **乐观锁插件**:防止并发修改数据丢失
- **防全表更新删除插件**:避免误操作造成数据丢失
- **多租户插件**:企业级 SaaS 应用必备能力
- Lambda 查询语法,更优雅的代码风格
### 5. 🎨 Magic API 低代码开发
- **可视化接口开发**:通过 Web 界面快速开发 REST API
- **无需编译**:接口修改即时生效,大幅提升开发效率
- **数据库持久化**:接口脚本存储在数据库,支持版本控制
- **Redis 缓存支持**:内置 Redis 插件,轻松实现接口缓存
- **历史记录**:支持接口变更历史记录和回滚
- 访问地址:`http://localhost:8087/magic/web`(默认账号:jyx / jyx_692483)
### 6. 🗄️ 多数据库支持
支持国内外主流数据库,满足不同场景需求:
| 数据库 | 支持版本 | 配置文件 | 初始化脚本 |
|--------|---------|---------|-----------|
| **MySQL** | 8.0+ | application-devmy.yml | ruoyi-mysql.sql |
| **PostgreSQL** | 12+ | application-devpg.yml | ruoyi-pgsql.sql |
| **达梦数据库** | DM8+ | application-devdm.yml | ruoyi-dm8.dmp |
| **瀚高数据库** | 6.2+ | application-devhg.yml | ruoyi-highgo.sql |
| **高斯数据库** | GaussDB | application-devgs.yml | ruoyi-gauss.sql |
> 💡 切换数据库只需修改 `application.yml` 中的 `spring.profiles.active` 配置
### 7. 🏢 多租户支持
- **基于字段隔离**:通过 `tenant_id` 字段自动隔离租户数据
- **自动过滤**:SQL 自动注入租户条件,无需手动处理
- **灵活配置**:支持配置忽略表和忽略用户
- **透明化使用**:业务代码无感知,框架自动处理
- 配置开关:`tenant.enable: true/false`
### 8. 📦 ruoyi-biz 业务模块
新增独立业务模块,提供标准化开发示例:
- **模块化设计**:业务代码与系统代码分离
- **标准化结构**:Controller → Service → Mapper 标准分层
- **Excel 导入导出**:内置自定义 Excel 处理器示例
- **定时任务示例**:提供定时任务开发模板
- 包含地区管理等完整功能示例
### 9. 🎯 代码生成模板优化
针对 MyBatis-Plus 优化代码生成模板:
- **MyBatis-Plus 适配**:生成的 Mapper 继承 BaseMapper,自动拥有 CRUD 方法
- **Lambda 查询支持**:生成的代码支持 Lambda 表达式查询
- **多数据库兼容**:生成的 SQL 和实体类适配多种数据库
- **注解增强**:自动添加 `@TableName`、`@TableId` 等 MyBatis-Plus 注解
- **分页优化**:使用 MyBatis-Plus Page 对象,无需手动配置
- **代码更精简**:减少样板代码,提高开发效率
- **低代码结合**:可配合 Magic API 快速开发,双管齐下
## 技术栈
### 后端技术
| 技术 | 版本 | 说明 |
|------|------|------|
| Spring Boot | 3.3.5 | 容器 + MVC 框架 |
| Spring Security | 6.x | 认证和授权框架 |
| MyBatis-Plus | 3.5+ | ORM 框架(增强版) |
| OpenAI Java SDK | Latest | AI 对话能力 |
| Magic API | 2.2.2 | 低代码快速开发平台 |
| Redis | - | 分布式缓存(可选) |
| JWT | 0.9.1 | JWT 令牌 |
| Druid | 1.2.23 | 数据库连接池 |
| Springdoc | 2.6.0 | API 文档 |
| Quartz | - | 定时任务 |
| Velocity | 2.3 | 代码生成模板 |
### 数据库支持
- MySQL 8.0+
- PostgreSQL 12+
- 达梦数据库 DM8
- 瀚高数据库 6.2+
- 高斯数据库 GaussDB
## 内置功能
1. ✅ 用户管理:用户是系统操作者,该功能主要完成系统用户配置。
2. ✅ 部门管理:配置系统组织机构(公司、部门、小组),树结构展现支持数据权限。
3. ✅ 岗位管理:配置系统用户所属担任职务。
4. ✅ 菜单管理:配置系统菜单,操作权限,按钮权限标识等。
5. ✅ 角色管理:角色菜单权限分配、设置角色按机构进行数据范围权限划分。
6. ✅ 字典管理:对系统中经常使用的一些较为固定的数据进行维护。
7. ✅ 参数管理:对系统动态配置常用参数。
8. ✅ 通知公告:系统通知公告信息发布维护。
9. ✅ 操作日志:系统正常操作日志记录和查询;系统异常信息日志记录和查询。
10. ✅ 登录日志:系统登录日志记录查询包含登录异常。
11. ✅ 在线用户:当前系统中活跃用户状态监控。
12. ✅ 定时任务:在线(添加、修改、删除)任务调度包含执行结果日志。
13. ✅ 代码生成:前后端代码的生成(java、html、xml、sql)支持 CRUD 下载。
14. ✅ 系统接口:根据业务代码自动生成相关的 API 接口文档。
15. ✅ 服务监控:监视当前系统 CPU、内存、磁盘、堆栈等相关信息。
16. ✅ 缓存监控:对系统的缓存信息查询,命令统计等。
17. ✅ 连接池监视:监视当前系统数据库连接池状态,可进行分析 SQL 找出系统性能瓶颈。
18. ✨ **ClassFinal 代码加密**:字节码加密保护,防止核心业务代码被反编译(新增)。
19. ✨ **三级等保支持**:密码更新周期、登录失败锁定、IP黑名单等安全策略(新增)。
20. ✨ **AI 对话能力**:内置 OpenAI 工具类,支持同步和流式对话(新增)。
21. ✨ **代码生成优化**:针对 MyBatis-Plus 优化的代码生成模板(优化)。
22. ✨ **地区管理**:省市区三级联动数据管理(新增)。
23. ✨ **Magic API**:可视化接口开发平台(新增)。
24. ✨ **多租户管理**:SaaS 多租户数据隔离(新增)。
## 快速开始
### 环境要求
- JDK 17 或 JDK 21
- Maven 3.6+
- 选择以下数据库之一:
- MySQL 8.0+
- PostgreSQL 12+
- 达梦数据库 DM8
- 瀚高数据库 6.2+
- 高斯数据库 GaussDB
- Redis
### 安装步骤
1. **导入数据库脚本**
```bash
# MySQL 示例
mysql -u root -p < sql/ruoyi-mysql.sql
mysql -u root -p < sql/magic-api-mysql.sql
mysql -u root -p < sql/region-mysql.sql
# PostgreSQL 示例
psql -U postgres -d ruoyi < sql/ruoyi-pgsql.sql
psql -U postgres -d ruoyi < sql/magic-api-pgsql.sql
psql -U postgres -d ruoyi < sql/region-pgsql.sql
```
2. **修改配置文件**
编辑 `ruoyi-admin/src/main/resources/application.yml`:
```yaml
spring:
profiles:
active: devmy # 选择对应的数据库配置文件
```
然后编辑对应的配置文件(如 `application-devmy.yml`),修改数据库连接信息。
3. **编译打包**
```bash
# 使用 Maven 编译
mvn clean package
# 或使用提供的脚本(Windows)
bin\package.bat
```
4. **启动项目**
```bash
# 方式一:直接运行 jar
java -jar ruoyi-admin/target/ruoyi-admin.jar
# 方式二:使用 Maven 运行
mvn spring-boot:run -pl ruoyi-admin
# 方式三:使用提供的脚本(Windows)
bin\run.bat
```
5. **访问系统**
- 系统地址:http://localhost:8087
- 接口文档:http://localhost:8087/doc.html
- Magic API:http://localhost:8087/magic/web
- 默认账号:admin / jyx_692483
6. **启动前端**
**Element Plus 版本(推荐企业级应用):**
```bash
# 克隆项目
git clone https://github.com/undsky/RuoYi-SpringBoot3-ElementPlus.git
cd RuoYi-SpringBoot3-ElementPlus
# 安装依赖
npm install
# 启动项目
npm run dev
# 访问地址:http://localhost:80
```
### ClassFinal 代码加密使用
Pro 版本集成了 ClassFinal 代码加密插件,保护核心业务代码:
**加密配置(ruoyi-admin/pom.xml):**
```xml
com.gitee.lcm742320521
classfinal-maven-plugin
1.4.1
com.ruoyi.biz
*.yml
org.spring
RuoyiSpringBoot3@123456!
```
**使用步骤:**
1. **打包加密**
```bash
# 执行 Maven 打包,自动触发加密
mvn clean package
# 加密后的 jar 文件在 target 目录
```
2. **运行加密的 jar**
```bash
# 需要提供密码参数才能运行
java -jar RuoyiSpringBoot3.jar -pwd=RuoyiSpringBoot3@123456!
```
**注意事项:**
- ⚠️ 加密后的代码无法反编译,请妥善保管源代码
- ⚠️ 密码一定要保存好,丢失无法恢复
- ✅ 建议只加密核心业务模块(如 `com.ruoyi.biz`)
- ✅ 不要加密第三方库,会导致启动失败
- ✅ 生产环境使用更复杂的密码
**适用场景:**
- 商业项目代码保护
- 交付给客户的项目
- 防止核心算法泄露
- 知识产权保护
### 三级等保安全配置
Pro 版本内置完善的等保三级安全策略,通过系统参数配置即可启用:
**1. 密码更新周期配置**
在系统管理 → 参数设置中配置 `sys.account.passwordValidateDays`:
```
参数名称:用户管理-账号密码更新周期
参数键名:sys.account.passwordValidateDays
参数键值:90 (90天强制修改密码,0表示不限制)
```
配置后效果:
- 用户密码超过 90 天未更新,登录时会强制提示修改密码
- 系统自动检测 `pwd_update_date` 字段判断密码是否过期
**2. 登录失败锁定策略**
配置 `sys.account.tryLoginCount` 参数:
```
参数名称:用户管理-账号密码尝试登录次数
参数键名:sys.account.tryLoginCount
参数键值:5-30 (5次失败后锁定30分钟,格式:次数-锁定时长)
```
配置后效果:
- 连续 5 次登录失败后,账号自动锁定 30 分钟
- 锁定期间无法登录,提示"连续5次登录失败,请30分钟后再试"
- 锁定时间到期或管理员手动解锁后恢复
**3. 初始密码强制修改**
配置 `sys.account.initPasswordModify` 参数:
```
参数名称:用户管理-初始密码修改策略
参数键名:sys.account.initPasswordModify
参数键值:1 (1表示启用,0表示关闭)
```
配置后效果:
- 新用户首次登录时,强制修改初始密码
- 直到修改密码后才能正常使用系统
**4. IP 黑名单配置**
配置 `sys.login.blackIPList` 参数:
```
参数名称:用户登录-黑名单列表
参数键名:sys.login.blackIPList
参数键值:192.168.1.*;10.0.0.0/8 (多个用分号分隔,支持通配符和网段)
```
配置后效果:
- 黑名单中的 IP 无法登录系统
- 支持通配符匹配(如 192.168.1.*)
- 支持网段匹配(如 10.0.0.0/8)
**数据库支持**
系统会自动跟踪:
- `sys_user.try_count`:记录用户登录失败次数
- `sys_user.pwd_update_date`:记录密码最后更新时间
### AI 对话功能使用
Pro 版本内置了 OpenAI 工具类,可快速集成 AI 对话能力:
**同步对话示例:**
```java
import com.ruoyi.common.utils.ai.*;
import com.openai.client.OpenAIClient;
import java.util.Arrays;
// 1. 创建客户端
OpenAIClient client = OpenAI.chatClient(
"your-api-key",
"https://api.openai.com/v1",
null // 如需代理,传入 Proxy 对象
);
// 2. 构建消息列表
List messages = Arrays.asList(
new AIMessage(AIRole.SYSTEM, "你是一个有帮助的助手"),
new AIMessage(AIRole.USER, "介绍一下 Spring Boot")
);
// 3. 创建对话参数
ChatCompletionCreateParams params = OpenAI.chatParams("gpt-3.5-turbo", messages);
// 4. 发送请求并获取响应
String response = OpenAI.chat(client, params);
System.out.println(response);
```
**流式对话示例(SSE):**
```java
// Controller 中使用
@PostMapping("/chat/stream")
public ResponseEntity chatStream(@RequestBody ChatRequest request) {
OpenAIClient client = OpenAI.chatClient("your-api-key", "https://api.openai.com/v1", null);
List messages = Arrays.asList(
new AIMessage(AIRole.USER, request.getMessage())
);
ChatCompletionCreateParams params = OpenAI.chatParams("gpt-3.5-turbo", messages);
return OpenAI.chatStream(client, params, new OpenAI.StreamContentListener() {
@Override
public void onContent(String content) {
// 每次接收到增量内容时调用
System.out.print(content);
}
@Override
public void onComplete(String fullContent) {
// 流式输出完成后调用
System.out.println("\n完整内容:" + fullContent);
}
});
}
```
**支持自定义 API(如国内大模型):**
```java
// 使用兼容 OpenAI 协议的其他 API
OpenAIClient client = OpenAI.chatClient(
"your-api-key",
"https://your-custom-api.com/v1", // 自定义 API 地址
null
);
```
### MyBatis-Plus 使用示例
```java
// 1. 实体类继承 BaseEntity
@TableName("sys_user")
public class SysUser extends BaseEntity {
@TableId(type = IdType.AUTO)
private Long userId;
private String userName;
// ...
}
// 2. Mapper 继承 BaseMapper
public interface SysUserMapper extends BaseMapper {
// 无需写任何代码,已自动拥有 CRUD 方法
}
// 3. Service 使用
// Lambda 查询
List users = userMapper.selectList(
new LambdaQueryWrapper()
.eq(SysUser::getStatus, "0")
.like(SysUser::getUserName, "admin")
);
// 分页查询
Page page = new Page<>(1, 10);
userMapper.selectPage(page,
new LambdaQueryWrapper()
.orderByDesc(SysUser::getCreateTime)
);
```
### Magic API 使用
1. 访问 Magic API 管理界面:`http://localhost:8087/magic/web`
2. 使用账号登录:jyx / jyx_692483
3. 创建接口分组和接口
4. 编写接口脚本(支持 SQL、JavaScript 等)
5. 测试接口
6. 发布接口,前端即可调用
### 代码生成器使用
Pro 版本的代码生成器已针对 MyBatis-Plus 优化:
1. 访问系统管理 → 代码生成
2. 选择需要生成代码的表
3. 生成的代码特点:
- Mapper 继承 `BaseMapper`,自带 CRUD 方法
- 实体类添加 `@TableName`、`@TableId` 等注解
- Service 层支持 MyBatis-Plus 的 Lambda 查询
- 自动适配当前使用的数据库类型
- 支持 MyBatis-Plus 分页对象
生成的 Mapper 示例:
```java
public interface UserMapper extends BaseMapper {
// 无需编写基础 CRUD,已由 BaseMapper 提供
// 只需编写复杂的自定义查询
}
```
### 多租户配置
在 `application.yml` 中配置:
```yaml
tenant:
enable: true # 是否启用多租户
column: tenant_id # 租户字段名
ignoreTables: # 忽略的表(不进行租户隔离)
- sys_user
- sys_role
ignoreLoginNames: # 忽略的用户(不进行租户隔离)
- admin
```
### 切换数据库
1. 修改 `application.yml` 中的 `spring.profiles.active`
2. 选择对应的配置文件:
- `devmy`:开发环境 MySQL
- `devpg`:开发环境 PostgreSQL
- `devdm`:开发环境达梦数据库
- `devhg`:开发环境瀚高数据库
- 等等...
## 项目结构
```
RuoYi-SpringBoot3-Pro
├── bin # 启动脚本
│ ├── clean.bat # 清理脚本
│ ├── package.bat # 打包脚本
│ └── run.bat # 启动脚本
├── sql # SQL脚本
│ ├── ruoyi-mysql.sql # MySQL 初始化脚本
│ ├── ruoyi-pgsql.sql # PostgreSQL 初始化脚本
│ ├── ruoyi-dm8.dmp # 达梦数据库脚本
│ ├── magic-api-*.sql # Magic API 脚本
│ └── region-*.sql # 地区数据脚本
├── ruoyi-admin # 管理后台模块
├── ruoyi-framework # 框架核心模块
├── ruoyi-system # 系统模块
├── ruoyi-common # 通用模块
├── ruoyi-biz # ⭐ 业务模块(新增)
├── ruoyi-quartz # 定时任务模块
└── ruoyi-generator # 代码生成模块
```
## 与原版对比
| 特性 | RuoYi-Vue-springboot3 | RuoYi-SpringBoot3-Pro |
|------|----------------------|----------------------|
| Spring Boot | 3.5.4 | 3.3.5 |
| ORM 框架 | MyBatis | MyBatis-Plus ⭐ |
| AI 智能开发 | ❌ | Cursor/Windsurf Rules ⭐ |
| 代码加密保护 | ❌ | ClassFinal 加密 ⭐ |
| 三级等保 | 部分支持 | 完整支持 ⭐ |
| AI 能力 | ❌ | OpenAI 集成 ⭐ |
| 低代码开发 | ❌ | Magic API ⭐ |
| 多数据库支持 | MySQL | MySQL/PostgreSQL/达梦/瀚高/高斯 ⭐ |
| 多租户 | ❌ | ✅ ⭐ |
| Redis | 必须 | 可选 ⭐ |
| 业务示例模块 | ❌ | ruoyi-biz ⭐ |
| 代码生成模板 | MyBatis | MyBatis-Plus 适配 ⭐ |
| 文件上传大小 | 10MB/20MB | 100MB/200MB ⭐ |
## 部署说明
[部署系统](https://doc.ruoyi.vip/ruoyi-vue/document/hjbs.html#%E9%83%A8%E7%BD%B2%E7%B3%BB%E7%BB%9F)
## 🤝 参与贡献
欢迎提交 Issue 和 Pull Request!
1. Fork 本仓库
2. 创建特性分支 (`git checkout -b feature/AmazingFeature`)
3. 提交改动 (`git commit -m 'Add some AmazingFeature'`)
4. 推送到分支 (`git push origin feature/AmazingFeature`)
5. 提交 Pull Request
## 📄 开源协议
本项目基于 [MIT](LICENSE) 协议开源,可免费用于个人和企业项目。
## 🙏 鸣谢
- [若依(RuoYi)](https://gitee.com/y_project/RuoYi-Vue) - 优秀的开源后台管理系统
- [Spring Boot](https://spring.io/projects/spring-boot) - 企业级 Java 开发框架
- [MyBatis-Plus](https://baomidou.com/) - 优秀的 MyBatis 增强工具
- 所有贡献者
## 📞 联系方式
- 网站:[https://www.undsky.com](https://www.undsky.com)
- GitHub:[https://github.com/undsky/RuoYi-SpringBoot3-Pro](https://github.com/undsky/RuoYi-SpringBoot3-Pro)
- Issues:[https://github.com/undsky/RuoYi-SpringBoot3-Pro/issues](https://github.com/undsky/RuoYi-SpringBoot3-Pro/issues)
---
⭐ 如果觉得项目不错,请点个 Star 支持一下!