RuoYi-Cloud-Plus releases 1.8.2 and officially enters maintenance status

Change log

Version status description

Since springboot 2.X and vue 2.X have officially announced that they will stop maintenance, the framework version 1.X has entered maintenance status (only dealing with problems and not updating functions)

Estimated maintenance stop time: June-October 2024. It will be determined dynamically based on the number of users. This version is already quite stable and will not affect use even if the functions are not updated.

If you still choose to use jdk8 or jdk11, you can use this version with confidence. If you want to use jdk17 or jdk21, you can choose to use the 2.X branch.

Dependency upgrade

  • update springboot 2.7.16 => 2.7.18 upgrade to 2.X final version (officially discontinued)

  • update mybatis-plus => 3.5.4

  • update to 1.36.0 => 1.37.0

  • update hutool 5.8.20 => 5.8.22

  • update aws-java-sdk-s3 1.12.400 => 1.12.540

  • update vue-quill 1.1.0 => 1.2.0

Feature updates

  • Update optimization page description about permission identifiers

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

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

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

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

  • update optimizes the operation log department information and improves it

  • update optimizes data permissions to reduce secondary verification queries

  • update Modify the problem of inconsistency between obtaining user token and the backend (thanks to bestrevens)

  • update optimizes vue3 version user initial password query from dictionary

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

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

  • update optimizes the global data storage user number

  • update optimizes menu management type to be button state optional

Bug fixes

  • fix Fix the problem of multiple concurrent creation instances of OssFactory

  • fix Fix field writing errors on demo page

  • fix: update delete reports null after data permission optimization

  • fix Fix the issue of invalid level five routing cache

  • fix fix oss service cannot connect

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

  • 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 of missing druid tool in seata XA mode

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

  • fix Fix the rich text upload interface address error

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

  • fix Fix the assignment error of new method in tree structure code generation

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:

Front-end project address:

Document address:

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.
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.
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
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 Use ElasticSearch, Easy-Es and Mybatis-Plus to operate ElasticSearch none
Distributed message queue Using SpringCloud-Stream to support Kafka, RocketMQ, RabbitMQ none
Sub-database and sub-table function Adopt Apache Sharding-Proxy proxy service without intrusion to support sharding of databases and tables. You only need to write rules for sharding databases and tables. none
File storage Using Minio distributed file storage, it inherently supports multi-machine, multi-hard disk, multi-shard, and multi-copy storage. It
supports permission management and is safe and reliable. Files can be encrypted for storage.
Using native files to store naked files is easy to lose and leak. It does not support clusters and has a single point effect.
cloud storage The AWS S3 protocol client supports Qiniu, Alibaba, Tencent and other manufacturers that support the S3 protocol. not support
Short message Support Alibaba and Tencent. You only need to configure the manufacturer key in yml to use interface support to expand other manufacturers. not support
mail Use mail-api common protocol to support most email vendors not support
Interface documentation Using SpringDoc and javadoc, no annotations and zero intrusion. Based on java annotations,
you only need to write the annotations without having to write a lot of document annotations.
Using Springfox has stopped maintenance and requires writing a large number of annotations to support document generation.
Validation frame Use Validation to support annotations and tool verification annotations to support internationalization Only annotations are supported and annotations do not support internationalization.
Excel framework Using Alibaba EasyExcel based on the plug-in
framework, many functions have been added to it, such as automatic merging of the same content, automatic arrangement, layout, dictionary translation, etc.
Based on POI handwriting, the functions are limited, complex and have poor scalability.
Tool framework Use hundreds of tools such as Hutool and Lombok to cover 90% of usage requirements. Automatically generate a large amount of code for simplified frameworks such as get set based on annotations. Handwriting tools have poor stability and are prone to problems. The number of tools is limited and the code is bloated. You need to write get, set, etc. by hand.
Service monitoring framework Using SpringBoot-Admin, based on SpringBoot official actuator probe mechanism,
the real-time monitoring service status framework also extends online log viewing and monitoring.
Comprehensive monitoring and alarming Use Prometheus and Grafana to diversify collection, multiple templates, large-screen display, real-time alarm monitoring, and provide detailed construction documents. none
link tracing Using Apache SkyWalking, are you still worried about where the request went and went wrong?
With it, you can view every node that the request passes through in real time.
Code generator Just design the table structure and generate all CRUD codes and pages with one click.
Reduce 80% of the development effort and focus on business design.
The framework adapts MP and SpringDoc standardized codes and supports dynamic multi-data source code generation.
The native structure of code generation only supports single data source generation.
Deployment method Support Docker orchestration to build all environments with one click, so developers no longer have to worry about setting up environments. To deploy native jar to other environments, you need to manually download and install it and build it yourself.
Project path modification Provide detailed modification plan documents and make some changes to it. It is very easy to modify it to what you want. Needs a lot of modifications and limited documentation
globalization Dynamically returning text content in different languages ​​based on request headers is easy to develop and has corresponding tool classes to support the internationalization of most annotation content. Only basic functions are provided, other extensions need to be written by yourself
Code single case test Provides single-case test writing methods and maven multi-environment single test plug-ins Only basic functions are provided, other extensions need to be written by yourself
Demo case Providing practical use cases for framework functionality A single module provides many very comprehensive none

Business differences between this framework and RuoYi

business Function Description this framework RuoYi
Tenant management Management of tenants in the system such as: tenant packages, expiration time, number of users, enterprise information, etc. support none
Tenant package management 系统内租户所能使用的套餐管理 如:套餐内所包含的菜单等 支持
用户管理 用户的管理配置 如:新增用户、分配用户所属部门、角色、岗位等 支持 支持
部门管理 配置系统组织机构(公司、部门、小组) 树结构展现支持数据权限 支持 支持
岗位管理 配置系统用户所属担任职务 支持 支持
菜单管理 配置系统菜单、操作权限、按钮权限标识等 支持 支持
角色管理 角色菜单权限分配、设置角色按机构进行数据范围权限划分 支持 支持
字典管理 对系统中经常使用的一些较为固定的数据进行维护 支持 支持
参数管理 对系统动态配置常用参数 支持 支持
通知公告 系统通知公告信息发布维护 支持 支持
操作日志 系统正常操作日志记录和查询 系统异常信息日志记录和查询 支持 支持
登录日志 系统登录日志记录查询包含登录异常 支持 支持
文件管理 系统文件展示、上传、下载、删除等管理 支持
文件配置管理 系统文件上传、下载所需要的配置信息动态添加、修改、删除等管理 支持
在线用户管理 已登录系统的在线用户信息监控与强制踢出操作 支持 支持
定时任务 运行报表、任务管理(添加、修改、删除)、日志管理、执行器管理等 支持 仅支持任务与日志管理
代码生成 多数据源前后端代码的生成(java、html、xml、sql)支持CRUD下载 支持 仅支持单数据源
系统接口 根据业务代码自动生成相关的api接口文档 支持 支持
服务监控 监视集群系统CPU、内存、磁盘、堆栈、在线日志、Spring相关配置等 支持 仅支持单机CPU、内存、磁盘监控
缓存监控 对系统的缓存信息查询,命令统计等。 支持 支持
在线构建器 拖动表单元素生成相应的HTML代码。 支持 支持
使用案例 系统的一些功能案例 支持 不支持

Guess you like