Skip to content

删除功能 ​

这篇解决什么 ​

内置功能多,多数情况只要在菜单里停用。只有确定永远不用、并且能接受不可逆改动时,才按「菜单 → 表 → 后端 → 前端 → 验收」拆干净。下面以多租户为例,其它功能同五步。

优先停用,不要删代码

管理端「菜单管理」把状态关掉即可。以后要再用,再打开。

菜单管理里停用功能

本系统截图:打开菜单编辑,把「菜单状态」设为关闭即可停用。

只想单租户跑,也可以关开关:

名称说明仓库路径
yudao.tenant.enable默认 true。设为 false 即关闭多租户ruoyi-office/yudao-server/src/main/resources/application.yaml

同文件里已有 ignore-urls / ignore-tables(例如 /admin-api/system/auth/**、system_user_role)。

真删不可逆

新分支、工作区干净、先备份库。至少备份 system_tenant、system_tenant_package 以及带 tenant_id 的业务表。可用 AI 先出删除计划,人审过再改。

第一步:菜单 ​

「系统管理 → 菜单管理」删「租户管理」目录及子项(列表、套餐、切换等)。再清 system_role_menu 里已经不存在的 menu_id。种子在 ruoyi-office-db,改完归档增量 SQL,避免下次初始化又长回来。

第二步:表 ​

租户列表也可先在界面核对,再决定删哪些表:

租户列表

本系统截图。

名称说明仓库路径
TenantDO租户主表,@TableName("system_tenant")yudao-module-system-server/.../dal/dataobject/tenant/TenantDO.java
TenantPackageDO套餐 system_tenant_package同目录 TenantPackageDO.java
TenantPackageAssetDO套餐资产 system_tenant_package_asset同目录
TenantTransferJobDO迁移任务 system_tenant_transfer_job同目录
TenantDatabaseInterceptor给 SQL 拼 tenant_idyudao-spring-boot-starter-biz-tenant/.../TenantDatabaseInterceptor.java

第一次建议保留各表 tenant_id 列,只删租户表、关框架。确认单租户稳定后再考虑 DROP COLUMN。

sql
DROP TABLE IF EXISTS system_tenant_transfer_job;
DROP TABLE IF EXISTS system_tenant_package_asset;
DROP TABLE IF EXISTS system_tenant_package;
DROP TABLE IF EXISTS system_tenant;

第三步:后端 ​

名称说明仓库路径
管理端接口租户、套餐controller/admin/tenant/
业务与 DALService、DO、Mapper、Convertservice/tenant/、dal/.../tenant/
对外 APITenantApiImpl、TenantCommonApisystem-server / yudao-common
框架 Starter删模块并从各 pom 去掉依赖yudao-framework/yudao-spring-boot-starter-biz-tenant/

用搜索核对 yudao-spring-boot-starter-biz-tenant 是否还有引用。

拆壳保芯

TenantUtils.execute / executeIgnore 只是临时切租户上下文。去掉包装,留下 lambda 里的业务。addTenantHeader 只是塞 tenant-id 请求头,可删行。@TenantIgnore、@TenantJob 只去注解。TenantContextHolder.getTenantId() 按调用处改掉。

java
// 删除前
TenantUtils.execute(tenant.getId(), () -> {
    Long roleId = createRole(tenantPackage);
    createUser(roleId, createReqVO);
});

// 删除后
Long roleId = createRole(tenantPackage);
createUser(roleId, createReqVO);

TenantBaseDO 若还在,各 DO 要改继承,不能只删父类。

第四步:前端 ​

名称说明仓库路径
租户页列表与表单ruoyi-office-vben/apps/web-antd/src/views/system/tenant/
套餐页套餐与资产src/views/system/tenantPackage/
API请求封装src/api/system/tenant/、src/api/system/tenant-package/

启动 PC,按报错清 import。

第五步:验收 ​

编译通过不等于隔离已消失。再搜 TenantUtils、tenant-id、TenantLineHandler。登录、切菜单、跑一遍核心单据。

@TenantJob 去掉后只会跑一遍。若原来依赖「每个租户执行一次」,要自己改调度。

其它功能同样五步:菜单、表、后端、前端、验收。跨模块引用先从 *-api 搜。

配置与操作 ​

先停菜单再删表和代码,最后搜 TenantUtils / 跨模块 api。编译通过不等于隔离消失。

开启见 框架层。截图见上文菜单和租户。

相关篇 ​

联系我们

获取报价、演示和二开方案

微信咨询二维码

微信咨询

17156169080

添加时备注「RuoYi Office」

在线体验商业版