- 人员来自现有 user 表
+ 人员来自现有 user 表 · 仅企业账号(不含物业)
loadUsers(true))" />
diff --git a/xiaoqu-agent-service/src/main/java/me/iiv/agent/admin/AdminConsoleController.java b/xiaoqu-agent-service/src/main/java/me/iiv/agent/admin/AdminConsoleController.java
index a059811..b21e816 100644
--- a/xiaoqu-agent-service/src/main/java/me/iiv/agent/admin/AdminConsoleController.java
+++ b/xiaoqu-agent-service/src/main/java/me/iiv/agent/admin/AdminConsoleController.java
@@ -88,7 +88,9 @@ public class AdminConsoleController {
if (keyword.length() > 100) bad("搜索关键词最多 100 字");
int pageNo = Math.max(page, 1);
int size = pageSize < 1 ? 20 : Math.min(pageSize, 100);
- LambdaQueryWrapper query = new LambdaQueryWrapper().eq(User::getSoftDelete, 0);
+ LambdaQueryWrapper query = new LambdaQueryWrapper().eq(User::getSoftDelete, 0)
+ // 只查企业账号(0=企业内部 1=代理),物业账号(2)不进列表;历史数据可能为 NULL 一并保留
+ .and(w -> w.ne(User::getEnterpriseType, 2).or().isNull(User::getEnterpriseType));
if (!keyword.isBlank()) query.and(w -> w.like(User::getName, keyword.trim())
.or().like(User::getMobile, keyword.trim()));
Long total = userMapper.selectCount(query);
diff --git a/xiaoqu-agent-service/src/test/java/me/iiv/agent/admin/AdminConsoleControllerTest.java b/xiaoqu-agent-service/src/test/java/me/iiv/agent/admin/AdminConsoleControllerTest.java
index ccbf91d..5dec504 100644
--- a/xiaoqu-agent-service/src/test/java/me/iiv/agent/admin/AdminConsoleControllerTest.java
+++ b/xiaoqu-agent-service/src/test/java/me/iiv/agent/admin/AdminConsoleControllerTest.java
@@ -19,6 +19,7 @@ import org.mockito.junit.jupiter.MockitoExtension;
import java.util.List;
import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertTrue;
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.Mockito.when;
@@ -41,6 +42,10 @@ class AdminConsoleControllerTest {
@BeforeEach
void setUp() {
+ com.baomidou.mybatisplus.core.metadata.TableInfoHelper.initTableInfo(
+ new org.apache.ibatis.builder.MapperBuilderAssistant(
+ new com.baomidou.mybatisplus.core.MybatisConfiguration(), ""),
+ me.iiv.agent.entity.m0.User.class);
controller = new AdminConsoleController(userMapper, authorityMapper, agentMapper, tokenMapper,
scopeMapper, toolMapper, scopeToolMapper, auditMapper, tokenScopeMapper,
permissionService, tokenService);
@@ -62,4 +67,15 @@ class AdminConsoleControllerTest {
assertEquals(1, view.page());
assertEquals(20, view.pageSize());
}
+
+ @Test
+ void usersExcludesPropertyAccounts() {
+ controller.users("", 1, 20);
+ org.mockito.ArgumentCaptor>
+ captor = org.mockito.ArgumentCaptor.forClass(com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper.class);
+ org.mockito.Mockito.verify(userMapper, org.mockito.Mockito.atLeastOnce()).selectCount(captor.capture());
+ String sql = captor.getValue().getSqlSegment();
+ assertTrue(sql.contains("enterprise_type"), "用户列表必须过滤物业账号: " + sql);
+ assertTrue(sql.contains("IS NULL"), "历史 NULL 数据需保留: " + sql);
+ }
}