infra-parent

租户应用菜单同步

设计目标

租户 1 是平台模板租户,负责维护平台下发的应用、菜单、按钮以及租户管理员的默认授权范围。其他租户在创建时获得独立数据副本,后续由租户 1 的平台管理员按需增量同步。

同步不依赖客户端提交租户请求头。当前登录人必须是租户 1 的平台管理员,目标租户 ID 只是受控平台接口的业务参数。

数据对应关系

新建租户

新建租户以租户 1 为模板,依次初始化设备端、默认部门、应用、第三方认证占位配置、菜单按钮和租户管理员。应用的 SSO 密钥、回调地址及注销推送地址不会复制。

每个业务租户只创建租户管理员,不再创建平台管理员。平台管理员只存在于租户 1。

同步规则

预览和执行使用同一套差异计算规则。同步具有幂等性,没有模板变化时重复执行不会新增或更新数据。

接口

GET  /tenant/{id}/permission-sync/preview
POST /tenant/{id}/permission-sync

两个接口都需要 system:tenant:sync 权限,并在处理器中再次校验当前登录人属于租户 1 且拥有平台管理员角色。

历史数据

增量脚本只增加来源字段、唯一索引和平台同步权限,不尝试通过名称、路由等不稳定字段匹配历史租户菜单。已有菜单但没有任何来源记录的历史租户会被同步接口拒绝,应清理后通过新流程重新创建。

数据库升级脚本: