RuoYi-Cloud-Plus 发布 1.8.0 新增 sms4j 短信融合

更新日志

严峻更新

  • [严峻更新] 新增 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…