Dromara RuoYi-Vue-Plus — это переработанный RuoYi-Vue, который полностью обновлен для сценариев распределенных кластеров и многопользовательских систем (не совместим с оригинальной архитектурой).
Исходный код проекта и документация являются открытыми и бесплатными для коммерческого использования, при условии соблюдения условий открытых лицензий.
Система демонстрации: ссылка
Официальный фронтенд проекта: plus-ui
Проект фронтенда участников: на основе vben5 ruoyi-plus-vben5> Документация: plus-doc
MaxKey — ведущий продукт единого входа в отрасли - https://gitee.com/dromara/MaxKey
CCFlow — низко-кодовое решение для процессов и форм - https://gitee.com/opencc/RuoYi-JFlow
Shuduokeji — разработка программного обеспечения, мобильных приложений и веб-приложений - http://www.shuduokeji.com/
Jnpfsoft — платформа разработки программного обеспечения - https://www.jnpfsoft.com/index.html?from=plus-doc
Qishan Mall System — исходный код многосайтового магазина, который можно использовать бесплатно и дорабатывать - https://www.73app.cn/
Как стать спонсором — присоединяйтесь к группе для обсуждения с автором
Функция | Этот фреймворк | RuoYi |
---|---|---|
Передний проект | Использует Vue3 + TS + ElementPlus | Основан на Vue2/Vue3 + JS |
Структура проекта | Использует плагинизацию + расширяемые пакеты, структура декомпозирована, легко расширяема | Модули сильно связаны между собой, что затрудняет расширение |
Стиль кода | Тщательно следует стандартам Alibaba и проектной конфигурации форматирования кода | Стиль написания кода отличается от обычной структуры, что затрудняет чтение |
Web-контейнер | Использует Undertow, высокопроизводительный контейнер на основе XNIO | Использует Tomcat |
Проверка прав | Использует Sa-Token, Jwt, статическая проверка с полным набором функций, низкая связанность, высокая расширяемость | Spring Security, сложная в конфигурации, очень плохая расширяемость |
Третье-сторонняя проверка | Использует JustAuth, компонент для входа с использованием третьих сторон, поддерживает вход с WeChat, DingTalk и другими десятками сервисов | Нет |
Поддержка реляционных баз данных | Нативная поддержка MySQL, Oracle, PostgreSQL, SQLServer Поддержка одновременного использования гетерогенных баз (поддерживает все базы, поддерживаемые mybatis-plus, достаточно добавить зависимости JDBC) |
Поддержка MySQL, Oracle, одновременное использование не поддерживается, гетерогенные базы не поддерживаются |
Кэш-база данных | Поддержка Redis 5-7, поддержка большинства новых функциональных возможностей, таких как распределенное ограничение скорости, распределенная очередь | Поддержка Redis простых get/set |
Кэш-аннотации | Использует аннотации Spring-Cache, расширенные для поддержки большего количества функций Например, срок годности, максимальное время простоя, максимальная длина группы и т. д., всего один аннотация для автоматического кэширования данных |
Необходимо ручное написание логики Redis |
ORM-фреймворк | Использует Mybatis-Plus, основан на объектах, практически не требует написания SQL, полный Java-интерфейс, мощные функции, множество плагинов Например, плагины многопользовательской аренды, плагины пагинации, плагины оптимистической блокировки и т. д. |
Использует Mybatis, основан на XML, требует ручного написания SQL |
Мониторинг SQL | Использует p6spy, выводит полные SQL и мониторинг времени выполнения | Лог-вывод, требуется ручное объединение SQL и параметров, затруднительно быстро просматривать и отлаживать проблемы |
Денежные переводы | Использует аннотации и Jackson для деанонимизации данных во время сериализации. Поддерживает различные условия деанонимизации для разных модулей. Поддерживает различные стратегии, такие как ИНН, номер телефона, адрес, электронная почта, банковская карта и т. д. Можно расширять самостоятельно. | Нет |
Шифрование передачи данных | Использует динамическое шифрование AES и RSA для шифрования тела запроса. Ключ для каждого запроса уникален, что значительно снижает возможность его взлома. | Нет |
Перевод данных | Использует аннотации и Jackson для динамического изменения данных во время сериализации. Поддерживает различные режимы перевода: "переменная", "прямая", "расширенные условия". Два шага через интерфейс позволяют легко расширяться. Включает множество встроенных реализаций перевода. | Нет |
Фреймворк для работы с несколькими источниками данных | Использует dynamic-datasource для поддержки большинства доступных на рынке баз данных. Управление динамическим изменением различных типов баз данных возможно через конфигурацию YAML или через фронтенд-страницу. Поддерживает выражения SPEL для переключения источников данных на основе параметров заголовка запроса. | Основан на druid с ручной конфигурацией данных. Конфигурация сложна и имеет ограниченную поддержку. |
Транзакции с нескольким источниками данных | Использует dynamic-datasource для поддержки транзакций с несколькими источниками данных различных типов. | |
База данных первичный ключ | Используется снегурID, основанный на отметках времени, упорядоченный рост, уникальный ID, больше не придется беспокоиться о конфликтах и повторениях ключей при разделении базы данных на несколько таблиц | Используется автоинкрементный ID базы данных, поддерживает ограниченный объем данных, не поддерживает уникальный ключ для нескольких источников данных |
WebSocket протокол | Основан на WebSocket протоколе, упакованном в Spring, расширен для аутентификации токенов и синхронизации распределенных сессий, больше не просто бесполезный для одного компьютера | Отсутствует |
SSE отправка | Используется Spring SSE реализация, расширенная для аутентификации токенов и синхронизации распределенных сессий | Отсутствует |
Сериализация | Используется Jackson, официально встроенный в Spring сериализацией, надежна! | Используется fastjson, известна своими багами |
Распределенная атомарность | Вдохновленная система предотвращения повторений в системе GTIS Meituan (подробности см. | Тип документации |
--- | --- | |
Распределенная блокировка | Используется Lock4j, основанная на Redisson | Отсутствует |
Распределенная задача планирование | Используется SnailJob, врожденная поддержка распределения, единый центр управления, поддерживает множество баз данных, поддерживает фрагментацию, повторные попытки DAG задачи и т. д. | Используется Quartz, основанный на блоках базы данных, плохая производительность, требуется много настроек и модификаций для кластера |
Хранение файлов | Использует Minio для распределенного хранения файлов, поддерживает работу на нескольких машинах, нескольких дисках, с несколькими фрагментами и репликами. Поддерживает управление правами доступа, безопасно и надежно, файлы могут быть зашифрованы. | Использует локальное хранение файлов, файлы не защищены, легко потерять или утечь, не поддерживает кластеры, имеет одиночную точку отказа |
Облачное хранение | Использует клиент AWS S3 протокола, поддерживает Qiniu, Alibaba, Tencent и другие производители, поддерживающие протокол S3. | Не поддерживается |
SMS | Использует пакет интеграции SMS4J, поддерживает десятки производителей SMS, достаточно настроить ключи безопасности в yml, можно использовать несколько производителей. | Не поддерживается |
Документация API | Использует SpringDoc, javadoc, без необходимости в дополнительных аннотациях, основан на Java аннотациях. Необходимо только правильно написать аннотации, не нужно писать большое количество дополнительных аннотаций для документации. | Использует Springfox, который больше не поддерживается, требуется написать большое количество аннотаций для поддержки генерации документации. |
Фреймворк валидации | Использует Validation, поддерживает аннотации и классы-инструменты для валидации, аннотации поддерживают интернационализацию. | Поддерживает только аннотации, аннотации не поддерживают интернационализацию. |
Фреймворк Excel | Использует Alibaba EasyExcel, основан на плагинах, к нему добавлены многие функции, такие как автоматическое объединение одинаковых данных, автоматическое расположение, перевод словарей и т. д. | Основан на POI, реализован вручную, функции ограничены, сложен, плохая расширяемость. |
Поддержка рабочих процессов | Поддерживает различные сложные процессы утверждения, передачи, делегирования, добавления/удаления подписей, совместного утверждения, голосования и т. д. | Нет. |
Мониторинговый фреймворк | Использует SpringBoot-Admin, основанный на официальном actuator механизме SpringBoot. В реальном времени отслеживает состояние сервиса, фреймворк также предоставляет возможность просмотра логов в режиме онлайн. | Отсутствует. |
Трассировка транзакций | Использует Apache SkyWalking. Больше не нужно беспокоиться, куда уходят запросы или где возникают проблемы. Оно позволяет в реальном времени просматривать каждый узел, через который проходит запрос. | Отсутствует. |
Генератор кода | Необходимо только правильно спроектировать структуру таблицы, после чего можно сгенерировать все CRUD коды и страницы одним щелчком мыши. Уменьшает объем разработки на 80%, позволяя сосредоточиться на дизайне бизнес-процессов. Фреймворк адаптирован к MP, SpringDoc для нормализации кода, поддерживает генерацию кода для динамических многоданных источников. | Генерация исходной структуры кода, поддерживает только генерацию для одного источника данных. |
Изменение пути проекта | Предоставляет подробное руководство по изменению и делает некоторые изменения, что делает его очень простым для изменения в соответствии с вашими потребностями. | Требуется много изменений, ограниченное руководство. |
Интернационализация | Основана на динамическом возврате контента на разных языках на основе заголовков запроса. Низкая сложность разработки, есть соответствующие инструментальные классы, поддерживающие большинство аннотаций для интернационализации. | Предоставляет базовые функции, другие требуют самостоятельного расширения. |
Тестирование синглтона кода | Предоставляет тестирование синглтона, используя методы написания и плагин Maven для многоканального тестирования в различных средах. | Предоставляет только базовые функции, расширения необходимо писать самостоятельно. |
-------- | ---------------------------------------------------------------------- | ----- |
Управление арендаторами | Управление арендаторами в системе, например: пакеты арендаторов, сроки истечения, количество пользователей, информация о компании и т. д. | Поддерживается |
Управление пакетами арендаторов | Управление пакетами, доступными для арендаторов в системе, например: меню, включенные в пакет и т. д. | Поддерживается |
Управление клиентскими приложениями | Управление всеми клиентскими приложениями, подключенными к системе, например: ПК, мини-приложения и т. д. Поддерживает динамическое авторизованное вход в систему, например: вход по SMS, вход по паролю и т. д. Поддерживает динамическое управление сроком действия токена |
Поддерживается |
Управление подразделениями | Настройка организационной структуры системы (компания, подразделение, группа) с поддержкой структуры дерева и прав доступа к данным | Поддерживается |
Управление должностями | Настройка должностей, занимаемых пользователями в системе | Поддерживается |
Управление меню | Настройка меню системы, прав доступа к операциям, меток прав доступа к кнопкам и т. д. | Поддерживается |
Управление ролями | Распределение прав доступа к меню для ролей, настройка прав доступа к данным по организациям для ролей | Поддерживается |
Управление словарями | Поддержка управления часто используемыми данными в системе, которые являются достаточно статичными | Поддерживается |
Управление параметрами | Поддержка динамической настройки часто используемых параметров в системе | Поддерживается |
Журналы операций | Поддержка записи и поиска журналов нормальной работы системы, записи и поиска журналов нештатных ситуаций | Поддерживается |
Журналы входа | Поддержка записи и поиска журналов входа в систему, включая нештатные ситуации при входе | Поддерживается |
Файловое управление | Управление системными файлами: отображение, загрузка, скачивание, удаление и т. д. | Поддерживается |
Конфигурация файлов | Динамическое добавление, изменение и удаление конфигурационных данных для загрузки и скачивания файлов | Поддерживается |
Управление онлайн-пользователями | Мониторинг информации о онлайн-пользователях и принудительное отключение | Поддерживается |
Планирование задач | Выполнение отчетов, управление задачами (добавление, изменение, удаление), управление логами, управление исполнителями и т. д. | Поддерживается |
Генерация кода | Генерация кода для фронтенда и бэкенда (Java, HTML, XML, SQL) для CRUD-операций | Поддерживается |
Мониторинг сервисов | Мониторинг кластерной системы: CPU, память, жесткий диск, стек, онлайн-логи, конфигурации Spring и т. д. | Поддерживается |
Мониторинг кэша | Поиск информации о кэше системы, статистика команд и т. д. | Поддерживается |
Онлайн-конструктор | Создание HTML-кода с помощью перетаскивания элементов формы | Поддерживается |
Примеры использования | Примеры использования некоторых функций системы | Поддерживается |
Способы участия в вкладе https://plus-doc.dromara.org/#/common/contribution
Автор занимается открытым исходным кодом в свободное время, поэтому если вам помогло, вы можете пригласить автора на обед
## Примеры демонстрации| | |
|--------------------------------------------------------------------------------------------|--------------------------------------------------------------------------------------------|
| ! [Введите описание изображения](https://foruda. gitee. com/images/1680077524361362822/270bb429_1766278. png "Скриншот экрана") | ! [Введите описание изображения](https://foruda. gitee. com/images/1680077619939771291/989bf9b6_1766278. png "Скриншот экрана") |
| ! [Введите описание изображения](https://foruda. gitee. com/images/1680077681751513929/1c27c5bd_1766278. png "Скриншот экрана") | ! [Введите описание изображения](https://foruda. gitee. com/images/1680077721559267315/74d63e23_1766278. png "Скриншот экрана") |
| ! [Введите описание изображения](https://foruda. gitee. com/images/1680077765638904515/1b75d4a6_1766278. png "Скриншот экрана") | ! [Введите описание изображения](https://foruda. gitee. com/images/1680078026375951297/eded7a4b_1766278. png "Скриншот экрана") |
| ! [Введите описание изображения](https://foruda. gitee. com/images/1680078237104531207/0eb1b6a7_1766278. png "Скриншот экрана") | ! [Введите описание изображения](https://foruda. gitee. com/images/1680078254306078709/5931e22f_1766278. png "Скриншот экрана") |
| ! [Введите описание изображения](https://foruda. gitee. com/images/1680078287971528493/0b9af60a_1766278. png "Скриншот экрана") | ! [Введите описание изображения](https://foruda. gitee. com/images/1680078308138770249/8d3b6696_1766278. png "Скриншот экрана") |
| ! [Введите описание изображения](https://foruda. gitee. com/images/1680078352553634393/db5ef880_1766278. png "Скриншот экрана") | ! [Введите описание изображения](https://foruda. gitee. com/images/1680078378238393374/601e4357_1766278. png "Скриншот экрана") |png "Скриншот экрана") |
| ! [Введите описание изображения](https://foruda. gitee. com/images/1680078414983206024/2aae27c1_1766278. png "Скриншот экрана") | ! [Введите описание изображения](https://foruda. gitee. com/images/1680078446738419874/ecce7d59_1766278. png "Скриншот экрана") |
| ! [Введите описание изображения](https://foruda. gitee. com/images/1680078475971341775/149e8634_1766278. png "Скриншот экрана") | ! [Введите описание изображения](https://foruda. gitee. com/images/1680078491666717143/3fadece7_1766278. png "Скриншот экрана") |
| ! [Введите описание изображения](https://foruda. gitee. com/images/1680078558863188826/fb8ced2a_1766278. png "Скриншот экрана") | ! [Введите описание изображения](https://foruda. gitee. com/images/1680078574561685461/ae68a0b2_1766278. png "Скриншот экрана") || ! [Введите описание изображения](https://foruda. gitee. com/images/1680078594932772013/9d8bfec6_1766278. png "Экранное изображение") | ! [Введите описание изображения](https://foruda. gitee. com/images/1680078626493093532/fcfe4ff6_1766278. png "Экранное изображение") |
| ! [Введите описание изображения](https://foruda. gitee. com/images/1680078643608812515/0295bd4f_1766278. png "Экранное изображение") | ! [Введите описание изображения](https://foruda. gitee. com/images/1680078685196286463/d7612c81_1766278. png "Экранное изображение") |
| ! [Введите описание изображения](https://foruda. gitee. com/images/1680078703877318597/56fce0bc_1766278. png "Экранное изображение") | ! [Введите описание изображения](https://foruda. gitee. com/images/1680078716586545643/b6dbd68f_1766278. png "Экранное изображение") |
| ! [Введите описание изображения](https://foruda. gitee. com/images/1680078734103217688/eb1e6aa6_1766278. png "Экранное изображение") |com/images/1680078759131415480/73c525d8_1766278. png "Экранное изображение") |
| ! [Введите описание изображения](https://foruda. gitee. com/images/1680078779416197879/75e3ed02_1766278. png "Экранное изображение") | ! [Введите описание изображения](https://foruda. gitee. com/images/1680078802329118061/77e10915_1766278. png "Экранное изображение") |
| ! [Введите описание изображения](https://foruda. gitee. com/images/1680078893627848351/34a1c342_1766278. png "Экранное изображение") | ! [Введите описание изображения](https://foruda. gitee. com/images/1680078928175016986/f126ec4a_1766278. png "Экранное изображение") |
| ! [Введите описание изображения](https://foruda. gitee. com/images/1680078941718318363/b68a0f72_1766278. png "Экранное изображение") | ! [Введите описание изображения](https://foruda. gitee. com/images/1680078963175518631/3bb769a1_1766278. png "Экранное изображение") |
| ! [Введите описание изображения](https://foruda. gitee. com/images/1735829153637063344/3c21fd4c_1419627. png "Экранное изображение") | ! [Введите описание изображения](https://foruda. gitee. com/images/1735829181303499815/4522cefa_1419627. png "Экранное изображение") |
| ! [Введите описание изображения](https://foruda. gitee. com/images/1735829377205259767/76a705d7_1419627. png "Экранное изображение") | ! [Введите описание изображения](https://foruda. gitee. com/images/1722959592856812900/e2d0d342_1419627. png "Экранное изображение") |
| ! [Введите описание изображения](https://foruda. gitee. com/images/1680079274333484664/4dfdc7c0_1766278. png "Экранное изображение") | ! [Введите описание изображения](https://foruda. gitee. com/images/1680079290467458224/d6715fcf_1766278. png "Экранное изображение") |
Введите описание изображенияК сожалению, вы не предоставили текст для перевода. Пожалуйста, предоставьте текст, и я выполню перевод в соответствии с вашими инструкциями.
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарии ( 0 )