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

98 lines
5.4 KiB
SQL
Raw Permalink 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-5 权限点与页面菜单种子(可重放)。执行顺序:19_it5_columns.sql → 本文件。
-- 依据:公寓端/04 表 4-9(叫乘 6 接口)、表 4-10(叫乘域映射)、13 表 13-15
-- 口径:
-- 1) `apt:jcxx:list` 在 IT-1 已登记并置灰(menu_id 3004),本期**启用**,
-- 不新增重复点。
-- 2) 新增 3 个 F 点:详情/时间线(query)、非状态修正(correct)、
-- 状态机命令(changeStatus)。
-- 3) 新增 1 个 C 页面菜单 3203「叫乘台账」,路由 /apt/jcxx。
-- 4) 设备侧 `/open/v1/tablet/**`(N-03/N-04/N-05)走设备四要素鉴权,
-- 无权限点字符串,本脚本不为其建点。
-- 5) 本脚本不引入 role_id 300 的任何 apt 权限。
-- =============================================================================
SET NAMES utf8mb4;
-- 1. 启用 IT-1 预置的叫乘列表权限点(3004)
UPDATE sys_menu
SET visible = '0', status = '0',
remark = 'IT-5 启用:/apt/jcxx/list 与 /apt/jcxx/statistics(IT-1 预置并置灰)'
WHERE menu_id = 3004 AND perms = 'apt:jcxx: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
(3220, '叫乘详情', 3000, 20, '', '', '', '', 1, 0, 'F', '0', '0',
'apt:jcxx:query', '#', 'IT-5', NOW(),
'IT-5 详情与时间线:状态迁移 + AMI 事件 + 人工命令按 at 升序,只读'),
(3221, '叫乘修正', 3000, 21, '', '', '', '', 1, 0, 'F', '0', '0',
'apt:jcxx:correct', '#', 'IT-5', NOW(),
'IT-5 非状态字段白名单修正(fjh/jlid/cc/jch/leaveRemark/is_temp_call);ryzt 等一律 40001'),
(3222, '叫乘命令', 3000, 22, '', '', '', '', 1, 0, 'F', '0', '0',
'apt:jcxx:changeStatus', '#', 'IT-5', NOW(),
'IT-5 STOP/RE_CALL/FORCE_FINISH/MARK_LEAVE/CANCEL,commandId 幂等,非法状态 40902')
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
(3203, '叫乘台账', 3000, 7, 'jcxx', 'apt/jcxx/index', '', '', 1, 0, 'C', '0', '0',
'', 'phone', 'IT-5', NOW(),
'IT-5 / M3 叫乘台账:只读 + 提交命令;无「编辑状态」入口(PUT /apt/jcxx/{id} 不存在)')
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 (3203, 3004, 3220, 3221, 3222)
AND NOT EXISTS (SELECT 1 FROM sys_role_menu rm WHERE rm.role_id = 1 AND rm.menu_id = m.menu_id);
-- 5. 叫乘扫描任务(默认停用,试点时手工启用)
-- 说明:invoke_target 必须是 com.ruoyi.quartz.task 包内的 bean,
-- 故 Job 类放在 ruoyi-apt 模块的 com.ruoyi.quartz.task.AptDispatchTask,
-- 委托 AptDispatchScanService;不扩若依白名单。
INSERT INTO sys_job
(job_id, job_name, job_group, invoke_target, cron_expression, misfire_policy,
concurrent, status, create_by, create_time, remark)
VALUES
(103, '叫乘扫描(平板派发/过期/SIP 超时)', 'SYSTEM', 'aptDispatchTask.scan()', '0 * * * * ?',
'1', '1', '1', 'IT-5', NOW(),
'IT-5 每分钟:回收过期平板任务、补生成任务、SIP 30s 无入会转叫乘报警;默认停用')
ON DUPLICATE KEY UPDATE job_name = VALUES(job_name), invoke_target = VALUES(invoke_target),
cron_expression = VALUES(cron_expression), remark = VALUES(remark);
-- 6. 校验
SELECT '=== IT-5 权限点与页面菜单(应 5 行:3004 + 3220~3222 + 3203)===' AS section;
SELECT menu_id, menu_name, menu_type, visible, status, perms, component
FROM sys_menu WHERE menu_id IN (3004, 3220, 3221, 3222, 3203) ORDER BY menu_id;
SELECT '=== C 菜单组件路径(须与 src/views/apt/jcxx/index.vue 一致)===' AS section;
SELECT menu_id, CONCAT('src/views/', component, '.vue') AS vue_file
FROM sys_menu WHERE menu_id = 3203;
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 (3203, 3004, 3220, 3221, 3222);
SELECT '=== 公寓端菜单树构成(M=1 / C=7 / F=27)===' 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 ('apt:jcxx:list','apt:jcxx:query','apt:jcxx:correct','apt:jcxx:changeStatus')
AND (visible <> '0' OR status <> '0');