提交
This commit is contained in:
1 parent
3b99209548
commit
8d8a8cc30c
56 files changed
+13727
-1241
No files matched your search
@@ -0,0 +1,181 @@
|
||||
-- 修复jwc001用户审批权限问题
|
||||
-- 创建时间: 2025-01-27
|
||||
-- 问题: jwc001用户无法访问"部门审批管理"功能,API调用时提示权限不足
|
||||
|
||||
-- =====================================================
|
||||
-- 问题分析
|
||||
-- =====================================================
|
||||
-- jwc001用户点击"部门审批管理"页面时,前端调用以下API接口:
|
||||
-- 1. /cw/approval/list (需要 cw:approval:list 权限) ✅ 已有
|
||||
-- 2. /cw/approval/dept/pending (需要 cw:approval:dept 权限) ❌ 缺失
|
||||
-- 3. /cw/approval/my (需要 cw:approval:list 权限) ✅ 已有
|
||||
--
|
||||
-- 根本原因:jwc001用户的角色缺少 cw:approval:dept 权限
|
||||
|
||||
-- =====================================================
|
||||
-- 第一步:确认当前状态
|
||||
-- =====================================================
|
||||
-- 查询jwc001用户信息
|
||||
SELECT
|
||||
u.user_id,
|
||||
u.user_name,
|
||||
u.nick_name,
|
||||
u.dept_id,
|
||||
d.dept_name
|
||||
FROM sys_user u
|
||||
LEFT JOIN sys_dept d ON u.dept_id = d.dept_id
|
||||
WHERE u.user_name = 'jwc001';
|
||||
|
||||
-- 查询jwc001用户当前角色
|
||||
SELECT
|
||||
u.user_name,
|
||||
r.role_id,
|
||||
r.role_name,
|
||||
r.role_key
|
||||
FROM sys_user u
|
||||
JOIN sys_user_role ur ON u.user_id = ur.user_id
|
||||
JOIN sys_role r ON ur.role_id = r.role_id
|
||||
WHERE u.user_name = 'jwc001';
|
||||
|
||||
-- 查询当前角色拥有的财务审批相关权限
|
||||
SELECT DISTINCT
|
||||
r.role_name,
|
||||
m.menu_name,
|
||||
m.perms
|
||||
FROM sys_user u
|
||||
JOIN sys_user_role ur ON u.user_id = ur.user_id
|
||||
JOIN sys_role r ON ur.role_id = r.role_id
|
||||
JOIN sys_role_menu rm ON r.role_id = rm.role_id
|
||||
JOIN sys_menu m ON rm.menu_id = m.menu_id
|
||||
WHERE u.user_name = 'jwc001'
|
||||
AND m.perms LIKE 'cw:approval:%'
|
||||
ORDER BY m.perms;
|
||||
|
||||
-- =====================================================
|
||||
-- 第二步:查找缺失的权限
|
||||
-- =====================================================
|
||||
-- 查找所有财务审批相关的菜单权限
|
||||
SELECT
|
||||
menu_id,
|
||||
menu_name,
|
||||
perms,
|
||||
parent_id
|
||||
FROM sys_menu
|
||||
WHERE perms LIKE 'cw:approval:%'
|
||||
ORDER BY menu_id;
|
||||
|
||||
-- 特别检查部门审批权限菜单
|
||||
SELECT
|
||||
menu_id,
|
||||
menu_name,
|
||||
perms,
|
||||
component
|
||||
FROM sys_menu
|
||||
WHERE perms = 'cw:approval:dept';
|
||||
|
||||
-- =====================================================
|
||||
-- 第三步:修复权限配置
|
||||
-- =====================================================
|
||||
-- 方案1:如果部门审批员角色已存在,直接分配权限
|
||||
-- 查找部门审批员角色
|
||||
SELECT role_id, role_name, role_key
|
||||
FROM sys_role
|
||||
WHERE role_key = 'dept_approver' OR role_name LIKE '%部门审批%';
|
||||
|
||||
-- 如果角色存在,为该角色添加缺失的权限
|
||||
-- (假设部门审批员角色ID为100,需要根据实际情况调整)
|
||||
INSERT IGNORE INTO sys_role_menu (role_id, menu_id)
|
||||
SELECT r.role_id, m.menu_id
|
||||
FROM sys_role r, sys_menu m
|
||||
WHERE r.role_key = 'dept_approver'
|
||||
AND m.perms = 'cw:approval:dept'
|
||||
AND NOT EXISTS (
|
||||
SELECT 1 FROM sys_role_menu rm
|
||||
WHERE rm.role_id = r.role_id AND rm.menu_id = m.menu_id
|
||||
);
|
||||
|
||||
-- 方案2:如果部门审批员角色不存在,创建角色并分配权限
|
||||
-- 创建部门审批员角色(如果不存在)
|
||||
INSERT INTO sys_role (
|
||||
role_id, tenant_id, role_name, role_key, role_sort,
|
||||
data_scope, menu_check_strictly, dept_check_strictly,
|
||||
status, del_flag, create_dept, create_by, create_time,
|
||||
update_by, update_time, remark
|
||||
)
|
||||
SELECT
|
||||
100, '000000', '部门审批员', 'dept_approver', 4,
|
||||
'3', 1, 1, '0', '0', 1938484570826956801, 1, NOW(),
|
||||
1, NOW(), '负责本部门的财务项目申报审批工作'
|
||||
WHERE NOT EXISTS (
|
||||
SELECT 1 FROM sys_role WHERE role_key = 'dept_approver'
|
||||
);
|
||||
|
||||
-- 为部门审批员角色分配必要的菜单权限
|
||||
INSERT IGNORE INTO sys_role_menu (role_id, menu_id)
|
||||
SELECT 100, menu_id FROM sys_menu WHERE perms IN (
|
||||
'cw:approval:list', -- 查询审批记录列表
|
||||
'cw:approval:query', -- 查询审批记录详情
|
||||
'cw:approval:dept', -- 部门审批权限
|
||||
'cw:approval:export' -- 导出审批记录
|
||||
);
|
||||
|
||||
-- 为部门审批员角色分配财务管理相关的父级菜单权限
|
||||
INSERT IGNORE INTO sys_role_menu (role_id, menu_id)
|
||||
SELECT 100, menu_id FROM sys_menu WHERE menu_id IN (
|
||||
6000, -- 财务管理(如果存在)
|
||||
6100, -- 财务项目申报管理(如果存在)
|
||||
6200 -- 部门审批管理(如果存在)
|
||||
);
|
||||
|
||||
-- 确保jwc001用户拥有部门审批员角色
|
||||
INSERT IGNORE INTO sys_user_role (user_id, role_id)
|
||||
SELECT u.user_id, 100
|
||||
FROM sys_user u
|
||||
WHERE u.user_name = 'jwc001'
|
||||
AND NOT EXISTS (
|
||||
SELECT 1 FROM sys_user_role ur
|
||||
WHERE ur.user_id = u.user_id AND ur.role_id = 100
|
||||
);
|
||||
|
||||
-- =====================================================
|
||||
-- 第四步:验证修复结果
|
||||
-- =====================================================
|
||||
-- 验证jwc001用户最终的权限配置
|
||||
SELECT
|
||||
u.user_name AS '用户名',
|
||||
r.role_name AS '角色名',
|
||||
m.menu_name AS '菜单名',
|
||||
m.perms AS '权限码'
|
||||
FROM sys_user u
|
||||
JOIN sys_user_role ur ON u.user_id = ur.user_id
|
||||
JOIN sys_role r ON ur.role_id = r.role_id
|
||||
JOIN sys_role_menu rm ON r.role_id = rm.role_id
|
||||
JOIN sys_menu m ON rm.menu_id = m.menu_id
|
||||
WHERE u.user_name = 'jwc001'
|
||||
AND m.perms LIKE 'cw:approval:%'
|
||||
ORDER BY m.perms;
|
||||
|
||||
-- 特别验证部门审批权限
|
||||
SELECT
|
||||
COUNT(*) AS '是否有部门审批权限',
|
||||
CASE
|
||||
WHEN COUNT(*) > 0 THEN '✅ 权限配置正确'
|
||||
ELSE '❌ 权限配置缺失'
|
||||
END AS '配置状态'
|
||||
FROM sys_user u
|
||||
JOIN sys_user_role ur ON u.user_id = ur.user_id
|
||||
JOIN sys_role r ON ur.role_id = r.role_id
|
||||
JOIN sys_role_menu rm ON r.role_id = rm.role_id
|
||||
JOIN sys_menu m ON rm.menu_id = m.menu_id
|
||||
WHERE u.user_name = 'jwc001'
|
||||
AND m.perms = 'cw:approval:dept';
|
||||
|
||||
COMMIT;
|
||||
|
||||
-- =====================================================
|
||||
-- 预期结果
|
||||
-- =====================================================
|
||||
-- 1. jwc001用户获得完整的部门审批权限
|
||||
-- 2. 能够正常访问 /cw/approval/dept/pending 接口
|
||||
-- 3. "部门审批管理"页面加载正常,不再报权限错误
|
||||
-- 4. 可以查看待审批和已审批记录
|
||||
@@ -0,0 +1,34 @@
|
||||
-- 财务审批管理菜单配置
|
||||
-- 执行顺序:在现有财务管理模块下添加
|
||||
-- 菜单ID范围:6400-6404
|
||||
|
||||
-- 1. 财务审批管理菜单
|
||||
INSERT INTO sys_menu (menu_id, menu_name, parent_id, order_num, path, component, query_param, is_frame, is_cache, menu_type, visible, status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark)
|
||||
VALUES (6400, '财务审批', 6000, 5, 'financeApproval', 'cw/financeApproval/index', '', 1, 0, 'C', '0', '0', 'cw:approval:finance', 'ele-Money', 103, 1, now(), 1, now(), '财务项目申报审批管理');
|
||||
|
||||
-- 2. 财务审批功能权限
|
||||
INSERT INTO sys_menu (menu_id, menu_name, parent_id, order_num, path, component, query_param, is_frame, is_cache, menu_type, visible, status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark)
|
||||
VALUES
|
||||
(6401, '财务审批查询', 6400, 1, '#', '', '', 1, 0, 'F', '0', '0', 'cw:approval:finance', '#', 103, 1, now(), 1, now(), '财务审批查询权限'),
|
||||
(6402, '财务审批操作', 6400, 2, '#', '', '', 1, 0, 'F', '0', '0', 'cw:approval:finance', '#', 103, 1, now(), 1, now(), '财务审批操作权限'),
|
||||
(6403, '财务审批详情', 6400, 3, '#', '', '', 1, 0, 'F', '0', '0', 'cw:approval:query', '#', 103, 1, now(), 1, now(), '财务审批详情权限'),
|
||||
(6404, '财务审批导出', 6400, 4, '#', '', '', 1, 0, 'F', '0', '0', 'cw:approval:export', '#', 103, 1, now(), 1, now(), '财务审批导出权限');
|
||||
|
||||
-- 3. 如果需要给特定角色分配权限,请执行以下SQL(可选)
|
||||
-- 注意:请根据实际角色ID调整,以下使用示例角色ID 2(普通角色)
|
||||
|
||||
-- 插入角色菜单关联(示例:给角色ID为2的角色分配财务审批权限)
|
||||
-- INSERT INTO sys_role_menu (role_id, menu_id) VALUES
|
||||
-- (2, 6400), -- 财务审批主菜单
|
||||
-- (2, 6401), -- 查询权限
|
||||
-- (2, 6402), -- 操作权限
|
||||
-- (2, 6403), -- 详情权限
|
||||
-- (2, 6404); -- 导出权限
|
||||
|
||||
-- 4. 添加字典数据(如果需要新的审批状态字典)
|
||||
-- 注意:以下字典数据可能已存在,如果已存在则跳过
|
||||
INSERT IGNORE INTO sys_dict_data (dict_code, tenant_id, dict_sort, dict_label, dict_value, dict_type, css_class, list_class, is_default, create_dept, create_by, create_time, update_by, update_time, remark)
|
||||
VALUES
|
||||
(null, '000000', 8, '审批完成', 'approved', 'cw_approval_status', '', 'success', 'N', 103, 1, now(), 1, now(), '财务审批通过,整个流程完成');
|
||||
|
||||
-- 执行完成后,建议重新登录系统以刷新菜单权限
|
||||
@@ -0,0 +1,60 @@
|
||||
-- 项目预算数据统计菜单配置
|
||||
-- 作者:Cursor AI
|
||||
-- 创建时间:2025-01-27
|
||||
|
||||
-- 1. 添加项目预算数据统计菜单
|
||||
INSERT INTO sys_menu (menu_id, menu_name, parent_id, order_num, path, component, query_param, is_frame, is_cache, menu_type, visible, status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark)
|
||||
VALUES (7100, '项目预算统计', 6200, 4, 'statistics', 'cw/statistics/index', '', 1, 0, 'C', '0', '0', 'cw:statistics:list', 'chart', 103, 1, NOW(), 1, NOW(), '项目预算数据统计菜单');
|
||||
|
||||
-- 2. 添加统计相关按钮权限
|
||||
INSERT INTO sys_menu (menu_id, menu_name, parent_id, order_num, path, component, query_param, is_frame, is_cache, menu_type, visible, status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark)
|
||||
VALUES (7101, '项目预算统计查询', 7100, 1, '', '', '', 1, 0, 'F', '0', '0', 'cw:statistics:list', '#', 103, 1, NOW(), 1, NOW(), '');
|
||||
|
||||
INSERT INTO sys_menu (menu_id, menu_name, parent_id, order_num, path, component, query_param, is_frame, is_cache, menu_type, visible, status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark)
|
||||
VALUES (7102, '项目预算统计导出', 7100, 2, '', '', '', 1, 0, 'F', '0', '0', 'cw:statistics:export', '#', 103, 1, NOW(), 1, NOW(), '');
|
||||
|
||||
-- 3. 为财务管理员角色分配统计菜单权限
|
||||
INSERT INTO sys_role_menu (role_id, menu_id)
|
||||
SELECT r.role_id, 7100
|
||||
FROM sys_role r
|
||||
WHERE r.role_key = 'cw_admin' AND r.status = '0';
|
||||
|
||||
INSERT INTO sys_role_menu (role_id, menu_id)
|
||||
SELECT r.role_id, 7101
|
||||
FROM sys_role r
|
||||
WHERE r.role_key = 'cw_admin' AND r.status = '0';
|
||||
|
||||
INSERT INTO sys_role_menu (role_id, menu_id)
|
||||
SELECT r.role_id, 7102
|
||||
FROM sys_role r
|
||||
WHERE r.role_key = 'cw_admin' AND r.status = '0';
|
||||
|
||||
-- 4. 为系统管理员角色分配统计菜单权限
|
||||
INSERT INTO sys_role_menu (role_id, menu_id)
|
||||
SELECT r.role_id, 7100
|
||||
FROM sys_role r
|
||||
WHERE r.role_key = 'admin' AND r.status = '0';
|
||||
|
||||
INSERT INTO sys_role_menu (role_id, menu_id)
|
||||
SELECT r.role_id, 7101
|
||||
FROM sys_role r
|
||||
WHERE r.role_key = 'admin' AND r.status = '0';
|
||||
|
||||
INSERT INTO sys_role_menu (role_id, menu_id)
|
||||
SELECT r.role_id, 7102
|
||||
FROM sys_role r
|
||||
WHERE r.role_key = 'admin' AND r.status = '0';
|
||||
|
||||
-- 5. 确认菜单创建结果
|
||||
SELECT
|
||||
m.menu_id,
|
||||
m.menu_name,
|
||||
m.parent_id,
|
||||
m.path,
|
||||
m.component,
|
||||
m.perms,
|
||||
m.menu_type,
|
||||
m.status
|
||||
FROM sys_menu m
|
||||
WHERE m.menu_id IN (7100, 7101, 7102)
|
||||
ORDER BY m.menu_id;
|
||||
Reference in new issue
Block a user