芋道管理系统学习——项目结构

项目结构

本文对 Yudao(ruoyi-vue-pro) 前后端项目的整体结构进行说明,帮助快速理解项目的模块划分与代码组织方式。


一、后端结构

后端整体采用 多 Maven Module 架构,共分为 四类模块

Maven Module 作用
yudao-dependencies Maven 依赖版本统一管理
yudao-framework Java 框架能力封装
yudao-module-xxx 各业务功能模块
yudao-server 管理后台 + 用户 App 的服务端

1. yudao-dependencies

该模块是一个 Maven BOM ,仅包含一个 pom.xml 文件,用于统一管理项目中所有 Maven 依赖的版本号,从而:

  • 避免依赖版本冲突
  • 简化各模块的 pom 配置
  • 统一升级依赖版本

2. yudao-framework

该模块用于 框架层封装 ,分为 技术组件业务组件 两大类。


2.1 技术组件
Maven Module 作用
yudao-common 基础 POJO、枚举、工具类
yudao-spring-boot-starter-web Web 封装(全局异常、访问日志等)
yudao-spring-boot-starter-websocket WebSocket 封装(Token 认证、集群广播)
yudao-spring-boot-starter-security 认证授权(Spring Security)、操作日志
yudao-spring-boot-starter-mybatis 数据库操作(MyBatis Plus)
yudao-spring-boot-starter-redis 缓存操作(Spring Data Redis + Redisson)
yudao-spring-boot-starter-mq 消息队列(基于 Redis,支持集群/广播)
yudao-spring-boot-starter-job 定时任务(Quartz,支持集群)
yudao-spring-boot-starter-protection 服务保障(幂等、限流、熔断、分布式锁)
yudao-spring-boot-starter-excel Excel 导入导出(EasyExcel)
yudao-spring-boot-starter-monitor 服务监控(链路、日志、指标)
yudao-spring-boot-starter-test 单元测试(JUnit + Mockito)

2.2 业务组件
Maven Module 作用
yudao-spring-boot-starter-biz-tenant SaaS 多租户
yudao-spring-boot-starter-biz-data-permission 数据权限
yudao-spring-boot-starter-biz-ip 地区 & IP 库

每个组件统一包含两部分:

  • core:组件核心逻辑与能力封装
  • config:Spring Boot 自动配置

3. yudao-module-xxx(业务模块)

用于承载具体业务功能:

模块 说明
yudao-module-ai AI 大模型
yudao-module-bpm 工作流
yudao-module-crm CRM 系统
yudao-module-erp ERP 系统
yudao-module-infra 基础设施
yudao-module-iot IoT 物联网
yudao-module-mall 商城系统
yudao-module-member 会员中心
yudao-module-mp 微信公众号
yudao-module-pay 支付系统
yudao-module-report 大屏报表

3.1 分层架构

每个业务模块采用 三层架构 + 非严格分层


3.2 Controller 层
作用 示例
controller.admin Controller 管理后台 REST API(admin-api/ AuthController
controller.admin VO Admin 接口入参/出参 AuthLoginReqVO
controller.app Controller App REST API(app-api/ AppAuthController
controller.app VO App 接口入参/出参 AppAuthLoginReqVO
controller .http IDEA Http Client 请求文件 AuthController.http

3.3 Service 层
作用 示例
service Service 业务接口定义 AdminUserService
service ServiceImpl 业务实现 AdminUserServiceImpl

3.4 DAL 层
作用 示例
dal - 数据访问层 -
dal.dataobject DO 表/Redis 映射对象 AdminUserDO
dal.mysql Mapper MySQL 操作 AdminUserMapper
dal.redis RedisDAO Redis 操作 OAuth2AccessTokenRedisDAO

3.5 API 层
作用 示例
api Api 模块对外接口 AdminUserApi
api ApiImpl 接口实现 AdminUserApiImpl
api DTO 接口入参/出参 AdminUserRespDTO

3.6 MQ 层
作用 示例
mq - 消息队列 -
mq.message Message 消息定义 SmsSendMessage
mq.producer Producer 消息生产 SmsProducer
mq.consumer Consumer 消息消费 SmsSendConsumer

3.7 Job 层
作用 示例
job Job 定时任务 DemoJob

3.8 Enum 与其它
作用 示例
enums Enum 字段枚举 SocialTypeEnum
enums DictTypeConstants 字典枚举 DictTypeConstants
enums ErrorCodeConstants 错误码 ErrorCodeConstants
convert Convert 对象转换 UserConvert
framework - 模块内部框架 YudaoCaptchaConfiguration

4. yudao-server

yudao-server 是后端 启动容器模块

  • 引入所需的 yudao-module-xxx
  • 对外提供 RESTful API
  • 连接前端 yudao-ui-admin-vue3

本质上是一个 空壳容器


二、前端结构(yudao-ui-admin-vue3)

复制代码
.
├── .github            # GitHub workflows
├── .husky             # Husky 配置
├── .vscode            # VSCode 配置
├── mock               # Mock 数据
├── public             # 静态资源
├── src                # 核心代码
│   ├── api            # 接口管理
│   ├── assets         # 资源文件
│   ├── components     # 公共组件
│   ├── hooks          # Hooks
│   ├── layout         # 布局
│   ├── locales        # 多语言
│   ├── plugins        # 插件
│   ├── router         # 路由
│   ├── store          # 状态管理
│   ├── styles         # 全局样式
│   ├── utils          # 工具类
│   ├── views          # 页面
│   ├── App.vue        # 入口组件
│   ├── main.ts        # 入口文件
│   └── permission.ts  # 路由权限
├── types               # 全局类型
├── .env.*              # 环境变量
├── index.html          # 页面入口
├── package.json
├── vite.config.ts      # Vite 配置
└── windi.config.ts     # WindiCSS 配置

总结

  • 后端采用 多 Module + 插件化架构
  • 业务模块高度解耦,支持灵活组合
  • 前端基于 Vue3 + Vite + Element Plus
  • 前后端结构清晰,适合中大型项目持续演进
相关推荐
小羊没烦恼!1 天前
微服务化的基石——持续集成
java·大数据·word·powerpoint·.net
一隅论数智1 天前
给AI一张“业务概念地图“:本体如何从哲学走向企业智能
大数据·人工智能·经验分享·笔记·学习·学习方法·政务
俊昭喜喜里1 天前
java中的继承和多态的区别
java
小羊没烦恼!1 天前
初探性能优化——2个月到4小时的性能提升
java·开发语言·windows·算法·c#
XiHongShi20161 天前
STM32F407 RTC定时器例程,建议保存
stm32·单片机·学习
譕痕1 天前
JSONObject与JSONArray封装数据格式区别
java·json
胡写代码1 天前
别再前后端各写一套表单校验了
java·后端
小鱼能吃糖1 天前
缺陷修复总览 · mall电商项目:5类缺陷,1个病根,4个业务域
java·电商
爱吃苹果的日记本1 天前
离散数学第六课
学习·离散数学