更新日志
严峻更新
- [严峻更新] 新增 sms4j 短信交融结构整合(支撑数十种短信厂商接入、发送限制、负载均衡等功用)
- [不兼容更新] 移除 原短信功用(主张运用新 sms4j 功用)
- [重要搬迁] 搬迁 vue3 前端到主仓库一致保护
依靠晋级
- update springboot 2.7.11 => 2.7.13
- update spring-cloud 2021.0.7 => 2021.0.8
- update satoken 1.34.0 => 1.35.0.RC
- update easyexcel 3.2.1 => 3.3.1
- update sms4j 2.2.0
- update element 2.15.12 => 2.15.13
功用更新
- update 优化 StreamUtils 办法过滤null值
- update 优化 页签在Firefox浏览器被遮挡
- update 优化 在大局反常拦截器中添加两类反常处理
- update 优化 下载zip办法添加遮罩层(感谢@梁剑锋)
- update 优化 用户昵称非空校验
- update 优化 修正人物如果未绑定用户则无需清理
- update 优化 RepeatSubmitAspect 逻辑防止并发恳求问题
- update 优化 satoken 过期装备 支撑多端token自定义有效期
- update 优化 加密注解注释过错
- update 优化 切换 maven 仓库到华为云(aliyun 不可用)
- update 优化 excel 导出存在合并项时在初始化类时进行数据的处理防止屡次调用(感谢@yueye)
- update 优化 重构 CellMergeStrategy 支撑多级表头修正一些小问题 整理代码结构
- update 补全 SysLogininforMapper.xml 缺失字段
- update 优化 demo 模块 途径适配一致前端
- update 调整 gateway 访问日志输出等级
新增功用
- add 新增 RedisUtils.setObjectIfAbsent 不存在则设置办法
- add 新增 Excel 导出顺便有下拉框(字典主动导出为下拉框) 可自定义多级下拉框(感谢@Emil.Zhang)
- add 新增 OssClient File 文件上传办法
- add 添加 RedisUtils 批量删去 hash key 办法
问题修正
- fix 修正 sa-token.check-same-token 开关对网关鉴权无效问题
- fix 修正 服务未添加 common-security 模块导致反常拦截器不收效问题
- fix 修正 删去 skywalking dubbo 2.X 插件防止与 3.X 呈现兼容性问题
- fix 修正 excel 枚举反向解析失利问题
- fix 修正 字典缓存注解运用过错问题
- fix 修正 新增人物运用内置办理员标识符问题
- fix 修正 缓存监控图表 支撑跟从屏幕大小自适应调整(感谢@抓蛙师)
- fix 修正 防重组件 错删注解问题
- fix 修正 CacheName 缓存key存储过错问题
- fix 修正 字典缓存注解运用过错问题
- fix 修正 用户篡改办理员人物标识符越权问题
- fix 修正 登录校验过错次数未达到上限时 过错次数缓存未设置有效时刻问题
- fix 修正 OssClient 切换服务 实例不正确问题
- fix 修正 element ui 因版别而未被东西辨认问题(感谢@梁剑锋)
- fix 修正 admin监控 切换tab页需求重复登录问题
- fix 修正 个人中心tab栏封闭页面内容压缩问题
渠道简介
RuoYi-Cloud-Plus
微服务通用权限办理体系
重写 RuoYi-Cloud 全方位晋级(不兼容原结构)
项目代码、文档 均开源免费可商用 遵循开源协议在项目中保存开源协议文件即可
活到老写到老 为兴趣而开源 为学习而开源 为让我们真实能够学到技能而开源
本结构与RuoYi的功用差异
功用 | 本结构 | RuoYi |
---|---|---|
前端项目 | 依据vue3-element-admin开源项目重写 Vue3 + TS + ElementPlus |
依据Vue2/Vue3 + JS |
后端项目结构 | 选用插件化 + 扩展包办法 结构解耦 易于扩展 | 模块相互注入耦合严峻难以扩展 |
后端代码风格 | 严格遵守Alibaba标准与项目一致装备的代码格式化 | 代码书写与常规结构不同阅读障碍大 |
分布式注册中心 | 选用 Alibaba Nacos 源码集成便于调试扩展与二次开发 结构还为其添加了各种监控 | 选用 Alibaba Nacos 自行建立纯官方版别不可靠 |
分布式装备中心 | 选用 Alibaba Nacos 源码集成便于调试扩展与二次开发 结构还为其添加了各种监控 | 选用 Alibaba Nacos 自行建立纯官方版别不可靠 |
服务网关 | 选用 SpringCloud Gateway 结构扩展了多种功用 例如:内网鉴权、恳求体缓存、跨域装备、恳求响应日志等 |
选用 SpringCloud Gateway 功用单一 |
负载均衡 | 选用 SpringCloud Loadbalancer 扩展支撑了开发团队路由 便于多团队开发调试 | 选用 SpringCloud Loadbalancer 功用单一 |
RPC长途调用 | 选用 全新 Apache Dubbo 3.X 前史悠远不必多说 | 选用 feign 功用有限编写办法 网络动摇大 不稳定 |
分布式限流熔断 | 选用 Alibaba Sentinel 源码集成便于调试扩展与二次开发 结构还为其添加了各种监控 | 选用 Alibaba Sentinel 自行建立纯官方版别不可靠 |
分布式事务 | 选用 Alibaba Seata 源码集成对接了Nacos与各种监控 简化了建立布置流程 | 选用 Alibaba Seata 自行建立纯官方版别 建立繁琐与Nacos不挂钩 代码内运用办法奇怪等 |
Web容器 | 选用 Undertow 依据 XNIO 的高功用容器 | 选用 Tomcat |
权限认证 | 选用 Sa-Token、Jwt 静态运用功用完全 低耦合 高扩展 | Spring Security 装备繁琐扩展性极差 |
权限注解 | 选用 Sa-Token 支撑注解 登录校验、人物校验、权限校验、二级认证校验、HttpBasic校验、忽略校验 人物与权限校验支撑多种条件 如 AND OR 或 权限 OR 人物 等杂乱表达式 |
只支撑是否存在匹配 |
联系数据库支撑 | 原生支撑 MySQL、Oracle、PostgreSQL、SQLServer 可一起运用异构切换 |
支撑 Mysql、Oracle 不支撑一起运用、不支撑异构切换 |
缓存数据库 | 支撑 Redis 5-7 支撑大部分新功用特性 如 分布式限流、分布式队列 | Redis 简略 get set 支撑 |
Redis客户端 | 选用 Redisson Redis官方推荐 依据Netty的客户端东西 支撑Redis 90%以上的指令 底层优化规避许多不正确的用法 例如: keys被转换为scan 支撑单机、岗兵、单主集群、多主集群等模式 |
Lettuce + RedisTemplate 支撑模式少 东西运用繁琐 连接池选用 common-pool Bug多常常性出问题 |
缓存注解 | 选用 Spring-Cache 注解 对其扩展了完成支撑了更多功用 例如 过期时刻 最大闲暇时刻 组最大长度等 只需一个注解即可完成数据主动缓存 |
需手动编写Redis代码逻辑 |
ORM结构 | 选用 Mybatis-Plus 依据对象几乎不必写SQL全java操作 功用强大插件众多 例如多租户插件 分页插件 乐观锁插件等等 |
选用 Mybatis 依据XML需求手写SQL |
SQL监控 | 选用 p6spy 可输出完整SQL与执行时刻监控 | log输出 需手动拼接sql与参数无法快速检查调试问题 |
数据分页 | 选用 Mybatis-Plus 分页插件 结构对其进行了扩展 对象化分页对象 支撑多种办法传参 支撑前端多排序 杂乱排序 |
选用 PageHelper 仅支撑单查询分页 参数只能从param传 只能单排序 功用扩展性差 体会不好 |
数据权限 | 选用 Mybatis-Plus 插件 自行剖析拼接SQL 无感式过滤 只需为Mapper设置好注解条件 支撑多种自定义 不限于部分人物 |
选用 注解+aop 完成 依据部分人物 生成的sql兼容性差 不支撑其他事务扩展 生成sql后需手动拼接到具体事务sql上 关于多个Mapper查询不起作用 |
数据脱敏 | 选用 注解 + jackson 序列化期间脱敏 支撑不同模块不同的脱敏条件 支撑多种战略 如身份证、手机号、地址、邮箱、银行卡等 可自行扩展 |
无 |
数据加解密 | 选用 注解 + mybatis 拦截器 对存取数据期间主动加解密 支撑多种战略 如BASE64、AES、RSA、SM2、SM4等 |
无 |
数据翻译 | 选用 注解 + jackson 序列化期间动态修正数据 数据进行翻译 支撑多种模式: 映射翻译 直接翻译 其他扩展条件翻译 接口化两步即可完成自定义扩展 内置多种翻译完成 |
无 |
大都据源结构 | 选用 dynamic-datasource 支撑世面大部分数据库 通过yml装备即可动态办理异构不同品种的数据库 也可通过前端页面添加数据源 支撑spel表达式从恳求头参数等条件切换数据源 |
依据 druid 手动编写代码装备数据源 装备繁琐 支撑性差 |
大都据源事务 | 选用 dynamic-datasource 支撑大都据源不同品种的数据库事务回滚 | 不支撑 |
数据库连接池 | 选用 HikariCP Spring官方内置连接池 装备简略 以功用与稳定性闻名天下 | 选用 druid bug众多 社区保护差 活跃度低 装备众多繁琐功用一般 |
数据库主键 | 选用 雪花ID 依据时刻戳的 有序增长 仅有ID 再也不必为分库分表 数据合并主键冲突重复而忧愁 | 选用 数据库自增ID 支撑数据量有限 不支撑大都据源主键仅有 |
WebSocket协议 | 依据 Spring 封装的 WebSocket 协议 扩展了Token鉴权与分布式会话同步 不再只是依据单机的废物 | 无 |
序列化 | 选用 Jackson Spring官方内置序列化 靠谱!!! | 选用 fastjson bugjson 远近闻名 |
分布式幂等 | 参考美团GTIS防重体系简化完成(细节可看文档) | 手动编写注解依据aop完成 |
分布式使命调度 | 选用 Xxl-Job 天然生成支撑分布式 一致的办理中心 | 选用 Quartz 依据数据库锁功用差 集群需求做许多装备与改造 |
分布式日志中心 | 选用 ELK 业界老练解决计划 实时收集一切服务的运行日志 快速发现定位问题 | 无 |
分布式搜索引擎 | 选用 ElasticSearch、Easy-Es 以 Mybatis-Plus 办法操作 ElasticSearch | 无 |
分布式消息队列 | 选用 SpringCloud-Stream 支撑 Kafka、RocketMQ、RabbitMQ | 无 |
文件存储 | 选用 Minio 分布式文件存储 天然生成支撑多机、多硬盘、多分片、多副本存储 支撑权限办理 安全可靠 文件可加密存储 |
选用 本机文件存储 文件裸漏 易丢失泄漏 不支撑集群有单点效应 |
云存储 | 选用 AWS S3 协议客户端 支撑 七牛、阿里、腾讯 等一切支撑S3协议的厂家 | 不支撑 |
短信 | 支撑 阿里、腾讯 只需在yml装备好厂家密钥即可运用 接口化支撑扩展其他厂家 | 不支撑 |
邮件 | 选用 mail-api 通用协议支撑大部分邮件厂商 | 不支撑 |
接口文档 | 选用 SpringDoc、javadoc 无注解零入侵依据java注释 只需把注释写好 无需再写一大堆的文档注解了 |
选用 Springfox 已中止保护 需求编写大量的注解来支撑文档生成 |
校验结构 | 选用 Validation 支撑注解与东西类校验 注解支撑国际化 | 仅支撑注解 且注解不支撑国际化 |
Excel结构 | 选用 Alibaba EasyExcel 依据插件化 结构对其添加了许多功用 例如 主动合并相同内容 主动排列布局 字典翻译等 |
依据 POI 手写完成 功用有限 杂乱 扩展性差 |
东西类结构 | 选用 Hutool、Lombok 上百种东西掩盖90%的运用需求 依据注解主动生成 get set 等简化结构大量代码 | 手写东西稳定性差易出问题 东西数量有限 代码臃肿需自己手写 get set 等 |
服务监控结构 | 选用 SpringBoot-Admin 依据SpringBoot官方 actuator 探针机制 实时监控服务状况 结构还为其扩展了在线日志检查监控 |
无 |
全方位监控报警 | 选用 Prometheus、Grafana 多样化采集 多模板大屏展现 实时报警监控 供给具体的建立文档 | 无 |
链路追踪 | 选用 Apache SkyWalking 还在为恳求不知道去哪了 到哪出了问题而烦恼吗 用了它即可实时检查恳求经过的每一处每一个节点 |
无 |
代码生成器 | 只需设计好表结构 一键生成一切crud代码与页面 降低80%的开发量 把精力都投入到事务设计上 结构为其适配MP、SpringDoc标准化代码 一起支撑动态大都据源代码生成 |
代码生成原生结构 只支撑单数据源生成 |
布置办法 | 支撑 Docker 编排 一键建立一切环境 让开发人员从此不再为建立环境而烦恼 | 原生jar布置 其他环境需手动下载安装 自行建立 |
项目途径修正 | 供给具体的修正计划文档 并为其做了一些改动 十分简略即可修正成自己想要的 | 需求做许多改造 文档说明有限 |
国际化 | 依据恳求头动态回来不同语种的文本内容 开发难度低 有对应的东西类 支撑大部分注解内容国际化 | 只供给根底功用 其他需自行编写扩展 |
代码单例测验 | 供给单例测验 运用办法编写办法与maven多环境单测插件 | 只供给根底功用 其他需自行编写扩展 |
Demo事例 | 供给结构功用的实际运用事例 独自一个模块供给了许多很全 | 无 |
本结构与RuoYi的事务差异
事务 | 功用说明 | 本结构 | RuoYi |
---|---|---|---|
租户办理 | 体系内租户的办理 如:租户套餐、过期时刻、用户数量、企业信息等 | 支撑 | 无 |
租户套餐办理 | 体系内租户所能运用的套餐办理 如:套餐内所包含的菜单等 | 支撑 | 无 |
用户办理 | 用户的办理装备 如:新增用户、分配用户所属部分、人物、岗位等 | 支撑 | 支撑 |
部分办理 | 装备体系组织机构(公司、部分、小组) 树结构展现支撑数据权限 | 支撑 | 支撑 |
岗位办理 | 装备体系用户所属担任职务 | 支撑 | 支撑 |
菜单办理 | 装备体系菜单、操作权限、按钮权限标识等 | 支撑 | 支撑 |
人物办理 | 人物菜单权限分配、设置人物按机构进行数据范围权限划分 | 支撑 | 支撑 |
字典办理 | 对体系中常常运用的一些较为固定的数据进行保护 | 支撑 | 支撑 |
参数办理 | 对体系动态装备常用参数 | 支撑 | 支撑 |
告诉公告 | 体系告诉公告信息发布保护 | 支撑 | 支撑 |
操作日志 | 体系正常操作日志记载和查询 体系反常信息日志记载和查询 | 支撑 | 支撑 |
登录日志 | 体系登录日志记载查询包含登录反常 | 支撑 | 支撑 |
文件办理 | 体系文件展现、上传、下载、删去等办理 | 支撑 | 无 |
文件装备办理 | 体系文件上传、下载所需求的装备信息动态添加、修正、删去等办理 | 支撑 | 无 |
在线用户办理 | 已登录体系的在线用户信息监控与强制踢出操作 | 支撑 | 支撑 |
守时使命 | 运行报表、使命办理(添加、修正、删去)、日志办理、执行器办理等 | 支撑 | 仅支撑使命与日志办理 |
代码生成 | 大都据源前后端代码的生成(java、html、xml、sql)支撑CRUD下载 | 支撑 | 仅支撑单数据源 |
体系接口 | 依据事务代码主动生成相关的api接口文档 | 支撑 | 支撑 |
服务监控 | 监视集群体系CPU、内存、磁盘、堆栈、在线日志、Spring相关装备等 | 支撑 | 仅支撑单机CPU、内存、磁盘监控 |
缓存监控 | 对体系的缓存信息查询,指令统计等。 | 支撑 | 支撑 |
在线构建器 | 拖动表单元素生成相应的HTML代码。 | 支撑 | 支撑 |
运用事例 | 体系的一些功用事例 | 支撑 | 不支撑 |
参考文档
运用结构前请仔细阅读文档要点注意事项
初始化项目 必看
gitee.com/dromara/Ruo…
专栏与视频 入门必看
gitee.com/dromara/Ruo…
布置项目 必看
gitee.com/dromara/Ruo…
参考文档 Wiki
gitee.com/dromara/Ruo…