Files
hzdyjs/backend/sql/jcbt_scholarship_quota_menu_permissions.sql
T
2025-08-07 18:40:25 +08:00

135 lines
9.0 KiB
SQL

-- ========================================
-- 奖学金名额分配模块 - 菜单权限配置
-- 创建时间: 2025-01-27
-- 说明: 配置名额分配功能的菜单和权限
-- ========================================
USE hzdyjs_xg;
-- 设置变量
SET @parent_menu_id = 2015; -- 奖惩补贴管理父菜单ID
SET @menu_order = 4; -- 菜单排序
-- =====================================================
-- 1. 删除已存在的菜单(开发环境重新创建)
-- =====================================================
DELETE FROM sys_menu WHERE menu_name = '名额分配管理' AND parent_id = @parent_menu_id;
-- =====================================================
-- 2. 创建名额分配管理菜单
-- =====================================================
INSERT INTO sys_menu (menu_name, parent_id, order_num, path, component, query_param, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark)
VALUES ('名额分配管理', @parent_menu_id, @menu_order, 'scholarshipQuota', 'jcbt/scholarshipQuota/index', '', 1, 0, 'C', '0', '0', 'jcbt:scholarshipQuota:list', 'tree-table', 1, NOW(), 1, NOW(), '奖学金名额分配管理菜单');
-- 获取刚插入的菜单ID
SET @quota_menu_id = LAST_INSERT_ID();
-- =====================================================
-- 3. 创建名额分配功能按钮权限
-- =====================================================
-- 3.1 查询权限
INSERT INTO sys_menu (menu_name, parent_id, order_num, path, component, query_param, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark)
VALUES ('名额分配查询', @quota_menu_id, 1, '', '', '', 1, 0, 'F', '0', '0', 'jcbt:scholarshipQuota:query', '#', 1, NOW(), 1, NOW(), '');
-- 3.2 新增权限
INSERT INTO sys_menu (menu_name, parent_id, order_num, path, component, query_param, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark)
VALUES ('名额分配新增', @quota_menu_id, 2, '', '', '', 1, 0, 'F', '0', '0', 'jcbt:scholarshipQuota:add', '#', 1, NOW(), 1, NOW(), '');
-- 3.3 修改权限
INSERT INTO sys_menu (menu_name, parent_id, order_num, path, component, query_param, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark)
VALUES ('名额分配修改', @quota_menu_id, 3, '', '', '', 1, 0, 'F', '0', '0', 'jcbt:scholarshipQuota:edit', '#', 1, NOW(), 1, NOW(), '');
-- 3.4 删除权限
INSERT INTO sys_menu (menu_name, parent_id, order_num, path, component, query_param, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark)
VALUES ('名额分配删除', @quota_menu_id, 4, '', '', '', 1, 0, 'F', '0', '0', 'jcbt:scholarshipQuota:remove', '#', 1, NOW(), 1, NOW(), '');
-- 3.5 导出权限
INSERT INTO sys_menu (menu_name, parent_id, order_num, path, component, query_param, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark)
VALUES ('名额分配导出', @quota_menu_id, 5, '', '', '', 1, 0, 'F', '0', '0', 'jcbt:scholarshipQuota:export', '#', 1, NOW(), 1, NOW(), '');
-- 3.6 批量分配权限
INSERT INTO sys_menu (menu_name, parent_id, order_num, path, component, query_param, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark)
VALUES ('批量分配名额', @quota_menu_id, 6, '', '', '', 1, 0, 'F', '0', '0', 'jcbt:scholarshipQuota:batchAllocate', '#', 1, NOW(), 1, NOW(), '');
-- 3.7 名额调整权限
INSERT INTO sys_menu (menu_name, parent_id, order_num, path, component, query_param, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark)
VALUES ('名额调整', @quota_menu_id, 7, '', '', '', 1, 0, 'F', '0', '0', 'jcbt:scholarshipQuota:adjust', '#', 1, NOW(), 1, NOW(), '');
-- 3.8 名额锁定权限
INSERT INTO sys_menu (menu_name, parent_id, order_num, path, component, query_param, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark)
VALUES ('名额锁定', @quota_menu_id, 8, '', '', '', 1, 0, 'F', '0', '0', 'jcbt:scholarshipQuota:lock', '#', 1, NOW(), 1, NOW(), '');
-- 3.9 自动分配权限
INSERT INTO sys_menu (menu_name, parent_id, order_num, path, component, query_param, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark)
VALUES ('自动分配名额', @quota_menu_id, 9, '', '', '', 1, 0, 'F', '0', '0', 'jcbt:scholarshipQuota:autoAllocate', '#', 1, NOW(), 1, NOW(), '');
-- 3.10 复制分配权限
INSERT INTO sys_menu (menu_name, parent_id, order_num, path, component, query_param, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark)
VALUES ('复制名额分配', @quota_menu_id, 10, '', '', '', 1, 0, 'F', '0', '0', 'jcbt:scholarshipQuota:copy', '#', 1, NOW(), 1, NOW(), '');
-- =====================================================
-- 4. 为管理员角色分配权限
-- =====================================================
-- 4.1 获取管理员角色ID
SET @admin_role_id = (SELECT role_id FROM sys_role WHERE role_key = 'admin' LIMIT 1);
-- 4.2 为管理员角色分配名额分配菜单权限
INSERT INTO sys_role_menu (role_id, menu_id)
SELECT @admin_role_id, menu_id
FROM sys_menu
WHERE (menu_id = @quota_menu_id OR parent_id = @quota_menu_id)
AND NOT EXISTS (
SELECT 1 FROM sys_role_menu rm
WHERE rm.role_id = @admin_role_id AND rm.menu_id = sys_menu.menu_id
);
-- =====================================================
-- 5. 创建字典数据
-- =====================================================
-- 5.1 分配级别字典
INSERT INTO sys_dict_type (dict_name, dict_type, status, create_by, create_time, update_by, update_time, remark)
VALUES ('名额分配级别', 'jcbt_quota_allocation_level', '0', 1, NOW(), 1, NOW(), '奖学金名额分配级别字典类型')
ON DUPLICATE KEY UPDATE dict_name = VALUES(dict_name);
INSERT INTO sys_dict_data (dict_sort, dict_label, dict_value, dict_type, css_class, list_class, is_default, status, create_by, create_time, update_by, update_time, remark)
VALUES
(1, '全校', 'UNIVERSITY', 'jcbt_quota_allocation_level', '', 'primary', 'Y', '0', 1, NOW(), 1, NOW(), '全校级别分配'),
(2, '学院', 'COLLEGE', 'jcbt_quota_allocation_level', '', 'success', 'N', '0', 1, NOW(), 1, NOW(), '学院级别分配'),
(3, '专业', 'MAJOR', 'jcbt_quota_allocation_level', '', 'info', 'N', '0', 1, NOW(), 1, NOW(), '专业级别分配'),
(4, '班级', 'CLASS', 'jcbt_quota_allocation_level', '', 'warning', 'N', '0', 1, NOW(), 1, NOW(), '班级级别分配')
ON DUPLICATE KEY UPDATE dict_label = VALUES(dict_label);
-- 5.2 分配方式字典
INSERT INTO sys_dict_type (dict_name, dict_type, status, create_by, create_time, update_by, update_time, remark)
VALUES ('名额分配方式', 'jcbt_quota_allocation_method', '0', 1, NOW(), 1, NOW(), '奖学金名额分配方式字典类型')
ON DUPLICATE KEY UPDATE dict_name = VALUES(dict_name);
INSERT INTO sys_dict_data (dict_sort, dict_label, dict_value, dict_type, css_class, list_class, is_default, status, create_by, create_time, update_by, update_time, remark)
VALUES
(1, '手动分配', 'MANUAL', 'jcbt_quota_allocation_method', '', 'primary', 'Y', '0', 1, NOW(), 1, NOW(), '手动分配名额'),
(2, '自动分配', 'AUTO', 'jcbt_quota_allocation_method', '', 'success', 'N', '0', 1, NOW(), 1, NOW(), '自动分配名额'),
(3, '按比例分配', 'PROPORTIONAL', 'jcbt_quota_allocation_method', '', 'info', 'N', '0', 1, NOW(), 1, NOW(), '按比例分配名额')
ON DUPLICATE KEY UPDATE dict_label = VALUES(dict_label);
-- 5.3 分配状态字典
INSERT INTO sys_dict_type (dict_name, dict_type, status, create_by, create_time, update_by, update_time, remark)
VALUES ('名额分配状态', 'jcbt_quota_status', '0', 1, NOW(), 1, NOW(), '奖学金名额分配状态字典类型')
ON DUPLICATE KEY UPDATE dict_name = VALUES(dict_name);
INSERT INTO sys_dict_data (dict_sort, dict_label, dict_value, dict_type, css_class, list_class, is_default, status, create_by, create_time, update_by, update_time, remark)
VALUES
(1, '生效', 'ACTIVE', 'jcbt_quota_status', '', 'success', 'Y', '0', 1, NOW(), 1, NOW(), '名额分配生效'),
(2, '失效', 'INACTIVE', 'jcbt_quota_status', '', 'danger', 'N', '0', 1, NOW(), 1, NOW(), '名额分配失效'),
(3, '待审核', 'PENDING', 'jcbt_quota_status', '', 'warning', 'N', '0', 1, NOW(), 1, NOW(), '名额分配待审核')
ON DUPLICATE KEY UPDATE dict_label = VALUES(dict_label);
-- =====================================================
-- 6. 验证创建结果
-- =====================================================
SELECT '名额分配管理菜单创建完成!' as message;
SELECT menu_id, menu_name, parent_id, perms FROM sys_menu WHERE menu_name LIKE '%名额分配%' ORDER BY parent_id, order_num;
SELECT dict_type, COUNT(*) as count FROM sys_dict_data WHERE dict_type LIKE 'jcbt_quota_%' GROUP BY dict_type;