RuoYi-Cloud-Plus lanza 2.1.1. Se recomienda una gran cantidad de optimizaciones de código y correcciones de errores para la actualización.


Registro de cambios

Actualización de dependencia

  • actualizar springboot 3.1.3 => 3.1.5

  • actualizar springboot 2.7.14 => 2.7.17 (servicio extendido)

  • actualizar springboot-admin 3.1.5 => 3.1.7

  • actualizar satoken 1.35.0.RC => 1.37.0

  • actualizar mybatis-plus 3.5.3.2 => 3.5.4 Adaptarse a la nueva versión de mp cambios

  • actualizar dinámica-ds 4.1.3 => 4.2.0

  • actualizar castillo hinchable 1.72 => 1.76

  • actualizar poi 5.2.3 => 5.2.4

  • actualizar redisson 3.23.2 => 3.24.1

  • actualizar hutool 5.8.20 => 5.8.22

  • actualizar lombok 1.18.26 => 1.18.30 (Adaptado para soportar jdk21)

  • actualizar vue-quill 1.1.0 => 1.2.0

  • actualizar asiento 1.7.0 => 1.7.1

  • actualizar dubbo 3.2.5 => 3.2.7

Actualizaciones de funciones

  • Actualización: Optimice y elimine métodos irrazonables. Se recomienda integrar directamente el complemento para enviar correos electrónicos con archivos adjuntos.

  • La actualización optimiza el problema entre dominios de llevar clientid.

  • La actualización optimiza el interceptor de permisos de datos para priorizar si el método es efectivo, mejorar el rendimiento y reducir el análisis de SQL inútil.

  • La actualización optimiza y se adapta a la nueva versión de Maxkey.

  • actualice Optimice la desensibilización @Sensitive y agregue verificación de roles y permisos (Gracias Pangu por darle un hacha)

  • La actualización optimiza los permisos de datos del departamento y utiliza el plan de encubrimiento predeterminado.

  • la actualización optimiza y cambia el nivel de registro predeterminado a información para evitar demasiados registros (habilite la depuración según sea necesario)

  • actualizar Optimizar la optimización del código de la estrategia de inicio de sesión (gracias a David Wei)

  • la actualización optimiza y completa el código para generar columnList faltan anotaciones de parámetros de interfaz

  • La actualización optimiza la configuración de nginx para admitir websocket.

  • la actualización optimiza el aviso, agrega nuevos avisos y anuncios y envía ws push

  • La actualización optimiza el módulo websocket para reducir la salida de registros y aumentar el inicio de sesión.

  • La actualización optimiza y reconstruye la estrategia de inicio de sesión para aumentar la escalabilidad y reducir la complejidad.

  • La actualización optimiza AddressUtils para que sea compatible con la dirección IP local del sistema Linux.

  • La actualización optimiza y completa los datos del departamento de registro de operaciones.

  • La actualización optimiza las operaciones de la base de datos para admitir el cambio de inquilinos en entornos no web.

  • La actualización optimiza y excluye dependencias inútiles de powerjob y reduce el tamaño del paquete en 30 millones.

  • La actualización optimiza la eliminación de la configuración de tiempo de satoken yml. Esta función se ha migrado a la gestión de clientes.

  • optimización de actualización anotación del modo de clúster redis

  • La actualización optimiza las restricciones de desactivación del cliente.

  • actualizar Optimizar el registro de inicio de sesión, mostrar información del usuario en línea (agregar cliente, tipo de dispositivo) (Gracias a MichelleChung)

  • La actualización optimiza la versión fastjson en el marco de restricción.

  • La actualización optimiza los permisos de datos para reducir las consultas de verificación secundaria.

  • La actualización optimiza el almacenamiento de ID de departamento en tokens para evitar consultas excesivas de Redis.

  • la actualización optimiza y agrega el ID del inquilino al registro de errores nulos

  • actualización: Optimice la lista de registros de operaciones y agregue una consulta de dirección IP

  • La actualización optimiza la obtención del cuerpo de retorno de la interfaz clave-valor a través del nombre de la clave del parámetro (gracias a David Wei)

  • La actualización optimiza la adición de estilos al diccionario sys_grant_type.

  • La actualización optimiza el estilo del cuadro de entrada de la página de generación de código.

  • La actualización optimiza las consultas de paginación de servicio completo y agrega reglas de clasificación para evitar problemas de desorden causados ​​por las condiciones de dónde.

  • Actualización: Optimice el problema de verificación forzada del ID del inquilino de la interfaz de inicio de sesión

  • La actualización optimiza el módulo de cifrado para admitir el uso unificado de anotaciones de cifrado por parte de las clases principales (gracias a Tyler Ge).

  • update optimiza la actualización de la imagen graalvm a la imagen openjdk. Aquellos que la necesiten pueden cambiar por sí mismos.

  • Actualización: Optimice la configuración aleatoria de permisos de algunos usuarios, lo que resulta en la imposibilidad de obtener información del usuario. Agregue solicitudes de permiso.

  • La actualización optimiza la visualización y ocultación de widgets de las columnas de la tabla (gracias a bestrevens).

  • actualizar Optimizar y agregar instrucciones que no se pueden utilizar para la construcción de formularios

  • actualizar Optimice el componente Editor de texto enriquecido para verificar el formato de la imagen

  • actualización: Optimice la lista de registros de operaciones y agregue una consulta de dirección IP

  • La actualización optimiza el tipo de gestión del menú para que el estado del botón sea opcional.

  • La actualización optimiza la consulta de contraseña inicial del usuario desde la configuración de parámetros.

  • La actualización optimiza la obtención del cuerpo de retorno de la interfaz clave-valor a través del nombre de la clave del parámetro (gracias a David Wei)

  • La actualización optimiza las etiquetas del diccionario para admitir matrices y múltiples etiquetas (gracias a Frog Catcher)

nuevas características

  • agregar nueva función de envío de grupo websocket

  • agregue un nuevo acceso frontal a websocket para recibir mensajes (gracias a Sansan)

  • agregar agrega interfaz e implementación de envío de mensajes rpc

  • agregue una nueva interfaz de monitoreo de caché CacheController Redis (gracias a Michelle.Chung)

Corrección de errores

  • solución: solucione el problema de que la escritura de registros del paquete web común no se puede introducir porque el servicio extendido no es compatible con boot3 y no tiene efecto.

  • solucionar solucionar el problema de la falta de herramienta druida en el modo seata XA

  • solución: solucione el problema de excepción comercial causado por la imposibilidad de conexión del servicio oss. La consulta no debería afectar la empresa.

  • arreglar Se solucionó el problema de clave anidada causado por la incapacidad de hacer coincidir cadenas cuando la identificación del inquilino es nula

  • solucionar Solucionar el problema de fallo de clasificación de orderNum en la gestión de departamentos

  • fix Solucionar la excepción que ocurre en el puerto del enlace externo

  • solución: solucione el problema del uso no autorizado del código de administrador integrado al editar caracteres comunes.

  • arreglar Solucione el problema de que si se requiere generación de código no coincide con la base de datos

  • solución: solucione el problema de que la interfaz de registro de usuarios no distingue entre inquilinos al verificar los nombres de usuarios.

  • solución: soluciona el problema de que la verificación no surta efecto debido a que se agregó un grupo por error

  • arreglar Solucionar el problema de agregar una nueva identificación de clave primaria de verificación

  • solucionar Solucione el problema de que no se puede acceder a powerjob mediante la implementación de nginx

  • arreglar Corrija el error de uso de etiquetas en SysUserMapper (no afecta el uso)

  • solución: corrija los datos incompletos enviados a redis después de agregar o editar datos de SysOssConfig

  • corregir Corrija el error al usar variables de consulta al generar tablas de árbol

  • Solución: corrija la interfaz de cambio de contraseña de información personal para ocultar el texto claro de los parámetros de contraseña nuevos y antiguos (gracias a blanqueador)

  • fix soluciona el problema de que * update sql no se actualiza después de eliminar un campo

  • solucionar Solucione el problema de falta de coincidencia entre la fuente de Alipay de inicio de sesión de terceros y el código comercial real de Alipay

  • arreglar Solucionar el problema de caché de enrutamiento de nivel cinco no válido

  • arreglar Solucionar el problema del iframe del enlace interno que no pasa parámetros

  • arreglar Se corrige la vinculación del parámetro de cuenta de terceros "wechar" a "wechat" (gracias a scmiot)

  • arreglar Solucionar el problema de falta de clientid en el registro de usuario

  • arreglar Solucione el problema de los parámetros de consulta faltantes en el salto del componente HeaderSearch

  • solucionar Solucione el problema de que el estilo de diccionario personalizado no surte efecto

  • arreglar Solucione el problema de que la carga de la página de inicio de sesión no está cerrada

Introducción a la plataforma

RuoYi-Cloud-Plus 微服务通用权限管理系统reescribe RuoYi-Cloud para actualizarlo por completo (no es compatible con el marco original)

El código y los documentos del proyecto son todos de código abierto, gratuitos y se pueden utilizar comercialmente. Simplemente siga el acuerdo de código abierto y mantenga los archivos del acuerdo de código abierto en el proyecto.
Viva hasta que sea viejo y escriba hasta que sea viejo. Código abierto para los interesados Código abierto para el aprendizaje Código abierto para que todos puedan aprender realmente sobre tecnología.

Demostración del sistema: https://plus-doc.dromara.org/#/common/demo_system

Dirección del proyecto front-end: https://gitee.com/JavaLionLi/plus-ui

Dirección del documento: https://plus-doc.dromara.org

Diferencias funcionales entre este marco y RuoYi

Función este marco RuoYi
Proyecto inicial
Reescriba Vue3 + TS + ElementPlus según el proyecto de código abierto vue3-element-admin
Basado en Vue2/Vue3 + JS
Estructura del proyecto de back-end Desacoplamiento estructural en forma de complementos + paquetes de expansión para una fácil expansión Los módulos se inyectan entre sí y el acoplamiento es muy difícil de ampliar.
Estilo de código de fondo Formato de código que cumple estrictamente con las especificaciones de Alibaba y la configuración unificada del proyecto. La escritura de código es diferente de las estructuras convencionales, lo que provoca dificultades de lectura.
Centro de registro distribuido Al utilizar la integración del código fuente de Alibaba Nacos para facilitar las extensiones de depuración y el marco de desarrollo secundario, se le han agregado varios monitoreos. Usar Alibaba Nacos para crear una versión puramente oficial usted mismo no es confiable
Centro de configuración distribuida Al utilizar la integración del código fuente de Alibaba Nacos para facilitar las extensiones de depuración y el marco de desarrollo secundario, se le han agregado varios monitoreos. Usar Alibaba Nacos para crear una versión puramente oficial usted mismo no es confiable
puerta de enlace de servicio El marco SpringCloud Gateway se utiliza para ampliar una variedad de funciones
, como: autenticación de intranet, almacenamiento en caché del cuerpo de la solicitud, configuración entre dominios, registro de respuesta de solicitudes, etc.
Usar SpringCloud Gateway tiene una única función
balanceo de carga La extensión SpringCloud Loadbalancer admite el enrutamiento del equipo de desarrollo para facilitar el desarrollo y la depuración entre varios equipos. Usar SpringCloud Loadbalancer tiene una única función
llamada remota RPC Utilizando el nuevo Apache Dubbo 3.X, no hace falta decir que tiene una larga historia. Al utilizar el método de escritura simulada con funciones limitadas, la red fluctúa mucho y es inestable.
Fusible limitador de corriente distribuida Utiliza la integración del código fuente de Alibaba Sentinel para facilitar las extensiones de depuración y el marco de desarrollo secundario, y también agrega varios monitoreos. Usar Alibaba Sentinel para crear una versión puramente oficial usted mismo no es confiable
Transacciones distribuidas Uso de la integración del código fuente de Alibaba Seata para conectar Nacos y varios monitoreos para simplificar el proceso de construcción e implementación. Usar Alibaba Seata para crear una versión puramente oficial usted mismo es engorroso y Nacos no está vinculado a los métodos de uso extraños en el código.
contenedor web Usando Undertow, un contenedor de alto rendimiento basado en XNIO Usando Tomcat
Autenticación de autoridad Usando Sa-Token y Jwt, uso estático, funciones completas, bajo acoplamiento y alta escalabilidad Spring Security tiene una configuración engorrosa y una escalabilidad extremadamente pobre
Anotación de permiso Utilice Sa-Token para admitir la verificación de inicio de sesión con anotaciones, verificación de roles, verificación de permisos, verificación de autenticación secundaria, verificación HttpBasic, verificación de ignorar. La
verificación de roles y permisos admite múltiples condiciones, como AND ORo 权限 OR 角色y otras expresiones complejas.
Solo admite si hay una coincidencia
Soporte de bases de datos relacionales
Se puede utilizar al mismo tiempo soporte nativo para MySQL, Oracle, PostgreSQL, SQLServer y conmutación heterogénea.
Admite Mysql y Oracle. No se admiten el uso simultáneo ni la conmutación heterogénea.
base de datos caché Admite Redis 5-7 y admite la mayoría de las funciones nuevas, como limitación de corriente distribuida y colas distribuidas Redis simple obtiene soporte para configurar
Cliente Redis Adopte Redisson Redis recomienda oficialmente herramientas de cliente basadas en Netty.
Admite más del 90 % de los comandos de Redis. La optimización subyacente evita muchos usos incorrectos. Por ejemplo: las claves se convierten en escaneo.
Admite clúster independiente, centinela, de un solo maestro, multi -Clúster maestro y otros modos.
Lettuce + RedisTemplate admite pocos modos y las herramientas son engorrosas de usar.
El grupo de conexiones utiliza un grupo común, lo que a menudo causa problemas debido a errores.
Anotaciones en caché La anotación Spring-Cache se utiliza para ampliar la implementación y admitir más funciones,
como el tiempo de vencimiento, el grupo de tiempo de inactividad máximo, la longitud máxima, etc. Solo se necesita una anotación para completar el almacenamiento en caché automático de datos.
La lógica del código de Redis debe escribirse manualmente
marco ORM Usando Mybatis-Plus, está basado en objetos y casi no necesita escribir SQL y operación completa de Java. Hay muchos complementos potentes,
como complementos multiinquilino, complementos de paginación, complementos de bloqueo optimista, etc.
El uso de Mybatis basado en XML requiere SQL escrito a mano
Monitoreo de SQL Utilice p6spy para generar SQL completo y ejecutar el monitoreo del tiempo La salida del registro requiere la unión manual de SQL y parámetros, y los problemas de depuración no se pueden ver rápidamente
paginación de datos
Para ampliarlo, se utiliza el marco del complemento de paginación Mybatis-Plus . El objeto de paginación basado en objetos admite múltiples formas de pasar parámetros y admite clasificación múltiple y compleja de front-end.
El uso de PageHelper solo admite consultas únicas. Los parámetros de paginación solo se pueden pasar desde param. Solo está disponible la función de clasificación única. Poca escalabilidad y mala experiencia.
permiso de datos Utilice el complemento Mybatis-Plus para autoanalizar y empalmar SQL. Filtrado no inductivo.
Simplemente establezca las condiciones de anotación para Mapper. Admite múltiples personalizaciones y no se limita a roles de departamento.
El uso de anotaciones + aop para generar SQL basado en roles de departamento tiene poca compatibilidad y no admite otras extensiones comerciales.
Después de generar SQL, debe fusionarse manualmente en SQL comercial específico y no funciona para múltiples consultas de Mapper.
Desensibilización de datos El uso de anotaciones + desensibilización de Jackson durante la serialización admite diferentes condiciones de desensibilización para diferentes módulos. Admite múltiples
estrategias, como tarjetas de identificación, números de teléfonos móviles, direcciones, direcciones de correo electrónico, tarjetas bancarias, etc., y se puede expandir por sí mismo.
ninguno
Cifrado y descifrado de datos Utilice anotaciones + interceptor mybatis para cifrar y descifrar datos automáticamente durante el acceso a los datos.
Admite múltiples estrategias como BASE64, AES, RSA, SM2, SM4, etc.
ninguno
Traducción de datos Utilice anotaciones + jackson para modificar dinámicamente los datos para la traducción durante la serialización.
Admite múltiples modos: 映射翻译 直接翻译 其他扩展条件翻译la expansión personalizada se puede completar en dos pasos a través de la interfaz y múltiples implementaciones de traducción integradas.
ninguno
Marco de múltiples fuentes de datos Utilice la fuente de datos dinámica para admitir la mayoría de las bases de datos del mundo.
Puede administrar dinámicamente bases de datos heterogéneas de diferentes tipos a través de la configuración yml. También puede agregar fuentes de datos a través de la página de inicio.
Admite expresiones ortográficas para cambiar las fuentes de datos desde los parámetros del encabezado de solicitud y otras condiciones.
Escribir código manualmente para configurar fuentes de datos basadas en druid es engorroso y tiene poco soporte.
Múltiples transacciones de fuentes de datos Utilice una fuente de datos dinámica para admitir diferentes tipos de reversión de transacciones de bases de datos desde múltiples fuentes de datos no apoyo
Grupo de conexiones de base de datos Al utilizar el grupo de conexiones integrado oficial de HikariCP Spring, la configuración es simple y famosa por su rendimiento y estabilidad. Adopte errores druidas, mucho mantenimiento comunitario, actividad deficiente y configuración baja, muchas configuraciones engorrosas, rendimiento promedio
Clave primaria de la base de datos Al utilizar Snowflake ID para generar ID únicas de manera ordenada en función de marcas de tiempo, ya no tendrá que preocuparse por fusionar conflictos de claves primarias y duplicar datos en subbases de datos y subtablas. Utiliza ID de incremento automático de la base de datos para admitir un volumen de datos limitado y no admite claves primarias únicas de múltiples fuentes de datos.
Protocolo WebSocket El protocolo WebSocket encapsulado por Spring amplía la autenticación de tokens y la sincronización de sesiones distribuidas, y ya no es solo un desperdicio basado en una sola máquina. ninguno
Publicación por entregas ¡¡¡Usar la serialización oficial incorporada de Jackson Spring es confiable!!! El uso de fastjson bugjson es famoso en todas partes
Idempotencia distribuida Consulte la implementación simplificada del sistema antigravedad Meituan GTIS (consulte el documento para obtener más detalles) Las anotaciones escritas manualmente se implementan según aop
Programación de tareas distribuidas Al usar PowerJob, naturalmente admite un centro de administración distribuido y unificado. La capa inferior se basa en JPA y admite múltiples bases de datos. Al utilizar Quartz, un clúster con un rendimiento de bloqueo de base de datos deficiente requiere mucha configuración y modificaciones.
Centro de registro distribuido Utilice la solución probada en la industria de ELK para recopilar los registros de ejecución de todos los servicios en tiempo real para identificar y localizar problemas rápidamente. ninguno
Motor de búsqueda distribuido 采用 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代码。 支持 支持
使用案例 系统的一些功能案例 支持 不支持

Supongo que te gusta

Origin www.oschina.net/news/266532/ruoyi-cloud-plus-2-1-1-released
Recomendado
Clasificación