feat(ai-house): 解除房源与资料库强绑定
This commit is contained in:
@@ -0,0 +1,146 @@
|
||||
-- 房源知识库后台菜单与权限。
|
||||
-- 执行前请确认目标租户;当前开发环境为 10550,部署到其他租户时须改为对应租户 ID。
|
||||
-- 脚本按“房源管理”父菜单动态挂载;若最后的校验结果显示 parent_menu_id 为 NULL,
|
||||
-- 请先检查该租户的 sys_menu 数据后再执行。
|
||||
|
||||
SET @house_knowledge_tenant_id := 10550;
|
||||
SET @house_knowledge_advisor_role_code := NULL;
|
||||
-- 示例:SET @house_knowledge_advisor_role_code := 'consultant';
|
||||
|
||||
START TRANSACTION;
|
||||
|
||||
SET @house_knowledge_parent_menu_id := (
|
||||
SELECT menu_id
|
||||
FROM sys_menu
|
||||
WHERE tenant_id = @house_knowledge_tenant_id
|
||||
AND deleted = 0
|
||||
AND menu_type = 0
|
||||
AND (title = '房源管理' OR path IN ('/house', 'house'))
|
||||
ORDER BY CASE WHEN title = '房源管理' THEN 0 ELSE 1 END, menu_id
|
||||
LIMIT 1
|
||||
);
|
||||
|
||||
INSERT INTO sys_menu (
|
||||
parent_id, title, path, component, menu_type, sort_number,
|
||||
authority, icon, hide, meta, app_id, tenant_id, deleted
|
||||
)
|
||||
SELECT
|
||||
parent.menu_id, '房源知识库', '/house/knowledge', 'house/knowledge/index', 0, 90,
|
||||
'house:knowledge', '', 0, '{}', parent.app_id, @house_knowledge_tenant_id, 0
|
||||
FROM sys_menu parent
|
||||
WHERE parent.menu_id = @house_knowledge_parent_menu_id
|
||||
AND NOT EXISTS (
|
||||
SELECT 1
|
||||
FROM sys_menu existing
|
||||
WHERE existing.tenant_id = @house_knowledge_tenant_id
|
||||
AND existing.deleted = 0
|
||||
AND existing.path = '/house/knowledge'
|
||||
);
|
||||
|
||||
SET @house_knowledge_menu_id := (
|
||||
SELECT menu_id
|
||||
FROM sys_menu
|
||||
WHERE tenant_id = @house_knowledge_tenant_id
|
||||
AND deleted = 0
|
||||
AND path = '/house/knowledge'
|
||||
ORDER BY menu_id
|
||||
LIMIT 1
|
||||
);
|
||||
|
||||
-- 地点档案和标签字典由租户管理员维护;知识条目可单独授予顾问维护。
|
||||
INSERT INTO sys_menu (
|
||||
parent_id, title, path, component, menu_type, sort_number,
|
||||
authority, icon, hide, meta, app_id, tenant_id, deleted
|
||||
)
|
||||
SELECT
|
||||
@house_knowledge_menu_id, permission.title, '', '', 1, permission.sort_number,
|
||||
permission.authority, '', 0, '{}', menu.app_id, @house_knowledge_tenant_id, 0
|
||||
FROM sys_menu menu
|
||||
JOIN (
|
||||
SELECT '查看地点档案' AS title, 'house:knowledge:location:list' AS authority, 10 AS sort_number
|
||||
UNION ALL SELECT '维护地点档案', 'house:knowledge:location:manage', 20
|
||||
UNION ALL SELECT '查看知识标签', 'house:knowledge:tag:list', 30
|
||||
UNION ALL SELECT '维护知识标签', 'house:knowledge:tag:manage', 40
|
||||
UNION ALL SELECT '查看知识条目', 'house:knowledge:entry:list', 50
|
||||
UNION ALL SELECT '新增知识条目', 'house:knowledge:entry:save', 60
|
||||
UNION ALL SELECT '编辑知识条目', 'house:knowledge:entry:update', 70
|
||||
UNION ALL SELECT '删除知识条目', 'house:knowledge:entry:remove', 80
|
||||
) permission
|
||||
WHERE menu.menu_id = @house_knowledge_menu_id
|
||||
AND NOT EXISTS (
|
||||
SELECT 1
|
||||
FROM sys_menu existing
|
||||
WHERE existing.tenant_id = @house_knowledge_tenant_id
|
||||
AND existing.deleted = 0
|
||||
AND existing.authority = permission.authority
|
||||
);
|
||||
|
||||
-- 管理员拥有菜单及全部知识库维护权限。
|
||||
INSERT INTO sys_role_menu (role_id, menu_id, tenant_id)
|
||||
SELECT role.role_id, menu.menu_id, @house_knowledge_tenant_id
|
||||
FROM sys_role role
|
||||
JOIN sys_menu menu
|
||||
ON menu.tenant_id = @house_knowledge_tenant_id
|
||||
AND menu.deleted = 0
|
||||
WHERE role.tenant_id = @house_knowledge_tenant_id
|
||||
AND role.deleted = 0
|
||||
AND role.role_code IN ('admin', 'superAdmin')
|
||||
AND (menu.menu_id = @house_knowledge_menu_id OR menu.parent_id = @house_knowledge_menu_id)
|
||||
AND NOT EXISTS (
|
||||
SELECT 1
|
||||
FROM sys_role_menu existing
|
||||
WHERE existing.role_id = role.role_id
|
||||
AND existing.menu_id = menu.menu_id
|
||||
AND existing.tenant_id = @house_knowledge_tenant_id
|
||||
);
|
||||
|
||||
-- 顾问仅获得查看地点/标签及知识条目维护权限。
|
||||
-- 将 @house_knowledge_advisor_role_code 设为实际角色编码后才会生效。
|
||||
INSERT INTO sys_role_menu (role_id, menu_id, tenant_id)
|
||||
SELECT role.role_id, menu.menu_id, @house_knowledge_tenant_id
|
||||
FROM sys_role role
|
||||
JOIN sys_menu menu
|
||||
ON menu.tenant_id = @house_knowledge_tenant_id
|
||||
AND menu.deleted = 0
|
||||
WHERE @house_knowledge_advisor_role_code IS NOT NULL
|
||||
AND role.tenant_id = @house_knowledge_tenant_id
|
||||
AND role.deleted = 0
|
||||
AND role.role_code = @house_knowledge_advisor_role_code
|
||||
AND menu.authority IN (
|
||||
'house:knowledge',
|
||||
'house:knowledge:location:list',
|
||||
'house:knowledge:tag:list',
|
||||
'house:knowledge:entry:list',
|
||||
'house:knowledge:entry:save',
|
||||
'house:knowledge:entry:update',
|
||||
'house:knowledge:entry:remove'
|
||||
)
|
||||
AND NOT EXISTS (
|
||||
SELECT 1
|
||||
FROM sys_role_menu existing
|
||||
WHERE existing.role_id = role.role_id
|
||||
AND existing.menu_id = menu.menu_id
|
||||
AND existing.tenant_id = @house_knowledge_tenant_id
|
||||
);
|
||||
|
||||
COMMIT;
|
||||
|
||||
-- 执行后校验:应返回一个父菜单、一个知识库菜单和 8 个按钮权限。
|
||||
SELECT @house_knowledge_parent_menu_id AS parent_menu_id,
|
||||
@house_knowledge_menu_id AS house_knowledge_menu_id;
|
||||
|
||||
SELECT menu_id, parent_id, title, path, component, menu_type, authority, sort_number
|
||||
FROM sys_menu
|
||||
WHERE tenant_id = @house_knowledge_tenant_id
|
||||
AND deleted = 0
|
||||
AND (menu_id = @house_knowledge_menu_id OR parent_id = @house_knowledge_menu_id)
|
||||
ORDER BY menu_type, sort_number, menu_id;
|
||||
|
||||
SELECT role.role_code, role.role_name, menu.title, menu.authority
|
||||
FROM sys_role_menu role_menu
|
||||
JOIN sys_role role ON role.role_id = role_menu.role_id
|
||||
JOIN sys_menu menu ON menu.menu_id = role_menu.menu_id
|
||||
WHERE role_menu.tenant_id = @house_knowledge_tenant_id
|
||||
AND menu.deleted = 0
|
||||
AND (menu.menu_id = @house_knowledge_menu_id OR menu.parent_id = @house_knowledge_menu_id)
|
||||
ORDER BY role.role_code, menu.menu_type, menu.sort_number, menu.menu_id;
|
||||
Reference in New Issue
Block a user