Files
jcgl-dev/dev/sql/apt_rev01/18_it4_permissions.sql
T
zfjia 35751b4f00
IT-0 verify / verify (push) Waiting to run
1111
2026-11-11 18:30:31 +08:00

81 lines
4.6 KiB
SQL
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
-- =============================================================================
-- IT-4 权限点与页面菜单种子(可重放)。执行顺序:17_it4_columns.sql → 本文件。
-- 依据:公寓端/11 表 11-33(权限点)、表 11-34(接口清单 N-38~N-47)、
-- 13 表 13-14、CR-02 表 3-57 验收 18~20。
-- 口径:
-- 1) `duty:checkin:list` 在 IT-1 已登记并置灰(menu_id 3005),本期**启用**,不新增重复点。
-- 2) 新增 3 个 F 点:审核(review)/ 换房(adjust)/ 管理端查询(apt:checkin:query)。
-- 3) 新增 1 个 C 页面菜单 3202「入住审核」,完整路由 /apt/checkin。
-- 4) 设备侧 `/open/v1/checkin/**`(N-39~N-41)走设备四要素鉴权,无权限点字符串。
-- 5) 跨公寓、超范围一律 40302/40303;本脚本不引入 role_id 300 的任何 apt 权限。
-- =============================================================================
-- 1. 启用 IT-1 预置的入住列表权限点(3005)
UPDATE sys_menu
SET visible = '0', status = '0',
remark = 'IT-4 启用:N-42 入住待审列表 duty:checkin:list(IT-1 预置并置灰)'
WHERE menu_id = 3005 AND perms = 'duty:checkin:list';
-- 2. 新增 F 权限点(parent 3000)
INSERT INTO sys_menu
(menu_id, menu_name, parent_id, order_num, path, component, query, route_name,
is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, remark)
VALUES
(3217, '入住审核', 3000, 17, '', '', '', '', 1, 0, 'F', '0', '0',
'duty:checkin:review', '#', 'IT-4', NOW(),
'IT-4 N-44 审核:APPROVE / APPROVE_WITH_ROOM_CHANGE / REJECT,须二次确认且带 expectedBizVersion'),
(3218, '入住换房', 3000, 18, '', '', '', '', 1, 0, 'F', '0', '0',
'duty:checkin:adjust', '#', 'IT-4', NOW(),
'IT-4 N-45 换房:仅审核期(APPROVED / ROOM_ADJUSTED),CHECKED_IN 后走退宿换房(40926)'),
(3219, '入住查询', 3000, 19, '', '', '', '', 1, 0, 'F', '0', '0',
'apt:checkin:query', '#', 'IT-4', NOW(),
'IT-4 N-47 按 jcid 查入住与叫乘任务(管理端只读,不接受客户端 gyid)')
ON DUPLICATE KEY UPDATE menu_name = VALUES(menu_name), parent_id = VALUES(parent_id),
order_num = VALUES(order_num), menu_type = VALUES(menu_type), visible = VALUES(visible),
status = VALUES(status), perms = VALUES(perms), remark = VALUES(remark);
-- 3. C 页面菜单(父目录 3000)
INSERT INTO sys_menu
(menu_id, menu_name, parent_id, order_num, path, component, query, route_name,
is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, remark)
VALUES
(3202, '入住审核', 3000, 6, 'checkin', 'apt/checkin/index', '', '', 1, 0, 'C', '0', '0',
'', 'druid', 'IT-4', NOW(),
'IT-4 值班台入住待审台账:审核/换房/时间线只读;换房仅审核期,入住后走退宿换房')
ON DUPLICATE KEY UPDATE menu_name = VALUES(menu_name), parent_id = VALUES(parent_id),
order_num = VALUES(order_num), path = VALUES(path), component = VALUES(component),
menu_type = VALUES(menu_type), visible = VALUES(visible), status = VALUES(status),
icon = VALUES(icon), remark = VALUES(remark);
-- 4. 超管关联(本期全部可用)
INSERT INTO sys_role_menu (role_id, menu_id)
SELECT 1, m.menu_id FROM sys_menu m
WHERE m.menu_id IN (3202, 3005, 3217, 3218, 3219)
AND NOT EXISTS (SELECT 1 FROM sys_role_menu rm WHERE rm.role_id = 1 AND rm.menu_id = m.menu_id);
-- 5. 校验
SELECT '=== IT-4 权限点与页面菜单(应 5 行:3005 + 3217~3219 + 3202)===' AS section;
SELECT menu_id, menu_name, menu_type, visible, status, perms, component
FROM sys_menu WHERE menu_id IN (3005, 3217, 3218, 3219, 3202) ORDER BY menu_id;
SELECT '=== C 菜单组件路径(须与 src/views/apt/checkin/index.vue 一致)===' AS section;
SELECT menu_id, CONCAT('src/views/', component, '.vue') AS vue_file
FROM sys_menu WHERE menu_id = 3202;
SELECT '=== 超管关联(应 5)===' AS section;
SELECT COUNT(*) AS admin_bound
FROM sys_role_menu rm JOIN sys_menu m ON m.menu_id = rm.menu_id
WHERE rm.role_id = 1 AND m.menu_id IN (3202, 3005, 3217, 3218, 3219);
SELECT '=== 公寓端菜单树构成(应 M=1 / C=6 / F=24)===' AS section;
SELECT menu_type, COUNT(*) AS cnt
FROM sys_menu
WHERE menu_id = 3000 OR parent_id = 3000
GROUP BY menu_type ORDER BY menu_type;
SELECT '=== 无遗留置灰的入住权限点(应为 0)===' AS section;
SELECT COUNT(*) AS still_grey
FROM sys_menu
WHERE perms IN ('duty:checkin:list','duty:checkin:review','duty:checkin:adjust','apt:checkin:query')
AND (visible <> '0' OR status <> '0');