Merge branch 'feat/multi-tenant' into feat/iot-2.0
同步 multi-tenant 分支最新变更: - feat(system): SSO 回调换 Token + OAuth2 客户端 platform 过滤菜单 - chore(tenant): Tenant RPC Feign 引入 ProjectCommonApi - feat(web): API 访问日志 exclude-paths 过滤 - fix(iot): 轨迹检测防抖 + eventTime 修正 - perf(system): 项目授权校验优化 + isSuperAdmin 缓存切换 - feat(system): 超管绕过 user_project + 项目成员分页 API - chore(ci): 部署磁盘预检 + 自动清理镜像 - chore: .gitattributes 统一行尾 LF Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,51 @@
|
||||
-- ============================================================
|
||||
-- 多前端按 client → platform 过滤菜单
|
||||
-- 配合后端代码:AuthController.getPermissionInfo / MenuService.filterMenusByPlatform
|
||||
-- 日期:2026-04-20
|
||||
--
|
||||
-- platform 取值约定:
|
||||
-- biz = 业务平台(对应 OAuth2 客户端 default)
|
||||
-- iot = 物联运维平台(对应 OAuth2 客户端 iot-client)
|
||||
-- NULL = 两个平台都展示(通用菜单,如系统管理、用户、部门等)
|
||||
-- ============================================================
|
||||
|
||||
-- 1. system_oauth2_client 加 platform 列
|
||||
ALTER TABLE `system_oauth2_client`
|
||||
ADD COLUMN `platform` VARCHAR(10) NULL DEFAULT NULL
|
||||
COMMENT '平台标识:biz-业务平台,iot-物联运维平台,NULL-不按客户端过滤菜单'
|
||||
AFTER `additional_information`;
|
||||
|
||||
-- 2. 矫正 system_menu.platform 列的注释(旧注释写的是 ops/sys,与代码约定不一致,更新为 biz/iot)
|
||||
ALTER TABLE `system_menu`
|
||||
MODIFY COLUMN `platform` VARCHAR(10) NULL DEFAULT NULL
|
||||
COMMENT '平台标识:biz-业务平台,iot-物联运维平台,NULL-两个平台都展示';
|
||||
|
||||
-- 3. 给两个内部 SSO 客户端打 platform 标
|
||||
-- 业务平台复用 yudao 默认 default 客户端 → biz
|
||||
-- 物联运维平台用独立 iot-client → iot
|
||||
UPDATE `system_oauth2_client` SET `platform` = 'biz' WHERE `client_id` = 'default';
|
||||
UPDATE `system_oauth2_client` SET `platform` = 'iot' WHERE `client_id` = 'iot-client';
|
||||
|
||||
-- 4. 给 IoT 模块的菜单打 iot 标记。从 sql/mysql/system_menu.sql 看,
|
||||
-- IoT 设备接入 root id=4000,整个子树都属于 iot 平台。
|
||||
UPDATE `system_menu` SET `platform` = 'iot'
|
||||
WHERE `id` IN (
|
||||
SELECT t.id FROM (
|
||||
-- 递归取 4000 子树。MySQL 8 用 CTE,旧版自行替换为多次 UPDATE
|
||||
WITH RECURSIVE iot_tree(id) AS (
|
||||
SELECT id FROM system_menu WHERE id = 4000
|
||||
UNION ALL
|
||||
SELECT m.id FROM system_menu m JOIN iot_tree it ON m.parent_id = it.id
|
||||
)
|
||||
SELECT id FROM iot_tree
|
||||
) t
|
||||
);
|
||||
|
||||
-- 5. 业务平台独有菜单标 biz(可选;不标的话默认 NULL = 两边都显示)
|
||||
-- 例如 OA 示例(id=5):
|
||||
-- UPDATE `system_menu` SET `platform` = 'biz' WHERE `id` IN (5);
|
||||
|
||||
-- 6. 系统管理 / 基础设施 / 用户 / 部门 / 字典 等通用菜单保持 NULL,两边共用。
|
||||
|
||||
-- 7. 改完客户端后,记得在后台 OAuth2 客户端管理页面"保存"一次刷新缓存;
|
||||
-- 或重启后端清缓存(Redis key: oauth2_client)。
|
||||
18
sql/mysql/migrations/2026-04-20_02_bulk_mark_biz_menus.sql
Normal file
18
sql/mysql/migrations/2026-04-20_02_bulk_mark_biz_menus.sql
Normal file
@@ -0,0 +1,18 @@
|
||||
-- ============================================================
|
||||
-- 批量给「非 IoT 菜单」打上 platform='biz'
|
||||
-- 策略:iot 平台只看设备接入子树(4000),其余(含系统管理、基础设施、OA、各 demo)一律归业务平台
|
||||
-- 日期:2026-04-20
|
||||
-- ============================================================
|
||||
|
||||
-- 所有 platform 还是 NULL 的,一律改为 biz
|
||||
-- (platform='iot' 的行已经在上一次迁移里设过,不会被动)
|
||||
UPDATE system_menu
|
||||
SET platform = 'biz'
|
||||
WHERE deleted = 0 AND platform IS NULL;
|
||||
|
||||
-- 验证
|
||||
SELECT platform, COUNT(*) AS cnt FROM system_menu WHERE deleted = 0 GROUP BY platform;
|
||||
-- 预期:
|
||||
-- biz = 大部分(系统管理/基础设施/OA/demos 等)
|
||||
-- iot = 设备接入子树(~50)
|
||||
-- NULL = 0
|
||||
Reference in New Issue
Block a user