fix(sql): 权限对齐 SQL 改为按 path 定位父菜单(兼容不同环境菜单 id),并注明执行前检查 id 占用
| | |
| | | -- 导致非超级管理员调用接口时一律 403(菜单可见但"没有操作权限")。 |
| | | -- 处理:为这些权限码补齐 type=3 的按钮权限点(不显示在侧栏),并授权给现有角色。 |
| | | -- 菜单可见性仍由各模块父菜单的 role_menu 控制,不会因此扩大可见范围。 |
| | | -- |
| | | -- ⚠️ 执行前请先确认 id 602800~602829 未被占用: |
| | | -- SELECT id,name FROM system_menu WHERE id BETWEEN 602800 AND 602829; |
| | | -- (若有结果,请把下面所有 602800~602829 换成一段空闲 id) |
| | | -- ============================================= |
| | | SET NAMES utf8mb4; |
| | | |
| | | -- 父菜单按 path 定位,避免不同环境菜单 id 不一致导致挂错位置 |
| | | SET @hrm := (SELECT id FROM `system_menu` WHERE `path` IN ('hrm','/hrm') AND `deleted`=b'0' LIMIT 1); |
| | | SET @att := (SELECT id FROM `system_menu` WHERE `path`='attendance' AND `parent_id`=@hrm AND `deleted`=b'0' LIMIT 1); |
| | | SET @sal := (SELECT id FROM `system_menu` WHERE `path`='salary' AND `parent_id`=@hrm AND `deleted`=b'0' LIMIT 1); |
| | | SET @app := (SELECT id FROM `system_menu` WHERE `path`='approval' AND `parent_id`=@hrm AND `deleted`=b'0' LIMIT 1); |
| | | |
| | | SET @att_rule := (SELECT id FROM `system_menu` WHERE `path`='rule' AND `parent_id`=@att AND `deleted`=b'0' LIMIT 1); |
| | | SET @att_record := (SELECT id FROM `system_menu` WHERE `path`='record' AND `parent_id`=@att AND `deleted`=b'0' LIMIT 1); |
| | | SET @att_exception := (SELECT id FROM `system_menu` WHERE `path`='exception' AND `parent_id`=@att AND `deleted`=b'0' LIMIT 1); |
| | | SET @att_holiday := (SELECT id FROM `system_menu` WHERE `path`='holiday' AND `parent_id`=@att AND `deleted`=b'0' LIMIT 1); |
| | | SET @att_summary := (SELECT id FROM `system_menu` WHERE `path`='summary' AND `parent_id`=@att AND `deleted`=b'0' LIMIT 1); |
| | | |
| | | SET @app_leave := (SELECT id FROM `system_menu` WHERE `path`='leave' AND `parent_id`=@app AND `deleted`=b'0' LIMIT 1); |
| | | SET @app_transfer := (SELECT id FROM `system_menu` WHERE `path`='transfer' AND `parent_id`=@app AND `deleted`=b'0' LIMIT 1); |
| | | SET @app_resignation := (SELECT id FROM `system_menu` WHERE `path`='resignation' AND `parent_id`=@app AND `deleted`=b'0' LIMIT 1); |
| | | SET @app_overtime := (SELECT id FROM `system_menu` WHERE `path`='overtime' AND `parent_id`=@app AND `deleted`=b'0' LIMIT 1); |
| | | |
| | | SET @emp_contract := (SELECT id FROM `system_menu` WHERE `path`='employee-contract' AND `parent_id`=@hrm AND `deleted`=b'0' LIMIT 1); |
| | | |
| | | SET @sal_calc := (SELECT id FROM `system_menu` WHERE `path`='calculation' AND `parent_id`=@sal AND `deleted`=b'0' LIMIT 1); |
| | | SET @sal_pay := (SELECT id FROM `system_menu` WHERE `path`='payment' AND `parent_id`=@sal AND `deleted`=b'0' LIMIT 1); |
| | | SET @sal_ss := (SELECT id FROM `system_menu` WHERE `path`='social-security' AND `parent_id`=@sal AND `deleted`=b'0' LIMIT 1); |
| | | SET @sal_ss_sch := (SELECT id FROM `system_menu` WHERE `path`='social-security-scheme' AND `parent_id`=@sal AND `deleted`=b'0' LIMIT 1); |
| | | SET @sal_tax := (SELECT id FROM `system_menu` WHERE `path`='tax-rate' AND `parent_id`=@sal AND `deleted`=b'0' LIMIT 1); |
| | | |
| | | INSERT INTO `system_menu` |
| | | (`id`,`name`,`permission`,`type`,`sort`,`parent_id`,`path`,`icon`,`component`,`component_name`, |
| | | `status`,`visible`,`keep_alive`,`always_show`,`creator`,`create_time`,`updater`,`update_time`,`deleted`) |
| | | VALUES |
| | | -- 考勤管理(6010 下的子菜单) |
| | | (602800,'考勤规则查询','hrm:attendance-rule:query',3,10,6013,'','','',NULL,0,b'1',b'1',b'1','1',NOW(),'1',NOW(),b'0'), |
| | | (602801,'考勤记录查询','hrm:attendance-record:query',3,10,6011,'','','',NULL,0,b'1',b'1',b'1','1',NOW(),'1',NOW(),b'0'), |
| | | (602802,'考勤异常查询','hrm:attendance-exception:query',3,10,6012,'','','',NULL,0,b'1',b'1',b'1','1',NOW(),'1',NOW(),b'0'), |
| | | (602803,'考勤异常修改','hrm:attendance-exception:update',3,11,6012,'','','',NULL,0,b'1',b'1',b'1','1',NOW(),'1',NOW(),b'0'), |
| | | (602804,'考勤异常删除','hrm:attendance-exception:delete',3,12,6012,'','','',NULL,0,b'1',b'1',b'1','1',NOW(),'1',NOW(),b'0'), |
| | | (602805,'节假日配置查询','hrm:attendance-holiday:query',3,10,6014,'','','',NULL,0,b'1',b'1',b'1','1',NOW(),'1',NOW(),b'0'), |
| | | (602806,'考勤统计查询','hrm:attendance-summary:query',3,10,6015,'','','',NULL,0,b'1',b'1',b'1','1',NOW(),'1',NOW(),b'0'), |
| | | -- 人事审批(6002 下的子菜单) |
| | | (602807,'请假申请导出','hrm:leave:export',3,10,6003,'','','',NULL,0,b'1',b'1',b'1','1',NOW(),'1',NOW(),b'0'), |
| | | (602808,'调岗申请查询','hrm:transfer:query',3,10,6004,'','','',NULL,0,b'1',b'1',b'1','1',NOW(),'1',NOW(),b'0'), |
| | | (602809,'调岗申请导出','hrm:transfer:export',3,11,6004,'','','',NULL,0,b'1',b'1',b'1','1',NOW(),'1',NOW(),b'0'), |
| | | (602810,'离职申请查询','hrm:resignation:query',3,10,6005,'','','',NULL,0,b'1',b'1',b'1','1',NOW(),'1',NOW(),b'0'), |
| | | (602811,'离职申请导出','hrm:resignation:export',3,11,6005,'','','',NULL,0,b'1',b'1',b'1','1',NOW(),'1',NOW(),b'0'), |
| | | (602812,'加班申请查询','hrm:overtime:query',3,10,1065211,'','','',NULL,0,b'1',b'1',b'1','1',NOW(),'1',NOW(),b'0'), |
| | | -- 员工合同 |
| | | (602813,'合同导入','hrm:employee-contract:import',3,10,1063105,'','','',NULL,0,b'1',b'1',b'1','1',NOW(),'1',NOW(),b'0'), |
| | | -- 薪酬核算(6021) |
| | | (602814,'薪酬核算查询','hrm:salary-calculation:query',3,10,6021,'','','',NULL,0,b'1',b'1',b'1','1',NOW(),'1',NOW(),b'0'), |
| | | (602815,'薪酬核算删除','hrm:salary-calculation:delete',3,11,6021,'','','',NULL,0,b'1',b'1',b'1','1',NOW(),'1',NOW(),b'0'), |
| | | -- 薪资发放(6022) |
| | | (602816,'薪资发放查询','hrm:salary-payment:query',3,10,6022,'','','',NULL,0,b'1',b'1',b'1','1',NOW(),'1',NOW(),b'0'), |
| | | (602817,'薪资发放生成','hrm:salary-payment:generate',3,11,6022,'','','',NULL,0,b'1',b'1',b'1','1',NOW(),'1',NOW(),b'0'), |
| | | (602818,'薪资发放删除','hrm:salary-payment:delete',3,12,6022,'','','',NULL,0,b'1',b'1',b'1','1',NOW(),'1',NOW(),b'0'), |
| | | -- 员工社保公积金档案(6023) |
| | | (602819,'社保档案查询','hrm:employee-social-security:query',3,10,6023,'','','',NULL,0,b'1',b'1',b'1','1',NOW(),'1',NOW(),b'0'), |
| | | -- 社保公积金方案(602445) |
| | | (602820,'社保方案查询','hrm:social-security-scheme:query',3,10,602445,'','','',NULL,0,b'1',b'1',b'1','1',NOW(),'1',NOW(),b'0'), |
| | | -- 社保配置(挂在薪酬管理 6020) |
| | | (602821,'社保配置查询','hrm:social-security-config:query',3,30,6020,'','','',NULL,0,b'1',b'1',b'1','1',NOW(),'1',NOW(),b'0'), |
| | | (602822,'社保配置新增','hrm:social-security-config:create',3,31,6020,'','','',NULL,0,b'1',b'1',b'1','1',NOW(),'1',NOW(),b'0'), |
| | | (602823,'社保配置修改','hrm:social-security-config:update',3,32,6020,'','','',NULL,0,b'1',b'1',b'1','1',NOW(),'1',NOW(),b'0'), |
| | | (602824,'社保配置删除','hrm:social-security-config:delete',3,33,6020,'','','',NULL,0,b'1',b'1',b'1','1',NOW(),'1',NOW(),b'0'), |
| | | -- 个税税率配置(6024) |
| | | (602825,'个税税率查询','hrm:tax-rate-config:query',3,10,6024,'','','',NULL,0,b'1',b'1',b'1','1',NOW(),'1',NOW(),b'0'), |
| | | -- 薪酬结构(菜单中暂无该页面,权限点挂薪酬管理下) |
| | | (602826,'薪酬结构查询','hrm:salary-structure:query',3,40,6020,'','','',NULL,0,b'1',b'1',b'1','1',NOW(),'1',NOW(),b'0'), |
| | | (602827,'薪酬结构新增','hrm:salary-structure:create',3,41,6020,'','','',NULL,0,b'1',b'1',b'1','1',NOW(),'1',NOW(),b'0'), |
| | | (602828,'薪酬结构修改','hrm:salary-structure:update',3,42,6020,'','','',NULL,0,b'1',b'1',b'1','1',NOW(),'1',NOW(),b'0'), |
| | | (602829,'薪酬结构删除','hrm:salary-structure:delete',3,43,6020,'','','',NULL,0,b'1',b'1',b'1','1',NOW(),'1',NOW(),b'0') |
| | | (602800,'考勤规则查询','hrm:attendance-rule:query',3,10,@att_rule,'','','',NULL,0,b'1',b'1',b'1','1',NOW(),'1',NOW(),b'0'), |
| | | (602801,'考勤记录查询','hrm:attendance-record:query',3,10,@att_record,'','','',NULL,0,b'1',b'1',b'1','1',NOW(),'1',NOW(),b'0'), |
| | | (602802,'考勤异常查询','hrm:attendance-exception:query',3,10,@att_exception,'','','',NULL,0,b'1',b'1',b'1','1',NOW(),'1',NOW(),b'0'), |
| | | (602803,'考勤异常修改','hrm:attendance-exception:update',3,11,@att_exception,'','','',NULL,0,b'1',b'1',b'1','1',NOW(),'1',NOW(),b'0'), |
| | | (602804,'考勤异常删除','hrm:attendance-exception:delete',3,12,@att_exception,'','','',NULL,0,b'1',b'1',b'1','1',NOW(),'1',NOW(),b'0'), |
| | | (602805,'节假日配置查询','hrm:attendance-holiday:query',3,10,@att_holiday,'','','',NULL,0,b'1',b'1',b'1','1',NOW(),'1',NOW(),b'0'), |
| | | (602806,'考勤统计查询','hrm:attendance-summary:query',3,10,@att_summary,'','','',NULL,0,b'1',b'1',b'1','1',NOW(),'1',NOW(),b'0'), |
| | | (602807,'请假申请导出','hrm:leave:export',3,10,@app_leave,'','','',NULL,0,b'1',b'1',b'1','1',NOW(),'1',NOW(),b'0'), |
| | | (602808,'调岗申请查询','hrm:transfer:query',3,10,@app_transfer,'','','',NULL,0,b'1',b'1',b'1','1',NOW(),'1',NOW(),b'0'), |
| | | (602809,'调岗申请导出','hrm:transfer:export',3,11,@app_transfer,'','','',NULL,0,b'1',b'1',b'1','1',NOW(),'1',NOW(),b'0'), |
| | | (602810,'离职申请查询','hrm:resignation:query',3,10,@app_resignation,'','','',NULL,0,b'1',b'1',b'1','1',NOW(),'1',NOW(),b'0'), |
| | | (602811,'离职申请导出','hrm:resignation:export',3,11,@app_resignation,'','','',NULL,0,b'1',b'1',b'1','1',NOW(),'1',NOW(),b'0'), |
| | | (602812,'加班申请查询','hrm:overtime:query',3,10,@app_overtime,'','','',NULL,0,b'1',b'1',b'1','1',NOW(),'1',NOW(),b'0'), |
| | | (602813,'合同导入','hrm:employee-contract:import',3,10,@emp_contract,'','','',NULL,0,b'1',b'1',b'1','1',NOW(),'1',NOW(),b'0'), |
| | | (602814,'薪酬核算查询','hrm:salary-calculation:query',3,10,@sal_calc,'','','',NULL,0,b'1',b'1',b'1','1',NOW(),'1',NOW(),b'0'), |
| | | (602815,'薪酬核算删除','hrm:salary-calculation:delete',3,11,@sal_calc,'','','',NULL,0,b'1',b'1',b'1','1',NOW(),'1',NOW(),b'0'), |
| | | (602816,'薪资发放查询','hrm:salary-payment:query',3,10,@sal_pay,'','','',NULL,0,b'1',b'1',b'1','1',NOW(),'1',NOW(),b'0'), |
| | | (602817,'薪资发放生成','hrm:salary-payment:generate',3,11,@sal_pay,'','','',NULL,0,b'1',b'1',b'1','1',NOW(),'1',NOW(),b'0'), |
| | | (602818,'薪资发放删除','hrm:salary-payment:delete',3,12,@sal_pay,'','','',NULL,0,b'1',b'1',b'1','1',NOW(),'1',NOW(),b'0'), |
| | | (602819,'社保档案查询','hrm:employee-social-security:query',3,10,@sal_ss,'','','',NULL,0,b'1',b'1',b'1','1',NOW(),'1',NOW(),b'0'), |
| | | (602820,'社保方案查询','hrm:social-security-scheme:query',3,10,@sal_ss_sch,'','','',NULL,0,b'1',b'1',b'1','1',NOW(),'1',NOW(),b'0'), |
| | | (602821,'社保配置查询','hrm:social-security-config:query',3,30,@sal,'','','',NULL,0,b'1',b'1',b'1','1',NOW(),'1',NOW(),b'0'), |
| | | (602822,'社保配置新增','hrm:social-security-config:create',3,31,@sal,'','','',NULL,0,b'1',b'1',b'1','1',NOW(),'1',NOW(),b'0'), |
| | | (602823,'社保配置修改','hrm:social-security-config:update',3,32,@sal,'','','',NULL,0,b'1',b'1',b'1','1',NOW(),'1',NOW(),b'0'), |
| | | (602824,'社保配置删除','hrm:social-security-config:delete',3,33,@sal,'','','',NULL,0,b'1',b'1',b'1','1',NOW(),'1',NOW(),b'0'), |
| | | (602825,'个税税率查询','hrm:tax-rate-config:query',3,10,@sal_tax,'','','',NULL,0,b'1',b'1',b'1','1',NOW(),'1',NOW(),b'0'), |
| | | (602826,'薪酬结构查询','hrm:salary-structure:query',3,40,@sal,'','','',NULL,0,b'1',b'1',b'1','1',NOW(),'1',NOW(),b'0'), |
| | | (602827,'薪酬结构新增','hrm:salary-structure:create',3,41,@sal,'','','',NULL,0,b'1',b'1',b'1','1',NOW(),'1',NOW(),b'0'), |
| | | (602828,'薪酬结构修改','hrm:salary-structure:update',3,42,@sal,'','','',NULL,0,b'1',b'1',b'1','1',NOW(),'1',NOW(),b'0'), |
| | | (602829,'薪酬结构删除','hrm:salary-structure:delete',3,43,@sal,'','','',NULL,0,b'1',b'1',b'1','1',NOW(),'1',NOW(),b'0') |
| | | ON DUPLICATE KEY UPDATE |
| | | `name` = VALUES(`name`), `permission` = VALUES(`permission`), `type` = VALUES(`type`), |
| | | `parent_id` = VALUES(`parent_id`), `status` = VALUES(`status`), `deleted` = b'0'; |