-- RBAC 库:修复 GUID 脏数据(menu / role / user / organization 等) -- 与 diagnose_rbac_bad_guids.sql 配套;修复后重新跑诊断应无结果 -- -- ⚠️ 在 API 实际连接的 RBAC 库执行(api.nanafa.com 对应库,不是本机 oms 除非 API 连本机) SET @GUID_RE = '^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$'; SET @ROOT_PID = '00000000-0000-0000-0000-000000000000'; SET @ADMIN_USER_ID = ( SELECT `Id` FROM `user` WHERE `Account` = 'admin' AND (`IsDeleted` = 0 OR `IsDeleted` IS NULL) LIMIT 1 ); SET @ADMIN_USER_ID = IFNULL( @ADMIN_USER_ID, (SELECT `Id` FROM `user` WHERE `IsDeleted` = 0 OR `IsDeleted` IS NULL ORDER BY `CreateTime` LIMIT 1) ); SELECT @ADMIN_USER_ID AS admin_user_id_used; -- ========== menu ========== UPDATE `menu` SET `CreateUserId` = @ADMIN_USER_ID WHERE `CreateUserId` IS NOT NULL AND `CreateUserId` NOT REGEXP @GUID_RE; UPDATE `menu` SET `UpdateUserId` = @ADMIN_USER_ID WHERE `UpdateUserId` IS NOT NULL AND `UpdateUserId` NOT REGEXP @GUID_RE; UPDATE `menu` SET `PId` = @ROOT_PID WHERE `PId` IS NOT NULL AND `PId` NOT REGEXP @GUID_RE; UPDATE `menu` SET `ConcurrencyStamp` = UUID() WHERE `ConcurrencyStamp` IS NOT NULL AND `ConcurrencyStamp` NOT REGEXP @GUID_RE; -- 小红书种子菜单(精确 Id) UPDATE `menu` SET `CreateUserId` = @ADMIN_USER_ID, `UpdateUserId` = @ADMIN_USER_ID WHERE `Id` IN ( 'a1b2c3d4-e5f6-7890-abcd-ef1234567801', 'a1b2c3d4-e5f6-7890-abcd-ef1234567802', 'a1b2c3d4-e5f6-7890-abcd-ef1234567803', 'a1b2c3d4-e5f6-7890-abcd-ef1234567804', 'a1b2c3d4-e5f6-7890-abcd-ef1234567805', 'a1b2c3d4-e5f6-7890-abcd-ef1234567806', 'a1b2c3d4-e5f6-7890-abcd-ef1234567807', 'a1b2c3d4-e5f6-7890-abcd-ef1234567808' ); -- ========== role(若列为 CHAR(36) GUID)========== UPDATE `role` SET `CreateUserId` = @ADMIN_USER_ID WHERE `CreateUserId` IS NOT NULL AND CAST(`CreateUserId` AS CHAR) NOT REGEXP @GUID_RE; UPDATE `role` SET `UpdateUserId` = @ADMIN_USER_ID WHERE `UpdateUserId` IS NOT NULL AND CAST(`UpdateUserId` AS CHAR) NOT REGEXP @GUID_RE; UPDATE `role` SET `ConcurrencyStamp` = UUID() WHERE `ConcurrencyStamp` IS NOT NULL AND `ConcurrencyStamp` NOT REGEXP @GUID_RE; -- ========== user ========== UPDATE `user` SET `OrganizationId` = NULL WHERE `OrganizationId` IS NOT NULL AND `OrganizationId` <> '' AND `OrganizationId` NOT REGEXP @GUID_RE; UPDATE `user` SET `ConcurrencyStamp` = UUID() WHERE `ConcurrencyStamp` IS NOT NULL AND `ConcurrencyStamp` NOT REGEXP @GUID_RE; -- ========== organization ========== UPDATE `organization` SET `ParentId` = NULL WHERE `ParentId` IS NOT NULL AND `ParentId` <> '' AND `ParentId` NOT REGEXP @GUID_RE; UPDATE `organization` SET `LeaderId` = NULL WHERE `LeaderId` IS NOT NULL AND `LeaderId` <> '' AND `LeaderId` NOT REGEXP @GUID_RE; -- 修复后请再执行 diagnose_rbac_bad_guids.sql 确认无脏行