97 lines
5.4 KiB
SQL
97 lines
5.4 KiB
SQL
-- =============================================================================
|
||||
|
|
-- 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');
|