fix(密钥管理): 分组口径改为「分组创建人名下用户」
- 生产分组成员表 biz_shop_manage_group_member 基本未使用(仅 2 条老数据),导致分组列恒空 - 实际归属:分组 created_by_id/user_id 即主管,其组员为 users.created_by_id 指向该主管的用户 - 分组名批量查询与按分组圈人 SQL 均按此关系重写;按分组筛选含组长本人 - 无分组记录的用户分组列回退展示「所属主管(未建分组)」,避免空值
This commit is contained in:
+38
-7
@@ -249,13 +249,14 @@ class UserApiSecretServiceTest {
|
||||
UserApiSecretService service = newService();
|
||||
AdminUserEntity operator = new AdminUserEntity();
|
||||
operator.setId(88L);
|
||||
// 主管未带任何分组 → 直接空页,不查密钥表。
|
||||
// 主管既无分组、也名下无子账户 → 只剩自己一行(无密钥记录则空页)。
|
||||
when(adminGroupMapper.selectLedGroups(88L)).thenReturn(List.of());
|
||||
when(adminUserMapper.selectList(any())).thenReturn(List.of());
|
||||
|
||||
var page = service.adminPage(operator, new AdminUserSecretQuery());
|
||||
|
||||
assertThat(page.getItems()).isEmpty();
|
||||
verify(mapper, never()).selectList(any());
|
||||
assertThat(page.getGroupOptions()).isEmpty();
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -267,20 +268,50 @@ class UserApiSecretServiceTest {
|
||||
group.setId(5L);
|
||||
group.setGroupName("一组");
|
||||
when(adminGroupMapper.selectLedGroups(88L)).thenReturn(List.of(group));
|
||||
when(adminGroupMapper.selectUserIdsByGroupIds(any())).thenReturn(List.of(1L));
|
||||
when(adminGroupMapper.selectUserIdsByGroupId(5L)).thenReturn(List.of(1L, 88L));
|
||||
when(mapper.selectList(any())).thenReturn(List.of(row(1L, "similar-asin", "enc:sk-1", "passed")));
|
||||
AdminUserEntity user = new AdminUserEntity();
|
||||
user.setId(1L);
|
||||
user.setUsername("张三");
|
||||
when(adminUserMapper.selectById(1L)).thenReturn(user);
|
||||
when(adminGroupMapper.selectGroupNamesByUserIds(any())).thenReturn(List.of());
|
||||
UserGroupRef ref = new UserGroupRef();
|
||||
ref.setUserId(1L);
|
||||
ref.setGroupName("一组");
|
||||
when(adminGroupMapper.selectGroupNamesByUserIds(any())).thenReturn(List.of(ref));
|
||||
|
||||
var page = service.adminPage(operator, new AdminUserSecretQuery());
|
||||
|
||||
assertThat(page.getItems()).hasSize(1);
|
||||
assertThat(page.getItems().get(0).getGroups()).containsExactly("一组");
|
||||
assertThat(page.getGroupOptions()).extracting(com.nanri.aiimage.modules.usersecret.model.vo.AdminUserSecretPageVo.GroupOptionVo::groupName)
|
||||
.containsExactly("一组");
|
||||
verify(adminGroupMapper).selectUserIdsByGroupIds(any());
|
||||
verify(adminGroupMapper).selectUserIdsByGroupId(5L);
|
||||
}
|
||||
|
||||
@Test
|
||||
void adminPageFallsBackToLeaderUsernameWhenNoGroup() {
|
||||
UserApiSecretService service = newService();
|
||||
AdminUserEntity operator = new AdminUserEntity();
|
||||
operator.setId(88L);
|
||||
when(adminAuthSupport.currentRole(operator)).thenReturn("super_admin");
|
||||
when(mapper.selectList(any())).thenReturn(List.of(row(1L, "similar-asin", "enc:sk-1", "passed")));
|
||||
AdminUserEntity user = new AdminUserEntity();
|
||||
user.setId(1L);
|
||||
user.setUsername("张三");
|
||||
user.setCreatedById(99L);
|
||||
when(adminUserMapper.selectById(1L)).thenReturn(user);
|
||||
when(adminGroupMapper.selectGroupNamesByUserIds(any())).thenReturn(List.of());
|
||||
AdminUserEntity leader = new AdminUserEntity();
|
||||
leader.setId(99L);
|
||||
leader.setUsername("主管甲");
|
||||
when(adminUserMapper.selectBatchIds(any())).thenReturn(List.of(user, leader));
|
||||
when(adminGroupMapper.selectAllGroups()).thenReturn(List.of());
|
||||
|
||||
var page = service.adminPage(operator, new AdminUserSecretQuery());
|
||||
|
||||
assertThat(page.getItems()).hasSize(1);
|
||||
assertThat(page.getItems().get(0).getGroups()).isEmpty();
|
||||
assertThat(page.getItems().get(0).getLeaderUsername()).isEqualTo("主管甲");
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -289,7 +320,7 @@ class UserApiSecretServiceTest {
|
||||
AdminUserEntity operator = new AdminUserEntity();
|
||||
operator.setId(88L);
|
||||
when(adminAuthSupport.currentRole(operator)).thenReturn("super_admin");
|
||||
when(adminGroupMapper.selectUserIdsByGroupIds(List.of(5L))).thenReturn(List.of());
|
||||
when(adminGroupMapper.selectUserIdsByGroupId(5L)).thenReturn(List.of());
|
||||
when(adminGroupMapper.selectAllGroups()).thenReturn(List.of());
|
||||
|
||||
AdminUserSecretQuery query = new AdminUserSecretQuery();
|
||||
@@ -297,7 +328,7 @@ class UserApiSecretServiceTest {
|
||||
var page = service.adminPage(operator, query);
|
||||
|
||||
assertThat(page.getItems()).isEmpty();
|
||||
verify(adminGroupMapper).selectUserIdsByGroupIds(List.of(5L));
|
||||
verify(adminGroupMapper).selectUserIdsByGroupId(5L);
|
||||
}
|
||||
|
||||
@Test
|
||||
|
||||
Reference in New Issue
Block a user