From a327fb5bece99809958c7921fcab67cdc02fae64 Mon Sep 17 00:00:00 2001
From: tuqin <tuqin@tuqin.cn>
Date: 星期四, 22 十月 2026 18:50:41 +0800
Subject: [PATCH] fix(sql): 权限对齐 SQL 改为按 path 定位父菜单(兼容不同环境菜单 id),并注明执行前检查 id 占用
---
sql/mysql/hrm_permission_align_init.sql | 99 +++++++++++++++++++++++++++++--------------------
1 files changed, 59 insertions(+), 40 deletions(-)
diff --git a/sql/mysql/hrm_permission_align_init.sql b/sql/mysql/hrm_permission_align_init.sql
index cb2e8c3..36635ef 100644
--- a/sql/mysql/hrm_permission_align_init.sql
+++ b/sql/mysql/hrm_permission_align_init.sql
@@ -4,53 +4,72 @@
-- 瀵艰嚧闈炶秴绾х鐞嗗憳璋冪敤鎺ュ彛鏃朵竴寰� 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,'绀句繚妗f鏌ヨ','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,'绀句繚妗f鏌ヨ','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';
--
Gitblit v1.9.3