From 731352fd04a6e8b483a8490fe1a833439302591c Mon Sep 17 00:00:00 2001
From: ageer
Date: Mon, 14 Apr 2025 00:22:21 +0800
Subject: [PATCH] =?UTF-8?q?feat:=20mcp=E6=B5=8B=E8=AF=95=E7=89=88?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
pom.xml | 61 +-
ruoyi-admin/pom.xml | 42 +-
.../org/ruoyi/controller/AuthController.java | 17 +-
.../org/ruoyi/controller/IndexController.java | 14 +-
.../src/main/resources/application-dev.yml | 22 -
.../src/main/resources/application.yml | 17 +-
.../src/main/resources/static/.gitignore | 46 -
.../src/main/resources/static/.nojekyll | 0
ruoyi-admin/src/main/resources/static/CNAME | 1 -
.../src/main/resources/static/README.md | 74 -
.../src/main/resources/static/_coverpage.md | 32 -
.../src/main/resources/static/_footer.md | 2 -
.../src/main/resources/static/_navbar.md | 9 -
.../src/main/resources/static/_sidebar.md | 16 -
.../main/resources/static/common/add_group.md | 27 -
.../main/resources/static/common/blacklist.md | 7 -
.../main/resources/static/common/column.md | 18 -
.../resources/static/common/contribution.md | 69 -
.../resources/static/common/demo_system.md | 13 -
.../src/main/resources/static/common/pr.md | 37 -
.../resources/static/common/user_register.md | 80 -
.../src/main/resources/static/common/video.md | 85 -
.../src/main/resources/static/index.html | 74 -
.../main/resources/static/plus-ui/_sidebar.md | 22 -
.../static/plus-ui/devdoc/common_func.md | 234 --
.../static/plus-ui/devdoc/component_use.md | 55 -
.../static/plus-ui/devdoc/content_copy.md | 4 -
.../static/plus-ui/devdoc/dev_norm.md | 16 -
.../static/plus-ui/devdoc/dict_use.md | 4 -
.../plus-ui/devdoc/exception_handling.md | 4 -
.../static/plus-ui/devdoc/icon_use.md | 4 -
.../static/plus-ui/devdoc/page_cache.md | 4 -
.../static/plus-ui/devdoc/param_use.md | 4 -
.../static/plus-ui/devdoc/permissions_use.md | 4 -
.../static/plus-ui/devdoc/request_process.md | 65 -
.../static/plus-ui/devdoc/router_use.md | 82 -
.../src/main/resources/static/plus-ui/home.md | 53 -
.../resources/static/questions/_sidebar.md | 34 -
.../resources/static/questions/api_encrypt.md | 148 --
.../resources/static/questions/bean_null.md | 10 -
.../resources/static/questions/deploy_vue.md | 13 -
.../static/questions/domestic_databases.md | 41 -
.../resources/static/questions/dubbo_ip.md | 18 -
.../static/questions/https_config.md | 27 -
.../static/questions/identify_fail.md | 10 -
.../static/questions/import_excel.md | 4 -
.../static/questions/jar_run_fail.md | 12 -
.../resources/static/questions/jce_cannot.md | 3 -
.../resources/static/questions/kinfe4j.md | 66 -
.../resources/static/questions/login_step.md | 69 -
.../main/resources/static/questions/lombok.md | 4 -
.../nacos_naming_instance_metadata.md | 35 -
.../static/questions/nacos_read_fail.md | 15 -
.../static/questions/only_one_subscriber.md | 11 -
.../static/questions/parse_exception.md | 40 -
.../static/questions/permission_denied.md | 15 -
.../static/questions/read_metadata.md | 11 -
.../static/questions/sentinel_404.md | 8 -
.../static/questions/st_not_support.md | 11 -
.../resources/static/questions/swagger.md | 3 -
.../static/questions/synchronous_update.md | 3 -
.../resources/static/questions/use_druid.md | 20 -
.../resources/static/questions/use_tomcat.md | 9 -
.../static/ruoyi-cloud-plus/_sidebar.md | 70 -
.../static/ruoyi-cloud-plus/changlog.md | 1385 -----------
.../ruoyi-cloud-plus/extend-function/elk.md | 37 -
.../ruoyi-cloud-plus/extend-function/es.md | 26 -
.../ruoyi-cloud-plus/extend-function/kafka.md | 9 -
.../extend-function/maxkey.md | 20 -
.../ruoyi-cloud-plus/extend-function/nacos.md | 13 -
.../extend-function/prometheus_grafana.md | 45 -
.../extend-function/rabbitmq.md | 10 -
.../extend-function/rocketmq.md | 9 -
.../extend-function/shardingproxy.md | 75 -
.../extend-function/skywalking.md | 41 -
.../framework/architecture_diagram.md | 3 -
.../framework/association/collaboration.md | 27 -
.../framework/association/doc.md | 88 -
.../framework/association/i18n.md | 31 -
.../association/inner_authentication.md | 19 -
.../framework/association/new_module.md | 39 -
.../association/update_package_name.md | 33 -
.../framework/association/update_url.md | 25 -
.../framework/basic/client.md | 85 -
.../framework/basic/code_generate.md | 86 -
.../framework/basic/export.md | 250 --
.../framework/basic/import.md | 202 --
.../ruoyi-cloud-plus/framework/basic/oss.md | 124 -
.../ruoyi-cloud-plus/framework/basic/page.md | 29 -
.../framework/basic/param_check.md | 158 --
.../framework/basic/permissions.md | 144 --
.../framework/basic/permissions_control.md | 178 --
.../framework/basic/router_release.md | 26 -
.../framework/basic/social.md | 68 -
.../framework/basic/tenant.md | 121 -
.../ruoyi-cloud-plus/framework/basic/user.md | 85 -
.../framework/explain/about_join.md | 12 -
.../ruoyi-cloud-plus/framework/explain/key.md | 19 -
.../framework/explain/test.md | 6 -
.../framework/explain/transaction.md | 45 -
.../framework/extend/api_encrypt.md | 39 -
.../framework/extend/dynamic_datasource.md | 45 -
.../framework/extend/encrypt.md | 38 -
.../framework/extend/idempotent.md | 29 -
.../ruoyi-cloud-plus/framework/extend/mail.md | 15 -
.../framework/extend/sensitive.md | 33 -
.../ruoyi-cloud-plus/framework/extend/sms.md | 51 -
.../ruoyi-cloud-plus/framework/extend/sse.md | 24 -
.../framework/extend/translation.md | 44 -
.../framework/extend/websocket.md | 39 -
.../static/ruoyi-cloud-plus/framework/tree.md | 91 -
.../resources/static/ruoyi-cloud-plus/home.md | 137 --
.../ruoyi-cloud-plus/quickstart/1.Xinit.md | 87 -
.../ruoyi-cloud-plus/quickstart/deploy.md | 118 -
.../quickstart/extend_project.md | 42 -
.../quickstart/idea_environment.md | 38 -
.../ruoyi-cloud-plus/quickstart/init.md | 102 -
.../quickstart/power_job_init.md | 33 -
.../quickstart/snail_job_init.md | 38 -
.../quickstart/worker_init.md | 52 -
.../static/ruoyi-vue-plus/_sidebar.md | 64 -
.../static/ruoyi-vue-plus/changlog.md | 2028 -----------------
.../framework/architecture_diagram.md | 3 -
.../framework/association/doc.md | 89 -
.../framework/association/i18n.md | 33 -
.../framework/association/new_module.md | 15 -
.../association/update_package_name.md | 33 -
.../framework/association/update_url.md | 26 -
.../ruoyi-vue-plus/framework/basic/client.md | 85 -
.../framework/basic/code_generate.md | 85 -
.../ruoyi-vue-plus/framework/basic/export.md | 249 --
.../ruoyi-vue-plus/framework/basic/import.md | 202 --
.../framework/basic/interface_release.md | 25 -
.../ruoyi-vue-plus/framework/basic/oss.md | 124 -
.../ruoyi-vue-plus/framework/basic/page.md | 32 -
.../framework/basic/param_check.md | 158 --
.../framework/basic/permissions.md | 144 --
.../framework/basic/permissions_control.md | 180 --
.../ruoyi-vue-plus/framework/basic/social.md | 68 -
.../ruoyi-vue-plus/framework/basic/tenant.md | 121 -
.../ruoyi-vue-plus/framework/basic/user.md | 85 -
.../framework/explain/about_join.md | 14 -
.../ruoyi-vue-plus/framework/explain/key.md | 19 -
.../ruoyi-vue-plus/framework/explain/test.md | 6 -
.../framework/explain/transaction.md | 45 -
.../framework/extend/api_encrypt.md | 38 -
.../framework/extend/dynamic_datasource.md | 45 -
.../framework/extend/encrypt.md | 28 -
.../framework/extend/idempotent.md | 29 -
.../ruoyi-vue-plus/framework/extend/mail.md | 17 -
.../ruoyi-vue-plus/framework/extend/maxkey.md | 20 -
.../framework/extend/sensitive.md | 33 -
.../framework/extend/skywalking.md | 20 -
.../ruoyi-vue-plus/framework/extend/sms.md | 51 -
.../ruoyi-vue-plus/framework/extend/sse.md | 22 -
.../ruoyi-vue-plus/framework/extend/topiam.md | 30 -
.../framework/extend/translation.md | 34 -
.../framework/extend/websocket.md | 37 -
.../static/ruoyi-vue-plus/framework/tree.md | 61 -
.../resources/static/ruoyi-vue-plus/home.md | 127 --
.../ruoyi-vue-plus/quickstart/4.Xinit.md | 67 -
.../ruoyi-vue-plus/quickstart/5.Xnew.md | 5 -
.../ruoyi-vue-plus/quickstart/admin_init.md | 32 -
.../ruoyi-vue-plus/quickstart/deploy.md | 126 -
.../quickstart/extend_project.md | 49 -
.../quickstart/idea_environment.md | 50 -
.../static/ruoyi-vue-plus/quickstart/init.md | 73 -
.../quickstart/power_job_init.md | 48 -
.../quickstart/snail_job_init.md | 52 -
.../ruoyi-vue-plus/quickstart/worker_init.md | 43 -
.../ruoyi-vue-plus/quickstart/xxl_job_init.md | 43 -
.../main/resources/static/static/css/vue.css | 1 -
.../resources/static/static/image/favicon.ico | Bin 8131 -> 0 bytes
.../resources/static/static/image/logo.png | Bin 119264 -> 0 bytes
.../static/static/image/ruoyicloudplus.png | Bin 49107 -> 0 bytes
.../static/static/image/ruoyivueplus.png | Bin 54652 -> 0 bytes
.../static/static/js/docsify-copy-code.min.js | 9 -
.../static/static/js/docsify-footer.min.js | 4 -
.../static/js/docsify-pagination.min.js | 1 -
.../static/js/docsify-scroll-to-top.min.js | 1 -
.../resources/static/static/js/docsify.min.js | 1 -
.../resources/static/static/js/emoji.min.js | 1 -
.../static/static/js/prism-bash.min.js | 1 -
.../static/static/js/prism-typescript.min.js | 1 -
.../resources/static/static/js/search.min.js | 1 -
.../static/static/js/zoom-image.min.js | 1 -
ruoyi-common/ruoyi-common-core/pom.xml | 3 +
.../common/core/constant/RegexConstants.java | 59 +
.../common/core/constant/SystemConstants.java | 80 +
.../core/factory/RegexPatternPoolFactory.java | 53 +
.../factory/YmlPropertySourceFactory.java | 32 +
.../ruoyi/common/core/utils/ObjectUtils.java | 60 +
.../ruoyi/common/core/utils/SpringUtils.java | 9 +-
ruoyi-common/ruoyi-common-encrypt/pom.xml | 22 +-
ruoyi-common/ruoyi-common-live/pom.xml | 2 +-
ruoyi-common/ruoyi-common-mybatis/pom.xml | 10 +-
.../jakarta/DsJakartaHeaderProcessor.java | 45 -
.../jakarta/DsJakartaSessionProcessor.java | 46 -
.../java/org/ruoyi/annotation/DataColumn.java | 40 +
.../org/ruoyi/annotation/DataPermission.java | 30 +
.../ruoyi/aspect/DataPermissionAspect.java | 50 +
.../common/mybatis/annotation/DataColumn.java | 28 -
.../mybatis/annotation/DataPermission.java | 18 -
.../mybatis/core/mapper/BaseMapperPlus.java | 198 --
.../common/mybatis/enums/DataScopeType.java | 73 -
.../handler/InjectionMetaObjectHandler.java | 81 -
.../handler/PlusDataPermissionHandler.java | 198 --
.../mybatis/helper/DataPermissionHelper.java | 93 -
.../PlusDataPermissionInterceptor.java | 107 -
.../jakarta/DsJakartaHeaderProcessor.java | 45 -
.../jakarta/DsJakartaSessionProcessor.java | 46 -
.../config/MybatisPlusConfig.java | 52 +-
.../mybatis => }/core/domain/BaseEntity.java | 3 +-
.../org/ruoyi/core/mapper/BaseMapperPlus.java | 335 +++
.../mybatis => }/core/page/PageQuery.java | 17 +-
.../mybatis => }/core/page/TableDataInfo.java | 14 +-
.../mybatis => }/enums/DataBaseType.java | 12 +-
.../java/org/ruoyi/enums/DataScopeType.java | 87 +
.../handler/InjectionMetaObjectHandler.java | 103 +
.../handler/MybatisExceptionHandler.java | 8 +-
.../handler/PlusDataPermissionHandler.java | 359 +++
.../handler/PlusPostInitTableInfoHandler.java | 28 +
.../mybatis => }/helper/DataBaseHelper.java | 10 +-
.../ruoyi/helper/DataPermissionHelper.java | 176 ++
.../PlusDataPermissionInterceptor.java | 181 ++
...ot.autoconfigure.AutoConfiguration.imports | 2 +-
.../src/main/resources/common-mybatis.yml | 33 +
.../src/main/resources/spy.properties | 20 +
.../common/satoken/utils/LoginHelper.java | 12 +
.../common/tenant/config/TenantConfig.java | 3 +-
.../common/tenant/core/TenantEntity.java | 3 +-
.../common/tenant/helper/TenantHelper.java | 35 +
ruoyi-extend/pom.xml | 20 +
.../ruoyi-mcp-server/pom.xml | 29 +-
.../org/ruoyi/mcp/McpServerApplication.java | 0
.../org/ruoyi/mcp/config/McpServerConfig.java | 0
.../ruoyi/mcp/service/McpCustomService.java | 27 +
.../src/main/resources/application-dev.yml | 97 +
.../src/main/resources/application-mcp.yml | 0
.../src/main/resources/application.yml | 332 +++
ruoyi-modules-api/ruoyi-chat-api/pom.xml | 41 +-
.../org/ruoyi/domain/ChatAgentManage.java | 2 +-
.../java/org/ruoyi/domain/ChatAppStore.java | 2 +-
.../main/java/org/ruoyi/domain/ChatGpts.java | 2 +-
.../java/org/ruoyi/domain/ChatMessage.java | 2 +-
.../main/java/org/ruoyi/domain/ChatModel.java | 2 +-
.../org/ruoyi/domain/ChatPackagePlan.java | 2 +-
.../java/org/ruoyi/domain/ChatPayOrder.java | 2 +-
.../java/org/ruoyi/domain/ChatPlugin.java | 2 +-
.../java/org/ruoyi/domain/ChatRobConfig.java | 2 +-
.../java/org/ruoyi/domain/ChatUsageToken.java | 2 +-
.../org/ruoyi/domain/ChatVisitorUsage.java | 2 +-
.../java/org/ruoyi/domain/ChatVoucher.java | 2 +-
.../ruoyi/domain/bo/ChatAgentManageBo.java | 2 +-
.../org/ruoyi/domain/bo/ChatAppStoreBo.java | 2 +-
.../java/org/ruoyi/domain/bo/ChatGptsBo.java | 2 +-
.../org/ruoyi/domain/bo/ChatMessageBo.java | 2 +-
.../java/org/ruoyi/domain/bo/ChatModelBo.java | 2 +-
.../ruoyi/domain/bo/ChatPackagePlanBo.java | 2 +-
.../org/ruoyi/domain/bo/ChatPayOrderBo.java | 2 +-
.../org/ruoyi/domain/bo/ChatPluginBo.java | 2 +-
.../org/ruoyi/domain/bo/ChatRobConfigBo.java | 2 +-
.../org/ruoyi/domain/bo/ChatUsageTokenBo.java | 2 +-
.../ruoyi/domain/bo/ChatVisitorUsageBo.java | 2 +-
.../org/ruoyi/domain/bo/ChatVoucherBo.java | 2 +-
.../org/ruoyi/domain/vo/CacheListInfoVo.java | 23 -
.../java/org/ruoyi/domain/vo/CaptchaVo.java | 25 -
.../ruoyi/mapper/ChatAgentManageMapper.java | 2 +-
.../org/ruoyi/mapper/ChatAppStoreMapper.java | 2 +-
.../java/org/ruoyi/mapper/ChatGptsMapper.java | 2 +-
.../org/ruoyi/mapper/ChatMessageMapper.java | 2 +-
.../org/ruoyi/mapper/ChatModelMapper.java | 2 +-
.../ruoyi/mapper/ChatPackagePlanMapper.java | 2 +-
.../org/ruoyi/mapper/ChatPayOrderMapper.java | 2 +-
.../org/ruoyi/mapper/ChatPluginMapper.java | 2 +-
.../org/ruoyi/mapper/ChatRobConfigMapper.java | 2 +-
.../org/ruoyi/mapper/ChatTokenMapper.java | 2 +-
.../ruoyi/mapper/ChatUsageTokenMapper.java | 2 +-
.../ruoyi/mapper/ChatVisitorUsageMapper.java | 2 +-
.../org/ruoyi/mapper/ChatVoucherMapper.java | 2 +-
.../service/IChatAgentManageService.java | 4 +-
.../ruoyi/service/IChatAppStoreService.java | 4 +-
.../org/ruoyi/service/IChatGptsService.java | 4 +-
.../ruoyi/service/IChatMessageService.java | 4 +-
.../org/ruoyi/service/IChatModelService.java | 4 +-
.../service/IChatPackagePlanService.java | 4 +-
.../ruoyi/service/IChatPayOrderService.java | 4 +-
.../org/ruoyi/service/IChatPluginService.java | 4 +-
.../ruoyi/service/IChatUsageTokenService.java | 4 +-
.../service/IChatVisitorUsageService.java | 4 +-
.../ruoyi/service/IChatVoucherService.java | 4 +-
.../impl/ChatAgentManageServiceImpl.java | 4 +-
.../service/impl/ChatAppStoreServiceImpl.java | 4 +-
.../service/impl/ChatGptsServiceImpl.java | 4 +-
.../service/impl/ChatMessageServiceImpl.java | 4 +-
.../service/impl/ChatModelServiceImpl.java | 4 +-
.../impl/ChatPackagePlanServiceImpl.java | 4 +-
.../service/impl/ChatPayOrderServiceImpl.java | 4 +-
.../service/impl/ChatPluginServiceImpl.java | 4 +-
.../service/impl/ChatTokenServiceImpl.java | 56 +
.../impl/ChatUsageTokenServiceImpl.java | 4 +-
.../service/impl/ChatVoucherServiceImpl.java | 4 +-
.../org/ruoyi/domain/KnowledgeAttach.java | 2 +-
.../org/ruoyi/domain/KnowledgeFragment.java | 2 +-
.../java/org/ruoyi/domain/KnowledgeInfo.java | 2 +-
.../ruoyi/domain/bo/KnowledgeAttachBo.java | 2 +-
.../ruoyi/domain/bo/KnowledgeFragmentBo.java | 2 +-
.../org/ruoyi/domain/bo/KnowledgeInfoBo.java | 2 +-
.../ruoyi/mapper/KnowledgeAttachMapper.java | 2 +-
.../ruoyi/mapper/KnowledgeFragmentMapper.java | 2 +-
.../org/ruoyi/mapper/KnowledgeInfoMapper.java | 2 +-
.../service/IKnowledgeAttachService.java | 4 +-
.../service/IKnowledgeFragmentService.java | 4 +-
.../ruoyi/service/IKnowledgeInfoService.java | 4 +-
.../impl/KnowledgeAttachServiceImpl.java | 4 +-
.../impl/KnowledgeFragmentServiceImpl.java | 4 +-
.../impl/KnowledgeInfoServiceImpl.java | 4 +-
.../service/impl/WeaviateVectorStoreImpl.java | 4 +-
.../org/ruoyi/system/domain/ChatConfig.java | 2 +-
.../java/org/ruoyi/system/domain/SysDept.java | 2 +-
.../java/org/ruoyi/system/domain/SysMenu.java | 2 +-
.../ruoyi/system/domain/SysNoticeState.java | 2 +-
.../org/ruoyi/system/domain/SysTenant.java | 2 +-
.../ruoyi/system/domain/SysTenantPackage.java | 2 +-
.../ruoyi/system/domain/bo/ChatConfigBo.java | 3 +-
.../ruoyi/system/domain/bo/SysConfigBo.java | 3 +-
.../org/ruoyi/system/domain/bo/SysDeptBo.java | 2 +-
.../ruoyi/system/domain/bo/SysDictDataBo.java | 2 +-
.../ruoyi/system/domain/bo/SysDictTypeBo.java | 2 +-
.../org/ruoyi/system/domain/bo/SysMenuBo.java | 2 +-
.../ruoyi/system/domain/bo/SysNoticeBo.java | 2 +-
.../system/domain/bo/SysNoticeStateBo.java | 2 +-
.../org/ruoyi/system/domain/bo/SysOssBo.java | 2 +-
.../system/domain/bo/SysOssConfigBo.java | 2 +-
.../org/ruoyi/system/domain/bo/SysPostBo.java | 2 +-
.../org/ruoyi/system/domain/bo/SysRoleBo.java | 2 +-
.../ruoyi/system/domain/bo/SysTenantBo.java | 2 +-
.../system/domain/bo/SysTenantPackageBo.java | 2 +-
.../org/ruoyi/system/domain/bo/SysUserBo.java | 2 +-
.../system/domain/bo/SysUserProfileBo.java | 2 +-
.../ruoyi/system/mapper/ChatConfigMapper.java | 2 +-
.../ruoyi/system/mapper/SysConfigMapper.java | 2 +-
.../ruoyi/system/mapper/SysDeptMapper.java | 6 +-
.../system/mapper/SysDictDataMapper.java | 2 +-
.../system/mapper/SysDictTypeMapper.java | 2 +-
.../system/mapper/SysLogininforMapper.java | 2 +-
.../ruoyi/system/mapper/SysMenuMapper.java | 2 +-
.../ruoyi/system/mapper/SysNoticeMapper.java | 2 +-
.../system/mapper/SysNoticeStateMapper.java | 2 +-
.../ruoyi/system/mapper/SysOperLogMapper.java | 2 +-
.../system/mapper/SysOssConfigMapper.java | 2 +-
.../org/ruoyi/system/mapper/SysOssMapper.java | 2 +-
.../ruoyi/system/mapper/SysPostMapper.java | 2 +-
.../system/mapper/SysRoleDeptMapper.java | 2 +-
.../ruoyi/system/mapper/SysRoleMapper.java | 6 +-
.../system/mapper/SysRoleMenuMapper.java | 2 +-
.../ruoyi/system/mapper/SysTenantMapper.java | 2 +-
.../system/mapper/SysTenantPackageMapper.java | 2 +-
.../ruoyi/system/mapper/SysUserMapper.java | 6 +-
.../system/mapper/SysUserPostMapper.java | 2 +-
.../system/mapper/SysUserRoleMapper.java | 2 +-
.../system/service/IChatConfigService.java | 4 +-
.../system/service/ISysConfigService.java | 4 +-
.../system/service/ISysDictDataService.java | 4 +-
.../system/service/ISysDictTypeService.java | 4 +-
.../system/service/ISysLogininforService.java | 4 +-
.../system/service/ISysNoticeService.java | 4 +-
.../service/ISysNoticeStateService.java | 4 +-
.../system/service/ISysOperLogService.java | 4 +-
.../system/service/ISysOssConfigService.java | 4 +-
.../ruoyi/system/service/ISysOssService.java | 4 +-
.../ruoyi/system/service/ISysPostService.java | 4 +-
.../ruoyi/system/service/ISysRoleService.java | 4 +-
.../service/ISysTenantPackageService.java | 4 +-
.../system/service/ISysTenantService.java | 13 +-
.../ruoyi/system/service/ISysUserService.java | 4 +-
.../service/impl/ChatConfigServiceImpl.java | 4 +-
.../service/impl/SysConfigServiceImpl.java | 4 +-
.../service/impl/SysDataScopeServiceImpl.java | 2 +-
.../service/impl/SysDeptServiceImpl.java | 2 +-
.../service/impl/SysDictDataServiceImpl.java | 4 +-
.../service/impl/SysDictTypeServiceImpl.java | 4 +-
.../impl/SysLogininforServiceImpl.java | 4 +-
.../service/impl/SysMenuServiceImpl.java | 8 +-
.../service/impl/SysNoticeServiceImpl.java | 4 +-
.../impl/SysNoticeStateServiceImpl.java | 4 +-
.../service/impl/SysOperLogServiceImpl.java | 4 +-
.../service/impl/SysOssConfigServiceImpl.java | 4 +-
.../service/impl/SysOssServiceImpl.java | 4 +-
.../service/impl/SysPostServiceImpl.java | 4 +-
.../service/impl/SysRoleServiceImpl.java | 4 +-
.../impl/SysTenantPackageServiceImpl.java | 4 +-
.../service/impl/SysTenantServiceImpl.java | 170 +-
.../service/impl/SysUserServiceImpl.java | 6 +-
ruoyi-modules/pom.xml | 2 -
ruoyi-modules/ruoyi-chat/pom.xml | 6 +
.../chat/ChatAgentManageController.java | 4 +-
.../chat/ChatAppStoreController.java | 4 +-
.../controller/chat/ChatConfigController.java | 6 +-
.../{api => chat}/ChatController.java | 6 +-
.../controller/chat/ChatGptsController.java | 4 +-
.../chat/ChatMessageController.java | 4 +-
.../controller/chat/ChatModelController.java | 4 +-
.../chat/ChatPackagePlanController.java | 4 +-
.../chat/ChatPayOrderController.java | 4 +-
.../controller/chat/ChatPluginController.java | 4 +-
.../chat/ChatVoucherController.java | 4 +-
.../{api => tripartite}/FaceController.java | 2 +-
.../{api => tripartite}/LumaController.java | 2 +-
.../{api => tripartite}/SubmitController.java | 2 +-
.../{api => tripartite}/SunoController.java | 2 +-
.../{api => tripartite}/TaskController.java | 2 +-
.../ruoyi/chat/factory/SseServiceFactory.java | 24 -
.../chat/factory/VectorStoreFactory.java | 44 -
.../chat/factory/VectorizationFactory.java | 10 +-
.../service/chat/impl/OllamaServiceImpl.java | 21 +-
.../service/chat/impl/OpenAIServiceImpl.java | 114 -
.../service/chat/impl/SseServiceImpl.java | 9 +-
...on.java => BgeLargeVectorizationImpl.java} | 6 +-
...tion.java => OpenAiVectorizationImpl.java} | 4 +-
.../knowledge/VectorizationWrapper.java | 30 +
.../vectorstore/MilvusVectorStore.java | 387 ----
.../demo/controller/TestDemoController.java | 4 +-
.../org/ruoyi/demo/domain/bo/TestDemoBo.java | 2 +-
.../org/ruoyi/demo/domain/bo/TestTreeBo.java | 2 +-
.../demo/mapper/TestDemoEncryptMapper.java | 2 +-
.../org/ruoyi/demo/mapper/TestDemoMapper.java | 6 +-
.../org/ruoyi/demo/mapper/TestTreeMapper.java | 6 +-
.../ruoyi/demo/service/ITestDemoService.java | 4 +-
.../service/impl/TestDemoServiceImpl.java | 4 +-
.../generator/controller/GenController.java | 6 +-
.../org/ruoyi/generator/domain/GenTable.java | 2 +-
.../generator/domain/GenTableColumn.java | 2 +-
.../mapper/GenTableColumnMapper.java | 2 +-
.../generator/mapper/GenTableMapper.java | 2 +-
.../service/GenTableServiceImpl.java | 4 +-
.../generator/service/IGenTableService.java | 4 +-
.../ruoyi/generator/util/VelocityUtils.java | 2 +-
.../mapper/generator/GenTableColumnMapper.xml | 8 +-
.../mapper/generator/GenTableMapper.xml | 24 +-
.../src/main/resources/vm/java/bo.java.vm | 2 +-
.../main/resources/vm/java/controller.java.vm | 4 +-
.../src/main/resources/vm/java/mapper.java.vm | 2 +-
.../main/resources/vm/java/service.java.vm | 4 +-
.../resources/vm/java/serviceImpl.java.vm | 4 +-
.../ruoyi/mcp/service/McpCustomService.java | 24 -
.../monitor/SysLogininforController.java | 4 +-
.../monitor/SysOperlogController.java | 4 +-
.../monitor/SysUserOnlineController.java | 2 +-
.../system/SysConfigController.java | 4 +-
.../system/SysDictDataController.java | 4 +-
.../system/SysDictTypeController.java | 4 +-
.../system/SysNoticeController.java | 4 +-
.../system/SysNoticeStateController.java | 4 +-
.../system/SysOssConfigController.java | 4 +-
.../controller/system/SysOssController.java | 4 +-
.../controller/system/SysPostController.java | 4 +-
.../controller/system/SysRoleController.java | 4 +-
.../system/SysTenantController.java | 38 +-
.../system/SysTenantPackageController.java | 4 +-
.../controller/system/SysUserController.java | 4 +-
461 files changed, 3110 insertions(+), 13838 deletions(-)
delete mode 100644 ruoyi-admin/src/main/resources/static/.gitignore
delete mode 100644 ruoyi-admin/src/main/resources/static/.nojekyll
delete mode 100644 ruoyi-admin/src/main/resources/static/CNAME
delete mode 100644 ruoyi-admin/src/main/resources/static/README.md
delete mode 100644 ruoyi-admin/src/main/resources/static/_coverpage.md
delete mode 100644 ruoyi-admin/src/main/resources/static/_footer.md
delete mode 100644 ruoyi-admin/src/main/resources/static/_navbar.md
delete mode 100644 ruoyi-admin/src/main/resources/static/_sidebar.md
delete mode 100644 ruoyi-admin/src/main/resources/static/common/add_group.md
delete mode 100644 ruoyi-admin/src/main/resources/static/common/blacklist.md
delete mode 100644 ruoyi-admin/src/main/resources/static/common/column.md
delete mode 100644 ruoyi-admin/src/main/resources/static/common/contribution.md
delete mode 100644 ruoyi-admin/src/main/resources/static/common/demo_system.md
delete mode 100644 ruoyi-admin/src/main/resources/static/common/pr.md
delete mode 100644 ruoyi-admin/src/main/resources/static/common/user_register.md
delete mode 100644 ruoyi-admin/src/main/resources/static/common/video.md
delete mode 100644 ruoyi-admin/src/main/resources/static/index.html
delete mode 100644 ruoyi-admin/src/main/resources/static/plus-ui/_sidebar.md
delete mode 100644 ruoyi-admin/src/main/resources/static/plus-ui/devdoc/common_func.md
delete mode 100644 ruoyi-admin/src/main/resources/static/plus-ui/devdoc/component_use.md
delete mode 100644 ruoyi-admin/src/main/resources/static/plus-ui/devdoc/content_copy.md
delete mode 100644 ruoyi-admin/src/main/resources/static/plus-ui/devdoc/dev_norm.md
delete mode 100644 ruoyi-admin/src/main/resources/static/plus-ui/devdoc/dict_use.md
delete mode 100644 ruoyi-admin/src/main/resources/static/plus-ui/devdoc/exception_handling.md
delete mode 100644 ruoyi-admin/src/main/resources/static/plus-ui/devdoc/icon_use.md
delete mode 100644 ruoyi-admin/src/main/resources/static/plus-ui/devdoc/page_cache.md
delete mode 100644 ruoyi-admin/src/main/resources/static/plus-ui/devdoc/param_use.md
delete mode 100644 ruoyi-admin/src/main/resources/static/plus-ui/devdoc/permissions_use.md
delete mode 100644 ruoyi-admin/src/main/resources/static/plus-ui/devdoc/request_process.md
delete mode 100644 ruoyi-admin/src/main/resources/static/plus-ui/devdoc/router_use.md
delete mode 100644 ruoyi-admin/src/main/resources/static/plus-ui/home.md
delete mode 100644 ruoyi-admin/src/main/resources/static/questions/_sidebar.md
delete mode 100644 ruoyi-admin/src/main/resources/static/questions/api_encrypt.md
delete mode 100644 ruoyi-admin/src/main/resources/static/questions/bean_null.md
delete mode 100644 ruoyi-admin/src/main/resources/static/questions/deploy_vue.md
delete mode 100644 ruoyi-admin/src/main/resources/static/questions/domestic_databases.md
delete mode 100644 ruoyi-admin/src/main/resources/static/questions/dubbo_ip.md
delete mode 100644 ruoyi-admin/src/main/resources/static/questions/https_config.md
delete mode 100644 ruoyi-admin/src/main/resources/static/questions/identify_fail.md
delete mode 100644 ruoyi-admin/src/main/resources/static/questions/import_excel.md
delete mode 100644 ruoyi-admin/src/main/resources/static/questions/jar_run_fail.md
delete mode 100644 ruoyi-admin/src/main/resources/static/questions/jce_cannot.md
delete mode 100644 ruoyi-admin/src/main/resources/static/questions/kinfe4j.md
delete mode 100644 ruoyi-admin/src/main/resources/static/questions/login_step.md
delete mode 100644 ruoyi-admin/src/main/resources/static/questions/lombok.md
delete mode 100644 ruoyi-admin/src/main/resources/static/questions/nacos_naming_instance_metadata.md
delete mode 100644 ruoyi-admin/src/main/resources/static/questions/nacos_read_fail.md
delete mode 100644 ruoyi-admin/src/main/resources/static/questions/only_one_subscriber.md
delete mode 100644 ruoyi-admin/src/main/resources/static/questions/parse_exception.md
delete mode 100644 ruoyi-admin/src/main/resources/static/questions/permission_denied.md
delete mode 100644 ruoyi-admin/src/main/resources/static/questions/read_metadata.md
delete mode 100644 ruoyi-admin/src/main/resources/static/questions/sentinel_404.md
delete mode 100644 ruoyi-admin/src/main/resources/static/questions/st_not_support.md
delete mode 100644 ruoyi-admin/src/main/resources/static/questions/swagger.md
delete mode 100644 ruoyi-admin/src/main/resources/static/questions/synchronous_update.md
delete mode 100644 ruoyi-admin/src/main/resources/static/questions/use_druid.md
delete mode 100644 ruoyi-admin/src/main/resources/static/questions/use_tomcat.md
delete mode 100644 ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/_sidebar.md
delete mode 100644 ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/changlog.md
delete mode 100644 ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/extend-function/elk.md
delete mode 100644 ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/extend-function/es.md
delete mode 100644 ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/extend-function/kafka.md
delete mode 100644 ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/extend-function/maxkey.md
delete mode 100644 ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/extend-function/nacos.md
delete mode 100644 ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/extend-function/prometheus_grafana.md
delete mode 100644 ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/extend-function/rabbitmq.md
delete mode 100644 ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/extend-function/rocketmq.md
delete mode 100644 ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/extend-function/shardingproxy.md
delete mode 100644 ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/extend-function/skywalking.md
delete mode 100644 ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/framework/architecture_diagram.md
delete mode 100644 ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/framework/association/collaboration.md
delete mode 100644 ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/framework/association/doc.md
delete mode 100644 ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/framework/association/i18n.md
delete mode 100644 ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/framework/association/inner_authentication.md
delete mode 100644 ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/framework/association/new_module.md
delete mode 100644 ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/framework/association/update_package_name.md
delete mode 100644 ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/framework/association/update_url.md
delete mode 100644 ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/framework/basic/client.md
delete mode 100644 ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/framework/basic/code_generate.md
delete mode 100644 ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/framework/basic/export.md
delete mode 100644 ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/framework/basic/import.md
delete mode 100644 ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/framework/basic/oss.md
delete mode 100644 ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/framework/basic/page.md
delete mode 100644 ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/framework/basic/param_check.md
delete mode 100644 ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/framework/basic/permissions.md
delete mode 100644 ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/framework/basic/permissions_control.md
delete mode 100644 ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/framework/basic/router_release.md
delete mode 100644 ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/framework/basic/social.md
delete mode 100644 ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/framework/basic/tenant.md
delete mode 100644 ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/framework/basic/user.md
delete mode 100644 ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/framework/explain/about_join.md
delete mode 100644 ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/framework/explain/key.md
delete mode 100644 ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/framework/explain/test.md
delete mode 100644 ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/framework/explain/transaction.md
delete mode 100644 ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/framework/extend/api_encrypt.md
delete mode 100644 ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/framework/extend/dynamic_datasource.md
delete mode 100644 ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/framework/extend/encrypt.md
delete mode 100644 ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/framework/extend/idempotent.md
delete mode 100644 ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/framework/extend/mail.md
delete mode 100644 ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/framework/extend/sensitive.md
delete mode 100644 ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/framework/extend/sms.md
delete mode 100644 ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/framework/extend/sse.md
delete mode 100644 ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/framework/extend/translation.md
delete mode 100644 ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/framework/extend/websocket.md
delete mode 100644 ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/framework/tree.md
delete mode 100644 ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/home.md
delete mode 100644 ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/quickstart/1.Xinit.md
delete mode 100644 ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/quickstart/deploy.md
delete mode 100644 ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/quickstart/extend_project.md
delete mode 100644 ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/quickstart/idea_environment.md
delete mode 100644 ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/quickstart/init.md
delete mode 100644 ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/quickstart/power_job_init.md
delete mode 100644 ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/quickstart/snail_job_init.md
delete mode 100644 ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/quickstart/worker_init.md
delete mode 100644 ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/_sidebar.md
delete mode 100644 ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/changlog.md
delete mode 100644 ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/framework/architecture_diagram.md
delete mode 100644 ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/framework/association/doc.md
delete mode 100644 ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/framework/association/i18n.md
delete mode 100644 ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/framework/association/new_module.md
delete mode 100644 ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/framework/association/update_package_name.md
delete mode 100644 ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/framework/association/update_url.md
delete mode 100644 ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/framework/basic/client.md
delete mode 100644 ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/framework/basic/code_generate.md
delete mode 100644 ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/framework/basic/export.md
delete mode 100644 ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/framework/basic/import.md
delete mode 100644 ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/framework/basic/interface_release.md
delete mode 100644 ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/framework/basic/oss.md
delete mode 100644 ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/framework/basic/page.md
delete mode 100644 ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/framework/basic/param_check.md
delete mode 100644 ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/framework/basic/permissions.md
delete mode 100644 ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/framework/basic/permissions_control.md
delete mode 100644 ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/framework/basic/social.md
delete mode 100644 ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/framework/basic/tenant.md
delete mode 100644 ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/framework/basic/user.md
delete mode 100644 ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/framework/explain/about_join.md
delete mode 100644 ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/framework/explain/key.md
delete mode 100644 ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/framework/explain/test.md
delete mode 100644 ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/framework/explain/transaction.md
delete mode 100644 ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/framework/extend/api_encrypt.md
delete mode 100644 ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/framework/extend/dynamic_datasource.md
delete mode 100644 ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/framework/extend/encrypt.md
delete mode 100644 ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/framework/extend/idempotent.md
delete mode 100644 ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/framework/extend/mail.md
delete mode 100644 ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/framework/extend/maxkey.md
delete mode 100644 ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/framework/extend/sensitive.md
delete mode 100644 ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/framework/extend/skywalking.md
delete mode 100644 ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/framework/extend/sms.md
delete mode 100644 ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/framework/extend/sse.md
delete mode 100644 ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/framework/extend/topiam.md
delete mode 100644 ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/framework/extend/translation.md
delete mode 100644 ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/framework/extend/websocket.md
delete mode 100644 ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/framework/tree.md
delete mode 100644 ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/home.md
delete mode 100644 ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/quickstart/4.Xinit.md
delete mode 100644 ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/quickstart/5.Xnew.md
delete mode 100644 ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/quickstart/admin_init.md
delete mode 100644 ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/quickstart/deploy.md
delete mode 100644 ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/quickstart/extend_project.md
delete mode 100644 ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/quickstart/idea_environment.md
delete mode 100644 ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/quickstart/init.md
delete mode 100644 ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/quickstart/power_job_init.md
delete mode 100644 ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/quickstart/snail_job_init.md
delete mode 100644 ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/quickstart/worker_init.md
delete mode 100644 ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/quickstart/xxl_job_init.md
delete mode 100644 ruoyi-admin/src/main/resources/static/static/css/vue.css
delete mode 100644 ruoyi-admin/src/main/resources/static/static/image/favicon.ico
delete mode 100644 ruoyi-admin/src/main/resources/static/static/image/logo.png
delete mode 100644 ruoyi-admin/src/main/resources/static/static/image/ruoyicloudplus.png
delete mode 100644 ruoyi-admin/src/main/resources/static/static/image/ruoyivueplus.png
delete mode 100644 ruoyi-admin/src/main/resources/static/static/js/docsify-copy-code.min.js
delete mode 100644 ruoyi-admin/src/main/resources/static/static/js/docsify-footer.min.js
delete mode 100644 ruoyi-admin/src/main/resources/static/static/js/docsify-pagination.min.js
delete mode 100644 ruoyi-admin/src/main/resources/static/static/js/docsify-scroll-to-top.min.js
delete mode 100644 ruoyi-admin/src/main/resources/static/static/js/docsify.min.js
delete mode 100644 ruoyi-admin/src/main/resources/static/static/js/emoji.min.js
delete mode 100644 ruoyi-admin/src/main/resources/static/static/js/prism-bash.min.js
delete mode 100644 ruoyi-admin/src/main/resources/static/static/js/prism-typescript.min.js
delete mode 100644 ruoyi-admin/src/main/resources/static/static/js/search.min.js
delete mode 100644 ruoyi-admin/src/main/resources/static/static/js/zoom-image.min.js
create mode 100644 ruoyi-common/ruoyi-common-core/src/main/java/org/ruoyi/common/core/constant/RegexConstants.java
create mode 100644 ruoyi-common/ruoyi-common-core/src/main/java/org/ruoyi/common/core/constant/SystemConstants.java
create mode 100644 ruoyi-common/ruoyi-common-core/src/main/java/org/ruoyi/common/core/factory/RegexPatternPoolFactory.java
create mode 100644 ruoyi-common/ruoyi-common-core/src/main/java/org/ruoyi/common/core/factory/YmlPropertySourceFactory.java
create mode 100644 ruoyi-common/ruoyi-common-core/src/main/java/org/ruoyi/common/core/utils/ObjectUtils.java
delete mode 100644 ruoyi-common/ruoyi-common-mybatis/src/main/java/com/baomidou/dynamic/datasource/processor/jakarta/DsJakartaHeaderProcessor.java
delete mode 100644 ruoyi-common/ruoyi-common-mybatis/src/main/java/com/baomidou/dynamic/datasource/processor/jakarta/DsJakartaSessionProcessor.java
create mode 100644 ruoyi-common/ruoyi-common-mybatis/src/main/java/org/ruoyi/annotation/DataColumn.java
create mode 100644 ruoyi-common/ruoyi-common-mybatis/src/main/java/org/ruoyi/annotation/DataPermission.java
create mode 100644 ruoyi-common/ruoyi-common-mybatis/src/main/java/org/ruoyi/aspect/DataPermissionAspect.java
delete mode 100644 ruoyi-common/ruoyi-common-mybatis/src/main/java/org/ruoyi/common/mybatis/annotation/DataColumn.java
delete mode 100644 ruoyi-common/ruoyi-common-mybatis/src/main/java/org/ruoyi/common/mybatis/annotation/DataPermission.java
delete mode 100644 ruoyi-common/ruoyi-common-mybatis/src/main/java/org/ruoyi/common/mybatis/core/mapper/BaseMapperPlus.java
delete mode 100644 ruoyi-common/ruoyi-common-mybatis/src/main/java/org/ruoyi/common/mybatis/enums/DataScopeType.java
delete mode 100644 ruoyi-common/ruoyi-common-mybatis/src/main/java/org/ruoyi/common/mybatis/handler/InjectionMetaObjectHandler.java
delete mode 100644 ruoyi-common/ruoyi-common-mybatis/src/main/java/org/ruoyi/common/mybatis/handler/PlusDataPermissionHandler.java
delete mode 100644 ruoyi-common/ruoyi-common-mybatis/src/main/java/org/ruoyi/common/mybatis/helper/DataPermissionHelper.java
delete mode 100644 ruoyi-common/ruoyi-common-mybatis/src/main/java/org/ruoyi/common/mybatis/interceptor/PlusDataPermissionInterceptor.java
delete mode 100644 ruoyi-common/ruoyi-common-mybatis/src/main/java/org/ruoyi/common/mybatis/jakarta/DsJakartaHeaderProcessor.java
delete mode 100644 ruoyi-common/ruoyi-common-mybatis/src/main/java/org/ruoyi/common/mybatis/jakarta/DsJakartaSessionProcessor.java
rename ruoyi-common/ruoyi-common-mybatis/src/main/java/org/ruoyi/{common/mybatis => }/config/MybatisPlusConfig.java (66%)
rename ruoyi-common/ruoyi-common-mybatis/src/main/java/org/ruoyi/{common/mybatis => }/core/domain/BaseEntity.java (96%)
create mode 100644 ruoyi-common/ruoyi-common-mybatis/src/main/java/org/ruoyi/core/mapper/BaseMapperPlus.java
rename ruoyi-common/ruoyi-common-mybatis/src/main/java/org/ruoyi/{common/mybatis => }/core/page/PageQuery.java (90%)
rename ruoyi-common/ruoyi-common-mybatis/src/main/java/org/ruoyi/{common/mybatis => }/core/page/TableDataInfo.java (85%)
rename ruoyi-common/ruoyi-common-mybatis/src/main/java/org/ruoyi/{common/mybatis => }/enums/DataBaseType.java (74%)
create mode 100644 ruoyi-common/ruoyi-common-mybatis/src/main/java/org/ruoyi/enums/DataScopeType.java
create mode 100644 ruoyi-common/ruoyi-common-mybatis/src/main/java/org/ruoyi/handler/InjectionMetaObjectHandler.java
rename ruoyi-common/ruoyi-common-mybatis/src/main/java/org/ruoyi/{common/mybatis => }/handler/MybatisExceptionHandler.java (90%)
create mode 100644 ruoyi-common/ruoyi-common-mybatis/src/main/java/org/ruoyi/handler/PlusDataPermissionHandler.java
create mode 100644 ruoyi-common/ruoyi-common-mybatis/src/main/java/org/ruoyi/handler/PlusPostInitTableInfoHandler.java
rename ruoyi-common/ruoyi-common-mybatis/src/main/java/org/ruoyi/{common/mybatis => }/helper/DataBaseHelper.java (91%)
create mode 100644 ruoyi-common/ruoyi-common-mybatis/src/main/java/org/ruoyi/helper/DataPermissionHelper.java
create mode 100644 ruoyi-common/ruoyi-common-mybatis/src/main/java/org/ruoyi/interceptor/PlusDataPermissionInterceptor.java
create mode 100644 ruoyi-common/ruoyi-common-mybatis/src/main/resources/common-mybatis.yml
create mode 100644 ruoyi-common/ruoyi-common-mybatis/src/main/resources/spy.properties
create mode 100644 ruoyi-extend/pom.xml
rename {ruoyi-modules => ruoyi-extend}/ruoyi-mcp-server/pom.xml (71%)
rename {ruoyi-modules => ruoyi-extend}/ruoyi-mcp-server/src/main/java/org/ruoyi/mcp/McpServerApplication.java (100%)
rename {ruoyi-modules => ruoyi-extend}/ruoyi-mcp-server/src/main/java/org/ruoyi/mcp/config/McpServerConfig.java (100%)
create mode 100644 ruoyi-extend/ruoyi-mcp-server/src/main/java/org/ruoyi/mcp/service/McpCustomService.java
create mode 100644 ruoyi-extend/ruoyi-mcp-server/src/main/resources/application-dev.yml
rename ruoyi-modules/ruoyi-mcp-server/src/main/resources/application.yaml => ruoyi-extend/ruoyi-mcp-server/src/main/resources/application-mcp.yml (100%)
create mode 100644 ruoyi-extend/ruoyi-mcp-server/src/main/resources/application.yml
delete mode 100644 ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/vo/CacheListInfoVo.java
delete mode 100644 ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/vo/CaptchaVo.java
create mode 100644 ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/service/impl/ChatTokenServiceImpl.java
rename ruoyi-modules/ruoyi-chat/src/main/java/org/ruoyi/chat/service/knowledge/vectorstore/WeaviateVectorStore.java => ruoyi-modules-api/ruoyi-knowledge-api/src/main/java/org/ruoyi/service/impl/WeaviateVectorStoreImpl.java (99%)
rename ruoyi-modules/ruoyi-chat/src/main/java/org/ruoyi/chat/controller/{api => chat}/ChatController.java (95%)
rename ruoyi-modules/ruoyi-chat/src/main/java/org/ruoyi/chat/controller/{api => tripartite}/FaceController.java (97%)
rename ruoyi-modules/ruoyi-chat/src/main/java/org/ruoyi/chat/controller/{api => tripartite}/LumaController.java (97%)
rename ruoyi-modules/ruoyi-chat/src/main/java/org/ruoyi/chat/controller/{api => tripartite}/SubmitController.java (99%)
rename ruoyi-modules/ruoyi-chat/src/main/java/org/ruoyi/chat/controller/{api => tripartite}/SunoController.java (98%)
rename ruoyi-modules/ruoyi-chat/src/main/java/org/ruoyi/chat/controller/{api => tripartite}/TaskController.java (97%)
delete mode 100644 ruoyi-modules/ruoyi-chat/src/main/java/org/ruoyi/chat/factory/SseServiceFactory.java
delete mode 100644 ruoyi-modules/ruoyi-chat/src/main/java/org/ruoyi/chat/factory/VectorStoreFactory.java
delete mode 100644 ruoyi-modules/ruoyi-chat/src/main/java/org/ruoyi/chat/service/chat/impl/OpenAIServiceImpl.java
rename ruoyi-modules/ruoyi-chat/src/main/java/org/ruoyi/chat/service/knowledge/{vectorizer/BgeLargeVectorization.java => BgeLargeVectorizationImpl.java} (94%)
rename ruoyi-modules/ruoyi-chat/src/main/java/org/ruoyi/chat/service/knowledge/{vectorizer/OpenAiVectorization.java => OpenAiVectorizationImpl.java} (96%)
create mode 100644 ruoyi-modules/ruoyi-chat/src/main/java/org/ruoyi/chat/service/knowledge/VectorizationWrapper.java
delete mode 100644 ruoyi-modules/ruoyi-chat/src/main/java/org/ruoyi/chat/service/knowledge/vectorstore/MilvusVectorStore.java
delete mode 100644 ruoyi-modules/ruoyi-mcp-server/src/main/java/org/ruoyi/mcp/service/McpCustomService.java
diff --git a/pom.xml b/pom.xml
index 6798c157..fde84309 100644
--- a/pom.xml
+++ b/pom.xml
@@ -14,26 +14,26 @@
1.0.0
- 3.0.6
+ 3.4.4
UTF-8
UTF-8
17
8.0.33
- 3.0.1
+ 3.5.16
2.1.0
0.15.0
5.2.3
3.2.1
2.3
1.34.0
- 3.5.3.1
+ 3.5.11
3.9.1
- 5.8.18
+ 5.8.35
4.10.0
+ 4.3.1
3.0.3
3.20.1
2.2.4
- 3.6.1
2.14.2
2.4.0
1.2.1
@@ -42,10 +42,6 @@
1.72
2.7.0
-
-
- 1.33
-
1.12.400
@@ -202,22 +198,22 @@
${satoken.version}
-
-
- com.baomidou
- dynamic-datasource-spring-boot-starter
- ${dynamic-ds.version}
-
- org.mybatis.spring.boot
- mybatis-spring-boot-starter
- ${spring-boot.mybatis}
+ org.mybatis
+ mybatis
+ ${mybatis.version}
com.baomidou
- mybatis-plus-boot-starter
+ mybatis-plus-spring-boot3-starter
+ ${mybatis-plus.version}
+
+
+
+ com.baomidou
+ mybatis-plus-jsqlparser
${mybatis-plus.version}
@@ -227,6 +223,13 @@
${mybatis-plus.version}
+
+
+ com.baomidou
+ dynamic-datasource-spring-boot3-starter
+ ${dynamic-ds.version}
+
+
p6spy
@@ -277,13 +280,6 @@
${alibaba-ttl.version}
-
-
- org.yaml
- snakeyaml
- ${snakeyaml.version}
-
-
org.bouncycastle
@@ -341,11 +337,11 @@
${revision}
-
- org.ruoyi
- ruoyi-demo
- ${revision}
-
+
+
+
+
+
@@ -354,7 +350,8 @@
ruoyi-common
ruoyi-modules
ruoyi-modules-api
- ruoyi-modules/ruoyi-mcp-server
+ ruoyi-admin
+ ruoyi-extend
pom
diff --git a/ruoyi-admin/pom.xml b/ruoyi-admin/pom.xml
index a8276a4c..89003c2a 100644
--- a/ruoyi-admin/pom.xml
+++ b/ruoyi-admin/pom.xml
@@ -42,10 +42,11 @@
mssql-jdbc
-
- org.ruoyi
- ruoyi-common-doc
-
+
+
+
+
+
org.ruoyi
@@ -54,38 +55,7 @@
org.ruoyi
- ruoyi-fusion
-
-
-
- org.ruoyi
- ruoyi-knowledge
-
-
-
-
-
- org.ruoyi
- ruoyi-demo
-
-
-
- org.springframework.boot
- spring-boot-starter-test
- test
-
-
-
-
- net.coobird
- thumbnailator
- 0.4.11
-
-
- io.github.ollama4j
- ollama4j
- 1.0.79
- compile
+ ruoyi-chat
diff --git a/ruoyi-admin/src/main/java/org/ruoyi/controller/AuthController.java b/ruoyi-admin/src/main/java/org/ruoyi/controller/AuthController.java
index e78d09c0..5a7a514c 100644
--- a/ruoyi-admin/src/main/java/org/ruoyi/controller/AuthController.java
+++ b/ruoyi-admin/src/main/java/org/ruoyi/controller/AuthController.java
@@ -14,18 +14,17 @@ import org.ruoyi.common.core.utils.StreamUtils;
import org.ruoyi.common.core.utils.StringUtils;
import org.ruoyi.common.satoken.utils.LoginHelper;
import org.ruoyi.common.tenant.helper.TenantHelper;
-import org.ruoyi.system.domain.bo.SysTenantBo;
-import org.ruoyi.system.domain.vo.LoginTenantVo;
-import org.ruoyi.system.domain.vo.SysTenantVo;
-import org.ruoyi.system.domain.vo.TenantListVo;
-import org.ruoyi.system.service.ISysTenantService;
-
-import org.ruoyi.system.service.SysLoginService;
-import org.ruoyi.system.service.SysRegisterService;
-import org.ruoyi.system.domain.vo.LoginVo;
import jakarta.servlet.http.HttpServletRequest;
import lombok.RequiredArgsConstructor;
+import org.ruoyi.system.domain.bo.SysTenantBo;
+import org.ruoyi.system.domain.vo.LoginTenantVo;
+import org.ruoyi.system.domain.vo.LoginVo;
+import org.ruoyi.system.domain.vo.SysTenantVo;
+import org.ruoyi.system.domain.vo.TenantListVo;
+import org.ruoyi.system.service.ISysTenantService;
+import org.ruoyi.system.service.SysLoginService;
+import org.ruoyi.system.service.SysRegisterService;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
diff --git a/ruoyi-admin/src/main/java/org/ruoyi/controller/IndexController.java b/ruoyi-admin/src/main/java/org/ruoyi/controller/IndexController.java
index 4da12bc8..2a4ee1f0 100644
--- a/ruoyi-admin/src/main/java/org/ruoyi/controller/IndexController.java
+++ b/ruoyi-admin/src/main/java/org/ruoyi/controller/IndexController.java
@@ -4,6 +4,7 @@ import cn.dev33.satoken.annotation.SaIgnore;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RestController;
/**
* 首页
@@ -11,8 +12,7 @@ import org.springframework.web.bind.annotation.GetMapping;
* @author Lion Li
*/
@SaIgnore
-@RequiredArgsConstructor
-@Controller
+@RestController
public class IndexController {
/**
@@ -20,17 +20,9 @@ public class IndexController {
*/
@GetMapping("/")
public String index() {
- return "index.html";
+ return "RuoYi AI启动成功!";
}
- @GetMapping("/success")
- public String success(){
- return "paySuccess.html";
- }
- @GetMapping("/cancel")
- public String cancel(){
- return "cancel";
- }
}
diff --git a/ruoyi-admin/src/main/resources/application-dev.yml b/ruoyi-admin/src/main/resources/application-dev.yml
index 09c609c3..66a63e71 100644
--- a/ruoyi-admin/src/main/resources/application-dev.yml
+++ b/ruoyi-admin/src/main/resources/application-dev.yml
@@ -60,9 +60,6 @@ spring.data:
# password: 123456
# 连接超时时间
timeout: 10S
- # 是否开启ssl
- ssl: false
-
redisson:
# redis key前缀
keyPrefix:
@@ -97,22 +94,3 @@ sms:
# 腾讯专用
sdkAppId:
-spring:
- ai:
- openai:
- api-key: sk-xX
- base-url: https://api.pandarobot.chat
- ollama:
- base-url: http://localhost:11434
- init:
- pull-model-strategy: always
- timeout: 60s
- max-retries: 1
- mcp:
- client:
- enabled: true
- name: call-mcp-server
- sse:
- connections:
- server1:
- url: http://127.0.0.1:8080
diff --git a/ruoyi-admin/src/main/resources/application.yml b/ruoyi-admin/src/main/resources/application.yml
index 26173564..84be163e 100644
--- a/ruoyi-admin/src/main/resources/application.yml
+++ b/ruoyi-admin/src/main/resources/application.yml
@@ -49,8 +49,10 @@ server:
# 日志配置
logging:
level:
- org.ruoyi: @logging.level@
+ org.dromara: @logging.level@
org.springframework: warn
+ org.mybatis.spring.mapper: error
+ org.apache.fury: warn
config: classpath:logback-plus.xml
# 用户配置
@@ -318,5 +320,16 @@ wechat:
token: ''
aesKey: ''
-
+spring:
+ ai:
+ ollama:
+ base-url: http://localhost:11434
+ mcp:
+ client:
+ enabled: true
+ name: call-mcp-server
+ sse:
+ connections:
+ server1:
+ url: http://127.0.0.1:6040
diff --git a/ruoyi-admin/src/main/resources/static/.gitignore b/ruoyi-admin/src/main/resources/static/.gitignore
deleted file mode 100644
index 9e339689..00000000
--- a/ruoyi-admin/src/main/resources/static/.gitignore
+++ /dev/null
@@ -1,46 +0,0 @@
-######################################################################
-# Build Tools
-
-.gradle
-/build/
-!gradle/wrapper/gradle-wrapper.jar
-
-target/
-!.mvn/wrapper/maven-wrapper.jar
-
-######################################################################
-# IDE
-
-### STS ###
-.apt_generated
-.classpath
-.factorypath
-.project
-.settings
-.springBeans
-
-### IntelliJ IDEA ###
-.idea
-*.iws
-*.iml
-*.ipr
-
-### JRebel ###
-rebel.xml
-
-### NetBeans ###
-nbproject/private/
-build/*
-nbbuild/
-nbdist/
-.nb-gradle/
-
-######################################################################
-# Others
-*.log
-*.xml.versionsBackup
-*.swp
-
-!*/build/*.java
-!*/build/*.html
-!*/build/*.xml
diff --git a/ruoyi-admin/src/main/resources/static/.nojekyll b/ruoyi-admin/src/main/resources/static/.nojekyll
deleted file mode 100644
index e69de29b..00000000
diff --git a/ruoyi-admin/src/main/resources/static/CNAME b/ruoyi-admin/src/main/resources/static/CNAME
deleted file mode 100644
index 3a194c70..00000000
--- a/ruoyi-admin/src/main/resources/static/CNAME
+++ /dev/null
@@ -1 +0,0 @@
-plus-doc.dromara.org
\ No newline at end of file
diff --git a/ruoyi-admin/src/main/resources/static/README.md b/ruoyi-admin/src/main/resources/static/README.md
deleted file mode 100644
index b50e2523..00000000
--- a/ruoyi-admin/src/main/resources/static/README.md
+++ /dev/null
@@ -1,74 +0,0 @@
-# 框架介绍
-- - -
-- `RuoYi-Vue-Plus` 分布式集群框架 [文档跳转](/ruoyi-vue-plus/home.md)
-- `RuoYi-Cloud-Plus` 微服务框架 [文档跳转](/ruoyi-cloud-plus/home.md)
-- `plus-ui` 统一 Vue3 前端项目 [文档跳转](/plus-ui/home.md)
-- `plus-doc` 统一文档项目
-
-## 特别赞助
-
-
-
-
-
-
-
-
-
-[如何成为赞助商 加群联系作者详谈](/common/add_group.md)
-
-## 代码地址
-
-| 介绍 | 项目名 | 项目地址 | 注意事项 |
-|------------|:-----------------|------------------------------------------------------------------------------------------------------------------------|----------------------------|
-| 🔥 分布式集群框架 | RuoYi-Vue-Plus | - [Gitee](https://gitee.com/dromara/RuoYi-Vue-Plus)
- [GitHub](https://github.com/dromara/RuoYi-Vue-Plus) | 重写RuoYi-Vue全方位升级(不兼容原框架) |
-| 🔥 微服务框架 | RuoYi-Cloud-Plus | - [Gitee](https://gitee.com/dromara/RuoYi-Cloud-Plus)
- [GitHub](https://github.com/dromara/RuoYi-Cloud-Plus) | 重写RuoYi-Cloud全方位升级(不兼容原框架) |
-| 🔥 统一前端项目 | plus-ui | - [Gitee](https://gitee.com/JavaLionLi/plus-ui)
- [GitHub](https://github.com/JavaLionLi/plus-ui) | Vue与Cloud项目通用前端 |
-| 🔥 统一文档项目 | plus-doc | - [Gitee](https://gitee.com/dromara/plus-doc)
- [GitHub](https://github.com/dromara/plus-doc) | 通用文档 |
-
-
-## 业务功能
-
-| 功能 | 介绍 |
-|-------|---------------------------------------|
-| 租户管理 | 配置系统租户,支持 SaaS 场景下的多租户功能。 |
-| 用户管理 | 用户是系统操作者,该功能主要完成系统用户配置。 |
-| 部门管理 | 配置系统组织机构(公司、部门、小组),树结构展现支持数据权限。 |
-| 岗位管理 | 配置系统用户所属担任职务。 |
-| 菜单管理 | 配置系统菜单,操作权限,按钮权限标识等。 |
-| 角色管理 | 角色菜单权限分配、设置角色按机构进行数据范围权限划分。 |
-| 字典管理 | 对系统中经常使用的一些较为固定的数据进行维护。 |
-| 参数管理 | 对系统动态配置常用参数。 |
-| 通知公告 | 系统通知公告信息发布维护。 |
-| 操作日志 | 系统正常操作日志记录和查询;系统异常信息日志记录和查询。 |
-| 登录日志 | 系统登录日志记录查询包含登录异常。 |
-| 文件管理 | 系统文件上传、下载等管理。 |
-| 定时任务 | 在线(添加、修改、删除)任务调度包含执行结果日志。 |
-| 代码生成 | 前后端代码的生成(java、html、xml、sql)支持CRUD下载 。 |
-| 系统接口 | 根据业务代码自动生成相关的api接口文档。 |
-| 服务监控 | 监视集群系统CPU、内存、磁盘、堆栈、在线日志、Spring相关配置等。 |
-| 缓存监控 | 对系统的缓存信息查询,命令统计等。 |
-| 在线构建器 | 拖动表单元素生成相应的HTML代码。 |
-| 使用案例 | 系统的一些功能案例 |
-
-## 关注作者
-
-作者博客: [https://lionli.blog.csdn.net/?type=blog](https://lionli.blog.csdn.net/?type=blog)
-
-公众号: **<狮子领域 程序圈>**
-
-
-
-## 捐献作者
-
-**作者为兼职做开源,平时还需要工作,如果帮到了您可以请作者吃个盒饭**
-
-
-
-## Dromara 全家福
-
-社区仓库地址: [dromara开源社区](https://gitee.com/organizations/dromara/projects)
-
-
-
-
diff --git a/ruoyi-admin/src/main/resources/static/_coverpage.md b/ruoyi-admin/src/main/resources/static/_coverpage.md
deleted file mode 100644
index d84bf0dc..00000000
--- a/ruoyi-admin/src/main/resources/static/_coverpage.md
+++ /dev/null
@@ -1,32 +0,0 @@
-
-
-
-
-
-
百搭AI
-
-
-[](https://gitee.com/ageerle/ruoyi-ai)
-[](https://github.com/dromara/RuoYi-Vue-Plus)
-[](https://gitee.com/ageerle/ruoyi-ai/blob/master/LICENSE)
-
-[](https://gitee.com/ageerle/ruoyi-ai)
-[]()
-
-
-
-
-
-
-
-
-
-> 百搭AI是一个整合了多种大语言模型API的开源平台,实现了AI对话、绘图、声音克隆和私有知识库等功能。
->
-> 平台配备管理后台,支持微信支付、微信公众号、微信多开、Stripe国际支付和百度文本审核等运营功能。
->
-> 项目采用Java+Vue+Vben5技术栈构建,遵循MIT License,允许二次开发并用于商业销售。
-
-Copyright © 2023-2024 版权所有:ageerle@163.com 备案号:鄂ICP备2023007672号
-
-[开始使用 Let's Go](/README.md)
\ No newline at end of file
diff --git a/ruoyi-admin/src/main/resources/static/_footer.md b/ruoyi-admin/src/main/resources/static/_footer.md
deleted file mode 100644
index 7f5f9a3f..00000000
--- a/ruoyi-admin/src/main/resources/static/_footer.md
+++ /dev/null
@@ -1,2 +0,0 @@
-
-对文档有疑问?欢迎您帮助我们 [完善此文档](https://gitee.com/JavaLionLi/plus-doc) !
\ No newline at end of file
diff --git a/ruoyi-admin/src/main/resources/static/_navbar.md b/ruoyi-admin/src/main/resources/static/_navbar.md
deleted file mode 100644
index e893825f..00000000
--- a/ruoyi-admin/src/main/resources/static/_navbar.md
+++ /dev/null
@@ -1,9 +0,0 @@
-
-
-* [文档导航](/README.md)
-* [Vue版本](/ruoyi-vue-plus/home.md)
-* [Cloud版本](/ruoyi-cloud-plus/home.md)
-* [前端文档](/plus-ui/home.md)
-* [常见问题](/questions/lombok.md)
-* [视频教程](/common/video.md)
-* [演示系统](/common/demo_system.md)
diff --git a/ruoyi-admin/src/main/resources/static/_sidebar.md b/ruoyi-admin/src/main/resources/static/_sidebar.md
deleted file mode 100644
index 0446edc6..00000000
--- a/ruoyi-admin/src/main/resources/static/_sidebar.md
+++ /dev/null
@@ -1,16 +0,0 @@
-
-- **特别赞助**
-- [](http://ccflow.org/?frm=ryPlus)
-- [](http://www.shuduokeji.com)
-- [](https://www.jnpfsoft.com/index.html?from=plus-doc)
-
-- **开始**
- - [框架介绍](/README.md)
- - [演示系统](/common/demo_system.md)
- - [官方视频教程](/common/video.md)
- - [粉丝专栏](/common/column.md)
- - [参与贡献项目](/common/contribution.md)
- - [如何提交PR](/common/pr.md)
- - [如何加群](/common/add_group.md)
- - [使用者登记](/common/user_register.md)
- - [黑名单](/common/blacklist.md)
\ No newline at end of file
diff --git a/ruoyi-admin/src/main/resources/static/common/add_group.md b/ruoyi-admin/src/main/resources/static/common/add_group.md
deleted file mode 100644
index f6957bc4..00000000
--- a/ruoyi-admin/src/main/resources/static/common/add_group.md
+++ /dev/null
@@ -1,27 +0,0 @@
-# 加群方式
-- - -
-### 交流群(不提供任何问题解答 纯交流)
-
-**加 <小助手> 微信备注 <加群>**
-**视频课程咨询或其他问题咨询请查看下方信息(小助手是机器人)**
-
-
-
-### VIP群(付费加群 提供问题解答、技术支持、技术分享)
-
-首先感谢 `RuoYi` 提供分享开源 框架基于 `RuoYi` 重写大部分功能实现
-项目代码、文档 均开源免费可商用 遵循开源协议在项目中保留开源协议文件即可
-VIP群是作者提供的私人服务 不代表着项目收费
-
-> 问问题等于做习题 听作者解答问题等于习题讲解
-> 一个人接触的问题有限 一群人接触的问题无限 早进群早接触更多的问题(每天99+)
-> 承诺: 看见必回复 让你感受作者有多话痨
-
-两种途径:
-1. 购买官方视频进群 [官方视频](/common/video.md)
-2. 扫描下方二维码付款进群(无视频)
-
-支付后申请加群即可 QQ群号 : **<637757165>**
-
-**加群扫码**
-
diff --git a/ruoyi-admin/src/main/resources/static/common/blacklist.md b/ruoyi-admin/src/main/resources/static/common/blacklist.md
deleted file mode 100644
index 67594bd3..00000000
--- a/ruoyi-admin/src/main/resources/static/common/blacklist.md
+++ /dev/null
@@ -1,7 +0,0 @@
-# 黑名单
-- - -
-
-地址: https://github.com/QNAV/RuoYi-X-Plus
-
-上榜缘由 使用本框架二次开源并未有任何声明与标注 将所有代码的作者名全都改成了自己 剽窃本框架代码
-
diff --git a/ruoyi-admin/src/main/resources/static/common/column.md b/ruoyi-admin/src/main/resources/static/common/column.md
deleted file mode 100644
index b2155a3c..00000000
--- a/ruoyi-admin/src/main/resources/static/common/column.md
+++ /dev/null
@@ -1,18 +0,0 @@
-# 粉丝专栏
-- - -
-**由上到下 从易到难**
-
-> 粉丝整理 欢迎投稿
-
-| 作者 | 文档地址 | 说明 |
-|---------------|---------------------------------------------------------------|--------------------|
-| 抓蛙师 | https://www.bilibili.com/video/BV1TG41157Ef/ | 学会问问题(小白必看) |
-| 抓蛙师 | https://www.bilibili.com/video/BV1mr4y1j75M | Vue框架基础视频专栏(新人必看) |
-| 抓蛙师 | https://www.bilibili.com/video/BV1Na411u7eC | Vue框架改造视频专栏(新人必看) |
-| 抓蛙师 | https://www.bilibili.com/video/BV1te4y1D7hi | 小程序鉴权与uniapp联动 |
-| 抓蛙师 | https://www.bilibili.com/video/BV1zt4y137UP | 公众号集成 |
-| mayuanfei | https://note.youdao.com/s/XpvKnxAb | 入门专栏(新人必看) |
-| 程序猿一枚_ | https://blog.csdn.net/zhaozhiqiang1981/category_12221291.html | 玩转RuoYi-Cloud-Plus |
-| 程序猿一枚_ | https://www.bilibili.com/video/BV1yA411r7ji/ | Cloud环境搭建以及进阶开发 |
-| MichelleChung | https://blog.csdn.net/michelle_zhong/category_11109741.html | 源码解析专栏(进阶必看) |
-| MichelleChung | https://blog.csdn.net/michelle_zhong/category_12058476.html | Cloud源码解析专栏 |
diff --git a/ruoyi-admin/src/main/resources/static/common/contribution.md b/ruoyi-admin/src/main/resources/static/common/contribution.md
deleted file mode 100644
index 6b5909e6..00000000
--- a/ruoyi-admin/src/main/resources/static/common/contribution.md
+++ /dev/null
@@ -1,69 +0,0 @@
-# 参与贡献的方式
-- - -
-参与贡献开源的方式有很多种 听作者来介绍
-
-## 为开源项目点一个Star
-
-> Star的多少关系到项目能否被更多人看到
-
-同时Star也是作者前进的动力(作者每天都在盯着Star 涨了会开心 跌了会失落)
-
-
-> 大家在寻找开源项目的时候, 大多数情况也是会先看Star比较多的项目
-
-所以请给您觉得好的开源项目点一个小小的Star, 让好的项目能够被更多人看到
-
-
-
-
-Vue版本: [Gitee我要点Star](https://gitee.com/dromara/RuoYi-Vue-Plus/stargazers) [Github我要点Star](https://github.com/dromara/RuoYi-Vue-Plus)
-
-Cloud版本: [Gitee我要点Star](https://gitee.com/dromara/RuoYi-Cloud-Plus/stargazers) [Github我要点Star](https://github.com/dromara/RuoYi-Cloud-Plus)
-
-## 为社区处理问题
-
-> Issue是社区的交流地 大家会在这里提出自己的问题 或者是项目的功能异常
-
-> 提问的规范在Issue的模板里已经写好了 按照模板填写有助于作者或者其他社区人员快速有效的回答问题
-
-
-> 为提出问题的小伙伴答疑 可以有效降的帮助别人
-> 而且可以降低社区人员的精力分散 使精力全部投入到项目设计研发中
-
-
-## 改进社区文档
-
-> 大家都知道 我们程序员都不擅长写作
-> 有时候作者把文档写完了也不知道用户是什么感觉 是否能看懂
-
-> 所以参与社区文档建设绝对是一件意义重大的事情
-> 大家可以在Issue提出观后感 觉得哪看不懂 觉得哪应该详细说明
-> 当然了 大家也可以对文档进行改进后提交PR修改申请
-
-文档仓库: [plus-doc](https://gitee.com/JavaLionLi/plus-doc) 👈点他点他
-
-
-## 贡献代码
-
-> 想参与贡献代码的小伙伴 重点来了: 作者会经常在Issue里发布需求认领
-> 觉得自己能做的可以在Issue里跟作者讨论 如需求还不够清晰 或者做的过程中遇到了什么问题
-
-
-
-> 需求确定了以后就可以开始专注的写代码了
-> 但在开始写代码之前 一定要先看一下如何正确的提交PR
-
-一点要仔细看: [如何提交PR](/common/pr.md) 👈点他点他
-
-## 如何成为项目成员
-
-> 1.对框架有重大贡献者(由作者与团队成员判定)
-> 2.完成社区发布的两项复杂任务
-> 3.持续完成社区发布的简单任务若干(作者会关注到)
-> 4.持续为社区优化文档或处理issue若干(作者会关注到)
-
-## 项目成员待遇
-
-> 1.可免费进入vip收费群
-> 2.每年还会发放IDEA正版授权
-
diff --git a/ruoyi-admin/src/main/resources/static/common/demo_system.md b/ruoyi-admin/src/main/resources/static/common/demo_system.md
deleted file mode 100644
index 18424e90..00000000
--- a/ruoyi-admin/src/main/resources/static/common/demo_system.md
+++ /dev/null
@@ -1,13 +0,0 @@
-# 系统演示(请大家不要乱改数据 影响他人体验 谢谢配合)
-- - -
-**感谢 `孤舟烟雨` 贡献的演示服务器**
-
-**1核2G 小服务器 经不起压测 请理性操作 违者直接封IP**
-
-> 访问地址: [http://43.138.9.96/](http://43.138.9.96/)
-
-> 登录账户 admin/admin123
-
-> Admin监控中心 ruoyi/123456
-
-> 任务调度中心 admin/123456
diff --git a/ruoyi-admin/src/main/resources/static/common/pr.md b/ruoyi-admin/src/main/resources/static/common/pr.md
deleted file mode 100644
index e9684dd4..00000000
--- a/ruoyi-admin/src/main/resources/static/common/pr.md
+++ /dev/null
@@ -1,37 +0,0 @@
-# 如何提交PR贡献代码
-- - -
-### 步骤一 Fork项目到自己仓库
-
-
-
-### 步骤二 基于dev分支 新建一个此PR功能点的专属分支
-
-
-
-
-### 步骤三 使用Git工具 将自己仓库的项目拉去到本地做代码编写
-
-
-
-### 步骤四 使用Idea打开项目 切换到新建的功能分支
-
-
-
-### 步骤五 将编写好的代码 提交到自己的远程仓库
-
-
-
-### 步骤六 创建PR申请(此操作在自己仓库或者要PR的仓库都可以)
-
-
-
-
-### 步骤七 等待作者评审 按要求更改 直到没有问题后被作者合并
-
-
-
-### 评审期间 如需对PR内容做更改 直接在新功能分支提交代码即可
-### 无需重复提交PR申请 这边会自动比对两个分支的差异
-
-
-
diff --git a/ruoyi-admin/src/main/resources/static/common/user_register.md b/ruoyi-admin/src/main/resources/static/common/user_register.md
deleted file mode 100644
index 9c221cd1..00000000
--- a/ruoyi-admin/src/main/resources/static/common/user_register.md
+++ /dev/null
@@ -1,80 +0,0 @@
-# 使用者登记
-- - -
-**使用此开源项目的公司或者组织**
-> Vue版本登记地址: https://gitee.com/dromara/RuoYi-Vue-Plus/issues/I4QP39
-
-> Cloud版本登记地址: https://gitee.com/dromara/RuoYi-Cloud-Plus/issues/I4VJ7G
-
-| 公司名 | 官网 | LOGO |
-|-------------------|:-------------------------------|----------------------------------------------------------------------------------------------------------------|
-| 中国联通(长春分公司) | http://www.10010.com |
|
-| 中国电信(湖南分公司) | http://www.189.cn/hn/ |
|
-| 南京感知信息技术有限公司 | https://njgzxx.cn/ |
|
-| 陕西骏景索道运营管理有限公司 | https://www.junjingsuodao.com/ |
|
-| 悠码科技有限公司 | https://orise.trytowish.cn/ |
|
-| 苏州龙的信息系统股份有限公司 | http://www.longdayinfo.com/ |
|
-| 北京数通智达科技有限公司 | http://www.bzdtech.com/ |
|
-| 广州六六七七科技有限公司 | https://artiversehub.ai/ |
|
-| 宁波三品软件科技有限公司 | http://nbsanpin.com/ |
|
-| 北京御一科技信息技术有限公司 | https://www.yudoctor.com |
|
-| 成都卡恩特医疗科技有限公司 | http://www.scknot.com |
|
-| 无锡科艾思科技有限公司 | https://www.kyoeis.com |
|
-| 深圳市海联天下科技有限公司 | www.sealinkin.com |
|
-| 上海非定义旅游服务有限公司 | http://www.anonymity.love/ |
|
-| 重庆威爱云科技有限公司 | https://www.51vive.com |
|
-| 中城智联(成都)创新科技有限公司 | http://www.zc-zl.com/ |
|
-| 浙江海亮股份有限公司 | https://www.hailiangstock.com |
|
-| 河北雄安山禾咨询工程有限公司 | https://shanheqei.club/ |
|
-| 数舵(河北雄安)信息科技有限公司 | http://www.shuduokeji.com |
|
-| 南昌鼎欣科技股份有限公司 | https://www.openzt.com |
|
-| 东莞市码载网络科技有限公司 | https://www.codeload.top |
|
-| 北京农信通科技有限责任公司 | http://www.nxt.com.cn |
|
-| 中康腾华网络科技(重庆)有限公司 | https://www.zkthwlkj.com/ |
|
-| 杭州码恒信息科技有限公司 | http://www.mh-barcode.com/ |
|
-| 南京晶益科技有限公司 | https://www.nanjingjingyi.com/ |
|
-| 合肥智享亿云科技有限公司 | http://www.izxyy.com |
|
-| 锡简科技 | https://www.xj-fast.com |
|
-| 福建亘前科技有限公司 | https://genqian.top |
|
-| 北京联宇信通科技有限公司 | http://www.lyxtkj.com/ |
|
-| 厦门市熵时光科技有限公司 | https://www.xetsoft.com |
|
-| 广州润沁教育科技有限公司 | https://www.ca163.net |
|
-| 广东乐善智能装备股份有限公司 | https://www.china-leshan.com/ |
|
-| 数字江西科技有限公司 | https://www.digitaljx.com/ |
|
-| 上海极锐星瀚传感技术有限公司 | http://www.jrsensing.com/ |
|
-| 北京数影互联科技有限公司 | http://www.dataflying.top/ |
|
-| 广州创服信息科技有限公司 | https://www.cfkjcloud.com |
|
-| 茂名云智科技有限公司 | http://www.winzkj.com |
|
-| 成都时光旅迹科技有限公司 | https://www.ttmup.com/ |
|
-| 成都炫影全息科技有限公司 | http://xyqxgs.com |
|
-| 中山厚德快速模具有限公司 | http://hordrt.com |
|
-| 深圳市深南夙星科技有限公司 | http://www.szsnsx.com/ |
|
-| 陕西华恒军创信息科技有限公司 | http://hhjc.cc |
|
-| 河南小牛信息科技有限公司 | http://www.hnxn888.com/ |
|
-| 武汉华智讯网络信息技术有限公司 | http://www.xun188.com |
|
-| 易税信息技术有限公司 | https://www.etax.top |
|
-| 广西华景城建筑设计有限公司 | http://www.hjcadc.com |
|
-| 铭创科技有限公司 | https://www.mcck.cn/ |
|
-| 西安鼎慧网络科技有限公司 | |
|
-| 营口鼎瑞网络科技有限公司 | |
|
-| 南昌漫库书店有限公司 | |
|
-| 广西文韬智能科技有限公司 | |
|
-| 贵州亿瑞祺科技有限公司 | |
-| 贵州新绿视界环保科技有限公司 | |
-| 湖南智才伯乐数据科技有限公司 | |
-| 德州商储超市有限公司 | |
-| 曲沃亿分科技中心 | |
-| 南京杰度信息技术有限公司 | |
-| 武汉忆秋科技有限公司 | |
-| 济南千惠网络科技有限公司 | |
-| 江苏泛联科技有限公司 | |
-| 沈阳市果冻网络信息科技有限责任公司 | |
-| 灵劲科技有限公司 | |
-| 亿世达餐饮管理(北京)有限公司 | |
-| 深圳市凯帝电子商务有限公司 | |
-| 成都数智源蓉卡科技有限公司 | |
-| 上海振福信息科技有限公司 | |
-| 重庆六客会科技有限公司 | |
-| 无限创优(西安)科技有限公司 | |
-| 惠族网络科技发展有限公司 | |
-| 纳森科技有限公司 | |
-
diff --git a/ruoyi-admin/src/main/resources/static/common/video.md b/ruoyi-admin/src/main/resources/static/common/video.md
deleted file mode 100644
index 14fc2752..00000000
--- a/ruoyi-admin/src/main/resources/static/common/video.md
+++ /dev/null
@@ -1,85 +0,0 @@
-# 视频教程(联合出品)
-
-### 主讲与后期剪辑: `抓蛙师`
-
-抓蛙师简介: B站知名UP主 B站首页: https://space.bilibili.com/520725002
-
-### 知识点统筹与内容审核: `疯狂的狮子Li`
-
-疯狂的狮子Li简介: RuoYi-Vue-Plus 与 RuoYi-Cloud-Plus 作者
-
-## 已完结🎉🎉🎉 优惠价: 598(仅限前500名) ~~原价: 698~~
-
-**注意: 视频采用 RuoYi-Vue-Plus 版本 4.X 分支讲解!!! (内容为通用技术与版本关联性不大)**
-**内容为框架内所用到的技术与设计原理(打破不知道、不会用、不知应用场景等问题)**
-
-课程简介: https://www.bilibili.com/video/BV16j411D7BX/
-
-试看课程: https://www.bilibili.com/video/BV1uS411P7JD/
-
-试看课程: https://www.bilibili.com/video/BV1vLbNeuESn/
-
-试看课程: https://www.bilibili.com/video/BV1xV4y127KM/
-
-试看课程: https://www.bilibili.com/video/BV1W5v8eBEgs/
-
-课程总结: https://www.bilibili.com/video/BV1734y1g7fk/
-
-
-## 购买方式
-
-**小本生意 用心录制 拒绝砍价 已更新到 236 集 课程完结**
-> 课程咨询或购买请联系 价格598
-> QQ: 906670865 (疯狂的狮子Li)
-> QQ: 770492966 (抓蛙师)
-
-## 购买前常见问题答疑
-> 问题1: 购买后是否有群可以解答问题
-> 答: 购买后有专属课程付费群(千人大群)讲师在线答疑
->
-> 问题2: 是否持续更新 如新版本功能
-> 答: 课程目录即为全部课程内容 以课程目录为准 明年大概会出二期来讲新版本内容
-> 因为持续更新会导致前面的技术老旧 新购买的人无法及时学习新技术
-> 故而采用分期出课程制度 已经购买过的老客户 再次购买下一次会给力度非常大的折扣
->
-> 问题3: 目前视频未全部录制完成 后续更新是否二次收费
-> 答: 视频目录即为全部视频内容 一次收费后续更新仍然可看直到视频全部更新完成(明年出二期课程不算在内)
->
-> 问题4: 视频如何下载如何观看
-> 答: 视频文件已加密 采用专门的播放器(播放器只限制截图录屏等不限制其他软件使用) 由管理员发放授权码观看
-> 支持通过 百度云 或者 阿里云 网盘下载视频资源
->
-> 问题5: 视频平均时长和总时长大概多久
-> 答: 视频每集短的大概10分钟以上 长的大概40个分钟左右 平均时长20多分钟每集
-> 目前已经录制了236集总时长为80多个小时
->
-> 问题6: 是否有讲解 Cloud 版本相关内容
-> 答: 视频主要讲解内容为框架内所用到的技术与设计原理 无论什么版本 功能和设计都是一样的
-> Cloud 版本只是多了 alibaba 的几个组件完全可以B站自学
-
-## 课程目录
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-## 学员观后感
-
-| | |
-|---------------------------------------------------------------------------------------------|---------------------------------------------------------------------------------------------|
-|  |  |
-|  |  |
-|  |  |
-|  |  |
-|  |  |
-|  |  |
-|  |  |
diff --git a/ruoyi-admin/src/main/resources/static/index.html b/ruoyi-admin/src/main/resources/static/index.html
deleted file mode 100644
index 76e44328..00000000
--- a/ruoyi-admin/src/main/resources/static/index.html
+++ /dev/null
@@ -1,74 +0,0 @@
-
-
-
-
- plus-doc
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/ruoyi-admin/src/main/resources/static/plus-ui/_sidebar.md b/ruoyi-admin/src/main/resources/static/plus-ui/_sidebar.md
deleted file mode 100644
index 00197250..00000000
--- a/ruoyi-admin/src/main/resources/static/plus-ui/_sidebar.md
+++ /dev/null
@@ -1,22 +0,0 @@
-
-- **特别赞助**
-- [](http://ccflow.org/?frm=ryPlus)
-- [](http://www.shuduokeji.com)
-- [](https://www.jnpfsoft.com/index.html?from=plus-doc)
-
-
-* **简介**
- * [项目简介](/plus-ui/home.md)
-* **开发文档**
- * [通用方法](/plus-ui/devdoc/common_func.md)
- * [开发规范](/plus-ui/devdoc/dev_norm.md)
- * [请求流程](/plus-ui/devdoc/request_process.md)
- * [路由使用](/plus-ui/devdoc/router_use.md)
- * [组件使用](/plus-ui/devdoc/component_use.md)
- * [权限使用](/plus-ui/devdoc/permissions_use.md)
- * [页签缓存](/plus-ui/devdoc/page_cache.md)
- * [使用图标](/plus-ui/devdoc/icon_use.md)
- * [使用字典](/plus-ui/devdoc/dict_use.md)
- * [使用参数](/plus-ui/devdoc/param_use.md)
- * [异常处理](/plus-ui/devdoc/exception_handling.md)
- * [内容复制](/plus-ui/devdoc/content_copy.md)
diff --git a/ruoyi-admin/src/main/resources/static/plus-ui/devdoc/common_func.md b/ruoyi-admin/src/main/resources/static/plus-ui/devdoc/common_func.md
deleted file mode 100644
index e359c03c..00000000
--- a/ruoyi-admin/src/main/resources/static/plus-ui/devdoc/common_func.md
+++ /dev/null
@@ -1,234 +0,0 @@
-# 通用方法
-- - -
-
-### $tab对象
-> `$tab`对象用于做页签操作、刷新页签、关闭页签、打开页签、修改页签等,它定义在`plugins/tab.ts`文件中,它有如下方法
-* 打开页签
-
-```typescript
-// 打开页签
-proxy?.$tab.openPage('/system/user');
-// 打开页签并指定页签标题
-proxy?.$tab.openPage('/system/user', '用户管理');
-proxy?.$tab.openPage('/system/user', '用户管理').then(() => {
- // 执行结束的逻辑
-})
-```
-
-* 修改页签
-
-```typescript
-// 修改当前页签
-const obj = Object.assign({}, route, { title: '自定义标题' });
-proxy?.$tab.updatePage(obj);
-```
-* 关闭页签
-
-```typescript
-// 关闭当前
-proxy?.$tab.closePage();
-// 关闭指定页签
-const obj = { path: "/system/user", name: "User" };
-proxy?.$tab.closePage(obj);
-
-proxy?.$tab.closePage(obj).then(() => {
- // 执行结束的逻辑
-})
-```
-
-* 刷新页签
-
-```typescript
-// 刷新当前页签
-proxy?.$tab.refreshPage();
-
-// 刷新指定页签
-const obj = { path: "/system/user", name: "User" };
-proxy?.$tab.refreshPage(obj);
-
-proxy?.$tab.refreshPage(obj).then(() => {
- // 执行结束的逻辑
-})
-```
-
-* 关闭所有页签
-
-```typescript
-proxy?.$tab.closeAllPage();
-
-proxy?.$tab.closeAllPage().then(() => {
- // 执行结束的逻辑
-})
-```
-
-* 关闭左侧页签
-
-```typescript
-// 关闭当前页签的左侧页签
-proxy?.$tab.closeLeftPage();
-
-// 关闭指定页签的左侧页签
-const obj = { path: "/system/user", name: "User" };
-proxy?.$tab.closeLeftPage(obj);
-
-proxy?.$tab.closeLeftPage(obj).then(() => {
- // 执行结束的逻辑
-})
-```
-
-* 关闭右侧页签
-
-```typescript
-// 关闭当前页签的右侧页签
-proxy?.$tab.closeRightPage();
-
-// 关闭指定页签的右侧页签
-const obj = { path: "/system/user", name: "User" };
-proxy?.$tab.closeRightPage(obj);
-
-proxy?.$tab.closeRightPage(obj).then(() => {
- // 执行结束的逻辑
-})
-```
-
-* 关闭其他页签
-
-```typescript
-proxy?.$tab.closeOtherPage();
-
-const obj = { path: "/system/user", name: "User" };
-proxy?.$tab.closeOtherPage(obj);
-
-proxy?.$tab.closeOtherPage(obj).then(() => {
- // 执行结束的逻辑
-})
-```
-
-### $modal对象
-> `$modal`对象用于做消息提示、通知提示、对话框提醒、二次确认、遮罩等,它定义在`plugins/modal.ts`文件中,它有如下方法
-
-* 提供成功、警告和错误等反馈信息
-
-```typescript
-proxy?.$modal.msg("默认反馈");
-proxy?.$modal.msgError("错误反馈");
-proxy?.$modal.msgSuccess("成功反馈");
-proxy?.$modal.msgWarning("警告反馈");
-```
-
-* 提供成功、警告和错误等提示信息
-
-```typescript
-proxy?.$modal.alert("默认提示");
-proxy?.$modal.alertError("错误提示");
-proxy?.$modal.alertSuccess("成功提示");
-proxy?.$modal.alertWarning("警告提示");
-```
-
-* 提供成功、警告和错误等通知信息
-
-```typescript
-proxy?.$modal.notify("默认通知");
-proxy?.$modal.notifyError("错误通知");
-proxy?.$modal.notifySuccess("成功通知");
-proxy?.$modal.notifyWarning("警告通知");
-```
-
-* 提供确认窗体信息
-
-```typescript
-proxy?.$modal.confirm('确认信息').then(function() {
- ...
-}).then(() => {
- ...
-}).catch(() => {});
-```
-
-* 提供遮罩层信息
-
-```typescript
-// 打开遮罩层
-proxy?.$modal.loading("正在导出数据,请稍后...");
-
-// 关闭遮罩层
-proxy?.$modal.closeLoading();
-```
-
-### $auth对象
-> `$auth`对象用于验证用户是否拥有某(些)权限或角色,它定义在`plugins/auth.ts`文件中,它有如下方法
-
-* 验证用户权限
-
-```typescript
-// 验证用户是否具备某权限
-proxy?.$auth.hasPermi("system:user:add");
-// 验证用户是否含有指定权限,只需包含其中一个
-proxy?.$auth.hasPermiOr(["system:user:add", "system:user:update"]);
-// 验证用户是否含有指定权限,必须全部拥有
-proxy?.$auth.hasPermiAnd(["system:user:add", "system:user:update"]);
-```
-
-* 验证用户角色
-
-```typescript
-// 验证用户是否具备某角色
-proxy?.$auth.hasRole("admin");
-// 验证用户是否含有指定角色,只需包含其中一个
-proxy?.$auth.hasRoleOr(["admin", "common"]);
-// 验证用户是否含有指定角色,必须全部拥有
-proxy?.$auth.hasRoleAnd(["admin", "common"]);
-```
-
-### $cache对象
-> `$cache`对象用于处理缓存。我们并不建议您直接使用`sessionStorage`或`localStorage`(vue3版本推荐使用useStorage),因为项目的缓存策略可能发生变化,通过`$cache`对象做一层调用代理则是一个不错的选择。`$cache`提供`session`和`local`两种级别的缓存,如下:
-
-| 对象名称 | 缓存类型 |
-| -------- | ---------------------------------- |
-| session | 会话级缓存,通过sessionStorage实现 |
-| local | 本地级缓存,通过localStorage实现 |
-
-
-**示例**
-
-```typescript
-// local 普通值
-proxy?.$cache.local.set('key', 'local value')
-console.log(proxy?.$cache.local.get('key')) // 输出'local value'
-
-// session 普通值
-proxy?.$cache.session.set('key', 'session value')
-console.log(proxy?.$cache.session.get('key')) // 输出'session value'
-
-// local JSON值
-proxy?.$cache.local.setJSON('jsonKey', { localProp: 1 })
-console.log(proxy?.$cache.local.getJSON('jsonKey')) // 输出'{localProp: 1}'
-
-// session JSON值
-proxy?.$cache.session.setJSON('jsonKey', { sessionProp: 1 })
-console.log(proxy?.$cache.session.getJSON('jsonKey')) // 输出'{sessionProp: 1}'
-
-// 删除值
-proxy?.$cache.local.remove('key')
-proxy?.$cache.session.remove('key')
-```
-
-### $download对象
-
-> `$download`对象用于文件下载,它定义在`plugins/download.ts`文件中,它有如下方法
-
-* 通过ossId从存储中下载文件
-
-``` typescript
-// 默认下载方法
-proxy?.$download.oss(ossId);
-```
-
-* 根据请求地址下载zip包
-
-```typescript
-const url = '/tool/gen/batchGenCode?tables=' + tableNames;
-const name = 'ruoyi';
-
-// 默认方法
-proxy?.$download.zip(url, name);
-```
diff --git a/ruoyi-admin/src/main/resources/static/plus-ui/devdoc/component_use.md b/ruoyi-admin/src/main/resources/static/plus-ui/devdoc/component_use.md
deleted file mode 100644
index 18886db5..00000000
--- a/ruoyi-admin/src/main/resources/static/plus-ui/devdoc/component_use.md
+++ /dev/null
@@ -1,55 +0,0 @@
-# 组件使用
-- - -
-
-vue 注册组件的两种方式
-在 `@/components` 下创建的.vue文件自动为全局组件,可直接在任意位置使用。
-
-### 局部注册
-在对应页使用`components`注册组件。
-```typescript
-
-
-
-
-
-```
-
-### 全局注册
-我们可以使用[ Vue 应用实例](https://cn.vuejs.org/guide/essentials/application.html)的 `.component()` 方法,让组件在当前 Vue 应用中全局可用。
-```typescript
-import { createApp } from 'vue'
-
-const app = createApp({})
-
-app.component(
- // 注册的名字
- 'MyComponent',
- // 组件的实现
- {
- /* ... */
- }
-)
-```
-如果使用单文件组件,你可以注册被导入的 `.vue` 文件:
-```typescript
-import MyComponent from './App.vue'
-
-app.component('MyComponent', MyComponent)
-```
-`.component()` 方法可以被链式调用:
-```typescript
-app
- .component('ComponentA', ComponentA)
- .component('ComponentB', ComponentB)
- .component('ComponentC', ComponentC)
-```
-全局注册的组件可以在此应用的任意组件的模板中使用:
-```Typescript
-// 这在当前应用的任意组件中都可用
-
-
-
-```
-所有的子组件也可以使用全局注册的组件,这意味着这三个组件也都可以在彼此内部使用。
\ No newline at end of file
diff --git a/ruoyi-admin/src/main/resources/static/plus-ui/devdoc/content_copy.md b/ruoyi-admin/src/main/resources/static/plus-ui/devdoc/content_copy.md
deleted file mode 100644
index a4150d72..00000000
--- a/ruoyi-admin/src/main/resources/static/plus-ui/devdoc/content_copy.md
+++ /dev/null
@@ -1,4 +0,0 @@
-# 内容复制
-- - -
-
-文档建设中
\ No newline at end of file
diff --git a/ruoyi-admin/src/main/resources/static/plus-ui/devdoc/dev_norm.md b/ruoyi-admin/src/main/resources/static/plus-ui/devdoc/dev_norm.md
deleted file mode 100644
index de714a13..00000000
--- a/ruoyi-admin/src/main/resources/static/plus-ui/devdoc/dev_norm.md
+++ /dev/null
@@ -1,16 +0,0 @@
-# 开发规范
-- - -
-
-### 新增view
-> 在`@/views`文件下创建对应的文件夹,一般性一个路由对应一个文件, 该模块下的功能就建议在本文件夹下创建一个新文件夹,各个功能模块维护自己的`utils`或`components`组件。
-
-### 新增api
-> 在`@/api`文件夹下创建本模块对应的api服务。
-> 在api服务同级创建`types.ts`类型声明文件。
-
-### 新增组件
-> 在全局的`@/components`写一些全局的组件,如富文本,各种搜索组件,封装的分页组件等等能被公用的组件。 每个页面或者模块特定的业务组件则会写在当前`@/views`下面。
-如:`@/views/system/user/components/xxx.vue`。这样拆分大大减轻了维护成本。
-
-### 新增样式
-> 页面的样式和组件是一个道理,全局的`@/style`放置一下全局公用的样式,每一个页面的样式就写在当前 views下面,请记住加上scoped 就只会作用在当前组件内了,避免造成全局的样式污染。
\ No newline at end of file
diff --git a/ruoyi-admin/src/main/resources/static/plus-ui/devdoc/dict_use.md b/ruoyi-admin/src/main/resources/static/plus-ui/devdoc/dict_use.md
deleted file mode 100644
index 7c6f9ba5..00000000
--- a/ruoyi-admin/src/main/resources/static/plus-ui/devdoc/dict_use.md
+++ /dev/null
@@ -1,4 +0,0 @@
-# 使用字典
-- - -
-
-文档建设中
\ No newline at end of file
diff --git a/ruoyi-admin/src/main/resources/static/plus-ui/devdoc/exception_handling.md b/ruoyi-admin/src/main/resources/static/plus-ui/devdoc/exception_handling.md
deleted file mode 100644
index 8de87fa2..00000000
--- a/ruoyi-admin/src/main/resources/static/plus-ui/devdoc/exception_handling.md
+++ /dev/null
@@ -1,4 +0,0 @@
-# 异常处理
-- - -
-
-文档建设中
\ No newline at end of file
diff --git a/ruoyi-admin/src/main/resources/static/plus-ui/devdoc/icon_use.md b/ruoyi-admin/src/main/resources/static/plus-ui/devdoc/icon_use.md
deleted file mode 100644
index 923e66ae..00000000
--- a/ruoyi-admin/src/main/resources/static/plus-ui/devdoc/icon_use.md
+++ /dev/null
@@ -1,4 +0,0 @@
-# 使用图标
-- - -
-
-文档建设中
\ No newline at end of file
diff --git a/ruoyi-admin/src/main/resources/static/plus-ui/devdoc/page_cache.md b/ruoyi-admin/src/main/resources/static/plus-ui/devdoc/page_cache.md
deleted file mode 100644
index 0531b465..00000000
--- a/ruoyi-admin/src/main/resources/static/plus-ui/devdoc/page_cache.md
+++ /dev/null
@@ -1,4 +0,0 @@
-# 页签缓存
-- - -
-
-文档建设中
\ No newline at end of file
diff --git a/ruoyi-admin/src/main/resources/static/plus-ui/devdoc/param_use.md b/ruoyi-admin/src/main/resources/static/plus-ui/devdoc/param_use.md
deleted file mode 100644
index 0cd93759..00000000
--- a/ruoyi-admin/src/main/resources/static/plus-ui/devdoc/param_use.md
+++ /dev/null
@@ -1,4 +0,0 @@
-# 使用参数
-- - -
-
-文档建设中
\ No newline at end of file
diff --git a/ruoyi-admin/src/main/resources/static/plus-ui/devdoc/permissions_use.md b/ruoyi-admin/src/main/resources/static/plus-ui/devdoc/permissions_use.md
deleted file mode 100644
index e18642f4..00000000
--- a/ruoyi-admin/src/main/resources/static/plus-ui/devdoc/permissions_use.md
+++ /dev/null
@@ -1,4 +0,0 @@
-# 权限使用
-- - -
-
-文档建设中
\ No newline at end of file
diff --git a/ruoyi-admin/src/main/resources/static/plus-ui/devdoc/request_process.md b/ruoyi-admin/src/main/resources/static/plus-ui/devdoc/request_process.md
deleted file mode 100644
index 146f7a8c..00000000
--- a/ruoyi-admin/src/main/resources/static/plus-ui/devdoc/request_process.md
+++ /dev/null
@@ -1,65 +0,0 @@
-# 请求流程
-- - -
-
-### 交互流程
-一个完整的前端UI交互到服务器端处理流程是这样的:
-
-1. UI 组件交互操作;
-2. 调用统一管理的 api service 请求函数;
-3. 使用封装的 request.js 发送请求;
-4. 获取服务端返回;
-5. 更新 data;
-
-为了方便管理维护,统一的请求处理都放在`@/src/api`文件夹中,并且一般按照`model`维度进行拆分文件,如:
-```
-api/
- system/
- user/
- index.ts
- types.ts
- role/
- index.ts
- types.ts
- monitor/
- operlog/
- index.ts
- types.ts
- logininfor/
- index.ts
- types.ts
- ...
-```
-> **提示**
-> 其中`@/src/utils/request.ts`是基于 axios 的封装,便于统一处理 POST,GET 等请求参数,请求头,以及错误提示信息等。 它封装了全局request拦截器、response拦截器、统一的错误处理、统一做了超时处理、baseURL设置等。
-
-### 请求示例
-```typescript
-// @/api/system/user/index.ts
-import request from '@/utils/request';
-import { AxiosPromise } from 'axios';
-import { UserQuery, UserVO } from './types';
-
-export const listUser = (query: UserQuery): AxiosPromise => {
- return request({
- url: '/system/user/list',
- method: 'get',
- params: query
- });
-};
-
-// @/views/system/user/index.vue
-import api from '@/api/system/user';
-const res = await api.listUser(proxy?.addDateRange(queryParams.value, dateRange.value));
-```
-> **提示**
-> 如果有不同的`baseURL`,直接通过覆盖的方式,让它具有不同的`baseURL`。
-> ```typescript
-> export const listUser = (query: UserQuery): AxiosPromise => {
-> return request({
-> url: '/system/user/list',
-> method: 'get',
-> params: query,
-> baseURL: process.env.BASE_API
-> });
-> };
-> ```
diff --git a/ruoyi-admin/src/main/resources/static/plus-ui/devdoc/router_use.md b/ruoyi-admin/src/main/resources/static/plus-ui/devdoc/router_use.md
deleted file mode 100644
index b13812bc..00000000
--- a/ruoyi-admin/src/main/resources/static/plus-ui/devdoc/router_use.md
+++ /dev/null
@@ -1,82 +0,0 @@
-# 路由使用
-- - -
-
-框架的核心是通过路由自动生成对应导航,所以除了路由的基本配置,还需要了解框架提供了哪些配置项。
-### 路由配置
-```typescript
-// 当设置 true 的时候该路由不会在侧边栏出现 如401,login等页面,或者如一些编辑页面/edit/1
-hidden: true // (默认 false)
-
-//当设置 noRedirect 的时候该路由在面包屑导航中不可被点击
-redirect: 'noRedirect'
-
-// 当你一个路由下面的 children 声明的路由大于1个时,自动会变成嵌套的模式--如组件页面
-// 只有一个时,会将那个子路由当做根路由显示在侧边栏--如引导页面
-// 若你想不管路由下面的 children 声明的个数都显示你的根路由
-// 你可以设置 alwaysShow: true,这样它就会忽略之前定义的规则,一直显示根路由
-alwaysShow: true
-
-name: 'router-name' // 设定路由的名字,一定要填写不然使用时会出现各种问题
-query: '{"id": 1, "name": "ry"}' // 访问路由的默认传递参数
-roles: ['admin', 'common'] // 访问路由的角色权限
-permissions: ['a:a:a', 'b:b:b'] // 访问路由的菜单权限
-
-meta: {
- title: 'title' // 设置该路由在侧边栏和面包屑中展示的名字
- icon: 'svg-name' // 设置该路由的图标,支持 svg-class,也支持 el-icon-x element-ui 的 icon
- noCache: true // 如果设置为true,则不会被 缓存(默认 false)
- breadcrumb: false // 如果设置为false,则不会在breadcrumb面包屑中显示(默认 true)
- affix: true // 如果设置为true,它则会固定在tags-view中(默认 false)
-
- // 当路由设置了该属性,则会高亮相对应的侧边栏。
- // 这在某些场景非常有用,比如:一个文章的列表页路由为:/article/list
- // 点击文章进入文章详情页,这时候路由为/article/1,但你想在侧边栏高亮文章列表的路由,就可以进行如下设置
- activeMenu: '/article/list'
-}
-```
-**普通示例**
-```json
-{
- path: '/system/test',
- component: Layout,
- redirect: 'noRedirect',
- hidden: false,
- alwaysShow: true,
- meta: { title: '系统管理', icon : "system" },
- children: [{
- path: 'index',
- component: (resolve) => require(['@/views/index'], resolve),
- name: 'Test',
- meta: {
- title: '测试管理',
- icon: 'user'
- }
- }]
-}
-```
-**外链示例**
-```json
-{
- path: 'http://ruoyi.vip',
- meta: { title: '若依官网', icon : "guide" }
-}
-```
-### 静态路由
-代表那些不需要动态判断权限的路由,如登录页、404、等通用页面,在`@/router/index.ts`配置对应的公共路由。
-### 动态路由
-代表那些需要根据用户动态判断权限并通过addRoutes动态添加的页面,在`@/store/modules/permission.ts`加载后端接口路由配置。
-> **提示**
-> * 动态路由可以在系统管理-菜单管理进行新增和修改操作,前端加载会自动请求接口获取菜单信息并转换成前端对应的路由。
-> * 动态路由在生产环境下会默认使用路由懒加载,实现方式参考loadView方法的判断。
-### 常用方法
-想要跳转到不同的页面,使用`router.push`方法
-```Typescript
-const router = useRouter();
-router.push({ path: "/system/user" });
-```
-跳转页面并设置请求参数,使用`query`属性
-```Typescript
-const router = useRouter();
-router.push({ path: "/system/user", query: {id: "1", name: "若依"} });
-```
-更多使用可以参考[vue-router](https://router.vuejs.org/zh/)官方文档。
\ No newline at end of file
diff --git a/ruoyi-admin/src/main/resources/static/plus-ui/home.md b/ruoyi-admin/src/main/resources/static/plus-ui/home.md
deleted file mode 100644
index b389b5ca..00000000
--- a/ruoyi-admin/src/main/resources/static/plus-ui/home.md
+++ /dev/null
@@ -1,53 +0,0 @@
-# 项目简介
-
----
-
-## 平台简介
-
-- 本仓库为前端技术栈 [Vue3](https://v3.cn.vuejs.org) + [Element Plus](https://element-plus.org/zh-CN) + [Vite](https://cn.vitejs.dev) 版本。
-- 配套后端代码仓库地址
-- [RuoYi-Vue-Plus 5.X(注意版本号)](https://gitee.com/dromara/RuoYi-Vue-Plus)
-- [RuoYi-Cloud-Plus 2.X(注意版本号)](https://gitee.com/dromara/RuoYi-Cloud-Plus)
-
-## 前端运行
-
-```bash
-# 克隆项目
-git clone https://gitee.com/JavaLionLi/plus-ui.git
-
-# 安装依赖
-npm install --registry=https://registry.npmmirror.com
-
-# 启动服务
-npm run dev
-
-# 推荐使用yarn或pnpm包管理工具
-# 构建测试环境 yarn build:stage
-# 构建生产环境 yarn build:prod
-# 前端访问地址 http://localhost:80
-```
-
-## 后端改造
-
-参考后端代码内 `ruoyi-gen/resources/vm/vue/v3/readme.txt` 说明
-
-## 内置功能
-
-1. 租户管理:配置系统租户,支持 SaaS 场景下的多租户功能。
-2. 用户管理:用户是系统操作者,该功能主要完成系统用户配置。
-3. 部门管理:配置系统组织机构(公司、部门、小组),树结构展现支持数据权限。
-4. 岗位管理:配置系统用户所属担任职务。
-5. 菜单管理:配置系统菜单,操作权限,按钮权限标识等。
-6. 角色管理:角色菜单权限分配、设置角色按机构进行数据范围权限划分。
-7. 字典管理:对系统中经常使用的一些较为固定的数据进行维护。
-8. 参数管理:对系统动态配置常用参数。
-9. 通知公告:系统通知公告信息发布维护。
-10. 操作日志:系统正常操作日志记录和查询;系统异常信息日志记录和查询。
-11. 登录日志:系统登录日志记录查询包含登录异常。
-12. 在线用户:当前系统中活跃用户状态监控。
-13. 定时任务:在线(添加、修改、删除)任务调度包含执行结果日志。
-14. 代码生成:前后端代码的生成(java、html、xml、sql)支持 CRUD 下载 。
-15. 系统接口:根据业务代码自动生成相关的 api 接口文档。
-16. 服务监控:监视当前系统 CPU、内存、磁盘、堆栈等相关信息。
-17. 缓存监控:对系统的缓存信息查询,命令统计等。
-18. 在线构建器:拖动表单元素生成相应的 HTML 代码。(TS 版本正在开发中。)
diff --git a/ruoyi-admin/src/main/resources/static/questions/_sidebar.md b/ruoyi-admin/src/main/resources/static/questions/_sidebar.md
deleted file mode 100644
index 2d74fb20..00000000
--- a/ruoyi-admin/src/main/resources/static/questions/_sidebar.md
+++ /dev/null
@@ -1,34 +0,0 @@
-
-- **特别赞助**
-- [](http://ccflow.org/?frm=ryPlus)
-- [](http://www.shuduokeji.com)
-- [](https://www.jnpfsoft.com/index.html?from=plus-doc)
-
-
-
-* **常见问题**
- * [Lombok注解爆红](/questions/lombok.md)
- * [如何使用Tomcat](/questions/use_tomcat.md)
- * [如何使用druid连接池](/questions/use_druid.md)
- * [vue与boot整合部署](/questions/deploy_vue.md)
- * [导入excel实体类为空](/questions/import_excel.md)
- * [如何同步项目更新](/questions/synchronous_update.md)
- * [ParseException SQL解析异常](/questions/parse_exception.md)
- * [swagger相关问题](/questions/swagger.md)
- * [实体bean为空问题](/questions/bean_null.md)
- * [Redis 报错 Permission denied](/questions/permission_denied.md)
- * [关于HTTPS配置](/questions/https_config.md)
- * [放行接口提示认证失败](/questions/identify_fail.md)
- * [打包jar运行报错](/questions/jar_run_fail.md)
- * [如何指定dubbo注册ip](/questions/dubbo_ip.md)
- * [Sentinel页面404问题](/questions/sentinel_404.md)
- * [无法读取nacos配置](/questions/nacos_read_fail.md)
- * [接口文档对接knife4j](/questions/kinfe4j.md)
- * [不支持ST请求](/questions/st_not_support.md)
- * [Only one connection receive subscriber allowed](/questions/only_one_subscriber.md)
- * [nacos 报错 The Raft Group [naming_instance_metadata]](/questions/nacos_naming_instance_metadata.md)
- * [unable to read meta-data for class xxx](/questions/read_metadata.md)
- * [JCE cannot authenticate the provider BC](/questions/jce_cannot.md)
- * [关于请求响应参数解密](/questions/api_encrypt.md)
- * [关于登录调试步骤](/questions/login_step.md)
- * [如何对接国产数据库](/questions/domestic_databases.md)
\ No newline at end of file
diff --git a/ruoyi-admin/src/main/resources/static/questions/api_encrypt.md b/ruoyi-admin/src/main/resources/static/questions/api_encrypt.md
deleted file mode 100644
index 95b516d4..00000000
--- a/ruoyi-admin/src/main/resources/static/questions/api_encrypt.md
+++ /dev/null
@@ -1,148 +0,0 @@
-# 关于请求响应参数解密
----
-## 1:前端加密请求
-
-
-
-通过控制台获取加密结果:
-
-
-
-
-
-
-加密密钥:
-
-```
-PAg/fZzpV/cz0T1fMUJMJo/LEZvwVLb4bZgtCHkbB6FQAJWlLm/RLKtQ5fOo1blMjAkY+9ryWhsAfCqoMPTU4w==
-```
-
-请求参数加密结果:
-
-```
-F+Qxq6PzShcudDsUZHhp50lA67eBeTe63x5uGbdm/HJGgcDmjKncUk5VQm0evD8pz1sbmCbmmSl3X1D07K/qgHvP1YhjYSRBJf/M0GTfMkfOZqIkOtvfE5Z6fSFd8RYf6ji/qYxAmCiRmP/uADyJUAoBY1gMi5+zuvyHH3In/FyoFeD0rmJWvO4o4fn3n5GElHMWbP0O/HWPfgHFfg1F7bZQPuf4zAuDKQIqUG3jJTem3O97kAbTWw6lSSuYi1/8tV4cE9rq8SMSjx36/ZLSog==
-```
-
-### 解密步骤
-
-1. 使用配置文件私钥对加密密钥解密
-
-```java
-// 参数说明:
-// requestKey:即请求标头加密密钥
-// privateKey:application.yml 配置文件私钥
-String decryptByRsa = EncryptUtils.decryptByRsa(requestKey, privateKey);
-```
-
-2. 对步骤一结果进行 Base64 解密,得到 AES 加密密钥
-
-```java
-String aesPassword = EncryptUtils.decryptByBase64(decryptByRsa);
-```
-
-3. 使用步骤二得到的密钥,对请求参数进行解密
-
-```java
-String decryptBody = EncryptUtils.decryptByAes(requestBody, aesPassword);
-```
-
-得到解密请求参数(已格式化):
-
-```json
-{
- "tenantId": "000000",
- "username": "admin",
- "password": "admin123",
- "rememberMe": false,
- "uuid": "a39962b22c874f60872ef5db1cd811f5",
- "code": "5",
- "clientId": "e5cd7e4891bf95d1d19206ce24a7b32e",
- "grantType": "password"
-}
-```
-
-|参数名|说明|
-|---|---|
-|tenantId| 租户id |
-|username| 用户名 |
-|password| 密码 |
-|rememberMe| 记住密码 |
-|uuid| - |
-|code| 验证码结果 |
-|clientId| 客户端id(表 sys_client) |
-|grantType| 授权类型(表 sys_client) |
-
-## 2:后端加密响应
-
-对请求使用了注解 `@ApiEncrypt(response = true)`
-
-
-
-通过控制台获取加密结果:
-
-
-
-
-
-加密密钥:
-
-```
-MXnKYnXcXeFYWKZg8utuhDtbz54cPDcov11E1KT5l19/vMt37d4NhzzwBWnqug72SOgOK5URGaWPJSs9VdaP0Q==
-```
-
-响应参数加密结果:
-
-```
-70 O63EMmwvbAyWPqDDmVOGTy+BOQnIVgKInMFNRtp8Zwzs8DEL20VgL2IslYrL8bc1u7lPhYNU/6 Q3iTYebm4EokwiG+styaT+LO3M9bUimggoAGpBTW8gCRF/34 kJaOITSRqYqYcXIJKn73+Gqn7jevyKUHyRXog/3 q/PlBdmUjNiB4gtxlOO/Vm+4 o+0 W4jcEe0xwwzV91+Ze3S6Eu/1 XN21g0iOsYT34emv/vhd9Hy3p5LfJlAHvn96x/c3MQBQUU32uM3Vkk3o6IpVHjJljE64gnGximSwB9vrmMA21xX+fq9HYioumknmDDbaY/JAKh32CDgn5M5hdaIklf08sU38r1IyvipySzrHX+ci9GmOZhP2ttCtoZ7SGvFFbNEuyojssxwxXEmJHAsG/OhIAeRXMUr3+dzDJ++XvvMuMgNJR0BMldNydFAjNOQEszgcVM1QEGwxfW5rElW8VxQaaqPyDATX+y2JrK1vdKxxdI/hF5dGpQMdU4FAEhHIftoIbD/FH4XcWJamZjJpbVtZvTkFYpbhiU7sz9MICSuKwaoSFJ8JGANc0bDdVoWpA8sXi7a27IM0pDzk9gD/FADcFGHXxPYUhENkXiUcnmg5LSdigiY4J6HrqEJdH6zNSwoGubcsXhiPdlB3V0DqcLAHFt+GYj5lcxZeqUAmixGVGCV7gSBWNiyo9/NnXcynA/EIlV3OZIvgzjWxiKzcVJ1HOKoXGEcg3Q54QNh5pCqEa7AtqVkKO7/Ffgg8nSEeCdJPzTV7zmr3n94Hn671OL8A==
-```
-
-### 解密步骤
-
-1. 使用前端配置文件私钥对加密密钥解密
-
-```java
-// 参数说明:
-// responseKey:即响应标头加密密钥
-// privateKey:前端 .env.development | .env.production 配置文件私钥,注意和后端私钥区分
-String decryptByRsa = EncryptUtils.decryptByRsa(responseKey, privateKey);
-```
-
-2. 对步骤一结果进行 Base64 解密,得到 AES 加密密钥
-
-```java
-String aesPassword = EncryptUtils.decryptByBase64(decryptByRsa);
-```
-
-3. 使用步骤二得到的密钥,对响应参数进行解密
-
-```java
-String decryptBody = EncryptUtils.decryptByAes(responseBody, aesPassword);
-```
-
-得到解密请求参数(已格式化):
-
-```json
-{
- "code": 200,
- "msg": "操作成功",
- "data": {
- "scope": null,
- "openid": null,
- "access_token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJsb2dpblR5cGUiOiJsb2dpbiIsImxvZ2luSWQiOiJzeXNfdXNlcjoxIiwicm5TdHIiOiJjOVNWU1hRRVY4QVhFRkt4b2FrbndSSWxPczd4ajdRZCIsImNsaWVudGlkIjoiZTVjZDdlNDg5MWJmOTVkMWQxOTIwNmNlMjRhN2IzMmUiLCJ0ZW5hbnRJZCI6IjAwMDAwMCIsInVzZXJJZCI6MSwidXNlck5hbWUiOiJhZG1pbiIsImRlcHRJZCI6MTAzLCJkZXB0TmFtZSI6IueglOWPkemDqOmXqCJ9.YuaXPu6eTzJVkLyQC3ekzmPS_jXp50ykaIB2nWy11qM",
- "refresh_token": null,
- "expire_in": 604799,
- "refresh_expire_in": null,
- "client_id": "e5cd7e4891bf95d1d19206ce24a7b32e"
- }
-}
-```
-
-|参数名|说明|
-|---|---|
-|scope| 令牌权限 |
-|openid| 用户 openid |
-|access_token| 授权令牌 |
-|refresh_token| 刷新令牌 |
-|expire_in| 授权令牌 access_token 的有效期 |
-|refresh_expire_in| 刷新令牌 refresh_token 的有效期 |
-|clientId| 客户端id(表 sys_client) |
\ No newline at end of file
diff --git a/ruoyi-admin/src/main/resources/static/questions/bean_null.md b/ruoyi-admin/src/main/resources/static/questions/bean_null.md
deleted file mode 100644
index bf04048c..00000000
--- a/ruoyi-admin/src/main/resources/static/questions/bean_null.md
+++ /dev/null
@@ -1,10 +0,0 @@
-# 实体bean为空问题
-- - -
-### 问题排查
-
-检查是否存在 `链式调用` 注解 `@Accessors(chain = true)` 删除即可
-
-### 原因
-java 规范 set 返回值为 `void` 链式调用 set 返回值为 `this`
-故多数框架底层使用 jdk 工具导致找不到 set 方法
-例如: `easyexcel` `cglib` `mybatis` 等
\ No newline at end of file
diff --git a/ruoyi-admin/src/main/resources/static/questions/deploy_vue.md b/ruoyi-admin/src/main/resources/static/questions/deploy_vue.md
deleted file mode 100644
index 348a1680..00000000
--- a/ruoyi-admin/src/main/resources/static/questions/deploy_vue.md
+++ /dev/null
@@ -1,13 +0,0 @@
-# 关于vue与boot整合部署
-- - -
-* [前端静态资源如何整合到后端访问](https://doc.ruoyi.vip/ruoyi-vue/other/faq.html#前端静态资源如何整合到后端访问)
-
-3.X 需在 `pom.xml` 增加资源过滤排除
-
-```xml
-
- src/main/resources/页面目录
-
- false
-
-```
diff --git a/ruoyi-admin/src/main/resources/static/questions/domestic_databases.md b/ruoyi-admin/src/main/resources/static/questions/domestic_databases.md
deleted file mode 100644
index e79762ba..00000000
--- a/ruoyi-admin/src/main/resources/static/questions/domestic_databases.md
+++ /dev/null
@@ -1,41 +0,0 @@
-# 如何对接国产数据库
-
-> 1. 框架采用 mybatis-plus 几乎支持大部分市面上的数据库且框架内几乎没有sql语句存在
-
-所以不用担心兼容性问题(顶多就是有一些关键字什么的 对接很简单)
-
-> 2. 国产数据库大多都兼容主流三大数据库 mysql oracle postgresql
-
-例如 达梦兼容oracle 人大金仓兼容mysql oceanbase兼容mysql 等等
-
-# 对接方式
-
-### 这里用 `达梦` 数据库为例
-
-1.首先增加 jdbc依赖包 `vue版本在ruoyi-admin模块下` `cloud版本在ruoyi-common-mybatis模块下`
-
-
-
-2.在配置文件yml内配置数据库连接
-
-
-
-3.sql脚本使用框架内自带的sql文件根据兼容的数据库模式 例如 达梦用oracle的sql脚本
-
-
-
-4.在代码生成器内 增加对应的数据库生成器依赖 代码生成器使用 anyline 支持几百种数据库只需要增加对应的依赖即可
-
-
-
-这样基本就完成了所有需要做的事可以尝试启动项目了
-
-5.如果项目启或者运行动过程中有sql报错 不要慌基本上都是一些关键字引起的
-
-例如 达梦内的`domain`就是关键字 在我们的`SysOssConfig`表内使用`domain`进行自定义的域名存储
-
-我们只需要在`SysOssConfig`实体类的`domain`属性增加一个注解即可解决此问题
-
-**注意: 各种数据库处理关键字的标识符不一样注意替换**
-
-
diff --git a/ruoyi-admin/src/main/resources/static/questions/dubbo_ip.md b/ruoyi-admin/src/main/resources/static/questions/dubbo_ip.md
deleted file mode 100644
index 43cb2346..00000000
--- a/ruoyi-admin/src/main/resources/static/questions/dubbo_ip.md
+++ /dev/null
@@ -1,18 +0,0 @@
-# 如何指定dubbo注册ip
-- - -
-## 重点说明
-以下方法指定IP必须是本地有网卡的自己可以访问的IP 不可以随意乱写
-(云服务器公网IP是没有网卡的)
-
-## 在`nacos`指定协议IP地址(全局生效)
-```yml
-dubbo:
- protocol:
- # 指定dubbo协议注册ip
- host: 192.168.0.100
-```
-
-## docker指定dubbo环境变量(单服务生效)
-
-
-
diff --git a/ruoyi-admin/src/main/resources/static/questions/https_config.md b/ruoyi-admin/src/main/resources/static/questions/https_config.md
deleted file mode 100644
index e590729e..00000000
--- a/ruoyi-admin/src/main/resources/static/questions/https_config.md
+++ /dev/null
@@ -1,27 +0,0 @@
-# 关于HTTPS配置
-- - -
-### 后端 HTTPS 改造
-
-将申请的 `https` 证书放置到 `nginx` 对应目录内
-根据框架 `nginx https` 示例 更改后端代理为 `https`
-
-
-
-### 监控中心 与 任务调度中心 改造
-
-`监控中心` 与 `任务调度中心` 属于系统管控服务
-应在内网使用 不应该暴漏到外网 也无需配置 `https`
-
-更改 `系统 -> 菜单管理 -> 监控中心 与 任务调度中心` 菜单配置
-将其改为 `外链访问` 访问路径为 **注意: 如果是外网使用 url需配置为 http://外网ip:端口**
-
-
-
-
-
-`nginx` 配置 `独立的端口` 进行反向代理即可访问(代理编写方式参考后端反向代理)
-
-### Minio https 改造
-
-下方链接包含 minio+nginx 与 minio本身配置https 两种方案
-[终极版minio配置https教程](https://blog.csdn.net/Michelle_Zhong/article/details/126484358)
\ No newline at end of file
diff --git a/ruoyi-admin/src/main/resources/static/questions/identify_fail.md b/ruoyi-admin/src/main/resources/static/questions/identify_fail.md
deleted file mode 100644
index 4e258067..00000000
--- a/ruoyi-admin/src/main/resources/static/questions/identify_fail.md
+++ /dev/null
@@ -1,10 +0,0 @@
-# 放行接口提示认证失败
-- - -
-## 可能的原因
-接口放行后不需要token即可访问
-但是没有token也就无法获取用户信息与鉴权
-
-## 解决方案
-删除接口上的鉴权注解
-删除接口内获取用户信息功能
-删除数据库实体类 自动注入 `createBy` `updateBy` 因为会获取用户数据
\ No newline at end of file
diff --git a/ruoyi-admin/src/main/resources/static/questions/import_excel.md b/ruoyi-admin/src/main/resources/static/questions/import_excel.md
deleted file mode 100644
index 431863e8..00000000
--- a/ruoyi-admin/src/main/resources/static/questions/import_excel.md
+++ /dev/null
@@ -1,4 +0,0 @@
-# 关于导入excel实体类为空
-- - -
-* 禁止在导入实体使用 `lombok` 链式调用注解 `@Accessors(chain = true)`
-* 会导致找不到 `set` 方法无法注入内容
\ No newline at end of file
diff --git a/ruoyi-admin/src/main/resources/static/questions/jar_run_fail.md b/ruoyi-admin/src/main/resources/static/questions/jar_run_fail.md
deleted file mode 100644
index cef9bcd2..00000000
--- a/ruoyi-admin/src/main/resources/static/questions/jar_run_fail.md
+++ /dev/null
@@ -1,12 +0,0 @@
-# 打包jar运行报错问题
-- - -
-
-**常见于 windows 平台以命令方式启动**
-
-windows 平台默认编码为 GBK 所以读取到所有的配置都是乱码
-
-## 解决方案
-
-需要在命令增加 `-Dfile.encoding=utf-8` 指定文件编码
-
-例如: `java -Dfile.encoding=utf-8 -jar ruoyi-xxx.jar`
\ No newline at end of file
diff --git a/ruoyi-admin/src/main/resources/static/questions/jce_cannot.md b/ruoyi-admin/src/main/resources/static/questions/jce_cannot.md
deleted file mode 100644
index a1baf9dd..00000000
--- a/ruoyi-admin/src/main/resources/static/questions/jce_cannot.md
+++ /dev/null
@@ -1,3 +0,0 @@
-# 问题说明 由于 OracleJDK 强校验加密证书导致
-
-解决方案 禁止使用 oraclejdk 更换为其他例如 openjdk
\ No newline at end of file
diff --git a/ruoyi-admin/src/main/resources/static/questions/kinfe4j.md b/ruoyi-admin/src/main/resources/static/questions/kinfe4j.md
deleted file mode 100644
index 5051a782..00000000
--- a/ruoyi-admin/src/main/resources/static/questions/kinfe4j.md
+++ /dev/null
@@ -1,66 +0,0 @@
-# 对接前声明
-
-经常有小伙伴希望可以对接 knife4j
-
-那么这里将介绍如何使用 框架生成的 openapi 对接 knife4j
-
-# 如何对接
-
-**重点声明: 本框架生成标准openapi结构 如对接后遇到不好用等问题 皆与本框架无关**
-
-knife4j 本身提供了独立的文档中间件 可以零成本的介入 openapi
-
-文档地址: https://doc.xiaominfo.com/docs/middleware-sources
-
-**注意: 此组件应单独搞一个boot项目 不要往框架里做任何代码上的更改**
-
-使用文档提供的 Cloud 模式 对接咱们框架的 openapi 地址即可完成对接
-
-
-
-vue版本对接配置如下:
-
-```yml
-knife4j:
- enable-aggregation: true
- cloud:
- enable: true
- routes:
- - name: 演示模块
- uri: localhost:8080
- location: /v3/api-docs/1.演示模块
- - name: 系统模块
- uri: localhost:8080
- location: /v3/api-docs/2.系统模块
- - name: 代码生成模块
- uri: localhost:8080
- location: /v3/api-docs/3.代码生成模块
-```
-
-cloud版本对接配置如下:
-
-```yml
-knife4j:
- enable-aggregation: true
- cloud:
- enable: true
- routes:
- - name: 演示模块
- uri: localhost:8080
- location: /demo/v3/api-docs
- - name: 认证服务
- uri: localhost:8080
- location: /auth/v3/api-docs
- - name: 资源服务
- uri: localhost:8080
- location: /resource/v3/api-docs
- - name: 系统服务
- uri: localhost:8080
- location: /system/v3/api-docs
- - name: 监控服务
- uri: localhost:8080
- location: /monitor/v3/api-docs
- - name: 代码生成服务
- uri: localhost:8080
- location: /gen/v3/api-docs
-```
\ No newline at end of file
diff --git a/ruoyi-admin/src/main/resources/static/questions/login_step.md b/ruoyi-admin/src/main/resources/static/questions/login_step.md
deleted file mode 100644
index c1d4fcc9..00000000
--- a/ruoyi-admin/src/main/resources/static/questions/login_step.md
+++ /dev/null
@@ -1,69 +0,0 @@
-# 关于登录调试步骤
-
-## 1:关闭 api 接口加密
-
-1. 修改后端配置文件 `application.yml`
-
-
-
-2. 修改前端配置文件 `.env.development` | `.env.production`
-
-
-
-## 2:登录参数
-
-
-
-|参数名|说明|
-|---|---|
-|tenantId| 租户id |
-|username| 用户名 |
-|password| 密码 |
-|rememberMe| 记住密码 |
-|uuid| - |
-|code| 验证码结果 |
-|clientId| 客户端id(表 sys_client) |
-|grantType| 授权类型(表 sys_client) |
-
-## 3:使用接口文档调试
-
-### 3.1:使用接口文档请求
-
-1. 配置接口文档([参考文档](/ruoyi-vue-plus/framework/association/doc))
-2. 请求接口 `http://localhost:8080/auth/login`
-
-
-
-### 3.2:使用 idea 请求
-
-
-
-
-
-
-
-### 3.3:获取验证码以及 uuid
-
-!> 验证码以及 uuid 获取方式: Redis | 控制台
-
-方式一、Redis:
-
-
-
-> **如果没有验证码相关 key,说明已经过期被清理了,去前端页面刷新一下即可。**
-
-方式二、控制台:
-
-
-
-### 3.4:关闭验证码
-
-如果嫌验证码太麻烦,可以关闭,修改后端配置文件 `application.yml`
-
-
-
-
-
-请求参数:
-
-
\ No newline at end of file
diff --git a/ruoyi-admin/src/main/resources/static/questions/lombok.md b/ruoyi-admin/src/main/resources/static/questions/lombok.md
deleted file mode 100644
index 47125153..00000000
--- a/ruoyi-admin/src/main/resources/static/questions/lombok.md
+++ /dev/null
@@ -1,4 +0,0 @@
-# 关于lombok注解爆红
-- - -
-* 已知 lombok 插件与 idea中文插件 存在兼容性问题
-* 移除中文插件或手动关闭idea检查
\ No newline at end of file
diff --git a/ruoyi-admin/src/main/resources/static/questions/nacos_naming_instance_metadata.md b/ruoyi-admin/src/main/resources/static/questions/nacos_naming_instance_metadata.md
deleted file mode 100644
index ae35d937..00000000
--- a/ruoyi-admin/src/main/resources/static/questions/nacos_naming_instance_metadata.md
+++ /dev/null
@@ -1,35 +0,0 @@
-# nacos 报错 The Raft Group [naming_instance_metadata]
-- - -
-## Nacos 服务下线报错问题
-
-问题描述:
-
-Nacos 服务管理 > 服务列表 > 详情 > 下线 报错
-
-
-
-报错详情:
-
-```
-caused: errCode: 500, errMsg: do metadata operation failed ;caused: com.alibaba.nacos.consistency.exception.ConsistencyException: The Raft Group [naming_instance_metadata] did not find the Leader node;caused: The Raft Group [naming_instance_metadata] did not find the Leader node;
-```
-
-
-
-解决方案:
-
-**删除 Nacos 根目录下 data 文件夹下的 protocol 文件夹**
-
-(推荐使用全局搜索软件查询,windows 环境根目录一般在 C:\Users\用户名\nacos)
-
-
-
-问题原因:
-
-> Nacos 采用 raft 算法来计算 Leader,并且会记录上次启动的集群地址,所以当我们自己的服务器 IP 改变时(网络环境不稳定,如WIFI, IP 地址也经常变化),导致 raft 记录的集群地址失效,导致选 Leader 出现问题。
-
-
-
-参考目录:
-
-[解决疑难问题之服务下线报:The Raft Group naming_instance_metadata\] did not find the Leader node; - 嘉美祥瑞 - 博客园 (cnblogs.com)](https://www.cnblogs.com/whl-jx911/p/16736625.html)
\ No newline at end of file
diff --git a/ruoyi-admin/src/main/resources/static/questions/nacos_read_fail.md b/ruoyi-admin/src/main/resources/static/questions/nacos_read_fail.md
deleted file mode 100644
index f6cc36d9..00000000
--- a/ruoyi-admin/src/main/resources/static/questions/nacos_read_fail.md
+++ /dev/null
@@ -1,15 +0,0 @@
-# 无法读取nacos配置
-- - -
-### 检查 `group` 与 `namespace` 是否一致
-
-如果未使用框架自带 `ry-config.sql` 文件进行配置 会导致 `namespace` 不一致 无法查询配置
-
-### 检查 `8848` `9848` `9849` 端口是否开启可用
-
-### 检查配置文件名是否一致 例如: "xxx" 与 "xxx.yml" 的区别
-
-### 检查是否手动改过 `nacos` 数据库数据
-
-`nacos` 数据表层层关联 不要自作聪明手动改数据库
-
-已经改过的 需要重新导入 `ry-config.sql` 之后在页面进行改数据操作
\ No newline at end of file
diff --git a/ruoyi-admin/src/main/resources/static/questions/only_one_subscriber.md b/ruoyi-admin/src/main/resources/static/questions/only_one_subscriber.md
deleted file mode 100644
index f8d690e1..00000000
--- a/ruoyi-admin/src/main/resources/static/questions/only_one_subscriber.md
+++ /dev/null
@@ -1,11 +0,0 @@
-# Only one connection receive subscriber allowed
-- - -
-## 问题原因
-**经多人反馈 共同点为全都是做`小程序开发`使用的`uniapp`发送的网络请求而出现这种问题**
-
-`uniapp` 错误设置 `Content-Type` 将所有请求类型全都设置成了 `json` 导致不该读body的请求也读取了body 最终导致报错
-
-## 解决方案
-
-方案1: 升级 1.4.0 已经对这种不合规发的请求做了兼容处理(被迫)
-方案2: `uniapp` 内的请求设置正确的 `Content-Type`
diff --git a/ruoyi-admin/src/main/resources/static/questions/parse_exception.md b/ruoyi-admin/src/main/resources/static/questions/parse_exception.md
deleted file mode 100644
index 67a7a114..00000000
--- a/ruoyi-admin/src/main/resources/static/questions/parse_exception.md
+++ /dev/null
@@ -1,40 +0,0 @@
-# ParseException SQL解析异常
-- - -
-## 异常内容
-
-`net.sf.jsqlparser.parser.ParseException: Encountered unexpected token:`
-
-
-
-此异常为 SQL 解析异常, 应检查 SQL 语句内是否包含 SQL 关键字
-
-异常通常都会提供坐标
-
-
-
-检查报错 SQL 相关坐标位置
-
-
-
-## 异常由来
-由 Mybatis-Plus 拦截器进行 SQL 解析导致
-常见拦截器导致问题 `TenantLineInnerInterceptor` `DataPermissionInterceptor`
-
-## 解决方案
-
-> 将关键字增加标识符区别开
-
-1.实体类字段处理(以下仅限于mysql 其他数据库方法各不相同)
-
-
-
-2.自定义 SQL 或 XML 处理
-
-
-
-3.Mapper排除
-> 查看具体使用了哪些拦截器导致问题 使用忽略注解依次进行排除即可
-
-
-
-
diff --git a/ruoyi-admin/src/main/resources/static/questions/permission_denied.md b/ruoyi-admin/src/main/resources/static/questions/permission_denied.md
deleted file mode 100644
index 76d955db..00000000
--- a/ruoyi-admin/src/main/resources/static/questions/permission_denied.md
+++ /dev/null
@@ -1,15 +0,0 @@
-# Redis 报错 Permission denied
-- - -
-### 此报错为无权限
-
-需确保 redis 数据存储文件夹具有写权限
-
-```shell
-chmod 777 /docker/redis/data
-```
-
-没有写权限无法对数据进行存储
-
-### 关于RDB报错 `/etc` 无权限问题
-
-增加redis密码校验 无密码导致配置不安全
diff --git a/ruoyi-admin/src/main/resources/static/questions/read_metadata.md b/ruoyi-admin/src/main/resources/static/questions/read_metadata.md
deleted file mode 100644
index b91165fd..00000000
--- a/ruoyi-admin/src/main/resources/static/questions/read_metadata.md
+++ /dev/null
@@ -1,11 +0,0 @@
-# unable to read meta-data for class xxx
-- - -
-## 问题原因
-
-此问题由改包名导致框架内组件 spring 的 spi 配置文件包名被改乱套
-
-## 解决方案
-
-更正组件包下的 spring spi 配置文件内的类包名
-
-
\ No newline at end of file
diff --git a/ruoyi-admin/src/main/resources/static/questions/sentinel_404.md b/ruoyi-admin/src/main/resources/static/questions/sentinel_404.md
deleted file mode 100644
index 7e51fb58..00000000
--- a/ruoyi-admin/src/main/resources/static/questions/sentinel_404.md
+++ /dev/null
@@ -1,8 +0,0 @@
-# Sentinel页面404问题
-- - -
-## 原因
-检查 `webapp` 目录是否为资源目录 低版本 `idea` 不会自动解析
-## 解决方案
-手动设置 `webapp` 为资源目录即可
-
-
diff --git a/ruoyi-admin/src/main/resources/static/questions/st_not_support.md b/ruoyi-admin/src/main/resources/static/questions/st_not_support.md
deleted file mode 100644
index a3012805..00000000
--- a/ruoyi-admin/src/main/resources/static/questions/st_not_support.md
+++ /dev/null
@@ -1,11 +0,0 @@
-# 不支持ST请求
-- - -
-## 问题原因
-**经多人反馈 共同点为全都是做`小程序开发`使用的`uniapp`发送的网络请求而出现这种问题**
-
-`uniapp` 错误设置 `Content-Type` 将所有请求类型全都设置成了 `json` 导致不该读body的请求也读取了body 最终导致报错
-
-## 解决方案
-
-方案1: 升级 1.4.0 已经对这种不合规发的请求做了兼容处理(被迫)
-方案2: `uniapp` 内的请求设置正确的 `Content-Type`
\ No newline at end of file
diff --git a/ruoyi-admin/src/main/resources/static/questions/swagger.md b/ruoyi-admin/src/main/resources/static/questions/swagger.md
deleted file mode 100644
index 8b0a6e01..00000000
--- a/ruoyi-admin/src/main/resources/static/questions/swagger.md
+++ /dev/null
@@ -1,3 +0,0 @@
-# 框架内没有任何swagger
-
-想使用接口文档功能 请查看框架接口文档说明
\ No newline at end of file
diff --git a/ruoyi-admin/src/main/resources/static/questions/synchronous_update.md b/ruoyi-admin/src/main/resources/static/questions/synchronous_update.md
deleted file mode 100644
index 70803f58..00000000
--- a/ruoyi-admin/src/main/resources/static/questions/synchronous_update.md
+++ /dev/null
@@ -1,3 +0,0 @@
-# 如何同步项目更新
-- - -
-参考文章: [关于如何同步更新开源项目](https://blog.csdn.net/qq_31360283/article/details/118345795)
\ No newline at end of file
diff --git a/ruoyi-admin/src/main/resources/static/questions/use_druid.md b/ruoyi-admin/src/main/resources/static/questions/use_druid.md
deleted file mode 100644
index 77f3f605..00000000
--- a/ruoyi-admin/src/main/resources/static/questions/use_druid.md
+++ /dev/null
@@ -1,20 +0,0 @@
-# 如何使用druid连接池
-- - -
-## 为何移除druid
-
-性能低下 bug频发 内含fastjson问题众多 监控不支持集群(鸡肋) 不支持一些高版本数据库 社区活跃度冰点
-
-### 性能对比图
-
-### 包大小对比图
-
-
-
-## 为何使用hikari(中文: 光)
-
-spring默认自带 代码量少结构简单 稳定可靠 性能突出(自行百度一堆测评)
-
-## 参考提交记录反向操作即可
-
-https://gitee.com/dromara/RuoYi-Vue-Plus/commit/1f42bd3d22c104aaa2d780c20a555b5e467858bf
-https://gitee.com/dromara/RuoYi-Vue-Plus/commit/a63abbf268e4c0a60344f63b5cba828a1347e178
\ No newline at end of file
diff --git a/ruoyi-admin/src/main/resources/static/questions/use_tomcat.md b/ruoyi-admin/src/main/resources/static/questions/use_tomcat.md
deleted file mode 100644
index 113d239f..00000000
--- a/ruoyi-admin/src/main/resources/static/questions/use_tomcat.md
+++ /dev/null
@@ -1,9 +0,0 @@
-# 关于如何使用Tomcat
-- - -
-### 查看ruoyi-framework模块的pom.xml文件,根据注释更改依赖
-
-
-
-### 查看ruoyi-admin模块中的application.yml文件,根据注释更改配置
-
-
diff --git a/ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/_sidebar.md b/ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/_sidebar.md
deleted file mode 100644
index 4580b86c..00000000
--- a/ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/_sidebar.md
+++ /dev/null
@@ -1,70 +0,0 @@
-
-- **特别赞助**
-- [](http://ccflow.org/?frm=ryPlus)
-- [](http://www.shuduokeji.com)
-- [](https://www.jnpfsoft.com/index.html?from=plus-doc)
-
-
-* **简介**
- * [项目简介](/ruoyi-cloud-plus/home.md)
- * [更新日志](/ruoyi-cloud-plus/changlog.md)
-* **快速开始**
- * [项目初始化](/ruoyi-cloud-plus/quickstart/init.md)
- * [1.X项目初始化](/ruoyi-cloud-plus/quickstart/1.Xinit.md)
- * [工作流初始化](/ruoyi-cloud-plus/quickstart/worker_init.md)
- * [idea环境配置](/ruoyi-cloud-plus/quickstart/idea_environment.md)
- * [应用部署](/ruoyi-cloud-plus/quickstart/deploy.md)
- * [扩展项目](/ruoyi-cloud-plus/quickstart/extend_project.md)
- * [搭建SnailJob调度中心](/ruoyi-cloud-plus/quickstart/snail_job_init.md)
- * [(废弃)搭建PowerJob调度中心](/ruoyi-cloud-plus/quickstart/power_job_init.md)
-* **框架功能**
- * [项目结构](/ruoyi-cloud-plus/framework/tree.md)
- * [软件架构图](/ruoyi-cloud-plus/framework/architecture_diagram.md)
- * 框架相关
- * [创建新服务](/ruoyi-cloud-plus/framework/association/new_module.md)
- * [修改包名](/ruoyi-cloud-plus/framework/association/update_package_name.md)
- * [接口文档](/ruoyi-cloud-plus/framework/association/doc.md)
- * [修改应用路径](/ruoyi-cloud-plus/framework/association/update_url.md)
- * [国际化](/ruoyi-cloud-plus/framework/association/i18n.md)
- * [多团队开发](/ruoyi-cloud-plus/framework/association/collaboration.md)
- * [内网鉴权](/ruoyi-cloud-plus/framework/association/inner_authentication.md)
- * 基础功能
- * [系统用户相关](/ruoyi-cloud-plus/framework/basic/user.md)
- * [权限控制](/ruoyi-cloud-plus/framework/basic/permissions_control.md)
- * [导出功能](/ruoyi-cloud-plus/framework/basic/export.md)
- * [导入功能](/ruoyi-cloud-plus/framework/basic/import.md)
- * [参数校验](/ruoyi-cloud-plus/framework/basic/param_check.md)
- * [代码生成](/ruoyi-cloud-plus/framework/basic/code_generate.md)
- * [分页功能](/ruoyi-cloud-plus/framework/basic/page.md)
- * [OSS功能](/ruoyi-cloud-plus/framework/basic/oss.md)
- * [数据权限](/ruoyi-cloud-plus/framework/basic/permissions.md)
- * [网关路由与放行](/ruoyi-cloud-plus/framework/basic/router_release.md)
- * [多租户功能](/ruoyi-cloud-plus/framework/basic/tenant.md)
- * [第三方授权功能](/ruoyi-cloud-plus/framework/basic/social.md)
- * [客户端管理功能](/ruoyi-cloud-plus/framework/basic/client.md)
- * 扩展功能
- * [多数据源](/ruoyi-cloud-plus/framework/extend/dynamic_datasource.md)
- * [短信模块](/ruoyi-cloud-plus/framework/extend/sms.md)
- * [邮件功能](/ruoyi-cloud-plus/framework/extend/mail.md)
- * [防重幂等](/ruoyi-cloud-plus/framework/extend/idempotent.md)
- * [数据脱敏](/ruoyi-cloud-plus/framework/extend/sensitive.md)
- * [API加解密](/ruoyi-cloud-plus/framework/extend/api_encrypt.md)
- * [数据加解密](/ruoyi-cloud-plus/framework/extend/encrypt.md)
- * [翻译功能](/ruoyi-cloud-plus/framework/extend/translation.md)
- * [WebSocket功能](/ruoyi-cloud-plus/framework/extend/websocket.md)
- * 功能说明
- * [事务相关](/ruoyi-cloud-plus/framework/explain/transaction.md)
- * [单元测试](/ruoyi-cloud-plus/framework/explain/test.md)
- * [主键使用说明](/ruoyi-cloud-plus/framework/explain/key.md)
- * [关于多表查询](/ruoyi-cloud-plus/framework/explain/about_join.md)
-* **扩展功能**
- * [ELK搭建](/ruoyi-cloud-plus/extend-function/elk.md)
- * [ES搜索引擎](/ruoyi-cloud-plus/extend-function/es.md)
- * [RabbitMQ搭建](/ruoyi-cloud-plus/extend-function/rabbitmq.md)
- * [RocketMQ搭建](/ruoyi-cloud-plus/extend-function/rocketmq.md)
- * [Kafka搭建](/ruoyi-cloud-plus/extend-function/kafka.md)
- * [Nacos集群搭建](/ruoyi-cloud-plus/extend-function/nacos.md)
- * [SkyWalking搭建与集成](/ruoyi-cloud-plus/extend-function/skywalking.md)
- * [Prometheus+Grafana搭建](/ruoyi-cloud-plus/extend-function/prometheus_grafana.md)
- * [Sharding-Proxy搭建分库分表](/ruoyi-cloud-plus/extend-function/shardingproxy.md)
- * [对接MaxKey单点登录](/ruoyi-cloud-plus/extend-function/maxkey.md)
\ No newline at end of file
diff --git a/ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/changlog.md b/ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/changlog.md
deleted file mode 100644
index 368844cb..00000000
--- a/ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/changlog.md
+++ /dev/null
@@ -1,1385 +0,0 @@
-# 更新日志
-- - -
-
-## v2.2.1 - 2024-08-26
-
-### 重大改动
-
-* 增加 ruoyi-common-sse 模块 支持SSE推送 比ws更轻量更稳定的推送
-* 增加 springboot snailjob 等 actuator 账号密码认证 杜绝内外网信息泄漏问题
-* 增加 重构代码生成器 集成anyline开源框架 支持400+种数据库适配
-
-### 依赖升级
-
-* update springboot 3.2.6 => 3.2.9
-* update snailjob 1.0.1 => 1.1.2
-* update mapstruct-plus 1.4.3 => 1.4.4
-* update hutool 5.8.27 => 5.8.31 解决hutool不兼容jakarta问题
-* update anyline 8.7.2-20240808
-* update sms4j 3.2.1 => 3.3.2
-* update redisson 3.31.0 => 3.34.1
-* update mapstruct-plus 1.3.6 => 1.4.3
-* update lombok 1.18.32 => 1.18.34
-* update easyexcel 3.3.4 => 4.0.2
-* update springdoc 2.5.0 => 2.6.0
-* update flowable 7.0.0 => 7.0.1
-
-### cloud内容更新
-
-* update springcloud 2023.0.2 => 2023.0.3
-* update springcloud-alibaba 2023.0.1.0 => 2023.0.1.2
-* update redis 6.2.7 => 6.2.12 解决订阅key报错问题
-* update 优化 seata dockerfile 增加环境变量
-* update 优化 增加日志处理器顺序说明
-* update 优化 使用 seata-server 官方依赖简化seata集成方式
-* update 优化 屏蔽 sentinel 心跳日志
-* update 优化 dubbo元数据注册redis支持timeout(注意时间必须使用数字)
-* update 优化 调整sentinel日志级别 屏蔽心跳日志
-* update 优化 sky-agent 默认开启即使连不上服务端也跟踪配置 (有些人就爱这么用)
-* update 优化 kafka 自动创建 topic 部分人副本数不够报错问题
-* add 增加 nacos sentinel snailjob 健康检查 actuator 账号密码认证
-* fix 修复 dubbo redis元数据中心 获取监听器null问题
-* fix 修复 nacos sentinel seata 不适配新版undertow问题 先换回tomcat
-* fix 修复 依赖漏洞 限制部分依赖版本
-* fix 修复 由于alibaba sentinel 初始化机制变更导致的无法连接问题
-* fix 修复 dubbo 日志输出异常判断错误
-* remove 删除 kafka-streams 所有人都不会用也不学怎么用 删除了事
-
-### 功能更新
-
-* update 优化 去除日志部署环境判断 通过日志级别控制
-* update 优化 忽略租户与忽略数据权限支持嵌套使用(感谢 amadeus5201)
-* update 优化 租户相关controller 增加租户开关配置控制是否注册
-* update 优化 移除 alibaba ttl 与线程池搭配有问题(可传递但无法清除与更新)
-* update 优化 个人中心编辑 忽略数据权限
-* update 优化 兼容部分用户不想给用户分配角色与部门的场景
-* update 优化 租户套餐重名校验
-* update 优化 部门下存在岗位不允许删除
-* update 优化 角色编辑状态未校验问题
-* update 优化 用户脱敏增加编辑权限标识符
-* update 优化 代码生成器 自动适配oss翻译
-* update 优化 临时升级 undertow 版本 解决虚拟线程溢出问题
-* update 优化 支持通过配置文件关闭工作流
-* update 优化 增加mybatis-plus填充器兜底策略
-* update 优化 TenantSpringCacheManager 处理逻辑
-* update 优化 角色权限判断
-* update 优化 增加删除标志位常量优化查询代码
-* update 优化 监控使用独立web依赖
-* update 优化 更多脱敏策略(感谢 hemengji)
-* update 优化 设置nginx sse相关代理参数
-* update 优化 调整默认推送使用SSE
-* update 优化 Monitor监控服务通知分类打印(感谢 AprilWind)
-* update 优化 限流注解 又写key又不是表达式的情况
-* update 优化 WorkflowUtils查询用户信息发送消息未查询邮件和手机号(感谢 yanzy)
-* update 优化 注释掉其他数据库 jdbc 依赖 由用户手动添加
-* update 优化 oracle snailjob 兼容低版本oracle索引名称长度限制
-* update 优化 数据权限支持通过菜单标识符获取数据所有权
-* update 优化 数据权限支持自定义连接符
-* update 优化 TestDemo 删除前校验数据权限
-* update 优化 更换docker镜像底层系统 避免无字体情况
-
-### 问题修复
-
-* fix 修复 三方登录构建去除无用代码
-* fix 修复 多线程对同一个session发送ws消息报错问题
-* fix 修复 依赖漏洞 限制部分依赖版本
-* fix 修复 excel 基于其他字段 合并错误问题
-* fix 修复 一级缓存key未区分租户问题
-* fix 修复 id字符串格式转换错误问题
-* fix 修复 登出无法正确删除对应的租户数据问题
-* fix 修复 登录错误锁定不区分租户问题
-* fix 修复 转换模型缺少分类字段
-* fix 修复 权限标识符处理未设置成功状态问题
-* fix 修复 无法导入 bpmn 类型文件问题
-
-### 前端改动
-
-* update element-plus 2.7.5 => 2.7.8
-* update vue 3.4.25 => 3.4.34
-* update vite 5.2.10 => 5.2.12
-* add 增加 使用 vueuse 编写 sse 推送功能
-* update 优化 使用匹配模式简化预编译配置
-* update 优化 时间搜索组件统一
-* update 优化 oss 配置按钮 使用ossConfig权限标识符与oss权限分离
-* update 优化 类型报错问题
-* update 优化 切换租户后刷新首页
-* update 优化 实现表格行选中切换
-* update 优化 使用 vueuse 重构 websocket 实现
-* update 优化 代码生成器编辑页禁用缓存 防止同步后页面不更新问题
-* update 优化 调整默认推送使用SSE
-* fix 修复 租户套餐导出路径错误问题
-* fix 修复 登出后重新登录 sse推送报错问题
-
-
-## v2.2.0 - 2024-07-09
-
-### 重大更新
-
-* [重大更新] 使用 caffeine 重构 PlusSaTokenDao 层实现 减少将近90%的redis查询提高性能
-* [重大更新] 新增 PlusCacheWrapper 装饰器 为 SpringCache 增加本地缓存减少redis查询提高性能
-* [重大更新] 升级 awsS3 到2.X版本 支持异步与自动分片上传下载(感谢 AprilWind)
-* [重大更新] 新增 flowable 工作流功能(感谢 May)
-* [重大更新] 新增 snailjob 调度中心 移除 powerjob (投诉的人太多) (感谢 dhb52)
-* [重大更新] 重构 将spring-cloud-stream改为普通的mq依赖用法(感谢 Xbhog)
-* [重大更新] 新增 ruoyi-common-bus 消息总线组件 基于MQ跨服务投递事件消息
-
-### 依赖升级
-
-* update springboot 3.1.7 => 3.2.6 支持虚拟线程
-* update springboot-admin 3.1.8 => 3.2.3
-* update springdoc 2.2.0 => 2.5.0
-* update redisson 3.24.3 => 3.29.0 支持虚拟线程
-* update hutool 5.8.22 => 5.8.26
-* update dynamic-ds 4.2.0 => 4.3.0
-* update mybatis-plus 3.5.4 => 3.5.7 修复与boot代码冲突问题
-* update lock4j 2.2.5 => 2.2.7 消除启动警告
-* update sms4j 2.2.0 => 3.2.1 支持自定义配置key 可用于多厂商多租户等
-* update mapstruct-plus 1.3.5 => 1.3.6
-* update easyexcel 3.3.3 => 3.3.4
-* update lombok 1.18.30 => 1.18.32
-* update satoken 1.37.0 -> 1.38.0
-* update aws-oss 1.12.600 => 2.25.15
-
-### 功能更新
-
-* update 优化 StreamUtils 抽取 findFirst findAny 方法
-* update 优化 更新使用 Spring 官方推荐 JDK
-* update 优化 webscoket 配置与异常拦截
-* update 优化 isTenantAdmin 空校验
-* update 优化 修改路由name命名规则(感谢 玲娜贝er)
-* update 优化 大数据量下join卡顿问题 使用子查询提高性能
-* update 优化 用户ID查询角色列表(感谢 AprilWind)
-* update 优化 获取用户账户(感谢 AprilWind)
-* update 优化 租户列表接口 避免登录之后列表被域名过滤
-* update 优化 三方登录不同域名获取不到租户id问题
-* update 优化 获取aop代理的方式 减少与其他使用aop的功能冲突的概率
-* update 优化 临时解决 spring 启动报 warn 问题
-* update 优化 移除表单构建菜单(没有可用组件 用处不大以后再考虑)
-* update 优化 修改用户信息接口(感谢 AprilWind)
-* update 优化 切换动态租户 默认线程内切换(如需全局 手动传参)
-* update 优化 适配最新前端代码生成模板
-* update 优化 代码生成 el-radio 标签过期属性
-* update 优化 文件下载(使用对流传递 降低内存使用量)(感谢 秋辞未寒)
-* update 优化 去除gc日志参数(有需要自己加)
-* update 优化 拆分异常处理器
-* update 优化 常规web异常状态码
-* update 优化 设置静态资源路径防止所有请求都可以访问静态资源
-* update 优化 代码生成表导入 排除工作流相关表
-* update 优化 redis 对Long值的存储类型不同问题
-* update 优化 去除加密请求类型限制
-* update 优化 mp多租户插件注入逻辑
-* update 优化 移除删表语句 用户自行处理
-* update 优化 RedisUtils 支持忽略租户
-* update 更新 ip地址 xdb文件
-* update 优化 新增修改菜单权限字符校验
-* update 优化 验证码背景色改为浅灰色
-* update 优化 更新 mybatis 多包扫描配置
-* update 优化 RateLimiter 注解使用体验(感谢 ly-chn)
-* update 优化 GET 方法响应体支持加密
-* update 优化 excel 单元格合并可以基于注解选择需要依赖哪些字段(感谢 司猫子)
-* update 优化 OssFactory 获取实例锁性能(感谢 fanc)
-* update 优化 登录消息 支持集群发送
-* update 优化 数据权限 使用预扫描mapper注解提升代码性能
-* update 优化 数据加密 使用预扫描实体类提升代码性能(感谢 老马)
-* update 优化 Async 针对虚拟线程配置 与其他注意事项注释
-* update 优化 框架整体sql提高查询性能
-* update 优化 将p6spy配置文件统一放置到 common-mybatis 插件包内
-* update 优化 使用翻译注解简化用户查询 调整用户查询逻辑
-
-
-### 新增功能
-
-* add 新增 SMS异常处理器(感谢 AprilWind)
-* add 新增 在线设备管理(个人中心)(感谢 AprilWind)
-* add 新增 岗位编码与部门编码 并将岗位放到部门下(感谢 秋辞未寒)
-* add 新增 分布式锁Lock4j异常拦截(感谢 AprilWind)
-* add 新增 BaseMapperPlus提供一组可选是否抛出异常的selectVoOne方法(感谢 秋辞未寒)
-* add 新增 用户、部门、角色、岗位 下拉选接口与代码实现优化
-* add 新增 JustAuth 整合 TopIam 单点登录(感谢 马铃薯头)
-* add 新增 StringUtils.isVirtual 方法
-* add 新增 正则工具类 字符串提取 字符串校验
-
-### 问题修复
-
-* fix 修复 isLogin 方法抛异常无法正常返回值问题
-* fix 修复 spring路径规则 导致 actuator 被特殊方式访问问题
-* fix 修复token无效时关闭ws(感谢 AprilWind)
-* fix 修复 oss未使用租户 拼接租户id null问题
-* fix 修复 用户昵称修改后未清除对应缓存问题
-* fix 修复 文件上传图片预览问题
-* fix 修复 三方账号可以被同一个用户多次绑定问题
-* fix 修复 兼容redis5.0出现的问题
-* fix 修复 字典键值可重复配置问题
-* fix 修复 部分浏览器无法获取加密响应头问题
-* fix 修复 用户未设置部门 登录报错问题
-* fix 修复 全局异常处理器 空指针null问题
-* fix 修复 excel 表达式字典 下拉框导出格式错误
-* fix 修复 InjectionMetaObjectHandler 已存在数据依旧会获取用户信息报异常问题
-* fix 修复 关闭租户功能 三方登录报错问题
-* fix 修复 部门树排序问题
-* fix 修复 CryptoFilter 代码逻辑问题
-
-### 前端改动
-
-* update 升级 element vite 版本 最低nodejs版本提升到18.18.0
-* update 优化 更改客户端状态接口 使用clientId传参
-* update 优化 ws开关改为常开(vite5修复了崩溃bug)
-* update 优化 移除cjs
-* update 优化 对Volar支持
-* update 优化 富文本组件,修复两个组件上传图片位置错乱问题
-* update 优化 request请求类判断请求头方式
-* update 优化 密码校验策略增加非法字符限制
-* update 优化 支持全局开启或关闭接口加密功能
-* update 优化 暗黑模式,增加vxe的暗黑模式
-* update 优化 首页打开topNav不展开菜单问题
-* update 优化 el-select 与 el-input 全局样式
-* update 优化 跟密码相关的默认前端关闭防重功能
-* add 新增 社交登录整合 TopIam
-* add 新增 图片上传组件增加压缩功能支持,可自行开关
-* add 新增 vxe-table依赖支持
-* add 新增 全局用户选择组件
-* add 新增 工作流相关页面与组件
-* add 新增 使用bpmnjs流程预览
-* add 新增 在线登录设备管理(感谢 AprilWind)
-* add 新增 用户选择角色时 可搜索功能(感谢 追梦稻草人Li)
-* fix 修复 登录失效,重新登录丢失参数问题(感谢 爱宇阳)
-* fix 修复 websocket 非index页面刷新无法重连问题
-* fix 修复 全局属性找不到的问题(感谢 ahaos)
-* fix 修复 vue 类型识别问题
-* fix 修复 富文本编辑器 单页面多实例图片混乱问题
-* fix 修复 i18n无感刷新问题
-* fix 修复 文件预览大写后缀不展示的问题(感谢 北桥)
-* fix 修复 面板因为min width原因收缩不全
-* fix 修复 移动端下 无法展开菜单问题
-* fix 修复 菜单搜索下方出现白色区域
-* fix 修复 el-tag标签类型不一致问题
-* fix 修复 角色必填*号
-
-### 微服务修改
-
-* update springcloud 2022.0.4 => 2023.0.2
-* update springcloud-alibaba 2022.0.0.0 => 2023.0.1.0
-* update dubbo 3.2.7 => 3.2.14
-* update easy-es 2.0.0-beta4 => 2.0.0 正式版
-* update nacos 2.2.1 => 2.3.2 默认开启nacos服务端授权认证 (感谢 OldDriver9527)
-* update rocketmq 4.9.4 => 5.2.0 docker镜像升级
-* update kafka 3.2.0 => 3.6.2 docker镜像升级
-* update rabbitmq 3.10.6 => 3.13.3 docker镜像升级
-* update sentinel 1.8.6 => 1.8.8
-* update skywalking 9.3.0 => 9.7.0
-* update skywalking-agent 8.16.0 => 9.2.0
-* update 优化 dubbo 使用 redis 作为元数据中心管理 支持过期时间 避免过期数据堆积 解放nacos存储空间
-* update 优化 调整配置文件语法
-* update 优化 使用spring工具自定义dubbo ip获取方法(针对多网卡ip获取不正确问题)
-* update 优化 common-dubbo 删除无用依赖
-* update 优化 去除重复的扫描器 @EnableDubbo 会自行扫描包
-* update 优化 加密组件 mp依赖改为可选
-* update 优化 mybatis依赖设置为可选依赖 避免出现不应该注入的情况
-* fix 修复 sentinel-dashboard的pom引入logaback冲突问题
-* fix 修复 nacos 不兼容 logback 1.4 新版本问题
-* fix 修复 开启数据库加密 auth服务报错问题
-* fix 修复 gateway sentinel 限流报错问题(临时方案) https://github.com/alibaba/Sentinel/issues/3298
-
-
-## v2.1.2 - 2023-12-22
-
-### 依赖升级
-
-* update springboot 3.1.5 => 3.1.7
-* update springboot 2.7.17 => 2.7.18(扩展服务升级到boot2最终版本)
-* update mybatis-boot 3.0.2 => 3.0.3 优化依赖传递
-* update powerjob 4.3.3 => 4.3.6
-* update easyexcel 3.3.2 => 3.3.3
-* update transmittable-thread-local 2.14.2 => 2.14.4
-* update justauth 1.16.5 => 1.16.6
-* update redisson 3.24.1 => 3.24.3 修复订阅重启连接超时问题
-* update easy-es 1.1.1 => 2.0.0-beta4
-
-### 功能更新
-
-* update 优化 oss 远程调用 支持降级处理
-* update 优化 丰富RedisUtils对List Set类型的操作
-* update 优化 为 admin 模块 单独增加ratelimiter模块
-* update 优化 验证码接口 增加限流配置
-* update 优化 excel合并注解会根据第一合并列的结果来决定后续的列合并 (感谢 Simple)
-* update 优化 SocialUtils 代码
-* update 优化 删除无用异常类
-* update 优化 补全三方登录校验国际化
-* update 优化 sms组件 预留自动配置类
-* update 更新 关于数据库的说明
-* update 优化 sms组件 预留自动配置类
-* update 优化 将 OSS配置 改为全局模式 降低使用难度 保留sql便于用户自行扩展(常规项目用不上配置分多租户)
-* update 优化 细化oss配置管理权限控制
-* update 优化 开启 redisson 脚本缓存 减少网络传输
-* update 优化 删除 hikaricp 官方不推荐使用的配置 jdbc4 协议自带校验方法
-* update 优化 减少 PlusSaTokenDao 不必要的查询优化性能
-* update 优化 更新用户异常提示 使用登录账号
-* update 优化 使用登录用户判断是否登录 提高效率
-* update 优化 重构 LoginHelper 将本地存储代码操作封装
-* update 优化 getTenantId 判断是否开启多租户
-* update 优化 Dockerfile 使用shell模式 支持环境变量传入jvm参数
-* update 优化 WebSocketUtils 连接关闭改为警告
-* update 优化 excel多sheet页导出 (感谢 May)
-* update 优化 删除无用接口实现
-* update 优化 jvm参数调整 全面启用zgc
-* update 优化 使用动态租户重构业务对租户的逻辑
-* update 优化 TenantHelper 动态租户支持函数式方法
-* update 优化 支持多租户绑定相同的三方登录
-* update 优化 更新用户登录信息方法忽略数据权限
-* update 优化 补全三方绑定时间字段 删除无用excel注解
-* update 优化 将登录记录抽取到监听器统一处理
-* update 优化 登录消息推送异常拦截(未启动resource也不耽误用)
-* update 优化 租户插件 ignoreTable 方法支持动态租户
-
-### 新增功能
-
-* add 新增 RedisUtils.setObjectIfExists 如果存在则设置方法
-* add 新增 丰富RedisUtils对List Set类型的操作
-* add 新增 翻译组件 用户昵称翻译实现
-* add 新增 响应加密功能 支持注解强制加密接口数据 (感谢 MichelleChung)
-* add 新增 common-ratelimiter 限流模块 用于自定义业务限流 与 sentinel不冲突
-
-### 问题修复
-
-* fix 修复 stream-mq 测试服务未导入租户模块 导致鉴权不一致问题
-* fix 修复 使用zgc导致seata报错(未知原因 将alibaba组件全还原)
-* fix 修复 sentinel 镜像添加了多余接口参数
-* fix 修复 注册接口获取开关未在租户范围内问题
-* fix 修复 seata-server logback版本冲突问题
-* fix 修复 selectDictTypeByType 查询方法错误问题
-* fix 修复 一些不正常类无法加载报错问题
-* fix 修复 powerjob sql脚本针对其他数据库转义符问题 (感谢 branches)
-* fix 修复 MybatisSystemException 空指针问题
-* fix 修复 excel合并注解会根据第一合并列的结果来决定后续的列合并
-* fix 修复 session 多账号共用覆盖问题 改为 tokenSession 独立存储
-* fix 修复 token 失效后 登录获取用户null问题
-* fix 修复 powerjob部署方案 高版本nginx不生效问题
-* fix 修复 OssFactory 并发多创建实例问题
-* fix 修复 延迟队列在投递消息未到达时间的时候 服务死机导致重启收不到消息
-
-### 前端改动
-
-* update 优化 用户头像 img 变量无确定类型问题
-* update 优化 细化oss配置管理权限控制
-* update 优化 明确打包命令
-* update 优化 代码中存在的警告
-* update 优化 前端白名单页面放行逻辑
-* update 优化 页面关于权限标识符说明
-* fix 修复 append-to-body 编写错误 (感谢 Ai3_刘小龙)
-* fix 关闭动态路由tab页签时不清理组件缓存 (感谢 NickLuo)
-* fix 删除重复环境变量ElUploadInstance (感谢 棉花)
-* fix 修复 在线用户 强推按钮点击取消控制台警告问题
-* fix 修复 字典使用 default 样式报警告问题
-
-## v1.8.2 - 2023-11-27
-
-### 依赖升级
-
-* update springboot 2.7.16 => 2.7.18 升级到2.X最终版本(官方停更)
-* update mybatis-plus 3.5.3.2 => 3.5.4
-* update satoken 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
-
-### 功能更新
-
-* update 优化 页面关于权限标识符说明
-* update 优化 数据权限拦截器优先判断方法是否有效 提高性能减少无用sql解析
-* update 优化 部门数据权限使用默认兜底方案
-* update 优化 补全代码生成 columnList 接口参数注解缺失
-* update 优化 AddressUtils 兼容linux系统本地ip
-* update 优化 操作日志 部门信息完善
-* update 优化 数据权限 减少二次校验查询
-* update 修改 获取用户token和后端不一致的问题 (感谢 bestrevens)
-* update 优化 vue3 版本用户初始密码从字典查询
-* update 优化 富文本Editor组件检验图片格式
-* update 优化 操作日志列表新增IP地址查询
-* update 优化 全局数据存储用户编号
-* update 优化 菜单管理类型为按钮状态可选
-
-### 问题修复
-
-* fix 修复 OssFactory 并发多创建实例问题
-* fix 修复 demo页面字段编写错误
-* fix 修复 数据权限优化后 update delete 报null问题
-* fix 修复 五级路由缓存无效问题
-* fix 修复 oss服务无法连接
-* fix 修复 内链iframe没有传递参数问题
-* fix 修复 外链带端口出现的异常
-* fix 修复 普通角色编辑使用内置管理员code越权问题
-* fix 修复 seata XA模式缺失druid工具问题
-* fix 修复 代码生成 是否必填与数据库不匹配问题
-* fix 修复 富文本上传接口地址错误
-* fix 修复 HeaderSearch组件跳转query参数丢失问题
-* fix 修复树结构代码生成新增方法赋值错误
-
-## v2.1.1 - 2023-11-14
-
-### 依赖升级
-
-* update springboot 3.1.3 => 3.1.5
-* update springboot 2.7.14 => 2.7.17(扩展服务)
-* 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 适配mp新版本改动
-* 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(适配支持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
-
-### 功能更新
-
-* update 优化 移除不合理的方法 携带附件的邮件建议直接集成插件发送
-* update 优化 携带 clientid 跨域问题
-* update 优化 数据权限拦截器优先判断方法是否有效 提高性能减少无用sql解析
-* update 优化 适配 maxkey 新版本
-* update 优化 @Sensitive脱敏增加角色和权限校验 (感谢 盘古给你一斧)
-* update 优化 部门数据权限使用默认兜底方案
-* update 优化 更改默认日志等级为info 避免日志过多(按需开启debug)
-* update 优化 登录策略代码优化(感谢 David Wei)
-* update 优化 补全代码生成 columnList 接口参数注解缺失
-* update 优化 nginx 配置支持 websocket
-* update 优化 notice 新增通知公告发送ws推送
-* update 优化 websocket 模块减少日志输出 增加登录推送
-* update 优化 重构登录策略增加扩展性降低复杂度
-* update 优化 addressUtils 兼容linux系统本地ip
-* update 优化 补全操作日志部门数据
-* update 优化 支持数据库操作在非web环境下切换租户
-* update 优化 排除powerjob无用的依赖 减少打包30M体积
-* update 优化 删除 satoken yml 时间配置 此功能已迁移至客户端管理
-* update 优化 redis 集群模式注释说明
-* update 优化 客户端禁用限制
-* update 优化 登录日志, 在线用户展示信息(增加 客户端, 设备类型)(感谢 MichelleChung)
-* update 优化 限制框架中的fastjson版本
-* update 优化 数据权限 减少二次校验查询
-* update 优化 将部门id存入token避免过度查询redis
-* update 优化 增加租户ID为Null错误日志
-* update 优化 操作日志列表新增IP地址查询
-* update 优化 通过参数键名获取键值接口的返回体(感谢 David Wei)
-* update 优化 为 sys_grant_type 字典增加样式
-* update 优化 代码生成 页面输入框样式
-* update 优化 全业务分页查询增加排序规则避免因where条件导致乱序问题
-* update 优化 登录接口租户id被强制校验问题
-* update 优化 加密模块 支持父类统一使用加密注解(感谢 Tyler Ge)
-* update 优化 将graalvm镜像更新为openjdk镜像 需要的人自行切换即可
-* update 优化 部分使用者乱设权限导致无法获取用户信息 增加权限提示
-* update 优化 表格列的显示与隐藏小组件(感谢 bestrevens)
-* update 优化 增加表单构建不能使用说明
-* update 优化 富文本Editor组件检验图片格式
-* update 优化 操作日志列表新增IP地址查询
-* update 优化 菜单管理类型为按钮状态可选
-* update 优化 用户初始密码从参数配置查询
-* update 优化 通过参数键名获取键值接口的返回体(感谢 David Wei)
-* update 优化 字典标签支持数组和多标签(感谢 抓蛙师)
-
-### 新增功能
-
-* add 新增 websocket 群发功能
-* add 新增 前端接入websocket接收消息(感谢 三个三)
-* add 增加 rpc消息推送接口与实现
-* add 新增 CacheController Redis 缓存监控接口(感谢 Michelle.Chung)
-
-### 问题修复
-
-* fix 修复 因扩展服务不支持boot3导致无法引入common-web包 日志写出不生效问题
-* fix 修复 seata XA模式缺失druid工具问题
-* fix 修复 oss服务无法连接 导致业务异常问题 查询不应该影响业务
-* fix 修复 租户id为null 无法匹配字符串导致的嵌套key问题
-* fix 修复 部门管理orderNum排序失效问题
-* fix 修复 外链带端口出现的异常
-* fix 修复 普通角色编辑使用内置管理员code越权问题
-* fix 修复 代码生成 是否必填与数据库不匹配问题
-* fix 修复 用户注册接口校验用户名不区分租户问题
-* fix 修复 错误增加组导致的校验不生效问题
-* fix 修复 新增校验主键id问题
-* fix 修复 powerjob 使用 nginx 部署无法访问的问题
-* fix 修复 SysUserMapper 内标签使用错误(不影响使用)
-* fix 修复 新增或编辑 SysOssConfig 数据后 推送到 redis 数据不完整
-* fix 修复 树表生成查询变量使用错误
-* fix 修复 个人信息修改密码接口隐藏新旧密码参数明文(感谢 bleachtred)
-* fix 修复 删除字段后 * update sql 未更新问题
-* fix 修复 三方登录支付宝source与实际支付宝业务code不匹配问题
-* fix 修复 五级路由缓存无效问题
-* fix 修复 内链iframe没有传递参数问题
-* fix 修复 绑定第三方帐号参数“wechar”更正为“wechat” (感谢 scmiot)
-* fix 修复 用户注册缺失 clientid 问题
-* fix 修复 HeaderSearch组件跳转query参数丢失问题
-* fix 修复 自定义字典样式不生效的问题
-* fix 修复 login 页面 loading 未关闭问题
-
-## v1.8.1 - 2023-09-26
-
-### 依赖升级
-
-* update springboot 2.7.14 => 2.7.16
-* update springboot-admin 2.7.10 => 2.7.11
-* update satoken 1.35.0.RC => 1.36.0
-* update lombok 1.18.26 =. 1.18.30
-* update springboot 2.7.13 => 2.7.14
-* update mybatis-plus 3.5.3.1 => 3.5.3.2
-* update easyexcel 3.3.1 => 3.3.2
-* update hutool 5.8.18 => 5.8.20
-* update dubbo 3.1.8 => 3.1.11
-
-### 功能更新
-
-* update 优化 代码生成 vo实体类序列化
-* update 优化 excel 导出不必要的请求头
-* update 优化 字典标签支持传分隔符分隔的字符串和数组
-* update 优化 控制台debuger位置错误问题
-* update 优化 TopNav 菜单样式
-* update 优化 注册用户异常报错不正确问题
-* update 优化 全局异常处理器 业务异常不输出具体堆栈信息 减少无用日志存储
-* update 优化 用户管理 只查询未禁用的部门角色岗位数据
-* update 优化 岗位如果绑定了用户则不允许禁用
-* update 优化 部门与角色如果绑定了用户则不允许禁用
-* update 优化 加密实现 使用 EncryptUtils 统一处理
-* update 优化 适配 mysql 8.0.34 升级连接机制
-* update 优化 excel导出字典转下拉框 无需标记index自动处理
-* update 优化 excel 导出字典默认转为下拉框
-* update 删除一些跟swagger有关的字眼 避免误解
-* update 优化 角色权限支持仅本人权限查看 解决无法查看自己创建的角色问题
-* update 优化 xxljob 端口随着主应用端口飘逸 避免集群冲突
-
-### 问题修复
-
-* fix 修复 自定义字典样式不生效的问题
-* fix 修复 新建用户可能会存在的越权行为
-* fix 修复 字典缓存删除方法参数错误问题
-* fix 修复 修复树模板父级编码变量错误
-* fix 修复 demo 模块缺少 security 依赖问题
-* fix 修复 升级 mp 版本导致的问题
-* fix 修复 加密模块数据转换异常问题
-* fix 修复 动态设置 token 有效期不生效问题
-* fix 修复 token 过期登出无法清理在线用户问题
-
-
-## v2.1.0 - 2023-09-06
-
-# 开发历程
-
-* 2023年5月 开始 2.1.0 计划 历经1个月的设计与讨论
-* 2023年6月 开始着手开发 历经2个多月的开发 特别感谢团队的小伙伴与一些热心的粉丝 参与功能开发与测试
-* 2023年8月 开始公测 历经将近1个月的公测与修复工作(期间成功支持多位使用者生产使用)
-* 2023年9月初 正式发布(经过多个小伙伴的生产实践 已基本可尝试生产使用)
-> 关于1.X的说明 由于SpringBoot2.X与vue2.X均在11月底停止维护
-> 故而咱们vue版本1.X也无法再继续更新
-> 介于1.X的用户量特别庞大 功能也非常的稳定
-> 计划于11月底同Boot2.X一同停止更新但还会持续维护修复bug(修复的形式为直接提交到1.X分支停止发版)
-
-# 视频介绍
-
-为了更好的让大家了解 2.1.0 作者录制了相关的视频 供大家快速了解上手
-
-* 2.1.0 新功能与变更介绍: https://www.bilibili.com/video/BV1fj411y71X/
-
-# 更新日志
-
-### 重大更新
-
-* [重大更新] 优化 相关代码 完成代码生成多数据源统一存储(感谢 WangBQ)
-* [不兼容更新] 移除 原短信功能 集成更强大的 sms4j 短信工具包(感谢 友杰)
-* [不兼容更新] 对接 powerjob 实现分布式任务调度 删除原有 xxljob 原因为社区不更新功能太少只支持mysql(感谢 yhan219)
-* [重大更新] 新增 三方授权绑定登录功能 基于 justauth 支持市面上大部分三方登录(感谢 三个三)
-* [不兼容更新] 新增 客户端授权功能 不需要更改任何代码即可完成多端动态对接(感谢 Michelle.Chung)
-* [重大更新] 新增 前后端接口请求加密传输 基于AES+RSA动态高强度加密(感谢 wdhcr)
-* [重大更新] 新增 三方授权登录 对接 maxkey 单点登录
-* [不兼容更新] 优化 redis序列化配置 更改为通用格式(升级需清除redis所有数据)
-* [重大更新] 新增 通过 sharding-proxy 实现分库分表(感谢 rice666 !pr94)
-
-### 依赖升级
-
-* update springboot 3.0.7 => 3.1.3
-* update springboot-admin 3.1.3 => 3.1.5
-* update springcloud 2022.0.2 => 2022.0.4
-* update springcloud-alibaba 2022.0.0.0-RC2 => 2022.0.0.0
-* update springdoc 2.1.0 => 2.2.0
-* update spring-mybatis 3.0.1 => 3.0.2
-* update mybatis-plus 3.5.3.1 => 3.5.3.2
-* update easyexcel 3.2.1 => 3.3.2
-* update mapstruct-plus 1.2.3 => 1.3.5 解决修改实体类 idea不编译问题
-* update satoken 1.34.0 => 1.35.0.RC 优化过期配置 支持多端token自定义有效期
-* update dynamic-ds 3.6.1 => 4.1.3 支持 SpringBoot3
-* update sms4j 2.2.0
-* update hutool 5.8.18 => 5.8.20
-* update redisson 3.20.1 => 3.23.4
-* update lock4j 2.2.4 => 2.2.5
-* update aws-java-sdk-s3 1.12.400 => 1.12.540
-* update maven-surefire-plugin 3.0.0 => 3.1.2
-* update seata 1.6.1 => 1.7.0
-* update sharding-proxy 5.4.0
-* update dubbo 3.2.2 => 3.2.5
-* update skywalking-toolkit 8.14.0 => 8.16.0
-* update logstash 7.2 => 7.4
-
-### 功能更新
-
-* update 优化 与 vue 版本同步代码结构
-* update 优化 放行springboot默认error接口
-* update 优化 RepeatSubmitAspect 逻辑避免并发请求问题
-* update 调整 gateway 访问日志输出等级
-* update 优化 修改角色如果未绑定用户则无需清理
-* update 优化 用户昵称非空校验
-* update 优化 在全局异常拦截器中增加两类异常处理
-* update 优化 StreamUtils 方法过滤null值
-* update 优化 powerjob 端口随着主应用端口飘逸 避免集群冲突
-* update 优化 角色权限支持仅本人权限查看 解决无法查看自己创建的角色问题
-* update 修改代码生成模版,日期范围统一采用addDateRange方法
-* update 优化 树表生成前端缺少 children 字段
-* update 优化 ruoyi-resource 服务添加 websocket 模块
-* update 优化 放行验证码接口、第三方登录请求与回调
-* update 更新 GlobalLogFilter#filter 根据请求头判断加密参数(感谢 Michelle.Chung !pr100)
-* update 优化 SaReactorFilter 过滤器判断 token 客户端 id 是否有效(感谢 Michelle.Chung !pr101)
-* update 删除一些跟swagger有关的字眼 避免误解
-* update 优化 兼容 clientid 通过 param 传输
-* update 优化 excel导出字典转下拉框 无需标记index自动处理(感谢 一夏coco)
-* update 优化 增加线程池销毁配置
-* update 优化 屏蔽 powerjob 无用的心跳日志
-* update 优化 适配 mysql 8.0.34 升级连接机制
-* update 优化 加密实现 使用 EncryptUtils 统一处理
-* update 优化 删除字典无用状态字段(基本用不上 禁用后还会导致回显问题)
-* update 优化 部门与角色如果绑定了用户则不允许禁用
-* update 优化 岗位如果绑定了用户则不允许禁用
-* update 优化 用户管理 只查询未禁用的部门角色岗位数据
-* update 优化 登录用户增加昵称返回
-* update 优化 全局异常处理器 业务异常不输出具体堆栈信息 减少无用日志存储
-* update 优化 将部门管理 负责人选项改为下拉框选择
-* update 优化 登录用户缓存 去除冗余统一存储
-* update 优化 注册用户异常报错不正确问题
-* update 优化 放宽菜单权限 角色关联菜单无需管理员
-
-### 新增功能
-
-* add 增加 RedisUtils 批量删除 hash key 方法
-* add 新增 Oss 上传 File 文件方法(感谢 jenn)
-* add 增加 excel 导出下拉框功能
-* add 新增 RedisUtils.setObjectIfAbsent 如果不存在则设置方法
-
-### 修复问题
-
-* fix 修复 用户重名登录报错问题
-* fix 修复 服务未添加 common-security 模块导致异常拦截器不生效问题
-* fix 修复 用户篡改管理员角色标识符越权问题
-* fix 修复 文件管理 创建人未翻译问题
-* fix 修复 monitor 监控无法展示数据问题
-* fix 修复 更换 satoken dubbo 插件导致包名不一致问题
-* fix 修复 字典缓存注解使用错误问题
-* fix 修复 接口文档未拼接服务路径问题
-* fix 修复 excel 枚举反向解析失败问题
-* fix 修复 查询部门下拉树未过滤数据权限问题
-* fix 修复 CacheName 缓存key存储错误问题
-* fix 修复 oss 列表 用户名回显错误
-* fix 修复 不同vo相同字段mybatis会自动赋值问题
-* fix 修复 删除 skywalking dubbo 2.X 插件避免与 3.X 出现兼容性问题
-* fix 修复 新增角色使用内置管理员标识符问题
-* fix 修复 token 过期登出无法清理在线用户问题
-* fix 修复 动态设置 token 有效期不生效问题
-* fix 修复 加密模块数据转换异常问题
-* fix 修复 dubbo 更改内部序列化方式 导致异常类无法反序列化问题
-* fix 修复 客户端编辑时授权类型变更未保存的问题
-* fix 修正 缺失 SysClientVoConvert 导致转换异常(感谢 Michelle.Chung)
-* fix 修正 auth 模块缺失引用导致解密异常(感谢 Michelle.Chung)
-* fix 修复 demo 与 stream-mq 模块缺少 security 依赖问题
-* fix 修复 导入用户数据 变量使用错误问题
-* fix 修复 验证码开关未动态刷新问题
-* fix 修复 自动填充数据 loginUser 为 null(感谢 charles !pr108)
-* fix 修复 修复树模板父级编码变量错误
-* fix 修复 部署部分系统出现乱码问题
-* fix 修复 一级菜单无法显示问题
-* fix 修复 新建用户可能会存在的越权行为
-* fix 修复 代码生成页面参数缺少逗号问题
-
-### 移除功能
-
-* remove 移除原有短信功能(建议使用sms4j)
-* remove 移除xxljob功能(建议使用powerjob)
-
-
-## v1.8.0 - 2023-07-11
-
-### 重大更新
-
-* [重大更新] 新增 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栏关闭页面内容压缩问题
-
-## v2.0.0 - 2023-06-15
-
-**重点说明: 由于 SpringCloudAlibaba 一直未发布正式版 导致系统底层组件可能存在些许问题 故而不建议生产使用 框架也将直接开启后续 2.1.0 的开发工作**
-
-### 重大更新
-
-* [不兼容升级] java 版本从 jdk 8 升级到 jdk 17 且需要使用 graalvm 运行(暂时未解决原生jdk存在的问题)
-* [不兼容升级] springboot 升级 3.0 版本
-* [不兼容升级] 重构 项目模块结构 采用插件化结构 易扩展易解耦
-* [不兼容升级] com.sun.mail 更改为 jakarta.mail 修改最新写法
-* [不兼容升级] javax.servlet 替换为 jakarta.servlet 更新所有代码
-* [简化性升级] 默认开启复杂结构 resultMap 自动映射 简化xml编码(多结构实体需带上主键id)
-* [数据库改动] 更新 create_by update_by 字段类型 (保存用户id)
-* [数据库改动] 新增 create_dept 字段 (保存创建部门id)
-* [不兼容更新] system 模块 所有实体类均使用 bo|vo 规范化
-* [重大更新] 新增 多租户功能设计 整体框架代码结构与数据库更改
-* [重大更新] 新增 mapstruct-plus 替换 BeanUtil 与 BeanCopyUtils 工具
-* [不兼容更新] 重构 登录注解接口与cloud版本统一接口路径
-* [不兼容更新] 重构 BaseMapperPlus接口 去除 `@param Mapper` 泛型
-* [不兼容更新] 移除 vue2 前端工程 全面启用 vue3
-* [重大更新] 新增 vue3 + TS 版本前端(独立仓库后续与Cloud版本共用)
-* [重大更新] 增加 websocket 模块 支持token鉴权 支持分布式集群消息同步
-* [重大更新] 框架文档全面翻新 https://plus-doc.dromara.org
-* [不兼容更新] 代码生成 支持代码生成多数据源统一存储(主库存储子库的表 无需子库加gen表了)
-* [不兼容更新] 重构 将系统内置配置放置到common包内独立加载 不允许用户随意修改
-
-### 依赖升级
-
-* update java 1.8 => 17
-* update springboot 2.7.7 => 3.0.7
-* update springcloud 2021.0.6 => 2022.0.2
-* update springcloud-alibaba 2022.0.0.0-RC2
-* update springboot-admin 2.7.10 => 3.0.4
-* update springdoc 1.6.14 => 2.1.0
-* udpate dubbo 3.1.8 => 3.2.2
-* update lock4j 2.2.3 => 2.2.4
-* update dynamic-ds 3.5.2 => 3.6.1
-* update easyexcel 3.1.5 => 3.2.1
-* update hutool 5.8.11 => 5.8.18
-* update redisson 3.19.2 => 3.20.1
-* update lombok 1.18.24 => 1.18.26
-* update spring-boot.mybatis 2.2.2 => 3.0.1
-* update mapstruct-plus 1.2.3
-* update maven-compiler-plugin 3.10.1 => 3.11.0
-* update maven-surefire-plugin 3.0.0-M7 => 3.0.0
-* update docker mysql 8.0.31 => 8.0.33
-* update docker nginx 1.22.1 => 1.32.4
-* update docker redis 6.2.7 => 6.2.12
-* update docker minio RELEASE.2023-04-13T03-08-07Z
-
-### 功能更新
-
-* update 适配 AsyncConfig 替换过期继承类改为实现 AsyncConfigurer 接口
-* update 适配 redis 新版本配置文件写法
-* update 适配 获取redis 监控参数接口 替换过期语法
-* update 适配 sa-token 替换新依赖 sa-token-spring-boot3-starter
-* update 适配 springboot-admin 改为最新 spring-security 写法
-* update 适配 springdoc 新版本配置方式
-* update 适配 ServletUtils 更换继承 JakartaServletUtil
-* update 适配 新序列化注解
-* update 优化 利用 resultMap 自动映射配置 简化 xml (非嵌套)
-* update 优化 调整 system entity 实体与 controller 包结构
-* update 优化 实体类中校验注解的提示信息
-* update 优化 使用 jdk17 语法优化代码
-* update 优化 所有 properties 文件改为注解启用
-* update 更新 docker 基础镜像 graalvm java17
-* update 优化 用户头像 改为存储 ossId 使用转换模块转为 url 展示
-* update 优化 重构 CellMergeStrategy 支持多级表头修复一些小问题 整理代码结构
-* update 优化 登录流程代码注释
-* update 优化 将框架内的swagger命名更改为springdoc命名避免误解
-
-### 新增功能
-
-* add 新增 flatten-maven-plugin 插件统一版本号管理
-* add 新增 ip2region 实现离线IP地址定位库
-
-### 移除功能
-
-* remove 移除 BeanCopyUtils 工具类 与 JDK17 不兼容
-* remove 移除 devtools 依赖 并不好用(建议直接用idea自带的热更)
-* remove 移除 vue2 前端工程 统一使用 vue3 工程
-
-### 修复功能
-
-* fix 修复 根据 seata 官方提交记录 临时修复 seata 关于jdk17代理的bug
-* fix 修复 登录校验错误次数未达到上限时 错误次数缓存未设置有效时间问题
-* fix 修复 common-core 包使用aop注解 但未添加aop实现类导致单独使用报错问题
-
-## v1.7.0 - 2023-05-10
-
-### 依赖升级
-
-* update springboot 2.7.9 => 2.7.11 修复 DoS 漏洞 修复CVE漏洞
-* update springcloud 2021.0.6 => 2021.0.7
-* update springcloud-alibaba 2021.0.4.0 => 2021.0.5.0
-* update dubbo 3.1.7 => 3.1.10
-* update nacos 2.2.0 => 2.2.1
-* update xxljob 2.3.1 => 2.4.0
-* update minio 升级至最新版 避免低版本信息泄漏问题
-* update hutool 5.8.15 => 5.8.18
-* update redisson 3.20.0 => 3.20.1
-* update lombok 1.18.24 => 1.18.26
-
-### 功能更新
-
-* update 优化 更改 sys_oss_config 表注释 避免误解
-* update 优化 sys_logininfor 丰富多种信息
-* update 项目正式入驻 dromara 开源社区 更改项目地址
-* update 全新 logo 全新背景图(设计师打造)
-* update 优化 代码生成模块的数据同步功能
-* update 修改多团队开发插件,支持多网卡
-* update 修改controller中校验直接返回R.fail
-* update 优化 角色sort值一样的排序问题
-* update 更换默认用户头像
-* update 优化 WebFluxUtils.getOriginalRequestUrl 方法获取空路径报错问题
-* update 去除same-token有限期配置,使用默认配置(一天)
-* update 优化固定头部页签滚动条被隐藏的问题
-* update delete vue-multiselect style
-* update 按代码规范补全重写注解
-* update 优化 极端情况获取LoginUser可能为null问题
-* update 优化 更改系统所有服务日志配置文件命名为 logback-plus.xml 避免与其他框架默认配置冲突
-* update 优化 skywalking-agent 探针日志等级调整为 WARN 减少无用日志输出
-* update 优化 加解密模块 将null判断下推防止任何可能的null出现
-* update 优化 在线用户token获取方式
-* update 优化 用户更改角色 踢掉角色相关所有在线用户
-
-### 新功能
-
-* add 集成 ip2region 实现离线IP地址定位库
-* add 增加 邮箱验证码发送接口
-* add 增加 邮箱登陆接口
-* add 增加 EncryptUtils 加解密安全工具类 可以处理base64,aes,sm4,sm2,rsa,md5,sha256加解密
-* add 增加 EncryptUtils 类中增加国密sm3的不可逆加密算法
-* add 新增 忽略数据权限写法 防止异常不执行关闭问题
-
-### 问题修复
-
-* fix 修复 MybatisExceptionHandler 未自动装载问题
-* fix 修复 代码生成 点选按钮不生效问题
-* fix 修复 Nacos 服务 SpringBoot-admin 客户端功能失效问题
-* fix 修复 findInSet 在mysql下方法搜索非数字字段时 无引号报错问题
-* fix 修复 ruoyi-demo postgres 数据库用户名密码变量错误
-* fix 修复 oracle postgres 数据库日志表索引创建错误
-* fix 修复 无法注入 mailProperties 导致 resource 模块无法启动问题
-* fix 修复tab栏”关闭其他“异常的问题
-* fix 修复 加解密拦截器 对象属性为null问题
-* fix 修复 取消oss预览状态修改 图标变化不正常问题
-* fix 修复 nacos 新版本升级后 与 docker 基础镜像系统存在兼容性问题
-
-
-## v1.6.0 - 2023-03-14
-
-### 重大更新
-
-[重大更新] add 新增 通用翻译模块 `ruoyi-common-translation` 实现(部门名、字典、oss、用户名)
-[重大更新] add 新增 数据加解密模块 `ruoyi-common-encrypt`
-
-
-### 依赖升级
-
-* update springboot 2.7.7 => 2.7.9
-* update springcloud 2021.0.5 => 2021.0.6
-* update easyexcel 3.1.5 => 3.2.1
-* update redisson 3.19.1 => 3.20.0
-* update springdoc 1.6.14 => 1.6.15
-* update hutool 5.8.12 => 5.8.15 (13与14有问题勿使用)
-* update logstash-sdk 7.1.1 => 7.2
-* update aws-java-sdk-s3 1.12.373 => 1.12.400
-* update tencent-sms 3.1.660 => 3.1.687
-* update skywalking 8.9.1 => 9.3.0
-* update skywalking-agent 8.13.0 => 8.14.0
-* update dubbo 3.1.4 => 3.1.7 解决dubbo报一些无用警告问题
-* update element-ui 2.15.10 => 2.15.12
-
-### 功能更新
-
-* update 优化 修改 oss 配置页面开关说明 避免造成误解
-* update 优化 `gateway` 对接 `sentinel` 使用网关特定模式
-* update 优化 转移 `logback-common` 配置到 `common-web` 模块 `gateway` 单独处理
-* update 优化 调整连接池默认参数
-* update 优化 `zookeeper` 自带控制台占用 `8080` 端口
-* update 优化 `DictDataMapper` 注解标注过期 推荐使用 `@Translation` 注解
-* update 优化 获取菜单数据权限接口 删除无用角色属性与逻辑
-* update 优化 调整连接池最长生命周期 防止出现警告
-* update 优化 连接池增加 `keepaliveTime` 探活参数
-* update 优化 `DataPermissionHelper` 增加 `开启/关闭` 忽略数据权限功能
-* update 重构 `OssFactory` 加载方式 改为每次比对配置做实例更新
-* update 优化 更新角色后踢掉所有相关的登录用户 用户量过大会导致redis阻塞卡顿(应粉丝要求)
-* update 优化 翻译组件 支持返回值泛型 支持多种类型数据翻译(例如: 根据主键翻译成对象)
-* update 优化 `tagsView` 右选框,首页不应该存在关闭左侧选项
-* update 优化 `copyright 2023`
-* update 优化 日志注解支持排除指定的请求参数
-* update 优化 业务校验优化代码
-* update 优化 日志管理使用索引提升查询性能
-* update 优化 框架时间检索使用时间默认值 `00:00:00 - 23:59:59`
-* update 优化 oss 预览使用 `ImagePreview` 组件
-* update 优化 统一登录接口令牌key
-
-
-### 新功能
-
-* add 新增 数据加解密模块 测试案例
-* add 新增 `StringUtils` `splitTo` 与 `splitList` 方法 优化业务代码
-
-### 问题修复
-
-* fix 修复 vue3模板 删除功能书写错误
-* fix 修复 部分服务未开启日志存储
-* fix 修复 接口问题开关不生效问题
-* fix 修复 优化文件下载出现的异常
-* fix 修复 修改密码日志存储明文问题
-* fix 修复 代码生成 `postgreSQL` 查出多余的已删除字段
-
-## v1.5.0 - 2023-01-13
-
-### 重大更新
-
-* [重大更新] 框架主体业务与代码生成器 完成 oracle postgres 多数据库类型支持(中间件不支持)
-* [重大更新] 使用 spring 事件发布机制 重构登录日志与操作日志 支持多事件监听无入侵扩展
-* 例如: 可以增加一个监听者将日志上传至ES等存储 对原有逻辑无影响
-
-### 依赖升级
-
-* update springboot 2.7.6 => 2.7.7
-* update springboot-admin 2.7.7 => 2.7.10
-* update dubbo 3.1.3 => 3.1.4
-* update seata 1.5.2 => 1.6.1 适配升级
-* update nacos 2.1.2 => 2.2.0 适配升级
-* update mybatis-plus 3.5.2 => 3.5.3.1
-* update sa-token 1.33.0 => 1.34.0
-* update springdoc 1.6.13 => 1.6.14
-* update snakeyaml 1.32 => 1.33
-* update easyexcel 3.1.3 => 3.1.5
-* update redisson 3.18.0 => 3.19.1
-* update easy-es 1.1.0 => 1.1.1
-* update hutool 5.8.10 => 5.8.11
-* update aws-s3 1.12.349 => 1.12.373
-* update aliyun-sms 2.0.22 => 2.0.23
-* update tencent-sms 3.1.635 => 3.1.660
-* update echarts 4.9.0 => 5.4.0
-
-### 功能更新
-
-* update 优化 BaseMapperPlus 使用 MP V3.5.3 新工具类 Db 简化批处理操作实现
-* update 优化 demo服务 过滤健康检查 sql 打印
-* update 优化 代码生成与框架主体使用相同的主键生成器 全局统一避免问题
-* update 优化 系统登录 使用单表查询校验用户 避免多次join查询
-* update 优化 适配框架多数据库支持 完成 oracle postgres 数据库适配(放弃 sqlserver 适配 原因: 基础中间件均不支持)
-* update 优化 删除主 sql 内无用数据
-* update 优化 删除 vue3 模板无用参数
-* update 优化 重构 ExcelUtil 全导出方法支持 OutputStream 流导出 不局限于 response
-* update 优化 maven 地址切换回 aliyun 仓库
-* update 优化 springdoc 配置鉴权头写死问题 增加持久化鉴权头配置
-* update 优化 actuator 依赖整合到 common-web 模块
-* update 优化 验证码结果使用 spel 引擎自动计算
-* update 优化 数据权限处理器 变量命名错误
-* update 优化 去除 RedisUtils 无用继承
-* update 优化 弹窗内容过多展示不全问题
-* update 优化 删除 fuse 无效选项 maxPatternLength
-* update 优化 minio 安装警告 使用新版本参数
-* update 优化 使用 spring 事件发布机制 重构登录日志与操作日志
-* update 优化 使用 spring 事件机制 重构 OssConfig 缓存更新
-* update 优化 单元格合并判断cellValue是否相等方法
-* update 优化 调整 gateway 拦截器执行顺序 优先处理 xss 过滤 然后进行缓存处理
-
-### 新功能
-
-* add 增加 GET 请求提交日期参数 默认格式化配置
-* add 增加 RedisUtils 检查缓存对象是否存在方法
-* add 增加 oracle postgres docker编排
-* add 新增 代码生成器适配 多数据库可切换生成代码
-* add 新增 oracle postgres 数据库框架sql脚本
-* add 增加 DataBaseHelper 数据库助手 用于适配多类型数据库
-* add 新增 BeanCopyUtils#mapToMap 方法
-
-### 问题修复
-
-* fix 修复 注册页面 验证码开关不生效问题
-* fix 修复 新版本 dubbo-filter-seata 插件内核与seata不一致问题(临时)
-* fix 修复 根据 key 更新参数配置报 null 问题
-* fix 修复 用户注册 用户类型字段书写错误
-* fix 修复 代码生成图片/文件/单选时选择必填无法校验问题
-* fix 修复 修改参数键名时 未移除过期缓存配置
-* fix 修复 内网鉴权 Filter 优先级问题 导致 websocket 连接失败
-* fix 修复 gateway 流控规则生效但不显示问题
-* fix 修复 新版本 Redisson 存在与 boot 2.X 的兼容性问题
-
-## v1.4.0 - 2022-12-01
-
-### 重大更新
-* [重大更新] 新增 对接 skywalking 全功能(详细看下方新功能列表)
-* [重大更新] 重构 ruoyi-nacos 使用官方依赖整合 解决一些问题 并升级 2.1.2 版本
-* [重大更新] 新增 oss 私有库功能(数据库结构改动 需执行升级sql)
-* [重大更新] 优化 数据源连接池从 druid 切换到 hikari(原因看文档)
-* [重大更新] 新增 对接 prometheus + grafana 全功能(详细看下方新功能列表)
-
-### 依赖升级
-* update springcloud 2021.0.4 => 2021.0.5
-* update springboot 2.7.4 => 2.7.6
-* update springboot-admin 2.7.5 => 2.7.7
-* update springdoc 1.6.11 => 1.6.13
-* update poi 5.2.2 => 5.2.3
-* update hutool 5.8.6 => 5.8.10
-* update aliyun-sms 2.0.18 => 2.0.22
-* update tencent-sms 3.1.591 => 3.1.611
-* update sa-token 1.30.0 => 1.33.0
-* update redisson 3.17.6 => 3.18.0
-* update easy-es 1.0.2 => 1.1.0
-* update easyexcel 3.1.1 => 3.1.3
-* update lock4j 2.2.2 => 2.2.3
-* update s3-adk 1.12.300 => 1.12.349
-* update sentinel 1.8.5 => 1.8.6
-* update nacos 2.1.1 => 2.1.2
-* update ELK 7.17.2 => 7.17.6 升级镜像版本
-* update nginx 1.21.6 => 1.22.1 修复漏洞
-* update mysql-docker 8.0.29 => 8.0.31
-
-### 功能更新
-* update 优化 分页对象 PageQuery 支持多排序 适配 文件管理 页面支持多排序
-* update 优化 获取用户信息getInfo接口 使用缓存数据获取
-* update 优化 rpc文件上传 增加 ossId 数据返回
-* update 优化 nacos 集群模式搭建 关于 nacos.home 注释说明
-* update 优化 修改头像在小屏幕上页面布局错位的问题
-* update 优化 oss 云厂商增加 华为obs关键字
-* update 优化 重置时取消部门选中
-* update 优化 新增返回警告消息提示
-* update 优化 抽取 logback 通用配置 logback-common.xml 简化其他服务日志文件书写
-* update 更改 nacos 配置文件目录 从dev文件夹迁移到nacos文件夹与其他配置区分
-* update 优化 gateway 只缓存body
-* update 优化 Dockerfile 创建目录命令简化操作
-* update 优化 gateway filter顺序 与 代码工具封装
-* update 优化 将空 catch 块形参重命名为 ignored
-* update 优化 satoken 依赖传递
-* update 优化 重写字典查询 使用本地缓存优化网络开销 提升到上级实现减少rpc调用频率 使用流处理减少字符串操作
-* update 优化 减小腾讯短信引入jar包的体积
-* update 优化 简化一些方法的写法
-* update 优化 消除Vue3控制台出现的警告信息
-* update 优化 忽略不必要的属性数据返回
-* update 优化 重构 mysql-jdbc 依赖到 mybatis 包内 替换为最新坐标
-
-### 新功能
-* add 新增 所有服务 docker 部署对接 skywalking
-* add 新增 三大 mq 整合 skywalking
-* add 新增 seata 整合 skywalking 手动编译 seata 插件包
-* add 新增 ruoyi-common-skylog 整合 skywalking 日志推送
-* add 增加 skywalking docker编排
-* add 增加 ruoyi-seata-server redis模式配置
-* add 新增 ruoyi-common-prometheus 模块 用于对接 prometheus 监控
-* add 新增 docker prometheus + grafana 容器编排
-* add 新增 ruoyi-monitor 监控服务 提供 prometheus http_sd 服务发现功能
-* add 新增 所有服务整合 ruoyi-common-prometheus 模块
-* add 新增 grafana 监控大屏配置文件(框架定制)
-* add 新增 使用 mica-metrics 为 undertow 提供健康检查
-* add 新增 字典数据映射翻译注解
-* add 增加 RedisUtils 获取缓存Map的key列表
-
-### 问题修复
-* fix 修复 开启账号同端互斥登录 被顶掉后登出报null异常问题
-* fix 修复 设置NameMapper导致队列功能异常问题
-* fix 修复 EnvironmentPostProcessor 不生效问题
-* fix 修复 文件上传组件格式验证问题
-* fix 修复 ruoyi-xxl-job-admin 服务健康检查配置缺失问题
-* fix 修复 Excel导出字典值转换方法由于内部调用缓存不生效bug
-* fix 修复 SysOss 方法内部调用导致缓存不生效 bug
-* fix 修复 主题颜色在Drawer组件不会加载问题
-* fix 修复 修改用户信息 校验用户名未排除当前用户问题
-* fix 修复 升级 nginx 修复漏洞 https://www.oschina.net/news/214309
-* fix 修复 用户编辑时角色和部门存在无法修改情况
-* fix 修复 RemoteDictServiceImpl 代理对象获取异常bug
-* fix 修复 菜单激活无法填充颜色 去除某些svg图标的fill属性
-* fix 修复 使用透明底png图片时, 自动填充黑色背景
-* fix 修复 table中更多按钮切换主题色未生效修复问题
-* fix 修复 dubbo 使用 tri 协议 header 请求头变为小写导致无法获取参数问题
-* fix 修复 DubboRequestFilter 优先级过高导致的 skywalking tid 取不到问题
-* fix 修复 前端脚本乱码问题
-* fix 修复 WebFluxUtils 读取空 body 报 null 问题
-* fix 修复 Log注解GET请求记录不到参数问题
-* fix 修复 某些特性的环境生成代码变乱码TXT文件问题
-* fix 修复 开启TopNav没有子菜单隐藏侧边栏
-* fix 修复 回显数据字典数组异常问题
-* fix 修复 升级 satoken 导致白名单热更不生效问题
-* fix 修复 swagger 版本与 springdoc 版本不一致导致找不到class问题
-* fix 修复 grafana 监控模板绑定数据源ID 导致无法正常读取数据问题
-
-## v1.3.0 - 2022-09-29
-
-### 重大更新
-
-* [重大更新] 新增 ruoyi-nacos 源码集成 nacos 服务端控制台 支持单机/集群模式
-* [重大更新] 重写 spring-cache 实现 更人性化的操作 支持注解指定ttl等一些参数
-* [重大更新] 新增 RuoYi-Cloud-Plus-UI 项目 Vue3 前端分支
-* [重大更新] 移除maven docker插件 过于老旧功能缺陷大 使用idea自带的docker插件替代
-* [重大更新] 优化 ruoyi-common-job 支持通过调度中心服务名注册 xxl-job-admin
-* [重大更新] 新增 ruoyi-common-sentinel 模块 支持使用服务名注册 sentinel 控制台
-
-### 依赖升级
-
-* update spring-cloud 2021.0.3 => 2021.0.4
-* update springboot 2.7.2 => 2.7.4
-* update springboot-admin 2.7.3 => 2.7.5
-* update sentinel 1.8.4 => 1.8.5 集成新 dubbo3 插件
-* update springdoc 1.6.9 => 1.6.11
-* update easy-es 0.9.80 => 1.0.2
-* update dubbo 3.0.10 => 3.1.1
-* update redisson 3.17.5 => 3.17.6
-* update druid 1.2.11 => 1.2.12
-* update hutool 5.8.5 => 5.8.6
-* update dynamic-ds 3.5.1 => 3.5.2
-* update aws-java-sdk-s3 1.12.264 => 1.12.300
-* update aliyun-sms 2.0.16 => 2.0.18
-* update tencent-sms 3.1.555 => 3.1.591
-* update snakeyaml 1.30 => 1.32
-
-### 功能更新
-
-* update 优化 getLoginId 增加必要参数空校验
-* update 优化 将 elasticsearch 解压后放入 避免造成用户误解
-* update 优化 修改资料头像与部门被覆盖的问题
-* update 优化 字典管理操作类型新增其他
-* update 优化 使用 spring-cache 注解优化缓存
-* update 优化 easy-es.enable=false 关闭 actuator 健康检查
-* update 优化 优化多角色数据权限匹配规则
-* update dubbo 升级 3.1.0 删除自行处理的源码修复 采用官方修复后的代码
-* update 优化 页面内嵌iframe切换tab不刷新数据
-* update 优化 调整 oss表key 与 ossconfig的service 字段长度不匹配
-* update 优化 操作日志密码脱敏
-* update 优化 补全缺失的接口 更改更新日志链接
-* update 优化 插入 SysOperLog 时, 限制 operUrl 属性的长度
-* update 优化 satoken 鉴权拦截器 优化多次校验
-
-### 新功能
-
-* add 增加 项目中使用到的请求头放行跨域
-* add 新增 获取oss对象元数据方法
-* add 新增 字典管理操作类型 其他
-
-### 问题修复
-
-* fix 修复 个人中心卡死或鼠标点击和键盘输入无效
-* fix 修复 BaseMapperPlus 方法命令不一致问题
-* fix 修复 图片预览组件src属性为null值控制台报错问
-* fix 修复 短信功能是否启用判断不生效
-* fix 修复 web模块 不引入nacos依赖报错问题
-* fix 修复 sentinel 构建无法读取webapp目录问题
-* fix 修复 菜单管理遗漏的prop属性
-* fix 修复 minio配置https遇到的问题
-* fix 修复 点击删除后点击取消控制台报错问题
-* fix 修复 文件/图片上传组件 第一次上传报错导致后续上传无限loading问题
-* fix 修复 ruoyi-auth 服务与 elasticsearch 端口号冲突问题
-* fix 修复 ruoyi-resource 服务与 elasticsearch 端口号冲突问题
-* fix 修复 角色部门状态字典错误 与 菜单注释错误
-* fix 修复 hutool 存在多版本问题
-* fix 修复 openapi结构体 因springdoc缓存导致多次拼接接口路径问题
-* fix 修复 oss配置删除内部数据id匹配类型问题
-* fix 修复 没有权限的用户编辑部门缺少数据
-* fix 修复 用户导入存在则更新不生效
-* fix 修复 日志转换非json数据导致报错
-* fix 修复 p6spy输出sql语句时间格式化不正确问题
-* fix 修复 不同网段因reset请求头导致下载导出跨域问题
-* fix 修复 在线用户设置永不过期 超时时间-1推送redis无效问题
-* fix 修复 snakeyaml 1.31 依旧存在漏洞 升级 1.32
-
-## v1.2.0 - 2022-08-09
-
-### 重大更新
-
-* [重大更新] 新增 ruoyi-common-elasticsearch 模块 集成 easy-es 傻瓜式操作搜索引擎
-* [重大更新] 新增 ruoyi-common-doc 整合 springdoc 基于 javadoc 实现无注解零入侵生成接口文档
-* [不兼容更新] 移除 swagger 所属 ruoyi-doc ruoyi-common-swagger 两个模块 建议使用 ruoyi-common-doc 模块
-
-### 依赖升级
-
-* update springboot 2.6.9 => 2.7.2 重构使用最新自动配置方式
-* update springboot-admin 2.6.7 => 2.7.3
-* update dubbo 3.0.9 => 3.0.10
-* update redisson 3.17.4 => 3.17.5
-* update hutool 5.8.3 => 5.8.5
-* update okhttp 4.9.1 => 4.10.0
-* update aws-java-sdk-s3 1.12.248 => 1.12.264 修复依赖安全漏洞
-* update aliyun.sms 2.0.9 => 2.0.16
-* update tencent.sms 3.1.537 => 3.1.555
-* update guava 30.0-jre => 31.1-jre
-
-### 功能更新
-
-* update 修改 资源服务 不提供默认短信 sdk 依赖
-* update 优化表格上右侧工具条(搜索按钮显隐&右侧样式凸出)
-* update 优化 前后端多环境部署保持一致 删除无用环境文件
-* update 优化 错误登录锁定与新增解锁功能
-* update 优化字典数据使用store存取
-* update 优化布局设置使用el-drawer抽屉显示
-* update 更新框架文档 专栏与视频 链接地址
-* update 优化 对象上传 主动设置文件公共读 解决天翼云OSS文件私有问题
-* update 优化 网关验证码过滤器 路径匹配改为严格匹配
-* update 优化 数据导致权限生成 SQL 重复问题
-
-### 新功能
-
-* add 增加 全局跨域过滤器 处理跨域请求 适配移动端访问
-* add 增加 搜索引擎 crud 演示案例
-
-### 问题修复
-
-* fix 防止date-picker组件报错,降级element-ui版本
-* fix 修复 RedisUtils 并发 set ttl 错误问题
-* fix 防止vue3主键字段名与row或ids一致导致报错的问题
-* fix 修复 幂等组件 逻辑问题导致线程变量未清除
-* fix 修复 图片回显查询 路径错误问题
-* fix 修复 脱敏没有实现类导致返回数据异常问题
-* fix 修复 xxljob 错误导入配置文件引发的问题
-* fix 修复 gateway模块 dockerfile 端口编写错误
-* fix 修复用户导出字典使用错误
-* fix 修复 demo 模块 远程调用失败问题
-* fix 修复 sentinel 控制台未适配 springboot 2.6 新路由策略导致无法登录问题
-
-## v1.1.0 - 2022-07-18
-
-### 重大更新
-
-* [重大更新] 新增 ELK 分布式日志中心整合
-* [重大更新] 新增 ruoyi-stream-mq 演示模块 完成 RabbitMQ RocketMQ Kafka 整合
-* [重大更新] 优化 docker 部署方式 使用 host 模式简化部署流程 降低使用成本
-* [重大更新] 调整 dubbo 服务注册命名空间与 cloud 服务保持一致 通过注册组区分访问服务
-* [安全性] 优化 nginx 限制外网访问内网 actuator 相关路径 建议升级
-
-### 依赖升级
-
-* update springboot 2.6.8 => 2.6.9
-* update easyexcel 3.1.0 => 3.1.1
-* update hutool 5.8.2 => 5.8.3
-* update redisson 3.17.2 => 3.17.4
-* update aws-java-sdk-s3 1.12.215 => 1.12.248
-* update tencentcloud-sdk-java 3.1.500 => 3.1.537
-* update dubbo 3.0.8 => 3.0.9
-* update seata 1.5.1 => 1.5.2
-
-### 功能更新
-
-* update 增加 redisson key 前缀配置
-* update 优化 DateColumn 支持单模板多key场景
-* update 优化部署脚本 增加 elk kafka rabbitmq rocketmq 等配置
-* update 修改 oss 客户端自定义域名 统一使用https开关控制协议头
-* update 优化 使用 StreamUtils 简化业务流操纵
-* update 优化 ruoyi-demo 模块 去除用不上的 seata 依赖
-* update 优化 接口文档 接口地址与服务地址不匹配问题
-* update 优化字典数据回显样式下拉框显示值
-* update 默认不启用压缩文件缓存防止node_modules过大
-* update 优化登出方法
-
-### 新功能
-
-* add 增加 rocketmq docker编排
-* add 新增 rabbitmq docker编排 包含延迟插件
-* add 新增 kafka docker编排
-* add 增加 es ik 分词器插件集成
-* add 增加 StreamUtils 流工具 简化 stream 流操纵
-
-### 问题修复
-
-* fix 修复 获取 SensitiveService 空问题 增加空兼容
-* fix 修复 演示页面导出路径错误
-* fix 修复 minio 上传自定义域名回显路径错误问题
-* fix 修复 hutool 工具返回不可操纵类型 导致报错问题
-* fix 修复 远程调用短信功能返回实体 SysSms 序列化报错问题
-* fix 修复 复制过程错误 导致演示excel文件损坏问题
-* fix 修复 dubbo 注册组不生效问题 通过覆盖源码方式
-* fix 修复代码生成首字母大写问题
-
-
-## v1.0.0 - 2022-06-20
-
-### 新增/优化 工程模块
-
-* add 新增 ruoyi-common-alibaba-bom 工程管理 alibaba 相关依赖
-* add 新增 ruoyi-common-bom 工程管理 ruoyi-common 相关依赖
-* add 新增 ruoyi-api-bom 工程管理 ruoyi-api 依赖项
-* add 新增 ruoyi-api-resource 模块 规范用法 移除 ruoyi-file 模块
-* add 新增 ruoyi-common-web 模块 使用 undertow 替换 tomcat
-* add 新增 ruoyi-common-dubbo 整合 dubbo 3.X 实现高性能 rpc 远程调用 替换 feign
-* add 新增 ruoyi-common-dict 实现字典多服务调用
-* add 新增 ruoyi-common-loadbalancer 自定义负载均衡模块 用于多团队开发
-* add 新增 ruoyi-common-excel 模块 集成 Alibaba EasyExcel 替换 自带excel实现
-* add 新增 ruoyi-common-oss 模块 支持 AWS S3 协议 分布式文件存储
-* add 新增 ruoyi-common-mail 邮件模块
-* add 新增 ruoyi-common-sms 短信模块 整合 阿里云、腾讯云 短信功能
-* add 新增 ruoyi-common-idempotent 分布式幂等模块
-* add 新增 ruoyi-common-satoken 整合 sa-token 重写所有权限
-* add 新增 ruoyi-xxl-job-admin 整合 xxljob 替换 quartz 支持分布式任务调度
-* add 新增 ruoyi-job 模块 统一远程处理任务 规范用法
-* add 新增 ruoyi-doc 模块 集成 Knife4j 替换 swagger
-* add 新增 ruoyi-seata-server 源码集成 Seata 1.5.X 服务端
-* add 新增 ruoyi-sentinel-dashboard 模块 源码集成 sentinel 控制台
-* update 抽取所有公用配置到 maven profile 管理
-
-### 代码依赖改动
-
-* update SpringCloud 2021.0.3
-* update 适配 SpringCloudAlibaba 2021.0.1.0 全新配置方式
-* update poi 4.1.2 => 5.2.2 性能大幅提升
-* update 重构 整合 jackson 替换 fastjson
-* update 重构 整合 redisson 客户端
-* update 重构 整合 mybatis-plus
-* update 重写 数据权限实现 基于 mybatis-plus
-* add 增加 lombok 优化原生代码
-* add 整合 hutool 优化相关代码
-* add 新增 国际化 功能
-* add 新增 lock4j 分布式锁
-* add 增加监控中心 在线日志监控 优化日志文件格式
-* add 适配 docker 部署方式
-
-### 后续/进行中计划
-
-* 增加 Vue3 前端工程
-* 应用模块 适配 Oracle、PostgreSQL、SQLServer
-* 增加 SpringCloud Stream 支持
-* 适配 Apache Kafka、Apache RocketMQ、RabbitMQ
-* 适配 ElasticSearch 分布式搜索引擎
-* 适配 Alibaba Canal 分布式数据同步中心
-* 适配 Apache SkyWalking 分布式链路追踪监控中心
-* 适配 ELK 分布式日志中心
-* 适配 Prometheus、Grafana 分布式全方位数据大屏监控
diff --git a/ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/extend-function/elk.md b/ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/extend-function/elk.md
deleted file mode 100644
index 58c2eda8..00000000
--- a/ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/extend-function/elk.md
+++ /dev/null
@@ -1,37 +0,0 @@
-# ELK搭建
-- - -
-# 环境搭建
-
-项目内置 `ELK` 的 `docker-compose` 编排 可查看 `/docker/docker-compose.yml` 文件下方扩展编排
-
-**注意: `/docker/elk/elasticsearch/` 目录下所有文件夹 均需要写权限**
-
-`chmod 777 /docker/elk/elasticsearch/data`
-`chmod 777 /docker/elk/elasticsearch/logs`
-`chmod 777 /docker/elk/elasticsearch/plugins`
-**注意: es插件需要解压后放入 `plugins` 目录**
-
-# 运行命令
-
-```shell
-docker-compose up -d elasticsearch kibana logstash
-```
-
-# 参考文章
-[docker-compose 搭建 ELK 7.X 并整合 SpringBoot](https://lionli.blog.csdn.net/article/details/125743132)
-
-# 项目内配置
-
-服务引入依赖项
-
-```xml
-
-
- com.ruoyi
- ruoyi-common-logstash
-
-```
-
-更改主 `pom` 文件 `logstash.address` 地址
-
-
diff --git a/ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/extend-function/es.md b/ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/extend-function/es.md
deleted file mode 100644
index 65d9c4d4..00000000
--- a/ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/extend-function/es.md
+++ /dev/null
@@ -1,26 +0,0 @@
-# ES搜索引擎
-- - -
-## 环境搭建(如果已经搭建了ELK则跳过)
-
-项目内置 `ELK` 的 `docker-compose` 编排 可查看 `/docker/docker-compose.yml` 文件下方扩展编排
-
-**注意: `/docker/elk/elasticsearch/` 目录下所有文件夹 均需要写权限**
-
-`chmod 777 /docker/elk/elasticsearch/data`
-`chmod 777 /docker/elk/elasticsearch/logs`
-`chmod 777 /docker/elk/elasticsearch/plugins`
-**注意: es插件需要解压后放入 `plugins` 目录**
-
-## 运行命令
-
-```shell
-docker-compose up -d elasticsearch
-```
-
-## Easy-ES 文档
-[Easy-ES 文档](https://www.easy-es.cn/)
-
-## 用法
-
-基本配置和用法可参考 `ruoyi-demo` 模块 更多高级用法请参考 Easy-ES 文档
-
diff --git a/ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/extend-function/kafka.md b/ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/extend-function/kafka.md
deleted file mode 100644
index 78521431..00000000
--- a/ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/extend-function/kafka.md
+++ /dev/null
@@ -1,9 +0,0 @@
-# Kafka搭建
-- - -
-## 环境搭建
-参考文章: [docker-compose 安装 Kafka 3.X 附带可视化界面](https://lionli.blog.csdn.net/article/details/125855550)
-
-## 用法参考
-参考 `ruoyi-stream-mq` 模块内的测试案例
-
-
\ No newline at end of file
diff --git a/ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/extend-function/maxkey.md b/ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/extend-function/maxkey.md
deleted file mode 100644
index 4b4b4305..00000000
--- a/ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/extend-function/maxkey.md
+++ /dev/null
@@ -1,20 +0,0 @@
-# 对接 MaxKey 单点登录
-- - -
-
-# 安装 MaxKey 应用服务
-
-参考 MaxKey 官方文档安装 [MaxKey安装部署](http://www.maxkey.top/doc/docs/intro/)
-
-# 配置应用 OAuth2.0 认证注册
-
-
-
-# 配置后端服务
-
-找到 `Nacos` 内的 `ruoyi-auth.yml` 配置文件
-
-修改 `maxkey` 对应的 `client-id` 与 `client-secret`
-
-
-
-
\ No newline at end of file
diff --git a/ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/extend-function/nacos.md b/ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/extend-function/nacos.md
deleted file mode 100644
index 18e6aefb..00000000
--- a/ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/extend-function/nacos.md
+++ /dev/null
@@ -1,13 +0,0 @@
-# Nacos集群搭建
-- - -
-## 集群搭建两种方式
-### 文件寻址集群
-[【RuoYi-Cloud-Plus】学习笔记 02 - Nacos(二)寻址机制之文件寻址分析](https://blog.csdn.net/Michelle_Zhong/article/details/127423521)
-
-### 地址服务器寻址集群(推荐)
-[【RuoYi-Cloud-Plus】学习笔记 03 - Nacos(三)使用 Nginx 实现地址服务器寻址及其原理分析](https://blog.csdn.net/Michelle_Zhong/article/details/127474238)
-
-## 集群路由代理设置
-[【RuoYi-Cloud-Plus】学习笔记 04 - Nacos(四)使用 Nginx 简单实现 Nacos 集群负载均衡](https://blog.csdn.net/Michelle_Zhong/article/details/127486350)
-
-设置好代理之后 跟单机用法一致 后端nacos地址写代理 `ip:端口` 即可
\ No newline at end of file
diff --git a/ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/extend-function/prometheus_grafana.md b/ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/extend-function/prometheus_grafana.md
deleted file mode 100644
index 2df4870b..00000000
--- a/ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/extend-function/prometheus_grafana.md
+++ /dev/null
@@ -1,45 +0,0 @@
-# Prometheus+Grafana搭建
-- - -
-## 基础搭建
-
-参考文章: https://lionli.blog.csdn.net/article/details/127959009
-
-## 框架内扩展
-
-框架已经包含了 docker-compose 编排 执行如下命令启动容器即可
-
-```shell
-docker-compose up -d prometheus grafana
-```
-
-## 应用配置
-
-各个服务引入 `ruoyi-common-prometheus` 模块
-
-
-
-修改 `prometheus.yml` 配置采集数据源
-
-
-
-修改 `Nacos` 地址 与 `SpringBoot-Admin` 监控地址 用于数据采集
-如都为本地应用则无需更改
-
-
-
-## 导入框架特制模板
-**注意: 此处数据源名称必须与图片保持一致 不然会和模板对应不上导致无法读取数据**
-
-
-> 找到框架内的特制模板json文件 在grafana点击上传json文件 导入模板
-
-
-
-
-## 选择查看监控
-
-点击右侧菜单浏览 选择想要查看的监控即可
-
-
-
-
\ No newline at end of file
diff --git a/ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/extend-function/rabbitmq.md b/ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/extend-function/rabbitmq.md
deleted file mode 100644
index 75e0187c..00000000
--- a/ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/extend-function/rabbitmq.md
+++ /dev/null
@@ -1,10 +0,0 @@
-# RabbitMQ搭建
-- - -
-## 环境搭建
-
-参考文章: [docker-compose 安装 RabbitMQ 3.X 附带延迟队列插件](https://lionli.blog.csdn.net/article/details/125855177)
-
-## 用法参考
-参考 `ruoyi-stream-mq` 模块内的测试案例
-
-
\ No newline at end of file
diff --git a/ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/extend-function/rocketmq.md b/ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/extend-function/rocketmq.md
deleted file mode 100644
index 98d50bb7..00000000
--- a/ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/extend-function/rocketmq.md
+++ /dev/null
@@ -1,9 +0,0 @@
-# RocketMQ搭建
-- - -
-## 环境搭建
-参考文章: [docker-compose 安装 RocketMQ 4.9.X (apache官方镜像) namesrv broker 与可视化控制台 console](https://lionli.blog.csdn.net/article/details/125798865)
-
-## 用法参考
-参考 `ruoyi-stream-mq` 模块内的测试案例
-
-
\ No newline at end of file
diff --git a/ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/extend-function/shardingproxy.md b/ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/extend-function/shardingproxy.md
deleted file mode 100644
index ebe461bc..00000000
--- a/ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/extend-function/shardingproxy.md
+++ /dev/null
@@ -1,75 +0,0 @@
-# Sharding-Proxy搭建分库分表
-- - -
-
-# 如何使用
-
-查看 `ruoyi-demo` 服务 `TestShardingController`
-
-
-
-## 首先在 MySQL 创建两个库
-
-创建两个库 `data-center_0` `data-center_1` 分别执行如下SQL
-
-```sql
-CREATE TABLE `t_order_0` (
- `order_id` bigint(20) UNSIGNED NOT NULL COMMENT '主键ID',
- `user_id` bigint(20) UNSIGNED NOT NULL COMMENT '用户ID',
- `total_money` int(10) UNSIGNED NOT NULL COMMENT '订单总金额',
- PRIMARY KEY (`order_id`),
- KEY `idx_user_id` (`user_id`) USING BTREE
-) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='订单总表';
-
-CREATE TABLE `t_order_1` (
- `order_id` bigint(20) UNSIGNED NOT NULL COMMENT '主键ID',
- `user_id` bigint(20) UNSIGNED NOT NULL COMMENT '用户ID',
- `total_money` int(10) UNSIGNED NOT NULL COMMENT '订单总金额',
- PRIMARY KEY (`order_id`),
- KEY `idx_user_id` (`user_id`) USING BTREE
-) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='订单总表';
-
-CREATE TABLE `t_order_item_0` (
- `order_item_id` bigint(20) UNSIGNED NOT NULL COMMENT '子订单ID',
- `order_id` bigint(20) UNSIGNED NOT NULL COMMENT '主键ID',
- `user_id` bigint(20) UNSIGNED NOT NULL COMMENT '用户ID',
- `money` int(10) UNSIGNED NOT NULL COMMENT '子订单金额',
- PRIMARY KEY (`order_item_id`),
- KEY `idx_order_id` (`order_id`) USING BTREE,
- KEY `idx_user_id` (`user_id`) USING BTREE
-) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='订单子表';
-
-CREATE TABLE `t_order_item_1` (
- `order_item_id` bigint(20) UNSIGNED NOT NULL COMMENT '子订单ID',
- `order_id` bigint(20) UNSIGNED NOT NULL COMMENT '主键ID',
- `user_id` bigint(20) UNSIGNED NOT NULL COMMENT '用户ID',
- `money` int(10) UNSIGNED NOT NULL COMMENT '子订单金额',
- PRIMARY KEY (`order_item_id`),
- KEY `idx_order_id` (`order_id`) USING BTREE,
- KEY `idx_user_id` (`user_id`) USING BTREE
-) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='订单子表';
-
-```
-
-## 然后更改配置文件
-
-更改 `config-sharding.yaml` 配置文件内的数据库连接地址与用户名密码
-
-## 服务搭建
-
-参考部署文档上传 docker 文件夹 内部包含 `shardingproxy` 配置文件
-
-
-
-框架已经包含了 docker-compose 编排 执行如下命令启动容器即可
-
-```shell
-docker-compose up -d shardingproxy
-```
-
-## 最后运行 demo
-
-运行 demo 提供的 controller 代码查看数据库内数据即可
-
-## 用法参考视频(略有不同 理性观看)
-
-用法参考视频: https://www.bilibili.com/video/BV1XN411A7Tv/
diff --git a/ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/extend-function/skywalking.md b/ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/extend-function/skywalking.md
deleted file mode 100644
index 6ad0aecc..00000000
--- a/ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/extend-function/skywalking.md
+++ /dev/null
@@ -1,41 +0,0 @@
-# SkyWalking搭建与集成
-- - -
-## 服务搭建
-参考文章: [SpringBoot 整合 SkyWalking 8.X (包含 Logback 日志采集)](https://lionli.blog.csdn.net/article/details/127656534)
-
-框架已经包含了 docker-compose 编排 执行如下命令启动容器即可
-
-```shell
-docker-compose up -d elasticsearch sky-oap sky-ui
-```
-
-### 本地开发使用
-参考上方文章
-
-### docker部署使用
-上传探针到服务器 `/docker/skywalking/agent` 目录
-**不要使用网上下载的 请使用框架自带的 内含一些官网没有的插件**
-
-
-在对应服务的`dockerfile`内 打开 `skywalking` 相关参数注释
-
-
-服务编排增加探针路径映射
-
-
-
-### 对接日志推送(不推荐 建议使用ELK收集日志)
-
-框架已经封装好了对应的依赖和配置 在服务内添加如下依赖
-
-```xml
-
-
- com.ruoyi
- ruoyi-common-skylog
-
-```
-
-在 `logback.xml` 日志配置文件内引入 `skylog` 配置文件
-
-
\ No newline at end of file
diff --git a/ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/framework/architecture_diagram.md b/ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/framework/architecture_diagram.md
deleted file mode 100644
index 05db07a3..00000000
--- a/ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/framework/architecture_diagram.md
+++ /dev/null
@@ -1,3 +0,0 @@
-# 软件架构图
-- - -
-
diff --git a/ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/framework/association/collaboration.md b/ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/framework/association/collaboration.md
deleted file mode 100644
index 569aed75..00000000
--- a/ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/framework/association/collaboration.md
+++ /dev/null
@@ -1,27 +0,0 @@
-# 多团队开发
-- - -
-## 功能介绍
-
-> 多人员/团队开发往往会出现 调试程序 被负载均衡到别人那里 自己抓不到请求等问题
-> 正确团队开发模式 `测试机一台` 公共服务都放到测试机上
-> 本地开发人员 需启动 `ruoyi-gateway` 与 其他 调试的业务模块
-> 将所有服务都统一指向同一个 Nacos 服务
-> 前端连接本机 `ruoyi-gateway` 网关调试程序
-
-框架提供了 `ruoyi-common-loadbalancer` 多团队 负载均衡模块 可以将网关的请求锁定到与网关相同的IP服务
-
-需要在 `ruoyi-gateway` `ruoyi-auth` `ruoyi-modules` 引入 `ruoyi-common-loadbalancer` 模块
-
-
-
-启动前端访问本机 `ruoyi-gateway` 网关在请求转发 和 `dubbo` 进行 RPC 调用时
-会获取与本机IP地址相同的服务优先调用(如未找到 会随机返回)
-
-# 重点说明
-
-请检查本机是否有虚机网卡IP 如有多网卡获取IP地址会不准确
-
-可使用如下代码检查本机IP是否正常
-```java
-InetAddress.getLocalHost().getHostAddress()
-```
\ No newline at end of file
diff --git a/ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/framework/association/doc.md b/ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/framework/association/doc.md
deleted file mode 100644
index 422aeb9e..00000000
--- a/ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/framework/association/doc.md
+++ /dev/null
@@ -1,88 +0,0 @@
-# 接口文档
-- - -
-## 版本 >= `1.2.0`
-## 说明
-由于 `springfox` 与 `knife4j` 均停止维护 bug众多
-故从 `1.2.0` 开始 迁移到 `springdoc` 框架
-基于 `javadoc` 无注解零入侵生成规范的 `openapi` 结构体
-由于框架自带文档UI功能单一扩展性差 故移除自带UI 建议使用外置文档工具
-
-## 文档工具使用
-由于框架采用 `openapi` 行业规范 故市面上大部分的框架均支持 可自行选择
-例如: `apifox` `apipost` `postman` `torna` `knife4j` 等 根据对应工具的文档接入即可
-
-## Swagger升级SpringDoc指南
-
-常见功能如下 其他功能自行挖掘
-**注意: `javadoc` 只能替换基础功能 特殊功能还需要使用注解实现**
-
-| swagger | springdoc | javadoc |
-|----------------------------------|---------------------------------|--------------------|
-| @Api(name = "xxx") | @Tag(name = "xxx") | java类注释第一行 |
-| @Api(description= "xxx") | @Tag(description= "xxx") | java类注释 |
-| @ApiOperation | @Operation | java方法注释 |
-| @ApiIgnore | @Hidden | 无 |
-| @ApiParam | @Parameter | java方法@param参数注释 |
-| @ApiImplicitParam | @Parameter | java方法@param参数注释 |
-| @ApiImplicitParams | @Parameters | 多个@param参数注释 |
-| @ApiModel | @Schema | java实体类注释 |
-| @ApiModelProperty | @Schema | java属性注释 |
-| @ApiModelProperty(hidden = true) | @Schema(accessMode = READ_ONLY) | 无 |
-| @ApiResponse | @ApiResponse | java方法@return返回值注释 |
-
-# 建议使用 `Apifox`(常见问题有其他对接方式)
-
-官网连接: [https://www.apifox.cn/](https://www.apifox.cn/)
-视频教程: [springdoc与apifox配合使用](https://www.bilibili.com/video/BV1mr4y1j75M?p=8&vd_source=8f52c77be3233dbdd1c5e332d4d45bfb)
-
-
-
-支持 文档编写 接口调试 Mock 接口压测 自动化测试 等一系列功能
-
-### 接入框架
-
-> 1.下载或使用web在线版 创建一个自己的项目
-
-
-
-> 2.进入项目 选择项目设置 找到自动同步
-
-
-
-> 3.根据项目内所有文档组完成所有数据源创建(拉取后端`openapi`结构体)
-数据源URL格式 `http://网关ip:端口/服务路径/v3/api-docs`
-项目内所需:
-`http://localhost:8080/demo/v3/api-docs` 演示服务
-`http://localhost:8080/auth/v3/api-docs` 认证服务
-`http://localhost:8080/resource/v3/api-docs` 资源服务
-`http://localhost:8080/system/v3/api-docs` 系统服务
-`http://localhost:8080/code/v3/api-docs` 代码生成服务
-
-
-
-
-
-> 4.选择 接口管理 项目概览 点击立即导入 并等待导入完成
-后续会根据策略每3个小时自动导入一次
-每次重新进入apifox也会自动同步一次
-后端有改动也可以手动点击导入
-
-
-
-> 5.(注意版本号)设置鉴权 选择接口管理 项目概览 找到Auth 按照如下配置
-
-**版本号: >= 2.X**
-
-
-
-**版本号: 1.X**
-
-
-
-> key对应项目配置 默认为 `Authorization`
-
-
-
-
-
-
diff --git a/ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/framework/association/i18n.md b/ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/framework/association/i18n.md
deleted file mode 100644
index 304d3e04..00000000
--- a/ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/framework/association/i18n.md
+++ /dev/null
@@ -1,31 +0,0 @@
-# 国际化方案
-- - -
-* 前端国际化参考 [ruoyi前端国际化文档](http://doc.ruoyi.vip/ruoyi-vue/document/htsc.html#前端国际化流程)
-* 参考 `demo` 模块 `TestI18nController` 国际化演示案例
- 在 `Header` 请求头 增加上下文语言参数 `content-language` 参数需与国际化配置文件后缀对应
- 如 `zh_CN` `en_US` 等
-
-
-
-## 获取 `code` 对应国际化内容
-
-
-
-
-
-## 使用 `Validator` 框架校验 `controller` 参数返回国际化
-
-`controller` 校验接口参数 需要在类增加 `@Validated` 注解
-
-参数对应校验注解 使用 `{code}` 形式标注使用国际化处理
-
-
-
-
-## 使用 `Validator` 框架校验 `Bean` 返回国际化
-
-`Bean` 校验需要在接口校验 `Bean` 参数使用 `@Validated` 注解
-
-`Bean` 内属性校验注解 使用 `{code}` 形式标注使用国际化处理
-
-
\ No newline at end of file
diff --git a/ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/framework/association/inner_authentication.md b/ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/framework/association/inner_authentication.md
deleted file mode 100644
index c90d2c61..00000000
--- a/ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/framework/association/inner_authentication.md
+++ /dev/null
@@ -1,19 +0,0 @@
-# 内网鉴权
-- - -
-## 功能介绍
-
-此功能用于防止外部请求访问内部服务应用
-在请求经过 `gateway网关` 会生成一个 `id-token` 携带到后续服务进行校验
-若未经过 `gateway网关` 调用内网服务 会出现 `id-token无效` 异常
-有效防止非法请求直接访问内网服务
-
-## 开启/关闭内网鉴权
-
-更改 `application-common.yml` 配置文件的 `sa-token.check-id-token` 配置即可
-
-
-
-## 放行内网鉴权
-进入 `ruoyi-common-security` 模块找到 `SecurityConfiguration` 类 增加排除路径即可
-
-
diff --git a/ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/framework/association/new_module.md b/ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/framework/association/new_module.md
deleted file mode 100644
index 0d75525b..00000000
--- a/ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/framework/association/new_module.md
+++ /dev/null
@@ -1,39 +0,0 @@
-# 创建新服务
-- - -
-### 最简单的方式
-> 找个配置好的 例如 `ruoyi-system` 直接copy一份
-
-> 将 `pom` 名称改掉
-
-
-
-> 服务启动类 名称改掉
-
-
-
-> `application.yml` 配置服务应用名 改掉
-
-
-
-> `nacos` 新建一份新的 对应新模块名称的 配置文件
-
-
-更改 `nacos` 上的 `ruoyi-gateway.yml` 增加新服务路由
-新服务访问路径 `网关ip:端口/服务路径/controller路径/接口路径`
-例子: `http://localhost:8080/system/user/list`
-
-
-
-
-
-### 注意事项
-如果是两个不同包名的模块 需要修改如下配置
-
-
-
-
-
-如果新服务需要使用 `seata` 分布式事务
-需要在 `nacos` 上的 `seata-server.properties` 文件内增加服务组
-
-
\ No newline at end of file
diff --git a/ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/framework/association/update_package_name.md b/ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/framework/association/update_package_name.md
deleted file mode 100644
index 2dcab848..00000000
--- a/ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/framework/association/update_package_name.md
+++ /dev/null
@@ -1,33 +0,0 @@
-# 关于修改包名
-- - -
-
-**注意: 老包名为 com.ruoyi**
-
-## 1.随便找个地方新建 org.dromara 包
-
-
-## 2.在包上右键选择 refactor -> rename 选择 All Directories
-
-
-
-**因为dromara组织下有很多依赖导致idea无法识别完整包名**
-
-
-
-**需要先将dromara修改为 例如: ruoyi 然后重复上述步骤 这样就可以整包修改了**
-
-
-
-## 3.使用IDEA全局替换 org.dromara 替换为 com.xxx
-
-
-
-**注意: 由于dromara组织下项目很多 非本框架的依赖模块 请勿修改 例如上图中的 org.dromara.sms4j**
-
-## 4.如有需要 将所有模块名逐一修改即可
-
-## 5.修改完成后需查看所有common包下模块spi文件是否修改正确
-
-**老版本idea或者未按照教程修改包名可能导致文件丢包问题**
-
-
diff --git a/ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/framework/association/update_url.md b/ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/framework/association/update_url.md
deleted file mode 100644
index d36012f5..00000000
--- a/ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/framework/association/update_url.md
+++ /dev/null
@@ -1,25 +0,0 @@
-# 修改应用路径
-- - -
-# 修改访问后端接口路径
-
-更改 前端环境配置文件 `VITE_APP_BASE_API` 代理路径
-
-
-
-
-
-`prod` 生产环境需修改 `nginx.conf` 后端代理路径(上述配置文件也要改)
-
-
-
-# 修改前端页面访问路径
-修改对应环境的 `.env.环境` 文件内的 `VITE_APP_CONTEXT_PATH` 应用访问路径即可
-
-
-
-
-
-生产环境 `nginx.conf` 与之对应修改即可
-**注意: 文件真实目录为 `/usr/share/nginx/html/admin/index.html` 此功能一般为多项目部署需要 故会增加一层目录 如不需要可以自行修改**
-
-
\ No newline at end of file
diff --git a/ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/framework/basic/client.md b/ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/framework/basic/client.md
deleted file mode 100644
index 66ae32a9..00000000
--- a/ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/framework/basic/client.md
+++ /dev/null
@@ -1,85 +0,0 @@
-# 客户端管理功能
-- - -
-## 版本 >= 2.X
-
-## 客户端管理页面
-
-
-
-### 客户端管理字段说明
-| 字段名称 | 取值说明 | 注意事项 |
-|----------------|----------------------------|--------------------------------|
-| 客户端id | 由后端生成,用于前端登录校验以及接口数据加密 | 无法修改,不要删除默认数据,否则会报错 |
-| 客户端key | 前端自定义 | 无法修改,不要删除默认数据,否则会报错 |
-| 客户端秘钥 | 前端自定义 | 无法修改,不要删除默认数据,否则会报错 |
-| 授权类型 | 密码认证、短信认证、邮件认证、小程序认证、第三方认证 | 根据授权类型判断当前客户端是否支持该登录方式 |
-| 设备类型 | PC端、APP端 | |
-| Token活跃超时时间 | 自定义 | 指定时间无操作则过期(单位:秒),默认30分钟(1800秒) |
-| Token固定超时时间 | 自定义 | 指定时间必定过期(单位:秒),默认七天(604800秒) |
-
-### 前后端使用新的客户端id
-
-步骤如下:
-1. 前端管理页面生成新的客户端id。
-2. 将新的客户端id复制到前端配置文件。
-
-
-
-## 新增自定义客户端
-
-### 步骤一:新增客户端数据(例如增加小程序端)
-
-
-
-
-
-### 步骤二:配置前端请求头信息
-
-需要在全局请求头 header 中增加 cientid
-确保客户端所有请求都携带此id 可参考项目 `request.ts`
-
-
-
-`VITE_APP_CLIENT_ID` 即配置文件中的客户端id。
-
-**重点:不同客户端登录获取到的token不同与其他端不互通(例如: app登录获取到的token无法用于pc端接口查询)**
-
-## 新增自定义登录方式授权类型
-
-**重点说明: 不要单独增加登录接口 系统全局统一只有一个登录接口 只需增加不同的鉴权方式即可**
-
-如何调试使用登录看这里 -> [关于登录调试步骤](/questions/login_step.md)
-
-### 步骤一:新增字典数据
-
-
-
-
-
-### 步骤二:新增/修改客户端数据
-
-### 步骤三:后端新增认证策略
-
-新增策略实现类实现 `IAuthStrategy` 接口。
-
-
-
-参照已有策略实现类实现自定义参数校验登录方法逻辑。
-
-
-
-**注意修改 `@Service` 名称保证规范性**
-
-
-
-`LoginBody` 校验参数(可自定义)
-
-
-
-例如 扩展小程序登录参数 只需要继承 `LoginBody
-
-`
-
-校验分组(可自定义)
-
-
\ No newline at end of file
diff --git a/ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/framework/basic/code_generate.md b/ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/framework/basic/code_generate.md
deleted file mode 100644
index 742ef939..00000000
--- a/ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/framework/basic/code_generate.md
+++ /dev/null
@@ -1,86 +0,0 @@
-# 代码生成
-- - -
-## 功能介绍
-
-### 数据源配置
-
-
-
-**项目适配多种类型数据库 可以在代码生成页面切换**
-
-> 填写对应的数据源名称 点击搜索按钮 即可切换到对应的数据源
-
-
-
-**>= 2.2.1版本 项目支持100+种数据库适配 在代码生成模块增加对应的数据库依赖即可**
-
-
-
-
-### 导入数据表
-
-> 点击导入按钮 会加载系统数据库所有的表
-
-
-
-> 选择需要的表 点击确定即可
-
-
-
-
-### 编辑表生成结构
-
-> 点击表对应的编辑按钮
-
-
-
-> 更改要生成表的数据
-
-
-
-
-### 生成条件影响
-
-
-
-
-* `插入` `编辑` 影响生成 BO 类 与 前端添加编辑页面 是否有该字段
-* `列表` 影响生成 VO 类 与 前端列表页面展示 是否有该字段
-* `查询` 影响 前端页面是否有该字段的搜索框 与 后端代码是否生成对应的查询条件
-* `查询方式` 影响生成查询条件的类型
-* `必填` 影响 BO 类 与 页面是否强制校验
-* `显示类型` 影响生成页面使用何种展示组件
-* `字典类型` 影响页面是否生成与字典的关联
-
-### 树表配置
-
-> 编辑表生成信息 生成模板为 `树表` 填写对应数据即可
-
-
-
-### 主子表说明
-
-框架不支持也不推荐使用主子表
-原因一般业务场景 基本都是一对N表 多表关联场景
-还有一些 主 => 子 <= 主 场景 需求很复杂 很少有单纯主子表场景出现
-另外主子表关联 很容易出现 笛卡尔积 或者数据错乱等问题 需要自行sql调优场景
-所以建议大家都按照 单表生成 自行编写业务逻辑
-
-### 预览功能
-
-> 配置好生成信息后 可以点击预览按钮
-
-
-
-> 系统会根据已经配置好的数据 生成对应的代码预览
-> 可以再此处观察代码的生成结构和数据是否正确等
-
-
-
-
-### 代码结构同步
-
-> 实际开发中 难免会有表结构更改的需求
-> 这时可以使用 同步功能 点击同步按钮 即可与实时数据库表进行字段同步
-
-
diff --git a/ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/framework/basic/export.md b/ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/framework/basic/export.md
deleted file mode 100644
index fa901792..00000000
--- a/ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/framework/basic/export.md
+++ /dev/null
@@ -1,250 +0,0 @@
-# 导出功能
-
-- - -
-
-在本框架中引入了 `Easy Excel` 依赖(对 `Apache POI`进行了封装以及扩展),可以对数据进行导出操作(即写 Excel)。
-
-[EasyExcel 文档地址](https://easyexcel.opensource.alibaba.com/)
-
-## 导出功能使用流程说明
-
-### 步骤一:定义导出实体对象
-
-以框架中 `SysUserExportVo` 为例:
-
-```Java
- /**
- * 用户ID
- */
- @ExcelProperty(value = "用户序号")
- private Long userId;
-
- // .......................
-
- /**
- * 用户性别
- */
- @ExcelProperty(value = "用户性别", converter = ExcelDictConvert.class)
- @ExcelDictFormat(dictType = "sys_user_sex")
- private String sex;
-
- /**
- * 帐号状态(0正常 1停用)
- */
- @ExcelProperty(value = "帐号状态", converter = ExcelDictConvert.class)
- @ExcelDictFormat(dictType = "sys_normal_disable")
- private String status;
-```
-
-> 说明:
-> 1. 使用 `@ExcelProperty` 注解标注需要导出的属性。
-> 2. 注解 `@ExcelProperty` 中 `value` 属性代表表格头部标题字段,`converter` 代表使用的转换器,后面会详细说明。
-> 3. 注解 `@ExcelDictFormat` 为自定义注解,与自定义转换器结合使用,同样在后面进行详细说明。
-
-### 步骤二:使用导出方法
-
-以框架中 `SysUserController#export` 方法为例:
-
-```Java
- /**
- * 导出用户列表
- */
- @PostMapping("/export")
- public void export(SysUserBo user, HttpServletResponse response) {
- // 根据参数查询导出的用户列表数据
- List list = userService.selectUserList(user);
- // 将列表转换为导出对象列表
- List listVo = MapstructUtils.convert(list, SysUserExportVo.class);
- // 导出方法
- ExcelUtil.exportExcel(listVo, "用户数据", SysUserExportVo.class, response);
- }
-```
-
-> 说明:
-> 使用 `ExcelUtil.exportExcel` 方法完成导出功能,上述 Demo 传入参数分别是:导出对象集合,Excel sheet 表名称,导出对象类型,response。
-
-## 框架工具使用说明
-
-### 1:字典转换器
-
-字典转换器 `ExcelDictConvert` 与自定义注解 `@ExcelDictFormat` 结合使用,标注在需要转换的属性上。
-
-使用方式一:
-
-```Java
- /**
- * 用户性别
- */
- @ExcelProperty(value = "用户性别", converter = ExcelDictConvert.class)
- @ExcelDictFormat(dictType = "sys_user_sex")
- private String sex;
-```
-
-使用方式二:
-
-```Java
- /**
- * 用户性别
- */
- @ExcelProperty(value = "用户性别", converter = ExcelDictConvert.class)
- @ExcelDictFormat(readConverterExp="0=男,1=女,2=未知", separator=",")
- private String sex;
-```
-
-`@ExcelDictFormat` 注解属性说明:
-
-| 属性名称 | 属性类型 | 默认值 | 说明 |
-|------------------|--------|-----|-----------------------------------|
-| dictType | String | "" | 字典的type值 (如: sys_user_sex) |
-| readConverterExp | String | "" | 读取内容转表达式 (如: 0=男,1=女,2=未知) |
-| separator | String | "," | 与 readConverterExp 属性结合使用,表达式的分隔符 |
-
-### 2:枚举转换器
-
-字典转换器 `ExcelEnumConvert` 与自定义注解 `@ExcelEnumFormat` 结合使用,标注在需要转换的属性上。
-
-使用方式:
-
-```Java
- /**
- * 用户类型
- *
- * 使用ExcelEnumFormat注解需要进行下拉选的部分
- */
- @ExcelProperty(value = "用户类型", index = 1, converter = ExcelEnumConvert.class)
- @ExcelEnumFormat(enumClass = UserStatus.class, textField = "info")
- private String userStatus;
-```
-
-`@ExcelEnumFormat` 注解属性说明:
-
-| 属性名称 | 属性类型 | 默认值 | 说明 |
-|-----------|------------|------|------------------------------|
-| enumClass | Enum Class | - | 字典枚举类型 |
-| codeField | String | code | 字典枚举类中对应的 code 属性名称,默认为 code |
-| textField | String | text | 字典枚举类中对应的 text 属性名称,默认为 text |
-
-### 3:合并单元格
-
-`@CellMerge` 注解用于合并相同的列数据,需要结合 `CellMergeStrategy` 策略使用,标注在需要转换的属性上。
-
-使用方式:
-
-步骤一:在属性标注 `@CellMerge` 注解:
-```Java
- /**
- * 部门id
- */
- @CellMerge
- @ExcelProperty(value = "部门id")
- private Long deptId;
-```
-
-`@CellMerge` 注解属性说明:
-
-| 属性名称 | 属性类型 | 默认值 | 说明 |
-|---------|----------|-----|------------------------------|
-| index | int | -1 | 合并列的下标,建议使用默认值 |
-| mergeBy | String[] | {} | 合并需要依赖的其他字段名称(基于这个字段内容做合并条件) |
-
-
-步骤二:导出方法开启合并:
-```Java
- /**
- * 导出测试单表列表
- */
- @PostMapping("/export")
- public void export(@Validated TestDemoBo bo, HttpServletResponse response) {
- List list = testDemoService.queryList(bo);
- // 参数 true 表示开启合并单元格策略
- ExcelUtil.exportExcel(list, "测试单表", TestDemoVo.class, true, response);
- }
-```
-
-
-### 4:复杂 Excel 导出示例
-`TestExcelController` 提供了几种导出示例,如果需要可以参照相应方法进行导出。
-
-#### 4.1:单列表多数据导出(模板导出)
-
-模板内容:
-
-
-
-模板位置:`ruoyi-example/ruoyi-demo/src/main/resources/excel/`
-
-导出示例代码:参考 demo 模块 `TestExcelController` 模板写法请查看 `EasyExcel` 文档
-
-导出结果:
-
-
-
-#### 4.2:多列表多数据导出(模板导出)
-
-模板内容:
-
-
-
-模板位置:`ruoyi-example/ruoyi-demo/src/main/resources/excel/`
-
-导出示例代码:参考 demo 模块 `TestExcelController` 模板写法请查看 `EasyExcel` 文档
-
-导出结果:
-
-
-
-#### 4.3:导出下拉框
-
-`ExcelDictFormat` 注解指定的字典项默认都会转换成下拉框
-
-自定义导出省市区下拉框示例代码:参考 demo 模块 `TestExcelController`
-
-导出结果:
-
-
-
-## Easy Excel 常用注解
-
-`Easy Excel` 提供了丰富的注解可以对导出对象进行定制化操作,这里的注解说明针对的是原生注解,自定义注解会结合转换器一起进行说明。
-
-| 类型 | 注解名称 | 使用举例 | 说明 |
-|-------|-------------------------|------------------------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------|
-| 格式化注解 | @DateTimeFormat | @DateTimeFormat(value=格式化值) | 对字符串进行日期格式化 (参照 `java.text.SimpleDateFormat` 书写即可) |
-| 格式化注解 | @NumberFormat | @NumberFormat(value=格式化值, roundingMode=舍入模式) | 对字符串进行数值格式化 (参照 `java.text.DecimalFormat` 书写即可, `roundingMode` 默认 `RoundingMode.HALF_UP`) |
-| 样式注解 | @ColumnWidth | @ColumnWidth(value=值) | 设置列宽 |
-| 样式注解 | @ContentFontStyle | @ContentFontStyle(color=颜色) | 可以设置字体类型,颜色,粗细,是否斜体,下划线等,具体可查看注解 `@ContentFontStyle` |
-| 样式注解 | @ContentLoopMerge | @ContentLoopMerge(eachRow=行值, columnExtend=列值) | 设置循环合并的区域 |
-| 样式注解 | @ContentRowHeight | @ContentRowHeight(value=值) | 设置内容行高 |
-| 样式注解 | @ContentStyle | - | 设置单元格样式,具体可查看注解 `@ContentStyle` |
-| 样式注解 | @HeadFontStyle | @HeadFontStyle(color=颜色) | 设置表头字体格式,类似 `@ContentFontStyle`,具体可查看注解 `@HeadFontStyle` |
-| 样式注解 | @HeadRowHeight | @HeadRowHeight(value=值) | 设置表头行高 |
-| 样式注解 | @HeadStyle | - | 设置表头样式,具体可查看注解 `@HeadStyle` |
-| 样式注解 | @OnceAbsoluteMerge | @OnceAbsoluteMerge(firstRowIndex=开始行下标, lastRowIndex=结束行下标, firstColumnIndex=开始列下标, lastColumnIndex=结束列下标) | 根据设置值合并单元格 |
-| 属性注解 | @ExcelIgnore | @ExcelIgnore | 导出忽略该字段 |
-| 属性注解 | @ExcelIgnoreUnannotated | @ExcelIgnoreUnannotated | 默认不管加不加 `@ExcelProperty` 的注解的所有字段都会参与读写,加了 `@ExcelIgnoreUnannotated` 注解以后,不加 `@ExcelProperty` 注解的字段就不会参与 |
-| 属性注解 | @ExcelProperty | @ExcelProperty(value=值, order=排序值, index=下标, converter=转换器) | 默认按照对象属性顺序导出,如果设置了 `order` 以及 `index`,优先级 `index` > `order` > 默认;converter 可以自定义 |
-
-## 扩展说明
-
-### 自定义转换器实现
-
-由于业务需要,原生注解不一定能够符合需要,因而衍生出了自定义转换器。能够实现定制化的内容转换需要。
-以下以框架中的字典转换器 `ExcelDictConvert` 为例进行说明。
-
-字典转换器 `ExcelDictConvert`,字典转换器使用了自定义注解 `@ExcelDictFormat` 配合使用。
-
-_**注:自定义转换器并非一定需要自定义注解,也可以针对已有的注解进行自定义转换实现。**_
-
-#### 实现方式
-
-自定义转换器需要实现 `com.alibaba.excel.converters.Converter` 接口,实现接口中的方法。
-
-
-
-转换方法 `ExcelDictConvert#convertToExcelData` :
-
-
-
-## 更多功能
-
-更多导出功能使用可以参照 `Easy Excel` [官方文档](https://easyexcel.opensource.alibaba.com/docs/current/api/write)。
\ No newline at end of file
diff --git a/ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/framework/basic/import.md b/ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/framework/basic/import.md
deleted file mode 100644
index f1bbca7d..00000000
--- a/ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/framework/basic/import.md
+++ /dev/null
@@ -1,202 +0,0 @@
-# 导入功能
-- - -
-
-在本框架中引入了 `Easy Excel` 依赖(对 `Apache POI`进行了封装以及扩展),可以对数据进行导入操作(即读 Excel)。
-
-## 导入功能使用流程说明
-
-### 步骤一:定义导入实体对象
-
-以框架中 `SysUserImportVo` 为例:
-
-```java
- /**
- * 用户ID
- */
- @ExcelProperty(value = "用户序号")
- private Long userId;
-
- // .......................
-
- /**
- * 用户性别
- */
- @ExcelProperty(value = "用户性别", converter = ExcelDictConvert.class)
- @ExcelDictFormat(dictType = "sys_user_sex")
- private String sex;
-
- /**
- * 帐号状态(0正常 1停用)
- */
- @ExcelProperty(value = "帐号状态", converter = ExcelDictConvert.class)
- @ExcelDictFormat(dictType = "sys_normal_disable")
- private String status;
-```
-
-> 说明:
-> 1. 使用 `@ExcelProperty` 注解标注需要导入的属性。
-> 2. 注解 `@ExcelProperty` 中 `value` 属性代表表格头部标题字段,`converter` 代表使用的转换器,后面会详细说明。
-> 3. 注解 `@ExcelDictFormat` 为自定义注解,与自定义转换器结合使用,同样在后面进行详细说明。
-> 4. 对象禁止使用链式注解 `@Accessors(chain = true)`,会找不到set方法。
-
-### 步骤二:使用导入方法
-
-以框架中 `SysUserController#importData` 方法为例:
-
-```Java
- /**
- * 导入数据
- *
- * @param file 导入文件
- * @param updateSupport 是否更新已存在数据
- */
- @Log(title = "用户管理", businessType = BusinessType.IMPORT)
- @SaCheckPermission("system:user:import")
- @PostMapping(value = "/importData", consumes = MediaType.MULTIPART_FORM_DATA_VALUE)
- public R importData(@RequestPart("file") MultipartFile file, boolean updateSupport) throws Exception {
- // 导入方法
- ExcelResult result = ExcelUtil.importExcel(file.getInputStream(), SysUserImportVo.class, new SysUserImportListener(updateSupport));
- return R.ok(result.getAnalysis());
- }
-```
-> 说明:
-> 使用 `ExcelUtil.importExcel` 方法完成导出功能,上述 Demo 传入参数分别是:导入文件流,导入对象类型,导入监听器 `SysUserImportListener`。
-
-## 框架工具使用说明
-
-### 1:字典转换器
-
-字典转换器 `ExcelDictConvert` 与自定义注解 `@ExcelDictFormat` 结合使用,标注在需要转换的属性上。
-
-使用方式一:
-
-```Java
- /**
- * 用户性别
- */
- @ExcelProperty(value = "用户性别", converter = ExcelDictConvert.class)
- @ExcelDictFormat(dictType = "sys_user_sex")
- private String sex;
-```
-
-使用方式二:
-
-```Java
- /**
- * 用户性别
- */
- @ExcelProperty(value = "用户性别", converter = ExcelDictConvert.class)
- @ExcelDictFormat(readConverterExp="0=男,1=女,2=未知", separator=",")
- private String sex;
-```
-
-`@ExcelDictFormat` 注解属性说明:
-
-| 属性名称 | 属性类型 | 默认值 | 说明 |
-|------------------|--------|-----|-----------------------------------|
-| dictType | String | "" | 字典的type值 (如: sys_user_sex) |
-| readConverterExp | String | "" | 读取内容转表达式 (如: 0=男,1=女,2=未知) |
-| separator | String | "," | 与 readConverterExp 属性结合使用,表达式的分隔符 |
-
-### 2:枚举转换器
-
-字典转换器 `ExcelEnumConvert` 与自定义注解 `@ExcelEnumFormat` 结合使用,标注在需要转换的属性上。
-
-使用方式:
-
-```Java
- /**
- * 用户类型
- *
- * 使用ExcelEnumFormat注解需要进行下拉选的部分
- */
- @ExcelProperty(value = "用户类型", index = 1, converter = ExcelEnumConvert.class)
- @ExcelEnumFormat(enumClass = UserStatus.class, textField = "info")
- private String userStatus;
-```
-
-`@ExcelEnumFormat` 注解属性说明:
-
-| 属性名称 | 属性类型 | 默认值 | 说明 |
-|-----------|------------|------|------------------------------|
-| enumClass | Enum Class | - | 字典枚举类型 |
-| codeField | String | code | 字典枚举类中对应的 code 属性名称,默认为 code |
-| textField | String | text | 字典枚举类中对应的 text 属性名称,默认为 text |
-
-
-### 3:导入监听器
-
-#### 3.1:ExcelListener 监听器接口
-
-`ExcelListener` 扩展了 `ReadListener` 接口,增加了获取结果方法。
-
-
-
-#### 3.2:DefaultExcelListener 默认监听器
-
-`DefaultExcelListener` 默认监听器在读 Excel 时调用,主要对数据进行校验、解析、异常处理、返回结果等。导入操作时如果没有特别指定则使用该监听器。
-
-#### 3.3:SysUserImportListener 用户导入监听器
-
-`SysUserImportListener` 用户导入监听器是在用户导入时调用的监听器。
-
-该监听器重写了 `invoke` 反射接口,对导入的用户数据进行了校验;重写了 `getExcelResult` 获取结果接口,返回结果数据。
-
-#### 3.4:ExportDemoListener 带下拉框的导入监听器
-
-`ExportDemoListener` 是对带有下拉框的 Excel 进行处理的导入监听器。
-
-## Easy Excel 常用注解
-
-`Easy Excel` 提供了丰富的注解可以对导出对象进行定制化操作,这里的注解说明针对的是原生注解。
-
-| 类型 | 注解名称 | 使用举例 | 说明 |
-|-------|-------------------------|------------------------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------|
-| 格式化注解 | @DateTimeFormat | @DateTimeFormat(value=格式化值) | 对字符串进行日期格式化 (参照 `java.text.SimpleDateFormat` 书写即可) |
-| 格式化注解 | @NumberFormat | @NumberFormat(value=格式化值, roundingMode=舍入模式) | 对字符串进行数值格式化 (参照 `java.text.DecimalFormat` 书写即可, `roundingMode` 默认 `RoundingMode.HALF_UP`) |
-| 属性注解 | @ExcelIgnore | @ExcelIgnore | 导出忽略该字段 |
-| 属性注解 | @ExcelIgnoreUnannotated | @ExcelIgnoreUnannotated | 默认不管加不加 `@ExcelProperty` 的注解的所有字段都会参与读写,加了 `@ExcelIgnoreUnannotated` 注解以后,不加 `@ExcelProperty` 注解的字段就不会参与 |
-| 属性注解 | @ExcelProperty | @ExcelProperty(value=值, order=排序值, index=下标, converter=转换器) | 默认按照对象属性顺序导出,如果设置了 `order` 以及 `index`,优先级 `index` > `order` > 默认;converter 可以自定义 |
-
-## 扩展使用
-
-### 扩展一:自定义转换器实现
-
-由于业务需要,原生注解不一定能够符合需要,因而衍生出了自定义转换器。能够实现定制化的内容转换需要。
-以下以框架中的字典转换器 `ExcelDictConvert` 为例进行说明。
-
-字典转换器 `ExcelDictConvert`,字典转换器使用了自定义注解 `@ExcelDictFormat` 配合使用。
-
-_**注:自定义转换器并非一定需要自定义注解,也可以针对已有的注解进行自定义转换实现。**_
-
-#### 实现方式
-
-自定义转换器需要实现 `com.alibaba.excel.converters.Converter` 接口,实现接口中的方法。
-
-
-
-转换方法 `ExcelDictConvert#convertToJavaData` :
-
-
-
-### 扩展二:自定义监听器实现
-
-自定义监听器主要用于在读取解析 Excel 数据时进行自定义操作。
-以下以框架中的用户导入监听器 `SysUserImportListener` 为例进行说明。
-
-#### 实现方式
-1. 继承分析事件监听器 `AnalysisEventListener` 以及实现 Excel 监听器 `ExcelListener`。
-
-
-
-2. 显示使用构造函数,否则将导致空指针。
-
-
-
-3. 实现 `invoke` 方法,对数据进行解析操作,可以在此方法对数据进行合法性判断。
-
-4. 实现 `getExcelResult` 方法,对结果进行操作,例如返回成功、失败的统计数据。
-
-## 更多功能
-
-更多导入功能使用可以参照 `Easy Excel` [官方文档](https://easyexcel.opensource.alibaba.com/docs/current/quickstart/read)。
\ No newline at end of file
diff --git a/ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/framework/basic/oss.md b/ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/framework/basic/oss.md
deleted file mode 100644
index 4cb42769..00000000
--- a/ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/framework/basic/oss.md
+++ /dev/null
@@ -1,124 +0,0 @@
-# 关于OSS模块使用
-- - -
-## 重点注意事项
-
-`桶/存储区域` 系统会根据配置自行创建分配权限
-~~如手动配置需要设置 `公有读` 权限 否则文件无法访问~~(`aliyun` 还需开通跨域配置)
-1.4.0 版本支持配置`公有/私有`权限(`aliyun` 还需开通跨域配置)
-访问站点 后严禁携带其他 `url` 例如: `/`, `/ruoyi` 等
-**阿里云与腾讯云SDK访问站点中不能包含桶名 系统会自动处理**
-**minio 站点不允许使用 localhost 请使用 127.0.0.1**
-**访问站点与自定义域名 都不要包含 `http` `https` 前缀 设置`https`请使用选项处理**
-
-## 代码使用
-
-> 参考 `SysOssService.upload` 用法
-> 使用 `OssFactory.instance()` 获取当前启用的 `OssClient` 实例
-> 进行功能调用 获取返回值后 存储到对应的业务表
-
-
-
-
-## 功能配置
-
-### 配置OSS
-
-> 进入 `系统管理 -> 文件管理 -> 配置管理` 填写对应的OSS服务相关配置
-
-
-
**重点说明**
-
-> 云厂商只需修改 `访问站点`对应的域 切勿乱改(云厂商强烈建议绑定自定义域名使用 七牛云必须绑定[官方规定])
-
-
-
-> 七牛云 访问站点
-
-
-
-
-
-> 阿里云 访问站点
-
-
-
-> 腾讯云 访问站点
-
-
-
-### MinIO 使用 https访问站点
-
-**注意:S3 API 签名计算算法不支持托管 MinIO Server API 的代理方案**
-
-[ minio https 配置方式](https://blog.csdn.net/Michelle_Zhong/article/details/126484358)
-
-### 切换OSS
-
-> 再配置列表点击 `状态` 按钮开启即可(注意: 只能开启一个OSS默认配置)
-> 手动使用 `OssFactory.instance("configKey")`
-
-
-
-### 扩展分类
-
-> 如有文件分类 建议创建多个 oss配置 进行切换存储
-
-例如: 创建一个 图片存储的 oss配置
-指定唯一的 `configKey` 与 `前缀目录` 或 直接使用独立的`桶`
-独立桶的特点 可以自定义访问权限
-例如: 创建一个私有文件存储桶 不对外开放
-
-
-
-> 指定需要使用的配置
-> 使用 `OssFactory.instance("image")` 获取的 `OssClient` 会加载上图的配置 从而达到上传不同的目录或桶
-
-
-
-
-
-### 上传图片或文件
-
-> 进入 `系统管理 -> 文件管理` 点击 `上传文件` 或 `上传图片` 根据选项选择即可 会对应上传到配置开启的OSS内
-
-
-
-
-
-
-### 列表展示
-
-> 默认展示图片(可预览) 文件会展示路径
-
-
-
-
-> 可以点击 `预览禁用启用` 按钮对是否展示进行更改
-
-
-
-> 点击禁用后 图片会变成路径展示
-
-
-
-> 也可再 `参数设置` 更改预览状态 将 `OSS预览列表资源` 改为 `false` 即可关闭预览
-
-
-
-### 删除功能
-
-> 点击列表上方或后方 `删除` 按钮 会根据OSS服务商类型 调用对应的删除(注意: 需确保对应的服务商配置正确)
-> 可勾选多服务商类型的文件进行删除 系统会自动判断
-
-
-
-
-### 下载功能
-
-> 点击列表后方对应资源的 `下载` 按钮 根据需求填写文件名 点击确认即可完成下载
-
-
-
diff --git a/ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/framework/basic/page.md b/ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/framework/basic/page.md
deleted file mode 100644
index 2aafe47b..00000000
--- a/ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/framework/basic/page.md
+++ /dev/null
@@ -1,29 +0,0 @@
-# 分页功能
-- - -
-
-## 重点说明
-
-> 项目使用 `mybatis-plus` 分页插件 实现分页功能 大致用法与 MP 一致 [MP分页文档](https://baomidou.com/pages/97710a/)
-> 项目已配置分页合理化 页数溢出 例如: 一共5页 查了第6页 默认返回第一页
-
-
-
-## 代码用法
-
-> `Controller` 使用 `PageQuery` 接收分页参数 具体参数参考 `PageQuery`
-
-
-
-> 构建 `Mybatis-Plus` 分页对象
-> 使用 `PageQuery#build()` 方法 可快速(基于当前对象数据)构建 `MP` 分页对象
-
-
-
-
-具体用法与 `MP` 一致
-
-> 自定义 `SQL` 方法分页
-> 只需在 `Mapper` 方法第一个参数和返回值 重点: 第一个参数 标注分页对象
-
-
-
diff --git a/ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/framework/basic/param_check.md b/ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/framework/basic/param_check.md
deleted file mode 100644
index 95ee19d8..00000000
--- a/ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/framework/basic/param_check.md
+++ /dev/null
@@ -1,158 +0,0 @@
-# 参数校验
-- - -
-
-参数校验在日常开发中十分常见,在本框架中引入了 `spring-boot-starter-validation` 依赖,底层基于 `hibernate-validator`,可以对参数进行校验。
-
-## 参数校验使用
-
-### 方法一:使用 `@Validated` 注解
-
-#### 步骤一:标注 `@Validated`
-
-`@Validated` 可以标注在类上,或者是参数前。
-
-```Java
-/** 标注在类上 **/
-@Validated
-@RestController
-@RequestMapping("/auth")
-public class AuthController {
-
- @PostMapping("/login")
- public R login(@RequestBody LoginBody body) {
- // ...
- }
-
-}
-```
-
-```Java
-/** 标注在参数前 **/
-@PostMapping
-public R add(@Validated @RequestBody SysUserBo user) {
- // ...
-}
-```
-
-#### 步骤二:标注校验注解
-
-在参数中加入校验注解。
-
-```Java
-public class SysUserBo {
-
- @NotBlank(message = "用户账号不能为空")
- @Size(min = 0, max = 30, message = "用户账号长度不能超过{max}个字符")
- private String userName;
-
- @NotBlank(message = "用户昵称不能为空")
- @Size(min = 0, max = 30, message = "用户昵称长度不能超过{max}个字符")
- private String nickName;
-
- @Email(message = "邮箱格式不正确")
- @Size(min = 0, max = 50, message = "邮箱长度不能超过{max}个字符")
- private String email;
-
-}
-```
-
-常见校验注解见文末附表。
-
-_注:message 支持 EL 表达式,{max} 直接读取前面的参数值。_
-
-### 方法二:使用校验工具类 `ValidatorUtils`
-
-`org.dromara.common.core.utils.ValidatorUtils`
-
-
-
-使用方式 1:校验所有带有校验注解的属性
-
-```Java
-// 校验所有带有校验注解的属性
-ValidatorUtils.validate(object);
-```
-
-使用方式 2:按照分组校验属性(可以传多个分组)
-
-```Java
-// 按照分组校验属性(可以传多个分组)
-ValidatorUtils.validate(object, group);
-```
-
-## 扩展使用
-
-### 扩展一:自定义校验注解
-
-除了已有的校验注解以外,可以结合业务进行自定义。
-
-以框架中的 `@Xss` 注解为例进行说明。
-
-```Java
-@Xss(message = "用户账号不能包含脚本字符")
-@NotBlank(message = "用户账号不能为空")
-@Size(min = 0, max = 30, message = "用户账号长度不能超过{max}个字符")
-private String userName;
-```
-
-#### 1:新增 `@Xss` 注解
-
-`org.dromara.common.core.xss.Xss`
-
-
-
-#### 2:自定义校验器
-
-自定义校验器实现 `jakarta.validation.ConstraintValidator` 接口。
-
-`org.dromara.common.core.xss.XssValidator`
-
-
-
-### 扩展二:自定义分组校验
-
-同一个对象在不同的请求中需要校验的参数不同,则可以使用分组校验。
-
-#### 1:自定义分组
-
-
-
-#### 2:`@Validated` 注解指定分组
-
-
-
-#### 3:校验注解中指定分组
-
-
-
-## 附录:常用校验注解
-
-| 注解 | 使用(只列举特殊参数值) | 参数类型 | 说明 |
-|------------------|--------------------------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|---------------------------------------|
-| @AssertFalse | @AssertFalse | boolean / Boolean | 元素值必须为 false |
-| @AssertTrue | @AssertTrue | boolean / Boolean | 元素值必须为 true |
-| @DecimalMax | @DecimalMax(value=值) | - BigDecimal
- BigInteger
- CharSequence
- byte, short, int, long 及其包装类 | 元素必须是一个数字,其值必须小于或等于指定的最大值 |
-| @DecimalMin | @DecimalMin(value=值) | - BigDecimal
- BigInteger
- CharSequence
- byte, short, int, long 及其包装类 | 元素必须是一个数字,其值必须大于或等于指定的最小值 |
-| @Digits | @Digits(integer=整数位值, fraction=小数位值) | - BigDecimal
- BigInteger
- CharSequence
- byte, short, int, long 及其包装类 | 元素必须符合整数位以及小数位范围值 |
-| @Email | @Email(regexp=正则表达式, flags=标志) | CharSequence | 元素是否符合正则表达式(正则表达式非必传) |
-| @Future | @Future | - java.util.Date
- java.util.Calendar
- java.time.Instant
- java.time.LocalDate
- java.time.LocalDateTime
- java.time.LocalTime
- java.time.MonthDay
- java.time.OffsetDateTime
- java.time.OffsetTime
- java.time.Year
- java.time.YearMonth
- java.time.ZonedDateTime
- java.time.chrono.HijrahDate
- java.time.chrono.JapaneseDate
- java.time.chrono.MinguoDate
- java.time.chrono.ThaiBuddhistDate | 元素必须是未来的时刻、日期或时间 |
-| @FutureOrPresent | @FutureOrPresent | 同 @Future | 元素必须是当前或未来的时刻、日期或时间 |
-| @Length | @Length(min=最小值, max=最大值) | - CharSequence | 验证字符串是否在包含的 min 和 max 之间 |
-| @Max | @Max(value=值) | - BigDecimal
- BigInteger
- byte, short, int, long 及其包装类 | 元素必须是一个数字,其值必须小于或等于指定的最大值 |
-| @Min | @Min(value=值) | - BigDecimal
- BigInteger
- byte, short, int, long 及其包装类 | 元素必须是一个数字,其值必须大于或等于指定的最小值 |
-| @Negative | @Negative | - BigDecimal
- BigInteger
- byte,short,int,long,float,double 及其包装类 | 元素必须是一个严格的负数(即 0 被视为无效值) |
-| @NegativeOrZero | @NegativeOrZero | - BigDecimal
- BigInteger
- byte,short,int,long,float,double 及其包装类 | 元素必须为负数或 0 |
-| @NotBlank | @NotBlank | CharSequence | 元素不能为 null,并且必须至少包含一个非空白字符 |
-| @NotEmpty | @NotEmpty | - CharSequence
- Collection
- Map
- Array | 元素不能为 null 或空集合 |
-| @NotNull | @NotNull | 不限类型 | 元素不能为 null |
-| @Null | @Null | 不限类型 | 元素必须为 null |
-| @Past | @Past | 同 @Future | 元素必须是过去的瞬间、日期或时间 |
-| @PastOrPresent | @PastOrPresent | 同 @Future | 元素必须是过去或现在的瞬间、日期或时间 |
-| @Pattern | @Pattern(regexp=正则表达式, flags=标志) | CharSequence | 元素必须与指定的正则表达式匹配(正则表达式遵循 Java 正则表达式约定) |
-| @Positive | @Positive | - BigDecimal
- BigInteger
- byte,short,int,long,float,double 及其包装类 | 元素必须是一个严格的正数(即 0 被视为无效值) |
-| @PositiveOrZero | @PositiveOrZero | - BigDecimal
- BigInteger
- byte,short,int,long,float,double 及其包装类 | 元素必须为正数或 0 |
-| @Range | @Range(min=最小值, max=最大值) | - BigDecimal
- BigInteger
- CharSequence
- byte, short, int, long 及其包装类 | 验证元素是否在包含的 min 和 max 之间 |
-| @Size | @Size(min=最小值, max=最大值) | - CharSequence
- Collection
- Map
- Array | 验证元素是否在包含的 min 和 max 之间 |
-| @Valid | @Valid | 对象 | 级联验证 |
-
-更多注解可参考包: `org.hibernate.validator`
\ No newline at end of file
diff --git a/ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/framework/basic/permissions.md b/ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/framework/basic/permissions.md
deleted file mode 100644
index 62ce2946..00000000
--- a/ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/framework/basic/permissions.md
+++ /dev/null
@@ -1,144 +0,0 @@
-# 关于数据权限
-- - -
-* 参考 demo 模块用法(需导入 test.sql 文件)
-
-### 新版数据权限功能:
-1.支持自动注入 sql 数据过滤
-2.查询、更新、删除 限制
-3.支持自定义数据字段过滤
-4.模板支持 spel 语法实现动态 Bean 处理
-5.支持与菜单权限标识符联合使用(2.2.X新功能)
-
-### 数据权限相关代码
-
-| 类 | 说明 | 功能 |
-|-------------------------------|-----------------|----------------------------------------|
-| DataScopeType | 数据权限模板定义 | 用于定义数据权限模板 |
-| DataPermission | 数据权限组注解 | 用于标注开启数据权限 (默认过滤部门权限) |
-| DataColumn | 具体的数据权限字段标注 | 用于替换数据权限模板内的 key 变量 |
-| PlusDataPermissionInterceptor | 数据权限 sql 拦截器 | 用于拦截所有 sql 检查是否标注了 `DataPermission` 注解 |
-| PlusDataPermissionHandler | 数据权限处理器 | 用于处理被拦截到的 sql 为其添加数据权限过滤条件 |
-| DataPermissionHelper | 数据权限助手 | 操作数据权限上下文变量 |
-| SysDataScopeService | 自定义 Bean 处理数据权限 | 用于自定义扩展 |
-
-## 忽略数据权限
-
-1.如果需要指定单独 SQL 不开启过滤,可在对应的 Mapper 接口添加如下忽略注解:
-```
-@InterceptorIgnore(dataPermission = "true")
-```
-
-2.如果需要在业务层忽略数据权限,可调用以下方法:
-```
-# 无返回值
-DataPermissionHelper.ignore(() -> { 业务代码 });
-# 有返回值
-Class result = DataPermissionHelper.ignore(() -> { return 业务代码 });
-```
-
-### 使用方式 `参考demo模块`
-数据权限体系 `用户 -> 多角色 => 角色 -> 单数据权限`
-> 例子: 用户A 拥有两个角色
-> 角色A 部门经理 可查看 本部门及以下部门的数据
-> 角色B 兼职开发 可查看 仅自己的数据
-
-> 创建角色 test1 为 本部门及以下
-
-
-
-> 创建角色 test2 为 仅本人
-
-
-
-> 将其分配给用户 test
-
-
-
-### 编写列表查询(注意: 数据权限注解只能在 Mapper 层使用)
-
-> 标注数据权限注解 `dept_id` 为过滤部门字段 `user_id` 为过滤创建用户
-
-
-
-### 重点注意: 如下情况不生效
-
-> 有自定义实现方法 最终执行的mapper不是这个方法 所以无法生效
->
-> 解决方案: 一直往下点 找到最终的执行mapper重写即可
-
-
-
-### 编写数据权限模板
-
-
-
-1.`code` 为关联角色的数据权限 `code`
-2.`sqlTemplate` 为 sql 模板
-`#{#deptName}` 为模板变量 对应权限注解的 `key`
-`#{@sdss}` 为模板 Bean 调用 调用其 Bean 的处理方法
-3.`elseSql` 为兜底 sql 处理当前角色与标注的注解 无对应的情况
-例如 数据权限为仅本人 且 方法并未标注具体过滤注解 则 填充 `1 = 0` 使条件不满足 不允许查看
-更详细用法可以参考 `DataScopeType` 注释
-
-### 测试代码
-
-> 使用 `管理员` 用户优先测试
-
-
-
-> 使用 `test` 用户测试
-
-
-
-> 使用 `test` 删除一条不属于自己的数据
-> sql执行为不满足条件 不允许删除
-
-
-
-
-
-
-> 使用 `test` 修改与删除同理
-> 具体实现为 更新和删除方法 标注数据权限注解
-
-
-
-### 自定义SQL模板
-
-> 1.首先在角色管理 数据权限下拉框 添加自定义模板
-> 为什么不放置到系统字典问题: 因数据权限与模板绑定 不应随意改动 最好事先定义好
-
-
-
-> 2.代码 `DataScopeType` 自定义一个SQL模板
-
-
-
-> 3.标注权限注解
-
-
-
-> 4.设置数据权限变量
-
-
-
-> 5.测试
-
-
-
-### mybatis-plus 原生方法 增加数据权限过滤
-
-> 首先查看需要重写的方法源码 重点`方法源码` `方法源码` `方法源码`
-> 例如重写 `selectPage` 方法
-
-
-
-> 复制源码到自己的 `Mapper` 并增加数据权限注解 注意左边出现重写图标 即为重写成功
-
-
-
-### 支持类标注
-
-> 获取规则 `方法 > 类` 注意: 类标注后 所有方法(包括父类方法) 都会进行数据权限过滤
-
-
diff --git a/ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/framework/basic/permissions_control.md b/ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/framework/basic/permissions_control.md
deleted file mode 100644
index 6931ca7a..00000000
--- a/ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/framework/basic/permissions_control.md
+++ /dev/null
@@ -1,178 +0,0 @@
-# 权限控制
-- - -
-
-本文采用 `Sa-Token` 框架实现权限控制。[官方文档传送门](https://sa-token.cc/doc.html#/)
-
-## 权限校验
-权限校验指的是校验用户是否拥有访问某个 API 的能力。
-
-通常情况下,一个 API 对应一个权限码,如果用户具备当前 API 的权限码,即代表有能力访问该 API。
-
-### 1:权限标识
-在本系统中,每一个菜单功能都有对应的权限标识,可以在菜单管理中进行设置。
-
-> 注:
-> 1. 前后端的权限标识要保持一致。
-> 2. 权限标识可以使用通配符`*`。
-
-
-
-
-### 2:校验方法
-#### 2.1:使用 `@SaCheckPermission` 注解进行校验
-`@SaCheckPermission` 注解是由 `Sa-Token` 框架提供的角色校验注解,可以标注在方法上或类上。
-
-- 单个权限校验:
-
-```Java
-@SaCheckPermission("system:user:list")
-```
-
-- 多个权限校验(或模式,满足任意一个权限即可):
-
-```Java
-@SaCheckPermission(
- value = {
- "system:user:list",
- "system:user:query"
- },
- mode = SaMode.OR
-)
-```
-
-- 多个权限校验(与模式,必须满足所有权限):
-
-```Java
-@SaCheckPermission(
- value = {
- "system:user:list",
- "system:user:query"
- },
- mode = SaMode.AND
-)
-```
-
-#### 2.2:使用 `StpUtil` 工具类校验
-`StpUtil` 工具类是由 `Sa-Token` 框架提供的权限工具类,提供了常用的校验方法。
-
-- 判断当前用户是否拥有某个权限(返回 `boolean`):
-
-```Java
-StpUtil.hasPermission("system:user:list");
-```
-
-- 单个权限校验:
-
-```Java
-StpUtil.checkPermission("system:user:list");
-```
-如果验证未通过,则抛出异常: `NotPermissionException`
-
-- 多个权限校验(或模式,满足任意一个权限即可):
-
-```Java
-StpUtil.checkPermissionOr("system:user:list", "system:user:query");
-```
-如果验证未通过,则抛出异常: `NotPermissionException`
-
-- 多个权限校验(与模式,必须满足所有权限):
-
-```Java
-StpUtil.checkPermissionAnd("system:user:list", "system:user:query");
-```
-如果验证未通过,则抛出异常: `NotPermissionException`
-
-## 角色校验
-角色校验指的是校验用户是否拥有某个指定角色。
-
-### 1:权限标识
-在本系统中,每个角色都拥有唯一的权限字符。
-
-除了超级管理员角色外,其他角色的权限字符可以通过角色管理进行设置。
-
-
-
-### 2:校验方法
-#### 2.1:使用 `@SaCheckRole` 注解校验
-`@SaCheckRole` 注解是由 `Sa-Token` 框架提供的角色校验注解,可以标注在方法上或类上。
-
-- 单个角色校验
-
-```Java
-@SaCheckRole("superadmin")
-```
-
-- 多个角色校验(或模式,满足任意一个角色即可):
-
-```Java
-@SaCheckRole(
- value = {
- "superadmin",
- "admin"
- },
- mode = SaMode.OR
-)
-```
-
-- 多个角色校验(与模式,必须满足所有角色):
-
-```Java
-@SaCheckRole(
- value = {
- "superadmin",
- "admin"
- },
- mode = SaMode.AND
-)
-```
-
-#### 2.2:使用 `StpUtil` 工具类校验
-`StpUtil` 工具类是由 `Sa-Token` 框架提供的权限工具类,提供了常用的校验方法。
-
-- 判断当前用户是否拥有某个角色(返回 `boolean`):
-
-```Java
-StpUtil.hasRole("superadmin")
-```
-
-- 单个权限校验:
-
-```Java
-StpUtil.checkRole("system:user:list");
-```
-如果验证未通过,则抛出异常: `NotRoleException`
-
-- 多个权限校验(或模式,满足任意一个角色即可):
-
-```Java
-StpUtil.checkRoleOr("system:user:list", "system:user:query");
-```
-如果验证未通过,则抛出异常: `NotRoleException`
-
-- 多个权限校验(与模式,必须满足所有角色):
-
-```Java
-StpUtil.checkRoleAnd("system:user:list", "system:user:query");
-```
-如果验证未通过,则抛出异常: `NotRoleException`
-
-## 角色权限双重 `OR` 校验
-除了分开校验以外,权限和角色也可以进行组合,表示备选校验。
-
-简单举个例子:
-
-假设某个 API 的权限码为 `system:user:list`,角色 `admin` 可以调用,则可以这样写:
-
-```Java
-@SaCheckPermission(value = "system:user:list", orRole = "admin")
-```
-
-以上权限只需要满足任意一项即可。更多写法可以参考 `Sa-Token` [官方文档](https://sa-token.cc/doc.html#/use/at-check?id=_4%e3%80%81%e8%a7%92%e8%89%b2%e6%9d%83%e9%99%90%e5%8f%8c%e9%87%8d-or%e6%a0%a1%e9%aa%8c)。
-
-## 当前用户的所有权限
-本系统中实现了 `StpInterface` 接口,可以对用户的权限以及角色进行管理,并且可以根据不同的用户类型进行设置。
-
-具体参考类:`org.dromara.common.satoken.core.service.SaPermissionImpl`
-
-## 忽略权限校验
-请参考文档:[网关路由与放行](/ruoyi-cloud-plus/framework/basic/router_release?id=网关路由与放行)
diff --git a/ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/framework/basic/router_release.md b/ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/framework/basic/router_release.md
deleted file mode 100644
index 9b08f069..00000000
--- a/ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/framework/basic/router_release.md
+++ /dev/null
@@ -1,26 +0,0 @@
-# 网关路由与放行
-- - -
-
-## 新增路由
-`ruoyi-gateway.yml` 配置文件 增加 `routers` 配置
-**注意: 路径格式为 `/服务路径/controller路径/接口方法路径` `*代表任意一级 **代表任意所有级`**
-下图代表 `resource/**` 将所有 `resource开头的路径` 都路由到 `ruoyi-resource` 服务
-例如: `/resource/sms/code` `resource路由到ruoyi-resource服务` `sms路由到对应的contrller` `code 路由到对应的接口`
-
-
-
-## 放行使用方式
-nacos 中 `ruoyi-gateway.yml` 白名单放行
-**注意: 放行路径格式为 `/服务路径/controller路径/接口方法路径` `*代表任意一级 **代表任意所有级`**
-示例: `/resource/sms/code` 代表 `ruoyi-resource服务 sms的controller code接口`
-
-
-## 注意事项
-
-接口放行后不需要token即可访问
-但是没有token也就无法获取用户信息与鉴权
-
-### 解决方案
-删除接口上的鉴权注解
-删除接口内获取用户信息功能
-删除数据库实体类 自动注入 `createBy` `updateBy` 因为会获取用户数据
\ No newline at end of file
diff --git a/ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/framework/basic/social.md b/ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/framework/basic/social.md
deleted file mode 100644
index 2e3cd739..00000000
--- a/ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/framework/basic/social.md
+++ /dev/null
@@ -1,68 +0,0 @@
-# 第三方授权功能
-- - -
-## 版本 >= 2.X
-
-## 前置说明
-1. 该功能基于 `JustAuth` 实现,支持多家平台实现第三方授权登录。
-2. 以 `Gitee` 授权登录为例进行本功能的使用说明。
-3. 其他第三方授权配置信息获取方式可参考 `JustAuth` [官方文档](https://www.justauth.cn/guide/)。
-
- 
-
-## 第三方授权配置
-
-### 申请三方应用(以gitee为例)
-
-
-
-### 更改后端配置 `application-dev.yml`
-
-
-
-**注:内网地址无法回调,请使用外网可以访问的地址。**
-
-
-
-### 更改前端配置 `login.vue`
-
-
-
-## 授权登录(未绑定第三方平台)
-
-### 步骤一:个人中心授权第三方应用
-
-
-
-### 步骤二:同意授权
-
-
-
-顶部出现授权成功,并跳转到系统首页。
-
-
-
-
-
-查看第三方应用可看到授权成功的个人信息。
-
-
-
-## 授权登录(已绑定第三方平台)
-
-### 步骤一:点击登录页面图标
-
-
-
-### 步骤二:同意授权
-
-
-
-## 解除授权绑定
-
-### 步骤一:个人中心点击解绑第三方应用
-
-
-
-### 步骤二:点击确定完成解绑
-
-
diff --git a/ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/framework/basic/tenant.md b/ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/framework/basic/tenant.md
deleted file mode 100644
index b57c3f63..00000000
--- a/ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/framework/basic/tenant.md
+++ /dev/null
@@ -1,121 +0,0 @@
-# 多租户功能
-- - -
-## 版本 >= 2.X
-
-## 前置说明(重要)
-1. 本框架多租户功能的实现是基于 [MyBatis-Plus 多租户插件](https://baomidou.com/pages/aef2f2/#tenantlineinnerinterceptor) 的,只支持最简单的隔离。
-2. 本系统默认开启多租户功能。
-3. 多租户业务表建表需要加上租户id `tenant_id`,可参考其他系统表。
-4. 非多租户表可在配置文件进行配置排除。
-5. 只有超级管理员支持切换租户。
-
-## 多租户使用流程(先说结论再展开!)
-0. 开启多租户配置(系统默认已经开启)
-1. 登录界面(可以选择不同租户)
-> 注:如果为租户设置了绑定域名,则只能选择当前域名相关的租户列表。
-2. 设置多租户套餐
-3. 新增/修改租户(需要选择套餐)
-4. 切换租户(仅超级管理员可操作)
-
-## 多租户配置
-`application-common.yml`
-
-> 开关 `enable` 节点不用废话。
-> 如果不需要过滤租户的表可在 `excludes` 节点下添加。
-
-**注意: 如果已经基于租户模式启动了程序 关闭租户必须删除mysql与redis内的相关数据重新导入sql**
-
-
-
-## 忽略租户
-
-1.如果需要指定单独 SQL 不开启过滤,可在对应的 Mapper 接口添加如下忽略注解:
-```
-@InterceptorIgnore(tenantLine = "true", dataPermission = "false")
-```
-**此处注意事项 使用此注解如果需要开启数据权限 dataPermission = "false" 必须添加 mp的注解默认是忽略数据权限的 会导致数据权限失效**
-
-2.如果需要在业务层忽略多租户,可调用以下方法(推荐使用):
-```
-# 无返回值
-TenantHelper.ignore(() -> { 业务代码 });
-# 有返回值
-Class result = TenantHelper.ignore(() -> { return 业务代码 });
-```
-
-## 动态切换租户
-
-**仅适用于特殊需求业务(例如: 创建租户时, 对该租户操作一些数据, 或者需要去其他租户查一些数据等) 禁止乱用后果自负**
-
-```
-# 无返回值
-TenantHelper.dynamic(租户id, () -> { 业务代码 });
-# 有返回值
-Class result = TenantHelper.dynamic(租户id, () -> { return 业务代码 });
-```
-
-## 登录界面
-
-
-
-> 注:如果为租户设置了绑定域名,则只能选择当前域名相关的租户列表。
-
-## 租户套餐管理
-### 租户套餐新增
-
-
-
-
-> 注:
-> 1、先新增套餐再新增租户,因为租户新增之后无法修改所选套餐。
-> 2、租户所关联的套餐如果后续有修改可以进行同步。
-
-
-## 租户管理
-### 默认租户
-> 注:默认租户无法修改
-
-
-
-### 新增租户
-#### 填写表单
-
-
-#### 选择新增的租户套餐
-
-
-#### 新增完成
-
-
-#### 登录租户
-
-
-
-
-### 修改租户
-#### 配置域名
-
-
-
-
-#### 没有配置域名
-
-
-#### 强调一下:这不是bug!
-> 注:域名的配置就是为了绑定特定租户!
-
-### 同步套餐
-应用场景:租户套餐进行了修改,配置的菜单需要同步到特定租户。
-(不是所有租户都有更新套餐的权利, 这是跟钱挂钩的)
-
-> 点一下按钮的事,图略。
-
-## 切换租户(仅超级管理员)
-> 注:管理员切换租户不是切换用户,切换的只是数据,管理员拥有所有权限。
-
-
-
-
-
-
-
diff --git a/ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/framework/basic/user.md b/ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/framework/basic/user.md
deleted file mode 100644
index 99050fa7..00000000
--- a/ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/framework/basic/user.md
+++ /dev/null
@@ -1,85 +0,0 @@
-# 系统用户相关
-- - -
-
-> 框架采用sa-token控制权限 并对sa-token的api做了一定的业务封装
-
-## 用户登录
-
-> 参考自带多种登录实现 不限制用户数据来源 只需要构建 LoginUser 即可完成登录
-> 例如: `同表不同类型` `不同表` `同表+扩展表`
-
-
-
-## 获取用户信息
-
-> 完成登录后会生成登录token返回给前端 前端需要再请求头携带token 后端方可获取到对应的用户信息
-
-请求头传递格式: `Authorization: Bearer token`
-
-后端获取用户信息:
-```java
-LoginUser user = LoginHelper.getLoginUser();
-```
-
-## 获取用户信息(基于token)
-```java
-LoginUser user = LoginHelper.getLoginUser(token);
-```
-
-## 获取登录用户id
-```java
-Long userId = LoginHelper.getUserId();
-```
-
-## 获取登录用户账户名
-```java
-String username = LoginHelper.getUsername();
-```
-
-## 获取登录用户所属租户id
-```java
-String tenantId = LoginHelper.getTenantId();
-```
-
-## 获取登录用户所属部门id
-```java
-Long deptId = LoginHelper.getDeptId();
-```
-
-## 获取登录用户类型
-```java
-UserType userType = LoginHelper.getUserType();
-```
-
-## 获取登录用户其他扩展属性
-```java
-Object obj = LoginHelper.getExtra(key);
-```
-
-## 设置登录用户其他扩展属性
-
-参考登录设置 `clientId` 属性
-
-
-
-## 判断用户是否为超级管理员
-
-```java
-// 判断当前登录用户
-boolean b = LoginHelper.isSuperAdmin();
-// 判断用户基于id
-boolean b = LoginHelper.isSuperAdmin(userId);
-```
-
-## 判断用户是否为租户管理员
-
-```java
-// 判断当前登录用户
-boolean b = LoginHelper.isTenantAdmin();
-// 判断用户基于角色组
-boolean b = LoginHelper.isSuperAdmin(rolePermission);
-```
-
-## 其他更多操作
-[Sa-Token 官方文档 - 登录认证](https://sa-token.cc/doc.html#/use/login-auth)
-
diff --git a/ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/framework/explain/about_join.md b/ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/framework/explain/about_join.md
deleted file mode 100644
index 77cde6ef..00000000
--- a/ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/framework/explain/about_join.md
+++ /dev/null
@@ -1,12 +0,0 @@
-# 关于多表查询
-- - -
-## 建议单表查询
-
-文章连接: [大连接查询分解好处](https://java.isture.com/db/mysql/mysql-x-optimize-decompose-connection.html)
-
-
-
-
-
-
-**(上图出自 <高性能MySql>)**
\ No newline at end of file
diff --git a/ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/framework/explain/key.md b/ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/framework/explain/key.md
deleted file mode 100644
index c960140d..00000000
--- a/ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/framework/explain/key.md
+++ /dev/null
@@ -1,19 +0,0 @@
-# 主键使用说明
-- - -
-## 关于如何使用分布式id或雪花id
-
-参考 `MybatisPlusConfig` 如需自定义 修改 `Bean` 实现即可
-
-
-
-框架默认集成 雪花ID 只需全局更改 主键类型即可
-
-
-
-如单表使用 可单独配置注解
-
-
-
-### 重点说明
-* 由于雪花id位数过长 `Long` 类型在前端会失真
-* 框架已配置序列化方案 超越 `JS` 最大值自动转字符串 参考 `BigNumberSerializer` 类
\ No newline at end of file
diff --git a/ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/framework/explain/test.md b/ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/framework/explain/test.md
deleted file mode 100644
index 4c521ad1..00000000
--- a/ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/framework/explain/test.md
+++ /dev/null
@@ -1,6 +0,0 @@
-# 单元测试
-- - -
-## 参考文章
-[SpringBoot 2.X 整合 JUnit5 及全方位使用手册](https://lionli.blog.csdn.net/article/details/127576604)
-## 参考代码(1.4.0新增)
-
\ No newline at end of file
diff --git a/ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/framework/explain/transaction.md b/ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/framework/explain/transaction.md
deleted file mode 100644
index 2b4966dc..00000000
--- a/ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/framework/explain/transaction.md
+++ /dev/null
@@ -1,45 +0,0 @@
-# 事务相关
-- - -
-若依文档对事务注解的描述 [关于事务](https://doc.ruoyi.vip/ruoyi/document/htsc.html#%E4%BA%8B%E5%8A%A1%E7%AE%A1%E7%90%86) 以下对多数据源事务做补充:
-
-
-## 多服务多数据源事务(框架已默认对接 直接使用seata注解即可)
-
-框架支持对接 `seata` 保证分布式多数据源事务
-详情参考多数据源框架文档连接: https://www.kancloud.cn/tracy5546/dynamic-datasource/2268607
-
-## 本地多数据源事务
-请使用 `@DSTransactional` 注解 会代理 `@DS` 注解切换后的数据源事务做回滚处理
-只要 `@DSTransactional` 注解下任一环节发生异常,则全局多数据源事务回滚。
-如果BC上也有 `@DSTransactional` 会有影响吗?答:没有影响的。
-
-```java
-//如AService调用BService和CService的方法,A,B,C分别对应不同数据源。
-
-public class AService {
-
- @DS("a")//如果a是默认数据源则不需要DS注解。
- @DSTransactional
- public void dosomething(){
- BService.dosomething();
- CService.dosomething();
- }
-}
-
-public class BService {
-
- @DS("b")
- public void dosomething(){
- //dosomething
- }
-}
-
-public class CService {
-
- @DS("c")
- public void dosomething(){
- //dosomething
- }
-}
-```
-
diff --git a/ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/framework/extend/api_encrypt.md b/ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/framework/extend/api_encrypt.md
deleted file mode 100644
index be4ce445..00000000
--- a/ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/framework/extend/api_encrypt.md
+++ /dev/null
@@ -1,39 +0,0 @@
-# 数据加解密
-- - -
-
-## 1:API 加密注解 `@ApiEncrypt`
-1. 对于标注了 `@ApiEncrypt` 注解的接口,请求参数都必须进行加密。
-2. 注解的参数 `response` 为响应加密标识,默认 `false` 不加密,为 `true` 表示响应加密。
-3. 加密解密逻辑由过滤器实现,详情可参考 `org.dromara.common.encrypt.filter.CryptoFilter`。
-
-## 2:API 加密配置
-`application-common.yml`
-
-
-
-`.env.development` / `.env.production`
-
-
-
-> 注:
-> 1. 注意修改 Nacos 配置。
-> 2. 公私钥与前端配置文件互为配对,如果需要更换请一同更换。
-> 3. 后端公钥对应前端私钥;后端私钥对应前端公钥。
-
-## 3:前端开启加密
-如果需要开启 API 加密,则需要修改 `request` 的 `headers` 内容:
-```Javascript
-headers: {
- isEncrypt: true
-}
-```
-
-
-
-## 4.关于请求响应参数加解密说明
-
-如何加解密请求响应参数看这里 -> [关于请求响应参数解密](/questions/api_encrypt.md)
-
-## 密钥生成说明
-
-
\ No newline at end of file
diff --git a/ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/framework/extend/dynamic_datasource.md b/ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/framework/extend/dynamic_datasource.md
deleted file mode 100644
index 21114cd4..00000000
--- a/ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/framework/extend/dynamic_datasource.md
+++ /dev/null
@@ -1,45 +0,0 @@
-# 多数据源
-- - -
-
-### 框架默认 mysql 其他数据库使用说明
-
-找到 `ruoyi-common-mybatis` 模块在 pom 文件内增加对应的jdbc依赖
-
-
-
-
-### 关于多数据源事务 具体参考 `事务相关` 文档说明
-
-### 多数据源框架功能介绍
-多数据源框架官方文档: [dynamic-datasource文档](https://www.kancloud.cn/tracy5546/dynamic-datasource/2264611)
-
-* 支持 数据源分组 ,适用于多种场景 纯粹多库 读写分离 一主多从 混合模式。
-* 支持数据库敏感配置信息 加密 ENC()。
-* 支持每个数据库独立初始化表结构schema和数据库database。
-* 支持无数据源启动,支持懒加载数据源(需要的时候再创建连接)。
-* 支持 自定义注解 ,需继承DS(3.2.0+)。
-* 提供并简化对Druid,HikariCp,BeeCp,Dbcp2的快速集成。
-* 提供对Mybatis-Plus,Quartz,ShardingJdbc,P6sy,Jndi等组件的集成方案。
-* 提供 自定义数据源来源 方案(如全从数据库加载)。
-* 提供项目启动后 动态增加移除数据源 方案。
-* 提供Mybatis环境下的 纯读写分离 方案。
-* 提供使用 spel动态参数 解析数据源方案。内置spel,session,header,支持自定义。
-* 支持 多层数据源嵌套切换 。(ServiceA >>> ServiceB >>> ServiceC)。
-* 提供 基于seata的分布式事务方案。
-* 提供 本地多数据源事务方案。 附:不能和原生spring事务混用。
-
-### 用法说明
-
-> 加载顺序 `方法 => 类 => 默认`
-
-
-
-### 配置方式
-
-
-
-### 数据库异构
-
-例如: `mysql + oracle` 参考对应多数据源框架文档 [dynamic-ds文档](https://www.kancloud.cn/tracy5546/dynamic-datasource)
-
-
diff --git a/ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/framework/extend/encrypt.md b/ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/framework/extend/encrypt.md
deleted file mode 100644
index 729a3039..00000000
--- a/ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/framework/extend/encrypt.md
+++ /dev/null
@@ -1,38 +0,0 @@
-# 数据加解密
-- - -
-## 框架版本 >= 1.6.0
-
-## 引入依赖
-
-```xml
-
- com.ruoyi
- ruoyi-common-encrypt
-
-```
-
-## 功能说明
-
-数据库 数据存储加密 查询解密功能
-支持加密算法: `BASE64` `AES` `RSA` `SM2` `SM4`
-
-## 注解 `@EncryptField`
-
-
-
-## 用法说明
-
-**详细用法可参考案例 TestEncryptController 测试数据库加解密功能**
-
-全局默认加密配置(如果注解不配置则使用全局配置)
-
-
-
-注解可自定义算法与配置
-
-
-
-## 密钥生成说明
-
-
-
diff --git a/ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/framework/extend/idempotent.md b/ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/framework/extend/idempotent.md
deleted file mode 100644
index 5f706710..00000000
--- a/ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/framework/extend/idempotent.md
+++ /dev/null
@@ -1,29 +0,0 @@
-# 防重幂等
-- - -
-## 功能介绍
-
-防重功能为防止两条相同的数据重复提交导致脏数据或业务错乱
-**注意: 重复提交属于小概率事件 请不要拿并发压测与之相提并论**
-框架防重功能参考 `美团GTIS防重系统` 使用 请求参数与用户Token或URL 生成全局业务ID
-有效防止 `同一个用户` 在 `限制时间` 内对 `同一个业务` 提交 `相同的数据`
-
-框架防重处理 `支持业务失败或异常` 快速释放限制
-业务处理成功后 会在设置时间内 限制同一条数据的提交
-**注意: 只对同一个用户的同一个接口提交相同的数据有效**
-
-
-
-
-### 美团GTIS系统流程图
-
-[美团 分布式系统互斥性与幂等性问题的分析与解决](https://tech.meituan.com/2016/09/29/distributed-system-mutually-exclusive-idempotence-cerberus-gtis.html)
-
-
-
-### 使用方法
-
-在Controller标注 `@RepeatSubmit` 注解即可
-
-
-
-
\ No newline at end of file
diff --git a/ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/framework/extend/mail.md b/ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/framework/extend/mail.md
deleted file mode 100644
index ce089802..00000000
--- a/ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/framework/extend/mail.md
+++ /dev/null
@@ -1,15 +0,0 @@
-# 邮件功能
-- - -
-## 配置功能
-
-修改配置文件
-
-
-
-* `enabled` 为邮件功能开关
-
-## 功能使用
-
-参考 `demo` 模块 `MailController` 邮件演示案例
-
-
\ No newline at end of file
diff --git a/ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/framework/extend/sensitive.md b/ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/framework/extend/sensitive.md
deleted file mode 100644
index 3e2d92ba..00000000
--- a/ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/framework/extend/sensitive.md
+++ /dev/null
@@ -1,33 +0,0 @@
-# 数据脱敏
-- - -
-## 功能说明
-
-系统使用 `Jackson` 序列化策略 对标注了 `Sensitive` 注解的属性进行脱敏处理
-
-## 使用教程
-
-> 使用注解标注需要脱敏的字段 选择对应的策略
-
-
-
-* strategy 脱敏策略
-* roleKey 角色code(判断用户是否拥有角色权限)
-* perms 权限code(判断用户是否拥有标识符权限)
-
-
-
-> 可再 `SensitiveStrategy` 内自定义策略
-
-
-
-## 脱敏逻辑修改
-
-> 系统使用通用接口处理是否需要脱敏 多个系统可以自定义不同的脱敏逻辑实现
-
-
-
-> 系统默认处理逻辑为 根据角色与标识符或非管理员脱敏 可自行修改默认实现
-
-
-
-
diff --git a/ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/framework/extend/sms.md b/ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/framework/extend/sms.md
deleted file mode 100644
index 81fb345a..00000000
--- a/ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/framework/extend/sms.md
+++ /dev/null
@@ -1,51 +0,0 @@
-# 短信模块
-- - -
-
-# 配置功能
-
-### 版本: >= v2.1.0
-
-已完成 sms4j 项目整合 文档地址: https://sms4j.com/doc3
-
-配置方式 具体厂商配置扩展 可以查看sms4j文档
-
-
-
-使用方式 参考文档各种写法 下方为 demo 模块提供示例
-
-
-
-### 版本: v1.2.0 提供短信模块
-
-短信模块采用SPI加载
-使用哪家的短信 引入哪家的依赖 即可动态加载
-目前支持: `阿里云` `腾讯云` 欢迎扩展PR其他
-
-> 参考 `ruoyi-demo` pom文件写法
-
-
-
-> 修改配置文件
-
-
-
-* `enabled` 为短信功能开关
-* `endpoint` 为域名 各厂家域名固定 按照文档配置即可
-* `accessKeyId` 密钥id
-* `accessKeySecret` 密钥密匙
-* `signName` 签名
-* `sdkAppId` 应用id 腾讯专用
-
-## 功能使用
-
-参考 `demo` 模块 `SmsController` 短信演示案例
-功能采用 `模板模式` 动态加载对应厂家的工具模板
-引入 `SmsTemplate` 即可使用
-
-
-
-## 重点须知
-
-由于各厂家参数解析不一致 请遵守以下规则
-
-
diff --git a/ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/framework/extend/sse.md b/ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/framework/extend/sse.md
deleted file mode 100644
index ec51df7c..00000000
--- a/ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/framework/extend/sse.md
+++ /dev/null
@@ -1,24 +0,0 @@
-# SSE功能
-- - -
-
-## 框架版本 >= 2.2.1
-
-## 配置说明
-
-配置在 `ruoyi-resource` 目录下 远程调用可直接使用 `RemoteMessageService` 接口
-
-
-
-* enabled 是否开启此功能
-* path 应用路径
-
-## 使用方法
-
-前端连接方式: `http://后端ip:端口/resource/sse?clientid=import.meta.env.VITE_APP_CLIENT_ID&Authorization=Bearer eyJ0eXAiO......`
-
-其中 `Authorization` 为请求token需要登录后获取 连接成功之后 与框架内其他获取登录用户方式一致
-
-`SseMessageUtils.sendMessage` 推送单机消息(特殊需求使用)
-`SseMessageUtils.subscribeMessage` 订阅分布式消息(框架初始化已订阅)
-`SseMessageUtils.publishMessage` 发布分布式消息(推荐使用 所有集群内寻找到接收人)
-`SseMessageUtils.publishAll` 群发消息给所有连接人
\ No newline at end of file
diff --git a/ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/framework/extend/translation.md b/ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/framework/extend/translation.md
deleted file mode 100644
index d0834ab8..00000000
--- a/ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/framework/extend/translation.md
+++ /dev/null
@@ -1,44 +0,0 @@
-# 翻译功能
-- - -
-## 框架版本 >= 1.6.0
-
-## 引入依赖包
-
-```xml
-
- com.ruoyi
- ruoyi-common-translation
-
-```
-
-## 注解
-
-
-
-`@Translation` 翻译注解 用于实体类字段上
-`@TranslationType` 翻译类别注解 用于实现类上标注与 `@Translation` 注解相同的 `type` 类型 实现翻译功能
-
-
-## 用法说明
-
-默认提供功能 `用户id转账号(用户名)` `部门id转名称` `字典type转label` `ossId转url`
-
-
-
-用户名翻译(映射翻译) 根据另一个映射字段 翻译保存到此字段
-
-
-
-ossUrl翻译(直接翻译) 直接根据此字段值翻译后替换此字段值
-
-
-
-字典翻译(其他扩展条件翻译) 根据`other`条件 自行定义如何使用 例如字典翻译`other`条件就是字典的唯一值
-
-
-
-## 自定义扩展
-
-实现接口 `TranslationInterface` 标注注解 `@TranslationType` 可参考框架默认实现
-
-
diff --git a/ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/framework/extend/websocket.md b/ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/framework/extend/websocket.md
deleted file mode 100644
index 55145bad..00000000
--- a/ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/framework/extend/websocket.md
+++ /dev/null
@@ -1,39 +0,0 @@
-# WebSocket功能
-- - -
-
-## 框架版本 >= 2.1.0
-
-## 配置说明
-
-配置在 `ruoyi-resource` 目录下
-
-
-
-* enabled 是否开启此功能
-* path 应用路径
-* allowedOrigins 设置访问源地址
-
-**重点: 如关闭ws功能需连同前端ws开关一同关闭 不然前端启动会报错**
-
-
-
-## 使用方法
-
-前端连接方式: `ws://后端ip:端口/resource/websocket?clientid=import.meta.env.VITE_APP_CLIENT_ID&Authorization=Bearer eyJ0eXAiO......`
-
-**由于js不支持请求头传输故而采用参数传输 如支持请求头传输建议使用请求头传输**
-
-传输方式:
-```js
-headers: {
- Authorization: "Bearer " + getToken(),
- clientid: import.meta.env.VITE_APP_CLIENT_ID
-}
-```
-
-其中 `Authorization` 为请求token需要登录后获取 连接成功之后 与框架内其他获取登录用户方式一致
-
-`WebSocketUtils.sendMessage` 推送单机消息(特殊需求使用)
-`WebSocketUtils.subscribeMessage` 订阅分布式消息(框架初始化已订阅)
-`WebSocketUtils.publishMessage` 发布分布式消息(推荐使用 所有集群内寻找到接收人)
-`WebSocketUtils.publishAll` 群发消息给所有连接人
\ No newline at end of file
diff --git a/ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/framework/tree.md b/ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/framework/tree.md
deleted file mode 100644
index f649197c..00000000
--- a/ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/framework/tree.md
+++ /dev/null
@@ -1,91 +0,0 @@
-# 项目结构
-- - -
-## 目录结构
-v2.2.1
-~~~
-RuoYi-Cloud-Plus
-├─ ruoyi-api // api模块
-│ └─ ruoyi-api-bom // api模块依赖管理
-│ └─ ruoyi-api-resource // 资源api模块
-│ └─ ruoyi-api-system // 系统api模块
-│ └─ ruoyi-api-workflow // 工作流api模块
-├─ ruoyi-auth // 认证服务 [9210]
-├─ ruoyi-common // 通用模块
-│ └─ ruoyi-common-alibaba-bom // alibaba 依赖管理
-│ └─ ruoyi-common-bom // common 依赖管理
-│ └─ ruoyi-common-bus // 消息总线模块
-│ └─ ruoyi-common-core // 核心功能模块
-│ └─ ruoyi-common-dict // 字典集成模块
-│ └─ ruoyi-common-doc // 文档集成模块
-│ └─ ruoyi-common-dubbo // dubbo集成模块
-│ └─ ruoyi-common-elasticsearch // ES集成模块
-│ └─ ruoyi-common-encrypt // 数据加解密模块
-│ └─ ruoyi-common-excel // excel集成模块
-│ └─ ruoyi-common-idempotent // 幂等功能模块
-│ └─ ruoyi-common-job // job定时任务集成模块
-│ └─ ruoyi-common-json // json集成模块
-│ └─ ruoyi-common-loadbalancer // 团队负载均衡集成模块
-│ └─ ruoyi-common-log // 日志集成模块
-│ └─ ruoyi-common-logstash // elk日志集成模块
-│ └─ ruoyi-common-mail // 邮件集成模块
-│ └─ ruoyi-common-mybatis // mybatis数据库相关集成模块
-│ └─ ruoyi-common-oss // oss相关集成模块
-│ └─ ruoyi-common-prometheus // prometheus监控
-│ └─ ruoyi-common-redis // redis集成模块
-│ └─ ruoyi-common-satoken // satoken集成模块
-│ └─ ruoyi-common-seata // seata分布式事务集成模块
-│ └─ ruoyi-common-security // 框架权限鉴权集成模块
-│ └─ ruoyi-common-sensitive // 脱敏功能模块
-│ └─ ruoyi-common-sentinel // sentinel集成模块
-│ └─ ruoyi-common-skylog // skywalking日志收集模块
-│ └─ ruoyi-common-sms // 短信集成模块
-│ └─ ruoyi-common-social // 社交三方功能模块
-│ └─ ruoyi-common-sse // sse流推送模块
-│ └─ ruoyi-common-tenant // 租户功能模块
-│ └─ ruoyi-common-translation // 通用翻译功能
-│ └─ ruoyi-common-web // web服务集成模块
-│ └─ ruoyi-common-websocket // websocket服务集成模块
-├─ ruoyi-example // 例子模块
-│ └─ ruoyi-demo // 演示模块 [9401]
-│ └─ ruoyi-test-mq // mq演示模块 [9402]
-├─ ruoyi-gateway // 网关模块 [8080]
-├─ ruoyi-modules // 功能模块
-│ └─ ruoyi-gen // 代码生成模块 [9202]
-│ └─ ruoyi-job // 任务调度模块 [9203,9901]
-│ └─ ruoyi-resource // 资源模块 [9204]
-│ └─ ruoyi-system // 系统模块 [9201]
-│ └─ ruoyi-workflow // 工作流模块 [9205]
-├─ ruoyi-visual // 可视化模块
-│ └─ ruoyi-monitor // 服务监控模块 [9100]
-│ └─ ruoyi-nacos // nacos服务模块 [8848,9848,9849]
-│ └─ ruoyi-seata-server // seata服务模块 [7091,8091]
-│ └─ ruoyi-sentinel-dashboard // sentinel控制台模块 [8718]
-│ └─ ruoyi-snailjob-server // 任务调度控制台模块 [8800,17888]
-├─ plus-ui // 前端框架 [80]
-├─ config/nacos // nacos配置文件(需复制到nacos配置中心使用)
-│ └─ sentinel-ruoyi-gateway.json // sentinel对接gateway限流配置文件
-│ └─ seata-server.properties // seata服务配置文件
-│ └─ application-common.yml // 所有应用主共享配置文件
-│ └─ datasource.yml // 所有应用共享数据源配置文件
-│ └─ ruoyi-auth.yml // auth 模块配置文件
-│ └─ ruoyi-gateway.yml // gateway 模块配置文件
-│ └─ ruoyi-gen.yml // gen 模块配置文件
-│ └─ ruoyi-job.yml // job 模块配置文件
-│ └─ ruoyi-monitor.yml // monitor 模块配置文件
-│ └─ ruoyi-resource.yml // resource 模块配置文件
-│ └─ ruoyi-sentinel-dashboard.yml // sentinel 控制台 模块配置文件
-│ └─ ruoyi-snailjob-server.yml // snailjob 控制台 模块配置文件
-│ └─ ruoyi-system.yml // systen 模块配置文件
-│ └─ ruoyi-workflow.yml // workflow 模块配置文件
-├─ config/grafana // grafana配置文件(需复制到grafana使用)
-│ └─ Nacos.json // Nacos监控页面
-│ └─ SLS JVM监控大盘.json // JVM监控页面
-│ └─ Spring Boot 2.1 Statistics.json // SpringBoot监控页面
-├─ sql // sql脚本
-├─ docker // docker 配置脚本
-├─ .run // 执行脚本文件
-├─ .editorconfig // 编辑器编码格式配置
-├─ LICENSE // 开源协议
-├─ pom.xml // 公共依赖
-├─ README.md // 框架说明文件
-~~~
\ No newline at end of file
diff --git a/ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/home.md b/ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/home.md
deleted file mode 100644
index 290a4f9c..00000000
--- a/ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/home.md
+++ /dev/null
@@ -1,137 +0,0 @@
-
-
-
-- - -
-# 平台简介
-
-
-[](https://gitee.com/dromara/RuoYi-Cloud-Plus)
-[](https://github.com/dromara/RuoYi-Cloud-Plus)
-[](https://gitee.com/dromara/RuoYi-Cloud-Plus/blob/master/LICENSE)
-[](https://www.jetbrains.com/?from=RuoYi-Cloud-Plus)
-
-[](https://gitee.com/dromara/RuoYi-Cloud-Plus)
-[]()
-[]()
-[]()
-
-> RuoYi-Cloud-Plus `微服务通用权限管理系统` 重写 RuoYi-Cloud 全方位升级(不兼容原框架)
-
-> 项目代码、文档 均开源免费可商用 遵循开源协议在项目中保留开源协议文件即可
-活到老写到老 为兴趣而开源 为学习而开源 为让大家真正可以学到技术而开源
-
-> 系统演示: [传送门](https://gitee.com/dromara/RuoYi-Vue-Plus/wikis/pages?sort_id=4836388&doc_id=1469725) 分布式集群版本(功能一致)
-
-# 本框架与RuoYi的功能差异
-
-| 功能 | 本框架 | RuoYi |
-|-------------|-------------------------------------------------------------------------------------------------------------------|------------------------------------------------------------------------------------|
-| 前端项目 | 采用 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
可同时使用异构切换(支持其他 mybatis-plus 支持的所有数据库 只需要增加jdbc依赖即可使用 达梦金仓等均有成功案例) | 支持 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鉴权与分布式会话同步 不再只是基于单机的废物 | 无 |
-| SSE推送 | 采用 Spring SSE 实现 扩展了Token鉴权与分布式会话同步 | 无 |
-| 序列化 | 采用 Jackson Spring官方内置序列化 靠谱!!! | 采用 fastjson bugjson 远近闻名 |
-| 分布式幂等 | 参考美团GTIS防重系统简化实现(细节可看文档) | 手动编写注解基于aop实现 |
-| 分布式任务调度 | 采用 SnailJob 天生支持分布式 统一的管理中心 支持多种数据库 支持分片重试DAG任务流等 | 采用 Quartz 基于数据库锁性能差 集群需要做很多配置与改造 |
-| 分布式日志中心 | 采用 ELK 业界成熟解决方案 实时收集所有服务的运行日志 快速发现定位问题 | 无 |
-| 分布式搜索引擎 | 采用 ElasticSearch、Easy-Es 以 Mybatis-Plus 方式操作 ElasticSearch | 无 |
-| 分布式消息队列 | 采用 支持 Kafka、RocketMQ、RabbitMQ 各种 延迟消息 事务消息 流消息 | 无 |
-| 分布式消息总线 | 采用 SpringCloud Bus 实现事件总线 跨服务通知 支持 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代码。 | 支持 | 支持 |
-| 使用案例 | 系统的一些功能案例 | 支持 | 不支持 |
-
-## 演示图例
-
-| | |
-|--------------------------------------------------------------------------------------------|--------------------------------------------------------------------------------------------|
-|  |  |
-|  |  |
-|  |  |
-|  |  |
-|  |  |
-|  |  |
-|  |  |
-|  |  |
-|  |  |
-|  |  |
-|  |  |
-|  |  |
-|  |  |
-|  |  |
-|  |  |
-|  |  |
-|  |  |
-|  |  |
-|  |  |
-
-
diff --git a/ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/quickstart/1.Xinit.md b/ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/quickstart/1.Xinit.md
deleted file mode 100644
index 19492b1e..00000000
--- a/ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/quickstart/1.Xinit.md
+++ /dev/null
@@ -1,87 +0,0 @@
-# 1.X项目初始化
-- - -
-### 项目分支说明
-`master` 主分支 稳定发布分支
-`dev` 开发分支 代码随时更新 不推荐使用 经测试后会发布到主分支
-`2.X` 新2.X大版本分支
-`future/*` 新功能预览分支
-
-### 项目必备环境
-> 推荐使用 `docker` 安装 项目内置 `docker` 编排文件
-
-* oracle jdk 8 11 (暂时不支持 17 不支持大于 jdk8_202 因为202是最后一个免费版本)
-* mysql 5.7 8.0 (5.6未适配可能会有问题)
-* oracle 11g 12c
-* postgres 13 14
-* redis 5.X 6.X 7.X 由于框架大量使用了redis特性 版本必须 >= 5.X ([win redis 下载地址](https://github.com/zkteco-home/redis-windows))
-* minio 本地文件存储 或 阿里云 腾讯云 七牛云等一切支持S3协议的云存储
-* maven 3.6.3 3.8.X
-* nodejs >= 12
-* npm 6.X 8.X (7.X确认有问题)
-* nacos >= 2.X(框架1.3.0内置nacos)
-* sentinel 框架内置
-* seata 框架内置
-
-### 需勾选 maven 对应环境
-
-
-### 默认 `JDK8` 如有变动 需更改以下配置
-
-
-
-
-
-### sql导入
-将sql导入到与sql文件名对应的数据库(不要放到一个库下)
-
-
-
-### 使用内置 `ruoyi-naocs` 服务 从这开始
-
-> 更改 ruoyi-nacos 数据库地址
-
-
-
-**其余流程同下方步骤一致**
-
-### 自建 Nacos 从这开始
-
-**Nacos 数据库指向 ry-config 数据库(此处重点: 此数据库为定制数据 未使用此库会无法读取配置)**
-
-> 将项目 `config/nacos` 下所有配置 复制到 `nacos` 内(建议手动复制内容 防止编码不一致问题)
-
-
-
-
-> 更改 `主pom文件` 对应环境的 `nacos` 地址
-
-
-
-### 更改 `Nacos` 自定义配置
-
-**忠告: 微服务配置相当复杂 请勿在不懂原理的情况下乱改**
-
-> `application-common.yml` 更改
-
-
-
-> `datasource.yml` 更改
-
-
-
-> `seata-server.properties` 更改
-
-
-
-### 使用内置 `ruoyi-seata-server` 服务 从这开始
-
-执行 `ry-seata.sql` 文件 初始化服务端数据库
-修改 `nacos` 内的 `seata-server.properties` 的数据库地址
-启动 `ruoyi-seata-server` 服务即可
-
-### 服务启动顺序说明
-
-1. 必须启动基础建设: mysql redis nacos
-2. 可选启动基础建设: minio(影响文件上传) seata(影响分布式事务 默认开启) sentinel(影响熔断限流) monitor(影响监控) xxljob(影响定时任务)
-3. 必须启动应用服务: gateway auth system
-4. 可选启动应用服务: resource(影响资源使用 文件上传 邮件 短信等) gen(代码生成) job(影响定时任务) demo(影响demo使用)
diff --git a/ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/quickstart/deploy.md b/ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/quickstart/deploy.md
deleted file mode 100644
index bdc653bc..00000000
--- a/ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/quickstart/deploy.md
+++ /dev/null
@@ -1,118 +0,0 @@
-# 应用部署
-- - -
-## 版本 >= 1.3.0
-
-### 请优先阅读 [idea环境配置](/ruoyi-cloud-plus/quickstart/idea_environment.md)
-
-## 手动部署
-
-在服务器安装 `mysql` `redis` `nginx` `minio` 等其他组件
-
-将项目内 `docker/` 文件夹下的文件内容 放到对应的组件内
-例如: 将项目内 `docker/nginx/nginx.conf` 配置文件 复制到 `nginx` 配置内
-将项目内 `docker/redis/redis.conf` 配置文件 复制到 `redis` 配置内
-
-并修改相关参数如 `前端页面存放位置` `后端Ip地址` 等使其生效
-
-jar包部署后端服务 打包命令如下
-```mvn
-mvn clean install -D maven.test.skip=true -P prod
-```
-前端参考下方前端部署章节
-
-
-## docker 后端部署
-
-### 请优先阅读 [idea环境配置](https://gitee.com/dromara/RuoYi-Cloud-Plus/wikis/pages?sort_id=5985190&doc_id=2056143)
-
-**重点: 一知半解的必看**
-> [docker安装](https://lionli.blog.csdn.net/article/details/83153029)
-> [docker-compose安装](https://lionli.blog.csdn.net/article/details/111220320)
-> [docker网络模式讲解](https://lionli.blog.csdn.net/article/details/109603785)
-> [docker 开启端口 2375 供外部程序访问](https://lionli.blog.csdn.net/article/details/92627962)
-
-### 将配置使用FTP上传到根目录
-idea拖拽文件到远程目录即可上传
-
-
-### 给docker分配文件夹权限
-**重点注意: 一定要确保目录 `/docker` 及其所有子目录 具有写权限 如果后续出现权限异常问题 重新执行一遍分配权限**
-
-```shell
-chmod -R 777 /docker
-```
-### 构建应用镜像
-
-**1.需要先使用maven打包成jar包**
-
-
-**2.执行构建**
-> 项目初始化后会自动生成构建镜像的运行配置
-配置好docker连接之后 运行如下即可构建对应的应用镜像
-
-**重点注意: idea2024及以上版本要求必须在本地安装docker才可以执行如下操作**
-
-
-
-
-**3.结构讲解**
-右键编辑 即可看到内部配置
-
-
-
-
-
-### 创建基础服务
-
-```shell
-docker-compose up -d mysql nginx-web redis minio
-```
-
-### 创建中心服务(需要先构建服务镜像)
-
-1.X
-```shell
-docker-compose up -d nacos seata-server sentinel ruoyi-monitor ruoyi-xxl-job-admin
-```
-
-2.X
-```shell
-docker-compose up -d nacos seata-server sentinel ruoyi-monitor ruoyi-snailjob-server
-```
-
-### 创建业务服务(需要先构建服务镜像)
-
-```shell
-docker-compose up -d ruoyi-gateway ruoyi-auth ruoyi-system ruoyi-resource
-```
-
-### docker其他操作(idea的docker插件 推荐使用)
-
-
-
-## 前端部署
-
-执行打包命令
-```shell
-# 打包正式环境
-npm run build:prod
-```
-打包后生成打包文件在 `ruoyi-ui/dist` 目录
-将 `dist` 目录下文件(不包含 `dist` 目录) 上传到部署服务器 `docker/nginx/html` 目录下(手动部署放入自己配置的路径即可)
-
-重启 `nginx` 服务即可
-
-
-### 如需更改后端代理路径或者后端ip地址的话往下看
-
-更改`nginx.conf`配置文件代理路径(注意: /开头/结尾)
-
-
-
-更改前端`.env.环境` 文件内的 `VITE_APP_BASE_API`
-
-
-
-更改`nginx.conf`配置文件后端ip地址
-
-
diff --git a/ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/quickstart/extend_project.md b/ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/quickstart/extend_project.md
deleted file mode 100644
index 8d68fa4d..00000000
--- a/ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/quickstart/extend_project.md
+++ /dev/null
@@ -1,42 +0,0 @@
-# 基于 RuoYi-Cloud-Plus 的扩展项目列表
-- - -
-### 精品PR 欢迎投稿
-| 功能介绍 | PR地址 |
-|-------------------------------------|------------------------------------------------------|
-| 拖拽图片调整显示顺序 | https://gitee.com/dromara/RuoYi-Vue-Plus/pulls/173 |
-| 增加Jasypt加密库对配置文件加密 | https://gitee.com/dromara/RuoYi-Vue-Plus/pulls/177 |
-| 使用富文本wangeditor5替换Quill | https://gitee.com/dromara/RuoYi-Vue-Plus/pulls/213 |
-| sentinel持久化nacos动态更改 | https://gitee.com/dromara/RuoYi-Cloud-Plus/pulls/37 |
-| 集成screw数据库文档功能模块 | https://gitee.com/dromara/RuoYi-Cloud-Plus/pulls/42 |
-| Excel导入模板增加批注支持 | https://gitee.com/dromara/RuoYi-Vue-Plus/pulls/222 |
-| 压缩包处理工具 支持本地文件/目录+oss文件/网络文件混合 | https://gitee.com/dromara/RuoYi-Cloud-Plus/pulls/44 |
-| 添加websocket模块 支持satoken鉴权 | https://gitee.com/dromara/RuoYi-Cloud-Plus/pulls/65 |
-| 数据库字段加解密(支持 base64 aes rsa sm2 sm4) | https://gitee.com/dromara/RuoYi-Vue-Plus/pulls/274 |
-| 增加liquibase迁移数据库 | https://gitee.com/dromara/RuoYi-Vue-Plus/pulls/299 |
-| 增加OSS模块支持本地环境 | https://gitee.com/dromara/RuoYi-Vue-Plus/pulls/353 |
-| 扩展模块独立集成flyway | https://gitee.com/dromara/RuoYi-Vue-Plus/pulls/439 |
-| 扩展模块独立集成go-view大屏看板 | https://gitee.com/dromara/RuoYi-Vue-Plus/pulls/445 |
-| 基于AmazonS3协议的分片上传 | https://gitee.com/dromara/RuoYi-Cloud-Plus/pulls/130 |
-| 扩展forest http客户端 声明式http请求 二次封装像工具类 | https://gitee.com/dromara/RuoYi-Vue-Plus/pulls/547 |
-| 增加短链接生成工具 | https://gitee.com/dromara/RuoYi-Vue-Plus/pulls/515 |
-| 新增oss预签名上传工具组合使用异步客户端分片 | https://gitee.com/dromara/RuoYi-Vue-Plus/pulls/522 |
-| 新增规则引擎LiteFlow,SQL持久化接入,支持可视化页面 | https://gitee.com/dromara/RuoYi-Vue-Plus/pulls/552 |
-| 一键部署到私有Nexus仓库 | https://gitee.com/dromara/RuoYi-Cloud-Plus/pulls/181 |
-| 服务状态监控发送邮件钉钉等 | https://gitee.com/dromara/RuoYi-Vue-Plus/pulls/568 |
-| 登录验证支持2FA验证 | https://gitee.com/dromara/RuoYi-Vue-Plus/pulls/578 |
-
-### 欢迎投稿 项目介绍+项目地址
-
-
-| 项目介绍 | 项目地址 |
-|--------------------------------|-------------------------------------------------------------------------|
-| 分布式集群扩展 | https://gitee.com/dromara/RuoYi-Vue-Plus |
-| Plus学习笔记(常规功能) | https://zhonglingyuxiu1028.github.io/zlyx-space/#/ruoyi-vue-plus/home |
-| Plus学习笔记(微服务组件) | https://zhonglingyuxiu1028.github.io/zlyx-space/#/ruoyi-cloud-plus/home |
-| 基于uniapp+TmUI从0开发 支持H5/小程序/安卓 | https://gitee.com/dapppp/ruoyi-plus-miniapp |
-| 基于RuoYi-App框架二次修改使用Uniapp+Vue3 | https://gitee.com/wangying110166/ruo-yi-uni-app-plus |
-| 基于RuoYi-App框架对接Plus后端 | https://gitee.com/FnTop/RuoYi-App-Plus |
-| 基于vben(ant-design-vue)前端项目 | https://gitee.com/dapppp/ruoyi-plus-vben |
-| 基于vue-next-admin的vue3+ts前端 | https://gitee.com/thiszhc/RuoYi-Vue3-UI |
-| MybatisFlex版本 | https://gitee.com/yhan219/ruoyi-cloud-flex |
-
diff --git a/ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/quickstart/idea_environment.md b/ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/quickstart/idea_environment.md
deleted file mode 100644
index 25a5fa3c..00000000
--- a/ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/quickstart/idea_environment.md
+++ /dev/null
@@ -1,38 +0,0 @@
-# idea环境配置
-- - -
-## 配置项目编码
-
-
-## 配置运行看板
-
-### 配置spring与docker看板
-
-
-
-
-
-## 配置服务器SSH连接
-进入 `Settings -> Tools -> SSH Configurations` 点击加号创建SSH连接配置
-填写 服务器IP 用户名 密码 端口号 点击 Test Connection 测试连接
-
-使用Terminal 工具 点击箭头找到上方创建的SSH连接配置
-选择即可进入SSH连接界面 在这里可以对服务器进行命令操作
-
-
-## 配置服务器FTP连接
-进入 `Settings -> Build-> Deployment` 点击加号 选择SFTP 创建 FTP 连接配置
-选择之前创建好的SSH配置 点击 Test Connection 测试连接
-
-在IDEA上方工具栏 找到 `Tools -> Deployment -> Browse Remote Host` 打开远程界面
-点击箭头找到我们上方配置的SFTP连接配置 即可连接到服务器的文件目录
-
-
-## 配置Docker连接
-### 可操作远程docker与构建上传docker镜像(代替原来maven docker插件)
-tcp连接需要开放服务器2375端口
-ssh需要使用上方的SSH连接配置
-建议使用SSH连接
-
-配置好之后 在运行窗口会多出一个Docker图标 双击即可连接远程docker
-可以查看容器实时日志 启动 重启 停止 等操作
-
\ No newline at end of file
diff --git a/ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/quickstart/init.md b/ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/quickstart/init.md
deleted file mode 100644
index f6d4fadc..00000000
--- a/ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/quickstart/init.md
+++ /dev/null
@@ -1,102 +0,0 @@
-# 2.X项目初始化
-- - -
-### 项目分支说明
-
-`2.X` 主分支 新2.X版本 稳定发布分支
-`dev` 开发分支 代码随时更新 不推荐使用 经测试后会发布到主分支
-`future/*` 新功能预览分支
-
-### 项目必备环境
-> 推荐使用 `docker` 安装 项目内置 `docker` 编排文件
-
-**注意: 禁止使用 `oraclejdk`(由于spring的bug导致打包运行会报错)**
-
-**Spring官方推荐使用JDK https://bell-sw.com/pages/downloads/**
-
-
-
-* openjdk-17/21 或 graalvm-community-jdk-17/21 [下载地址](https://github.com/graalvm/graalvm-ce-builds/releases) 版本
-* mysql 5.7 8.0 (其他版本未测试 如其他版本没问题 可以告知咱们)
-* oracle >= 12c (其他版本未测试 如其他版本没问题 可以告知咱们)
-* postgres 13 14 (其他版本未测试 如其他版本没问题 可以告知咱们)
-* redis 5.X 6.X 7.X 由于框架大量使用了redis特性 版本必须 >= 5.X ([win redis 下载地址](https://github.com/zkteco-home/redis-windows))
-* minio 本地文件存储 或 阿里云 腾讯云 七牛云等一切支持S3协议的云存储
-* maven >= 3.8.X
-* nodejs 18.18 (其他版本未测试 如其他版本没问题 可以告知咱们)
-* npm >= 8.X (7.X确认有问题)
-* idea 2022 2024 (一定不要使用2023后果自负 bug太多影响项目开发)
-* nacos >= 2.X(框架已经内置 采用nacos官方jar包)
-* sentinel 框架内置(采用sentinel官方jar包)
-* seata 框架内置(采用seata官方jar包)
-
-### 需勾选 maven 对应环境
-
-
-
-### 默认 `JDK17` 如有变动 需更改以下配置
-
-
-
-
-### sql导入
-
-将sql导入到与sql文件名对应的数据库(不要放到一个库下)
-默认数据库为mysql如需使用其他数据库 看这里 => [多数据库数据源](../framework/extend/dynamic_datasource.md)
-
-
-
-### 使用内置 `ruoyi-naocs` 服务 从这开始
-
-> 更改 ruoyi-nacos 数据库地址
-
-
-
-**其余流程同下方步骤一致**
-
-### 自建 Nacos 从这开始
-
-**Nacos 数据库指向 ry-config 数据库(此处重点: 此数据库为定制数据 未使用此库会无法读取配置)**
-
-> 将项目 `config/nacos` 下所有配置 复制到 `nacos` 内(建议手动复制内容 防止编码不一致问题)
-
-**注意: 不懂就不要乱改配置文件内容 框架内所有功能都是配置好的!!!不要画蛇添足**
-**注意: 不懂就不要乱改配置文件内容 框架内所有功能都是配置好的!!!不要画蛇添足**
-**注意: 不懂就不要乱改配置文件内容 框架内所有功能都是配置好的!!!不要画蛇添足**
-
-
-
-
-> 更改 `主pom文件` 对应环境的 `nacos` 地址
-
-
-
-### 更改 `Nacos` 自定义配置
-
-**忠告: 微服务配置相当复杂 请勿在不懂原理的情况下乱改**
-**忠告: 微服务配置相当复杂 请勿在不懂原理的情况下乱改**
-**忠告: 微服务配置相当复杂 请勿在不懂原理的情况下乱改**
-
-> `application-common.yml` 更改
-
-
-
-> `datasource.yml` 更改
-
-
-
-> `seata-server.properties` 更改
-
-
-
-### 使用内置 `ruoyi-seata-server` 服务 从这开始
-
-执行 `ry-seata.sql` 文件 初始化服务端数据库
-修改 `nacos` 内的 `seata-server.properties` 的数据库地址
-启动 `ruoyi-seata-server` 服务即可
-
-### 服务启动顺序说明
-
-1. 必须启动基础建设: mysql redis nacos
-2. 可选启动基础建设: minio(影响文件上传) seata(影响分布式事务 默认开启) sentinel(影响熔断限流) monitor(影响监控) snailjob(影响定时任务)
-3. 必须启动应用服务: gateway auth system
-4. 可选启动应用服务: resource(影响资源使用 websocket 文件上传 邮件 短信等) workflow(工作流) gen(代码生成) job(影响定时任务) demo(影响demo使用)
diff --git a/ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/quickstart/power_job_init.md b/ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/quickstart/power_job_init.md
deleted file mode 100644
index 907c7fc7..00000000
--- a/ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/quickstart/power_job_init.md
+++ /dev/null
@@ -1,33 +0,0 @@
-# 搭建PowerJob任务调度中心(2.X分支已废弃)
-- - -
-### 废弃原因
-
-接到大量投诉 使用困难 用法诡异 各种问题等
-
-### 配置调度中心客户端
-> 查看ruoyi-job配置文件(默认情况下无需做任何更改)
->
-
-
-* `enabled` 可启用或关闭客户端注册
-* `server-address` 为调度中心地址
-* `server-name` 为调度中心服务名
-* `app-name` 为执行器组账户名(需在调度中心注册方可登录查看)
-
-### 启用调度中心
-**需执行 ry-job.sql 默认账号密码 `ruoyi-worker` `123456` 账号在数据库里 可以在页面修改密码**
-
-
-
-
-> 在 `ruoyi-visual -> ruoyi-powerjob-server` 启动
->
-
-
-> 需修改配置文件数据库连接地址(**注意: 此处为ruoyi-powerjob-server服务的配置文件**)
->
-
-
-> 也可配置邮件发送 钉钉推送 和 mongodb存储
->
-
diff --git a/ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/quickstart/snail_job_init.md b/ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/quickstart/snail_job_init.md
deleted file mode 100644
index 25c21ebb..00000000
--- a/ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/quickstart/snail_job_init.md
+++ /dev/null
@@ -1,38 +0,0 @@
-# 搭建SnailJob任务调度中心(2.2.0新功能)
-- - -
-
-### 视频介绍
-
-[Snail job任务调度中心:轻松掌握任务管理、重试机制和任务编排](https://www.bilibili.com/video/BV19i421m7GL/)
-
-### 配置调度中心客户端
-> 修改主服务配置文件
->
-
-
-
-* `enabled` 可启用或关闭客户端注册
-* `server.server-name` 为调度中心服务名(自动从Nacos获取服务 支持动态扩容调度中心)
-* `server.address` 为调度中心地址(服务名优先 ip垫底)
-* `server.port` 为调度中心通信端口
-* `token` 为组通信校验token(可在调度中心组配置更换)
-* `group-name` 为执行器组
-* `namespace` 作用域(不同作用域相互隔离请勿填错)
-
-### 启用调度中心
-**需执行 ruoyi-job.sql 默认账号密码 `admin` `admin` 账号在数据库里 可以在页面修改密码**
-
-
-
-
-> 在 `ruoyi-visual -> ruoyi-snailjob-server` 模块启动
->
-
-
-> 需修改配置文件数据库连接地址(**注意: 此处为ruoyi-snailjob-server服务的配置文件 支持多种不同数据库**)
->
-
-
-### 快速入门
-
-[Snailjob快速入门 基本使用介绍](https://juejin.cn/post/7412955032092442675)
\ No newline at end of file
diff --git a/ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/quickstart/worker_init.md b/ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/quickstart/worker_init.md
deleted file mode 100644
index 121a094d..00000000
--- a/ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/quickstart/worker_init.md
+++ /dev/null
@@ -1,52 +0,0 @@
-# 工作流初始化
-- - -
-
-### 注意事项
-
-设置 RabbitMQ 配置 `application-common.yml` 配置文件 (可使用其他例如 kafka、rocketmq 详见 ruoyi-common-bus 模块)
-
-此功能用于跨服务同步流程与业务状态 MQ安装方式可参考文档扩展功能
-
-
-
-
-### 工作流使用及配置方式
-
-1.找到项目中bpmn文件夹
-
-
-
-2.启动项目找到流程定义通过**部署流程文件**将bpmn文件夹下**模型.zip**上传
-
-
-
-
-
-3.导入**模型.zip**后将会出现以下列表,默认使用**leave1**,test_leave为请假申请表名称
-
-
-
-
-
-**此处表名由来与表单源码内编写的表名保持一致方可互相绑定**
-
-
-
-
-4.新增一条请假申请,提交后将会得到如下信息
-
-
-
-
-
-5.关于如何切换一个新的流程使用,当前默认使用得KEY为leave1 ,我们切换到leave2使用,我们只需点击绑定业务将表名绑定,重新发起一个新的请假申请就可以得到一个新的流程信息
-
-
-
-
-
-**此处表名由来与表单源码内编写的表名保持一致方可互相绑定**
-
-
-
-
\ No newline at end of file
diff --git a/ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/_sidebar.md b/ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/_sidebar.md
deleted file mode 100644
index 9fd7aad1..00000000
--- a/ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/_sidebar.md
+++ /dev/null
@@ -1,64 +0,0 @@
-
-- **特别赞助**
-- [](http://ccflow.org/?frm=ryPlus)
-- [](http://www.shuduokeji.com)
-- [](https://www.jnpfsoft.com/index.html?from=plus-doc)
-
-
-* **简介**
- * [项目简介](/ruoyi-vue-plus/home.md)
- * [更新日志](/ruoyi-vue-plus/changlog.md)
-* **快速开始**
- * [项目初始化](/ruoyi-vue-plus/quickstart/init.md)
- * [5.X新功能介绍](/ruoyi-vue-plus/quickstart/5.Xnew.md)
- * [4.X项目初始化](/ruoyi-vue-plus/quickstart/4.Xinit.md)
- * [工作流初始化](/ruoyi-vue-plus/quickstart/worker_init.md)
- * [搭建Admin监控](/ruoyi-vue-plus/quickstart/admin_init.md)
- * [搭建SnailJob调度中心](/ruoyi-vue-plus/quickstart/snail_job_init.md)
- * [(废弃)搭建PowerJob调度中心](/ruoyi-vue-plus/quickstart/power_job_init.md)
- * [(废弃)搭建XXLJob调度中心](/ruoyi-vue-plus/quickstart/xxl_job_init.md)
- * [idea环境配置](/ruoyi-vue-plus/quickstart/idea_environment.md)
- * [应用部署](/ruoyi-vue-plus/quickstart/deploy.md)
- * [扩展项目](/ruoyi-vue-plus/quickstart/extend_project.md)
-* **框架功能**
- * [项目结构](/ruoyi-vue-plus/framework/tree.md)
- * [软件架构图](/ruoyi-vue-plus/framework/architecture_diagram.md)
- * 框架相关
- * [创建新模块](/ruoyi-vue-plus/framework/association/new_module.md)
- * [修改包名](/ruoyi-vue-plus/framework/association/update_package_name.md)
- * [接口文档](/ruoyi-vue-plus/framework/association/doc.md)
- * [修改应用路径](/ruoyi-vue-plus/framework/association/update_url.md)
- * [国际化](/ruoyi-vue-plus/framework/association/i18n.md)
- * 基础功能
- * [系统用户相关](/ruoyi-vue-plus/framework/basic/user.md)
- * [权限控制](/ruoyi-vue-plus/framework/basic/permissions_control.md)
- * [导出功能](/ruoyi-vue-plus/framework/basic/export.md)
- * [导入功能](/ruoyi-vue-plus/framework/basic/import.md)
- * [参数校验](/ruoyi-vue-plus/framework/basic/param_check.md)
- * [代码生成](/ruoyi-vue-plus/framework/basic/code_generate.md)
- * [分页功能](/ruoyi-vue-plus/framework/basic/page.md)
- * [OSS功能](/ruoyi-vue-plus/framework/basic/oss.md)
- * [数据权限](/ruoyi-vue-plus/framework/basic/permissions.md)
- * [接口放行](/ruoyi-vue-plus/framework/basic/interface_release.md)
- * [多租户功能](/ruoyi-vue-plus/framework/basic/tenant.md)
- * [第三方授权功能](/ruoyi-vue-plus/framework/basic/social.md)
- * [客户端管理功能](/ruoyi-vue-plus/framework/basic/client.md)
- * 扩展功能
- * [多数据源](/ruoyi-vue-plus/framework/extend/dynamic_datasource.md)
- * [短信模块](/ruoyi-vue-plus/framework/extend/sms.md)
- * [邮件功能](/ruoyi-vue-plus/framework/extend/mail.md)
- * [防重幂等](/ruoyi-vue-plus/framework/extend/idempotent.md)
- * [数据脱敏](/ruoyi-vue-plus/framework/extend/sensitive.md)
- * [API加解密](/ruoyi-vue-plus/framework/extend/api_encrypt.md)
- * [数据加解密](/ruoyi-vue-plus/framework/extend/encrypt.md)
- * [翻译功能](/ruoyi-vue-plus/framework/extend/translation.md)
- * [WebSocket功能](/ruoyi-vue-plus/framework/extend/websocket.md)
- * [SSE功能](/ruoyi-vue-plus/framework/extend/sse.md)
- * [Skywalking链路监控](/ruoyi-vue-plus/framework/extend/skywalking.md)
- * [对接MaxKey单点登录](/ruoyi-vue-plus/framework/extend/maxkey.md)
- * [对接TOPIAM单点登录](/ruoyi-vue-plus/framework/extend/topiam.md)
- * 功能说明
- * [事务相关](/ruoyi-vue-plus/framework/explain/transaction.md)
- * [单元测试](/ruoyi-vue-plus/framework/explain/test.md)
- * [主键使用说明](/ruoyi-vue-plus/framework/explain/key.md)
- * [关于多表查询](/ruoyi-vue-plus/framework/explain/about_join.md)
\ No newline at end of file
diff --git a/ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/changlog.md b/ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/changlog.md
deleted file mode 100644
index ac8eb907..00000000
--- a/ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/changlog.md
+++ /dev/null
@@ -1,2028 +0,0 @@
-# 更新日志
-- - -
-
-## v5.2.2 - 2024-08-26
-
-### 重大改动
-
-* 增加 ruoyi-common-sse 模块 支持SSE推送 比ws更轻量更稳定的推送
-* 增加 springboot snailjob 等 actuator 账号密码认证 杜绝内外网信息泄漏问题
-* 增加 重构代码生成器 集成anyline开源框架 支持400+种数据库适配
-
-### 依赖升级
-
-* update springboot 3.2.6 => 3.2.9
-* update snailjob 1.0.1 => 1.1.2
-* update mapstruct-plus 1.4.3 => 1.4.4
-* update hutool 5.8.27 => 5.8.31 解决hutool不兼容jakarta问题
-* update anyline 8.7.2-20240808
-* update sms4j 3.2.1 => 3.3.2
-* update redisson 3.31.0 => 3.34.1
-* update mapstruct-plus 1.3.6 => 1.4.3
-* update lombok 1.18.32 => 1.18.34
-* update easyexcel 3.3.4 => 4.0.2
-* update springdoc 2.5.0 => 2.6.0
-* update flowable 7.0.0 => 7.0.1
-
-### 功能更新
-
-* update 优化 去除日志部署环境判断 通过日志级别控制
-* update 优化 忽略租户与忽略数据权限支持嵌套使用(感谢 amadeus5201)
-* update 优化 租户相关controller 增加租户开关配置控制是否注册
-* update 优化 移除 alibaba ttl 与线程池搭配有问题(可传递但无法清除与更新)
-* update 优化 个人中心编辑 忽略数据权限
-* update 优化 兼容部分用户不想给用户分配角色与部门的场景
-* update 优化 租户套餐重名校验
-* update 优化 部门下存在岗位不允许删除
-* update 优化 角色编辑状态未校验问题
-* update 优化 用户脱敏增加编辑权限标识符
-* update 优化 代码生成器 自动适配oss翻译
-* update 优化 临时升级 undertow 版本 解决虚拟线程溢出问题
-* update 优化 支持通过配置文件关闭工作流
-* update 优化 增加mybatis-plus填充器兜底策略
-* update 优化 TenantSpringCacheManager 处理逻辑
-* update 优化 角色权限判断
-* update 优化 增加删除标志位常量优化查询代码
-* update 优化 监控使用独立web依赖
-* update 优化 更多脱敏策略(感谢 hemengji)
-* update 优化 设置nginx sse相关代理参数
-* update 优化 调整默认推送使用SSE
-* update 优化 Monitor监控服务通知分类打印(感谢 AprilWind)
-* update 优化 限流注解 又写key又不是表达式的情况
-* update 优化 WorkflowUtils查询用户信息发送消息未查询邮件和手机号(感谢 yanzy)
-* update 优化 注释掉其他数据库 jdbc 依赖 由用户手动添加
-* update 优化 oracle snailjob 兼容低版本oracle索引名称长度限制
-* update 优化 数据权限支持通过菜单标识符获取数据所有权
-* update 优化 数据权限支持自定义连接符
-* update 优化 TestDemo 删除前校验数据权限
-* update 优化 更换docker镜像底层系统 避免无字体情况
-
-### 问题修复
-
-* fix 修复 三方登录构建去除无用代码
-* fix 修复 多线程对同一个session发送ws消息报错问题
-* fix 修复 依赖漏洞 限制部分依赖版本
-* fix 修复 excel 基于其他字段 合并错误问题
-* fix 修复 一级缓存key未区分租户问题
-* fix 修复 id字符串格式转换错误问题
-* fix 修复 登出无法正确删除对应的租户数据问题
-* fix 修复 登录错误锁定不区分租户问题
-* fix 修复 转换模型缺少分类字段
-* fix 修复 权限标识符处理未设置成功状态问题
-* fix 修复 无法导入 bpmn 类型文件问题
-
-### 前端改动
-
-* update element-plus 2.7.5 => 2.7.8
-* update vue 3.4.25 => 3.4.34
-* update vite 5.2.10 => 5.2.12
-* add 增加 使用 vueuse 编写 sse 推送功能
-* update 优化 使用匹配模式简化预编译配置
-* update 优化 时间搜索组件统一
-* update 优化 oss 配置按钮 使用ossConfig权限标识符与oss权限分离
-* update 优化 类型报错问题
-* update 优化 切换租户后刷新首页
-* update 优化 实现表格行选中切换
-* update 优化 使用 vueuse 重构 websocket 实现
-* update 优化 代码生成器编辑页禁用缓存 防止同步后页面不更新问题
-* update 优化 调整默认推送使用SSE
-* fix 修复 租户套餐导出路径错误问题
-* fix 修复 登出后重新登录 sse推送报错问题
-
-
-## v5.2.1 - 2024-07-09
-
-### 功能更新
-
-* update 优化 更改prod环境 snailjob状态 默认启用
-* update 优化 替换过期方法
-* update 优化 租户列表接口 避免登录之后列表被域名过滤
-* update 优化 获取用户账户方法 LoginHelper#getUsername(感谢 AprilWind)
-* update 优化 用户ID查询角色列表代码实现(感谢 AprilWind)
-* update 优化 大数据量下join卡顿问题 使用子查询提高性能
-* update 优化 修改路由name命名规则 防止重复路由覆盖问题(感谢 玲娜贝er)
-* update 优化 修改 snailjob 默认端口 避免与系统内置端口冲突问题
-* update 优化 isTenantAdmin 空校验
-* update 优化 webscoket 配置与异常拦截
-* update 优化 更新 redis 密码策略(密码必填 升级需注意)
-* update 优化 更新使用 Spring 官方推荐 JDK
-* update 优化 StreamUtils 抽取 findFirst findAny 方法
-* update 优化 工作流相关代码方法
-
-### 问题修复
-
-* fix 修复 postgres flowable sql 缺失字段问题
-* fix 修复 新版上传未设置acl问题
-* fix 修复 get路径特殊规则 导致 actuator 泄漏问题 [issue#4f9ceb0a](https://gitee.com/dromara/RuoYi-Vue-Plus/commit/4f9ceb0a8057284a0d9d69da58df630d8bc2e84f)
-* fix 修复 pg数据库 用户查询报错问题
-* fix 修复 isLogin 方法抛异常无法正常返回值问题
-
-### 前端改动
-
-* update 优化 工作流选人改为懒加载窗口
-* update 优化 路由name重复检查
-* update 优化 eslint 语法
-* update 优化 动态创建组件实例时, 设置路由name为组件名 解决缓存问题
-* fix 修复 由于没有await 导致执行顺序不可控
-* fix 修复 富文本编辑器 添加之后内容未清理问题
-
-## v5.2.0 - 2024-06-20
-
-### 重大改动
-
-* 集成 flowable 增加工作流相关功能(感谢 May)
-* 集成 snailjob 移除 powerjob(投诉的人太多使用成本太高)(感谢 dhb52)
-* 升级 aws s3 升级到 2.X 性能大幅提升
-* 优化 数据权限 数据加密 使用预扫描mapper注解提升代码性能(感谢 老马)
-* 新增 caffeine 减少将近90%的redis查询提高性能
-
-### 依赖升级
-
-* update springboot 3.1.7 => 3.2.6 支持虚拟线程
-* update springboot-admin 3.1.8 => 3.2.3
-* update mybatis-plus 3.5.4 => 3.5.7 适配更改代码
-* update springdoc 2.2.0 => 2.5.0
-* update easyexcel 3.3.3 => 3.3.4
-* update redisson 3.24.3 => 3.31.0
-* update lombok 1.18.30 => 1.18.32
-* update sms4j 2.2.0 => 3.2.1 支持自定义配置key 可用于多厂商多租户等
-* update satoken 1.37.0 -> 1.38.0
-* update hutool 5.8.22 => 5.8.26
-* update mapstruct-plus 1.3.5 => 1.3.6
-* update lock4j 2.2.5 => 2.2.7
-* update dynamic-ds 4.2.0 => 4.3.1
-
-### 功能更新
-
-* update 优化 三方登录不同域名问题 采用新方案
-* update 优化 获取aop代理的方式 减少与其他使用aop的功能冲突的概率
-* update 优化 token无效时关闭ws连接(感谢 AprilWind)
-* update 优化 移除表单构建菜单(没有可用组件 用处不大以后再考虑)
-* update 优化 切换动态租户 默认线程内切换(如需全局 手动传参)
-* update 优化 代码生成注释,删除无用引入(感谢 AprilWind)
-* update 优化 代码生成 el-radio 标签过期属性
-* update 优化 异常处理器自动配置
-* update 优化 文件下载使用对流下载降低内存使用(感谢 PhoenixL)
-* update 优化 去除gc日志参数(有需要自己加)
-* update 优化 拆分异常处理器
-* update 优化 常规web异常状态码
-* update 优化 设置静态资源路径防止所有请求都可以访问静态资源
-* update 优化 redis 对Long值的存储类型不同问题
-* update 优化 去除加密请求类型限制
-* update 优化 mp多租户插件注入逻辑
-* update 优化 RedisUtils 支持忽略租户
-* update 优化 更新ip地址xdb文件
-* update 优化 验证码背景色改为浅灰色
-* update 优化 mybatis依赖设置为可选依赖 避免出现不应该注入的情况
-* update 优化 GET 方法响应体支持加密
-* update 优化 excel插件合并策略 去除被合并单元格的非首行内容(感谢 司猫子)
-* update 优化 下拉选接口数据权限
-* update 优化 OssFactory 获取实例锁性能
-* update 优化 使用翻译注解简化用户查询 调整用户查询逻辑
-* update 优化 框架整体提高查询性能
-* update 优化 将p6spy配置文件统一放置到 common-mybatis 插件包内
-
-### 新增功能
-
-* add 新增 分布式锁Lock4j异常拦截器
-* add 新增 个人中心-在线设备管理
-* add 新增 岗位编码与部门编码并将岗位调整到部门下(感谢 AprilWind)
-* add 新增 BaseMapperPlus提供可选是否抛异常selectVoOne方法(感谢 秋辞未寒)
-* add 新增 用户、部门、角色、岗位 下拉选接口与代码实现优化
-* add 增加 StringUtils.isVirtual 方法
-* add 增加 JustAuth 整合 TopIam 单点登录
-
-### 问题修复
-
-* fix 修复 websocket clientid 参数不走mvc拦截器 无法生效问题
-* fix 修复 oss未使用租户 拼接租户id null问题
-* fix 修复 用户昵称修改后未清除对应缓存问题(感谢 zhuweitung)
-* fix 修复 图片预览问题(感谢 AprilWind)
-* fix 修复 三方账号可以绑定多平台账号问题
-* fix 修复 主建错别字(感谢 good)
-* fix 修复 兼容redis5.0出现的问题
-* fix 修复 部分浏览器无法获取加密响应头问题
-* fix 修复 用户未设置部门 登录报错问题
-* fix 修复 excel 表达式字典 下拉框导出格式错误
-* fix 修复 提升锁的作用域 并采用双重校验锁(感谢 fanc)
-* fix 修复 用户登录查询部门缓存无法获取租户id问题
-* fix 修复 关闭租户功能 三方登录报错问题
-
-
-### 前端改动
-
-* update element-plus 2.7.5
-* update vite 5.2.10
-* update vue 3.4.25
-* update vue-router 4.3.2
-* update nodejs 升级到最低 18.18.0
-* update 优化 跟密码相关的默认前端关闭防重功能
-* update 优化 点击左边菜单时页面空白或者刷新整个页面的问题
-* update 优化 el-select 与 el-input 全局样式
-* update 优化 首页打开topNav不展开菜单问题
-* update 优化 支持全局开启或关闭接口加密功能
-* update 优化 密码校验策略增加非法字符限制
-* update 优化 图片上传组件增加压缩功能支持 可自行开关(感谢 fengheguai)
-* update 优化 request请求类判断请求头方式
-* update 优化 更改客户端状态接口 使用clientId传参
-* update 优化 ws开关改为常开(vite5修复了崩溃bug)
-* fix 修复 移动端下 无法展开菜单问题
-* fix 修复 面板因为min width原因收缩不全
-* fix 修复 文件预览大写后缀不展示的问题(感谢 北桥)
-* fix 修复 i18n无感刷新问题
-* fix 修复 websocket 非index页面刷新无法重连问题
-
-## v5.1.2 - 2023-12-22
-
-### 依赖升级
-
-* update springboot 3.1.5 => 3.1.7
-* update mybatis-boot 3.0.2 => 3.0.3 优化依赖传递
-* update powerjob 4.3.3 => 4.3.6
-* update easyexcel 3.3.2 => 3.3.3
-* update transmittable-thread-local 2.14.2 => 2.14.4
-* update justauth 1.16.5 => 1.16.6
-* update redisson 3.24.1 => 3.24.3 修复订阅重启连接超时问题
-
-### 功能更新
-
-* update 优化 为 admin 模块 单独增加 ratelimiter 模块
-* update 优化 验证码接口 增加限流配置
-* update 优化 excel合并注解会根据第一合并列的结果来决定后续的列合并 (感谢 Simple)
-* update 优化 SocialUtils 代码
-* update 优化 删除无用异常类
-* update 优化 补全三方登录校验国际化
-* update 优化 sms组件 预留自动配置类
-* update 更新 关于数据库的说明
-* update 优化 sms组件 预留自动配置类
-* update 优化 将 OSS配置 改为全局模式 降低使用难度 保留sql便于用户自行扩展(常规项目用不上配置分多租户)
-* update 优化 细化oss配置管理权限控制
-* update 优化 开启 redisson 脚本缓存 减少网络传输
-* update 优化 删除 hikaricp 官方不推荐使用的配置 jdbc4 协议自带校验方法
-* update 优化 减少 PlusSaTokenDao 不必要的查询优化性能
-* update 优化 更新用户异常提示 使用登录账号
-* update 优化 使用登录用户判断是否登录 提高效率
-* update 优化 重构 LoginHelper 将本地存储代码操作封装
-* update 优化 getTenantId 判断是否开启多租户
-* update 优化 Dockerfile 使用shell模式 支持环境变量传入jvm参数
-* update 优化 WebSocketUtils 连接关闭改为警告
-* update 优化 excel多sheet页导出 (感谢 May)
-* update 优化 删除无用接口实现
-* update 优化 jvm参数调整 全面启用zgc
-* update 优化 使用动态租户重构业务对租户的逻辑
-* update 优化 TenantHelper 动态租户支持函数式方法
-* update 优化 支持多租户绑定相同的三方登录
-* update 优化 更新用户登录信息方法忽略数据权限
-* update 优化 补全三方绑定时间字段 删除无用excel注解
-* update 优化 将登录记录抽取到监听器统一处理
-* update 优化 租户插件 ignoreTable 方法支持动态租户
-
-### 新增功能
-
-* add 新增 RedisUtils.setObjectIfExists 如果存在则设置方法
-* add 新增 丰富RedisUtils对List Set类型的操作
-* add 新增 翻译组件 用户昵称翻译实现
-* add 新增 响应加密功能 支持注解强制加密接口数据 (感谢 MichelleChung)
-
-### 问题修复
-
-* fix 修复 selectDictTypeByType 查询方法错误问题
-* fix 修复 一些不正常类无法加载报错问题
-* fix 修复 powerjob sql脚本针对其他数据库转义符问题 (感谢 branches)
-* fix 修复 MybatisSystemException 空指针问题
-* fix 修复 excel合并注解会根据第一合并列的结果来决定后续的列合并
-* fix 修复 session 多账号共用覆盖问题 改为 tokenSession 独立存储
-* fix 修复 token 失效后 登录获取用户null问题
-* fix 修复 powerjob部署方案 高版本nginx不生效问题
-* fix 修复 OssFactory 并发多创建实例问题
-* fix 修复 延迟队列在投递消息未到达时间的时候 服务死机导致重启收不到消息
-
-### 前端改动
-
-* update 优化 用户头像 img 变量无确定类型问题
-* update 优化 细化oss配置管理权限控制
-* update 优化 明确打包命令
-* update 优化 代码中存在的警告
-* update 优化 前端白名单页面放行逻辑
-* update 优化 页面关于权限标识符说明
-* fix 修复 append-to-body 编写错误 (感谢 Ai3_刘小龙)
-* fix 关闭动态路由tab页签时不清理组件缓存 (感谢 NickLuo)
-* fix 删除重复环境变量ElUploadInstance (感谢 棉花)
-* fix 修复 在线用户 强推按钮点击取消控制台警告问题
-* fix 修复 字典使用 default 样式报警告问题
-
-## v4.8.2 - 2023-11-27
-
-### 依赖升级
-
-* update springboot 2.7.17 => 2.7.18 升级到2.X最终版本(官方停更)
-* update mybatis-plus 3.5.3.2 => 3.5.4
-* update springboot 2.7.14 => 2.7.17
-* update satoken 1.36.0 => 1.37.0
-* update aws-java-sdk-s3 1.12.400 => 1.12.540
-* update vue-quill 1.1.0 => 1.2.0
-
-### 功能更新
-
-* update 优化 页面关于权限标识符说明
-* update 优化 数据权限拦截器优先判断方法是否有效 提高性能减少无用sql解析
-* update 优化 部门数据权限使用默认兜底方案
-* update 优化 更改默认日志等级为info 避免日志过多(按需开启debug)
-* update 优化 补全代码生成 columnList 接口参数注解缺失
-* update 优化 操作日志 部门信息完善 vue3页面
-* update 优化 AddressUtils 兼容linux系统本地ip
-* update 优化 操作日志 部门信息完善 (感谢 柏竹)
-* update 优化 数据权限 减少二次校验查询
-* update 优化 vue3 版本用户初始密码从字典查询
-* update 优化 富文本Editor组件检验图片格式
-* update 优化 操作日志列表新增IP地址查询
-* update 优化 全局数据存储用户编号
-* update 优化 菜单管理类型为按钮状态可选
-
-### 问题修复
-
-* fix 修复 OssFactory 并发多创建实例问题
-* fix 修复 demo的form字段有误 (感谢 dhb52)
-* fix 修复 延迟队列在投递消息未到达时间的时候 服务死机导致重启收不到消息
-* fix 修复 数据权限优化后 update delete 报null问题
-* fix 修复 五级路由缓存无效问题
-* fix 修复 oss服务无法连接 导致业务异常问题 查询不应该影响业务
-* fix 修复 内链iframe没有传递参数问题
-* fix 修复 外链带端口出现的异常
-* fix 修复 普通角色编辑使用内置管理员code越权问题
-* fix 修复 代码生成 是否必填与数据库不匹配问题
-* fix 修复 HeaderSearch组件跳转query参数丢失问题
-* fix 修复 树结构代码生成新增方法赋值错误 (感谢 这夏天依然平凡)
-
-## v5.1.1 - 2023-11-14
-
-### 依赖升级
-
-* update springboot 3.1.3 => 3.1.5
-* update springboot 2.7.14 => 2.7.17(扩展服务)
-* 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 适配mp新版本改动
-* 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(适配支持jdk21)
-* update vue-quill 1.1.0 => 1.2.0
-
-### 功能更新
-
-* update 优化 数据权限拦截器优先判断方法是否有效 提高性能减少无用sql解析
-* update 优化 适配 maxkey 新版本
-* update 优化 @Sensitive脱敏增加角色和权限校验 (感谢 盘古给你一斧)
-* update 优化 部门数据权限使用默认兜底方案
-* update 优化 更改默认日志等级为info 避免日志过多(按需开启debug)
-* update 优化 登录策略代码优化(感谢 David Wei)
-* update 优化 补全代码生成 columnList 接口参数注解缺失
-* update 优化 nginx 配置支持 websocket
-* update 优化 notice 新增通知公告发送ws推送
-* update 优化 websocket 模块减少日志输出 增加登录推送
-* update 优化 重构登录策略增加扩展性降低复杂度
-* update 优化 addressUtils 兼容linux系统本地ip
-* update 优化 补全操作日志部门数据
-* update 优化 支持数据库操作在非web环境下切换租户
-* update 优化 排除powerjob无用的依赖 减少打包30M体积
-* update 优化 删除 satoken yml 时间配置 此功能已迁移至客户端管理
-* update 优化 redis 集群模式注释说明
-* update 优化 客户端禁用限制
-* update 优化 登录日志, 在线用户展示信息(增加 客户端, 设备类型)(感谢 MichelleChung)
-* update 优化 限制框架中的fastjson版本
-* update 优化 数据权限 减少二次校验查询
-* update 优化 将部门id存入token避免过度查询redis
-* update 优化 增加租户ID为Null错误日志
-* update 优化 操作日志列表新增IP地址查询
-* update 优化 通过参数键名获取键值接口的返回体(感谢 David Wei)
-* update 优化 为 sys_grant_type 字典增加样式
-* update 优化 代码生成 页面输入框样式
-* update 优化 全业务分页查询增加排序规则避免因where条件导致乱序问题
-* update 优化 登录接口租户id被强制校验问题
-* update 优化 加密模块 支持父类统一使用加密注解(感谢 Tyler Ge)
-* update 优化 将graalvm镜像更新为openjdk镜像 需要的人自行切换即可
-* update 优化 部分使用者乱设权限导致无法获取用户信息 增加权限提示
-* update 优化 表格列的显示与隐藏小组件(感谢 bestrevens)
-* update 优化 增加表单构建不能使用说明
-* update 优化 富文本Editor组件检验图片格式
-* update 优化 操作日志列表新增IP地址查询
-* update 优化 菜单管理类型为按钮状态可选
-* update 优化 用户初始密码从参数配置查询
-* update 优化 通过参数键名获取键值接口的返回体(感谢 David Wei)
-* update 优化 字典标签支持数组和多标签(感谢 抓蛙师)
-
-### 新增功能
-
-* add 新增 websocket 群发功能
-* add 新增 前端接入websocket接收消息(感谢 三个三)
-
-### 问题修复
-
-* fix 修复 oss服务无法连接 导致业务异常问题 查询不应该影响业务
-* fix 修复 租户id为null 无法匹配字符串导致的嵌套key问题
-* fix 修复 部门管理orderNum排序失效问题
-* fix 修复 外链带端口出现的异常
-* fix 修复 普通角色编辑使用内置管理员code越权问题
-* fix 修复 代码生成 是否必填与数据库不匹配问题
-* fix 修复 用户注册接口校验用户名不区分租户问题
-* fix 修复 错误增加组导致的校验不生效问题
-* fix 修复 新增校验主键id问题
-* fix 修复 powerjob 使用 nginx 部署无法访问的问题
-* fix 修复 SysUserMapper 内标签使用错误(不影响使用)
-* fix 修复 新增或编辑 SysOssConfig 数据后 推送到 redis 数据不完整
-* fix 修复 树表生成查询变量使用错误
-* fix 修复 个人信息修改密码接口隐藏新旧密码参数明文(感谢 bleachtred)
-* fix 修复 删除字段后 * update sql 未更新问题
-* fix 修复 三方登录支付宝source与实际支付宝业务code不匹配问题
-* fix 修复 五级路由缓存无效问题
-* fix 修复 内链iframe没有传递参数问题
-* fix 修复 绑定第三方帐号参数“wechar”更正为“wechat” (感谢 scmiot)
-* fix 修复 用户注册缺失 clientid 问题
-* fix 修复 HeaderSearch组件跳转query参数丢失问题
-* fix 修复 自定义字典样式不生效的问题
-* fix 修复 login 页面 loading 未关闭问题
-
-## v4.8.1 - 2023-09-25
-
-### 依赖升级
-
-* update springboot 2.7.15 => 2.7.16
-* update springboot-admin 2.7.10 => 2.7.11
-* update satoken 1.35.0.RC => 1.36.0
-* update lombok 1.18.26 =. 1.18.30
-* update mybatis-plus 3.5.3.1 => 3.5.3.2
-* update easyexcel 3.3.1 => 3.3.2
-* update hutool 5.8.18 => 5.8.20
-
-### 功能更新
-
-* update 优化 重置密码注释参数中文解释错误
-* update 优化 getTokenActivityTimeout => getTokenActiveTimeout
-* update 优化字典标签支持传分隔符分隔的字符串和数组,优化渲染效果
-* update 优化 控制台debuger位置错误问题
-* update 优化 TopNav 菜单样式
-* update 优化 全局异常处理器 业务异常不输出具体堆栈信息 减少无用日志存储
-* update 优化 用户管理 只查询未禁用的部门角色岗位数据
-* update 优化 岗位如果绑定了用户则不允许禁用
-* update 优化 部门与角色如果绑定了用户则不允许禁用
-* update 优化 加密实现 使用 EncryptUtils 统一处理
-* update 优化 excel导出字典转下拉框 无需标记index自动处理
-* update 优化 excel 导出字典默认转为下拉框
-* update 优化 删除一些跟 swagger 有关的字眼 避免误解
-* update 优化 角色权限支持仅本人权限查看 解决无法查看自己创建的角色问题
-* update 优化 RedisCacheController 注释错误
-* update 优化 xxljob 端口随着主应用端口飘逸 避免集群冲突
-* update 优化 powerjob 端口随着主应用端口飘逸 避免集群冲突
-
-### 问题修复
-
-* fix 修复 代码生成后 vo 定义 'serialVersionUID' 字段的不可序列化类
-* fix 修复 自定义字典样式不生效的问题
-* fix 修复 布局配置失效问题
-* fix 修复 新建用户可能会存在的越权行为
-* fix 修复 字典缓存删除方法参数错误问题
-* fix 修复 修复树模板父级编码变量错误
-* fix 修复 有界队列与优先队列 错误使用问题
-* fix 修复 升级 mp 版本导致的问题
-* fix 修复 vue3 版本注册页验证码不显示问题
-* fix 修复 加密模块数据转换异常问题
-* fix 修复 动态设置 token 有效期不生效问题
-* fix 修复 token 过期登出无法清理在线用户问题
-
-
-## v5.1.0 - 2023-09-05
-
-# 开发历程
-
-* 2023年5月 开始 5.1.0 计划 历经1个月的设计与讨论
-* 2023年6月 开始着手开发 历经2个多月的开发 特别感谢团队的小伙伴与一些热心的粉丝 参与功能开发与测试
-* 2023年8月 开始公测 历经将近1个月的公测与修复工作(期间成功支持多位使用者生产使用)
-* 2023年9月初 正式发布(经过多个小伙伴的生产实践 已基本可尝试生产使用)
-> 关于4.X的说明 由于SpringBoot2.X与vue2.X均在11月底停止维护
-> 故而咱们vue版本4.X也无法再继续更新
-> 介于4.X的用户量特别庞大 功能也非常的稳定
-> 计划于11月底同Boot2.X一同停止更新但还会持续维护修复bug(修复的形式为直接提交到4.X分支停止发版)
-
-# 视频介绍
-
-为了更好的让大家了解 5.1.0 作者录制了相关的视频 供大家快速了解上手
-
-* 5.1.0 新功能与变更介绍: https://www.bilibili.com/video/BV1fj411y71X/
-* 搭建与运行: https://www.bilibili.com/video/BV1Fg4y137JK/
-* 生产环境搭建部署: https://www.bilibili.com/video/BV1mL411e7ha/
-
-# 更新日志
-
-### 重大更新
-
-* [重大更新] 优化 相关代码 完成代码生成多数据源统一存储(感谢 WangBQ !pr349)
-* [不兼容更新] 移除 原短信功能 集成更强大的 sms4j 短信工具包(感谢 友杰 !pr367)
-* [不兼容更新] 对接 powerjob 实现分布式任务调度 删除原有 xxljob 原因为社区不更新功能太少只支持mysql(感谢 yhan219 !pr359)
-* [重大更新] 新增 三方授权绑定登录功能 基于 justauth 支持市面上大部分三方登录(感谢 三个三 !pr370)
-* [不兼容更新] 新增 客户端授权功能 不需要更改任何代码即可完成多端动态对接(感谢 Michelle.Chung !pr379)
-* [重大更新] 新增 前后端接口请求加密传输 基于AES+RSA动态高强度加密(感谢 wdhcr !pr377)
-* [重大更新] 新增 三方授权登录 对接 maxkey 单点登录
-* [不兼容更新] 优化 redis序列化配置 更改为通用格式(升级需清除redis所有数据)
-
-### 依赖升级
-
-* update springboot 3.0.7 => 3.1.3
-* update springboot-admin 3.1.3 => 3.1.5
-* update springdoc 2.1.0 => 2.2.0
-* update spring-mybatis 3.0.1 => 3.0.2
-* update mybatis-plus 3.5.3.1 => 3.5.3.2
-* update easyexcel 3.2.1 => 3.3.2
-* update mapstruct-plus 1.2.3 => 1.3.5 解决修改实体类 idea不编译问题
-* update satoken 1.34.0 => 1.35.0.RC 优化过期配置 支持多端token自定义有效期
-* update dynamic-ds 3.6.1 => 4.1.3 支持 SpringBoot3
-* update sms4j 2.2.0
-* update hutool 5.8.18 => 5.8.20
-* update redisson 3.20.1 => 3.23.4
-* update lock4j 2.2.4 => 2.2.5
-* update aws-java-sdk-s3 1.12.400 => 1.12.540
-* update maven-surefire-plugin 3.0.0 => 3.1.2
-
-### 功能更新
-
-* update 优化 excel 导出合并 在初始化类时进行数据的处理
-* update 优化 简化 flatten 插件语法写法
-* update 优化 支持本地虚拟域名调试(感谢 代星登 !pr363)
-* update 重构 将框架内的 swagger 命名更改为 springdoc 命名避免误解
-* update 重构 将系统内置配置放置到 common 包内独立加载 不允许用户随意修改
-* update 优化 切换 maven 仓库到 华为云(aliyun依赖不更新拉取不到)
-* update 优化 升级 satoken 支持多端 token 自定义有效期功能
-* update 优化 RepeatSubmitAspect 逻辑避免并发请求问题
-* update 优化 在全局异常拦截器中增加两类异常处理
-* update 优化 提供powerjob完整sql脚本 降低用户使用难度
-* update 优化 StreamUtils 其他方法过滤null值(感谢 bleachtred !pr390)
-* update 优化 powerjob 端口随着主应用端口飘逸 避免集群冲突
-* update 优化 角色权限支持仅本人权限查看 解决无法查看自己创建的角色问题
-* update 修改代码生成模版,日期范围统一采用addDateRange方法(感谢 LiuHao !pr397)
-* update 优化 树表生成前端缺少 children 字段
-* update 优化 CryptoFilter null判断工具
-* update 优化 websocket 路径与 cloud 版本保持一致
-* update 优化 更新登录策略返回值(感谢 zlyx)
-* update 修改代码生成模板,调整列表打开对话框和接口请求顺序
-* update 优化 SaInterceptor 拦截器判断 token 客户端id是否有效(感谢 zlyx !pr402)
-* update 优化 excel 导出字典默认转为下拉框
-* update 优化 兼容 clientid 通过 param 传输
-* update 优化 excel导出字典转下拉框 无需标记index自动处理(感谢 一夏coco)
-* update 优化 简化线程池配置
-* update 优化 屏蔽 powerjob 无用的心跳日志
-* update 优化 适配 mysql 8.0.34 升级连接机制
-* update 优化 加密实现 使用 EncryptUtils 统一处理
-* update 优化 删除字典无用状态字段(基本用不上 禁用后还会导致回显问题)
-* update 优化 部门与角色如果绑定了用户则不允许禁用
-* update 优化 岗位如果绑定了用户则不允许禁用
-* update 优化 用户管理 只查询未禁用的部门角色岗位数据
-* update 优化 登录用户增加昵称返回
-* update 优化 将部门管理 负责人选项改为下拉框选择(感谢 Lionel !pr410)
-* update 优化 全局异常处理器 业务异常不输出具体堆栈信息 减少无用日志存储
-* update 优化 登录用户缓存 去除冗余统一存储
-* update 优化 放宽菜单权限 角色关联菜单无需管理员
-
-### 新增功能
-
-* add 增加 RedisUtils 批量删除 hash key 方法
-* add 新增 Oss 上传 File 文件方法(感谢 jenn !pr362)
-* add 增加 excel 导出下拉框功能
-* add 新增 RedisUtils.setObjectIfAbsent 如果不存在则设置方法
-
-### 修复问题
-
-* fix 修复 脱敏注解标记位置错误
-* fix 修复 OssClient 实例多租户相同key缓存覆盖问题
-* fix 修复 关闭多租户 脱敏判断问题
-* fix 修复 OssClient 切换服务 实例不正确问题(感谢 jenn !pr360)
-* fix 修复 传参类型不正确导致 postgreSql 同步套餐报错问题
-* fix 修复 参数类型修改 未修改校验注解
-* fix 修复 登录校验错误次数未达到上限时 错误次数缓存未设置有效时间问题(感谢 konbai !pr366)
-* fix 修复 common-core 包使用aop注解 但未添加aop实现类导致单独使用报错问题
-* fix 修复 Mapper 多参数未加 @Param 注解问题
-* fix 修复 邮箱登录 查询值错误问题
-* fix 修复 用户篡改管理员角色标识符越权问题
-* fix 修复 字典缓存注解使用错误问题
-* fix 修复 查询部门下拉树未过滤数据权限问题
-* fix 修复 CacheName 缓存key存储错误问题
-* fix 修复 代码生成 前端添加或修改表单修改列生成问题
-* fix 修复 新增角色使用内置管理员标识符问题
-* fix 修复 代码生成 前端添加或修改表单修改列生成问题
-* fix 修复 token 过期登出无法清理在线用户问题
-* fix 修复 加密模块数据转换异常问题
-* fix 修复 可能导致异常类无法反序列化问题
-* fix 修复 代码生成 编辑按钮刷新列表问题
-* fix 修复 客户端编辑时授权类型变更未保存的问题(感谢 David Wei !pr400)
-* fix 修复 有界队列与优先队列 错误使用问题
-* fix 修复 修复树模板父级编码变量错误
-* fix 修复 部署部分系统出现乱码问题
-* fix 修复 一级菜单无法显示问题
-* fix 修复 可能会存在的越权行为(感谢 丶Stone !pr416)
-* fix 修复 代码生成页面参数缺少逗号问题
-
-### 移除功能
-
-* remove 移除原有短信功能(建议使用sms4j)
-* remove 移除xxljob功能(建议使用powerjob)
-
-
-## v4.8.0 - 2023-07-10
-
-### 重大更新
-
-* [重大更新] 新增 sms4j 短信融合框架整合(支持数十种短信厂商接入、发送限制、负载均衡等功能)
-* [不兼容更新] 移除 原短信功能(建议使用新 sms4j 功能)
-* [重要迁移] 迁移 vue3 前端到主仓库统一维护
-
-### 依赖升级
-
-* update springboot 2.7.11 => 2.7.13
-* update satoken 1.34.0 => 1.35.0.RC
-* update easyexcel 3.2.1 => 3.3.1
-* update sms4j 2.2.0
-
-### 功能更新
-
-* update 优化 StreamUtils 方法过滤null值
-* update 优化 页签在Firefox浏览器被遮挡
-* update 优化 在全局异常拦截器中增加两类异常处理
-* update 优化 下载zip方法增加遮罩层(感谢@梁剑锋)
-* update 优化 用户昵称非空校验
-* update 优化 修改角色如果未绑定用户则无需清理
-* update 优化 RepeatSubmitAspect 逻辑避免并发请求问题
-* update 优化 satoken 过期配置 支持多端token自定义有效期
-* update 优化 加密注解注释错误
-* update 优化 切换 maven 仓库到华为云(aliyun 不可用)
-* update 优化 excel 导出存在合并项时在初始化类时进行数据的处理避免多次调用(感谢@yueye)
-* update 优化 重构 CellMergeStrategy 支持多级表头修复一些小问题 整理代码结构
-
-### 新增功能
-
-* add 新增 RedisUtils.setObjectIfAbsent 不存在则设置方法
-* add 新增 Excel 导出附带有下拉框(字典自动导出为下拉框) 可自定义多级下拉框(感谢@Emil.Zhang)
-* add 新增 OssClient File 文件上传方法
-* add 增加 RedisUtils 批量删除 hash key 方法
-
-### 问题修复
-
-* fix 修复 新增角色使用内置管理员标识符问题
-* fix 修复 缓存监控图表 支持跟随屏幕大小自适应调整(感谢@抓蛙师)
-* fix 修复 防重组件 错删注解问题
-* fix 修复 CacheName 缓存key存储错误问题
-* fix 修复 字典缓存注解使用错误问题
-* fix 修复 用户篡改管理员角色标识符越权问题
-* fix 修复 登录校验错误次数未达到上限时 错误次数缓存未设置有效时间问题
-* fix 修复 OssClient 切换服务 实例不正确问题
-* fix 修复 element ui 因版本而未被工具识别问题(感谢@梁剑锋)
-* fix 修复 admin监控 切换tab页需要重复登录问题
-
-## v5.0.0 - 2023-05-19
-
-# 开发历程
-
-* 2022年11月 开始5.X计划 历经2个月的设计与讨论
-* 2023年1月 开始着手开发 历经3个月的开发 特别感谢团队的小伙伴与一些热心的粉丝 参与功能开发与测试
-* 2023年4月 开始公测 历经将近2个月的公测与修复工作(期间成功支持多位使用者生产使用)
-* 2023年5月底 正式发布 虽然已经有生产实践 但是springboot3.0与jdk17使用者还处于少数 另外5.X后续还有一些不兼容更新 求稳者建议在等一等
-* 关于4.X的说明 由于springboot2.X 与 vue2.X 匀在年底停止维护 故此4.X也将于年底同boot2一同停止维护
-
-# 视频介绍
-
-为了更好的让大家了解 5.X 作者录制了相关的视频 供大家快速了解上手
-
-* 搭建与运行: https://www.bilibili.com/video/BV1Fg4y137JK/
-* 新功能与变更介绍: https://www.bilibili.com/video/BV1Us4y1m7ky/
-* 生产环境搭建部署: https://www.bilibili.com/video/BV1mL411e7ha/
-
-# 更新日志
-
-### 重大更新
-
-* [不兼容升级] java 版本从 jdk 8 升级到 jdk 17 且需要使用 graalvm 运行(暂时未解决原生jdk存在的问题)
-* [不兼容升级] springboot 升级 3.0 版本
-* [不兼容升级] 重构 项目模块结构 采用插件化结构 易扩展易解耦
-* [不兼容升级] com.sun.mail 更改为 jakarta.mail 修改最新写法
-* [不兼容升级] javax.servlet 替换为 jakarta.servlet 更新所有代码
-* [简化性升级] 默认开启复杂结构 resultMap 自动映射 简化xml编码(多结构实体需带上主键id)
-* [数据库改动] 更新 create_by update_by 字段类型 (保存用户id)
-* [数据库改动] 新增 create_dept 字段 (保存创建部门id)
-* [不兼容更新] system 模块 所有实体类均使用 bo|vo 规范化
-* [重大更新] 新增 多租户功能设计 整体框架代码结构与数据库更改
-* [重大更新] 新增 mapstruct-plus 替换 BeanUtil 与 BeanCopyUtils 工具
-* [不兼容更新] 重构 登录注解接口与cloud版本统一接口路径
-* [不兼容更新] 重构 BaseMapperPlus接口 去除 `@param Mapper` 泛型
-* [不兼容更新] 移除 vue2 前端工程 全面启用 vue3
-* [重大更新] 新增 vue3 + TS 版本前端(独立仓库后续与Cloud版本共用)
-* [重大更新] 增加 websocket 模块 支持token鉴权 支持分布式集群消息同步
-* [重大更新] 框架文档全面翻新 https://plus-doc.dromara.org
-
-### 依赖升级
-
-* update java 1.8 => 17
-* update springboot 2.7.7 => 3.0.7
-* update springboot-admin 2.7.10 => 3.0.4
-* update springdoc 1.6.14 => 2.1.0
-* update lock4j 2.2.3 => 2.2.4
-* update dynamic-ds 3.5.2 => 3.6.1
-* update easyexcel 3.1.5 => 3.2.1
-* update hutool 5.8.11 => 5.8.18
-* update redisson 3.19.2 => 3.20.1
-* update lombok 1.18.24 => 1.18.26
-* update spring-boot.mybatis 2.2.2 => 3.0.1
-* update mapstruct-plus 1.2.3
-* update maven-compiler-plugin 3.10.1 => 3.11.0
-* update maven-surefire-plugin 3.0.0-M7 => 3.0.0
-* update docker mysql 8.0.31 => 8.0.33
-* update docker nginx 1.22.1 => 1.32.4
-* update docker redis 6.2.7 => 6.2.12
-* update docker minio RELEASE.2023-04-13T03-08-07Z
-
-### 功能更新
-
-* update 适配 AsyncConfig 替换过期继承类改为实现 AsyncConfigurer 接口
-* update 适配 redis 新版本配置文件写法
-* update 适配 获取redis 监控参数接口 替换过期语法
-* update 适配 sa-token 替换新依赖 sa-token-spring-boot3-starter
-* update 适配 springboot-admin 改为最新 spring-security 写法
-* update 适配 springdoc 新版本配置方式
-* update 适配 ServletUtils 更换继承 JakartaServletUtil
-* update 适配 新序列化注解
-* update 优化 利用 resultMap 自动映射配置 简化 xml (非嵌套)
-* update 优化 调整 system entity 实体与 controller 包结构
-* update 优化 实体类中校验注解的提示信息
-* update 优化 使用 jdk17 语法优化代码
-* update 优化 所有 properties 文件改为注解启用
-* update 更新 docker 基础镜像 graalvm java17
-* update 优化 用户头像 改为存储 ossId 使用转换模块转为 url 展示
-* update 优化 重构 CellMergeStrategy 支持多级表头修复一些小问题 整理代码结构
-* update 优化 登录流程代码注释
-
-### 新增功能
-
-* add 新增 flatten-maven-plugin 插件统一版本号管理
-* add 新增 ip2region 实现离线IP地址定位库
-
-### 移除功能
-
-* remove 移除 BeanCopyUtils 工具类 与 JDK17 不兼容
-* remove 移除 devtools 依赖 并不好用(建议直接用idea自带的热更)
-* remove 移除 vue2 前端工程 统一使用 vue3 工程
-
-## v4.7.0 - 2023-05-08
-
-### 依赖升级
-
-* update springboot 2.7.9 => 2.7.11 修复 DoS 漏洞
-* update xxljob 2.3.1 => 2.4.0
-* update minio 升级至最新版 避免低版本信息泄漏问题
-* update hutool 5.8.15 => 5.8.18
-* update redisson 3.20.0 => 3.20.1
-
-### 功能更新
-
-* update 优化 更改 sys_oss_config 表注释 避免误解
-* update 项目正式入驻 dromara 开源社区 更改项目地址
-* update 全新 logo 全新背景图(设计师打造)
-* update 优化代码生成 同步操作使用批量处理
-* update 重写项目 readme 说明
-* update 修改controller中校验直接返回R.fail
-* update 更换默认用户头像
-* update 优化 限流注解 key 支持简单 spel 表达式
-* update 优化弹窗后导航栏偏移的问题
-* update 优化$tab.closePage后存在非首页页签时不应该跳转首页
-* update delete build style
-* update 优化选择图标组件
-* update 移除vue-multiselect样式
-* update 优化固定头部页签滚动条被隐藏的问题
-* update 按代码规范补全重写注解
-* update 优化 极端情况获取LoginUser可能为null问题
-* update 优化 更改系统所有服务日志配置文件命名为 logback-plus.xml 避免与其他框架默认配置冲突
-* update 优化 加解密模块 将null判断下推防止任何可能的null出现
-* update 优化 调整配置文件错误注释
-* update 优化 在线用户token获取方式
-* update 优化 用户更改角色 踢掉角色相关所有在线用户
-* update 优化 下拉图标选择组件优化:1.已选择图标高亮回显 2.滚动条采用el-scrollbar
-* update 优化 Vue的DictTag组件 当value没有匹配的值时 展示空value
-* update 优化 恢复翻页/切换路由滚动功能
-
-### 新增功能
-
-* add 新增 ip2region 实现离线IP地址定位库
-* add 增加 邮箱验证码发送接口
-* add 增加 邮箱登陆接口
-* add 增加 EncryptUtils 加解密安全工具类 可以处理base64,aes,sm4,sm2,rsa,md5,sha256加解密
-* add 增加 EncryptUtils 类中增加国密sm3的不可逆加密算法
-* add 新增 忽略数据权限写法 防止异常不执行关闭问题
-
-### 问题修复
-
-* fix 修复 代码生成 点选按钮不生效问题
-* fix 修复 用户密码更新无效问题
-* fix 修复 findInSet 在mysql下方法搜索非数字字段时 无引号报错问题
-* fix 修复 oracle postgres 数据库日志表索引创建错误
-* fix 角色列表关联多表sort值都一样 导致排序不稳定、临时表没有原来的主键顺序
-* fix 修复 DefaultExcelResult 单词拼写错误
-* fix 修复页面切换时布局错乱的问题
-* fix 修复tab栏“关闭其他”异常的问题
-* fix 修复 加解密拦截器 对象属性为null问题
-* fix 修复 取消oss预览状态修改 图标变化不正常问题
-* fix 修复 开启TopNav后一级菜单路由参数设置无效问题
-* fix 修复 路由跳转被阻止时vue-router内部产生报错信息问题
-* fix 修复 缓存列表:多次清除操作,提示不变的问题
-
-## v4.6.0 - 2023-03-13
-
-### 重大更新
-
-[重大更新] add 新增 基于 Mybatis 实现数据库字段加解密功能
-[重大更新] add 新增 通用翻译注解及实现(部门名、字典、oss、用户名)
-
-### 依赖升级
-
-* update springboot 2.7.7 => 2.7.9
-* update easyexcel 3.1.5 => 3.2.1
-* update redisson 3.19.1 => 3.20.0
-* update hutool 5.8.11 => 5.8.15 (13与14有问题勿使用)
-* update springdoc 1.6.14 => 1.6.15
-* update aws-java-sdk-s3 1.12.373 => 1.12.400
-* update element-ui 2.15.10 => 2.15.12
-* update lombok 1.18.24 => 1.18.26
-
-### 功能更新
-
-* update 优化 实体类中校验注解的提示信息
-* update 优化 修改 oss 配置页面开关说明 避免造成误解
-* update 优化 框架代码书写格式
-* update 优化 调整连接池默认参数
-* update 优化 `DictDataMapper` 注解标注过期 推荐使用 `@Translation` 注解
-* update 优化 部门更新接口 清理缓存
-* update 优化 获取菜单数据权限接口 删除无用角色属性与逻辑
-* update 优化 调整连接池最长生命周期 防止出现警告
-* update 优化 连接池增加 `keepaliveTime` 探活参数
-* update 优化 `DataPermissionHelper` 增加 `开启/关闭` 忽略数据权限功能
-* update 重构 `OssFactory` 加载方式 改为每次比对配置做实例更新
-* update 优化 `SaToken` 自定义扩展类 改为配置类注入 便于扩展
-* update 优化 启用 `sqlserver` 高版本语法 简化sql脚本语法
-* update 优化 更新角色后踢掉所有相关的登录用户 用户量过大会导致redis阻塞卡顿(应粉丝要求)
-* update 优化 翻译组件 支持返回值泛型 支持多种类型数据翻译(例如: 根据主键翻译成对象)
-* update 优化 限流注解使用 `SpringEl` 表达式动态定义 Key 与 message 国际化支持
-* update 优化 限流功能 `redis key` 生成规则 以 `功能头+url+ip+key` 格式
-* update 优化 只拦截系统内存在的路径 减少不必要的拦截造成的性能消耗
-* update 优化 `tagsView` 右选框,首页不应该存在关闭左侧选项
-* update 优化 `copyright 2023`
-* update 优化 监控页面图标显示
-* update 优化 日志注解支持排除指定的请求参数
-* update 优化 业务校验优化代码
-* update 优化 日志管理使用索引提升查询性能
-* update 优化 框架时间检索使用时间默认值 `00:00:00 - 23:59:59`
-* update 优化 oss 预览使用 `ImagePreview` 组件
-
-
-### 新增功能
-
-* add 新增 `BeanCopyUtils#mapToMap` 方法
-* add 新增 `StringUtils` `splitTo` 与 `splitList` 方法 优化业务代码
-* add 新增 `EasyExcel` `@ExcelEnumFormat` 枚举类数据翻译注解
-
-
-### 问题修复
-
-* fix 修复 新版本 `Redisson` 存在与 `springboot 2.X` 的兼容性问题
-* fix 修复 vue3 模板点击删除按钮后弹框显示`[object Object]`或控制台报错的问题
-* fix 修复 接口问题开关不生效问题
-* fix 修复 前端优化文件下载出现的异常
-* fix 修复 修改密码日志存储明文问题
-* fix 修复 用户密码注解误删暴露问题
-* fix 修复 代码生成 使用 `postgreSQL` 数据库查出已删除的字段
-
-
-## v4.5.0 - 2023-01-12
-
-### 重大更新
-
-* [重大更新] 使用 spring 事件发布机制 重构登录日志与操作日志 支持多事件监听无入侵扩展
-* 例如: 可以增加一个监听者将日志上传至ES等存储 对原有逻辑无影响
-
-### 依赖升级
-
-* update springboot 2.7.6 => 2.7.7
-* update springboot-admin 2.7.7 => 2.7.10
-* update mybatis-plus 3.5.2 => 3.5.3.1
-* update redisson 3.18.0 => 3.19.1
-* update sa-token 1.33.0 => 1.34.0
-* update easyexcel 3.1.3 => 3.1.5
-* update springdoc 1.6.13 => 1.6.14
-* update snakeyaml 1.32 => 1.33
-* update hutool 5.8.10 => 5.8.11
-* update aws-s3 1.12.349 => 1.12.373
-* update aliyun-sms 2.0.22 => 2.0.23
-* update tencent-sms 3.1.635 => 3.1.660
-* update echarts 4.9.0 => 5.4.0
-* update vue3 element-plus 2.2.21 => 2.2.27
-
-### 功能更新
-
-* update 优化 BaseMapperPlus 使用 MP V3.5.3 新工具类 Db 简化批处理操作实现
-* update 优化 将环境配置放到 pom 文件上方 便于查看使用
-* update 优化 代码生成与框架主体使用相同的主键生成器 全局统一避免问题
-* update 优化 系统登录 使用单表查询校验用户 避免多次 join 查询
-* update 优化 删除 vue3 模板无用参数
-* update 优化 xss 包装器 变量命名错误
-* update 优化 重构 ExcelUtil 全导出方法支持 OutputStream 流导出 不局限于 response
-* update 优化 maven 地址切换回 aliyun 仓库
-* update 优化 去除无用 guava 依赖管理 项目中已无此依赖
-* update 优化 springdoc 配置鉴权头写死问题 增加持久化鉴权头配置
-* update 优化 验证码结果使用 spel 引擎自动计算
-* update 优化 弹窗内容过多展示不全问题
-* update 优化 删除 fuse 无效选项 maxPatternLength
-* update 优化 minio 安装警告 使用新版本参数
-* update 优化 使用 spring 事件机制 重构 OssConfig 缓存更新
-* update 优化 抽取 SysLoginService recordLogininfor 记录登录信息方法 简化日志记录
-* update 优化 使用 spring 事件发布机制 重构登录日志与操作日志
-* update 优化 单元格合并判断 cellValue 是否相等方法调整
-* update 优化 去除 RedisConfig 无用继承
-
-### 新增功能
-
-* add 增加 GET 请求提交日期参数 默认格式化配置
-* add 增加 RedisUtils 检查缓存对象是否存在方法
-
-### 问题修复
-
-* fix 修复 根据 key 更新参数配置报null问题
-* fix 修复 树形下拉不能默认选中
-* fix 修复 读取 generator.yml 中文乱码问题
-* fix 修复 代码生成图片/文件/单选时选择必填无法校验问题
-* fix 修复 修改参数键名时 未移除过期缓存配置
-* fix 修复 用户注册 用户类型字段书写错误
-* fix 修复 文件名包含特殊字符(+、-、*...)的文件无法下载问题
-* fix 修复 短信校验模板参数传参错误
-* fix 修复 vue3 closeSidebar 这个方法定义的参数没有解构问题
-
-## v4.4.0 - 2022-11-28
-
-### 重大更新
-* [重大更新] 优化支持 oss 私有库功能(数据库字段改动) #cd9c3c3f
-* [重大更新] 连接池由 druid 修改为 hikari 更新相关配置(原因可看文档) #1f42bd3d
-* [重大更新] 移除 tlog(不支持UI界面 使用的人太少) 建议使用 skywalking
-* [重大更新] 增加 skywalking 集成 默认注释不开启(使用看文档)
-
-### 依赖升级
-* update springboot 2.7.5 => 2.7.6
-* update springboot-admin 2.7.6 => 2.7.7
-* update satoken 1.31.0 => 1.33.0
-* update spring-doc 1.6.12 => 1.6.13
-* update easyexcel 3.1.1 => 3.1.3
-* update hutool 5.8.8 => 5.8.10
-* update redisson 3.17.7 => 3.18.0
-* update lock4j 2.2.2 => 2.2.3
-* update s3-adk 1.12.324 => 1.12.349
-* update mysql-docker 8.0.29 => 8.0.31
-
-### 功能更新
-* update 优化 oss 云厂商增加 华为obs关键字
-* update 优化 冗余的三元表达式
-* update 优化 重置时取消部门选中
-* update 优化 新增返回警告消息提示
-* update 优化 hikari 参数顺序 最常用的放上面 删除无用 druid 监控页面
-* update 优化 p6spy 排除健康检查 sql 执行记录
-* update 优化 Dockerfile 创建目录命令
-* update 优化 将空‘catch’块形参重命名为‘ignored’
-* update 优化 使用本地缓存优化 excel 导出 数据量大字典转换慢问题
-* update 优化 字典转换实现 去除字符串查找拼接优化效率
-* update 优化 减小腾讯短信引入jar包的体积
-* update 消除Vue3控制台出现的警告信息
-* update 忽略不必要的属性数据返回
-* update 替换 mysql-jdbc 最新坐标
-
-### 新增功能
-* add 新增 junit5 单元测试案例 #6e8ef308
-* add 增加 sys_oss_config access_policy 桶权限类型字段
-* add 增加 4.3-4.4 更新 sql 文件
-* add 新增 字典数据映射注解 #da94e898
-* add 增加 RedisUtils 获取缓存Map的key列表
-
-### 问题修复
-* fix 修复 上传png透明图片 生成头像透明部分变成黑色
-* fix 修复 sqlserver sql文件 重复主键数据问题
-* fix 修复 sqlserver 特定情况下报 ssl 证书问题 默认关闭 ssl 认证
-* fix 修复 table中更多按钮切换主题色未生效修复问题
-* fix 修复 菜单激活无法修改其填充颜色 去除某些svg图标的fill="#bfbfbf"属性
-* fix 修复 使用缓冲流 导致上传异常问题
-* fix 修复 过滤器链使用IoUtil.read方法导致request流关闭
-* fix 修复 Log注解GET请求记录不到参数问题
-* fix 修复 某些特性的环境生成代码变乱码TXT文件问题
-* fix 修复 开启TopNav没有子菜单隐藏侧边栏
-* fix 修复 回显数据字典数组异常问题
-
-### 移除功能
-* remove 移除过期 Anonymous 注解与其实现代码
-* remove 移除 tlog(不支持UI界面 使用的人太少) 建议使用 skywalking
-
-## v4.3.1 - 2022-10-24
-
-### 依赖升级
-* update springboot 2.7.3 => 2.7.5
-* update springboot-admin 2.7.4 => 2.7.6
-* update sa-token 1.30.0 => 1.31.0
-* update springdoc 1.6.11 => 1.6.12
-* update poi 5.2.2 => 5.2.3
-* update hutool 5.8.6 => 5.8.8
-* update aws-s3 1.12.300 => 1.12.324
-* update aliyun-sms 2.0.18 => 2.0.22
-* update tencent-sms 3.1.591 => 3.1.611
-* update tlog 1.4.3 => 1.5.0 安全性升级
-* update snakeyaml 1.30 => 1.32 存在漏洞
-* update redisson 3.17.6 => 3.17.7
-* update nginx 1.21.6 => 1.22.1 存在漏洞
-* update element-ui 2.15.8 => 2.15.10
-* update core-js 3.19.1 => 3.25.3
-
-### 功能更新
-* update 修改 差异命名与镜像名同步
-* update 优化 通用下载方法新增config配置选项
-* update 优化 日志操作中重置按钮时重复查询的问题
-* update 优化 `@Anonymous` 注解标注过期 使用 `@SaIgnore` 替换
-* update 优化 前端可以配置多排序参数支持依次排序
-* update 优化 oss管理 支持时间排序
-* update 优化 替换 sa-token 过期配置
-* update 优化 sa-token 拦截器注册 `SaTokenConfig#addInterceptors` 排除拦截路径配置
-* update 优化 vue3说明文件 编码问题
-* update 优化 导入更新用户数据前校验数据权限
-* update 优化 `R` 类 `isError` 和 `isSuccess` 改为静态方法
-* update 优化 获取用户信息getInfo接口 使用缓存数据获取
-* update 优化 选择按钮宽度
-
-### 问题修复
-* fix 修复 用户导入存在则更新不生效
-* fix 修复 日志转换非json数据导致报错
-* fix 修复 控制台SQL日志打印时间格式化问题
-* fix 修复 不同网段因reset请求头导致下载导出跨域问题
-* fix 修复 在线用户设置永不过期 被过滤问题
-* fix 修复 在线用户设置永不过期 超时时间-1推送redis无效问题
-* fix 修复 snakeyaml 漏洞 强制升级依赖版本(临时处理等boot升级)
-* fix 修复 开启账号同端互斥登录 被顶掉后登出报null异常问题
-* fix 修复 Redisson 设置 `NameMapper` 导致队列功能异常问题
-* fix 修复 文件上传组件格式验证问题
-* fix 修复 内部调用缓存不生效问题
-* fix 修复 主题颜色在Drawer组件不会加载问题
-* fix 修复 小屏幕上修改头像界面布局错位的问题
-* fix 修复 内链域名特殊字符替换 合并错误导致问题
-* fix 修复 nginx 漏洞 https://www.oschina.net/news/214309
-
-## v4.3.0 - 2022-09-14
-
-### 重大更新
-* [重大更新] 整合 springdoc 基于 javadoc 实现无注解零入侵生成接口文档
-* [重大更新] 重写 spring-cache 实现 更人性化的操作 支持注解指定ttl等一些参数
-* [不兼容更新] 移除 swagger 所属所有功能 建议使用 springdoc
-* [重大更新] 移除maven docker插件 过于老旧功能缺陷大 使用idea自带的docker插件替代
-
-### 依赖升级
-* update springboot 2.6.9 => 2.7.3
-* update springboot-admin 2.7.2 => 2.7.4
-* update redisson 3.17.4 => 3.17.6
-* update hutool 5.8.3 => 5.8.6
-* update okhttp 4.9.1 => 4.10.0
-* update lock4j 2.2.1 => 2.2.2
-* update aws-java-sdk-s3 1.12.248 => 1.12.300 修复依赖安全漏洞
-* update aliyun.sms 2.0.9 => 2.0.18
-* update tencent.sms 3.1.537 => 3.1.591
-* update guava 30.0-jre => 31.1-jre
-* update springdoc 1.6.9 => 1.6.11
-* update druid 1.2.11 => 1.2.12
-* update dynamic-ds 3.5.1 => 3.5.2
-
-### 功能更新
-* update 优化 短信接口实现类 `@Override` 注解
-* update 优化 登出方法代码逻辑
-* update 优化 代码中的一些魔法值
-* update 优化 使用 StreamUtils 简化业务流操纵
-* update 修改 oss 客户端自定义域名 统一使用https开关控制协议头
-* update 更新 监控过时配置 WebSecurityConfigurerAdapter 改为 bean 注入
-* update 修改 生成错误注释
-* update 优化 docker 部署方式 使用 host 模式简化部署流程 降低使用成本
-* update 修改 验证码开关变量名
-* update 优化 DateColumn 支持单模板多key场景
-* update 优化 redission 处理增加前缀
-* update 优化 缓存监控 相关代码
-* update 优化 部署脚本 防止出现权限问题
-* update 优化 多个相同角色数据导致权限SQL重复问题
-* update 优化 字典数据使用store存取
-* update 优化 布局设置使用el-drawer抽屉显示
-* update 更新框架文档 专栏与视频 链接地址
-* update 优化 OSS文件上传 主动设置文件公共读 适配天翼云OSS
-* update 优化 表格上右侧工具条(搜索按钮显隐&右侧样式凸出)
-* update 优化 前后端多环境部署保持一致 删除无用环境文件
-* update 优化 错误登录锁定与新增解锁功能
-* update 优化 getLoginId 增加必要参数空校验
-* update 使用 SpringCache注解 优化参数管理、字典管理、在线用户等业务缓存
-* update 优化 多角色数据权限匹配规则
-* update 优化 页面内嵌iframe切换tab不刷新数据
-* update 优化 调整 oss表key 与 ossconfig的service 字段长度不匹配
-* update 优化 操作日志密码脱敏
-* update 重构 QueueUtils 抽取通用方法 统一使用 适配优先队列新用法
-
-### 新功能
-* add 增加 StreamUtils 流工具 简化 stream 流操纵
-* add 新增 缓存列表菜单功能
-* add 新增 获取oss对象元数据方法
-* add 增加 QueueUtils 操作普通队列的方法
-
-### 问题修复
-* fix 修复 mysql sys_notice 与 sys_config 表主键类型长度不够问题
-* fix 修复 获取 SensitiveService 空问题 增加空兼容
-* fix 修复 代码生成首字母大写问题
-* fix 修复 minio 上传自定义域名回显路径错误问题
-* fix 修复 短信功能返回实体 SysSms 序列化问题
-* fix 修复 sqlserver 更新sql错误提交
-* fix 修复 RedisUtils 并发 set ttl 错误问题
-* fix 修复 防止主键字段名与'row'或'ids'一致导致报错的问题
-* fix 修复 幂等组件 逻辑问题导致线程变量未清除
-* fix 修复 脱敏没有实现类导致返回数据异常问题
-* fix 修复 用户导出字典使用错误
-* fix 修复 用户登录与短信登录 国际化格式不一致
-* fix 修复 BaseMapperPlus 方法命令不一致问题
-* fix 修复 短信功能是否启用判断不生效BUG
-* fix 修复 xxljob prod 环境配置文件 数据库ip漏改
-* fix 修复 部署脚本 cp 命令缺少参数问题
-* fix 修复 菜单管理的一些操作问题
-* fix 修复 国际化文件提交为特殊编码问题
-* fix 修复 minio配置https遇到的问题
-* fix 修复 点击删除后点击取消控制台报错问题
-* fix 修复 文件/图片上传组件 第一次上传报错导致后续上传无限loading问题
-* fix 修复 postgresql 时间查询类型转换报错问题
-* fix 修复 部门与角色 状态导出字典使用错误
-* fix 修复 openapi结构体 因springdoc缓存导致多次拼接接口路径问题
-* fix 修复 没有权限的用户编辑部门缺少数据
-* fix 修复 oss配置删除内部数据id匹配类型问题
-* fix 修复 用户导入存在则更新不生效
-* fix 修复 日志转换非json数据导致报错
-
-## v4.2.0 - 2022-06-28
-### 重大更新
-* [重大更新] 增加 `ruoyi-sms` 短信模块 整合 阿里云、腾讯云 短信功能
-* [重大改动] 基于 `AWS S3` 协议重新实现 OSS模块 支持自定义域名
-* [安全性] 优化 nginx 限制外网访问内网 actuator 相关路径(建议升级)
-* [不兼容] 优化 文件与图片上传组件 使用id存储回显(升级的用户需要注意 上传组件返回值变成了 ossid 便于关联)
-* [不兼容] 升级 mybatis-plus 3.5.2 解决新版本兼容性问题 关键字冲突修改(新增了很多关键字 升级的需要注意 冲突的关键字建议换一个命名)
-
-### 依赖升级
-* update springboot-admin 2.6.6 => 2.6.9
-* update springboot-mybatis 2.2.0 => 2.2.2
-* update sa-token 1.29.0 => 1.30.0
-* update hutool 5.7.22 => 5.8.3
-* update druid 1.2.8 => 1.2.11
-* update tlog 1.3.6 => 1.4.3
-* update easyexcel 3.0.5 => 3.1.1 去除cglib 支持jdk17
-* update xxl-job 2.3.0 => 2.3.1
-* update redisson 3.17.0 => 3.17.4
-* update mybatis-plus 3.5.1 => 3.5.2
-* update poi 4.1.2 => 5.2.2 性能大幅提升
-* update docker mysql 8.0.27 => 8.0.29
-* update docker nginx 1.21.3 => 1.21.6
-* update docker redis 6.2.6 => 6.2.7
-* update docker minio 2021-10-27 => 2022-05-26
-
-### 功能更新
-* update 优化 redis 序列化 使用系统自带json工具 全局统一
-* update 优化 RedisUtils 重构过期方法
-* update 完善短信验证码发送接口
-* update 优化 弹窗点击遮罩层 默认不关闭 可在 main.js 修改
-* update 调整 CacheManager 使用系统 系统序列化器
-* update 调整 图片预览组件 去除无用根目录拼接
-* update 用户管理左侧树型组件增加选中高亮保持
-* update 优化 DataPermissionHelper 上下文存储 使用 SaToken 的请求存储器
-* update 优化 用户头像上传限制只能为图片格式
-* update 优化 redis 与 jackson 使用自动装配定制器简化配置
-* update 优化 getLoginUser 获取 使用一级缓存
-* update 增加 redis 无密码使用说明
-* update 手动配置 Undertow 缓冲池 消除运行警告
-* update 优化 表单构建按钮不显示正则校验
-* update 优化 oss 回显查询 使用 redis 缓存
-* update 优化 用户列表查询 剔除密码字段
-* update 优化 验证码 登录 登出 注册 等接口 使用匿名注解放行
-* update 修改 代码生成 controller 去除查询校验 由用户自行选择是否校验
-* update 优化 ExcelUtil 工具支持合并处理器
-* update 使用 SaStorage 优化 LoginHelper 一级缓存 避免 ThreadLocal 清理不干净问题
-* update 优化 新增用户与角色信息、用户与岗位信息逻辑
-* update 优化 代码生成 业务接口 增加事务回滚
-* update 优化 logback 删除无用配置
-
-### 新功能
-* add 增加 MailUtils 邮件工具
-* add 增加 RedisUtils 操作原子值方法
-* add 增加 demo 短信演示案例
-* add 增加 获取短信验证码接口
-* add 新增 SpringUtils 获取配置文件中的属性值方法
-* add 新增 Anonymous 匿名访问不鉴权注解
-* add 新增 easyexcel 单元格合并注解与处理器
-* add 增加 ExcelUtil 模板导出方法 支持 单列表/多列表
-* add 增加 Excel 模板导出 测试类
-
-### 问题修复
-* fix 修复 ExcelUtil 表达式解析 参数添反导致无法解析问题
-* fix 修复 全局线程池配置 核心线程与最大线程 参数填反问题
-* fix 修复 查询未分配用户角色列表 角色无绑定用户情况下 空列表问题
-* fix 修复 sqlserver 新增数据 id 错误
-* fix 修复 token 超时时间设置 -1 导致的单位转换问题
-* fix 修复 编辑 OssConfig 在 postgres 字段重复报错 补全 remark 字段
-* fix 修复 postgres 数据库 菜单部分字段类型无法转换问题
-* fix 修复 脱敏实现逻辑问题
-* fix 修复 登录未选部门报空问题
-* fix 修复 用户注销时记录注销日志异常问题
-* fix 修复 代码生成表字段类型不匹配 导致查询不准确问题
-
-## v4.1.0 - 2022-04-24
-### 重大更新
-* [重大更新] 增加应用适配 oracle
-* [重大更新] 增加应用适配 SQL Server
-* [重大更新] 增加应用适配 postgresql
-* [重大更新] 确保更好的适配 多数据库 主键策略统一改为 雪花ID
-
-### 依赖升级
-* update springboot 2.6.4 => 2.6.7 修复 CVE-2022-22965 漏洞
-* update springboot-admin 2.6.2 => 2.6.6
-* update hutool 5.7.21 => 5.7.22
-* update dynamic-datasource 3.5.0 => 3.5.1
-* update redisson 3.16.8 => 3.17.0
-* update qiniu 7.9.3 => 7.9.5
-* update qcloud 5.6.68 => 5.6.72
-* update minio 8.3.7 => 8.3.8
-* update okhttp 4.9.2 => 4.9.3
-
-### 功能更新
-* update 简化查询 部门、菜单、角色、用户、代码生成列表 功能
-* update 优化 部门修改子元素关系 使用批量更新
-* update 优化去除sql差异化 时间范围统一使用 between 处理
-* update 优化 RepeatSubmit 注解 支持业务处理失败 与 异常快速放行
-* update 优化 防重 与 限流 功能支持国际化消息返回
-* update 开启TopNav没有子菜单情况隐藏侧边栏
-* update 更新minio压缩配置
-* update 重命名 菜单字段 query -> query_param 解决系统关键字问题
-* update 使用 in 优化 or 提升索引命中率
-* update 优化 TreeEntity 树实体 去除未知泛型
-* update 优化菜单名称过长悬停显示标题
-* update 优化固定Header后顶部导航栏样式问题
-* update 优化 logback 日志 异步输出
-* update 全局异常处理器引入DuplicateKeyException主键冲突异常拦截
-* update topNav自定义隐藏侧边栏路由
-* update 更名 SaInterfaceImpl 为 SaPermissionImpl 完善相关注释
-* update 优化 sa-token 路由拦截器语法 增加注释 避免误操作
-* update 优化文件上传、图片上传组件 文件列表展示文件原名便于后续处理, 完善组件删除功能
-* update 优化登录失败相关部分代码结构
-* update 使用 spring cglib 替换 停止维护的 cglib
-* update 简化 全局线程池配置 使用cpu核心数自动处理
-* update 移除 重复提交 配置文件全局配置 使用注解默认值替代
-
-### 新功能
-* add 增加 4.0 升级 4.1 的 sql 脚本(升级需执行此sql)
-* add 增加 DataBaseHelper 数据库助手 用于屏蔽多类型数据库sql语句差异
-* add 增加 短信登录 与 小程序登录 示例
-* add 增加 Mybatis 全局异常处理 开启多数据源切换 严格模式 找不到数据源报错
-
-### 问题修复
-* fix 修复 数据权限 从 aop 切换到 拦截器 导致获取代理失败问题
-* fix 修复表单清除元素位置未垂直居中问题
-* fix 修复 poi 组件漏洞 与 mysql jdbc 漏洞
-* fix 修复单独访问 接口文档 请求 favicon.ico 报错问题
-* fix 修复 minio 上传, 因 socket 导致 available 获取数值不精确问题
-* fix 修复 cos_api bcprov-jdk15on 漏洞
-* fix 修复 guava 漏洞 统一依赖版本
-* fix 修复 tlog 依赖漏洞
-
-## v4.0.1 - 2022-03-01
-### 依赖升级
-* update springboot 2.6.3 => 2.6.4
-* update hutool 5.7.20 => 5.7.21
-* update qiniu 7.9.2 => 7.9.3
-* update minio 8.3.5 => 8.3.7
-
-### 功能更新
-* update 图片上传 文件上传 支持并发上传
-* update 组件ImageUpload支持多图同时选择上传
-* udpate 组件fileUpload支持多文件同时选择上传
-* update 优化 R 默认返回 msg
-* update 增加 用户注册 用户类型默认值
-* update 增加用户登出日志
-* update 更新 多用户多设备的注释说明
-* update 优化 是否为管理员的判断
-* update 优化 页面若未匹配到字典标签则返回原字典值
-* update 调整用户登录 将日志调整到最后 防止获取不到用户警告
-* update 优化随机数生成方式 避免容易生成两个相同随机数的问题
-
-### 问题修复
-* fix 修复代码生成 基于路径生成 路径为空问题
-* fix 恢复误删 `@Async` 注解线程池配置类
-* fix 修复 minio 适配 https 导致的问题
-* fix 修复分页组件请求两次问题
-
-## v4.0.0 - 2022-02-18
-### 重大更新
-* [重大更新] 重写项目整体结构 数据处理下沉至Mapper符合MVC规范 减少循环依赖
-* [重磅更新] 主分支与satoken分支合并 权限统一使用 sa-token
-* [重磅更新] 适配升级 SpringBoot 2.6
-* [重磅更新] EasyExcel大版本升级3.X
-* [重磅更新] 移除链式调用注解 因链式调用不符合java规范 导致很多问题
-* [重磅更新] 增加 轻量级 分布式队列 支持
-* [重磅更新] 增加 数据脱敏注解 使用序列化控制脱敏 支持多种表达式
-* [重磅更新] 重构 使用 Spring 简化 oss 模块代码
-* [重磅更新] 重构 调整返回类型为 R 精简 Controller 代码
-
-### 依赖升级
-* update springboot 2.5.8 => 2.6.3
-* update mybatis-plus 3.4.3.4 => 3.5.1
-* update maven-jar-plugin 3.2.0 => 3.2.2
-* update maven-war-plugin 3.2.0 => 3.2.2
-* update maven-compiler-plugin 3.1 => 3.9.0
-* update hutool 5.7.18 => 5.7.20
-* update springboot-admin 2.6.0 => 2.6.2
-* update redisson 3.16.7 => 3.16.8
-* update qiniu 7.9.0 => 7.9.2
-* update aliyun 3.13.1 => 3.14.0
-* update qcloud 5.6.58 => 5.6.68
-* update minio 8.3.4 => 8.3.5
-
-### 功能更新
-* update 用户管理部门查询选择节点后分页参数初始
-* update 防重复提交标识组合(key + url + header)
-* update 接口文档增加 basic 账号密码验证
-* update 用户修改减少一次角色列表关联查询
-* update 优化部门修改缩放后出现的错位问题
-* update 指定 maven 资源过滤为具体文件 防止错误过滤
-* update hutool 引入改为 bom 依赖项引入
-* update 降低开发环境 redis连接池数量
-* update 升级 springboot 2.6.X 解决 springfox 兼容性问题
-* update 优化多用户体系处理 更名 LoginUtils 为 LoginHelper 支持 LoginUser 多级缓存
-* update 优化加载字典缓存数据
-* update 数据库更改 对接多用户体系
-* update 移除掉 StringUtils 语义不明确的api方法 使用特定工具替换
-* update 优化登录、注册在接口通过`@Validated`注解进行数据基础校验
-* update 优化 查询登录用户数据 统一走缓存
-* update 优化 redisson 配置 去除掉不常用的配置 使用默认配置
-* update 用户访问控制时校验数据权限,防止越权
-* update 修改用户注册报未登录警告
-* update 调整oss预览开关 使用前端直接调用更改配置参数
-* update 使用 satoken 自带的 BCrypt 工具 替换 Security 加密工具 减少依赖
-* update 优化 TreeBuildUtils 工具 使用反射自动获取顶级父id
-* update 使用 hutool Dict 优化 JsonUtils 防止类型解析异常
-* update 优化代码生成 使用新 JsonUtils.parseMap 方法
-* update 更新 所有 oss 均支持 https 配置
-
-### 新功能
-* add 增加 RedisUtils 工具 hasKey 检查key存在方法
-* add 增加 监控中心 自定义事件通知
-* add 增加 3.X update 4.0 更新sql
-
-### 问题修复
-* fix 修复登录失效后多次请求提示多次弹窗问题
-* fix 修复 StringUtils 通配符匹配无效
-* fix 修复选项卡点击右键刷新丢失参数问题
-* fix 修复 数据权限 缓存方法名错误问题
-* fix 修复自定义组件`file-upload`无法显示第一个文件,列表显示的文件比实际文件少一个的问题
-* fix 修复因升级 sa-token 导致 doLogin 无法获取 token 问题
-* fix 修复分页组件请求两次问题
-
-### 移除功能
-* remove 移除过期代码 分页工具相关
-* remove 移除过期代码 多数据源切换
-* remove 移除过期代码 数据权限
-
-### 其他
-* 3.X 版本进入维护阶段 不进行更新 只修复bug 持续维护到2022年10月
-* 4.X 版本公测将近一个月 大部分bug已修复 官网主分支更改为 4.X 版本 推荐使用
-
-
-## v3.5.0 - 2021-12-28
-### 重大更新
-* [重大更新] 重写数据权限实现
-* [重磅更新] 重构分页 简化使用
-* [重磅更新] 用户登录 支持校验错误次数锁定登录
-* [重磅更新] 增加 jdbc 批处理参数 大幅提升批量操作性能 对原生语句与 MP 均有效
-
-### 依赖升级
-* update springboot 2.5.7 => 2.5.8 升级预防 log4j2 问题
-* update springboot-admin 2.5.4 => 2.5.5
-* update hutool 5.7.16 => 5.7.18
-* update redisson 3.16.4 => 3.16.7
-* update dynamic-ds 3.4.1 => 3.5.0
-* update qiniu 7.8.0 => 7.9.0
-* update minio 8.3.3 => 8.3.4
-* update tlog 1.3.4 => 1.3.6 启用 tlog 自动配置
-* update clipboard 2.0.6 => 2.0.8
-
-### 功能更新
-* update 多数据源切换标注过期 3.6.0 移除 推荐使用原生注解
-* update 通用权限服务 迁移回 ruoyi-framework 模块
-* update 使用 hutool-jwt 替换老旧 jjwt 依赖
-* update 调整 OSS 表字段内容长度
-* update LoginUser 增加角色缓存 优化角色权限代码
-* update 使用 Cglib 重构 BeanCopyUtils 性能优异
-* update 禁止所有工具类实例化 优化代码书写规范
-* update 优化查询用户的角色组、岗位组代码
-* update 更新 RedisUtils 返回客户端实例
-* update 修改 健康检查权限 改为用户放行 提高安全性
-* update hutool 工具 改为单包引入 减少无用依赖
-* update ServicePlusImpl 功能 下沉到 BaseMapperPlus
-* update 去除 jdk17 标签 由于很多组件还未适配 导致一些问题
-* udpate 代码生成预览支持复制内容
-* update 用户导入提示溢出则显示滚动条
-* update 路由支持单独配置菜单或角色权限
-* update 优化web拦截器 使用原生接口处理 默认非生产环境开启
-* update 调整监控依赖 从 common 迁移到 framework
-
-### 新功能
-* add 新增 Vue3 分支 与 代码生成模板(由于组件还未完善 仅供学习)
-* add 增加 RedisUtils 注册监听器方法
-* add 增加 自定义 Xss 校验注解 用户导入增加 Bean 校验
-* add oss下载增加 loading 层
-* add 新增图片预览组件
-* add 集成compression-webpack-plugin插件实现打包Gzip压缩
-* add 新增 SqlUtils 检查关键字方法
-
-### 问题修复
-* fix 修复 集群雪花id重复问题 使用网卡信息绑定生成
-* fix 修复 count 语法异常
-* fix 修复更改密码问题
-* fix 修复sql关键字处理 防止解析器报错
-* fix 修复 TreeBuildUtils 顶节点不为 0 问题
-* fix 修复 SysOssConfig 主键类型错误
-* fix 修复代码生成 导出注解错误
-* fix 修复 redisson 集群模式 路径未匹配协议头问题
-* fix 修复打包后字体图标偶现的乱码问题
-* fix 修复版本差异导致的懒加载报错问题
-* fix 修复代码生成字典组重复问题
-
-### 移除功能
-* remove 删除 jjwt 无用依赖
-* remove 移除过期 用户导入
-* remove 移除过期工具 DictUtils
-
-## v3.4.0 - 2021-11-29
-
-### 重磅更新
-* update [重磅更新] 重构 Excel 导入 支持 Validator 校验 支持自定义监听器
-* update [重磅更新] Validator 校验框架支持国际化
-
-### 依赖升级
-* update springboot 2.5.6 => 2.5.7
-* update hutool 5.7.15 => 5.7.16
-* update okhttp 4.9.1 => 4.9.2
-* update spring-boot-admin 2.5.2 => 2.5.4
-* update redisson 3.16.3 => 3.16.4
-* update tlog 1.3.3 => 1.3.4
-* update axios 0.21.0 => 0.24.0
-* update core-js 3.8.1 => 3.19.1
-* update js-cookie 2.2.1 => 3.0.1
-* update velocity 1.7 => 2.3
-* update 升级 docker 基础镜像
-
-### 功能更新
-* update 基于 hutool 封装树构建工具 重构部门与菜单树结构返回
-* update 减少使用特定数据库函数
-* update 配置应用前缀路径 改为配置文件统一配置
-* update 升级 swagger 配置 使用 knife4j 增强模式
-* update 监控中心 集成监控客户端 实现自监控
-* update 调度中心 集成监控客户端 注册到监控中心
-* update 优化 tab 对象简化页签操作
-* update 解耦 LoginUser 与 SysUser 强关联
-* update 更新 RepeatSubmit 注解 aop 处理 针对特殊参数进行过滤
-* update DictUtils 字典工具类 标记过期 3.5.0 版本移除 使用 DictService 代替
-* update 抽象 DictService 通用 字典服务
-* update 抽象 ConfigService 通用 参数配置服务
-* update 基于 DictService 重构 Excel 内字典查询功能
-* update OSS 模块 整体重命名 消除歧义
-* update 更新 redis.conf 存储策略 aof 与 rdb 配置参数
-* update 初始化数据转移到 ApplicationRunner 统一处理
-* update 优化时间查询语句
-
-### 新功能
-* add 增加 框架缓存懒加载 开关
-* add 新增 监控中心 Bean 初始化 startup trace 监控插件
-* add 增加 ValidatorUtils 校验框架工具 用于在非 Controller 的地方校验对象
-
-### 漏洞修复
-* fix 修复 SysOss、SysOssConfig 未继承 BaseEntity 基础实体问题
-* fix 修复 xxl-job-admin 部署问题
-* fix 修复 回显数据字典键值修正
-* fix 修复 Linux 清除临时目录 导致上传找不到目录报错问题
-* fix 修复通用实体 传参无法接收问题
-* fix 修复 SysLoginController 接口文档书写错误问题
-* fix 修复 用户逻辑删除 差异问题
-* fix 修复 OSS 七牛云 token 过期未刷新问题
-* fix 修复 分页工具 排序字段 null 处理
-* fix 修复 用户导入字典使用错误
-* fix 修复 关闭 xss 功能导致可重复读 RepeatableFilter 失效
-* fix 修复 使用 this.$options.data 报错问题
-* fix 修复 代码生成复选框字典遗漏问题
-* fix 修复 重复提交不生效问题 由于概念不同 使用 RedisUtils 重构
-* fix 修复 OSS 工厂 未实例化服务更新加载问题
-
-### 功能移除
-* remove 移除 quartz 相关代码与依赖
-* remove 移除 feign 相关代码与依赖
-* remove 移除 MybatisPlusRedisCache 二级缓存
-
-## v3.3.0 - 2021-10-29
-
-### 重磅更新
-* add [重磅更新] 增加分布式日志框架 TLog
-* add [重磅更新] 增加分布式任务调度系统 Xxl-Job
-* add [重大更新] 增加 ruoyi-job 任务调度模块(基于xxl-job)
-* update [重大更新]全业务 增加 接口文档注解 格式化代码
-
-### 依赖更新
-* update springboot 2.5.5 => 2.5.6
-* update springboot-admin 2.5.1 => 2.5.2
-* update element-ui 2.15.5 => 2.15.6
-* update hutool 5.7.13 => 5.7.15
-* update qcloud.cos 5.6.55 => 5.6.58
-* update minio 8.3.0 => 8.3.3
-
-### 功能更新
-* update 更新 element 2.15.6 表格样式
-* update 优化 代码生成常量 关于 BO VO 注释
-* update 优化代码生成 导入表 列表返回 主键默认选中
-* update MybatisPlusRedisCache 标记过期 推荐使用 spring-cache
-* update Quartz 标记过期 推荐迁移至新框架 xxl-job
-* update Feign 标记过期
-* update 前端增加默认国际化参数
-* update 更新 Admin 监控 注释 避免错误使用
-* update Admin 监控增加日志文件输出
-* update 优化 xxl-job-admin 增加格式化日志输出与 docker 镜像
-* update 更新 xxl-job 执行器开关功能
-* update 代码生成 改为生成抽象实体
-* update 代码生成 搜索框 更新文本域生成 用于模糊查询
-* update 通用数据注入改为适配通用实体类
-* update 使用路由懒加载提升页面响应速度
-* update 迁移所有脚本文件至 script 目录
-* update swagger 组顺序配置
-* update sql 文件更新 xxljob 控制台菜单
-* update 前端增加 任务调度中心页面与环境及 nginx 配置
-* update 合并 oss.sql 至主 sql
-* update 补全国际化文件(英文)
-* update 更新关于全局路径设置与文档链接
-* update 删除无用 setUsername 使用自动注入
-* update RedisUtils 更新删除 hash 数据方法
-
-### 漏洞修复
-* fix 修复 多数据源 aop 语法错误
-* fix 修复 子菜单无 query 参数问题
-* fix 修复 oss 配置删除时删除缓存 bug
-* fix 修复无权限获取请求头 download-filename 导致文件名为空问题
-
-## v3.2.0 - 2021-9-28
-
-### 重大更新
-* update [重大改动]接口文档 支持分组配置
-* update [重大改动]security 路径配置抽取到配置文件
-* update [重大改动] 将 framework 与 system 模块 解耦 调整依赖结构 解决依赖冲突
-* update [重大改动]重写 防重提交实现 使用分布式锁 解决并发问题 压测通过
-
-### 依赖更新
-* update springboot 2.5.4 => 2.5.5 bugfix版本
-* update mybatis-plus 3.4.3.3 => 3.4.3.4 bugfix版本
-* update redisson 3.16.2 => 3.16.3 bugfix版本
-* update easyexcel 2.2.10 => 2.2.11
-* update hutool 5.7.11 => 5.7.13
-* update file-saver 2.0.4 => 2.0.5
-* update dart-sass 1.32.0 => 1.32.13
-* update sass-loader 10.1.0 => 10.1.1
-
-### 功能更新
-* update 优化代码生成 根据MP生成特性 调整导入表结构默认值合理化
-* update 将所有 云存储字样 改为 对象存储 避免误解
-* update 更新 @Cacheable 错误用法 注意事项
-* update 优化 AddressUtils 空校验处理
-* update 菜单管理支持配置路由参数
-* update 优化aop语法 使用spring自动注入注解
-* update 使用 Redisson 限流工具 重写限流实现
-* update 使用 vue-data-dict 简化数据字典使用
-* update 增加日志注解新增是否保存响应参数开关
-* update 用户未登录日志改为 warn 级别
-* update OSS模块 关于下载403报错信息优化
-* update 更新 Actuator prod 默认暴漏端点 增加暴漏 logfile 日志端点
-* update 默认适配jdk11 测试 jdk17 无异常
-* update 封装通用下载方法简化下载使用
-
-### 新功能
-* add 新增通用方法简化模态/缓存使用
-* add 增加 限流演示案例
-* add 增加 redis redisson 集群配置
-
-### 漏洞修复
-* fix Cron表达式生成器关闭时销毁,避免再次打开时存在上一次修改的数据
-* fix 全局限流key会多出一个"-" 将其移动到IP后面 去除多余的空格
-* fix 修复多主键代码生成bug
-* fix 修复 @Cacheable 与 @DataScope 冲突问题
-* fix 修复代码生成页面数据编辑保存之后总是跳转第一页的问题
-
-### 功能移除
-* remove 移除过期工具 RedisCache
-* remove 移除无用配置类 ServerConfig
-* remove 移除 SysUser 无用字段 salt
-
-## v3.1.0 - 2021-9-7
-
-### 重大更新
-* add [重大改动] 过期 RedisCache 新增 RedisUtils 工具类 新增 发布订阅功能 更灵巧便于使用
-* add [重大改动] 新增 saveOrUpdateAll 方法 可完美替代 saveOrUpdateBatch 高性能
-* update [重大改动] 重写 InsertAll 方法实现 可完美替代 saveBatch 秒级插入上万数据
-* update [重大改动] 更改OSS上传通用路径生成 按照年月日分三级目录
-* update [重大改动] MP字段验证策略更改为 NOT_NULL 个别特殊字段使用注解单独处理
-* update [重大改动] 所有业务适配 RedisUtils 新工具
-
-### 依赖升级
-* update springboot 2.5.3 => 2.5.4
-* update spring-boot-admin 2.5.0 => 2.5.1
-* update mybatis-plus 3.4.3 => 3.4.3.3 适配升级 (包含不兼容升级)
-* update aliyun.oss 3.13.0 => 3.13.1
-* update qcloud.cos 5.6.47 => 5.6.51
-* update hutool 5.7.9 => 5.7.11
-* update maven-jar-plugin 3.1.1 => 3.2.0
-* update feign-okhttp 11.2 => 11.6
-* update redisson 3.16.1 => 3.16.2
-
-### 新功能
-* add 优化 docker 增加 redis 配置文件
-* add 新增暗色菜单风格主题
-* add 菜单&部门新增展开/折叠功能
-* add 页签右键按钮添加图标 页签新增关闭左侧
-
-### 功能更新
-* update 优化 OSS 模块与上传组件 异常处理
-* update 更新 jackson 配置 支持 LocalDateTime 全局格式化
-* update 优化 使用权限工具 获取用户信息
-* update 自定义可拖动弹窗宽度指令
-* update 重构 将下载excel工具提取到全局
-* update 定时任务对检查异常进行事务回滚
-* update 优化spy配置文件为 UTF8编码 解决中文注释乱码问题
-* update 修改时检查用户数据权限范围
-* update 解决 logout 写死 无法扩展路径问题
-* update 优化代码生成 导入与同步 批处理效率
-* update 修改时检查用户数据权限范围
-* update 修改代码生成字典回显样式
-* update 修改数据字典回显
-* update 优化验证码配置 使用泛型 防止错误输入
-* update 优化全局线程池配置 使用泛型 防止错误输入
-* update 使用 MP 全局配置分页溢出
-* update 代码生成器 导入表时查询 新创建表的优先排序在前面
-* update 定时任务支持在线生成cron表达式
-* update 自定义弹层溢出滚动样式
-* update 优化分页工具排序处理
-* update 优化 oss配置 使用发布订阅工具 刷新配置
-* update 代码生成 查询数据库列表 按照时间倒序
-* update 使用MP自行判断数据库类型
-
-### 漏洞修复
-* fix 修复保存配置主题颜色失效问题
-* fix 修复 导出雪花id excel失真问题
-* fix 修复 druid 监控 集群模式下 无法路由到同一台服务器问题
-* fix 解决搜索校验不通过问题
-* fix 修复定时器工具编写错误问题
-* fix 修复 minio 无 perfix 问题
-* fix 修复 富文本图片路径错误问题
-* fix 修复 OSS配置清空被过滤问题
-* fix 修复 excel 导入与 class 未对应问题
-* fix 修复字典组件值为整形不显示问题
-
-## v3.0.0 - 2021-8-18
-
-### 重大更新
-* add [重大更新]重写 OSS 模块相关实现 支持动态配置(页面配置)
-* add [重大更新]增加 jackson 超出 JS 最大数值自动转字符串(雪花id序列化)处理
-* add [重大更新]重写 防重提交拦截器 支持全局与注解自定义 拦截时间配置配置 优化逻辑
-* add [重大更新]新增是否开启用户注册功能
-* add [重大更新]增加 easyexcel 工具类
-* add [重大更新]集成 性能分析插件 p6spy 更强劲的 SQL 分析
-* add [重大更新]增加 完整国际化解决方案
-* add [重大更新]支持自定义注解实现接口限流
-
-### 依赖升级
-* update feign-okhttp 11.0 => 11.2
-* update okhttp 3.19.4 => 4.9.1
-* update minio 8.2.0 => 8.3.0
-* update hutool 5.7.6 => 5.7.7
-* update element-ui 2.15.2 => 2.15.5
-* update springboot admin 2.4.3 => 2.5.0 (新增 Quartz 专属监控页)
-
-### 新功能
-* add 增加 admin 监控客户端开关
-* add 增加 国际化演示demo
-
-### 依赖更新
-* update 更新软件架构图
-* update 优化XSS跨站脚本过滤
-* update 优化BLOB下载时清除URL对象引用
-* update 更新 防重提交拦截器 demo演示案例
-* update 日常字符串校验 统一重构到 StringUtils 便于维护扩展
-* update 修改 自动注入器 用户未登录异常拦截抛出警告 返回Null
-* update 重构 统一使用 流工具下载
-* update 重写 所有业务导出 适配easyexcel工具
-* update 移动文件存储业务到 system 模块
-* update 代码生成模板 适配新excel导出
-* update 将 Actuator 配置 移动到全局配置
-* update 统一镜像时区配置 移除主机时间映射
-* update 更改多数据源框架更清晰的依赖名
-* update 更新 阿里云 maven源 新地址
-* update 补全基础实体 文档注解
-* update 代码生成文档注解 增加必填判断配置
-* update 注入器 insert 增加 update 字段处理
-* update 默认首页使用keep-alive缓存
-
-### 漏洞修复
-* fix 生产minio回显问题
-* fix 修复角色分配用户页面接收参数与传递参数类型不一致导致的错误
-* fix 修复代码生成 删除按钮报错 loading 不取消问题
-* fix 解决登录后浏览器后台Breadcrumb组件报错
-* fix 修复DictUtils方法报错
-* fix 头像上传 未走OSS存储问题
-* fix oss列表 jpeg 不回显问题
-* fix 修复操作日志根据状态查询异常问题
-
-### 功能移除
-* remove 移除原生excel工具
-* remove 移除通用上传下载接口与配置
-
-## v2.6.0 - 2021-7-28
-
-### 重大更新
-* add [重大新增] 增加 OSS 对象存储模块
-* remove [重大改动] 删除 自带通用上传 接口 使用OSS模块替换
-* update [重大改动] 重写VO转换 支持深拷贝 将VO类抽象到 ServicePlus 泛型处理
-* update [重大改动] 多BO合并 使用分组校验 生成BO代码
-* update [重大改动] 重构 IServicePlus 功能 增加 BeanCopyUtils 深拷贝工具
-
-### 依赖升级
-* update springboot 2.4.9 => 2.5.3
-* update hutool 5.7.4 => 5.7.6
-* update minio 8.2.2 => 8.3.0
-* update docker plugin 1.2.0 => 1.2.2
-* update redisson 3.16.0 => 3.16.1
-* update datasource 3.4.0 => 3.4.1
-* update element-ui 2.15.2 => 2.15.3
-
-### 新功能
-* add 演示Demo增加自定义分页接口案例
-* add 角色&菜单新增字段属性提示信息
-
-### 功能更新
-* update 更新druid配置 独立配置更明显
-* update 顶部菜单排除隐藏的默认路由
-* update 富文本新增上传文件大小限制
-* update 导入用户样式调整
-* update 顶部菜单样式调整
-* update 密码框新增显示切换密码图标
-* update 内链设置meta信息
-* update 跳转路由高亮相对应的菜单栏
-
-### 漏洞修复
-* fix 修复多数据源druid全局配置缩进错误 引起无效配置问题
-* fix 修复定时任务日志执行状态显示
-* fix 修复 授权角色空数据问题
-* fix 修复 DictData 删除逻辑问题
-* fix 修复任意账户越权漏洞
-
-## v2.5.2 - 2021-7-19
-
-### 功能更新
-* update 优化代码生成器注释格式
-
-### 漏洞修复
-* fix 回滚代码生成 批处理优化
-* fix 代码生成 queryType 重复勾选数据库无默认值问题
-* fix 修复接口单参数校验无效问题
-* fix 代码生成 queryType >= <= 标识符错误问题
-* fix 修复代码生成字典问题
-* fix 修复 thread-pool: enabled 配置不生效问题
-
-### 功能移除
-* remove 删除无用文档与脚本
-
-## v2.5.1 - 2021-7-13
-* update 验证码开关 转移到表 参数管理 内
-* update 使用hutool重构 判断是否url
-
-### 漏洞修复
-
-### 功能更新
-* fix 修复 docker业务集群部署与文件上传的问题
-* fix 修复代码生成同步表结构id冲突问题
-* fix 修复代码生成选择字典 无法取消问题
-* fix 修复代码生成字典为null问题
-* fix 图片上传 多图时无法删除相应图片修复
-
-### 功能移除
-* remove 删除富文本video事件
-
-## v2.5.0 - 2021-7-12
-
-### 依赖升级
-* update springboot 2.4.7 => 2.4.8
-* update knife4j 3.0.2 => 3.0.3
-* update hutool 5.7.2 => 5.7.4
-* update spring-boot-admin 2.4.1 => 2.4.3
-* update redisson 3.15.2 => 3.16.0
-
-### 新功能
-* add 增加 docker 编排 与 shell 脚本
-* add 增加 feign 熔断 自定义结构体解析方法 与 demo 注释
-* add 用户管理新增分配角色功能
-* add 角色管理新增分配用户功能
-* add 增加spring-cache演示案例
-
-### 功能更新
-* update 独立 springboot-admin 监控到扩展模块项目
-* update springboot-admin 监控 增加用户登录权限管理
-* update 优化代码生成器 批量导入
-* update 优化 增加MP注入异常拦截
-* update 关闭默认二级缓存 推荐使用 spring-cache 注解手动缓存
-* update FileUpload ImageUpload组件 支持多图片上传
-* update 优化中英文语言配置
-* update 规范maven写法
-
-### 漏洞修复
-* fix redis获取map属性bug修复。
-* fix 修复 按钮loading 后端500卡死问题
-* fix 相对路径下载问题
-* fix 修复 hutool 工具返回结果不一致问题
-
-## v2.4.0 - 2021-6-24
-
-### 依赖升级
-* update springboot 2.3.11 => 2.4.7
-* update springboot-admin 2.3.1 => 2.4.1
-* update feign 2.2.6 => 3.0.3
-* update hutool 5.6.7 => 5.7.2
-
-### 功能更新
-* update 多数据源替换成dynamic-datasource
-* update 适配 jdk11
-* update 集成 Lock4j 分布式锁
-* update 移除 fastjson 增加 jackson 工具类 重写相关业务
-* update 优化 异步工厂重写 使用 spring 异步处理
-* update 全局挂载字典标签组件
-* update 日志列表支持排序操作
-* update 更新 feign demo 更清晰的用法
-* update 更新多数据源演示案例
-
-### 新功能
-* add 增加 ServicePlusImpl 自动以实现类 重写移除事务注解方法 防止多数据源失效
-* add 增加 自定义 批量insert方法
-* add 增加 Swagger3 用法示例
-
-### 漏洞修复
-* fix 修复地址ip地址特殊回环问题
-
-## v2.3.2 - 2021-6-11
-
-### 新功能
-* add redis锁工具类编写
-
-### 功能更新
-* update spring-cache 整合 redisson
-* update MybatisPlus整合Redis二级缓存
-* update swagger 升级为 3.0.0 使用 OAS_30 协议
-* update 优化 代码生成器 增加表单防重注解
-* update 优化 锁切面代码 key到常量类
-
-### 漏洞修复
-* fix 修复相对路径上传异常问题
-
-## v2.3.1 - 2021-6-4
-
-### 新功能
-* add 增加 redisson 分布式锁 注解与demo案例
-* add 增加 Oracle 分支
-
-### 功能更新
-* update 优化 redis 空密码兼容性
-* update 优化前端代码生成按钮增加 loading
-
-### 漏洞修复
-* fix 修复 redisson 不能批量删除的bug
-* fix 修复表单构建选择下拉选择控制台报错问题
-* fix 修复 vo 代码生成 主键列表显示 重复生成bug
-* fix 修复上传路径 win 打包编译为 win 路径, linux 报错bug
-
-## v2.3.0 - 2021-6-1
-
-### 新功能
-* add 升级 luttuce 为 redisson 性能更强 工具更全
-* add 增加测试数据sql文件
-* add 增加demo模块 单表演示案例(包含数据权限)
-
-### 功能更新
-* update 完美修复 数据权限功能(支持单表多表过滤)
-* update 优化代码生成模板
-* update 优化 system 模块 批量操作性能
-
-## v2.2.1 - 2021-5-29
-
-### 新功能
-* add 增加 security 权限框架 `@Async` 异步注解配置
-
-### 功能更新
-* update 优化dataScope参数防止注入
-* update 优化参数&字典缓存操作
-* update 增加修改包名文档
-* update 文档增加演示图例
-
-### 漏洞修复
-* fix 修复部门类sql符号错误
-
-## v2.2.0 - 2021-5-25
-
-* 同步升级 RuoYi-Vue 3.5.0
-
-### 新功能
-* add 增加验证码开关
-* add 新增IE浏览器版本过低提示页面
-
-### 功能更新
-* update 升级druid到最新版本v1.2.6
-* update 升级fastjson到最新版1.2.76
-* update 修改bo加入判断是否设置必填再加载必填注解
-* update 生成vue模板导出按钮点击后添加遮罩
-* update Redis设置HashKey序列化
-* update 优化Redis序列化配置
-
-### 漏洞修复
-* fix 修复代码生成器中表字段取消必填无法更新问题
-
-## v2.1.2 - 2021-5-21
-
-### 功能更新
-* update springboot 升级 2.3.11
-* update mybatis-plus 升级 3.4.3 分页Plus对象适配更新
-* update 验证码生成更新为无符号整数计算
-* update 请求响应对象 与 分页对象 结构修改 适配接口文档配置
-* update swagger增加请求前缀
-
-## v2.1.1 - 2021-5-19
-
-### 功能更新
-* update 配置统一提取为 properties 配置类
-* update 分页工具 删除过期方法
-* update admin 实时监控日志 改为保留一天
-
-### 漏洞修复
-* fix 修复swagger开关无法控制关闭问题
-* fix maven install 异常
-
-## v2.1.0 - 2021-5-17
-
-### 功能更新
-* update knife4j升级3.0.2
-* update 增强分页工具兼容性
-* update 通用Service接口 增加自定义vo转换函数
-
-### 移除功能
-* remove 移除ruoyi自带服务监控(Admin已全部包含)
-
-## v2.0.0 - 2021-5-15
-
-### 依赖升级
-* springboot 升级 2.3.10 依赖全面升级适配
-
-### 新功能
-* add 增加分页工具
-* add 增加 增强Mapper 与 增强Service 重写业务适配
-* add 代码生成器 增加校验注解
-
-### 功能更新
-* update 代码生成器修改为MP分页
-* update 使用 MP 分页工具 重构业务
-* update 重写文档介绍
-
-### 移除功能
-* remove 移除 pagehelper 分页工具
-
-### 漏洞修复
-* fix 修复代码生成 数据权限问题
-
-## v1.0.2 - 2021-5-13
-
-### 功能更新
-* update 更新整合打包文档 重新排版
-
-### 漏洞修复
-* fix vue与boot整合打包与admin页面路由冲突
-
-## v1.0.1 - 2021-5-11
-
-### 依赖更新
-* update 更新banner
-* update 配置转移到 yml 文件 统一管理
-* update 上传媒体类型添加视频格式
-* update 树级结构更新子节点使用replaceFirst
-* update 删除操作日志记录日志
-
-### 漏洞修复
-* fix 修正导入表权限标识
-* fix 文件上传时报错
-
-## v1.0.0 - 2021-5-10
-* 基于 ruoyi-vue 3.4.0 发布 v1.0.0 稳定版
\ No newline at end of file
diff --git a/ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/framework/architecture_diagram.md b/ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/framework/architecture_diagram.md
deleted file mode 100644
index ef65fef3..00000000
--- a/ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/framework/architecture_diagram.md
+++ /dev/null
@@ -1,3 +0,0 @@
-# 软件架构图
-- - -
-
\ No newline at end of file
diff --git a/ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/framework/association/doc.md b/ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/framework/association/doc.md
deleted file mode 100644
index 06e62dc5..00000000
--- a/ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/framework/association/doc.md
+++ /dev/null
@@ -1,89 +0,0 @@
-# 接口文档
-- - -
-## 版本 >= `4.3.0`
-## 说明
-
-由于 `springfox` 与 `knife4j` 均停止维护 bug众多
-故从 `4.3.0` 开始 迁移到 `springdoc` 框架
-基于 `javadoc` 无注解零入侵生成规范的 `openapi` 结构体
-由于框架自带文档UI功能单一扩展性差 故移除自带UI 建议使用外置文档工具
-
-## 文档工具使用
-由于框架采用 `openapi` 行业规范 故市面上大部分的框架均支持 可自行选择
-例如: `apifox` `apipost` `postman` `torna` `knife4j` 等 根据对应工具的文档接入即可
-
-## Swagger升级SpringDoc指南
-
-常见功能如下 其他功能自行挖掘
-**注意: `javadoc` 只能替换基础功能 特殊功能还需要使用注解实现**
-
-| swagger | springdoc | javadoc |
-|----------------------------------|---------------------------------|--------------------|
-| @Api(name = "xxx") | @Tag(name = "xxx") | java类注释第一行 |
-| @Api(description= "xxx") | @Tag(description= "xxx") | java类注释 |
-| @ApiOperation | @Operation | java方法注释 |
-| @ApiIgnore | @Hidden | 无 |
-| @ApiParam | @Parameter | java方法@param参数注释 |
-| @ApiImplicitParam | @Parameter | java方法@param参数注释 |
-| @ApiImplicitParams | @Parameters | 多个@param参数注释 |
-| @ApiModel | @Schema | java实体类注释 |
-| @ApiModelProperty | @Schema | java属性注释 |
-| @ApiModelProperty(hidden = true) | @Schema(accessMode = READ_ONLY) | 无 |
-| @ApiResponse | @ApiResponse | java方法@return返回值注释 |
-
-# 建议使用 `Apifox`(常见问题有其他对接方式)
-
-官网连接: [https://www.apifox.cn/](https://www.apifox.cn/)
-视频教程: [springdoc与apifox配合使用](https://www.bilibili.com/video/BV1mr4y1j75M?p=8&vd_source=8f52c77be3233dbdd1c5e332d4d45bfb)
-
-
-
-支持 文档编写 接口调试 Mock 接口压测 自动化测试 等一系列功能
-
-### 接入框架
-
-> 1.下载或使用web在线版 创建一个自己的项目
-
-
-
-> 2.进入项目 选择项目设置 找到自动同步
-
-
-
-> 3.根据项目内所有文档组完成所有数据源创建(拉取后端`openapi`结构体)
-数据源URL格式 `http://后端ip:端口/v3/api-docs/组名`
-项目内所需:
-`http://localhost:8080/v3/api-docs/1.演示模块`
-`http://localhost:8080/v3/api-docs/2.通用模块`
-`http://localhost:8080/v3/api-docs/3.系统模块`
-`http://localhost:8080/v3/api-docs/4.代码生成模块`
-也可不分组统一导入: `http://localhost:8080/v3/api-docs`
-
-
-
-
-
-> 4.选择 接口管理 项目概览 点击立即导入 并等待导入完成
-后续会根据策略每3个小时自动导入一次
-每次重新进入apifox也会自动同步一次
-后端有改动也可以手动点击导入
-
-
-
-> 5.(注意版本号)设置鉴权 选择接口管理 项目概览 找到Auth 按照如下配置
-
-**版本号: >= 5.X**
-
-
-
-**版本号: 4.X**
-
-
-
-> key对应项目配置 默认为 `Authorization`
-
-
-
-
-
-
diff --git a/ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/framework/association/i18n.md b/ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/framework/association/i18n.md
deleted file mode 100644
index 4052979a..00000000
--- a/ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/framework/association/i18n.md
+++ /dev/null
@@ -1,33 +0,0 @@
-# 国际化方案
-- - -
-* 前端国际化参考 [ruoyi前端国际化文档](http://doc.ruoyi.vip/ruoyi-vue/document/htsc.html#前端国际化流程)
-* 后端国际化(2.7.0 以上增加)
-* 3.4.0 以上支持 `Validator` 校验框架
-* 参考 `demo` 模块 `TestI18nController` 国际化演示案例
- 在 `Header` 请求头 增加上下文语言参数 `content-language` 参数需与国际化配置文件后缀对应
- 如 `zh_CN` `en_US` 等
-
-
-
-## 获取 `code` 对应国际化内容
-
-
-
-
-
-## 使用 `Validator` 框架校验 `controller` 参数返回国际化
-
-`controller` 校验接口参数 需要在类增加 `@Validated` 注解
-
-参数对应校验注解 使用 `{code}` 形式标注使用国际化处理
-
-
-
-
-## 使用 `Validator` 框架校验 `Bean` 返回国际化
-
-`Bean` 校验需要在接口校验 `Bean` 参数使用 `@Validated` 注解
-
-`Bean` 内属性校验注解 使用 `{code}` 形式标注使用国际化处理
-
-
\ No newline at end of file
diff --git a/ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/framework/association/new_module.md b/ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/framework/association/new_module.md
deleted file mode 100644
index 87b992aa..00000000
--- a/ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/framework/association/new_module.md
+++ /dev/null
@@ -1,15 +0,0 @@
-# 关于如何创建新模块
-- - -
-* 参考ruoyi-demo模块
-* 需要改动: 父pom 与 admin模块pom
-
-
-
-
-
-### 注意事项
-如果是两个不同包名的模块 需要修改如下配置
-
-
-
-
diff --git a/ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/framework/association/update_package_name.md b/ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/framework/association/update_package_name.md
deleted file mode 100644
index 2dcab848..00000000
--- a/ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/framework/association/update_package_name.md
+++ /dev/null
@@ -1,33 +0,0 @@
-# 关于修改包名
-- - -
-
-**注意: 老包名为 com.ruoyi**
-
-## 1.随便找个地方新建 org.dromara 包
-
-
-## 2.在包上右键选择 refactor -> rename 选择 All Directories
-
-
-
-**因为dromara组织下有很多依赖导致idea无法识别完整包名**
-
-
-
-**需要先将dromara修改为 例如: ruoyi 然后重复上述步骤 这样就可以整包修改了**
-
-
-
-## 3.使用IDEA全局替换 org.dromara 替换为 com.xxx
-
-
-
-**注意: 由于dromara组织下项目很多 非本框架的依赖模块 请勿修改 例如上图中的 org.dromara.sms4j**
-
-## 4.如有需要 将所有模块名逐一修改即可
-
-## 5.修改完成后需查看所有common包下模块spi文件是否修改正确
-
-**老版本idea或者未按照教程修改包名可能导致文件丢包问题**
-
-
diff --git a/ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/framework/association/update_url.md b/ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/framework/association/update_url.md
deleted file mode 100644
index 0f5f106b..00000000
--- a/ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/framework/association/update_url.md
+++ /dev/null
@@ -1,26 +0,0 @@
-# 修改应用路径
-- - -
-## 修改后端路径
-
-更改 `application.yml` 的 `server.servlet.context-path` 即可更改后端容器路径
-
-
-
-与之对应前端 `dev`环境 需更改 `vite.config.ts` 的代理路径
-
-
-
-`prod` 生产环境需修改 `nginx.conf` 后端代理路径
-
-
-
-## 修改前端路径
-### 注意: 3.4.0 提供便捷更改方式
-直接修改对应环境的 `.env.环境` 文件内的 `VITE_APP_CONTEXT_PATH` 应用访问路径即可
-
-
-
-
-生产环境 `nginx.conf` 与之对应修改即可
-**注意: 文件真实目录为 `/usr/share/nginx/html/admin/index.html` 此功能一般为多项目部署需要 故会增加一层目录 如不需要可以自行修改**
-
diff --git a/ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/framework/basic/client.md b/ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/framework/basic/client.md
deleted file mode 100644
index bec103d8..00000000
--- a/ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/framework/basic/client.md
+++ /dev/null
@@ -1,85 +0,0 @@
-# 客户端管理功能
-- - -
-## 版本 >= 5.X
-
-## 客户端管理页面
-
-
-
-### 客户端管理字段说明
-| 字段名称 | 取值说明 | 注意事项 |
-|----------------|----------------------------|--------------------------------|
-| 客户端id | 由后端生成,用于前端登录校验以及接口数据加密 | 无法修改,不要删除默认数据,否则会报错 |
-| 客户端key | 前端自定义 | 无法修改,不要删除默认数据,否则会报错 |
-| 客户端秘钥 | 前端自定义 | 无法修改,不要删除默认数据,否则会报错 |
-| 授权类型 | 密码认证、短信认证、邮件认证、小程序认证、第三方认证 | 根据授权类型判断当前客户端是否支持该登录方式 |
-| 设备类型 | PC端、APP端 | |
-| Token活跃超时时间 | 自定义 | 指定时间无操作则过期(单位:秒),默认30分钟(1800秒) |
-| Token固定超时时间 | 自定义 | 指定时间必定过期(单位:秒),默认七天(604800秒) |
-
-### 前后端使用新的客户端id
-
-步骤如下:
-1. 前端管理页面生成新的客户端id。
-2. 将新的客户端id复制到前端配置文件。
-
-
-
-## 新增自定义客户端
-
-### 步骤一:新增客户端数据(例如增加小程序端)
-
-
-
-
-
-### 步骤二:配置前端请求头信息
-
-需要在全局请求头 header 中增加 cientid
-确保客户端所有请求都携带此id 可参考项目 `request.ts`
-
-
-
-`VITE_APP_CLIENT_ID` 即配置文件中的客户端id。
-
-**重点:不同客户端登录获取到的token不同与其他端不互通(例如: app登录获取到的token无法用于pc端接口查询)**
-
-## 新增自定义登录方式授权类型
-
-**重点说明: 不要单独增加登录接口 系统全局统一只有一个登录接口 只需增加不同的鉴权方式即可**
-
-如何调试使用登录看这里 -> [关于登录调试步骤](/questions/login_step.md)
-
-### 步骤一:新增字典数据
-
-
-
-
-
-### 步骤二:新增/修改客户端数据
-
-### 步骤三:后端新增认证策略
-
-新增策略实现类实现 `IAuthStrategy` 接口。
-
-
-
-参照已有策略实现类实现自定义参数校验登录方法逻辑。
-
-
-
-**注意修改 `@Service` 名称保证规范性**
-
-
-
-`LoginBody` 校验参数(可自定义)
-
-
-
-例如 扩展小程序登录参数 只需要继承 `LoginBody
-
-`
-
-校验分组(可自定义)
-
-
\ No newline at end of file
diff --git a/ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/framework/basic/code_generate.md b/ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/framework/basic/code_generate.md
deleted file mode 100644
index e20e09ac..00000000
--- a/ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/framework/basic/code_generate.md
+++ /dev/null
@@ -1,85 +0,0 @@
-# 代码生成
-- - -
-## 功能介绍
-
-### 数据源配置
-
-
-
-**>= 4.1.0版本 项目适配多种类型数据库 可以在代码生成页面切换**
-
-> 填写对应的数据源名称 点击搜索按钮 即可切换到对应的数据源
-
-
-
-**>= 5.2.2版本 项目支持100+种数据库适配 在代码生成模块增加对应的数据库依赖即可**
-
-
-
-### 导入数据表
-
-> 点击导入按钮 会加载系统数据库所有的表
-
-
-
-> 选择需要的表 点击确定即可
-
-
-
-
-### 编辑表生成结构
-
-> 点击表对应的编辑按钮
-
-
-
-> 更改要生成表的数据
-
-
-
-
-### 生成条件影响
-
-
-
-
-* `插入` `编辑` 影响生成 BO 类 与 前端添加编辑页面 是否有该字段
-* `列表` 影响生成 VO 类 与 前端列表页面展示 是否有该字段
-* `查询` 影响 前端页面是否有该字段的搜索框 与 后端代码是否生成对应的查询条件
-* `查询方式` 影响生成查询条件的类型
-* `必填` 影响 BO 类 与 页面是否强制校验
-* `显示类型` 影响生成页面使用何种展示组件
-* `字典类型` 影响页面是否生成与字典的关联
-
-### 树表配置
-
-> 编辑表生成信息 生成模板为 `树表` 填写对应数据即可
-
-
-
-### 主子表说明
-
-框架不支持也不推荐使用主子表
-原因一般业务场景 基本都是一对N表 多表关联场景
-还有一些 主 => 子 <= 主 场景 需求很复杂 很少有单纯主子表场景出现
-另外主子表关联 很容易出现 笛卡尔积 或者数据错乱等问题 需要自行sql调优场景
-所以建议大家都按照 单表生成 自行编写业务逻辑
-
-### 预览功能
-
-> 配置好生成信息后 可以点击预览按钮
-
-
-
-> 系统会根据已经配置好的数据 生成对应的代码预览
-> 可以再此处观察代码的生成结构和数据是否正确等
-
-
-
-
-### 代码结构同步
-
-> 实际开发中 难免会有表结构更改的需求
-> 这时可以使用 同步功能 点击同步按钮 即可与实时数据库表进行字段同步
-
-
diff --git a/ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/framework/basic/export.md b/ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/framework/basic/export.md
deleted file mode 100644
index 1dd01c17..00000000
--- a/ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/framework/basic/export.md
+++ /dev/null
@@ -1,249 +0,0 @@
-# 导出功能
-
-- - -
-
-在本框架中引入了 `Easy Excel` 依赖(对 `Apache POI`进行了封装以及扩展),可以对数据进行导出操作(即写 Excel)。
-
-[EasyExcel 文档地址](https://easyexcel.opensource.alibaba.com/)
-
-## 导出功能使用流程说明
-
-### 步骤一:定义导出实体对象
-
-以框架中 `SysUserExportVo` 为例:
-
-```Java
- /**
- * 用户ID
- */
- @ExcelProperty(value = "用户序号")
- private Long userId;
-
- // .......................
-
- /**
- * 用户性别
- */
- @ExcelProperty(value = "用户性别", converter = ExcelDictConvert.class)
- @ExcelDictFormat(dictType = "sys_user_sex")
- private String sex;
-
- /**
- * 帐号状态(0正常 1停用)
- */
- @ExcelProperty(value = "帐号状态", converter = ExcelDictConvert.class)
- @ExcelDictFormat(dictType = "sys_normal_disable")
- private String status;
-```
-
-> 说明:
-> 1. 使用 `@ExcelProperty` 注解标注需要导出的属性。
-> 2. 注解 `@ExcelProperty` 中 `value` 属性代表表格头部标题字段,`converter` 代表使用的转换器,后面会详细说明。
-> 3. 注解 `@ExcelDictFormat` 为自定义注解,与自定义转换器结合使用,同样在后面进行详细说明。
-
-### 步骤二:使用导出方法
-
-以框架中 `SysUserController#export` 方法为例:
-
-```Java
- /**
- * 导出用户列表
- */
- @PostMapping("/export")
- public void export(SysUserBo user, HttpServletResponse response) {
- // 根据参数查询导出的用户列表数据
- List list = userService.selectUserList(user);
- // 将列表转换为导出对象列表
- List listVo = MapstructUtils.convert(list, SysUserExportVo.class);
- // 导出方法
- ExcelUtil.exportExcel(listVo, "用户数据", SysUserExportVo.class, response);
- }
-```
-
-> 说明:
-> 使用 `ExcelUtil.exportExcel` 方法完成导出功能,上述 Demo 传入参数分别是:导出对象集合,Excel sheet 表名称,导出对象类型,response。
-
-## 框架工具使用说明
-
-### 1:字典转换器
-
-字典转换器 `ExcelDictConvert` 与自定义注解 `@ExcelDictFormat` 结合使用,标注在需要转换的属性上。
-
-使用方式一:
-
-```Java
- /**
- * 用户性别
- */
- @ExcelProperty(value = "用户性别", converter = ExcelDictConvert.class)
- @ExcelDictFormat(dictType = "sys_user_sex")
- private String sex;
-```
-
-使用方式二:
-
-```Java
- /**
- * 用户性别
- */
- @ExcelProperty(value = "用户性别", converter = ExcelDictConvert.class)
- @ExcelDictFormat(readConverterExp="0=男,1=女,2=未知", separator=",")
- private String sex;
-```
-
-`@ExcelDictFormat` 注解属性说明:
-
-| 属性名称 | 属性类型 | 默认值 | 说明 |
-|------------------|--------|-----|-----------------------------------|
-| dictType | String | "" | 字典的type值 (如: sys_user_sex) |
-| readConverterExp | String | "" | 读取内容转表达式 (如: 0=男,1=女,2=未知) |
-| separator | String | "," | 与 readConverterExp 属性结合使用,表达式的分隔符 |
-
-### 2:枚举转换器
-
-字典转换器 `ExcelEnumConvert` 与自定义注解 `@ExcelEnumFormat` 结合使用,标注在需要转换的属性上。
-
-使用方式:
-
-```Java
- /**
- * 用户类型
- *
- * 使用ExcelEnumFormat注解需要进行下拉选的部分
- */
- @ExcelProperty(value = "用户类型", index = 1, converter = ExcelEnumConvert.class)
- @ExcelEnumFormat(enumClass = UserStatus.class, textField = "info")
- private String userStatus;
-```
-
-`@ExcelEnumFormat` 注解属性说明:
-
-| 属性名称 | 属性类型 | 默认值 | 说明 |
-|-----------|------------|------|------------------------------|
-| enumClass | Enum Class | - | 字典枚举类型 |
-| codeField | String | code | 字典枚举类中对应的 code 属性名称,默认为 code |
-| textField | String | text | 字典枚举类中对应的 text 属性名称,默认为 text |
-
-### 3:合并单元格
-
-`@CellMerge` 注解用于合并相同的列数据,需要结合 `CellMergeStrategy` 策略使用,标注在需要转换的属性上。
-
-使用方式:
-
-步骤一:在属性标注 `@CellMerge` 注解:
-```Java
- /**
- * 部门id
- */
- @CellMerge
- @ExcelProperty(value = "部门id")
- private Long deptId;
-```
-
-`@CellMerge` 注解属性说明:
-
-| 属性名称 | 属性类型 | 默认值 | 说明 |
-|---------|----------|-----|------------------------------|
-| index | int | -1 | 合并列的下标,建议使用默认值 |
-| mergeBy | String[] | {} | 合并需要依赖的其他字段名称(基于这个字段内容做合并条件) |
-
-步骤二:导出方法开启合并:
-```Java
- /**
- * 导出测试单表列表
- */
- @PostMapping("/export")
- public void export(@Validated TestDemoBo bo, HttpServletResponse response) {
- List list = testDemoService.queryList(bo);
- // 参数 true 表示开启合并单元格策略
- ExcelUtil.exportExcel(list, "测试单表", TestDemoVo.class, true, response);
- }
-```
-
-
-### 4:复杂 Excel 导出示例
-`TestExcelController` 提供了几种导出示例,如果需要可以参照相应方法进行导出。
-
-#### 4.1:单列表多数据导出(模板导出)
-
-模板内容:
-
-
-
-模板位置:`ruoyi-modules/ruoyi-demo/src/main/resources/excel/`
-
-导出示例代码:参考 demo 模块 `TestExcelController` 模板写法请查看 `EasyExcel` 文档
-
-导出结果:
-
-
-
-#### 4.2:多列表多数据导出(模板导出)
-
-模板内容:
-
-
-
-模板位置:`ruoyi-modules/ruoyi-demo/src/main/resources/excel/`
-
-导出示例代码:参考 demo 模块 `TestExcelController` 模板写法请查看 `EasyExcel` 文档
-
-导出结果:
-
-
-
-#### 4.3:导出下拉框
-
-`ExcelDictFormat` 注解指定的字典项默认都会转换成下拉框
-
-自定义导出省市区下拉框示例代码:参考 demo 模块 `TestExcelController`
-
-导出结果:
-
-
-
-## Easy Excel 常用注解
-
-`Easy Excel` 提供了丰富的注解可以对导出对象进行定制化操作,这里的注解说明针对的是原生注解,自定义注解会结合转换器一起进行说明。
-
-| 类型 | 注解名称 | 使用举例 | 说明 |
-|-------|-------------------------|------------------------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------|
-| 格式化注解 | @DateTimeFormat | @DateTimeFormat(value=格式化值) | 对字符串进行日期格式化 (参照 `java.text.SimpleDateFormat` 书写即可) |
-| 格式化注解 | @NumberFormat | @NumberFormat(value=格式化值, roundingMode=舍入模式) | 对字符串进行数值格式化 (参照 `java.text.DecimalFormat` 书写即可, `roundingMode` 默认 `RoundingMode.HALF_UP`) |
-| 样式注解 | @ColumnWidth | @ColumnWidth(value=值) | 设置列宽 |
-| 样式注解 | @ContentFontStyle | @ContentFontStyle(color=颜色) | 可以设置字体类型,颜色,粗细,是否斜体,下划线等,具体可查看注解 `@ContentFontStyle` |
-| 样式注解 | @ContentLoopMerge | @ContentLoopMerge(eachRow=行值, columnExtend=列值) | 设置循环合并的区域 |
-| 样式注解 | @ContentRowHeight | @ContentRowHeight(value=值) | 设置内容行高 |
-| 样式注解 | @ContentStyle | - | 设置单元格样式,具体可查看注解 `@ContentStyle` |
-| 样式注解 | @HeadFontStyle | @HeadFontStyle(color=颜色) | 设置表头字体格式,类似 `@ContentFontStyle`,具体可查看注解 `@HeadFontStyle` |
-| 样式注解 | @HeadRowHeight | @HeadRowHeight(value=值) | 设置表头行高 |
-| 样式注解 | @HeadStyle | - | 设置表头样式,具体可查看注解 `@HeadStyle` |
-| 样式注解 | @OnceAbsoluteMerge | @OnceAbsoluteMerge(firstRowIndex=开始行下标, lastRowIndex=结束行下标, firstColumnIndex=开始列下标, lastColumnIndex=结束列下标) | 根据设置值合并单元格 |
-| 属性注解 | @ExcelIgnore | @ExcelIgnore | 导出忽略该字段 |
-| 属性注解 | @ExcelIgnoreUnannotated | @ExcelIgnoreUnannotated | 默认不管加不加 `@ExcelProperty` 的注解的所有字段都会参与读写,加了 `@ExcelIgnoreUnannotated` 注解以后,不加 `@ExcelProperty` 注解的字段就不会参与 |
-| 属性注解 | @ExcelProperty | @ExcelProperty(value=值, order=排序值, index=下标, converter=转换器) | 默认按照对象属性顺序导出,如果设置了 `order` 以及 `index`,优先级 `index` > `order` > 默认;converter 可以自定义 |
-
-## 扩展说明
-
-### 自定义转换器实现
-
-由于业务需要,原生注解不一定能够符合需要,因而衍生出了自定义转换器。能够实现定制化的内容转换需要。
-以下以框架中的字典转换器 `ExcelDictConvert` 为例进行说明。
-
-字典转换器 `ExcelDictConvert`,字典转换器使用了自定义注解 `@ExcelDictFormat` 配合使用。
-
-_**注:自定义转换器并非一定需要自定义注解,也可以针对已有的注解进行自定义转换实现。**_
-
-#### 实现方式
-
-自定义转换器需要实现 `com.alibaba.excel.converters.Converter` 接口,实现接口中的方法。
-
-
-
-转换方法 `ExcelDictConvert#convertToExcelData` :
-
-
-
-## 更多功能
-
-更多导出功能使用可以参照 `Easy Excel` [官方文档](https://easyexcel.opensource.alibaba.com/docs/current/api/write)。
\ No newline at end of file
diff --git a/ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/framework/basic/import.md b/ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/framework/basic/import.md
deleted file mode 100644
index f1bbca7d..00000000
--- a/ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/framework/basic/import.md
+++ /dev/null
@@ -1,202 +0,0 @@
-# 导入功能
-- - -
-
-在本框架中引入了 `Easy Excel` 依赖(对 `Apache POI`进行了封装以及扩展),可以对数据进行导入操作(即读 Excel)。
-
-## 导入功能使用流程说明
-
-### 步骤一:定义导入实体对象
-
-以框架中 `SysUserImportVo` 为例:
-
-```java
- /**
- * 用户ID
- */
- @ExcelProperty(value = "用户序号")
- private Long userId;
-
- // .......................
-
- /**
- * 用户性别
- */
- @ExcelProperty(value = "用户性别", converter = ExcelDictConvert.class)
- @ExcelDictFormat(dictType = "sys_user_sex")
- private String sex;
-
- /**
- * 帐号状态(0正常 1停用)
- */
- @ExcelProperty(value = "帐号状态", converter = ExcelDictConvert.class)
- @ExcelDictFormat(dictType = "sys_normal_disable")
- private String status;
-```
-
-> 说明:
-> 1. 使用 `@ExcelProperty` 注解标注需要导入的属性。
-> 2. 注解 `@ExcelProperty` 中 `value` 属性代表表格头部标题字段,`converter` 代表使用的转换器,后面会详细说明。
-> 3. 注解 `@ExcelDictFormat` 为自定义注解,与自定义转换器结合使用,同样在后面进行详细说明。
-> 4. 对象禁止使用链式注解 `@Accessors(chain = true)`,会找不到set方法。
-
-### 步骤二:使用导入方法
-
-以框架中 `SysUserController#importData` 方法为例:
-
-```Java
- /**
- * 导入数据
- *
- * @param file 导入文件
- * @param updateSupport 是否更新已存在数据
- */
- @Log(title = "用户管理", businessType = BusinessType.IMPORT)
- @SaCheckPermission("system:user:import")
- @PostMapping(value = "/importData", consumes = MediaType.MULTIPART_FORM_DATA_VALUE)
- public R importData(@RequestPart("file") MultipartFile file, boolean updateSupport) throws Exception {
- // 导入方法
- ExcelResult result = ExcelUtil.importExcel(file.getInputStream(), SysUserImportVo.class, new SysUserImportListener(updateSupport));
- return R.ok(result.getAnalysis());
- }
-```
-> 说明:
-> 使用 `ExcelUtil.importExcel` 方法完成导出功能,上述 Demo 传入参数分别是:导入文件流,导入对象类型,导入监听器 `SysUserImportListener`。
-
-## 框架工具使用说明
-
-### 1:字典转换器
-
-字典转换器 `ExcelDictConvert` 与自定义注解 `@ExcelDictFormat` 结合使用,标注在需要转换的属性上。
-
-使用方式一:
-
-```Java
- /**
- * 用户性别
- */
- @ExcelProperty(value = "用户性别", converter = ExcelDictConvert.class)
- @ExcelDictFormat(dictType = "sys_user_sex")
- private String sex;
-```
-
-使用方式二:
-
-```Java
- /**
- * 用户性别
- */
- @ExcelProperty(value = "用户性别", converter = ExcelDictConvert.class)
- @ExcelDictFormat(readConverterExp="0=男,1=女,2=未知", separator=",")
- private String sex;
-```
-
-`@ExcelDictFormat` 注解属性说明:
-
-| 属性名称 | 属性类型 | 默认值 | 说明 |
-|------------------|--------|-----|-----------------------------------|
-| dictType | String | "" | 字典的type值 (如: sys_user_sex) |
-| readConverterExp | String | "" | 读取内容转表达式 (如: 0=男,1=女,2=未知) |
-| separator | String | "," | 与 readConverterExp 属性结合使用,表达式的分隔符 |
-
-### 2:枚举转换器
-
-字典转换器 `ExcelEnumConvert` 与自定义注解 `@ExcelEnumFormat` 结合使用,标注在需要转换的属性上。
-
-使用方式:
-
-```Java
- /**
- * 用户类型
- *
- * 使用ExcelEnumFormat注解需要进行下拉选的部分
- */
- @ExcelProperty(value = "用户类型", index = 1, converter = ExcelEnumConvert.class)
- @ExcelEnumFormat(enumClass = UserStatus.class, textField = "info")
- private String userStatus;
-```
-
-`@ExcelEnumFormat` 注解属性说明:
-
-| 属性名称 | 属性类型 | 默认值 | 说明 |
-|-----------|------------|------|------------------------------|
-| enumClass | Enum Class | - | 字典枚举类型 |
-| codeField | String | code | 字典枚举类中对应的 code 属性名称,默认为 code |
-| textField | String | text | 字典枚举类中对应的 text 属性名称,默认为 text |
-
-
-### 3:导入监听器
-
-#### 3.1:ExcelListener 监听器接口
-
-`ExcelListener` 扩展了 `ReadListener` 接口,增加了获取结果方法。
-
-
-
-#### 3.2:DefaultExcelListener 默认监听器
-
-`DefaultExcelListener` 默认监听器在读 Excel 时调用,主要对数据进行校验、解析、异常处理、返回结果等。导入操作时如果没有特别指定则使用该监听器。
-
-#### 3.3:SysUserImportListener 用户导入监听器
-
-`SysUserImportListener` 用户导入监听器是在用户导入时调用的监听器。
-
-该监听器重写了 `invoke` 反射接口,对导入的用户数据进行了校验;重写了 `getExcelResult` 获取结果接口,返回结果数据。
-
-#### 3.4:ExportDemoListener 带下拉框的导入监听器
-
-`ExportDemoListener` 是对带有下拉框的 Excel 进行处理的导入监听器。
-
-## Easy Excel 常用注解
-
-`Easy Excel` 提供了丰富的注解可以对导出对象进行定制化操作,这里的注解说明针对的是原生注解。
-
-| 类型 | 注解名称 | 使用举例 | 说明 |
-|-------|-------------------------|------------------------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------|
-| 格式化注解 | @DateTimeFormat | @DateTimeFormat(value=格式化值) | 对字符串进行日期格式化 (参照 `java.text.SimpleDateFormat` 书写即可) |
-| 格式化注解 | @NumberFormat | @NumberFormat(value=格式化值, roundingMode=舍入模式) | 对字符串进行数值格式化 (参照 `java.text.DecimalFormat` 书写即可, `roundingMode` 默认 `RoundingMode.HALF_UP`) |
-| 属性注解 | @ExcelIgnore | @ExcelIgnore | 导出忽略该字段 |
-| 属性注解 | @ExcelIgnoreUnannotated | @ExcelIgnoreUnannotated | 默认不管加不加 `@ExcelProperty` 的注解的所有字段都会参与读写,加了 `@ExcelIgnoreUnannotated` 注解以后,不加 `@ExcelProperty` 注解的字段就不会参与 |
-| 属性注解 | @ExcelProperty | @ExcelProperty(value=值, order=排序值, index=下标, converter=转换器) | 默认按照对象属性顺序导出,如果设置了 `order` 以及 `index`,优先级 `index` > `order` > 默认;converter 可以自定义 |
-
-## 扩展使用
-
-### 扩展一:自定义转换器实现
-
-由于业务需要,原生注解不一定能够符合需要,因而衍生出了自定义转换器。能够实现定制化的内容转换需要。
-以下以框架中的字典转换器 `ExcelDictConvert` 为例进行说明。
-
-字典转换器 `ExcelDictConvert`,字典转换器使用了自定义注解 `@ExcelDictFormat` 配合使用。
-
-_**注:自定义转换器并非一定需要自定义注解,也可以针对已有的注解进行自定义转换实现。**_
-
-#### 实现方式
-
-自定义转换器需要实现 `com.alibaba.excel.converters.Converter` 接口,实现接口中的方法。
-
-
-
-转换方法 `ExcelDictConvert#convertToJavaData` :
-
-
-
-### 扩展二:自定义监听器实现
-
-自定义监听器主要用于在读取解析 Excel 数据时进行自定义操作。
-以下以框架中的用户导入监听器 `SysUserImportListener` 为例进行说明。
-
-#### 实现方式
-1. 继承分析事件监听器 `AnalysisEventListener` 以及实现 Excel 监听器 `ExcelListener`。
-
-
-
-2. 显示使用构造函数,否则将导致空指针。
-
-
-
-3. 实现 `invoke` 方法,对数据进行解析操作,可以在此方法对数据进行合法性判断。
-
-4. 实现 `getExcelResult` 方法,对结果进行操作,例如返回成功、失败的统计数据。
-
-## 更多功能
-
-更多导入功能使用可以参照 `Easy Excel` [官方文档](https://easyexcel.opensource.alibaba.com/docs/current/quickstart/read)。
\ No newline at end of file
diff --git a/ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/framework/basic/interface_release.md b/ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/framework/basic/interface_release.md
deleted file mode 100644
index a3e6e6b6..00000000
--- a/ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/framework/basic/interface_release.md
+++ /dev/null
@@ -1,25 +0,0 @@
-# 接口放行
-- - -
-## 使用方式
-
-在配置文件填写路径放行
-
-
-### 注解放行
-版本 4.3.1 以上 建议使用 `@SaIgnore` 忽略注解
-
-支持在类或方法上放行
-**注意: 动态路径会解析成通配符 请设计好接口路径避免问题**
-
-**例如: `/get/{userId}` 会解析成 `/get/*`**
-
-
-## 注意事项
-
-接口放行后不需要token即可访问
-但是没有token也就无法获取用户信息与鉴权
-
-### 解决方案
-删除接口上的鉴权注解
-删除接口内获取用户信息功能
-删除数据库实体类 自动注入 `createBy` `updateBy` 因为会获取用户数据
\ No newline at end of file
diff --git a/ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/framework/basic/oss.md b/ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/framework/basic/oss.md
deleted file mode 100644
index 47484ab2..00000000
--- a/ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/framework/basic/oss.md
+++ /dev/null
@@ -1,124 +0,0 @@
-# 关于OSS模块使用
-- - -
-## 重点注意事项
-
-`桶/存储区域` 系统会根据配置自行创建分配权限
-~~如手动配置需要设置 `公有读` 权限 否则文件无法访问~~(`aliyun` 还需开通跨域配置)
-4.4.0 版本支持配置`公有/私有`权限(`aliyun` 还需开通跨域配置)
-访问站点 后严禁携带其他 `url` 例如: `/`, `/ruoyi` 等
-**阿里云与腾讯云SDK访问站点中不能包含桶名 系统会自动处理**
-**minio 站点不允许使用 localhost 请使用 127.0.0.1**
-**访问站点与自定义域名 都不要包含 `http` `https` 前缀 设置`https`请使用选项处理**
-
-## 代码使用
-
-> 参考 `SysOssService.upload` 用法
-> 使用 `OssFactory.instance()` 获取当前启用的 `OssClient` 实例
-> 进行功能调用 获取返回值后 存储到对应的业务表
-
-
-
-
-## 功能配置
-
-### 配置OSS
-
-> 进入 `系统管理 -> 文件管理 -> 配置管理` 填写对应的OSS服务相关配置
-
-
-
-
-
-**重点说明**
-
-> 云厂商只需修改 `访问站点`对应的域 切勿乱改(云厂商强烈建议绑定自定义域名使用 七牛云必须绑定[官方规定])
-
-
-
-> 七牛云 访问站点
-
-
-
-
-
-> 阿里云 访问站点
-
-
-
-> 腾讯云 访问站点
-
-
-
-### MinIO 使用 https访问站点
-
-**注意:S3 API 签名计算算法不支持托管 MinIO Server API 的代理方案**
-
-[ minio https 配置方式](https://blog.csdn.net/Michelle_Zhong/article/details/126484358)
-
-### 切换OSS
-
-> 再配置列表点击 `状态` 按钮开启即可(注意: 只能开启一个OSS默认配置)
-> 手动使用 `OssFactory.instance("configKey")`
-
-
-
-### 扩展分类
-
-> 如有文件分类 建议创建多个 oss配置 进行切换存储
-
-例如: 创建一个 图片存储的 oss配置
-指定唯一的 `configKey` 与 `前缀目录` 或 直接使用独立的`桶`
-独立桶的特点 可以自定义访问权限
-例如: 创建一个私有文件存储桶 不对外开放
-
-
-
-> 指定需要使用的配置
-> 使用 `OssFactory.instance("image")` 获取的 `OssClient` 会加载上图的配置 从而达到上传不同的目录或桶
-
-
-
-
-
-### 上传图片或文件
-
-> 进入 `系统管理 -> 文件管理` 点击 `上传文件` 或 `上传图片` 根据选项选择即可 会对应上传到配置开启的OSS内
-
-
-
-
-
-
-### 列表展示
-
-> 默认展示图片(可预览) 文件会展示路径
-
-
-
-
-> 可以点击 `预览禁用启用` 按钮对是否展示进行更改
-
-
-
-> 点击禁用后 图片会变成路径展示
-
-
-
-> 也可再 `参数设置` 更改预览状态 将 `OSS预览列表资源` 改为 `false` 即可关闭预览
-
-
-
-### 删除功能
-
-> 点击列表上方或后方 `删除` 按钮 会根据OSS服务商类型 调用对应的删除(注意: 需确保对应的服务商配置正确)
-> 可勾选多服务商类型的文件进行删除 系统会自动判断
-
-
-
-
-### 下载功能
-
-> 点击列表后方对应资源的 `下载` 按钮 根据需求填写文件名 点击确认即可完成下载
-
-
-
diff --git a/ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/framework/basic/page.md b/ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/framework/basic/page.md
deleted file mode 100644
index 97b6c525..00000000
--- a/ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/framework/basic/page.md
+++ /dev/null
@@ -1,32 +0,0 @@
-# 分页功能
-- - -
-## 对应版本
-
-> 3.5.0 版本
-
-## 重点说明
-
-> 项目使用 `mybatis-plus` 分页插件 实现分页功能 大致用法与 MP 一致 [MP分页文档](https://baomidou.com/pages/97710a/)
-> 项目已配置分页合理化 页数溢出 例如: 一共5页 查了第6页 默认返回第一页
-
-
-
-## 代码用法
-
-> `Controller` 使用 `PageQuery` 接收分页参数 具体参数参考 `PageQuery`
-
-
-
-> 构建 `Mybatis-Plus` 分页对象
-> 使用 `PageQuery#build()` 方法 可快速(基于当前对象数据)构建 `MP` 分页对象
-
-
-
-
-具体用法与 `MP` 一致
-
-> 自定义 `SQL` 方法分页
-> 只需在 `Mapper` 方法第一个参数和返回值 重点: 第一个参数 标注分页对象
-
-
-
diff --git a/ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/framework/basic/param_check.md b/ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/framework/basic/param_check.md
deleted file mode 100644
index 95ee19d8..00000000
--- a/ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/framework/basic/param_check.md
+++ /dev/null
@@ -1,158 +0,0 @@
-# 参数校验
-- - -
-
-参数校验在日常开发中十分常见,在本框架中引入了 `spring-boot-starter-validation` 依赖,底层基于 `hibernate-validator`,可以对参数进行校验。
-
-## 参数校验使用
-
-### 方法一:使用 `@Validated` 注解
-
-#### 步骤一:标注 `@Validated`
-
-`@Validated` 可以标注在类上,或者是参数前。
-
-```Java
-/** 标注在类上 **/
-@Validated
-@RestController
-@RequestMapping("/auth")
-public class AuthController {
-
- @PostMapping("/login")
- public R login(@RequestBody LoginBody body) {
- // ...
- }
-
-}
-```
-
-```Java
-/** 标注在参数前 **/
-@PostMapping
-public R add(@Validated @RequestBody SysUserBo user) {
- // ...
-}
-```
-
-#### 步骤二:标注校验注解
-
-在参数中加入校验注解。
-
-```Java
-public class SysUserBo {
-
- @NotBlank(message = "用户账号不能为空")
- @Size(min = 0, max = 30, message = "用户账号长度不能超过{max}个字符")
- private String userName;
-
- @NotBlank(message = "用户昵称不能为空")
- @Size(min = 0, max = 30, message = "用户昵称长度不能超过{max}个字符")
- private String nickName;
-
- @Email(message = "邮箱格式不正确")
- @Size(min = 0, max = 50, message = "邮箱长度不能超过{max}个字符")
- private String email;
-
-}
-```
-
-常见校验注解见文末附表。
-
-_注:message 支持 EL 表达式,{max} 直接读取前面的参数值。_
-
-### 方法二:使用校验工具类 `ValidatorUtils`
-
-`org.dromara.common.core.utils.ValidatorUtils`
-
-
-
-使用方式 1:校验所有带有校验注解的属性
-
-```Java
-// 校验所有带有校验注解的属性
-ValidatorUtils.validate(object);
-```
-
-使用方式 2:按照分组校验属性(可以传多个分组)
-
-```Java
-// 按照分组校验属性(可以传多个分组)
-ValidatorUtils.validate(object, group);
-```
-
-## 扩展使用
-
-### 扩展一:自定义校验注解
-
-除了已有的校验注解以外,可以结合业务进行自定义。
-
-以框架中的 `@Xss` 注解为例进行说明。
-
-```Java
-@Xss(message = "用户账号不能包含脚本字符")
-@NotBlank(message = "用户账号不能为空")
-@Size(min = 0, max = 30, message = "用户账号长度不能超过{max}个字符")
-private String userName;
-```
-
-#### 1:新增 `@Xss` 注解
-
-`org.dromara.common.core.xss.Xss`
-
-
-
-#### 2:自定义校验器
-
-自定义校验器实现 `jakarta.validation.ConstraintValidator` 接口。
-
-`org.dromara.common.core.xss.XssValidator`
-
-
-
-### 扩展二:自定义分组校验
-
-同一个对象在不同的请求中需要校验的参数不同,则可以使用分组校验。
-
-#### 1:自定义分组
-
-
-
-#### 2:`@Validated` 注解指定分组
-
-
-
-#### 3:校验注解中指定分组
-
-
-
-## 附录:常用校验注解
-
-| 注解 | 使用(只列举特殊参数值) | 参数类型 | 说明 |
-|------------------|--------------------------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|---------------------------------------|
-| @AssertFalse | @AssertFalse | boolean / Boolean | 元素值必须为 false |
-| @AssertTrue | @AssertTrue | boolean / Boolean | 元素值必须为 true |
-| @DecimalMax | @DecimalMax(value=值) | - BigDecimal
- BigInteger
- CharSequence
- byte, short, int, long 及其包装类 | 元素必须是一个数字,其值必须小于或等于指定的最大值 |
-| @DecimalMin | @DecimalMin(value=值) | - BigDecimal
- BigInteger
- CharSequence
- byte, short, int, long 及其包装类 | 元素必须是一个数字,其值必须大于或等于指定的最小值 |
-| @Digits | @Digits(integer=整数位值, fraction=小数位值) | - BigDecimal
- BigInteger
- CharSequence
- byte, short, int, long 及其包装类 | 元素必须符合整数位以及小数位范围值 |
-| @Email | @Email(regexp=正则表达式, flags=标志) | CharSequence | 元素是否符合正则表达式(正则表达式非必传) |
-| @Future | @Future | - java.util.Date
- java.util.Calendar
- java.time.Instant
- java.time.LocalDate
- java.time.LocalDateTime
- java.time.LocalTime
- java.time.MonthDay
- java.time.OffsetDateTime
- java.time.OffsetTime
- java.time.Year
- java.time.YearMonth
- java.time.ZonedDateTime
- java.time.chrono.HijrahDate
- java.time.chrono.JapaneseDate
- java.time.chrono.MinguoDate
- java.time.chrono.ThaiBuddhistDate | 元素必须是未来的时刻、日期或时间 |
-| @FutureOrPresent | @FutureOrPresent | 同 @Future | 元素必须是当前或未来的时刻、日期或时间 |
-| @Length | @Length(min=最小值, max=最大值) | - CharSequence | 验证字符串是否在包含的 min 和 max 之间 |
-| @Max | @Max(value=值) | - BigDecimal
- BigInteger
- byte, short, int, long 及其包装类 | 元素必须是一个数字,其值必须小于或等于指定的最大值 |
-| @Min | @Min(value=值) | - BigDecimal
- BigInteger
- byte, short, int, long 及其包装类 | 元素必须是一个数字,其值必须大于或等于指定的最小值 |
-| @Negative | @Negative | - BigDecimal
- BigInteger
- byte,short,int,long,float,double 及其包装类 | 元素必须是一个严格的负数(即 0 被视为无效值) |
-| @NegativeOrZero | @NegativeOrZero | - BigDecimal
- BigInteger
- byte,short,int,long,float,double 及其包装类 | 元素必须为负数或 0 |
-| @NotBlank | @NotBlank | CharSequence | 元素不能为 null,并且必须至少包含一个非空白字符 |
-| @NotEmpty | @NotEmpty | - CharSequence
- Collection
- Map
- Array | 元素不能为 null 或空集合 |
-| @NotNull | @NotNull | 不限类型 | 元素不能为 null |
-| @Null | @Null | 不限类型 | 元素必须为 null |
-| @Past | @Past | 同 @Future | 元素必须是过去的瞬间、日期或时间 |
-| @PastOrPresent | @PastOrPresent | 同 @Future | 元素必须是过去或现在的瞬间、日期或时间 |
-| @Pattern | @Pattern(regexp=正则表达式, flags=标志) | CharSequence | 元素必须与指定的正则表达式匹配(正则表达式遵循 Java 正则表达式约定) |
-| @Positive | @Positive | - BigDecimal
- BigInteger
- byte,short,int,long,float,double 及其包装类 | 元素必须是一个严格的正数(即 0 被视为无效值) |
-| @PositiveOrZero | @PositiveOrZero | - BigDecimal
- BigInteger
- byte,short,int,long,float,double 及其包装类 | 元素必须为正数或 0 |
-| @Range | @Range(min=最小值, max=最大值) | - BigDecimal
- BigInteger
- CharSequence
- byte, short, int, long 及其包装类 | 验证元素是否在包含的 min 和 max 之间 |
-| @Size | @Size(min=最小值, max=最大值) | - CharSequence
- Collection
- Map
- Array | 验证元素是否在包含的 min 和 max 之间 |
-| @Valid | @Valid | 对象 | 级联验证 |
-
-更多注解可参考包: `org.hibernate.validator`
\ No newline at end of file
diff --git a/ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/framework/basic/permissions.md b/ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/framework/basic/permissions.md
deleted file mode 100644
index 384b7749..00000000
--- a/ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/framework/basic/permissions.md
+++ /dev/null
@@ -1,144 +0,0 @@
-# 关于数据权限
-- - -
-* 参考 demo 模块用法(需导入 test.sql 文件)
-
-### 新版数据权限功能:
-1.支持自动注入 sql 数据过滤
-2.查询、更新、删除 限制
-3.支持自定义数据字段过滤
-4.模板支持 spel 语法实现动态 Bean 处理
-5.支持与菜单权限标识符联合使用(5.2.X新功能)
-
-### 数据权限相关代码
-
-| 类 | 说明 | 功能 |
-|-------------------------------|-----------------|----------------------------------------|
-| DataScopeType | 数据权限模板定义 | 用于定义数据权限模板 |
-| DataPermission | 数据权限组注解 | 用于标注开启数据权限 (默认过滤部门权限) |
-| DataColumn | 具体的数据权限字段标注 | 用于替换数据权限模板内的 key 变量 |
-| PlusDataPermissionInterceptor | 数据权限 sql 拦截器 | 用于拦截所有 sql 检查是否标注了 `DataPermission` 注解 |
-| PlusDataPermissionHandler | 数据权限处理器 | 用于处理被拦截到的 sql 为其添加数据权限过滤条件 |
-| DataPermissionHelper | 数据权限助手 | 操作数据权限上下文变量 |
-| SysDataScopeService | 自定义 Bean 处理数据权限 | 用于自定义扩展 |
-
-## 忽略数据权限
-
-1.如果需要指定单独 SQL 不开启过滤,可在对应的 Mapper 接口添加如下忽略注解:
-```
-@InterceptorIgnore(dataPermission = "true")
-```
-
-2.如果需要在业务层忽略数据权限,可调用以下方法:
-```
-# 无返回值
-DataPermissionHelper.ignore(() -> { 业务代码 });
-# 有返回值
-Class result = DataPermissionHelper.ignore(() -> { return 业务代码 });
-```
-
-### 使用方式 `参考demo模块`
-数据权限体系 `用户 -> 多角色 => 角色 -> 单数据权限`
-> 例子: 用户A 拥有两个角色
-> 角色A 部门经理 可查看 本部门及以下部门的数据
-> 角色B 兼职开发 可查看 仅自己的数据
-
-> 创建角色 test1 为 本部门及以下
-
-
-
-> 创建角色 test2 为 仅本人
-
-
-
-> 将其分配给用户 test
-
-
-
-### 编写列表查询(注意: 数据权限注解只能在 Mapper 层使用)
-
-> 标注数据权限注解 `dept_id` 为过滤部门字段 `user_id` 为过滤创建用户
-
-
-
-### 重点注意: 如下情况不生效
-
-> 有自定义实现方法 最终执行的mapper不是这个方法 所以无法生效
->
-> 解决方案: 一直往下点 找到最终的执行mapper重写即可
-
-
-
-### 编写数据权限模板
-
-
-
-1.`code` 为关联角色的数据权限 `code`
-2.`sqlTemplate` 为 sql 模板
-`#{#deptName}` 为模板变量 对应权限注解的 `key`
-`#{@sdss}` 为模板 Bean 调用 调用其 Bean 的处理方法
-3.`elseSql` 为兜底 sql 处理当前角色与标注的注解 无对应的情况
-例如 数据权限为仅本人 且 方法并未标注具体过滤注解 则 填充 `1 = 0` 使条件不满足 不允许查看
-更详细用法可以参考 `DataScopeType` 注释
-
-### 测试代码
-
-> 使用 `管理员` 用户优先测试
-
-
-
-> 使用 `test` 用户测试
-
-
-
-> 使用 `test` 删除一条不属于自己的数据
-> sql执行为不满足条件 不允许删除
-
-
-
-
-
-
-> 使用 `test` 修改与删除同理
-> 具体实现为 更新和删除方法 标注数据权限注解
-
-
-
-### 自定义SQL模板
-
-> 1.首先在角色管理 数据权限下拉框 添加自定义模板
-> 为什么不放置到系统字典问题: 因数据权限与模板绑定 不应随意改动 最好事先定义好
-
-
-
-> 2.代码 `DataScopeType` 自定义一个SQL模板
-
-
-
-> 3.标注权限注解
-
-
-
-> 4.设置数据权限变量
-
-
-
-> 5.测试
-
-
-
-### mybatis-plus 原生方法 增加数据权限过滤
-
-> 首先查看需要重写的方法源码 重点`方法源码` `方法源码` `方法源码`
-> 例如重写 `selectPage` 方法
-
-
-
-> 复制源码到自己的 `Mapper` 并增加数据权限注解 注意左边出现重写图标 即为重写成功
-
-
-
-### 支持类标注
-
-> 获取规则 `方法 > 类` 注意: 类标注后 所有方法(包括父类方法) 都会进行数据权限过滤
-
-
diff --git a/ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/framework/basic/permissions_control.md b/ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/framework/basic/permissions_control.md
deleted file mode 100644
index fa3a079c..00000000
--- a/ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/framework/basic/permissions_control.md
+++ /dev/null
@@ -1,180 +0,0 @@
-# 权限控制
-- - -
-
-本文采用 `Sa-Token` 框架实现权限控制。[官方文档传送门](https://sa-token.cc/doc.html#/)
-
-## 权限校验
-权限校验指的是校验用户是否拥有访问某个 API 的能力。
-
-通常情况下,一个 API 对应一个权限码,如果用户具备当前 API 的权限码,即代表有能力访问该 API。
-
-### 1:权限标识
-在本系统中,每一个菜单功能都有对应的权限标识,可以在菜单管理中进行设置。
-
-> 注:
-> 1. 前后端的权限标识要保持一致。
-> 2. 权限标识可以使用通配符`*`。
-
-
-
-
-### 2:校验方法
-#### 2.1:使用 `@SaCheckPermission` 注解进行校验
-`@SaCheckPermission` 注解是由 `Sa-Token` 框架提供的角色校验注解,可以标注在方法上或类上。
-
-- 单个权限校验:
-
-```Java
-@SaCheckPermission("system:user:list")
-```
-
-- 多个权限校验(或模式,满足任意一个权限即可):
-
-```Java
-@SaCheckPermission(
- value = {
- "system:user:list",
- "system:user:query"
- },
- mode = SaMode.OR
-)
-```
-
-- 多个权限校验(与模式,必须满足所有权限):
-
-```Java
-@SaCheckPermission(
- value = {
- "system:user:list",
- "system:user:query"
- },
- mode = SaMode.AND
-)
-```
-
-#### 2.2:使用 `StpUtil` 工具类校验
-`StpUtil` 工具类是由 `Sa-Token` 框架提供的权限工具类,提供了常用的校验方法。
-
-- 判断当前用户是否拥有某个权限(返回 `boolean`):
-
-```Java
-StpUtil.hasPermission("system:user:list");
-```
-
-- 单个权限校验:
-
-```Java
-StpUtil.checkPermission("system:user:list");
-```
-如果验证未通过,则抛出异常: `NotPermissionException`
-
-- 多个权限校验(或模式,满足任意一个权限即可):
-
-```Java
-StpUtil.checkPermissionOr("system:user:list", "system:user:query");
-```
-如果验证未通过,则抛出异常: `NotPermissionException`
-
-- 多个权限校验(与模式,必须满足所有权限):
-
-```Java
-StpUtil.checkPermissionAnd("system:user:list", "system:user:query");
-```
-如果验证未通过,则抛出异常: `NotPermissionException`
-
-## 角色校验
-角色校验指的是校验用户是否拥有某个指定角色。
-
-### 1:权限标识
-在本系统中,每个角色都拥有唯一的权限字符。
-
-除了超级管理员角色外,其他角色的权限字符可以通过角色管理进行设置。
-
-
-
-### 2:校验方法
-#### 2.1:使用 `@SaCheckRole` 注解校验
-`@SaCheckRole` 注解是由 `Sa-Token` 框架提供的角色校验注解,可以标注在方法上或类上。
-
-- 单个角色校验
-
-```Java
-@SaCheckRole("superadmin")
-```
-
-- 多个角色校验(或模式,满足任意一个角色即可):
-
-```Java
-@SaCheckRole(
- value = {
- "superadmin",
- "admin"
- },
- mode = SaMode.OR
-)
-```
-
-- 多个角色校验(与模式,必须满足所有角色):
-
-```Java
-@SaCheckRole(
- value = {
- "superadmin",
- "admin"
- },
- mode = SaMode.AND
-)
-```
-
-#### 2.2:使用 `StpUtil` 工具类校验
-`StpUtil` 工具类是由 `Sa-Token` 框架提供的权限工具类,提供了常用的校验方法。
-
-- 判断当前用户是否拥有某个角色(返回 `boolean`):
-
-```Java
-StpUtil.hasRole("superadmin")
-```
-
-- 单个权限校验:
-
-```Java
-StpUtil.checkRole("system:user:list");
-```
-如果验证未通过,则抛出异常: `NotRoleException`
-
-- 多个权限校验(或模式,满足任意一个角色即可):
-
-```Java
-StpUtil.checkRoleOr("system:user:list", "system:user:query");
-```
-如果验证未通过,则抛出异常: `NotRoleException`
-
-- 多个权限校验(与模式,必须满足所有角色):
-
-```Java
-StpUtil.checkRoleAnd("system:user:list", "system:user:query");
-```
-如果验证未通过,则抛出异常: `NotRoleException`
-
-## 角色权限双重 `OR` 校验
-除了分开校验以外,权限和角色也可以进行组合,表示备选校验。
-
-简单举个例子:
-
-假设某个 API 的权限码为 `system:user:list`,角色 `admin` 可以调用,则可以这样写:
-
-```Java
-@SaCheckPermission(value = "system:user:list", orRole = "admin")
-```
-
-以上权限只需要满足任意一项即可。更多写法可以参考 `Sa-Token` [官方文档](https://sa-token.cc/doc.html#/use/at-check?id=_4%e3%80%81%e8%a7%92%e8%89%b2%e6%9d%83%e9%99%90%e5%8f%8c%e9%87%8d-or%e6%a0%a1%e9%aa%8c)。
-
-## 当前用户的所有权限
-本系统中实现了 `StpInterface` 接口,可以对用户的权限以及角色进行管理,并且可以根据不同的用户类型进行设置。
-
-具体参考类:`org.dromara.common.satoken.core.service.SaPermissionImpl`
-
-## 忽略权限校验
-请参考文档:[接口放行](/ruoyi-vue-plus/framework/basic/interface_release?id=接口放行)
-
-
diff --git a/ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/framework/basic/social.md b/ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/framework/basic/social.md
deleted file mode 100644
index a004434b..00000000
--- a/ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/framework/basic/social.md
+++ /dev/null
@@ -1,68 +0,0 @@
-# 第三方授权功能
-- - -
-## 版本 >= 5.X
-
-## 前置说明
-1. 该功能基于 `JustAuth` 实现,支持多家平台实现第三方授权登录。
-2. 以 `Gitee` 授权登录为例进行本功能的使用说明。
-3. 其他第三方授权配置信息获取方式可参考 `JustAuth` [官方文档](https://www.justauth.cn/guide/)。
-
- 
-
-## 第三方授权配置
-
-### 申请三方应用(以gitee为例)
-
-
-
-### 更改后端配置 `application-dev.yml`
-
-
-
-**注:内网地址无法回调,请使用外网可以访问的地址。**
-
-
-
-### 更改前端配置 `login.vue`
-
-
-
-## 授权登录(未绑定第三方平台)
-
-### 步骤一:个人中心授权第三方应用
-
-
-
-### 步骤二:同意授权
-
-
-
-顶部出现授权成功,并跳转到系统首页。
-
-
-
-
-
-查看第三方应用可看到授权成功的个人信息。
-
-
-
-## 授权登录(已绑定第三方平台)
-
-### 步骤一:点击登录页面图标
-
-
-
-### 步骤二:同意授权
-
-
-
-## 解除授权绑定
-
-### 步骤一:个人中心点击解绑第三方应用
-
-
-
-### 步骤二:点击确定完成解绑
-
-
diff --git a/ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/framework/basic/tenant.md b/ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/framework/basic/tenant.md
deleted file mode 100644
index 33953086..00000000
--- a/ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/framework/basic/tenant.md
+++ /dev/null
@@ -1,121 +0,0 @@
-# 多租户功能
-- - -
-## 版本 >= 5.X
-
-## 前置说明(重要)
-1. 本框架多租户功能的实现是基于 [MyBatis-Plus 多租户插件](https://baomidou.com/pages/aef2f2/#tenantlineinnerinterceptor) 的,只支持最简单的隔离。
-2. 本系统默认开启多租户功能。
-3. 多租户业务表建表需要加上租户id `tenant_id`,可参考其他系统表。
-4. 非多租户表可在配置文件进行配置排除。
-5. 只有超级管理员支持切换租户。
-
-## 多租户使用流程(先说结论再展开!)
-0. 开启多租户配置(系统默认已经开启)
-1. 登录界面(可以选择不同租户)
-> 注:如果为租户设置了绑定域名,则只能选择当前域名相关的租户列表。
-2. 设置多租户套餐
-3. 新增/修改租户(需要选择套餐)
-4. 切换租户(仅超级管理员可操作)
-
-## 多租户配置
-`application.yml`
-
-> 开关 `enable` 节点不用废话。
-> 如果不需要过滤租户的表可在 `excludes` 节点下添加。
-
-**注意: 如果已经基于租户模式启动了程序 关闭租户必须删除mysql与redis内的相关数据重新导入sql**
-
-
-
-## 忽略租户
-
-1.如果需要指定单独 SQL 不开启过滤,可在对应的 Mapper 接口添加如下忽略注解:
-```
-@InterceptorIgnore(tenantLine = "true", dataPermission = "false")
-```
-**此处注意事项 使用此注解如果需要开启数据权限 dataPermission = "false" 必须添加 mp的注解默认是忽略数据权限的 会导致数据权限失效**
-
-2.如果需要在业务层忽略多租户,可调用以下方法(推荐使用):
-```
-# 无返回值
-TenantHelper.ignore(() -> { 业务代码 });
-# 有返回值
-Class result = TenantHelper.ignore(() -> { return 业务代码 });
-```
-
-## 动态切换租户
-
-**仅适用于特殊需求业务(例如: 创建租户时, 对该租户操作一些数据, 或者需要去其他租户查一些数据等) 禁止乱用后果自负**
-
-```
-# 无返回值
-TenantHelper.dynamic(租户id, () -> { 业务代码 });
-# 有返回值
-Class result = TenantHelper.dynamic(租户id, () -> { return 业务代码 });
-```
-
-## 登录界面
-
-
-
-> 注:如果为租户设置了绑定域名,则只能选择当前域名相关的租户列表。
-
-## 租户套餐管理
-### 租户套餐新增
-
-
-
-
-> 注:
-> 1、先新增套餐再新增租户,因为租户新增之后无法修改所选套餐。
-> 2、租户所关联的套餐如果后续有修改可以进行同步。
-
-
-## 租户管理
-### 默认租户
-> 注:默认租户无法修改
-
-
-
-### 新增租户
-#### 填写表单
-
-
-#### 选择新增的租户套餐
-
-
-#### 新增完成
-
-
-#### 登录租户
-
-
-
-
-### 修改租户
-#### 配置域名
-
-
-
-
-#### 没有配置域名
-
-
-#### 强调一下:这不是bug!
-> 注:域名的配置就是为了绑定特定租户!
-
-### 同步套餐
-应用场景:租户套餐进行了修改,配置的菜单需要同步到特定租户。
-(不是所有租户都有更新套餐的权利, 这是跟钱挂钩的)
-
-> 点一下按钮的事,图略。
-
-## 切换租户(仅超级管理员)
-> 注:管理员切换租户不是切换用户,切换的只是数据,管理员拥有所有权限。
-
-
-
-
-
-
-
diff --git a/ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/framework/basic/user.md b/ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/framework/basic/user.md
deleted file mode 100644
index b665ac5a..00000000
--- a/ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/framework/basic/user.md
+++ /dev/null
@@ -1,85 +0,0 @@
-# 系统用户相关
-- - -
-
-> 框架采用sa-token控制权限 并对sa-token的api做了一定的业务封装
-
-## 用户登录
-
-> 参考自带多种登录实现 不限制用户数据来源 只需要构建 LoginUser 即可完成登录
-> 例如: `同表不同类型` `不同表` `同表+扩展表`
-
-
-
-## 获取用户信息
-
-> 完成登录后会生成登录token返回给前端 前端需要再请求头携带token 后端方可获取到对应的用户信息
-
-请求头传递格式: `Authorization: Bearer token`
-
-后端获取用户信息:
-```java
-LoginUser user = LoginHelper.getLoginUser();
-```
-
-## 获取用户信息(基于token)
-```java
-LoginUser user = LoginHelper.getLoginUser(token);
-```
-
-## 获取登录用户id
-```java
-Long userId = LoginHelper.getUserId();
-```
-
-## 获取登录用户账户名
-```java
-String username = LoginHelper.getUsername();
-```
-
-## 获取登录用户所属租户id
-```java
-String tenantId = LoginHelper.getTenantId();
-```
-
-## 获取登录用户所属部门id
-```java
-Long deptId = LoginHelper.getDeptId();
-```
-
-## 获取登录用户类型
-```java
-UserType userType = LoginHelper.getUserType();
-```
-
-## 获取登录用户其他扩展属性
-```java
-Object obj = LoginHelper.getExtra(key);
-```
-
-## 设置登录用户其他扩展属性
-
-参考登录设置 `clientId` 属性
-
-
-
-## 判断用户是否为超级管理员
-
-```java
-// 判断当前登录用户
-boolean b = LoginHelper.isSuperAdmin();
-// 判断用户基于id
-boolean b = LoginHelper.isSuperAdmin(userId);
-```
-
-## 判断用户是否为租户管理员
-
-```java
-// 判断当前登录用户
-boolean b = LoginHelper.isTenantAdmin();
-// 判断用户基于角色组
-boolean b = LoginHelper.isSuperAdmin(rolePermission);
-```
-
-## 其他更多操作
-[Sa-Token 官方文档 - 登录认证](https://sa-token.cc/doc.html#/use/login-auth)
-
diff --git a/ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/framework/explain/about_join.md b/ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/framework/explain/about_join.md
deleted file mode 100644
index 593129e8..00000000
--- a/ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/framework/explain/about_join.md
+++ /dev/null
@@ -1,14 +0,0 @@
-# 关于多表查询
-- - -
-## 建议单表查询
-
-文章连接: [大连接查询分解好处](https://java.isture.com/db/mysql/mysql-x-optimize-decompose-connection.html)
-文章连接: [如何用mp多表查询性能测试](https://developer.aliyun.com/article/858927)
-
-
-
-
-
-
-
-**(上图出自 <高性能MySql>)**
\ No newline at end of file
diff --git a/ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/framework/explain/key.md b/ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/framework/explain/key.md
deleted file mode 100644
index 3ec55fec..00000000
--- a/ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/framework/explain/key.md
+++ /dev/null
@@ -1,19 +0,0 @@
-# 主键使用说明
-- - -
-## 关于如何使用分布式id或雪花id
-
-参考 `MybatisPlusConfig` 如需自定义 修改 `Bean` 实现即可
-
-
-
-框架默认集成 雪花ID 只需全局更改 主键类型即可
-
-
-
-如单表使用 可单独配置注解
-
-
-
-### 重点说明
-* 由于雪花id位数过长 `Long` 类型在前端会失真
-* 框架已配置序列化方案 超越 `JS` 最大值自动转字符串 参考 `BigNumberSerializer` 类 (3.0.0 及以上新增)
\ No newline at end of file
diff --git a/ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/framework/explain/test.md b/ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/framework/explain/test.md
deleted file mode 100644
index c6dbfe99..00000000
--- a/ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/framework/explain/test.md
+++ /dev/null
@@ -1,6 +0,0 @@
-# 单元测试
-- - -
-## 参考文章
-[SpringBoot 2.X 整合 JUnit5 及全方位使用手册](https://lionli.blog.csdn.net/article/details/127576604)
-## 参考代码(4.4.0新增)
-
\ No newline at end of file
diff --git a/ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/framework/explain/transaction.md b/ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/framework/explain/transaction.md
deleted file mode 100644
index dfad76f8..00000000
--- a/ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/framework/explain/transaction.md
+++ /dev/null
@@ -1,45 +0,0 @@
-# 事务相关
-- - -
-若依文档对事务注解的描述 [关于事务](https://doc.ruoyi.vip/ruoyi/document/htsc.html#%E4%BA%8B%E5%8A%A1%E7%AE%A1%E7%90%86) 以下对多数据源事务做补充:
-
-## 多后端多数据源事务
-
-框架支持对接 `seata` 保证分布式多数据源事务
-详情参考多数据源框架文档连接: https://www.kancloud.cn/tracy5546/dynamic-datasource/2268607
-
-## 本地多数据源事务
-请使用 `@DSTransactional` 注解 会代理 `@DS` 注解切换后的数据源事务做回滚处理
-只要 `@DSTransactional` 注解下任一环节发生异常,则全局多数据源事务回滚。
-如果BC上也有 `@DSTransactional` 会有影响吗?答:没有影响的。
-
-```java
-//如AService调用BService和CService的方法,A,B,C分别对应不同数据源。
-
-public class AService {
-
- @DS("a")//如果a是默认数据源则不需要DS注解。
- @DSTransactional
- public void dosomething(){
- BService.dosomething();
- CService.dosomething();
- }
-}
-
-public class BService {
-
- @DS("b")
- public void dosomething(){
- //dosomething
- }
-}
-
-public class CService {
-
- @DS("c")
- public void dosomething(){
- //dosomething
- }
-}
-```
-
-
diff --git a/ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/framework/extend/api_encrypt.md b/ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/framework/extend/api_encrypt.md
deleted file mode 100644
index fc56df31..00000000
--- a/ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/framework/extend/api_encrypt.md
+++ /dev/null
@@ -1,38 +0,0 @@
-# 数据加解密
-- - -
-
-## 1:API 加密注解 `@ApiEncrypt`
-1. 对于标注了 `@ApiEncrypt` 注解的接口,请求参数都必须进行加密。
-2. 注解的参数 `response` 为响应加密标识,默认 `false` 不加密,为 `true` 表示响应加密。
-3. 加密解密逻辑由过滤器实现,详情可参考 `org.dromara.common.encrypt.filter.CryptoFilter`。
-
-## 2:API 加密配置
-`application.yml`
-
-
-
-`.env.development` / `.env.production`
-
-
-
-> 注:
-> 1. 公私钥与前端配置文件互为配对,如果需要更换请一同更换。
-> 2. 后端公钥对应前端私钥;后端私钥对应前端公钥。
-
-## 3:前端开启加密
-如果需要开启 API 加密,则需要修改 `request` 的 `headers` 内容:
-```Javascript
-headers: {
- isEncrypt: true
-}
-```
-
-
-
-## 4.关于请求响应参数加解密说明
-
-如何加解密请求响应参数看这里 -> [关于请求响应参数解密](/questions/api_encrypt.md)
-
-## 密钥生成说明
-
-
\ No newline at end of file
diff --git a/ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/framework/extend/dynamic_datasource.md b/ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/framework/extend/dynamic_datasource.md
deleted file mode 100644
index 1e81b5e0..00000000
--- a/ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/framework/extend/dynamic_datasource.md
+++ /dev/null
@@ -1,45 +0,0 @@
-# 多数据源
-- - -
-
-### 框架默认 mysql 其他数据库使用说明
-
-找到 `ruoyi-admin` 模块在 pom 文件内增加对应的jdbc依赖
-
-
-
-
-### 关于多数据源事务 具体参考 `事务相关` 文档说明
-
-### 多数据源框架功能介绍
-多数据源框架官方文档: [dynamic-datasource文档](https://www.kancloud.cn/tracy5546/dynamic-datasource/2264611)
-
-* 支持 数据源分组 ,适用于多种场景 纯粹多库 读写分离 一主多从 混合模式。
-* 支持数据库敏感配置信息 加密 ENC()。
-* 支持每个数据库独立初始化表结构schema和数据库database。
-* 支持无数据源启动,支持懒加载数据源(需要的时候再创建连接)。
-* 支持 自定义注解 ,需继承DS(3.2.0+)。
-* 提供并简化对Druid,HikariCp,BeeCp,Dbcp2的快速集成。
-* 提供对Mybatis-Plus,Quartz,ShardingJdbc,P6sy,Jndi等组件的集成方案。
-* 提供 自定义数据源来源 方案(如全从数据库加载)。
-* 提供项目启动后 动态增加移除数据源 方案。
-* 提供Mybatis环境下的 纯读写分离 方案。
-* 提供使用 spel动态参数 解析数据源方案。内置spel,session,header,支持自定义。
-* 支持 多层数据源嵌套切换 。(ServiceA >>> ServiceB >>> ServiceC)。
-* 提供 基于seata的分布式事务方案。
-* 提供 本地多数据源事务方案。 附:不能和原生spring事务混用。
-
-### 用法说明
-
-> 加载顺序 `方法 => 类 => 默认`
-
-
-
-### 配置方式
-
-
-
-### 数据库异构
-
-例如: `mysql + oracle` 参考对应多数据源框架文档 [dynamic-ds文档](https://www.kancloud.cn/tracy5546/dynamic-datasource)
-
-
diff --git a/ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/framework/extend/encrypt.md b/ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/framework/extend/encrypt.md
deleted file mode 100644
index 19d726cd..00000000
--- a/ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/framework/extend/encrypt.md
+++ /dev/null
@@ -1,28 +0,0 @@
-# 数据加解密
-- - -
-## 框架版本 >= 4.6.0
-## 功能说明
-
-数据库 数据存储加密 查询解密功能
-支持加密算法: `BASE64` `AES` `RSA` `SM2` `SM4`
-
-## 注解 `@EncryptField`
-
-
-
-## 用法说明
-
-**详细用法可参考案例 TestEncryptController 测试数据库加解密功能**
-
-全局默认加密配置(如果注解不配置则使用全局配置)
-
-
-
-注解可自定义算法与配置
-
-
-
-## 密钥生成说明
-
-
-
diff --git a/ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/framework/extend/idempotent.md b/ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/framework/extend/idempotent.md
deleted file mode 100644
index 46c7f423..00000000
--- a/ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/framework/extend/idempotent.md
+++ /dev/null
@@ -1,29 +0,0 @@
-# 防重幂等
-- - -
-### 功能介绍
-
-防重功能为防止两条相同的数据重复提交导致脏数据或业务错乱
-**注意: 重复提交属于小概率事件 请不要拿并发压测与之相提并论**
-框架防重功能参考 `美团GTIS防重系统` 使用 请求参数与用户Token或URL 生成全局业务ID
-有效防止 `同一个用户` 在 `限制时间` 内对 `同一个业务` 提交 `相同的数据`
-
-框架防重处理 `支持业务失败或异常` 快速释放限制
-业务处理成功后 会在设置时间内 限制同一条数据的提交
-**注意: 只对同一个用户的同一个接口提交相同的数据有效**
-
-
-
-
-### 美团GTIS系统流程图
-
-[美团 分布式系统互斥性与幂等性问题的分析与解决](https://tech.meituan.com/2016/09/29/distributed-system-mutually-exclusive-idempotence-cerberus-gtis.html)
-
-
-
-### 使用方法
-
-在Controller标注 `@RepeatSubmit` 注解即可
-
-
-
-
\ No newline at end of file
diff --git a/ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/framework/extend/mail.md b/ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/framework/extend/mail.md
deleted file mode 100644
index 6e7413ed..00000000
--- a/ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/framework/extend/mail.md
+++ /dev/null
@@ -1,17 +0,0 @@
-# 邮件功能
-- - -
-## 配置功能
-
-版本: v4.2.0 提供邮件功能
-
-修改配置文件
-
-
-
-* `enabled` 为邮件功能开关
-
-## 功能使用
-
-参考 `demo` 模块 `MailController` 邮件演示案例
-
-
\ No newline at end of file
diff --git a/ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/framework/extend/maxkey.md b/ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/framework/extend/maxkey.md
deleted file mode 100644
index a0b51d24..00000000
--- a/ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/framework/extend/maxkey.md
+++ /dev/null
@@ -1,20 +0,0 @@
-# 对接 MaxKey 单点登录
-- - -
-
-# 安装 MaxKey 应用服务
-
-参考 MaxKey 官方文档安装 [MaxKey安装部署](http://www.maxkey.top/doc/docs/intro/)
-
-# 配置应用 OAuth2.0 认证注册
-
-
-
-# 配置后端服务
-
-找到框架 `application-环境.yml` 配置文件
-
-修改 `maxkey` 对应的 `client-id` 与 `client-secret`
-
-
-
-
\ No newline at end of file
diff --git a/ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/framework/extend/sensitive.md b/ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/framework/extend/sensitive.md
deleted file mode 100644
index 3e2d92ba..00000000
--- a/ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/framework/extend/sensitive.md
+++ /dev/null
@@ -1,33 +0,0 @@
-# 数据脱敏
-- - -
-## 功能说明
-
-系统使用 `Jackson` 序列化策略 对标注了 `Sensitive` 注解的属性进行脱敏处理
-
-## 使用教程
-
-> 使用注解标注需要脱敏的字段 选择对应的策略
-
-
-
-* strategy 脱敏策略
-* roleKey 角色code(判断用户是否拥有角色权限)
-* perms 权限code(判断用户是否拥有标识符权限)
-
-
-
-> 可再 `SensitiveStrategy` 内自定义策略
-
-
-
-## 脱敏逻辑修改
-
-> 系统使用通用接口处理是否需要脱敏 多个系统可以自定义不同的脱敏逻辑实现
-
-
-
-> 系统默认处理逻辑为 根据角色与标识符或非管理员脱敏 可自行修改默认实现
-
-
-
-
diff --git a/ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/framework/extend/skywalking.md b/ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/framework/extend/skywalking.md
deleted file mode 100644
index 283eb221..00000000
--- a/ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/framework/extend/skywalking.md
+++ /dev/null
@@ -1,20 +0,0 @@
-# Skywalking链路监控
-- - -
-## skywalking服务搭建
-
-参考文章: https://lionli.blog.csdn.net/article/details/127656534
-多种搭建方式 也可以参考百度
-
-## 代码改动
-
-https://gitee.com/dromara/RuoYi-Vue-Plus/commit/4d02466fed4f3ea012a80c3359cde9af0737141f
-根据上方commit提交记录 开启注释掉的代码
-
-## 本地使用
-
-参考文章: https://lionli.blog.csdn.net/article/details/127656534
-
-## docker部署使用
-
-完成上方代码改动 将下载好的 `agent` 探针 放入服务器 `/docker/skywalking/agent/` 目录下 赋予所有权限即可
-
diff --git a/ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/framework/extend/sms.md b/ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/framework/extend/sms.md
deleted file mode 100644
index a2308ecd..00000000
--- a/ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/framework/extend/sms.md
+++ /dev/null
@@ -1,51 +0,0 @@
-# 短信模块
-- - -
-
-# 配置功能
-
-### 版本: >= v5.1.0
-
-已完成 sms4j 项目整合 文档地址: https://sms4j.com/doc3
-
-配置方式 具体厂商配置扩展 可以查看sms4j文档
-
-
-
-使用方式 参考文档各种写法 下方为 demo 模块提供示例
-
-
-
-### 版本: v4.2.0 提供短信模块
-
-短信模块采用SPI加载
-使用哪家的短信 引入哪家的依赖 即可动态加载
-目前支持: `阿里云` `腾讯云` 欢迎扩展PR其他
-
-> 参考 `ruoyi-demo` pom文件写法
-
-
-
-> 修改配置文件
-
-
-
-* `enabled` 为短信功能开关
-* `endpoint` 为域名 各厂家域名固定 按照文档配置即可
-* `accessKeyId` 密钥id
-* `accessKeySecret` 密钥密匙
-* `signName` 签名
-* `sdkAppId` 应用id 腾讯专用
-
-## 功能使用
-
-参考 `demo` 模块 `SmsController` 短信演示案例
-功能采用 `模板模式` 动态加载对应厂家的工具模板
-引入 `SmsTemplate` 即可使用
-
-
-
-## 重点须知
-
-由于各厂家参数解析不一致 请遵守以下规则
-
-
diff --git a/ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/framework/extend/sse.md b/ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/framework/extend/sse.md
deleted file mode 100644
index 8a738329..00000000
--- a/ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/framework/extend/sse.md
+++ /dev/null
@@ -1,22 +0,0 @@
-# SSE功能
-- - -
-
-## 框架版本 >= 5.2.2
-
-## 配置说明
-
-
-
-* enabled 是否开启此功能
-* path 应用路径
-
-## 使用方法
-
-前端连接方式: `http://后端ip:端口/resource/sse?clientid=import.meta.env.VITE_APP_CLIENT_ID&Authorization=Bearer eyJ0eXAiO......`
-
-其中 `Authorization` 为请求token需要登录后获取 连接成功之后 与框架内其他获取登录用户方式一致
-
-`SseMessageUtils.sendMessage` 推送单机消息(特殊需求使用)
-`SseMessageUtils.subscribeMessage` 订阅分布式消息(框架初始化已订阅)
-`SseMessageUtils.publishMessage` 发布分布式消息(推荐使用 所有集群内寻找到接收人)
-`SseMessageUtils.publishAll` 群发消息给所有连接人
\ No newline at end of file
diff --git a/ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/framework/extend/topiam.md b/ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/framework/extend/topiam.md
deleted file mode 100644
index 4778d0f9..00000000
--- a/ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/framework/extend/topiam.md
+++ /dev/null
@@ -1,30 +0,0 @@
-# 对接 TOPIAM 单点登录
-- - -
-
-# 安装 TOPIAM 应用服务
-
-参考 TOPIAM 官方文档安装 [TOPIAM安装部署](https://eiam.topiam.cn/docs/deployment/)
-
-# 配置 OIDC 应用
-
-在 `登录 Redirect URI` 中填写 `http://localhost:80/oauth/callback?source=topiam`
-
-# 配置后端服务
-
-找到框架 `application-环境.yml` 配置文件
-
-修改 `topiam` 对应的 `client-id` 与 `client-secret`
-
-```yaml
-justauth:
- # 前端外网访问地址
- address: http://localhost:80
- type:
- topiam:
- # topiam 服务器地址,可在【应用配置信息】中找到
- server-url: http://127.0.0.1:1989/api/v1/authorize/y0q************spq***********8ol
- client-id: 449c4*********937************759
- client-secret: ac7***********1e0************28d
- redirect-uri: ${justauth.address}/social-callback?source=topiam
- scopes: [openid]
-```
\ No newline at end of file
diff --git a/ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/framework/extend/translation.md b/ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/framework/extend/translation.md
deleted file mode 100644
index 547b15ff..00000000
--- a/ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/framework/extend/translation.md
+++ /dev/null
@@ -1,34 +0,0 @@
-# 翻译功能
-- - -
-## 框架版本 >= 4.6.0
-## 注解
-
-
-
-`@Translation` 翻译注解 用于实体类字段上
-`@TranslationType` 翻译类别注解 用于实现类上标注与 `@Translation` 注解相同的 `type` 类型 实现翻译功能
-
-
-## 用法说明
-
-默认提供功能 `用户id转账号(用户名)` `部门id转名称` `字典type转label` `ossId转url`
-
-
-
-用户名翻译(映射翻译) 根据另一个映射字段 翻译保存到此字段
-
-
-
-ossUrl翻译(直接翻译) 直接根据此字段值翻译后替换此字段值
-
-
-
-字典翻译(其他扩展条件翻译) 根据`other`条件 自行定义如何使用 例如字典翻译`other`条件就是字典的唯一值
-
-
-
-## 自定义扩展
-
-实现接口 `TranslationInterface` 标注注解 `@TranslationType` 可参考框架默认实现
-
-
diff --git a/ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/framework/extend/websocket.md b/ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/framework/extend/websocket.md
deleted file mode 100644
index 9e74e1e3..00000000
--- a/ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/framework/extend/websocket.md
+++ /dev/null
@@ -1,37 +0,0 @@
-# WebSocket功能
-- - -
-
-## 框架版本 >= 5.1.0
-
-## 配置说明(默认关闭 推送建议使用SSE)
-
-
-
-* enabled 是否开启此功能
-* path 应用路径
-* allowedOrigins 设置访问源地址
-
-**重点: 如关闭ws功能需连同前端ws开关一同关闭 不然前端启动会报错**
-
-
-
-## 使用方法
-
-前端连接方式: `ws://后端ip:端口/resource/websocket?clientid=import.meta.env.VITE_APP_CLIENT_ID&Authorization=Bearer eyJ0eXAiO......`
-
-**由于js不支持请求头传输故而采用参数传输 如支持请求头传输建议使用请求头传输**
-
-传输方式:
-```js
-headers: {
- Authorization: "Bearer " + getToken(),
- clientid: import.meta.env.VITE_APP_CLIENT_ID
-}
-```
-
-其中 `Authorization` 为请求token需要登录后获取 连接成功之后 与框架内其他获取登录用户方式一致
-
-`WebSocketUtils.sendMessage` 推送单机消息(特殊需求使用)
-`WebSocketUtils.subscribeMessage` 订阅分布式消息(框架初始化已订阅)
-`WebSocketUtils.publishMessage` 发布分布式消息(推荐使用 所有集群内寻找到接收人)
-`WebSocketUtils.publishAll` 群发消息给所有连接人
\ No newline at end of file
diff --git a/ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/framework/tree.md b/ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/framework/tree.md
deleted file mode 100644
index 329cce21..00000000
--- a/ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/framework/tree.md
+++ /dev/null
@@ -1,61 +0,0 @@
-# 目录结构
-- - -
-v5.2.2
-~~~
-RuoYi-Vue-Plus
-├─ ruoyi-admin // 管理模块 [8080,28080]
-│ └─ RuoYiApplication // 启动类
-│ └─ RuoYiServletInitializer // 容器部署初始化类
-│ └─ resources // 资源文件
-│ └─ i18n/messages.properties // 国际化配置文件
-│ └─ application.yml // 框架总配置文件
-│ └─ application-dev.yml // 开发环境配置文件
-│ └─ application-prod.yml // 生产环境配置文件
-│ └─ banner.txt // 框架启动图标
-│ └─ logback-plus.xml // 日志配置文件
-│ └─ ip2region.xdb // IP区域地址库
-├─ ruoyi-extend // 扩展模块
-│ └─ ruoyi-monitor-admin // admin监控模块 [9090]
-│ └─ ruoyi-snailjob-server // 任务调度中心模块 [8800,17888]
-├─ ruoyi-common // 通用模块
-│ └─ ruoyi-common-bom // common依赖包管理
-│ └─ ruoyi-common-core // 核心模块
-│ └─ ruoyi-common-doc // 系统接口模块
-│ └─ ruoyi-common-encrypt // 数据加解密模块
-│ └─ ruoyi-common-excel // excel模块
-│ └─ ruoyi-common-idempotent // 幂等功能模块
-│ └─ ruoyi-common-job // 定时任务模块
-│ └─ ruoyi-common-json // 序列化模块
-│ └─ ruoyi-common-log // 日志模块
-│ └─ ruoyi-common-mail // 邮件模块
-│ └─ ruoyi-common-mybatis // 数据库模块
-│ └─ ruoyi-common-oss // oss服务模块
-│ └─ ruoyi-common-ratelimiter // 限流功能模块
-│ └─ ruoyi-common-redis // 缓存服务模块
-│ └─ ruoyi-common-satoken // satoken模块
-│ └─ ruoyi-common-security // 安全模块
-│ └─ ruoyi-common-sensitive // 脱敏模块
-│ └─ ruoyi-common-sms // 短信模块
-│ └─ ruoyi-common-social // 社交三方模块
-│ └─ ruoyi-common-sse // sse流推送模块
-│ └─ ruoyi-common-tenant // 租户模块
-│ └─ ruoyi-common-translation // 通用翻译模块
-│ └─ ruoyi-common-web // web模块
-│ └─ ruoyi-common-websocket // websocket服务集成模块
-├─ ruoyi-modules // 模块组
-│ └─ ruoyi-demo // 演示模块
-│ └─ ruoyi-generator // 代码生成模块
-│ └─ ruoyi-job // 任务调度服务
-│ └─ ruoyi-system // 业务模块
-│ └─ ruoyi-workflow // 工作流模块
-├─ plus-ui // 前端框架 [80]
-├─ script // 系统脚本包
-│ └─ bin // 运行脚本包
-│ └─ docker // docker相关脚本
-│ └─ sql // sql脚本
-├─ .run // 执行脚本文件
-├─ .editorconfig // 编辑器编码格式配置
-├─ LICENSE // 开源协议
-├─ pom.xml // 公共依赖
-├─ README.md // 框架说明文件
-~~~
\ No newline at end of file
diff --git a/ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/home.md b/ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/home.md
deleted file mode 100644
index ff4de9ef..00000000
--- a/ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/home.md
+++ /dev/null
@@ -1,127 +0,0 @@
-
-
-
-- - -
-# 平台简介
-
-
-[](https://gitee.com/dromara/RuoYi-Vue-Plus)
-[](https://github.com/dromara/RuoYi-Vue-Plus)
-[](https://gitee.com/dromara/RuoYi-Vue-Plus/blob/master/LICENSE)
-[](https://www.jetbrains.com/?from=RuoYi-Vue-Plus)
-
-[](https://gitee.com/dromara/RuoYi-Vue-Plus)
-[]()
-[]()
-[]()
-
-> RuoYi-Vue-Plus 是重写 RuoYi-Vue 针对 `分布式集群与多租户` 场景全方位升级(不兼容原框架)
-
-> 项目代码、文档 均开源免费可商用 遵循开源协议在项目中保留开源协议文件即可
-活到老写到老 为兴趣而开源 为学习而开源 为让大家真正可以学到技术而开源
-
-# 本框架与RuoYi的功能差异
-
-| 功能 | 本框架 | RuoYi |
-|-------------|-------------------------------------------------------------------------------------------------------------------|------------------------------------------------------------------------------------|
-| 前端项目 | 采用 Vue3 + TS + ElementPlus 重写 | 基于Vue2/Vue3 + JS |
-| 后端项目结构 | 采用插件化 + 扩展包形式 结构解耦 易于扩展 | 模块相互注入耦合严重难以扩展 |
-| 后端代码风格 | 严格遵守Alibaba规范与项目统一配置的代码格式化 | 代码书写与常规结构不同阅读障碍大 |
-| Web容器 | 采用 Undertow 基于 XNIO 的高性能容器 | 采用 Tomcat |
-| 权限认证 | 采用 Sa-Token、Jwt 静态使用功能齐全 低耦合 高扩展 | Spring Security 配置繁琐扩展性极差 |
-| 权限注解 | 采用 Sa-Token 支持注解 登录校验、角色校验、权限校验、二级认证校验、HttpBasic校验、忽略校验
角色与权限校验支持多种条件 如 `AND` `OR` 或 `权限 OR 角色` 等复杂表达式 | 只支持是否存在匹配 |
-| 三方鉴权 | 采用 JustAuth 第三方登录组件 支持微信、钉钉等数十种三方认证 | 无 |
-| 关系数据库支持 | 原生支持 MySQL、Oracle、PostgreSQL、SQLServer
可同时使用异构切换(支持其他 mybatis-plus 支持的所有数据库 只需要增加jdbc依赖即可使用 达梦金仓等均有成功案例) | 支持 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等 | 无 |
-| 接口传输加密 | 采用 动态 AES + RSA 加密请求 body 每一次请求秘钥都不同大幅度降低可破解性 | 无 |
-| 数据翻译 | 采用 注解 + jackson 序列化期间动态修改数据 数据进行翻译
支持多种模式: `映射翻译` `直接翻译` `其他扩展条件翻译` 接口化两步即可完成自定义扩展 内置多种翻译实现 | 无 |
-| 多数据源框架 | 采用 dynamic-datasource 支持市面大部分数据库
通过yml配置即可动态管理异构不同种类的数据库 也可通过前端页面添加数据源
支持spel表达式从请求头参数等条件切换数据源 | 基于 druid 手动编写代码配置数据源 配置繁琐 支持性差 |
-| 多数据源事务 | 采用 dynamic-datasource 支持多数据源不同种类的数据库事务回滚 | 不支持 |
-| 数据库连接池 | 采用 HikariCP Spring官方内置连接池 配置简单 以性能与稳定性闻名天下 | 采用 druid bug众多 社区维护差 活跃度低 配置众多繁琐性能一般 |
-| 数据库主键 | 采用 雪花ID 基于时间戳的 有序增长 唯一ID 再也不用为分库分表 数据合并主键冲突重复而发愁 | 采用 数据库自增ID 支持数据量有限 不支持多数据源主键唯一 |
-| WebSocket协议 | 基于 Spring 封装的 WebSocket 协议 扩展了Token鉴权与分布式会话同步 不再只是基于单机的废物 | 无 |
-| SSE推送 | 采用 Spring SSE 实现 扩展了Token鉴权与分布式会话同步 | 无 |
-| 序列化 | 采用 Jackson Spring官方内置序列化 靠谱!!! | 采用 fastjson bugjson 远近闻名 |
-| 分布式幂等 | 参考美团GTIS防重系统简化实现(细节可看文档) | 手动编写注解基于aop实现 |
-| 分布式锁 | 采用 Lock4j 底层基于 Redisson | 无 |
-| 分布式任务调度 | 采用 SnailJob 天生支持分布式 统一的管理中心 支持多种数据库 支持分片重试DAG任务流等 | 采用 Quartz 基于数据库锁性能差 集群需要做很多配置与改造 |
-| 文件存储 | 采用 Minio 分布式文件存储 天生支持多机、多硬盘、多分片、多副本存储
支持权限管理 安全可靠 文件可加密存储 | 采用 本机文件存储 文件裸漏 易丢失泄漏 不支持集群有单点效应 |
-| 云存储 | 采用 AWS S3 协议客户端 支持 七牛、阿里、腾讯 等一切支持S3协议的厂家 | 不支持 |
-| 短信 | 采用 sms4j 短信融合包 支持数十种短信厂家 只需在yml配置好厂家密钥即可使用 可多厂家共用 | 不支持 |
-| 邮件 | 采用 mail-api 通用协议支持大部分邮件厂商 | 不支持 |
-| 接口文档 | 采用 SpringDoc、javadoc 无注解零入侵基于java注释
只需把注释写好 无需再写一大堆的文档注解了 | 采用 Springfox 已停止维护 需要编写大量的注解来支持文档生成 |
-| 校验框架 | 采用 Validation 支持注解与工具类校验 注解支持国际化 | 仅支持注解 且注解不支持国际化 |
-| Excel框架 | 采用 Alibaba EasyExcel 基于插件化
框架对其增加了很多功能 例如 自动合并相同内容 自动排列布局 字典翻译等 | 基于 POI 手写实现 功能有限 复杂 扩展性差 |
-| 工作流支持 | 支持各种复杂审批 转办 委派 加减签 会签 或签 票签 等功能 | 无 |
-| 工具类框架 | 采用 Hutool、Lombok 上百种工具覆盖90%的使用需求 基于注解自动生成 get set 等简化框架大量代码 | 手写工具稳定性差易出问题 工具数量有限 代码臃肿需自己手写 get set 等 |
-| 监控框架 | 采用 SpringBoot-Admin 基于SpringBoot官方 actuator 探针机制
实时监控服务状态 框架还为其扩展了在线日志查看监控 | 无 |
-| 链路追踪 | 采用 Apache SkyWalking 还在为请求不知道去哪了 到哪出了问题而烦恼吗
用了它即可实时查看请求经过的每一处每一个节点 | 无 |
-| 代码生成器 | 只需设计好表结构 一键生成所有crud代码与页面
降低80%的开发量 把精力都投入到业务设计上
框架为其适配MP、SpringDoc规范化代码 同时支持动态多数据源代码生成 | 代码生成原生结构 只支持单数据源生成 |
-| 部署方式 | 支持 Docker 编排 一键搭建所有环境 让开发人员从此不再为搭建环境而烦恼 | 原生jar部署 其他环境需手动下载安装 自行搭建 |
-| 项目路径修改 | 提供详细的修改方案文档 并为其做了一些改动 非常简单即可修改成自己想要的 | 需要做很多改造 文档说明有限 |
-| 国际化 | 基于请求头动态返回不同语种的文本内容 开发难度低 有对应的工具类 支持大部分注解内容国际化 | 只提供基础功能 其他需自行编写扩展 |
-| 代码单例测试 | 提供单例测试 使用方式编写方法与maven多环境单测插件 | 只提供基础功能 其他需自行编写扩展 |
-| Demo案例 | 提供框架功能的实际使用案例 单独一个模块提供了很多很全 | 无 |
-
-
-## 本框架与RuoYi的业务差异
-
-| 业务 | 功能说明 | 本框架 | RuoYi |
-|--------|----------------------------------------------------------------------|-----|------------------|
-| 租户管理 | 系统内租户的管理 如:租户套餐、过期时间、用户数量、企业信息等 | 支持 | 无 |
-| 租户套餐管理 | 系统内租户所能使用的套餐管理 如:套餐内所包含的菜单等 | 支持 | 无 |
-| 客户端管理 | 系统内对接的所有客户端管理 如: pc端、小程序端等
支持动态授权登录方式 如: 短信登录、密码登录等 支持动态控制token时效 | 支持 | 无 |
-| 用户管理 | 用户的管理配置 如:新增用户、分配用户所属部门、角色、岗位等 | 支持 | 支持 |
-| 部门管理 | 配置系统组织机构(公司、部门、小组) 树结构展现支持数据权限 | 支持 | 支持 |
-| 岗位管理 | 配置系统用户所属担任职务 | 支持 | 支持 |
-| 菜单管理 | 配置系统菜单、操作权限、按钮权限标识等 | 支持 | 支持 |
-| 角色管理 | 角色菜单权限分配、设置角色按机构进行数据范围权限划分 | 支持 | 支持 |
-| 字典管理 | 对系统中经常使用的一些较为固定的数据进行维护 | 支持 | 支持 |
-| 参数管理 | 对系统动态配置常用参数 | 支持 | 支持 |
-| 通知公告 | 系统通知公告信息发布维护 | 支持 | 支持 |
-| 操作日志 | 系统正常操作日志记录和查询 系统异常信息日志记录和查询 | 支持 | 支持 |
-| 登录日志 | 系统登录日志记录查询包含登录异常 | 支持 | 支持 |
-| 文件管理 | 系统文件展示、上传、下载、删除等管理 | 支持 | 无 |
-| 文件配置管理 | 系统文件上传、下载所需要的配置信息动态添加、修改、删除等管理 | 支持 | 无 |
-| 在线用户管理 | 已登录系统的在线用户信息监控与强制踢出操作 | 支持 | 支持 |
-| 定时任务 | 运行报表、任务管理(添加、修改、删除)、日志管理、执行器管理等 | 支持 | 仅支持任务与日志管理 |
-| 代码生成 | 多数据源前后端代码的生成(java、html、xml、sql)支持CRUD下载 | 支持 | 仅支持单数据源 |
-| 系统接口 | 根据业务代码自动生成相关的api接口文档 | 支持 | 支持 |
-| 服务监控 | 监视集群系统CPU、内存、磁盘、堆栈、在线日志、Spring相关配置等 | 支持 | 仅支持单机CPU、内存、磁盘监控 |
-| 缓存监控 | 对系统的缓存信息查询,命令统计等。 | 支持 | 支持 |
-| 在线构建器 | 拖动表单元素生成相应的HTML代码。 | 支持 | 支持 |
-| 使用案例 | 系统的一些功能案例 | 支持 | 不支持 |
-
-
-## 演示图例
-
-| | |
-|--------------------------------------------------------------------------------------------|--------------------------------------------------------------------------------------------|
-|  |  |
-|  |  |
-|  |  |
-|  |  |
-|  |  |
-|  |  |
-|  |  |
-|  |  |
-|  |  |
-|  |  |
-|  |  |
-|  |  |
-|  |  |
-|  |  |
-|  |  |
-|  |  |
-|  |  |
-|  |  |
-|  |  |
-
diff --git a/ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/quickstart/4.Xinit.md b/ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/quickstart/4.Xinit.md
deleted file mode 100644
index 73a6dbc4..00000000
--- a/ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/quickstart/4.Xinit.md
+++ /dev/null
@@ -1,67 +0,0 @@
-# 4.X项目初始化
-- - -
-### 项目分支说明
-`4.X` 主分支 4.X版本 稳定发布分支
-`fast` 单体分支 功能与主分支相同 结构为单模块
-`dev` 开发分支 代码随时更新 不推荐使用 经测试后会发布到主分支
-`future/*` 新功能预览分支
-
-### 项目必备环境
-> 推荐使用 `docker` 安装 项目内置 `docker` 编排文件
-* oracle jdk 8 11 (暂时不支持 17 不支持大于 jdk8_202 因为202是最后一个免费版本)
-* mysql 5.7 8.0 (5.6未适配可能会有问题)
-* oracle 11g 12c
-* postgres 13 14
-* sqlserver 2017 2019
-* redis 5.X 6.X 由于框架大量使用了redis特性 版本必须 >= 5.X ([win redis 下载地址](https://github.com/tporadowski/redis))
-* minio 本地文件存储 或 阿里云 腾讯云 七牛云等一切支持S3协议的云存储
-* maven 3.6.3 3.8.X
-* nodejs >= 12 < 18
-* npm 6.X 8.X (7.X确认有问题)
-
-### 3.2.0及以上 只需勾选对应环境即可
-
-
-### 默认 `JDK1.8` 如有变动 需更改以下配置
-
-
-
-
-
-### sql导入
-
-请按照以下顺序依次导入
-
-
-
-默认为 `mysql` 其他数据库需导入对应的sql文件
-
-
-
-**多数据库仅支持主应用 扩展应用需自行适配(例如: xxl-job仅支持mysql)**
-
-### 服务启动顺序说明
-
-1. 必须启动基础建设: mysql redis admin
-2. 可选启动基础建设: minio(影响文件上传) monitor(影响监控) xxljob(影响定时任务)
-
-
-
-* `MonitorAdminApplication` 为 Admin监控服务(非必要 可参考对应文档关闭)
-* `XxlJobAdminApplication` 为 任务调度中心服务(非必要 可参考对应文档关闭)
-* `RuoYiApplication` 为 主应用服务
-> 需优先启动 `MonitorAdminApplication` 与 `XxlJobAdminApplication` 具体配置方式参考对应文档
-> 最后启动 主服务 `RuoYiApplication`
-
-### 主服务配置方式
-
-在勾选对应环境的配置文件内 填写 mysql 与 redis 配置信息
-
-
-
-
-其他数据库配置 按照系统自带的配置更改即可
-
-
-
-
diff --git a/ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/quickstart/5.Xnew.md b/ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/quickstart/5.Xnew.md
deleted file mode 100644
index a966adad..00000000
--- a/ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/quickstart/5.Xnew.md
+++ /dev/null
@@ -1,5 +0,0 @@
-### 视频讲解
-
-[RuoYi-Vue-Plus 5.0.0 新功能与变更介绍](https://www.bilibili.com/video/BV1Us4y1m7ky/)
-
-[RuoYi-Vue-Plus 5.1.0 新功能与变更介绍](https://www.bilibili.com/video/BV1fj411y71X/)
diff --git a/ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/quickstart/admin_init.md b/ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/quickstart/admin_init.md
deleted file mode 100644
index 0a317a83..00000000
--- a/ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/quickstart/admin_init.md
+++ /dev/null
@@ -1,32 +0,0 @@
-# 搭建Admin监控
-- - -
-### 配置监控客户端
-
-> 修改主服务配置文件
-
-
-
-* `enabled` 可启用或关闭客户端注册
-* `url` 为监控中心地址
-* `username 与 password` 为监控中心的账号密码
-
-### 启用监控中心
-在 `扩展项目 -> 监控模块` 启动
-
-
-
-在监控模块对应的 `yml` 配置文件 可设置登录的账号密码与访问路径
-
-
-
-### 前端修改admin监控访问路径
-`dev`环境 默认使用 `.env.development` 配置文件内地址
-
-
-
-`prod`环境 使用 `.env.production` 本机路由
-
-
-故而 `prod` 环境只需更改 `nginx` 反向代理路径即可
-
-
diff --git a/ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/quickstart/deploy.md b/ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/quickstart/deploy.md
deleted file mode 100644
index 37e184c4..00000000
--- a/ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/quickstart/deploy.md
+++ /dev/null
@@ -1,126 +0,0 @@
-# 应用部署
-- - -
-## 版本 >= 4.3.0
-
-### 请优先阅读 [idea环境配置](/ruoyi-vue-plus/quickstart/idea_environment.md)
-
-## 手动部署
-
-在服务器安装 `mysql` `redis` `nginx` `minio`
-
-将项目内 `script/docker/nginx/nginx.conf` 配置文件 复制到 `nginx` 配置内
-将项目内 `script/docker/redis/redis.conf` 配置文件 复制到 `redis` 配置内
-
-并修改相关参数如 `前端页面存放位置` `后端Ip地址` 等使其生效
-
-jar包部署后端服务 打包命令如下
-
-3.2.0及以上
-```mvn
-mvn clean package -D maven.test.skip=true -P prod
-```
-服务器需创建临时文件存储目录与配置文件对应(无此目录上传文件会报错)
-
-
-
-前端参考下方前端部署章节
-
-## 部署视频
-
-[RuoYi-Vue-Plus 5.0 生产环境搭建部署](https://www.bilibili.com/video/BV1mL411e7ha/)
-
-## docker 后端部署
-
-### 请优先阅读 [idea环境配置](/ruoyi-vue-plus/quickstart/idea_environment.md)
-
-**重点: 一知半解的必看**
-> [docker安装](https://lionli.blog.csdn.net/article/details/83153029)
-> [docker-compose安装](https://lionli.blog.csdn.net/article/details/111220320)
-> [docker网络模式讲解](https://lionli.blog.csdn.net/article/details/109603785)
-> [docker 开启端口 2375 供外部程序访问](https://lionli.blog.csdn.net/article/details/92627962)
-
-### 将配置使用FTP上传到根目录
-idea拖拽文件到远程目录即可上传
-
-
-
-### 给docker分配文件夹权限
-**重点注意: 一定要确保目录 `/docker` 及其所有子目录 具有写权限 如果后续出现权限异常问题 重新执行一遍分配权限**
-
-
-```shell
-chmod -R 777 /docker
-```
-### 构建应用镜像
-
-**1.需要先使用maven打包成jar包**
-
-
-
-**2.执行构建**
-> 项目初始化后会自动生成构建镜像的运行配置
-> 配置好docker连接之后 运行如下即可构建对应的应用镜像
-
-**重点注意: idea2024及以上版本要求必须在本地安装docker才可以执行如下操作**
-
-
-
-
-
-**3.结构讲解**
-右键编辑 即可看到内部配置
-
-
-
-
-
-
-### 创建基础服务
-
-```shell
-docker-compose up -d mysql nginx-web redis minio
-```
-
-### 创建业务服务(需要先构建服务镜像)
-
-4.X
-```shell
-docker-compose up -d ruoyi-monitor-admin ruoyi-xxl-job-admin ruoyi-server1 ruoyi-server2
-```
-
-5.X
-```shell
-docker-compose up -d ruoyi-monitor-admin ruoyi-snailjob-server ruoyi-server1 ruoyi-server2
-```
-
-### docker其他操作(idea的docker插件 推荐使用)
-
-
-## 前端部署
-
-执行打包命令
-```shell
-# 打包正式环境
-npm run build:prod
-```
-打包后生成打包文件在 `ruoyi-ui/dist` 目录
-将 `dist` 目录下文件(不包含 `dist` 目录) 上传到部署服务器 `docker/nginx/html` 目录下(手动部署放入自己配置的路径即可)
-
-
-
-重启 `nginx` 服务即可
-
-
-### 如需更改后端代理路径或者后端ip地址的话往下看
-
-更改`nginx.conf`配置文件代理路径(注意: /开头/结尾)
-
-
-
-更改前端`.env.环境` 文件内的 `VITE_APP_BASE_API`
-
-
-
-更改`nginx.conf`配置文件后端ip地址
-
-
diff --git a/ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/quickstart/extend_project.md b/ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/quickstart/extend_project.md
deleted file mode 100644
index 0c6f33ac..00000000
--- a/ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/quickstart/extend_project.md
+++ /dev/null
@@ -1,49 +0,0 @@
-# 基于 RuoYi-Vue-Plus 的扩展项目列表
-- - -
-### 精品PR 欢迎投稿
-| 功能介绍 | PR地址 |
-|-------------------------------------|------------------------------------------------------|
-| 拖拽图片调整显示顺序 | https://gitee.com/dromara/RuoYi-Vue-Plus/pulls/173 |
-| 增加Jasypt加密库对配置文件加密 | https://gitee.com/dromara/RuoYi-Vue-Plus/pulls/177 |
-| 使用富文本wangeditor5替换Quill | https://gitee.com/dromara/RuoYi-Vue-Plus/pulls/213 |
-| 集成screw数据库文档功能模块 | https://gitee.com/dromara/RuoYi-Cloud-Plus/pulls/42 |
-| Excel导入模板增加批注支持 | https://gitee.com/dromara/RuoYi-Vue-Plus/pulls/222 |
-| 压缩包处理工具 支持本地文件/目录+oss文件/网络文件混合 | https://gitee.com/dromara/RuoYi-Cloud-Plus/pulls/44 |
-| 添加websocket模块 支持satoken鉴权 | https://gitee.com/dromara/RuoYi-Cloud-Plus/pulls/65 |
-| 数据库字段加解密(支持 base64 aes rsa sm2 sm4) | https://gitee.com/dromara/RuoYi-Vue-Plus/pulls/274 |
-| 增加liquibase迁移数据库 | https://gitee.com/dromara/RuoYi-Vue-Plus/pulls/299 |
-| 增加OSS模块支持本地环境 | https://gitee.com/dromara/RuoYi-Vue-Plus/pulls/353 |
-| 扩展模块独立集成flyway | https://gitee.com/dromara/RuoYi-Vue-Plus/pulls/439 |
-| 扩展模块独立集成go-view大屏看板 | https://gitee.com/dromara/RuoYi-Vue-Plus/pulls/445 |
-| 基于AmazonS3协议的分片上传 | https://gitee.com/dromara/RuoYi-Cloud-Plus/pulls/130 |
-| 扩展forest http客户端 声明式http请求 二次封装像工具类 | https://gitee.com/dromara/RuoYi-Vue-Plus/pulls/547 |
-| 增加短链接生成工具 | https://gitee.com/dromara/RuoYi-Vue-Plus/pulls/515 |
-| 新增oss预签名上传工具组合使用异步客户端分片 | https://gitee.com/dromara/RuoYi-Vue-Plus/pulls/522 |
-| 新增规则引擎LiteFlow,SQL持久化接入,支持可视化页面 | https://gitee.com/dromara/RuoYi-Vue-Plus/pulls/552 |
-| 一键部署到私有Nexus仓库 | https://gitee.com/dromara/RuoYi-Cloud-Plus/pulls/181 |
-| 服务状态监控发送邮件钉钉等 | https://gitee.com/dromara/RuoYi-Vue-Plus/pulls/568 |
-| 登录验证支持2FA验证 | https://gitee.com/dromara/RuoYi-Vue-Plus/pulls/578 |
-
-### 项目介绍+项目地址 欢迎投稿
-
-
-| 项目介绍 | 项目地址 |
-|--------------------------------|---------------------------------------------------------------------------|
-| 微服务扩展 | https://gitee.com/dromara/RuoYi-Cloud-Plus |
-| Plus学习笔记 | https://zhonglingyuxiu1028.github.io/zlyx-space/#/ruoyi-vue-plus/home |
-| 基于uniapp+TmUI从0开发 支持H5/小程序/安卓 | https://gitee.com/dapppp/ruoyi-plus-miniapp |
-| 基于RuoYi-App框架二次修改使用Uniapp+Vue3 | https://gitee.com/wangying110166/ruo-yi-uni-app-plus |
-| 基于RuoYi-App框架对接Plus后端 | https://gitee.com/FnTop/RuoYi-App-Plus |
-| 基于vben(ant-design-vue)前端项目 | https://gitee.com/dapppp/ruoyi-plus-vben |
-| 基于vue-next-admin的vue3+ts前端 | https://gitee.com/thiszhc/RuoYi-Vue3-UI |
-| 集成GoView版本 | https://gitee.com/kdwqjwgqxx/RuoYi-Vue-Plus-GoView |
-| mybatis-flex版本 | https://gitee.com/dataprince/ruoyi-flex |
-| blog博客系统 | https://gitee.com/kalashok-pan/zhi-blog-plus |
-| tdengine时序数据库扩展 | https://gitee.com/zhangbg/ruoyi-plus-tdengine |
-| 重构项目结构(参考springboot源码) | https://gitee.com/denghuafeng/ruoyi-boot-plus |
-| Activiti扩展 | https://gitee.com/sgs98/RuoYi-Vue-Plus-Activiti |
-| flowable扩展 | https://gitee.com/sgs98/RuoYi-Vue-Plus-Flowable |
-| flowable扩展 | https://gitee.com/KonBAI-Q/ruoyi-flowable-plus |
-| mybatis-flex版本 | https://gitee.com/yhan219/ruoyi-vue-flex |
-| weblog博客系统 | https://gitee.com/fu-zhanshuai/fzshuai-weblog |
-| Annlcc博客 | https://gitee.com/ahcode/ann-blog-plus |
\ No newline at end of file
diff --git a/ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/quickstart/idea_environment.md b/ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/quickstart/idea_environment.md
deleted file mode 100644
index 5995e0ff..00000000
--- a/ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/quickstart/idea_environment.md
+++ /dev/null
@@ -1,50 +0,0 @@
-# idea环境配置
-- - -
-## 配置项目编码
-
-
-## 配置运行看板
-
-### 配置spring与docker看板
-
-
-
-
-
-
-
-
-## 配置服务器SSH连接
-进入 `Settings -> Tools -> SSH Configurations` 点击加号创建SSH连接配置
-填写 服务器IP 用户名 密码 端口号 点击 Test Connection 测试连接
-
-
-
-使用Terminal 工具 点击箭头找到上方创建的SSH连接配置
-选择即可进入SSH连接界面 在这里可以对服务器进行命令操作
-
-
-
-## 配置服务器FTP连接
-进入 `Settings -> Build-> Deployment` 点击加号 选择SFTP 创建 FTP 连接配置
-选择之前创建好的SSH配置 点击 Test Connection 测试连接
-
-
-
-在IDEA上方工具栏 找到 `Tools -> Deployment -> Browse Remote Host` 打开远程界面
-点击箭头找到我们上方配置的SFTP连接配置 即可连接到服务器的文件目录
-
-
-
-## 配置Docker连接
-### 可操作远程docker与构建上传docker镜像(代替原来maven docker插件)
-tcp连接需要开放服务器2375端口
-ssh需要使用上方的SSH连接配置
-建议使用SSH连接
-
-
-
-配置好之后 在运行窗口会多出一个Docker图标 双击即可连接远程docker
-可以查看容器实时日志 启动 重启 停止 等操作
-
-
\ No newline at end of file
diff --git a/ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/quickstart/init.md b/ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/quickstart/init.md
deleted file mode 100644
index dba09058..00000000
--- a/ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/quickstart/init.md
+++ /dev/null
@@ -1,73 +0,0 @@
-# 5.X项目初始化
-- - -
-### 项目分支说明
-
-`5.X` 主分支 5.X版本 稳定发布分支
-`dev` 开发分支 代码随时更新 不推荐使用 经测试后会发布到主分支
-`future/*` 新功能预览分支
-
-### 项目必备环境
-> 推荐使用 `docker` 安装 项目内置 `docker` 编排文件
-
-**注意: 禁止使用 `oraclejdk`(由于spring的bug导致打包运行会报错)**
-
-**Spring官方推荐使用JDK https://bell-sw.com/pages/downloads/**
-
-
-
-* openjdk-17/21 或 graalvm-community-jdk-17/21 [下载地址](https://github.com/graalvm/graalvm-ce-builds/releases) 版本
-* mysql 5.7 8.0 (其他版本未测试 如其他版本没问题 可以告知咱们)
-* oracle >= 12c (其他版本未测试 如其他版本没问题 可以告知咱们)
-* postgres 13 14 (其他版本未测试 如其他版本没问题 可以告知咱们)
-* sqlserver 2017 2019 (其他版本未测试 如其他版本没问题 可以告知咱们)
-* redis 5.X 6.X 7.X 由于框架大量使用了redis特性 版本必须 >= 5.X ([win redis 下载地址](https://github.com/zkteco-home/redis-windows))
-* minio 本地文件存储 或 阿里云 腾讯云 七牛云等一切支持S3协议的云存储
-* maven >= 3.8.X
-* nodejs >= 18.18 (其他版本未测试 如其他版本没问题 可以告知咱们)
-* npm >= 8.X (7.X确认有问题)
-* idea 2022 2024 (一定不要使用2023后果自负 bug太多影响项目开发)
-
-### 搭建视频
-
-[RuoYi-Vue-Plus 5.0 搭建与运行](https://www.bilibili.com/video/BV1Fg4y137JK/)
-
-### 勾选maven对应环境
-
-
-### 默认 `JDK17` 如有变动 需更改以下配置
-
-
-
-
-### sql导入
-
-请按照以下顺序依次导入 默认为 `mysql` 其他数据库需导入对应的sql文件
-如需使用其他数据库 看这里 => [多数据库数据源](../framework/extend/dynamic_datasource.md)
-
-
-
-### 服务启动顺序说明
-
-1. 必须启动基础建设: mysql redis admin
-2. 可选启动基础建设: minio(影响文件上传) monitor(影响监控) snailjob(影响定时任务)
-
-
-
-* `MonitorAdminApplication` 为 Admin监控服务(非必要 可参考对应文档关闭 [搭建Admin监控](/ruoyi-vue-plus/quickstart/admin_init.md))
-* `SnailJobServerApplication` 为 任务调度中心服务(非必要 可参考对应文档关闭 [搭建调度中心](/ruoyi-vue-plus/quickstart/snail_job_init.md))
-* `DromaraApplication` 为 主应用服务
-> 需优先启动 `MonitorAdminApplication` 与 `SnailJobServerApplication` 具体配置方式参考对应文档
-> 最后启动 主服务 `DromaraApplication`
-> 工作流相关初始化使用 [工作流初始化](/ruoyi-vue-plus/quickstart/worker_init.md)
-
-### 主服务配置方式
-
-在勾选对应环境的配置文件内 填写 mysql 与 redis 配置信息
-
-
-
-
-
-其他数据库配置 按照系统自带的配置更改即可
-
-
\ No newline at end of file
diff --git a/ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/quickstart/power_job_init.md b/ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/quickstart/power_job_init.md
deleted file mode 100644
index 863971b1..00000000
--- a/ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/quickstart/power_job_init.md
+++ /dev/null
@@ -1,48 +0,0 @@
-# 搭建PowerJob任务调度中心(5.X分支已废弃)
-- - -
-### 废弃原因
-
-接到大量投诉 使用困难 用法诡异 各种问题等
-
-### 配置调度中心客户端
-> 修改主服务配置文件
->
-
-
-
-
-
-* `enabled` 可启用或关闭客户端注册
-* `server-address` 为调度中心地址
-* `app-name` 为执行器组账户名(需在调度中心注册方可登录查看)
-
-### 启用调度中心
-**需执行 powerjob.sql 默认账号密码 `ruoyi-worker` `123456` 账号在数据库里 可以在页面修改密码**
-
-
-
-
-> 在 `扩展项目 -> powerjob-server模块` 启动
->
-
-
-> 需修改配置文件数据库连接地址(**注意: 此处为ruoyi-powerjob-server服务的配置文件**)
->
-
-
-> 也可配置邮件发送 钉钉推送 和 mongodb存储
->
-
-
-### 前端修改任务调度中心访问路径
-`dev`环境 默认使用 `.env.development` 配置文件内地址
-
-
-
-`prod`环境 使用 `.env.production` 本机路由
-
-
-
-故而 `prod` 环境只需更改 `nginx` 反向代理路径即可
-
-
\ No newline at end of file
diff --git a/ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/quickstart/snail_job_init.md b/ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/quickstart/snail_job_init.md
deleted file mode 100644
index 4c6d353b..00000000
--- a/ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/quickstart/snail_job_init.md
+++ /dev/null
@@ -1,52 +0,0 @@
-# 搭建SnailJob任务调度中心(5.2.0新功能)
-- - -
-
-### 视频介绍
-
-[Snail job任务调度中心:轻松掌握任务管理、重试机制和任务编排](https://www.bilibili.com/video/BV19i421m7GL/)
-
-### 配置调度中心客户端
-> 修改主服务配置文件
->
-
-
-
-
-
-* `enabled` 可启用或关闭客户端注册
-* `server.address` 为调度中心地址
-* `server.port` 为调度中心通信端口
-* `token` 为组通信校验token(可在调度中心组配置更换)
-* `group-name` 为执行器组
-* `namespace` 作用域(不同作用域相互隔离请勿填错)
-
-### 启用调度中心
-**需执行 snail_job.sql 默认账号密码 `admin` `admin` 账号在数据库里 可以在页面修改密码**
-
-
-
-
-> 在 `ruoyi-extend -> ruoyi-snailjob-server` 模块启动
->
-
-
-> 需修改配置文件数据库连接地址(**注意: 此处为ruoyi-snailjob-server服务的配置文件 支持多种不同数据库**)
->
-
-
-### 快速入门
-
-[Snailjob快速入门 基本使用介绍](https://juejin.cn/post/7412955032092442675)
-
-### 前端修改任务调度中心访问路径
-`dev`环境 默认使用 `.env.development` 配置文件内地址
-
-
-
-`prod`环境 使用 `.env.production` 本机路由
-
-
-
-故而 `prod` 环境只需更改 `nginx` 反向代理路径即可
-
-
\ No newline at end of file
diff --git a/ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/quickstart/worker_init.md b/ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/quickstart/worker_init.md
deleted file mode 100644
index da09117a..00000000
--- a/ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/quickstart/worker_init.md
+++ /dev/null
@@ -1,43 +0,0 @@
-# 工作流初始化
-- - -
-
-### 工作流使用及配置方式
-
-1.找到项目中script下bpmn文件夹
-
-
-
-2.启动项目找到流程定义通过**部署流程文件**将bpmn文件夹下**模型.zip**上传
-
-
-
-
-
-3.导入**模型.zip**后将会出现以下列表,默认使用**leave1**,test_leave为请假申请表名称
-
-
-
-
-
-**此处表名由来与表单源码内编写的表名保持一致方可互相绑定**
-
-
-
-
-4.新增一条请假申请,提交后将会得到如下信息
-
-
-
-
-
-5.关于如何切换一个新的流程使用,当前默认使用得KEY为leave1 ,我们切换到leave2使用,我们只需点击绑定业务将表名绑定,重新发起一个新的请假申请就可以得到一个新的流程信息
-
-
-
-
-
-**此处表名由来与表单源码内编写的表名保持一致方可互相绑定**
-
-
-
-
\ No newline at end of file
diff --git a/ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/quickstart/xxl_job_init.md b/ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/quickstart/xxl_job_init.md
deleted file mode 100644
index f2751e9f..00000000
--- a/ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/quickstart/xxl_job_init.md
+++ /dev/null
@@ -1,43 +0,0 @@
-# 搭建Xxl-Job任务调度中心(5.X分支已废弃)
-- - -
-### 废弃原因
-
-长时间不维护 社区冰点 不支持jdk17 不支持boot3 不支持其他数据库等
-
-### 配置调度中心客户端
-> 修改主服务配置文件
->
-
-
-* `enabled` 可启用或关闭客户端注册
-* `admin-addresses` 为调度中心地址
-* `access-token` 为调度中心交互鉴权token
-* `executor` 为执行器配置 一个客户端为一个执行器 可配置执行器集群 使用分片任务处理
-
-### 启用调度中心
-**默认账号密码 `admin` `123456` 账号在数据库里 可以在页面修改密码**
-
-> 在 `扩展项目 -> xxl-job-admin模块` 启动
->
-
-
-> 需修改配置文件数据库连接地址(**注意: 此处为xxl-job-admin服务的配置文件**)
->
-
-
-> 也可配置邮件发送
->
-
-
-### 前端修改任务调度中心访问路径
-`dev`环境 默认使用 `.env.development` 配置文件内地址
-
-
-
-`prod`环境 使用 `.env.production` 本机路由
-
-
-
-故而 `prod` 环境只需更改 `nginx` 反向代理路径即可
-
-
diff --git a/ruoyi-admin/src/main/resources/static/static/css/vue.css b/ruoyi-admin/src/main/resources/static/static/css/vue.css
deleted file mode 100644
index 847f385a..00000000
--- a/ruoyi-admin/src/main/resources/static/static/css/vue.css
+++ /dev/null
@@ -1 +0,0 @@
-@import url("https://fonts.googleapis.com/css?family=Roboto+Mono|Source+Sans+Pro:300,400,600");*{-webkit-font-smoothing:antialiased;-webkit-overflow-scrolling:touch;-webkit-tap-highlight-color:rgba(0,0,0,0);-webkit-text-size-adjust:none;-webkit-touch-callout:none;box-sizing:border-box}body:not(.ready){overflow:hidden}body:not(.ready) .app-nav,body:not(.ready)>nav,body:not(.ready) [data-cloak]{display:none}div#app{font-size:30px;font-weight:lighter;margin:40vh auto;text-align:center}div#app:empty:before{content:"Loading..."}img.emoji{height:1.2em}img.emoji,span.emoji{vertical-align:middle}span.emoji{font-family:Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;font-size:1.2em}.progress{background-color:#42b983;background-color:var(--theme-color,#42b983);height:2px;left:0;position:fixed;right:0;top:0;transition:width .2s,opacity .4s;width:0;z-index:999999}.search .search-keyword,.search a:hover{color:#42b983;color:var(--theme-color,#42b983)}.search .search-keyword{font-style:normal;font-weight:700}body,html{height:100%}body{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;color:#34495e;font-family:Source Sans Pro,Helvetica Neue,Arial,sans-serif;font-size:15px;letter-spacing:0;margin:0;overflow-x:hidden}img{max-width:100%}a[disabled]{cursor:not-allowed;opacity:.6}kbd{border:1px solid #ccc;border-radius:3px;display:inline-block;font-size:12px!important;line-height:12px;margin-bottom:3px;padding:3px 5px;vertical-align:middle}li input[type=checkbox]{margin:0 .2em .25em 0;vertical-align:middle}.app-nav{margin:25px 60px 0 0;position:absolute;right:0;text-align:right;z-index:10}.app-nav.no-badge{margin-right:25px}.app-nav p{margin:0}.app-nav>a{margin:0 1rem;padding:5px 0}.app-nav li,.app-nav ul{display:inline-block;list-style:none;margin:0}.app-nav a{color:inherit;font-size:16px;text-decoration:none;transition:color .3s}.app-nav a.active,.app-nav a:hover{color:#42b983;color:var(--theme-color,#42b983)}.app-nav a.active{border-bottom:2px solid #42b983;border-bottom:2px solid var(--theme-color,#42b983)}.app-nav li{display:inline-block;margin:0 1rem;padding:5px 0;position:relative;cursor:pointer}.app-nav li ul{background-color:#fff;border:1px solid;border-color:#ddd #ddd #ccc;border-radius:4px;box-sizing:border-box;display:none;max-height:calc(100vh - 61px);overflow-y:auto;padding:10px 0;position:absolute;right:-15px;text-align:left;top:100%;white-space:nowrap}.app-nav li ul li{display:block;font-size:14px;line-height:1rem;margin:8px 14px;white-space:nowrap}.app-nav li ul a{display:block;font-size:inherit;margin:0;padding:0}.app-nav li ul a.active{border-bottom:0}.app-nav li:hover ul{display:block}.github-corner{border-bottom:0;position:fixed;right:0;text-decoration:none;top:0;z-index:1}.github-corner:hover .octo-arm{animation:octocat-wave .56s ease-in-out}.github-corner svg{color:#fff;fill:#42b983;fill:var(--theme-color,#42b983);height:80px;width:80px}main{display:block;position:relative;width:100vw;height:100%;z-index:0}main.hidden{display:none}.anchor{display:inline-block;text-decoration:none;transition:all .3s}.anchor span{color:#34495e}.anchor:hover{text-decoration:underline}.sidebar{border-right:1px solid rgba(0,0,0,.07);overflow-y:auto;padding:40px 0 0;position:absolute;top:0;bottom:0;left:0;transition:transform .25s ease-out;width:300px;z-index:20}.sidebar>h1{margin:0 auto 1rem;font-size:1.5rem;font-weight:300;text-align:center}.sidebar>h1 a{color:inherit;text-decoration:none}.sidebar>h1 .app-nav{display:block;position:static}.sidebar .sidebar-nav{line-height:2em;padding-bottom:40px}.sidebar li.collapse .app-sub-sidebar{display:none}.sidebar ul{margin:0 0 0 15px;padding:0}.sidebar li>p{font-weight:700;margin:0}.sidebar ul,.sidebar ul li{list-style:none}.sidebar ul li a{border-bottom:none;display:block}.sidebar ul li ul{padding-left:20px}.sidebar::-webkit-scrollbar{width:4px}.sidebar::-webkit-scrollbar-thumb{background:transparent;border-radius:4px}.sidebar:hover::-webkit-scrollbar-thumb{background:hsla(0,0%,53.3%,.4)}.sidebar:hover::-webkit-scrollbar-track{background:hsla(0,0%,53.3%,.1)}.sidebar-toggle{background-color:transparent;background-color:hsla(0,0%,100%,.8);border:0;outline:none;padding:10px;position:absolute;bottom:0;left:0;text-align:center;transition:opacity .3s;width:284px;z-index:30;cursor:pointer}.sidebar-toggle:hover .sidebar-toggle-button{opacity:.4}.sidebar-toggle span{background-color:#42b983;background-color:var(--theme-color,#42b983);display:block;margin-bottom:4px;width:16px;height:2px}body.sticky .sidebar,body.sticky .sidebar-toggle{position:fixed}.content{padding-top:60px;position:absolute;top:0;right:0;bottom:0;left:300px;transition:left .25s ease}.markdown-section{margin:0 auto;max-width:80%;padding:30px 15px 40px;position:relative}.markdown-section>*{box-sizing:border-box;font-size:inherit}.markdown-section>:first-child{margin-top:0!important}.markdown-section hr{border:none;border-bottom:1px solid #eee;margin:2em 0}.markdown-section iframe{border:1px solid #eee;width:1px;min-width:100%}.markdown-section table{border-collapse:collapse;border-spacing:0;display:block;margin-bottom:1rem;overflow:auto;width:100%}.markdown-section th{font-weight:700}.markdown-section td,.markdown-section th{border:1px solid #ddd;padding:6px 13px}.markdown-section tr{border-top:1px solid #ccc}.markdown-section p.tip,.markdown-section tr:nth-child(2n){background-color:#f8f8f8}.markdown-section p.tip{border-bottom-right-radius:2px;border-left:4px solid #f66;border-top-right-radius:2px;margin:2em 0;padding:12px 24px 12px 30px;position:relative}.markdown-section p.tip:before{background-color:#f66;border-radius:100%;color:#fff;content:"!";font-family:Dosis,Source Sans Pro,Helvetica Neue,Arial,sans-serif;font-size:14px;font-weight:700;left:-12px;line-height:20px;position:absolute;height:20px;width:20px;text-align:center;top:14px}.markdown-section p.tip code{background-color:#efefef}.markdown-section p.tip em{color:#34495e}.markdown-section p.warn{background:rgba(66,185,131,.1);border-radius:2px;padding:1rem}.markdown-section ul.task-list>li{list-style-type:none}body.close .sidebar{transform:translateX(-300px)}body.close .sidebar-toggle{width:auto}body.close .content{left:0}@media print{.app-nav,.github-corner,.sidebar,.sidebar-toggle{display:none}}@media screen and (max-width:768px){.github-corner,.sidebar,.sidebar-toggle{position:fixed}.app-nav{margin-top:16px}.app-nav li ul{top:30px}main{height:auto;min-height:100vh;overflow-x:hidden}.sidebar{left:-300px;transition:transform .25s ease-out}.content{left:0;max-width:100vw;position:static;padding-top:20px;transition:transform .25s ease}.app-nav,.github-corner{transition:transform .25s ease-out}.sidebar-toggle{background-color:transparent;width:auto;padding:30px 30px 10px 10px}body.close .sidebar{transform:translateX(300px)}body.close .sidebar-toggle{background-color:hsla(0,0%,100%,.8);transition:background-color 1s;width:284px;padding:10px}body.close .content{transform:translateX(300px)}body.close .app-nav,body.close .github-corner{display:none}.github-corner:hover .octo-arm{animation:none}.github-corner .octo-arm{animation:octocat-wave .56s ease-in-out}}@keyframes octocat-wave{0%,to{transform:rotate(0)}20%,60%{transform:rotate(-25deg)}40%,80%{transform:rotate(10deg)}}section.cover{position:relative;align-items:center;background-position:50%;background-repeat:no-repeat;background-size:cover;min-height:100vh;width:100%;display:none}section.cover.show{display:flex}section.cover.has-mask .mask{background-color:#fff;opacity:.8;position:absolute;top:0;bottom:0;width:100%}section.cover .cover-main{flex:1;margin:0 16px;text-align:center;position:relative}section.cover a{color:inherit}section.cover a,section.cover a:hover{text-decoration:none}section.cover p{line-height:1.5rem;margin:1em 0}section.cover h1{color:inherit;font-size:2.5rem;font-weight:300;margin:.625rem 0 2.5rem;position:relative;text-align:center}section.cover h1 a{display:block}section.cover h1 small{bottom:-.4375rem;font-size:1rem;position:absolute}section.cover blockquote{font-size:1.5rem;text-align:center}section.cover ul{line-height:1.8;list-style-type:none;margin:1em auto;max-width:500px;padding:0}section.cover .cover-main>p:last-child a{border-radius:2rem;border:1px solid #42b983;border-color:var(--theme-color,#42b983);box-sizing:border-box;color:#42b983;color:var(--theme-color,#42b983);display:inline-block;font-size:1.05rem;letter-spacing:.1rem;margin:.5rem 1rem;padding:.75em 2rem;text-decoration:none;transition:all .15s ease}section.cover .cover-main>p:last-child a:last-child{background-color:#42b983;background-color:var(--theme-color,#42b983);color:#fff}section.cover .cover-main>p:last-child a:last-child:hover{color:inherit;opacity:.8}section.cover .cover-main>p:last-child a:hover{color:inherit}section.cover blockquote>p>a{border-bottom:2px solid #42b983;border-bottom:2px solid var(--theme-color,#42b983);transition:color .3s}section.cover blockquote>p>a:hover{color:#42b983;color:var(--theme-color,#42b983)}.sidebar,body{background-color:#fff}.sidebar{color:#364149}.sidebar li{margin:6px 0}.sidebar ul li a{color:#505d6b;font-size:14px;font-weight:400;overflow:hidden;text-decoration:none;text-overflow:ellipsis;white-space:nowrap}.sidebar ul li a:hover{text-decoration:underline}.sidebar ul li ul{padding:0}.sidebar ul li.active>a{border-right:2px solid;color:#42b983;color:var(--theme-color,#42b983);font-weight:600}.app-sub-sidebar li:before{content:"-";padding-right:4px;float:left}.markdown-section h1,.markdown-section h2,.markdown-section h3,.markdown-section h4,.markdown-section strong{color:#2c3e50;font-weight:600}.markdown-section a{color:#42b983;color:var(--theme-color,#42b983);font-weight:600}.markdown-section h1{font-size:2rem;margin:0 0 1rem}.markdown-section h2{font-size:1.75rem;margin:45px 0 .8rem}.markdown-section h3{font-size:1.5rem;margin:40px 0 .6rem}.markdown-section h4{font-size:1.25rem}.markdown-section h5{font-size:1rem}.markdown-section h6{color:#777;font-size:1rem}.markdown-section figure,.markdown-section p{margin:1.2em 0}.markdown-section ol,.markdown-section p,.markdown-section ul{line-height:1.6rem;word-spacing:.05rem}.markdown-section ol,.markdown-section ul{padding-left:1.5rem}.markdown-section blockquote{border-left:4px solid #42b983;border-left:4px solid var(--theme-color,#42b983);color:#858585;margin:2em 0;padding-left:20px}.markdown-section blockquote p{font-weight:600;margin-left:0}.markdown-section iframe{margin:1em 0}.markdown-section em{color:#7f8c8d}.markdown-section code,.markdown-section output:after,.markdown-section pre{font-family:Roboto Mono,Monaco,courier,monospace}.markdown-section code,.markdown-section pre{background-color:#f8f8f8}.markdown-section output,.markdown-section pre{margin:1.2em 0;position:relative}.markdown-section output,.markdown-section pre>code{border-radius:2px;display:block}.markdown-section output:after,.markdown-section pre>code{-moz-osx-font-smoothing:initial;-webkit-font-smoothing:initial}.markdown-section code{border-radius:2px;color:#e96900;margin:0 2px;padding:3px 5px;white-space:pre-wrap}.markdown-section>:not(h1):not(h2):not(h3):not(h4):not(h5):not(h6) code{font-size:.8rem}.markdown-section pre{padding:0 1.4rem;line-height:1.5rem;overflow:auto;word-wrap:normal}.markdown-section pre>code{color:#525252;font-size:.8rem;padding:2.2em 5px;line-height:inherit;margin:0 2px;max-width:inherit;overflow:inherit;white-space:inherit}.markdown-section output{padding:1.7rem 1.4rem;border:1px dotted #ccc}.markdown-section output>:first-child{margin-top:0}.markdown-section output>:last-child{margin-bottom:0}.markdown-section code:after,.markdown-section code:before,.markdown-section output:after,.markdown-section output:before{letter-spacing:.05rem}.markdown-section output:after,.markdown-section pre:after{color:#ccc;font-size:.6rem;font-weight:600;height:15px;line-height:15px;padding:5px 10px 0;position:absolute;right:0;text-align:right;top:0;content:attr(data-lang)}.token.cdata,.token.comment,.token.doctype,.token.prolog{color:#8e908c}.token.namespace{opacity:.7}.token.boolean,.token.number{color:#c76b29}.token.punctuation{color:#525252}.token.property{color:#c08b30}.token.tag{color:#2973b7}.token.string{color:#42b983;color:var(--theme-color,#42b983)}.token.selector{color:#6679cc}.token.attr-name{color:#2973b7}.language-css .token.string,.style .token.string,.token.entity,.token.url{color:#22a2c9}.token.attr-value,.token.control,.token.directive,.token.unit{color:#42b983;color:var(--theme-color,#42b983)}.token.function,.token.keyword{color:#e96900}.token.atrule,.token.regex,.token.statement{color:#22a2c9}.token.placeholder,.token.variable{color:#3d8fd1}.token.deleted{text-decoration:line-through}.token.inserted{border-bottom:1px dotted #202746;text-decoration:none}.token.italic{font-style:italic}.token.bold,.token.important{font-weight:700}.token.important{color:#c94922}.token.entity{cursor:help}code .token{-moz-osx-font-smoothing:initial;-webkit-font-smoothing:initial;min-height:1.5rem;position:relative;left:auto}
\ No newline at end of file
diff --git a/ruoyi-admin/src/main/resources/static/static/image/favicon.ico b/ruoyi-admin/src/main/resources/static/static/image/favicon.ico
deleted file mode 100644
index 3f919d85a5d1e093fd8d80ebcbe9987a3bdbb54f..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001
literal 8131
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
d+2AD?_zza93G2_wa8hsDrQ(_BS&^YK
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%0Ar%T_GGt_c=};c*I8x
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