gaoluyang
5 天以前 25a40b9c4e6a1b650610b8b13088d486699532ce
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
-- 采购申请「批量提交」按钮权限
-- 影响页面:ERP -> 采购管理 -> 采购申请
--
-- 背景:采购申请提交接口(PUT /erp/purchase-request/submit、/submit-batch)使用
--       权限码 erp:purchase-request:submit,但 system_menu 中从未维护该权限按钮,
--       导致前端工具栏「批量提交」按钮被权限过滤隐藏,普通角色调用接口会 403。
--
-- 本脚本幂等,可重复执行。执行后需清理权限缓存(重启后端或删除
-- redis 中的 permission_menu_ids:erp:purchase-request:submit 与相关 role_menu_ids:*),
-- 前端重新登录/刷新后生效。
 
-- 1. 补按钮菜单(挂在“采购申请”菜单下)
INSERT INTO system_menu (name, permission, type, sort, parent_id, status, icon, creator, updater)
SELECT '批量提交审批', 'erp:purchase-request:submit', 3, 9, p.id, 0, '#', '1', '1'
FROM system_menu p
WHERE p.component = 'erp/purchase/request/index'
  AND p.type = 2
  AND p.deleted = b'0'
  AND NOT EXISTS (
      SELECT 1 FROM system_menu m
      WHERE m.permission = 'erp:purchase-request:submit' AND m.deleted = b'0'
  );
 
-- 2. 授予已拥有“采购申请”菜单的角色
INSERT INTO system_role_menu (role_id, menu_id, creator, updater)
SELECT DISTINCT rm.role_id, m.id, '1', '1'
FROM system_role_menu rm
JOIN system_menu p ON p.component = 'erp/purchase/request/index' AND p.type = 2 AND p.deleted = b'0'
JOIN system_menu m ON m.permission = 'erp:purchase-request:submit' AND m.deleted = b'0'
WHERE rm.menu_id = p.id
  AND rm.deleted = b'0'
  AND NOT EXISTS (
      SELECT 1 FROM system_role_menu x
      WHERE x.role_id = rm.role_id AND x.menu_id = m.id AND x.deleted = b'0'
  );