Procházet zdrojové kódy

权限逻辑调整

lingmin_package@163.com před 3 týdny
rodič
revize
f56c3c9717

+ 111 - 0
scripts/sample/lq_sample_dev.sql

@@ -7890,6 +7890,8 @@ INSERT INTO `t_sys_role` VALUES ('6347307c-d793-4d16-b94c-9bdb250ae498', '测试
 INSERT INTO `t_sys_role` VALUES ('6d4fe371-f299-412c-a1e2-bf5bb3bdf6bd', '应用管理员', 'app_manager', '负责应用管理的管理员', 1, 'system', '2026-01-06 17:46:31', 'system', '2026-01-22 23:55:45', 0);
 INSERT INTO `t_sys_role` VALUES ('a0e52467-6f4b-47c2-8300-05e0df05b14d', 'super_admin', 'super_admin', '拥有系统所有权限的超级管理员', 1, 'system', '2026-01-06 17:46:31', 'system', '2026-01-23 10:18:19', 1);
 INSERT INTO `t_sys_role` VALUES ('d3b1fc02-26b9-4f99-ab1c-821ac2cd43dc', '用户管理员', 'user_manager', '负责用户和角色管理的管理员', 1, 'system', '2026-01-06 17:46:31', 'system', '2026-01-22 23:55:59', 0);
+INSERT INTO `t_sys_role` VALUES ('sam-0001-0000-0000-000000000001', '样本中心管理员', 'sam_sys_admin', '样本中心系统管理员,拥有样本中心全部菜单和按钮权限', 1, 'system', '2026-05-02 00:00:00', 'system', '2026-05-02 00:00:00', 0);
+INSERT INTO `t_sys_role` VALUES ('sam-0002-0000-0000-000000000002', '数据操作员', 'sam_data_operator', '样本中心数据操作员,拥有全部样本中心菜单,仅查看/编辑/搜索按钮,无删除/上传/入库权限', 1, 'system', '2026-05-02 00:00:00', 'system', '2026-05-02 00:00:00', 0);
 
 -- ----------------------------
 -- Table structure for t_sys_role_menu
@@ -8118,6 +8120,115 @@ INSERT INTO `t_sys_role_menu` VALUES ('fac1d3be-5d8f-46cd-ad1b-e70025a755c2', '1
 INSERT INTO `t_sys_role_menu` VALUES ('fe20cf51-848e-4bbd-bfc3-892888c939c3', '1f7a5bdc-f567-4afc-af38-6f00b2036e23', 'settings-view-btn', 'system', '2026-01-06 17:46:35', 'system', '2026-01-22 22:41:27');
 INSERT INTO `t_sys_role_menu` VALUES ('ff8f9446-6468-4713-b25e-6a7334ebe3bc', 'd3b1fc02-26b9-4f99-ab1c-821ac2cd43dc', 'profile-save-btn', 'system', '2026-01-06 17:46:35', 'system', '2026-01-22 22:41:27');
 
+-- ----------------------------
+-- sam_sys_admin(样本中心管理员)菜单权限:全部样本中心菜单 + 全部按钮权限
+-- ----------------------------
+INSERT INTO `t_sys_role_menu` VALUES ('0d762701-d9d1-4650-90dd-cb771bc8e42c', 'sam-0001-0000-0000-000000000001', 'e30e6e95-d084-4365-a48b-0989662f7eb6', 'system', '2026-05-02 00:00:00', 'system', '2026-05-02 00:00:00');
+INSERT INTO `t_sys_role_menu` VALUES ('9a39a0fe-ce29-4b90-ab4b-9016a873962f', 'sam-0001-0000-0000-000000000001', 'kb-management-btn', 'system', '2026-05-02 00:00:00', 'system', '2026-05-02 00:00:00');
+INSERT INTO `t_sys_role_menu` VALUES ('ffdb5bd5-5f76-4c1f-ac70-d84e8defe4fb', 'sam-0001-0000-0000-000000000001', 'document-management', 'system', '2026-05-02 00:00:00', 'system', '2026-05-02 00:00:00');
+INSERT INTO `t_sys_role_menu` VALUES ('25fc3055-5698-4475-ba3d-9ca09581d67c', 'sam-0001-0000-0000-000000000001', 'basic-info-main', 'system', '2026-05-02 00:00:00', 'system', '2026-05-02 00:00:00');
+INSERT INTO `t_sys_role_menu` VALUES ('6c64ef65-4072-4ef8-88ca-1d4ebb0d6b02', 'sam-0001-0000-0000-000000000001', 'chunk-management-btn', 'system', '2026-05-02 00:00:00', 'system', '2026-05-02 00:00:00');
+INSERT INTO `t_sys_role_menu` VALUES ('7538869c-88da-4dbb-8b68-6fb5ef2cd8e1', 'sam-0001-0000-0000-000000000001', 'dfccba5b-d715-4cc4-a421-e596fcab2ffb', 'system', '2026-05-02 00:00:00', 'system', '2026-05-02 00:00:00');
+INSERT INTO `t_sys_role_menu` VALUES ('d4cb2b00-0643-4d6e-95f8-75ec8bc5f1ba', 'sam-0001-0000-0000-000000000001', 'image-management', 'system', '2026-05-02 00:00:00', 'system', '2026-05-02 00:00:00');
+INSERT INTO `t_sys_role_menu` VALUES ('ed388f85-9a58-440a-a05a-a0d316cd0b1b', 'sam-0001-0000-0000-000000000001', 'Retrieval-management', 'system', '2026-05-02 00:00:00', 'system', '2026-05-02 00:00:00');
+INSERT INTO `t_sys_role_menu` VALUES ('58357a84-9299-4881-a1c0-dac007cc71a9', 'sam-0001-0000-0000-000000000001', 'tag-management', 'system', '2026-05-02 00:00:00', 'system', '2026-05-02 00:00:00');
+INSERT INTO `t_sys_role_menu` VALUES ('53980a11-f032-4d56-9f75-972894de8638', 'sam-0001-0000-0000-000000000001', 'basic-info-standard', 'system', '2026-05-02 00:00:00', 'system', '2026-05-02 00:00:00');
+INSERT INTO `t_sys_role_menu` VALUES ('ead11979-382f-4e45-91f9-5694aa162fa0', 'sam-0001-0000-0000-000000000001', 'basic-info-construction_plan', 'system', '2026-05-02 00:00:00', 'system', '2026-05-02 00:00:00');
+INSERT INTO `t_sys_role_menu` VALUES ('db616c9a-2d79-40dc-a858-64fb03e7e873', 'sam-0001-0000-0000-000000000001', 'basic-info-regulation', 'system', '2026-05-02 00:00:00', 'system', '2026-05-02 00:00:00');
+INSERT INTO `t_sys_role_menu` VALUES ('34c6f190-35d4-46b6-92ff-87a74ea4296e', 'sam-0001-0000-0000-000000000001', 'document-view-btn', 'system', '2026-05-02 00:00:00', 'system', '2026-05-02 00:00:00');
+INSERT INTO `t_sys_role_menu` VALUES ('bb46fd8c-d34f-4ada-a38c-77dbe39e20a9', 'sam-0001-0000-0000-000000000001', 'document-upload-btn', 'system', '2026-05-02 00:00:00', 'system', '2026-05-02 00:00:00');
+INSERT INTO `t_sys_role_menu` VALUES ('18160c4e-795c-47b8-b473-7632a139e925', 'sam-0001-0000-0000-000000000001', 'document-edit-btn', 'system', '2026-05-02 00:00:00', 'system', '2026-05-02 00:00:00');
+INSERT INTO `t_sys_role_menu` VALUES ('fd4ed2df-57c4-40ac-b1fa-58c8590cac46', 'sam-0001-0000-0000-000000000001', 'document-delete-btn', 'system', '2026-05-02 00:00:00', 'system', '2026-05-02 00:00:00');
+INSERT INTO `t_sys_role_menu` VALUES ('85b8da96-fc69-4fa0-a610-92eeea775d04', 'sam-0001-0000-0000-000000000001', 'document-search-btn', 'system', '2026-05-02 00:00:00', 'system', '2026-05-02 00:00:00');
+INSERT INTO `t_sys_role_menu` VALUES ('e278e0c2-ce12-4aa7-b41e-be1a28c38148', 'sam-0001-0000-0000-000000000001', 'document-enter-btn', 'system', '2026-05-02 00:00:00', 'system', '2026-05-02 00:00:00');
+INSERT INTO `t_sys_role_menu` VALUES ('7dc0cc7c-de9e-4380-bf99-13c81a445611', 'sam-0001-0000-0000-000000000001', 'document-change-btn', 'system', '2026-05-02 00:00:00', 'system', '2026-05-02 00:00:00');
+INSERT INTO `t_sys_role_menu` VALUES ('2810592e-df2a-41e8-9846-67c4aab49b33', 'sam-0001-0000-0000-000000000001', 'admin-main', 'system', '2026-05-02 00:00:00', 'system', '2026-05-02 00:00:00');
+INSERT INTO `t_sys_role_menu` VALUES ('0b271e4a-896e-4ee0-a3b9-73ad45460e39', 'sam-0001-0000-0000-000000000001', 'admin-dashboard', 'system', '2026-05-02 00:00:00', 'system', '2026-05-02 00:00:00');
+INSERT INTO `t_sys_role_menu` VALUES ('f4453d46-a52a-4a98-bdce-237cdbe2cc81', 'sam-0001-0000-0000-000000000001', 'user-management', 'system', '2026-05-02 00:00:00', 'system', '2026-05-02 00:00:00');
+INSERT INTO `t_sys_role_menu` VALUES ('15c77f11-71d8-479c-ae54-8880ce90f44b', 'sam-0001-0000-0000-000000000001', 'role-management', 'system', '2026-05-02 00:00:00', 'system', '2026-05-02 00:00:00');
+INSERT INTO `t_sys_role_menu` VALUES ('b068daef-f0f1-4f83-9216-e43ecb4cb87a', 'sam-0001-0000-0000-000000000001', 'menu-management', 'system', '2026-05-02 00:00:00', 'system', '2026-05-02 00:00:00');
+INSERT INTO `t_sys_role_menu` VALUES ('77d86d73-e4be-4fdd-ab5b-3f9fbd2daf5c', 'sam-0001-0000-0000-000000000001', 'permission-management', 'system', '2026-05-02 00:00:00', 'system', '2026-05-02 00:00:00');
+INSERT INTO `t_sys_role_menu` VALUES ('07f23d1a-0d05-488c-afec-91b6f0e67aaf', 'sam-0001-0000-0000-000000000001', 'app-management', 'system', '2026-05-02 00:00:00', 'system', '2026-05-02 00:00:00');
+INSERT INTO `t_sys_role_menu` VALUES ('5808e963-bb06-4af6-82b8-a036c82f5533', 'sam-0001-0000-0000-000000000001', 'dict-management', 'system', '2026-05-02 00:00:00', 'system', '2026-05-02 00:00:00');
+INSERT INTO `t_sys_role_menu` VALUES ('b39726f3-8004-48c8-a338-be14dcfe85dd', 'sam-0001-0000-0000-000000000001', 'log-management', 'system', '2026-05-02 00:00:00', 'system', '2026-05-02 00:00:00');
+INSERT INTO `t_sys_role_menu` VALUES ('e9865bc4-43bd-4794-a94d-e9ab121ad9de', 'sam-0001-0000-0000-000000000001', 'system-settings', 'system', '2026-05-02 00:00:00', 'system', '2026-05-02 00:00:00');
+INSERT INTO `t_sys_role_menu` VALUES ('3b6e3942-e926-4998-ac56-831170b33213', 'sam-0001-0000-0000-000000000001', 'profile-main', 'system', '2026-05-02 00:00:00', 'system', '2026-05-02 00:00:00');
+INSERT INTO `t_sys_role_menu` VALUES ('ca0c6a37-b854-4254-aac8-932acf438fde', 'sam-0001-0000-0000-000000000001', 'profile-save-btn', 'system', '2026-05-02 00:00:00', 'system', '2026-05-02 00:00:00');
+INSERT INTO `t_sys_role_menu` VALUES ('26c49819-4640-43ad-b605-6eb04182a207', 'sam-0001-0000-0000-000000000001', 'profile-reset-btn', 'system', '2026-05-02 00:00:00', 'system', '2026-05-02 00:00:00');
+INSERT INTO `t_sys_role_menu` VALUES ('f40ae1a8-4a03-42e2-8adb-9a157ceb95d8', 'sam-0001-0000-0000-000000000001', 'profile-change-password-btn', 'system', '2026-05-02 00:00:00', 'system', '2026-05-02 00:00:00');
+INSERT INTO `t_sys_role_menu` VALUES ('ca7df0a5-fd02-46e6-8182-257fee855fe8', 'sam-0001-0000-0000-000000000001', 'admin-dashboard-user-mgmt-btn', 'system', '2026-05-02 00:00:00', 'system', '2026-05-02 00:00:00');
+INSERT INTO `t_sys_role_menu` VALUES ('5680cbdb-2294-4a98-8382-4610a8abbb06', 'sam-0001-0000-0000-000000000001', 'admin-dashboard-create-user-btn', 'system', '2026-05-02 00:00:00', 'system', '2026-05-02 00:00:00');
+INSERT INTO `t_sys_role_menu` VALUES ('b47158aa-c271-43f9-b12e-39262f5d9844', 'sam-0001-0000-0000-000000000001', 'admin-dashboard-app-mgmt-btn', 'system', '2026-05-02 00:00:00', 'system', '2026-05-02 00:00:00');
+INSERT INTO `t_sys_role_menu` VALUES ('34b5dfa9-5891-4341-befb-8c3ba19c4da7', 'sam-0001-0000-0000-000000000001', 'admin-dashboard-create-app-btn', 'system', '2026-05-02 00:00:00', 'system', '2026-05-02 00:00:00');
+INSERT INTO `t_sys_role_menu` VALUES ('f9c1de19-e8c3-445b-8f9f-f0f23e21c187', 'sam-0001-0000-0000-000000000001', 'admin-dashboard-view-logs-btn', 'system', '2026-05-02 00:00:00', 'system', '2026-05-02 00:00:00');
+INSERT INTO `t_sys_role_menu` VALUES ('d9c5f13f-484f-4f16-8fe1-27b58a991e2e', 'sam-0001-0000-0000-000000000001', 'admin-dashboard-export-logs-btn', 'system', '2026-05-02 00:00:00', 'system', '2026-05-02 00:00:00');
+INSERT INTO `t_sys_role_menu` VALUES ('a1b2c3d4-0001-4000-8000-000000000001', 'sam-0001-0000-0000-000000000001', 'admin-dashboard-settings-btn', 'system', '2026-05-02 00:00:00', 'system', '2026-05-02 00:00:00');
+INSERT INTO `t_sys_role_menu` VALUES ('a1b2c3d4-0001-4000-8000-000000000002', 'sam-0001-0000-0000-000000000001', 'user-create-btn', 'system', '2026-05-02 00:00:00', 'system', '2026-05-02 00:00:00');
+INSERT INTO `t_sys_role_menu` VALUES ('a1b2c3d4-0001-4000-8000-000000000003', 'sam-0001-0000-0000-000000000001', 'user-edit-btn', 'system', '2026-05-02 00:00:00', 'system', '2026-05-02 00:00:00');
+INSERT INTO `t_sys_role_menu` VALUES ('a1b2c3d4-0001-4000-8000-000000000004', 'sam-0001-0000-0000-000000000001', 'user-delete-btn', 'system', '2026-05-02 00:00:00', 'system', '2026-05-02 00:00:00');
+INSERT INTO `t_sys_role_menu` VALUES ('a1b2c3d4-0001-4000-8000-000000000005', 'sam-0001-0000-0000-000000000001', 'user-batch-delete-btn', 'system', '2026-05-02 00:00:00', 'system', '2026-05-02 00:00:00');
+INSERT INTO `t_sys_role_menu` VALUES ('a1b2c3d4-0001-4000-8000-000000000006', 'sam-0001-0000-0000-000000000001', 'user-assign-role-btn', 'system', '2026-05-02 00:00:00', 'system', '2026-05-02 00:00:00');
+INSERT INTO `t_sys_role_menu` VALUES ('a1b2c3d4-0001-4000-8000-000000000007', 'sam-0001-0000-0000-000000000001', 'user-reset-password-btn', 'system', '2026-05-02 00:00:00', 'system', '2026-05-02 00:00:00');
+INSERT INTO `t_sys_role_menu` VALUES ('a1b2c3d4-0001-4000-8000-000000000008', 'sam-0001-0000-0000-000000000001', 'role-create-btn', 'system', '2026-05-02 00:00:00', 'system', '2026-05-02 00:00:00');
+INSERT INTO `t_sys_role_menu` VALUES ('a1b2c3d4-0001-4000-8000-000000000009', 'sam-0001-0000-0000-000000000001', 'role-edit-btn', 'system', '2026-05-02 00:00:00', 'system', '2026-05-02 00:00:00');
+INSERT INTO `t_sys_role_menu` VALUES ('a1b2c3d4-0001-4000-8000-000000000010', 'sam-0001-0000-0000-000000000001', 'role-delete-btn', 'system', '2026-05-02 00:00:00', 'system', '2026-05-02 00:00:00');
+INSERT INTO `t_sys_role_menu` VALUES ('a1b2c3d4-0001-4000-8000-000000000011', 'sam-0001-0000-0000-000000000001', 'role-permission-mgmt-btn', 'system', '2026-05-02 00:00:00', 'system', '2026-05-02 00:00:00');
+INSERT INTO `t_sys_role_menu` VALUES ('a1b2c3d4-0001-4000-8000-000000000012', 'sam-0001-0000-0000-000000000001', 'menu-create-btn', 'system', '2026-05-02 00:00:00', 'system', '2026-05-02 00:00:00');
+INSERT INTO `t_sys_role_menu` VALUES ('a1b2c3d4-0001-4000-8000-000000000013', 'sam-0001-0000-0000-000000000001', 'menu-edit-btn', 'system', '2026-05-02 00:00:00', 'system', '2026-05-02 00:00:00');
+INSERT INTO `t_sys_role_menu` VALUES ('a1b2c3d4-0001-4000-8000-000000000014', 'sam-0001-0000-0000-000000000001', 'menu-delete-btn', 'system', '2026-05-02 00:00:00', 'system', '2026-05-02 00:00:00');
+INSERT INTO `t_sys_role_menu` VALUES ('a1b2c3d4-0001-4000-8000-000000000015', 'sam-0001-0000-0000-000000000001', 'menu-sort-btn', 'system', '2026-05-02 00:00:00', 'system', '2026-05-02 00:00:00');
+INSERT INTO `t_sys_role_menu` VALUES ('a1b2c3d4-0001-4000-8000-000000000016', 'sam-0001-0000-0000-000000000001', 'permission-create-btn', 'system', '2026-05-02 00:00:00', 'system', '2026-05-02 00:00:00');
+INSERT INTO `t_sys_role_menu` VALUES ('a1b2c3d4-0001-4000-8000-000000000017', 'sam-0001-0000-0000-000000000001', 'permission-edit-btn', 'system', '2026-05-02 00:00:00', 'system', '2026-05-02 00:00:00');
+INSERT INTO `t_sys_role_menu` VALUES ('a1b2c3d4-0001-4000-8000-000000000018', 'sam-0001-0000-0000-000000000001', 'permission-delete-btn', 'system', '2026-05-02 00:00:00', 'system', '2026-05-02 00:00:00');
+INSERT INTO `t_sys_role_menu` VALUES ('a1b2c3d4-0001-4000-8000-000000000019', 'sam-0001-0000-0000-000000000001', 'permission-view-roles-btn', 'system', '2026-05-02 00:00:00', 'system', '2026-05-02 00:00:00');
+INSERT INTO `t_sys_role_menu` VALUES ('a1b2c3d4-0001-4000-8000-000000000020', 'sam-0001-0000-0000-000000000001', 'app-create-btn', 'system', '2026-05-02 00:00:00', 'system', '2026-05-02 00:00:00');
+INSERT INTO `t_sys_role_menu` VALUES ('a1b2c3d4-0001-4000-8000-000000000021', 'sam-0001-0000-0000-000000000001', 'app-edit-btn', 'system', '2026-05-02 00:00:00', 'system', '2026-05-02 00:00:00');
+INSERT INTO `t_sys_role_menu` VALUES ('a1b2c3d4-0001-4000-8000-000000000022', 'sam-0001-0000-0000-000000000001', 'app-delete-btn', 'system', '2026-05-02 00:00:00', 'system', '2026-05-02 00:00:00');
+INSERT INTO `t_sys_role_menu` VALUES ('a1b2c3d4-0001-4000-8000-000000000023', 'sam-0001-0000-0000-000000000001', 'app-view-secret-btn', 'system', '2026-05-02 00:00:00', 'system', '2026-05-02 00:00:00');
+INSERT INTO `t_sys_role_menu` VALUES ('a1b2c3d4-0001-4000-8000-000000000024', 'sam-0001-0000-0000-000000000001', 'app-reset-secret-btn', 'system', '2026-05-02 00:00:00', 'system', '2026-05-02 00:00:00');
+INSERT INTO `t_sys_role_menu` VALUES ('a1b2c3d4-0001-4000-8000-000000000025', 'sam-0001-0000-0000-000000000001', 'app-view-logs-btn', 'system', '2026-05-02 00:00:00', 'system', '2026-05-02 00:00:00');
+INSERT INTO `t_sys_role_menu` VALUES ('a1b2c3d4-0002-4000-8000-000000000001', 'sam-0001-0000-0000-000000000001', 'dict-category-view-btn', 'system', '2026-05-02 00:00:00', 'system', '2026-05-02 00:00:00');
+INSERT INTO `t_sys_role_menu` VALUES ('a1b2c3d4-0002-4000-8000-000000000002', 'sam-0001-0000-0000-000000000001', 'dict-category-create-btn', 'system', '2026-05-02 00:00:00', 'system', '2026-05-02 00:00:00');
+INSERT INTO `t_sys_role_menu` VALUES ('a1b2c3d4-0002-4000-8000-000000000003', 'sam-0001-0000-0000-000000000001', 'dict-category-edit-btn', 'system', '2026-05-02 00:00:00', 'system', '2026-05-02 00:00:00');
+INSERT INTO `t_sys_role_menu` VALUES ('a1b2c3d4-0002-4000-8000-000000000004', 'sam-0001-0000-0000-000000000001', 'dict-category-delete-btn', 'system', '2026-05-02 00:00:00', 'system', '2026-05-02 00:00:00');
+INSERT INTO `t_sys_role_menu` VALUES ('a1b2c3d4-0002-4000-8000-000000000005', 'sam-0001-0000-0000-000000000001', 'dict-item-view-btn', 'system', '2026-05-02 00:00:00', 'system', '2026-05-02 00:00:00');
+INSERT INTO `t_sys_role_menu` VALUES ('a1b2c3d4-0002-4000-8000-000000000006', 'sam-0001-0000-0000-000000000001', 'dict-item-create-btn', 'system', '2026-05-02 00:00:00', 'system', '2026-05-02 00:00:00');
+INSERT INTO `t_sys_role_menu` VALUES ('a1b2c3d4-0002-4000-8000-000000000007', 'sam-0001-0000-0000-000000000001', 'dict-item-edit-btn', 'system', '2026-05-02 00:00:00', 'system', '2026-05-02 00:00:00');
+INSERT INTO `t_sys_role_menu` VALUES ('a1b2c3d4-0002-4000-8000-000000000008', 'sam-0001-0000-0000-000000000001', 'dict-item-delete-btn', 'system', '2026-05-02 00:00:00', 'system', '2026-05-02 00:00:00');
+INSERT INTO `t_sys_role_menu` VALUES ('a1b2c3d4-0002-4000-8000-000000000009', 'sam-0001-0000-0000-000000000001', 'dict-item-batch-delete-btn', 'system', '2026-05-02 00:00:00', 'system', '2026-05-02 00:00:00');
+INSERT INTO `t_sys_role_menu` VALUES ('a1b2c3d4-0002-4000-8000-000000000010', 'sam-0001-0000-0000-000000000001', 'dict-item-search-btn', 'system', '2026-05-02 00:00:00', 'system', '2026-05-02 00:00:00');
+INSERT INTO `t_sys_role_menu` VALUES ('a1b2c3d4-0002-4000-8000-000000000011', 'sam-0001-0000-0000-000000000001', 'dict-item-toggle-status-btn', 'system', '2026-05-02 00:00:00', 'system', '2026-05-02 00:00:00');
+INSERT INTO `t_sys_role_menu` VALUES ('a1b2c3d4-0002-4000-8000-000000000012', 'sam-0001-0000-0000-000000000001', 'dict-export-btn', 'system', '2026-05-02 00:00:00', 'system', '2026-05-02 00:00:00');
+INSERT INTO `t_sys_role_menu` VALUES ('a1b2c3d4-0002-4000-8000-000000000013', 'sam-0001-0000-0000-000000000001', 'dict-import-btn', 'system', '2026-05-02 00:00:00', 'system', '2026-05-02 00:00:00');
+INSERT INTO `t_sys_role_menu` VALUES ('a1b2c3d4-0003-4000-8000-000000000001', 'sam-0001-0000-0000-000000000001', 'log-view-btn', 'system', '2026-05-02 00:00:00', 'system', '2026-05-02 00:00:00');
+INSERT INTO `t_sys_role_menu` VALUES ('a1b2c3d4-0003-4000-8000-000000000002', 'sam-0001-0000-0000-000000000001', 'log-export-btn', 'system', '2026-05-02 00:00:00', 'system', '2026-05-02 00:00:00');
+INSERT INTO `t_sys_role_menu` VALUES ('a1b2c3d4-0003-4000-8000-000000000003', 'sam-0001-0000-0000-000000000001', 'log-clear-btn', 'system', '2026-05-02 00:00:00', 'system', '2026-05-02 00:00:00');
+INSERT INTO `t_sys_role_menu` VALUES ('a1b2c3d4-0003-4000-8000-000000000004', 'sam-0001-0000-0000-000000000001', 'settings-view-btn', 'system', '2026-05-02 00:00:00', 'system', '2026-05-02 00:00:00');
+INSERT INTO `t_sys_role_menu` VALUES ('a1b2c3d4-0003-4000-8000-000000000005', 'sam-0001-0000-0000-000000000001', 'settings-edit-btn', 'system', '2026-05-02 00:00:00', 'system', '2026-05-02 00:00:00');
+
+-- ----------------------------
+-- sam_data_operator(数据操作员)菜单权限:全部样本中心菜单,仅查看/编辑/搜索按钮(无删除/上传/入库/转换)
+-- ----------------------------
+INSERT INTO `t_sys_role_menu` VALUES ('efeb41a9-35a2-4f94-9e0e-3ec683ef3ac9', 'sam-0002-0000-0000-000000000002', 'e30e6e95-d084-4365-a48b-0989662f7eb6', 'system', '2026-05-02 00:00:00', 'system', '2026-05-02 00:00:00');
+INSERT INTO `t_sys_role_menu` VALUES ('b11ad781-49c9-43b0-bd2c-0da20fca329c', 'sam-0002-0000-0000-000000000002', 'kb-management-btn', 'system', '2026-05-02 00:00:00', 'system', '2026-05-02 00:00:00');
+INSERT INTO `t_sys_role_menu` VALUES ('b3504e42-5b7d-4f33-9e1b-d88cf2944946', 'sam-0002-0000-0000-000000000002', 'document-management', 'system', '2026-05-02 00:00:00', 'system', '2026-05-02 00:00:00');
+INSERT INTO `t_sys_role_menu` VALUES ('ed0a6518-1268-40bd-a109-0e5d0b15739a', 'sam-0002-0000-0000-000000000002', 'basic-info-main', 'system', '2026-05-02 00:00:00', 'system', '2026-05-02 00:00:00');
+INSERT INTO `t_sys_role_menu` VALUES ('6597a708-21c8-43b2-bec8-4d62657a5023', 'sam-0002-0000-0000-000000000002', 'chunk-management-btn', 'system', '2026-05-02 00:00:00', 'system', '2026-05-02 00:00:00');
+INSERT INTO `t_sys_role_menu` VALUES ('5e7256c0-d4cc-449f-bbd0-f67f83c41d88', 'sam-0002-0000-0000-000000000002', 'dfccba5b-d715-4cc4-a421-e596fcab2ffb', 'system', '2026-05-02 00:00:00', 'system', '2026-05-02 00:00:00');
+INSERT INTO `t_sys_role_menu` VALUES ('a280d4c9-ca08-4e9b-9c01-a352adfcd756', 'sam-0002-0000-0000-000000000002', 'image-management', 'system', '2026-05-02 00:00:00', 'system', '2026-05-02 00:00:00');
+INSERT INTO `t_sys_role_menu` VALUES ('5051ae85-8883-4640-9510-776afde26f42', 'sam-0002-0000-0000-000000000002', 'Retrieval-management', 'system', '2026-05-02 00:00:00', 'system', '2026-05-02 00:00:00');
+INSERT INTO `t_sys_role_menu` VALUES ('3770d5af-1719-428c-b038-1e50d6055d1e', 'sam-0002-0000-0000-000000000002', 'tag-management', 'system', '2026-05-02 00:00:00', 'system', '2026-05-02 00:00:00');
+INSERT INTO `t_sys_role_menu` VALUES ('c61a2461-edf7-493a-a7f8-44341980d09b', 'sam-0002-0000-0000-000000000002', 'basic-info-standard', 'system', '2026-05-02 00:00:00', 'system', '2026-05-02 00:00:00');
+INSERT INTO `t_sys_role_menu` VALUES ('a162a583-8511-4e62-9793-d33200e5ffb2', 'sam-0002-0000-0000-000000000002', 'basic-info-construction_plan', 'system', '2026-05-02 00:00:00', 'system', '2026-05-02 00:00:00');
+INSERT INTO `t_sys_role_menu` VALUES ('0b50a7a4-339e-4c6f-a820-1f23c2a0c92a', 'sam-0002-0000-0000-000000000002', 'basic-info-regulation', 'system', '2026-05-02 00:00:00', 'system', '2026-05-02 00:00:00');
+INSERT INTO `t_sys_role_menu` VALUES ('e59cc4ad-9f4f-47df-a872-6b61ab845f89', 'sam-0002-0000-0000-000000000002', 'document-view-btn', 'system', '2026-05-02 00:00:00', 'system', '2026-05-02 00:00:00');
+INSERT INTO `t_sys_role_menu` VALUES ('3f2b0393-dd5f-46b3-a123-cc2951e3cd48', 'sam-0002-0000-0000-000000000002', 'document-edit-btn', 'system', '2026-05-02 00:00:00', 'system', '2026-05-02 00:00:00');
+INSERT INTO `t_sys_role_menu` VALUES ('bc01fd35-7488-4ae4-a9e5-11724abd3cf8', 'sam-0002-0000-0000-000000000002', 'document-search-btn', 'system', '2026-05-02 00:00:00', 'system', '2026-05-02 00:00:00');
+INSERT INTO `t_sys_role_menu` VALUES ('cf2193d6-c3eb-4151-8d85-4bb78d2aad47', 'sam-0002-0000-0000-000000000002', 'profile-main', 'system', '2026-05-02 00:00:00', 'system', '2026-05-02 00:00:00');
+INSERT INTO `t_sys_role_menu` VALUES ('d39b1d4f-68be-4889-b72b-eb8b03c25ffa', 'sam-0002-0000-0000-000000000002', 'profile-save-btn', 'system', '2026-05-02 00:00:00', 'system', '2026-05-02 00:00:00');
+INSERT INTO `t_sys_role_menu` VALUES ('98b2142f-460c-4ae8-9ccb-47d1c3ecf843', 'sam-0002-0000-0000-000000000002', 'profile-reset-btn', 'system', '2026-05-02 00:00:00', 'system', '2026-05-02 00:00:00');
+INSERT INTO `t_sys_role_menu` VALUES ('8bcc74de-3dd1-4caa-af34-3d221bbbc0b3', 'sam-0002-0000-0000-000000000002', 'profile-change-password-btn', 'system', '2026-05-02 00:00:00', 'system', '2026-05-02 00:00:00');
+
 -- ----------------------------
 -- Table structure for t_sys_role_permission
 -- ----------------------------

+ 7 - 3
src/app/services/auth_service.py

@@ -13,6 +13,7 @@ from sqlalchemy import select, and_, or_
 from datetime import datetime, timedelta
 from typing import Optional, Dict, Any, Tuple
 from app.models import User, LoginLog, OAuthAccessToken, TokenBlacklist
+from app.models.user import UserRole, Role
 from app.schemas.auth import LoginRequest, TokenResponse, UserInfoResponse
 from app.utils.security import (
     verify_password, 
@@ -334,9 +335,12 @@ class AuthService:
     
     async def get_user_info(self, user: User) -> UserInfoResponse:
         """获取用户信息"""
-        
-        # TODO: 获取用户角色和权限
-        roles = []
+
+        # 获取用户角色
+        stmt = select(Role).join(UserRole, Role.id == UserRole.role_id).where(UserRole.user_id == user.id)
+        result = await self.db.execute(stmt)
+        roles = [r.code for r in result.scalars().all()]
+
         permissions = []
         
         return UserInfoResponse(

+ 1 - 1
src/app/services/system_service.py

@@ -212,7 +212,7 @@ class SystemService:
             cursor.execute("""
                 SELECT COUNT(*) as count FROM t_sys_user_role ur
                 JOIN t_sys_role r ON ur.role_id = r.id
-                WHERE ur.user_id = %s AND r.name = 'super_admin' AND ur.is_active = 1
+                WHERE ur.user_id = %s AND r.code = 'super_admin' AND ur.is_active = 1
             """, (user_id,))
             
             result = cursor.fetchone()

+ 14 - 0
项目/样本中心需求.md

@@ -151,3 +151,17 @@
         返回 { token, refresh_token, user }
         前端保存 token 到 localStorage → 跳转到首页 /
+
+
+
+
+
+### 样本中心 角色定义   LQAdminPlatform(样本中心后端) 、LQAdminFront(样本中心前端)  
+    - 角色定义
+      - super_admin 超级管理员拥有所有功能权限(默认查看所有权限)
+      - sam_sys_admin 样本中心管理员  (样本中心系统中动态定义),所有功能权限
+      - sam_data_operator 数据操作员  (样本中心系统中动态定义),没有系统管理的权限
+    - 角色获取 统一通过统一认证平台获取 /oauth/userinfo   roles: [{ "name": "超级管理员", "code": "super_admin" }]
+    - 再根据角色获取权限(样本中心系统配置的角色权限),再根据实际权限控制样本中心的系统功能
+    - 如果统一认证平台 返回 的角色 样本中心未定义该角色 就没有功能权限,所以说 完全没有问题
+