yudaocode/ruoyi-vue-pro 项目架构与模块解析
本文详细解析了yudaocode/ruoyi-vue-pro项目的整体架构、模块划分、核心功能及技术栈选型。该项目是基于Spring Boot和Vue的企业级快速开发平台,采用前后端分离架构,具有清晰的模块化设计和丰富的功能支持。
项目整体架构与模块划分
yudaocode/ruoyi-vue-pro 是一个基于 Spring Boot 和 Vue 的企业级快速开发平台,采用前后端分离架构设计。项目整体架构清晰,模块划分明确,便于开发者快速理解和扩展。以下是对项目整体架构与模块划分的详细解析。
1. 项目分层架构
项目采用经典的分层架构设计,主要分为以下几层:
flowchart TD
A[前端层] --> B[API 网关层]
B --> C[业务逻辑层]
C --> D[数据访问层]
D --> E[数据库层]
- 前端层:基于 Vue 实现,提供用户交互界面。
- API 网关层:负责请求路由、鉴权、限流等。
- 业务逻辑层:处理核心业务逻辑,包括服务层和领域模型。
- 数据访问层:封装数据库操作,提供数据持久化能力。
- 数据库层:存储业务数据。
2. 模块划分
项目按功能划分为多个模块,每个模块职责单一,便于维护和扩展。以下是主要模块及其功能:
| 模块名称 | 功能描述 |
|---|---|
yudao-framework |
框架核心模块,提供基础功能(如缓存、消息队列、定时任务等)。 |
yudao-module-system |
系统管理模块,包含用户、角色、权限、菜单等基础功能。 |
yudao-module-infra |
基础设施模块,提供日志、配置、文件管理等通用功能。 |
yudao-module-bpm |
工作流模块,支持流程定义、任务管理等功能。 |
yudao-module-ai |
AI 模块,集成多种 AI 能力(如聊天、知识库、图像生成等)。 |
yudao-module-mall |
商城模块,支持商品管理、订单处理等功能。 |
yudao-module-crm |
CRM 模块,提供客户关系管理功能。 |
yudao-module-iot |
物联网模块,支持设备管理、数据采集等功能。 |
3. 核心模块解析
3.1 yudao-framework
该模块是项目的核心框架,提供以下功能:
- 缓存管理:支持 Redis 缓存,提供统一的缓存接口。
- 消息队列:集成 RabbitMQ 和 Redis MQ,支持异步消息处理。
- 定时任务:基于 Quartz 实现,支持动态任务调度。
- 安全框架:集成 Spring Security,提供认证和授权功能。
classDiagram
class CacheManager {
+get(key): Object
+put(key, value): void
}
class MessageQueue {
+send(message): void
+receive(): Message
}
class Scheduler {
+schedule(task): void
}
class SecurityManager {
+authenticate(): boolean
+authorize(): boolean
}
3.2 yudao-module-system
该模块负责系统管理功能,主要包括:
- 用户管理:用户增删改查、密码重置等。
- 角色管理:角色分配、权限配置等。
- 菜单管理:动态菜单配置,支持多级菜单。
sequenceDiagram
participant User
participant SystemModule
User->>SystemModule: 请求用户列表
SystemModule->>SystemModule: 查询数据库
SystemModule-->>User: 返回用户列表
3.3 yudao-module-bpm
工作流模块基于 Activiti 实现,支持以下功能:
- 流程定义:可视化流程设计器。
- 任务管理:任务分配、审批、驳回等。
- 历史记录:流程执行历史查询。
stateDiagram
[*] --> Draft
Draft --> Approved: 提交审批
Approved --> Rejected: 驳回
Approved --> Completed: 通过
Rejected --> Draft: 重新提交
4. 模块依赖关系
项目模块之间通过清晰的依赖关系实现解耦。以下是主要模块的依赖关系:
mindmap
root((ruoyi-vue-pro))
yudao-framework
yudao-module-system --> yudao-framework
yudao-module-infra --> yudao-framework
yudao-module-bpm --> yudao-framework
yudao-module-ai --> yudao-framework
5. 扩展性设计
项目通过以下设计保证扩展性:
- 模块化设计:每个功能模块独立,便于新增或替换。
- 插件机制:支持动态加载插件,扩展功能。
- 多数据源:支持多种数据库,适应不同业务场景。
pie
title 模块扩展性设计
"模块化" : 40
"插件机制" : 30
"多数据源" : 30
通过以上分析,可以看出 yudaocode/ruoyi-vue-pro 项目架构清晰,模块划分合理,非常适合企业级快速开发需求。
核心模块功能介绍
yudaocode/ruoyi-vue-pro 是一个基于 Spring Boot 和 Vue 的企业级快速开发框架,提供了丰富的功能模块以满足企业级应用的需求。以下是对其核心模块的详细介绍:
1. 系统管理模块 (yudao-module-system)
该模块是框架的核心,提供了用户、角色、菜单、部门等基础管理功能。
主要功能:
- 用户管理:支持用户的增删改查、角色分配、密码重置等操作。
- 角色管理:定义角色及其权限范围,支持动态权限配置。
- 菜单管理:配置系统菜单,支持多级菜单和动态路由。
- 部门管理:组织架构管理,支持树形结构展示。
classDiagram
class User {
+Long id
+String username
+String password
+String email
+String phone
+List<Role> roles
}
class Role {
+Long id
+String name
+String code
+List<Menu> menus
}
class Menu {
+Long id
+String name
+String path
+String icon
+Long parentId
}
class Dept {
+Long id
+String name
+Long parentId
}
User "1" *-- "n" Role
Role "1" *-- "n" Menu
代码示例:
// 用户服务接口
public interface UserService {
UserDO getUserById(Long id);
List<UserDO> listUsers();
void createUser(UserSaveReqVO reqVO);
void updateUser(UserSaveReqVO reqVO);
void deleteUser(Long id);
}
2. 基础设施模块 (yudao-module-infra)
该模块提供了系统运行所需的基础设施支持,如文件管理、日志记录、定时任务等。
主要功能:
- 文件管理:支持文件上传、下载、存储配置。
- 日志管理:记录系统操作日志和异常日志。
- 定时任务:基于 Quartz 的任务调度,支持动态任务配置。
flowchart TD
A[上传文件] --> B[文件存储]
B --> C[文件记录]
C --> D[文件下载]
表格示例:
| 功能 | 描述 |
|---|---|
| 文件上传 | 支持本地和云存储 |
| 日志记录 | 记录操作日志和异常日志 |
| 定时任务 | 动态配置任务执行时间和参数 |
3. 工作流模块 (yudao-module-bpm)
该模块基于 Flowable 实现了业务流程管理,支持流程设计、部署、执行和监控。
主要功能:
- 流程设计:通过可视化界面设计业务流程。
- 流程部署:将设计好的流程部署到系统中。
- 流程执行:支持流程实例的启动、审批和结束。
sequenceDiagram
participant User
participant System
User->>System: 提交申请
System->>System: 生成流程实例
System->>User: 通知审批人
User->>System: 审批通过
System->>System: 结束流程
代码示例:
// 流程服务接口
public interface BpmProcessService {
String startProcess(String processKey, Map<String, Object> variables);
void approveTask(String taskId, Map<String, Object> variables);
void rejectTask(String taskId, String reason);
}
4. 商城模块 (yudao-module-mall)
该模块提供了电商系统的基础功能,包括商品管理、订单管理、会员管理等。
主要功能:
- 商品管理:支持商品的分类、品牌、规格管理。
- 订单管理:处理订单的创建、支付、发货和售后。
- 会员管理:管理会员信息和积分。
stateDiagram
[*] --> 商品上架
商品上架 --> 订单生成
订单生成 --> 支付完成
支付完成 --> 订单发货
订单发货 --> 订单完成
表格示例:
| 功能 | 描述 |
|---|---|
| 商品分类 | 支持多级分类管理 |
| 订单状态 | 待支付、已支付、已发货、已完成 |
| 会员积分 | 积分累计和兑换 |
5. 消息模块 (yudao-module-message)
该模块提供了消息通知功能,支持邮件、短信、站内信等多种通知方式。
主要功能:
- 邮件通知:配置邮件模板和发送邮件。
- 短信通知:集成第三方短信服务发送短信。
- 站内信:系统内部消息通知。
pie
title 消息通知方式占比
"邮件" : 45
"短信" : 30
"站内信" : 25
代码示例:
// 消息服务接口
public interface MessageService {
void sendEmail(String to, String templateCode, Map<String, Object> params);
void sendSms(String phone, String templateCode, Map<String, Object> params);
void sendInternalMessage(Long userId, String content);
}
以上是 yudaocode/ruoyi-vue-pro 的核心模块功能介绍,每个模块都提供了丰富的功能和灵活的配置选项,以满足企业级应用的需求。
模块间的依赖关系
在 yudaocode/ruoyi-vue-pro 项目中,模块间的依赖关系通过 Maven 的 pom.xml 文件进行管理。项目采用多模块架构设计,各模块之间通过依赖注入和接口调用实现功能集成。以下是对模块间依赖关系的详细解析:
1. 核心模块依赖
项目的核心模块 yudao-framework 提供了基础框架支持,其他模块通过引入该模块的依赖来复用其功能。例如:
yudao-server:主项目模块,直接依赖yudao-framework,用于启动整个应用。yudao-module-system和yudao-module-infra:这两个模块也依赖yudao-framework,用于实现系统管理和基础设施功能。
classDiagram
yudao-framework <|-- yudao-server
yudao-framework <|-- yudao-module-system
yudao-framework <|-- yudao-module-infra
2. 模块间的功能调用
模块间的功能调用主要通过接口和 Spring 的依赖注入实现。例如:
yudao-module-system提供了用户管理、角色管理等功能,其他模块可以通过调用其接口实现相关功能。yudao-module-infra提供了文件管理、日志管理等基础设施功能,其他模块通过依赖该模块实现文件上传、日志记录等功能。
flowchart TD
A[yudao-module-system] -->|调用| B[yudao-module-infra]
C[yudao-module-bpm] -->|调用| A
3. 依赖管理
项目的依赖管理通过 yudao-dependencies 模块统一管理,所有模块的依赖版本由该模块控制。例如:
spring-boot-starter-web和mybatis-spring-boot-starter等常用依赖的版本在yudao-dependencies中定义。- 其他模块通过引入
yudao-dependencies的依赖管理,确保依赖版本一致。
mindmap
root((yudao-dependencies))
spring-boot-starter-web
mybatis-spring-boot-starter
lombok
mapstruct
4. 模块间的数据交互
模块间的数据交互主要通过以下方式实现:
- 数据库表关联:例如,
yudao-module-system中的用户表与yudao-module-bpm中的流程实例表通过外键关联。 - 消息队列:例如,
yudao-module-infra中的消息队列服务被其他模块用于异步处理任务。
sequenceDiagram
participant A as yudao-module-system
participant B as yudao-module-bpm
A->>B: 发起流程实例
B->>A: 返回流程状态
5. 动态模块加载
项目中支持动态加载模块,例如 yudao-module-ai 和 yudao-module-iot 等模块可以根据需求选择性启用。这种设计通过 Maven 的模块化配置实现,确保模块间的松耦合。
stateDiagram
[*] --> yudao-server
yudao-server --> yudao-module-system
yudao-server --> yudao-module-infra
yudao-server --> yudao-module-ai: 可选
yudao-server --> yudao-module-iot: 可选
通过以上分析,可以看出 yudaocode/ruoyi-vue-pro 项目的模块间依赖关系清晰,功能划分明确,便于扩展和维护。
技术栈与框架选型
yudaocode/ruoyi-vue-pro 项目采用了现代化的技术栈和框架,以满足企业级应用的高性能、可扩展性和易维护性需求。以下是项目的主要技术栈和框架选型分析:
后端技术栈
核心框架
- Spring Boot 2.7:作为项目的核心框架,Spring Boot 提供了快速开发、自动配置和微服务支持。
- Spring Security:用于认证和授权,支持多租户和 SSO 单点登录。
- Spring WebSocket:实现实时通信功能,支持集群和 Token 校验。
数据持久层
- MyBatis Plus:增强版的 MyBatis,提供 CRUD 操作、分页查询等功能。
- MySQL:默认数据库,支持 Oracle、PostgreSQL、SQL Server 等多种数据库。
- Redis:用于缓存、分布式锁、消息队列等场景,提升系统性能。
消息队列
- Redis Stream:轻量级消息队列,支持集群消费。
- RabbitMQ:高性能消息队列,适用于复杂业务场景。
- Kafka:高吞吐量消息队列,适合大数据处理。
- RocketMQ:分布式消息队列,支持事务消息。
其他组件
- Flowable:工作流引擎,支持动态表单和在线设计流程。
- Swagger:API 文档生成工具,便于前后端协作。
- Spring Boot Admin:监控 Java 应用的健康状态和性能指标。
- SkyWalking:链路追踪和日志中心,便于排查问题。
代码示例
// Redis Stream 消息清理任务示例
@Scheduled(cron = "0 0 * * * ?")
public void cleanup() {
listeners.forEach(listener -> {
String streamKey = listener.getStreamKey();
String groupName = listener.getGroupName();
// 清理逻辑
});
}
前端技术栈
管理后台
- Vue 3:现代化的前端框架,支持 Composition API 和 TypeScript。
- Element Plus:基于 Vue 3 的 UI 组件库,提供丰富的组件。
- Vben (Ant Design Vue):企业级 UI 框架,适合复杂业务场景。
- Uni-app:跨平台开发框架,支持 APP、小程序和 H5。
移动端
- Uni-app:一套代码多端运行,支持 iOS 和 Android。
技术选型对比
| 技术栈 | 适用场景 | 优势 | 劣势 |
|---|---|---|---|
| Spring Boot | 企业级后端开发 | 快速开发、生态丰富 | 学习曲线较陡 |
| Vue 3 | 现代化前端开发 | 响应式、高性能 | 兼容性问题 |
| Redis | 缓存、消息队列 | 高性能、支持多种数据结构 | 内存占用较高 |
| Flowable | 工作流引擎 | 支持 BPMN 标准、动态表单 | 配置复杂 |
架构图
graph TD
A[前端] --> B[Spring Boot]
B --> C[MyBatis Plus]
B --> D[Redis]
B --> E[RabbitMQ]
B --> F[Flowable]
C --> G[MySQL]
D --> H[缓存]
E --> I[消息队列]
F --> J[工作流]
通过以上技术栈和框架的选型,yudaocode/ruoyi-vue-pro 能够满足企业级应用的高并发、高性能和可扩展性需求,同时提供了丰富的功能和易用的开发体验。
yudaocode/ruoyi-vue-pro项目通过分层架构设计和模块化划分,实现了高内聚低耦合的企业级应用开发框架。项目采用现代化的技术栈(如Spring Boot、Vue 3、Redis等),提供了完善的系统管理、工作流、商城等功能模块,并支持灵活扩展。清晰的依赖关系管理和动态模块加载机制使其成为企业快速开发的理想选择。
Kimi-K2.5Kimi K2.5 是一款开源的原生多模态智能体模型,它在 Kimi-K2-Base 的基础上,通过对约 15 万亿混合视觉和文本 tokens 进行持续预训练构建而成。该模型将视觉与语言理解、高级智能体能力、即时模式与思考模式,以及对话式与智能体范式无缝融合。Python00
GLM-4.7-FlashGLM-4.7-Flash 是一款 30B-A3B MoE 模型。作为 30B 级别中的佼佼者,GLM-4.7-Flash 为追求性能与效率平衡的轻量化部署提供了全新选择。Jinja00
VLOOKVLOOK™ 是优雅好用的 Typora/Markdown 主题包和增强插件。 VLOOK™ is an elegant and practical THEME PACKAGE × ENHANCEMENT PLUGIN for Typora/Markdown.Less00
PaddleOCR-VL-1.5PaddleOCR-VL-1.5 是 PaddleOCR-VL 的新一代进阶模型,在 OmniDocBench v1.5 上实现了 94.5% 的全新 state-of-the-art 准确率。 为了严格评估模型在真实物理畸变下的鲁棒性——包括扫描伪影、倾斜、扭曲、屏幕拍摄和光照变化——我们提出了 Real5-OmniDocBench 基准测试集。实验结果表明,该增强模型在新构建的基准测试集上达到了 SOTA 性能。此外,我们通过整合印章识别和文本检测识别(text spotting)任务扩展了模型的能力,同时保持 0.9B 的超紧凑 VLM 规模,具备高效率特性。Python00
KuiklyUI基于KMP技术的高性能、全平台开发框架,具备统一代码库、极致易用性和动态灵活性。 Provide a high-performance, full-platform development framework with unified codebase, ultimate ease of use, and dynamic flexibility. 注意:本仓库为Github仓库镜像,PR或Issue请移步至Github发起,感谢支持!Kotlin07
compass-metrics-modelMetrics model project for the OSS CompassPython00