-- 复诊到期提醒(需求 4 弹窗)接口按钮权限,挂在「中医诊单」(perms=tcm.diagnosis/lists, type=C) 下。 -- 为什么必须登记:AuthMiddleware.php:111-117 对「未在菜单登记」的接口对所有登录账号直接放行, -- 因此 pending / summary / snooze / snoozeAll / contact / close 六个 action 全部登记为 A 类权限点, -- 未授权账号调用将返回「权限不足」(验收 §11 需求 4 第 7 条)。 -- 为什么自动授权:登记后若不授予,现有医助会立刻失权、弹窗不弹;末尾 INSERT IGNORE 把六个权限点授予 -- 所有已拥有 tcm.diagnosis/lists 的角色(写法照抄 1.9.20260803/add_performance_dashboard_menu.sql:50-56)。 -- 超管(root=1)不走菜单校验;「全部菜单」类角色若按 * 配置需人工复核。执行后需清理 AdminAuthCache 或等缓存过期。 -- 幂等:INSERT … SELECT … WHERE NOT EXISTS,可重复执行。排序 70~75 紧随 1.9.20260505 的待办权限(60~62)。 SET @diag_menu_id := (SELECT id FROM zyt_system_menu WHERE perms = 'tcm.diagnosis/lists' AND type = 'C' LIMIT 1); INSERT INTO zyt_system_menu (pid, type, name, icon, sort, perms, paths, component, selected, params, is_cache, is_show, is_disable, create_time, update_time) SELECT @diag_menu_id, 'A', '复诊到期-弹窗待办', '', 70, 'tcm.revisitDue/pending', '', '', '', '', 0, 1, 0, UNIX_TIMESTAMP(), UNIX_TIMESTAMP() FROM DUAL WHERE @diag_menu_id IS NOT NULL AND NOT EXISTS (SELECT 1 FROM zyt_system_menu WHERE perms = 'tcm.revisitDue/pending'); INSERT INTO zyt_system_menu (pid, type, name, icon, sort, perms, paths, component, selected, params, is_cache, is_show, is_disable, create_time, update_time) SELECT @diag_menu_id, 'A', '复诊到期-计数', '', 71, 'tcm.revisitDue/summary', '', '', '', '', 0, 1, 0, UNIX_TIMESTAMP(), UNIX_TIMESTAMP() FROM DUAL WHERE @diag_menu_id IS NOT NULL AND NOT EXISTS (SELECT 1 FROM zyt_system_menu WHERE perms = 'tcm.revisitDue/summary'); INSERT INTO zyt_system_menu (pid, type, name, icon, sort, perms, paths, component, selected, params, is_cache, is_show, is_disable, create_time, update_time) SELECT @diag_menu_id, 'A', '复诊到期-延迟', '', 72, 'tcm.revisitDue/snooze', '', '', '', '', 0, 1, 0, UNIX_TIMESTAMP(), UNIX_TIMESTAMP() FROM DUAL WHERE @diag_menu_id IS NOT NULL AND NOT EXISTS (SELECT 1 FROM zyt_system_menu WHERE perms = 'tcm.revisitDue/snooze'); INSERT INTO zyt_system_menu (pid, type, name, icon, sort, perms, paths, component, selected, params, is_cache, is_show, is_disable, create_time, update_time) SELECT @diag_menu_id, 'A', '复诊到期-全部延迟', '', 73, 'tcm.revisitDue/snoozeAll', '', '', '', '', 0, 1, 0, UNIX_TIMESTAMP(), UNIX_TIMESTAMP() FROM DUAL WHERE @diag_menu_id IS NOT NULL AND NOT EXISTS (SELECT 1 FROM zyt_system_menu WHERE perms = 'tcm.revisitDue/snoozeAll'); INSERT INTO zyt_system_menu (pid, type, name, icon, sort, perms, paths, component, selected, params, is_cache, is_show, is_disable, create_time, update_time) SELECT @diag_menu_id, 'A', '复诊到期-已联系', '', 74, 'tcm.revisitDue/contact', '', '', '', '', 0, 1, 0, UNIX_TIMESTAMP(), UNIX_TIMESTAMP() FROM DUAL WHERE @diag_menu_id IS NOT NULL AND NOT EXISTS (SELECT 1 FROM zyt_system_menu WHERE perms = 'tcm.revisitDue/contact'); INSERT INTO zyt_system_menu (pid, type, name, icon, sort, perms, paths, component, selected, params, is_cache, is_show, is_disable, create_time, update_time) SELECT @diag_menu_id, 'A', '复诊到期-人工关闭', '', 75, 'tcm.revisitDue/close', '', '', '', '', 0, 1, 0, UNIX_TIMESTAMP(), UNIX_TIMESTAMP() FROM DUAL WHERE @diag_menu_id IS NOT NULL AND NOT EXISTS (SELECT 1 FROM zyt_system_menu WHERE perms = 'tcm.revisitDue/close'); -- 自动授予:所有已拥有「中医诊单」列表权限的角色,默认获得六个弹窗权限点 INSERT IGNORE INTO zyt_system_role_menu (role_id, menu_id) SELECT DISTINCT rm.role_id, m2.id FROM zyt_system_role_menu rm INNER JOIN zyt_system_menu m1 ON m1.id = rm.menu_id AND m1.perms = 'tcm.diagnosis/lists' INNER JOIN zyt_system_menu m2 ON m2.perms IN ( 'tcm.revisitDue/pending', 'tcm.revisitDue/summary', 'tcm.revisitDue/snooze', 'tcm.revisitDue/snoozeAll', 'tcm.revisitDue/contact', 'tcm.revisitDue/close' );