芋道 ruoyi-vue-pro v1.0.0 正式版发布!肝了小半年,不容易~

7,291 阅读9分钟

秃头了

大家好,我是 艿艿 乃乃

花了小半年,肝了一个管理后台快速开发开源项目,嘿嘿。

项目地址是:

最近开始学习 uniapp,准备把微信小程序做个 c 端,嘿嘿。

求个 star,可以哇?

v1.0.0 更新日志

第一个版本,基于 RuoYi-Vue 重构,主要是三个方面:

  • 代码的重构
  • 技术选型的调整
  • 后台功能的新增

因此,v1.0.0 的更新日志,分成这三方面来写。

代码的重构

  • 调整整体代码结构,将多个 Maven Module 合并为单个,使用 Java package 进行拆分隔离,如 所示。原因是:随着业务逻辑的逐步复杂,多个 Maven Module 的依赖关系的管理,会是一个很大的问题。
  • 拆分 framework 为多个 Maven Module,按照 WebSecurityMyBatisRedis 等不同组件,进行封装与拓展。
  • 基于 JUnit5Mockito,实现单元测试,保证功能的正确性,与代码的可维护性。一直自动化,一直爽!
  • 增加 SpringBoot 多环境的配置文件,提供完善的 deploy.sh 部署脚本,以及 Jenkins 部署教程
  • 优化 Spring Security 实现权限的代码,提升可读性和维护性。
  • 增加本地缓存(菜单、角色、数据字典等等),提升性能。通过 Redis 订阅发布,实现缓存的实时刷新。
  • 增加 VO 类,作为 API 接口的响应对象,避免数据库实体与前端的直接耦合。
  • 优化 操作日志,支持读取 Swagger 作为日志的内容。
  • 优化 定时任务,支持执行失败的重试,更完善的执行日志。
  • 优化 codegen 代码生成器,在原先生成 Controller、Service、Mapper、数据库实体、Vue 代码的基础上,额外生成 VO、单元测试的代码。
  • 调整文件改用 数据库 存储,而不是文件系统。原因是,项目在部署多个服务节点时,文件需要做同步。未来,会增加阿里云、七牛云等存储云服务。
  • 去除原有数据库的连表查询、递归查询,改为单表操作的方式,多次读取 + 内存拼接。
  • 优化 Java 代码的格式,解决 IDEA 代码告警的问题。

后台功能的新增

  • 增加 API 访问异常日志,方便排查线上 API 的问题。
  • 增加 全局错误码,统一业务异常的管理。管理后台会支持错误码的管理,支持提示文案的可配置化。
  • 增加 短信模块,提供短信渠道、短息模板、短信日志的管理,对接阿里云、云片等主流短信平台。
  • 增加 Redis Key 的管理,知道项目中使用到的 Redis Key 的格式、数据类型、过期时间、描述等等信息。

技术选型的调整

  • 将 Spring Boot 版本,从 2.1.3 升级到 2.4.5 最新。
  • 增加 bom 文件,统一 Maven 的依赖管理。
  • 引入 MyBatis Plus 组件,简化 MyBatis 使用,提升开发效率。
  • 引入 Redisson 组件,作为 Redis 的客户端,提供更强大的 Redis 操作。
  • 基于 Redis 实现分布式消息队列的功能。接入 Redis Pub/Sub 实现广播消费,接入 Redis Stream 实现集群消费。
  • 去除 fastjson,统一使用 Jackson 作为 JSON 库,老爆安全漏洞的悲伤。
  • 引入 MapStruct 组件,实现数据库实体与 VO 类之间的转换。
  • 引入 Lombok 组件,生成 setter、getter 等常用方法,去除冗余代码。
  • 引入 Spring Async 功能,实现异步任务。例如说,异步记录 API 访问日志、管理员操作日志等等。
  • 魔改 Apollo 组件,接入本地数据库,实现内嵌的配置中心。通俗的说,我们可以将原本添加到 application.yaml 的配置项,改为添加到数据库中,项目启动会进行读取。
  • 引入 Hutool 组件,去除大量重复的工具类,也避免原本 Util 存在一些 bug 的问题。
  • 引入 Screw 组件,实现数据库文档的生成,虽然好像现在用途较少。
  • 引入 EasyExcel,提供 Excel 的导入与导出的功能。
  • 实现 Idempotent 组件,实现幂等的功能,可以用来解决 HTTP 重复请求的问题。
  • 引入 Lock4J,实现声明式的分布式锁的功能。虽然 Redisson 内置了分布式锁的功能,但是通过注解声明一个 @Lock4j 注解的使用方式,更加便利,且满足绝大多数场景。
  • 去除原有的服务监控,使用 SpringBoot Admin 替代,提供更完整的监控能力。
  • 引入 SkyWalking 组件,实现链路追踪和日志服务的功能。通过链路追踪,我们可以看到一个 API 请求涉及到的 MySQL、Redis 等操作;通过日志服务,我们可以方便的看到每个服务实例的日志。
  • 引入 Resilience4j 组件,实现限流、熔断等功能,保证服务的稳定性。
  • 引入 Knife4j,美化接口文档。原本所有 API 接口文档是缺失的,已经全部补全,可见 api-dashboard.yudao.iocoder.cn/doc.html 地址。

平台简介

芋道,一套全部开源企业级的快速开发平台,毫无保留给个人及企业免费使用。

有任何问题,或者想要的功能,可以在 Issues 中提给艿艿。

  • 前端采用 vue-element-admin
  • 后端采用 Spring Boot、MySQL、Redis。
  • 权限认证使用 Spring Security & Token,支持多终端认证系统。
  • 支持加载动态权限菜单,多方式轻松权限控制。
  • 高效率开发,使用代码生成器可以一键生成前后端代码。

内置功能

分成三种内置功能:

  • 系统功能
  • 基础设施
  • 研发工具

友情提示:本项目基于 RuoYi-Vue 修改,重构优化后端的代码,美化前端的界面。

额外新增的功能,我们使用 🚀 标记。

🙂 所有功能,都通过 单元测试 保证高质量。

系统功能

功能描述
用户管理用户是系统操作者,该功能主要完成系统用户配置
在线用户当前系统中活跃用户状态监控,支持手动踢下线
角色管理角色菜单权限分配、设置角色按机构进行数据范围权限划分
菜单管理配置系统菜单,操作权限,按钮权限标识等
部门管理配置系统组织机构(公司、部门、小组),树结构展现支持数据权限
岗位管理配置系统用户所属担任职务
字典管理对系统中经常使用的一些较为固定的数据进行维护
🚀短信管理短信渠道、短息模板、短信日志,对接阿里云、云片等主流短信平台
🚀操作日志系统正常操作日志记录和查询,集成 Swagger 生成日志内容
登录日志系统登录日志记录查询,包含登录异常
🚀错误码管理系统所有错误码的管理,可在线修改错误提示,无需重启服务
通知公告系统通知公告信息发布维护

基础设施

功能描述
🚀配置管理对系统动态配置常用参数,支持 SpringBoot 加载
定时任务在线(添加、修改、删除)任务调度包含执行结果日志
🚀文件服务支持本地文件存储,同时支持兼容 Amazon S3 协议的云服务、开源组件
🚀API 日志包括 RESTful API 访问日志、异常日志两部分,方便排查 API 相关的问题
MySQL 监控监视当前系统数据库连接池状态,可进行分析SQL找出系统性能瓶颈
Redis 监控监控 Redis 数据库的使用情况,使用的 Redis Key 管理
🚀Java 监控基于 Spring Boot Admin 实现 Java 应用的监控
🚀链路追踪接入 SkyWalking 组件,实现链路追踪
🚀日志中心接入 SkyWalking 组件,实现日志中心
🚀分布式锁基于 Redis 实现分布式锁,满足并发场景
🚀幂等组件基于 Redis 实现幂等组件,解决重复请求问题
🚀服务保障基于 Resilience4j 实现服务的稳定性,包括限流、熔断等功能
🚀日志服务轻量级日志中心,查看远程服务器的日志
🚀单元测试基于 JUnit + Mockito 实现单元测试,保证功能的正确性、代码的质量等

研发工具

功能描述
🚀代码生成前后端代码的生成(Java、Vue、SQL、单元测试),支持 CRUD 下载
🚀系统接口基于 Swagger 自动生成相关的 RESTful API 接口文档
🚀数据库文档基于 Screw 自动生成数据库文档,支持导出 Word、HTML、MD 格式
表单构建拖动表单元素生成相应的 HTML 代码

在线体验

演示地址:dashboard.yudao.iocoder.cn

  • 账号密码:admin/admin123

文档地址:www.iocoder.cn/categories/…

未来会补充文档和视频,方便胖友冲冲冲!

技术栈

项目说明
yudao-dependenciesMaven 依赖版本管理
yudao-frameworkJava 框架拓展
yudao-admin-server管理后台的服务端
yudao-admin-ui管理后台的 UI 界面
yudao-user-server用户前台的服务端
yudao-user-ui用户前台的 UI 界面

后端

框架说明版本学习指南
Spring Boot应用开发框架2.4.5文档
MySQL数据库服务器5.7
DruidJDBC 连接池、监控组件1.2.4文档
MyBatis PlusMyBatis 增强工具包3.4.1文档
Dynamic Datasource动态数据源3.3.2文档
Rediskey-value 数据库5.0
RedissonRedis 客户端3.1.46文档
Spring MVCMVC 框架5.4.6文档
Spring SecuritySpring 安全框架5.4.6文档
Hibernate Validator参数校验组件6.1.7文档
Quartz任务调度组件2.3.2文档
Knife4jSwagger 增强 UI 实现3.0.2文档
Resilience4j服务保障组件1.7.0文档
SkyWalking分布式应用追踪系统8.5.0文档
Spring Boot AdminSpring Boot 监控平台2.3.1文档
JacksonJSON 工具库2.11.4
MapStructJava Bean 转换1.4.1文档
Lombok消除冗长的 Java 代码1.16.14文档
JUnitJava 单元测试框架5.7.1-
MockitoJava Mock 框架3.6.28-

前端

框架说明版本
VueJavaScript 框架2.6.12
Vue Element Admin后台前端解决方案-

演示图

系统功能

模块biubiubiu
登陆 & 首页登录首页个人中心
用户用户管理在线用户-
部门 & 岗位部门管理岗位管理-
菜单 & 角色菜单管理角色管理-
审计日志操作日志登陆日志-
短信短信渠道短信模板短信日志
字典字典类型字典数据-
错误码 & 通知错误码管理通知公告-

基础设施

模块biubiubiu
文件 & 配置文件管理配置管理-
定时任务定时任务任务日志-
API 日志访问日志错误日志-
MySQL & RedisMySQLRedis-
监控平台Java监控链路追踪日志中心

研发工具

模块biubiubiu
代码生成代码生成生成效果表单构建
文档系统接口数据库文档-