【GitHub项目推荐--RuoYi-Vue Pro:基于Spring Boot和Vue的企业级开发平台】

简介

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都能为您提供强大、稳定且易用的企业级开发解决方案!​

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值