feat(admin): 用户管理列表只查企业账号(enterprise_type 0/1, NULL保留), 排除物业账号(2)
This commit is contained in:
@@ -254,7 +254,7 @@ onMounted(async () => {
|
||||
<div class="token-layout">
|
||||
<div>
|
||||
<article class="card">
|
||||
<div class="card-title"><span>人员</span><small>来自现有 user 表</small></div>
|
||||
<div class="card-title"><span>人员</span><small>来自现有 user 表 · 仅企业账号(不含物业)</small></div>
|
||||
<div class="toolbar compact">
|
||||
<el-input v-model="userKeyword" clearable placeholder="姓名 / 手机号" aria-label="搜索人员"
|
||||
data-testid="admin-input-user-search" @keyup.enter="run(() => loadUsers(true))" />
|
||||
|
||||
@@ -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<User> query = new LambdaQueryWrapper<User>().eq(User::getSoftDelete, 0);
|
||||
LambdaQueryWrapper<User> query = new LambdaQueryWrapper<User>().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);
|
||||
|
||||
@@ -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<com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper<me.iiv.agent.entity.m0.User>>
|
||||
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);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user