RuoYi-Cloud-Plus releases 2.1.1. A large number of code optimizations and bug fixes are recommended for upgrading.


Change log

Dependency upgrade

  • update springboot 3.1.3 => 3.1.5

  • update springboot 2.7.14 => 2.7.17 (extended service)

  • update springboot-admin 3.1.5 => 3.1.7

  • update satoken 1.35.0.RC => 1.37.0

  • update mybatis-plus 3.5.3.2 => 3.5.4 Adapt to the new version of mp changes

  • update dynamic-ds 4.1.3 => 4.2.0

  • update bouncycastle 1.72 => 1.76

  • update poi 5.2.3 => 5.2.4

  • update redisson 3.23.2 => 3.24.1

  • update hutool 5.8.20 => 5.8.22

  • update lombok 1.18.26 => 1.18.30 (Adapted to support jdk21)

  • update vue-quill 1.1.0 => 1.2.0

  • update seata 1.7.0 => 1.7.1

  • update dubbo 3.2.5 => 3.2.7

Feature updates

  • update: Optimize and remove unreasonable methods. It is recommended to directly integrate the plug-in to send emails carrying attachments.

  • update optimizes the cross-domain problem of carrying clientid

  • update optimizes the data permission interceptor to prioritize whether the method is effective, improve performance and reduce useless SQL parsing

  • update optimizes and adapts to the new version of maxkey

  • update Optimize @Sensitive desensitization and add role and permission verification (Thank you Pangu for giving you an axe)

  • update optimizes department data permissions and uses the default cover-up plan

  • update optimizes and changes the default log level to info to avoid too many logs (enable debug as needed)

  • update Optimize login strategy code optimization (thanks to David Wei)

  • update optimizes and completes the code to generate columnList interface parameter annotations are missing

  • update optimizes nginx configuration to support websocket

  • update optimizes notice, adds new notices and announcements and sends ws push

  • update optimizes the websocket module to reduce log output and increase login push

  • update optimizes and reconstructs the login strategy to increase scalability and reduce complexity

  • update optimizes addressUtils to be compatible with the local IP address of the Linux system

  • update optimizes and completes operation log department data

  • update optimizes database operations to support tenant switching in non-web environments

  • update optimizes and excludes useless dependencies of powerjob and reduces the packaging size by 30M

  • update optimizes deletion of satoken yml time configuration. This function has been migrated to client management.

  • update optimization redis cluster mode annotation

  • update optimizes client disabling restrictions

  • update Optimize login log, online user display information (add client, device type) (Thanks to MichelleChung)

  • update optimizes the fastjson version in the restriction framework

  • update optimizes data permissions to reduce secondary verification queries

  • update optimizes storing department IDs in tokens to avoid excessive querying of redis

  • update optimizes and adds tenant ID to Null error log

  • update: Optimize operation log list and add IP address query

  • update optimizes obtaining the return body of the key-value interface through the parameter key name (thanks to David Wei)

  • update optimizes adding styles to the sys_grant_type dictionary

  • update optimizes the input box style of the code generation page

  • update optimizes full-service paging queries and adds sorting rules to avoid disorder problems caused by where conditions

  • update: Optimize the login interface tenant ID forced verification issue

  • update optimizes the encryption module to support the unified use of encryption annotations by parent classes (thanks to Tyler Ge)

  • update optimizes updating the graalvm image to the openjdk image. Those who need it can switch by themselves.

  • update: Optimize some users' random setting of permissions, resulting in inability to obtain user information. Add permission prompts.

  • update optimizes the display and hiding widgets of table columns (thanks to bestrevens)

  • update Optimize and add instructions that form construction cannot be used

  • update Optimize the rich text Editor component to check the image format

  • update: Optimize operation log list and add IP address query

  • update optimizes menu management type to be button state optional

  • update optimizes user initial password query from parameter configuration

  • update optimizes obtaining the return body of the key-value interface through the parameter key name (thanks to David Wei)

  • update optimizes dictionary tags to support arrays and multiple tags (thanks to Frog Catcher)

new features

  • add new websocket group sending function

  • add new front-end access to websocket to receive messages (thanks to Sansan)

  • add adds rpc message push interface and implementation

  • add new CacheController Redis cache monitoring interface (thanks to Michelle.Chung)

Bug fixes

  • fix: Fix the problem that the log writing of the common-web package cannot be introduced because the extended service does not support boot3 and does not take effect.

  • fix fix the problem of missing druid tool in seata XA mode

  • fix: Fix the business exception problem caused by the oss service being unable to connect. Querying should not affect the business.

  • fix Fixed the nested key problem caused by the inability to match strings when the tenant id is null

  • fix Fix the problem of orderNum sorting failure in department management

  • fix Fix the exception that occurs in the external link port

  • fix: Fix the problem of unauthorized use of the built-in administrator code when editing ordinary characters.

  • fix Fix the problem that whether code generation is required does not match the database

  • fix: Fix the problem that the user registration interface does not distinguish between tenants when verifying user names.

  • fix: Fix the problem of verification not taking effect caused by adding a group by mistake

  • fix Fix the problem of adding new verification primary key id

  • fix Fix the problem that powerjob cannot be accessed using nginx deployment

  • fix Fix the label usage error in SysUserMapper (does not affect use)

  • fix: Fix the incomplete data pushed to redis after adding or editing SysOssConfig data

  • fix Fix the error in using query variables when generating tree tables

  • fix: Fix personal information change password interface to hide the clear text of old and new password parameters (thanks to bleachtred)

  • fix fixes the problem that * update sql is not updated after deleting a field

  • fix Fix the problem of mismatch between third-party login Alipay source and actual Alipay business code

  • fix Fix the issue of invalid level five routing cache

  • fix Fix the problem of internal link iframe not passing parameters

  • fix Fix the binding of third-party account parameter "wechar" to "wechat" (thanks to scmiot)

  • fix Fix the problem of missing clientid in user registration

  • fix Fix the problem of missing query parameters in HeaderSearch component jump

  • fix Fix the problem that custom dictionary style does not take effect

  • fix Fix the problem that the login page loading is not closed

Platform introduction

RuoYi-Cloud-Plus 微服务通用权限管理系统rewrites RuoYi-Cloud to fully upgrade (not compatible with the original framework)

The project code and documents are all open source, free and can be used commercially. Just follow the open source agreement and keep the open source agreement files in the project.
Live until you are old and write until you are old. Open source for interest. Open source for learning. Open source for everyone to truly learn technology.

System demonstration: https://plus-doc.dromara.org/#/common/demo_system

Front-end project address: https://gitee.com/JavaLionLi/plus-ui

Document address: https://plus-doc.dromara.org

Functional differences between this framework and RuoYi

Function this framework RuoYi
Front-end project
Rewrite Vue3 + TS + ElementPlus based on the vue3-element-admin open source project
Based on Vue2/Vue3 + JS
Backend project structure Structural decoupling in the form of plug-ins + expansion packs for easy expansion Modules are injected into each other and coupling is seriously difficult to expand.
Backend code style Code formatting that strictly adheres to Alibaba specifications and unified project configuration Code writing is different from conventional structures, causing reading difficulties
Distributed registration center Using Alibaba Nacos source code integration to facilitate debugging extensions and secondary development framework, various monitoring has been added to it. Using Alibaba Nacos to build a purely official version by yourself is unreliable
Distributed configuration center Using Alibaba Nacos source code integration to facilitate debugging extensions and secondary development framework, various monitoring has been added to it. Using Alibaba Nacos to build a purely official version by yourself is unreliable
service gateway The SpringCloud Gateway framework is used to extend a variety of functions
, such as: intranet authentication, request body caching, cross-domain configuration, request response log, etc.
Using SpringCloud Gateway has a single function
load balancing The SpringCloud Loadbalancer extension supports development team routing to facilitate multi-team development and debugging. Using SpringCloud Loadbalancer has a single function
RPC remote call Using the new Apache Dubbo 3.X, it goes without saying that it has a long history. Using the feign writing method with limited functions, the network fluctuates greatly and is unstable.
Distributed current limiting fuse Using Alibaba Sentinel source code integration to facilitate debugging extensions and secondary development framework, it also adds various monitoring Using Alibaba Sentinel to build a purely official version by yourself is unreliable
Distributed transactions Using Alibaba Seata source code integration to connect Nacos and various monitoring to simplify the construction and deployment process Using Alibaba Seata to build a purely official version by yourself is cumbersome and Nacos is not linked to the strange usage methods in the code.
Web container Using Undertow, a high-performance container based on XNIO Using Tomcat
Authority authentication Using Sa-Token and Jwt, static use, complete functions, low coupling and high scalability Spring Security has cumbersome configuration and extremely poor scalability
Permission annotation Use Sa-Token to support annotation login verification, role verification, permission verification, secondary authentication verification, HttpBasic verification, ignore verification.
Role and permission verification supports multiple conditions such as AND ORor 权限 OR 角色and other complex expressions
Only supports whether there is a match
Relational database support Native support for MySQL, Oracle, PostgreSQL, SQLServer and
heterogeneous switching can be used at the same time
Supports Mysql and Oracle. Simultaneous use and heterogeneous switching are not supported.
cache database Supports Redis 5-7 and supports most new features such as distributed current limiting and distributed queues Redis simple get set support
Redis client Adopt Redisson Redis officially recommends client tools based on Netty.
Supports more than 90% of Redis commands. The underlying optimization avoids many incorrect usages. For example: keys are converted to scan.
Supports stand-alone, sentinel, single-master cluster, multi-master cluster and other modes.
Lettuce + RedisTemplate supports few modes and the tools are cumbersome to use.
The connection pool uses common-pool, which often causes problems due to bugs.
Caching annotations The Spring-Cache annotation is used to extend the implementation and support more functions,
such as expiration time, maximum idle time group, maximum length, etc. Only one annotation is needed to complete automatic data caching.
Redis code logic needs to be written manually
ORM framework Using Mybatis-Plus, it is object-based with almost no need to write SQL and full Java operation. There are many powerful plug-ins,
such as multi-tenant plug-in, paging plug-in, optimistic lock plug-in, etc.
Using Mybatis based on XML requires handwritten SQL
SQL monitoring Use p6spy to output complete SQL and execute time monitoring Log output requires manual splicing of sql and parameters, and debugging problems cannot be quickly viewed
Data paging The Mybatis-Plus paging plug-in
framework is used to extend it. The object-based paging object supports multiple ways of passing parameters. It supports front-end multi-sorting and complex sorting.
Using PageHelper only supports single query. Pagination parameters can only be passed from param. Only single sorting function is available. Poor scalability and poor experience.
data permission Use the Mybatis-Plus plug-in to self-analyze and splice SQL. Non-inductive filtering.
Just set the annotation conditions for the Mapper. Supports multiple customizations and is not limited to department roles.
Using annotations + aop to generate SQL based on department roles has poor compatibility and does not support other business extensions.
After generating SQL, it needs to be manually spliced ​​into specific business SQL. It does not work for multiple Mapper queries.
Data desensitization Using annotations + jackson desensitization during serialization supports different desensitization conditions for different modules. Supports
multiple strategies such as ID cards, mobile phone numbers, addresses, email addresses, bank cards, etc. and can be expanded by itself.
none
Data encryption and decryption Use annotations + mybatis interceptor to automatically encrypt and decrypt data during data access.
Supports multiple strategies such as BASE64, AES, RSA, SM2, SM4, etc.
none
Data translation Use annotations + jackson to dynamically modify data for translation during serialization.
Support multiple modes: 映射翻译 直接翻译 其他扩展条件翻译custom expansion can be completed in two steps through interface and built-in multiple translation implementations
none
Multiple data source framework Use dynamic-datasource to support most databases in the world.
You can dynamically manage heterogeneous databases of different types through yml configuration. You can also add data sources through the front-end page.
Support spel expressions to switch data sources from request header parameters and other conditions.
Manually writing code to configure data sources based on druid is cumbersome and has poor support.
Multiple data source transactions Use dynamic-datasource to support different types of database transaction rollback from multiple data sources not support
Database connection pool Using HikariCP Spring's official built-in connection pool, the configuration is simple and famous for its performance and stability. Use druid bugs, many community maintenance, poor activity and low configuration, many cumbersome configurations, average performance
Database primary key Using Snowflake ID to grow unique IDs in an orderly manner based on timestamps, you no longer have to worry about merging primary key conflicts and duplication of data in sub-databases and sub-tables. Uses database auto-increment ID to support limited data volume and does not support unique primary keys from multiple data sources.
WebSocket protocol The WebSocket protocol encapsulated by Spring extends Token authentication and distributed session synchronization. It is no longer just a waste based on a single machine. none
Serialization Using Jackson Spring’s official built-in serialization is reliable!!! Using fastjson bugjson is famous far and wide
Distributed idempotence Refer to the simplified implementation of Meituan GTIS anti-gravity system (see the document for details) Manually written annotations are implemented based on aop
Distributed task scheduling Using PowerJob, it naturally supports distributed and unified management center. The bottom layer is based on JPA and supports multiple databases. Using Quartz, a cluster with poor database lock performance requires a lot of configuration and modifications.
Distributed log center Use ELK's industry-proven solution to collect the running logs of all services in real time to quickly identify and locate problems. none
Distributed search engine 采用 ElasticSearch、Easy-Es 以 Mybatis-Plus 方式操作 ElasticSearch
分布式消息队列 采用 SpringCloud-Stream 支持 Kafka、RocketMQ、RabbitMQ
分库分表功能 采用 Apache Sharding-Proxy 代理服务无入侵支持分库分表 只需编写分库分表规则即可
文件存储 采用 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代码。 支持 支持
使用案例 系统的一些功能案例 支持 不支持

Guess you like

Origin www.oschina.net/news/266532/ruoyi-cloud-plus-2-1-1-released