lingmin_package@163.com 3 недель назад
Родитель
Сommit
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 ('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 ('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 ('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
 -- 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 ('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');
 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
 -- 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 datetime import datetime, timedelta
 from typing import Optional, Dict, Any, Tuple
 from typing import Optional, Dict, Any, Tuple
 from app.models import User, LoginLog, OAuthAccessToken, TokenBlacklist
 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.schemas.auth import LoginRequest, TokenResponse, UserInfoResponse
 from app.utils.security import (
 from app.utils.security import (
     verify_password, 
     verify_password, 
@@ -334,9 +335,12 @@ class AuthService:
     
     
     async def get_user_info(self, user: User) -> UserInfoResponse:
     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 = []
         permissions = []
         
         
         return UserInfoResponse(
         return UserInfoResponse(

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

@@ -212,7 +212,7 @@ class SystemService:
             cursor.execute("""
             cursor.execute("""
                 SELECT COUNT(*) as count FROM t_sys_user_role ur
                 SELECT COUNT(*) as count FROM t_sys_user_role ur
                 JOIN t_sys_role r ON ur.role_id = r.id
                 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,))
             """, (user_id,))
             
             
             result = cursor.fetchone()
             result = cursor.fetchone()

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

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