简介
RuoYi-Vue Pro(又名芋道)是一个基于Spring Boot、MyBatis Plus和Vue.js的免费开源企业级快速开发平台。它提供了完整的权限管理、工作流引擎、多租户支持以及丰富的业务模块,帮助开发者快速构建企业级应用。
🔗 GitHub地址:
https://github.com/YunaiV/ruoyi-vue-pro
🚀 核心价值:
企业级开发 · 快速开发 · 开源免费 · 功能丰富
项目背景:
-
企业需求:响应企业对快速开发平台的需求
-
技术升级:基于现代技术栈的全面升级
-
开源精神:完全开源,社区驱动的开发模式
-
中国化需求:符合中国特色的业务流程和需求
项目特色:
-
🏢 企业级:完整的企业级应用架构
-
⚡ 高性能:优化的性能和稳定性
-
🔒 安全可靠:完善的安全机制和权限控制
-
🌐 多租户:完整的SaaS多租户支持
-
🆓 完全免费:永久免费和开源
设计理念:
-
开发者友好:为开发者提供最佳开发体验
-
业务导向:以实际业务需求为导向
-
模块化设计:高度模块化的架构设计
-
标准化规范:遵循行业标准和最佳实践
-
持续演进:持续更新和功能增强
主要功能
1. 核心功能体系
RuoYi-Vue Pro提供了一套完整的企业级开发解决方案,涵盖系统管理、工作流程、业务系统、基础设施等多个方面。
系统功能:
权限管理:
- 用户管理: 系统用户管理和配置
- 角色管理: 角色权限分配和数据权限
- 菜单管理: 菜单权限和按钮权限管理
- 部门管理: 组织架构树形管理
- 岗位管理: 用户岗位职务管理
多租户系统:
- 租户管理: SaaS多租户管理
- 租户套餐: 租户权限套餐配置
- 租户隔离: 数据隔离和权限隔离
- 租户定制: 租户个性化配置
- 账单管理: 租户费用和账单管理
基础设施:
- 字典管理: 系统字典数据管理
- 参数管理: 系统参数配置管理
- 日志管理: 操作日志和登录日志
- 消息管理: 站内信和消息通知
- 监控管理: 系统监控和性能监控
工作流程:
- 流程设计: BPMN流程设计器
- 流程管理: 流程实例和任务管理
- 表单管理: 动态表单设计和配置
- 审批流程: 各种审批场景支持
- 流程监控: 流程运行监控和分析
支付系统:
- 支付渠道: 多支付渠道接入
- 支付订单: 支付订单管理
- 退款管理: 退款流程管理
- 对账功能: 支付对账和结算
- 支付安全: 支付安全保证
业务模块:
会员中心:
- 会员管理: C端会员管理
- 会员等级: 会员等级和权益
- 积分系统: 积分管理和兑换
- 成长值: 会员成长值体系
- 标签管理: 会员标签和分组
商城系统:
- 商品管理: 商品SKU管理
- 订单管理: 订单流程管理
- 购物车: 购物车功能
- 促销活动: 促销和优惠券
- 库存管理: 库存管理和预警
CRM系统:
- 客户管理: 客户信息管理
- 销售管理: 销售流程管理
- 合同管理: 合同和协议管理
- 跟进记录: 客户跟进记录
- 报表分析: 销售数据分析
ERP系统:
- 采购管理: 采购流程管理
- 库存管理: 库存管理和调拨
- 财务管理: 财务核算管理
- 生产管理: 生产流程管理
- 供应链: 供应链管理
微信公众号:
- 公众号管理: 多公众号管理
- 粉丝管理: 粉丝管理和互动
- 消息管理: 消息自动回复
- 素材管理: 图文素材管理
- 菜单管理: 自定义菜单管理
技术特性:
架构特性:
- 微服务架构: Spring Cloud微服务
- 多数据库: 支持多种数据库
- 消息队列: 多种消息队列支持
- 缓存系统: Redis缓存和分布式锁
- 搜索引擎: 集成搜索引擎
安全特性:
- 权限控制: 细粒度权限控制
- 数据加密: 数据加密传输存储
- 防注入: SQL注入和XSS防护
- 审计日志: 完整操作审计日志
- 安全合规: 安全合规性支持
开发特性:
- 代码生成: 前后端代码生成
- API文档: 自动生成API文档
- 单元测试: 完整的单元测试
- 部署脚本: 自动化部署脚本
- 监控告警: 系统监控和告警
扩展特性:
- 插件系统: 插件化扩展机制
- API网关: 微服务API网关
- 配置中心: 分布式配置中心
- 注册中心: 服务注册和发现
- 链路追踪: 分布式链路追踪
2. 功能详情
权限管理系统:
用户管理:
- 用户信息: 用户基本信息管理
- 用户状态: 用户启用禁用状态
- 用户权限: 用户角色和权限分配
- 用户组织: 用户部门和岗位信息
- 用户日志: 用户操作和登录日志
角色管理:
- 角色定义: 角色基本信息定义
- 权限分配: 菜单和按钮权限分配
- 数据权限: 数据范围权限控制
- 角色用户: 角色用户关系管理
- 角色继承: 角色继承和组合
菜单管理:
- 菜单结构: 多级菜单结构管理
- 菜单类型: 目录、菜单、按钮类型
- 权限标识: 权限标识符管理
- 菜单排序: 菜单显示顺序配置
- 菜单图标: 菜单图标配置
部门管理:
- 组织架构: 树形组织架构管理
- 部门权限: 部门数据权限控制
- 部门领导: 部门负责人管理
- 部门排序: 部门显示顺序配置
- 部门编码: 部门编码体系
数据权限:
- 权限范围: 全部、本级、自定义等
- 数据过滤: 数据查询过滤条件
- 权限继承: 权限继承和覆盖
- 动态权限: 动态数据权限控制
- 权限审计: 数据权限审计日志
工作流系统:
流程设计:
- BPMN设计器: 标准BPMN流程设计
- 表单设计: 动态表单设计器
- 节点配置: 流程节点属性配置
- 条件设置: 流程条件分支设置
- 版本管理: 流程版本管理
流程实例:
- 流程启动: 流程实例启动和运行
- 任务处理: 任务分配和处理
- 流程监控: 流程运行状态监控
- 流程干预: 流程干预和管理
- 流程统计: 流程运行统计分析
审批类型:
- 单人审批: 单人审批流程
- 会签审批: 多人会签审批
- 或签审批: 多人或签审批
- 顺序审批: 顺序审批流程
- 条件审批: 条件分支审批
表单管理:
- 表单设计: 可视化表单设计
- 表单字段: 表单字段类型管理
- 表单验证: 表单数据验证
- 表单权限: 表单字段权限控制
- 表单版本: 表单版本管理
集成功能:
- 业务集成: 与业务系统集成
- 消息通知: 审批消息通知
- 移动审批: 移动端审批支持
- 电子签章: 电子签章集成
- 归档管理: 流程归档管理
多租户系统:
租户管理:
- 租户信息: 租户基本信息管理
- 租户状态: 租户启用禁用状态
- 租户配置: 租户个性化配置
- 租户限制: 租户资源限制配置
- 租户统计: 租户使用情况统计
套餐管理:
- 套餐定义: 套餐功能权限定义
- 套餐价格: 套餐价格和周期
- 套餐用户: 套餐用户数量限制
- 套餐资源: 套餐资源限制配置
- 套餐升级: 套餐升级和降级
数据隔离:
- 数据库隔离: 数据库级别隔离
- 数据行隔离: 数据行级别隔离
- 权限隔离: 租户权限隔离
- 缓存隔离: 缓存数据隔离
- 文件隔离: 文件存储隔离
计费系统:
- 费用计算: 租户费用计算
- 账单管理: 账单生成和管理
- 支付集成: 支付渠道集成
- 发票管理: 发票申请和管理
- 欠费处理: 欠费处理和恢复
租户后台:
- 独立后台: 租户独立管理后台
- 自定义配置: 租户自定义配置
- 数据管理: 租户数据管理
- 用户管理: 租户用户管理
- 统计分析: 租户使用统计分析
安装与配置
1. 环境准备
系统要求:
开发环境:
- JDK: 8/11/17/21 版本
- Maven: 3.6.0+ 版本
- Node.js: 14.0.0+ 版本
- MySQL: 5.7/8.0+ 版本
- Redis: 5.0/6.0/7.0 版本
数据库支持:
- MySQL: 主要支持数据库
- Oracle: Oracle数据库支持
- PostgreSQL: PostgreSQL支持
- SQL Server: SQL Server支持
- 达梦数据库: 国产数据库支持
- 其他数据库: 多种数据库支持
中间件:
- Redis: 缓存和分布式锁
- RabbitMQ: 消息队列(可选)
- Kafka: 消息队列(可选)
- RocketMQ: 消息队列(可选)
- MinIO: 文件存储(可选)
部署环境:
- Docker: 容器化部署
- Kubernetes: K8s集群部署
- 云平台: 各种云平台部署
- 物理服务器: 传统服务器部署
2. 安装步骤
克隆项目:
# 克隆项目代码
git clone https://github.com/YunaiV/ruoyi-vue-pro.git
# 进入项目目录
cd ruoyi-vue-pro
# 选择分支(根据JDK版本)
git checkout master # JDK 8 + Spring Boot 2.7
git checkout master-jdk17 # JDK 17 + Spring Boot 3.2
数据库初始化:
# 创建数据库
CREATE DATABASE ruoyi_vue_pro DEFAULT CHARACTER SET utf8mb4;
# 执行SQL脚本
# 根据选择的版本执行对应的SQL文件
# sql/ruoyi-vue-pro-jdk8.sql 或 sql/ruoyi-vue-pro-jdk17.sql
后端配置:
# application.yml 配置示例
spring:
datasource:
url: jdbc:mysql://localhost:3306/ruoyi_vue_pro?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
username: root
password: 123456
redis:
host: localhost
port: 6379
password:
database: 0
前端配置:
// .env.development 开发环境配置
VUE_APP_BASE_API = 'http://localhost:8080'
VUE_APP_WS_API = 'ws://localhost:8080'
启动项目:
# 启动后端服务
mvn clean install
mvn spring-boot:run
# 或者使用IDE启动
# 启动Application.java
# 启动前端服务
cd yudao-ui-admin-vue3
npm install
npm run dev
3. 部署配置
生产环境配置:
# application-prod.yml
spring:
datasource:
url: jdbc:mysql://mysql-prod:3306/ruoyi_vue_pro?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
username: prod_user
password: prod_password
redis:
host: redis-prod
password: redis_password
Docker部署:
# Dockerfile 示例
FROM openjdk:17-jdk-alpine
VOLUME /tmp
COPY target/*.jar app.jar
ENTRYPOINT ["java","-jar","/app.jar"]
Kubernetes部署:
# deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: ruoyi-backend
spec:
replicas: 3
template:
spec:
containers:
- name: ruoyi-app
image: ruoyi-vue-pro:latest
ports:
- containerPort: 8080
使用指南
1. 基本工作流
使用RuoYi-Vue Pro的基本流程包括:环境准备 → 项目克隆 → 数据库初始化 → 配置修改 → 项目启动 → 功能使用 → 二次开发 → 部署上线。整个过程设计为简单直观,开发者可以快速上手企业级应用开发。
2. 基本使用
系统登录:
默认账号:admin/admin123
用户管理:
// 用户管理示例代码
@RestController
@RequestMapping("/system/user")
public class UserController {
@Autowired
private UserService userService;
@GetMapping("/list")
public TableDataInfo list(User user) {
startPage();
List<User> list = userService.selectUserList(user);
return getDataTable(list);
}
@PostMapping
public AjaxResult add(@Validated @RequestBody User user) {
if (!userService.checkUserNameUnique(user)) {
return error("新增用户'" + user.getUserName() + "'失败,登录账号已存在");
}
user.setCreateBy(getUsername());
user.setPassword(SecurityUtils.encryptPassword(user.getPassword()));
return toAjax(userService.insertUser(user));
}
}
权限配置:
// 权限配置示例
@RequiresPermissions("system:user:list")
@GetMapping("/list")
public TableDataInfo list(User user) {
// 方法实现
}
@RequiresRoles("admin")
@PostMapping
public AjaxResult add(@RequestBody User user) {
// 方法实现
}
数据权限:
// 数据权限示例
@DataScope(deptAlias = "d", userAlias = "u")
public List<User> selectUserList(User user) {
return userMapper.selectUserList(user);
}
工作流使用:
// 工作流示例
@Autowired
private FlowableService flowableService;
public void startProcess(String processKey, String businessKey, Map<String, Object> variables) {
ProcessInstance processInstance = flowableService.startProcessInstanceByKey(
processKey, businessKey, variables
);
}
3. 开发指南
代码生成:
# 使用代码生成器
1. 配置数据源
2. 选择生成表
3. 配置生成选项
4. 生成代码
5. 将生成的代码放入对应模块
API开发:
// RESTful API示例
@RestController
@RequestMapping("/api/system/user")
@Api(tags = "用户管理")
public class UserApiController {
@GetMapping("/{userId}")
@ApiOperation("获取用户详情")
public R<User> getUser(@PathVariable Long userId) {
User user = userService.selectUserById(userId);
return R.ok(user);
}
@PostMapping
@ApiOperation("创建用户")
public R<Long> createUser(@Valid @RequestBody UserCreateReq req) {
Long userId = userService.createUser(req);
return R.ok(userId);
}
}
前端开发:
<template>
<div class="user-management">
<el-table :data="userList">
<el-table-column prop="userName" label="用户名"></el-table-column>
<el-table-column prop="nickName" label="昵称"></el-table-column>
<el-table-column prop="deptName" label="部门"></el-table-column>
<el-table-column label="操作">
<template #default="scope">
<el-button @click="handleEdit(scope.row)">编辑</el-button>
<el-button @click="handleDelete(scope.row)">删除</el-button>
</template>
</el-table-column>
</el-table>
</div>
</template>
<script setup>
import { ref, onMounted } from 'vue'
import { getUserList, deleteUser } from '@/api/system/user'
const userList = ref([])
onMounted(() => {
loadUserList()
})
const loadUserList = async () => {
const response = await getUserList()
userList.value = response.data
}
const handleEdit = (row) => {
// 编辑逻辑
}
const handleDelete = async (row) => {
await deleteUser(row.userId)
await loadUserList()
}
</script>
应用场景实例
案例1:企业OA系统
场景:开发企业办公自动化系统
解决方案:使用RuoYi-Vue Pro构建OA系统。
实施方法:
// 请假流程实现
@Service
public class LeaveServiceImpl implements LeaveService {
@Autowired
private FlowableService flowableService;
@Override
@Transactional
public void applyLeave(LeaveApplyReq req) {
// 1. 保存请假数据
Leave leave = convert(req);
leaveMapper.insert(leave);
// 2. 启动流程实例
Map<String, Object> variables = new HashMap<>();
variables.put("applyUser", SecurityUtils.getUserId());
variables.put("days", req.getDays());
ProcessInstance instance = flowableService.startProcessInstanceByKey(
"leave_approval", leave.getId().toString(), variables
);
// 3. 更新流程实例ID
leave.setProcessInstanceId(instance.getId());
leaveMapper.updateById(leave);
}
}
OA系统价值:
-
流程规范:规范的审批流程
-
效率提升:提高办公效率
-
透明管理:透明的流程管理
-
移动办公:支持移动端办公
-
集成能力:与其他系统集成
案例2:SaaS多租户系统
场景:开发多租户SaaS平台
解决方案:使用RuoYi-Vue Pro的多租户功能。
实施方法:
// 多租户数据隔离
public class TenantContext {
private static final ThreadLocal<Long> TENANT_ID = new ThreadLocal<>();
public static void setTenantId(Long tenantId) {
TENANT_ID.set(tenantId);
}
public static Long getTenantId() {
return TENANT_ID.get();
}
public static void clear() {
TENANT_ID.remove();
}
}
// 数据过滤器
@Component
@Slf4j
public class TenantFilter implements Filter {
@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) {
HttpServletRequest req = (HttpServletRequest) request;
String tenantId = req.getHeader("Tenant-ID");
if (StringUtils.isNotBlank(tenantId)) {
try {
TenantContext.setTenantId(Long.valueOf(tenantId));
chain.doFilter(request, response);
} finally {
TenantContext.clear();
}
} else {
chain.doFilter(request, response);
}
}
}
SaaS平台价值:
-
多租户支持:完整的租户隔离
-
资源隔离:数据和资源隔离
-
灵活计费:灵活的计费模式
-
可扩展性:良好的可扩展性
-
维护简便:简化系统维护
案例3:电商平台后台
场景:开发电商平台管理系统
解决方案:使用RuoYi-Vue Pro的商城模块。
实施方法:
// 商品管理服务
@Service
@Slf4j
public class ProductServiceImpl implements ProductService {
@Autowired
private ProductMapper productMapper;
@Override
public PageResult<Product> listProducts(ProductQueryReq req) {
PageHelper.startPage(req.getPageNo(), req.getPageSize());
List<Product> products = productMapper.selectProductList(req);
return new PageResult<>(products);
}
@Override
@Transactional
public void createProduct(ProductCreateReq req) {
Product product = convert(req);
productMapper.insert(product);
// 记录操作日志
logService.logProductCreate(product.getId(), product.getName());
}
}
电商后台价值:
-
商品管理:完善的商品管理体系
-
订单处理:高效的订单处理流程
-
库存管理:实时库存管理
-
会员系统:会员管理和营销
-
数据分析:销售数据分析报表
总结
RuoYi-Vue Pro作为一个功能丰富的企业级开发平台,通过其完整的权限管理、工作流引擎、多租户支持和丰富的业务模块,为开发者提供了构建企业级应用的最佳解决方案。其开源特性和活跃社区,使其成为企业开发的重要工具。
核心优势:
-
🏢 企业级:完整的企业级功能
-
⚡ 高性能:优化的性能和稳定性
-
🔒 安全可靠:完善的安全机制
-
🌐 多租户:完整的SaaS支持
-
🆓 完全免费:永久免费开源
适用场景:
-
企业OA系统
-
SaaS多租户平台
-
电商管理系统
-
CRM客户关系管理
-
ERP企业资源计划
立即开始使用:
# 克隆项目
git clone https://github.com/YunaiV/ruoyi-vue-pro.git
# 选择分支
git checkout master-jdk17
# 初始化数据库
mysql -uroot -p < sql/ruoyi-vue-pro-jdk17.sql
# 启动项目
mvn spring-boot:run
资源链接:
-
📚 项目地址:GitHub仓库
-
📖 官方文档:芋道文档
-
💬 社区支持:社区讨论
-
🎥 演示地址:在线演示
-
🔧 开发工具:开发工具和插件
最佳实践:
-
🎯 模块化开发:按模块进行开发
-
🔒 权限控制:完善的权限控制
-
📊 监控告警:系统监控和告警
-
🧪 测试覆盖:完整的测试覆盖
-
🚀 性能优化:持续的性能优化
通过RuoYi-Vue Pro,您可以:
-
快速开发:快速开发企业级应用
-
降低成本:降低开发成本和周期
-
保证质量:保证代码质量和稳定性
-
灵活扩展:灵活扩展和定制功能
-
专业支持:获得专业的技术支持
无论您是开发企业内部系统、商业SaaS平台还是行业解决方案,RuoYi-Vue Pro都能为您提供强大、稳定且易用的企业级开发解决方案!

255

被折叠的 条评论
为什么被折叠?



