You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 

39 KiB

用户管理

**本文引用的文件** - [AuthUser.java](file://crm-auth/src/main/java/com/crm/auth/domain/entity/AuthUser.java) - [SysRole.java](file://crm-auth/src/main/java/com/crm/auth/domain/entity/SysRole.java) - [SysDept.java](file://crm-auth/src/main/java/com/crm/auth/domain/entity/SysDept.java) - [SysUserRole.java](file://crm-auth/src/main/java/com/crm/auth/domain/entity/SysUserRole.java) - [SysUserDept.java](file://crm-auth/src/main/java/com/crm/auth/domain/entity/SysUserDept.java) - [AuthUserMapper.java](file://crm-auth/src/main/java/com/crm/auth/mapper/AuthUserMapper.java) - [SysUserRoleMapper.java](file://crm-auth/src/main/java/com/crm/auth/mapper/SysUserRoleMapper.java) - [SysUserDeptMapper.java](file://crm-auth/src/main/java/com/crm/auth/mapper/SysUserDeptMapper.java) - [IAuthUserService.java](file://crm-auth/src/main/java/com/crm/auth/service/IAuthUserService.java) - [AuthUserServiceImpl.java](file://crm-auth/src/main/java/com/crm/auth/service/impl/AuthUserServiceImpl.java) - [AuthService.java](file://crm-auth/src/main/java/com/crm/auth/service/IAuthService.java) - [AuthController.java](file://crm-auth/src/main/java/com/crm/auth/controller/AuthController.java) - [SecurityConfig.java](file://crm-auth/src/main/java/com/crm/auth/config/SecurityConfig.java) - [TokenService.java](file://crm-auth/src/main/java/com/crm/auth/security/TokenService.java) - [DataScopeInterceptor.java](file://crm-auth/src/main/java/com/crm/auth/security/DataScopeInterceptor.java) - [BaseEntity.java](file://crm-base/src/main/java/com/crm/base/domain/entity/BaseEntity.java) - [OwnedEntity.java](file://crm-base/src/main/java/com/crm/base/domain/entity/OwnedEntity.java) - [StatusEnum.java](file://crm-base/src/main/java/com/crm/base/domain/enums/StatusEnum.java) - [Result.java](file://crm-base/src/main/java/com/crm/base/domain/result/Result.java) - [PageResult.java](file://crm-base/src/main/java/com/crm/base/domain/result/PageResult.java) - [ExcelUtil.java](file://crm-base/src/main/java/com/crm/base/utils/ExcelUtil.java) - [CrmSqlInjector.java](file://crm-base/src/main/java/com/crm/config/CrmSqlInjector.java) - [MybatisPlusConfig.java](file://crm-base/src/main/java/com/crm/config/MybatisPlusConfig.java) - [UserPageParam.java](file://crm-auth/src/main/java/com/crm/auth/domain/param/UserPageParam.java) - [UserListDTO.java](file://crm-auth/src/main/java/com/crm/auth/domain/dto/UserListDTO.java) - [UserStatsVO.java](file://crm-auth/src/main/java/com/crm/auth/domain/dto/UserStatsVO.java)

更新摘要

变更内容

  • 新增完整的用户列表功能,包括分页支持、角色过滤和用户统计功能
  • 新增 UserPageParam 参数类用于分页查询参数封装
  • 新增 UserListDTO 数据传输对象用于用户列表数据展示
  • 新增 UserStatsVO 值对象用于用户统计数据聚合
  • 扩展 IAuthUserService 接口,新增用户列表和统计相关方法
  • 扩展 AuthUserServiceImpl 实现类,实现用户列表查询和统计逻辑

目录

  1. 简介
  2. 项目结构
  3. 核心组件
  4. 架构总览
  5. 详细组件分析
  6. 依赖关系分析
  7. 性能考虑
  8. 故障排查指南
  9. 结论
  10. 附录:API与使用示例

简介

本技术文档围绕"用户管理"模块,系统性阐述用户实体模型设计、CRUD操作、状态管理、密码加密存储、用户与角色/部门的多对多关系映射,以及数据导入导出、批量操作、查询优化等高级能力。同时提供完整的API接口说明与最佳实践,帮助用户全生命周期管理(创建、分配、启用/禁用、注销、审计)在系统中的落地。最新更新:新增了完整的用户列表功能,包括分页支持、角色过滤和用户统计功能,大幅提升了用户管理的查询效率和数据分析能力。

项目结构

用户管理相关代码主要位于认证授权子模块 crm-auth,基础通用能力位于 crm-base。整体采用分层架构:

  • 控制器层:对外暴露REST API
  • 服务层:业务编排与事务边界
  • 数据访问层:基于 MyBatis-Plus 的 Mapper
  • 领域模型:实体、DTO、枚举、参数对象
  • 安全配置:JWT、拦截器、权限与数据范围控制
  • 基础设施:分页、结果封装、Excel工具、SQL注入器等
graph TB
subgraph "应用入口"
App["CrmAppApplication"]
end
subgraph "认证授权(crm-auth)"
Ctrl["AuthController"]
Svc["IAuthUserService / AuthUserServiceImpl"]
Mapper["AuthUserMapper / SysUserRoleMapper / SysUserDeptMapper"]
Entity["AuthUser / SysRole / SysDept / SysUserRole / SysUserDept"]
DTO["UserPageParam / UserListDTO / UserStatsVO"]
Sec["SecurityConfig / TokenService / DataScopeInterceptor"]
end
subgraph "基础能力(crm-base)"
Base["BaseEntity / OwnedEntity / StatusEnum"]
Result["Result / PageResult"]
Excel["ExcelUtil"]
MP["MybatisPlusConfig / CrmSqlInjector"]
end
App --> Ctrl
Ctrl --> Svc
Svc --> Mapper
Mapper --> Entity
Svc --> DTO
Svc --> Sec
Svc --> Base
Svc --> Result
Svc --> Excel
Svc --> MP

图表来源

  • AuthController.java
  • IAuthUserService.java
  • AuthUserServiceImpl.java
  • AuthUserMapper.java
  • SysUserRoleMapper.java
  • SysUserDeptMapper.java
  • AuthUser.java
  • SysRole.java
  • SysDept.java
  • SysUserRole.java
  • SysUserDept.java
  • UserPageParam.java
  • UserListDTO.java
  • UserStatsVO.java
  • SecurityConfig.java
  • TokenService.java
  • DataScopeInterceptor.java
  • BaseEntity.java
  • OwnedEntity.java
  • StatusEnum.java
  • Result.java
  • PageResult.java
  • ExcelUtil.java
  • MybatisPlusConfig.java
  • CrmSqlInjector.java

章节来源

  • AuthController.java
  • IAuthUserService.java
  • AuthUserServiceImpl.java
  • AuthUserMapper.java
  • SysUserRoleMapper.java
  • SysUserDeptMapper.java
  • AuthUser.java
  • SysRole.java
  • SysDept.java
  • SysUserRole.java
  • SysUserDept.java
  • UserPageParam.java
  • UserListDTO.java
  • UserStatsVO.java
  • SecurityConfig.java
  • TokenService.java
  • DataScopeInterceptor.java
  • BaseEntity.java
  • OwnedEntity.java
  • StatusEnum.java
  • Result.java
  • PageResult.java
  • ExcelUtil.java
  • MybatisPlusConfig.java
  • CrmSqlInjector.java

核心组件

  • 用户实体模型:AuthUser 作为用户主实体,继承基础实体,包含账号、状态、时间戳等通用字段;与角色、部门通过关联表实现多对多。
  • 角色与部门实体:SysRole、SysDept 分别表示角色与部门;SysUserRole、SysUserDept 为中间表实体,承载用户-角色、用户-部门关系。
  • 新增 用户列表组件:UserPageParam 用于分页查询参数封装,UserListDTO 用于用户列表数据传输,UserStatsVO 用于用户统计数据聚合。
  • 数据访问层:各实体对应的 Mapper,提供基础 CRUD 与扩展查询能力。
  • 服务层:IAuthUserService 定义用户域能力,AuthUserServiceImpl 实现具体逻辑,包括用户增删改查、状态变更、密码处理、角色/部门分配、批量操作、导入导出、用户列表查询和用户统计
  • 安全与鉴权:SecurityConfig 配置安全策略,TokenService 负责令牌签发与校验,DataScopeInterceptor 实现数据范围控制。
  • 基础能力:BaseEntity/OwnedEntity 提供公共字段与数据归属;StatusEnum 统一状态码;Result/PageResult 统一响应格式;ExcelUtil 支持导入导出;MybatisPlusConfig/CrmSqlInjector 提供分页与自动填充等增强。

章节来源

  • AuthUser.java
  • SysRole.java
  • SysDept.java
  • SysUserRole.java
  • SysUserDept.java
  • UserPageParam.java
  • UserListDTO.java
  • UserStatsVO.java
  • AuthUserMapper.java
  • SysUserRoleMapper.java
  • SysUserDeptMapper.java
  • IAuthUserService.java
  • AuthUserServiceImpl.java
  • SecurityConfig.java
  • TokenService.java
  • DataScopeInterceptor.java
  • BaseEntity.java
  • OwnedEntity.java
  • StatusEnum.java
  • Result.java
  • PageResult.java
  • ExcelUtil.java
  • MybatisPlusConfig.java
  • CrmSqlInjector.java

架构总览

用户管理模块遵循典型的分层架构与职责分离原则:

  • 控制器层仅做请求解析与响应封装,不承载业务逻辑
  • 服务层负责事务、校验、业务编排与跨实体协调
  • 数据访问层聚焦持久化与查询构建
  • 安全层贯穿认证、授权与数据范围控制
  • 基础层提供通用能力与规范
sequenceDiagram
participant Client as "客户端"
participant Controller as "AuthController"
participant Service as "IAuthUserService"
participant Impl as "AuthUserServiceImpl"
participant Mapper as "AuthUserMapper/SysUserRoleMapper/SysUserDeptMapper"
participant DB as "数据库"
Client->>Controller : "GET /users?page=1&size=20&roleId=1"
Controller->>Service : "getUserList(param)"
Service->>Impl : "实现类处理"
Impl->>Impl : "参数校验/条件组装"
Impl->>Mapper : "分页查询用户列表"
Mapper-->>DB : "SELECT ... WHERE roleId=? LIMIT/PAGINATION"
DB-->>Mapper : "返回用户数据"
Impl->>Mapper : "查询用户统计信息"
Mapper-->>DB : "SELECT COUNT(*) GROUP BY status"
DB-->>Mapper : "返回统计数据"
Mapper-->>Impl : "成功"
Impl-->>Service : "返回用户列表+统计"
Service-->>Controller : "Result<UserListDTO>"
Controller-->>Client : "200 OK + JSON"

图表来源

  • AuthController.java
  • IAuthUserService.java
  • AuthUserServiceImpl.java
  • AuthUserMapper.java
  • SysUserRoleMapper.java
  • SysUserDeptMapper.java
  • UserPageParam.java
  • UserListDTO.java
  • UserStatsVO.java

详细组件分析

用户实体模型与关系映射

  • 用户实体:AuthUser 继承 BaseEntity,拥有通用审计字段(如创建/更新时间),并包含账号、姓名、手机号、邮箱、状态等用户属性。
  • 角色与部门:SysRole、SysDept 分别代表组织维度中的角色与部门。
  • 多对多关系:
    • 用户-角色:通过 SysUserRole 中间表建立关系
    • 用户-部门:通过 SysUserDept 中间表建立关系
  • 数据归属:OwnedEntity 提供数据归属字段,便于数据隔离与范围控制
classDiagram
class BaseEntity {
+id
+createTime
+updateTime
+createBy
+updateBy
}
class OwnedEntity {
+ownerId
+tenantId
}
class AuthUser {
+username
+name
+phone
+email
+status
+password
}
class SysRole {
+roleId
+roleName
+code
}
class SysDept {
+deptId
+deptName
+parentId
}
class SysUserRole {
+userId
+roleId
}
class SysUserDept {
+userId
+deptId
}
class UserPageParam {
+pageNo
+pageSize
+username
+status
+roleId
}
class UserListDTO {
+userId
+username
+name
+phone
+email
+status
+roles
+depts
}
class UserStatsVO {
+totalUsers
+activeUsers
+inactiveUsers
+roleDistribution
}
BaseEntity <|-- OwnedEntity
OwnedEntity <|-- AuthUser
AuthUser "1" o-- "n" SysUserRole : "拥有"
SysRole "1" o-- "n" SysUserRole : "被分配"
AuthUser "1" o-- "n" SysUserDept : "属于"
SysDept "1" o-- "n" SysUserDept : "包含"

图表来源

  • AuthUser.java
  • SysRole.java
  • SysDept.java
  • SysUserRole.java
  • SysUserDept.java
  • UserPageParam.java
  • UserListDTO.java
  • UserStatsVO.java
  • BaseEntity.java
  • OwnedEntity.java

章节来源

  • AuthUser.java
  • SysRole.java
  • SysDept.java
  • SysUserRole.java
  • SysUserDept.java
  • UserPageParam.java
  • UserListDTO.java
  • UserStatsVO.java
  • BaseEntity.java
  • OwnedEntity.java

用户CRUD与状态管理

  • 创建用户:校验唯一性(用户名/手机号/邮箱)、默认状态设置、密码加密存储、写入用户及初始角色/部门关联
  • 更新用户:支持基本信息修改、状态切换(启用/禁用)、重置密码、调整角色/部门
  • 删除用户:软删除或物理删除(依据业务策略),清理关联关系
  • 查询用户:支持分页、条件过滤(用户名、状态、部门、角色等),结合数据范围控制
  • 状态管理:通过 StatusEnum 统一管理用户状态,服务层进行状态转换校验与审计记录
flowchart TD
Start(["进入用户更新"]) --> CheckParams["校验参数合法性"]
CheckParams --> Exists{"用户是否存在?"}
Exists --> |否| ReturnError["返回不存在错误"]
Exists --> |是| UpdateFields["更新允许字段<br/>姓名/手机/邮箱/状态等"]
UpdateFields --> StateCheck{"状态变更是否合法?"}
StateCheck --> |否| ReturnError
StateCheck --> |是| Save["保存用户信息"]
Save --> Audit["记录审计日志"]
Audit --> End(["完成"])
ReturnError --> End

图表来源

  • AuthUserServiceImpl.java
  • StatusEnum.java

章节来源

  • AuthUserServiceImpl.java
  • StatusEnum.java

密码加密存储

  • 密码加密:在服务层对用户密码进行不可逆加密后再持久化,避免明文存储
  • 密码校验:登录时对比输入密码与数据库中密文
  • 密码重置:管理员可重置用户密码,新密码需再次加密后更新
sequenceDiagram
participant Client as "客户端"
participant Controller as "AuthController"
participant Service as "IAuthUserService"
participant Impl as "AuthUserServiceImpl"
participant Mapper as "AuthUserMapper"
participant DB as "数据库"
Client->>Controller : "POST /users/reset-password"
Controller->>Service : "resetPassword(userId, newPassword)"
Service->>Impl : "执行重置"
Impl->>Impl : "加密新密码"
Impl->>Mapper : "UPDATE auth_user SET password=加密值 WHERE id=userId"
Mapper-->>DB : "执行更新"
DB-->>Mapper : "成功"
Mapper-->>Impl : "返回影响行数"
Impl-->>Service : "成功"
Service-->>Controller : "Result<Void>"
Controller-->>Client : "200 OK"

图表来源

  • AuthController.java
  • IAuthUserService.java
  • AuthUserServiceImpl.java
  • AuthUserMapper.java

章节来源

  • AuthUserServiceImpl.java
  • AuthUserMapper.java

用户与角色、部门的多对多关系

  • 分配角色:将用户与多个角色关联,支持批量分配与去重
  • 分配部门:将用户加入一个或多个部门,支持层级部门的数据范围控制
  • 移除关系:支持撤销角色或部门关联,保持数据一致性
sequenceDiagram
participant Client as "客户端"
participant Controller as "AuthController"
participant Service as "IAuthUserService"
participant Impl as "AuthUserServiceImpl"
participant RoleMapper as "SysUserRoleMapper"
participant DeptMapper as "SysUserDeptMapper"
participant DB as "数据库"
Client->>Controller : "PUT /users/{id}/roles"
Controller->>Service : "assignRoles(userId, roleIds)"
Service->>Impl : "执行分配"
Impl->>RoleMapper : "批量插入/更新关联"
RoleMapper-->>DB : "INSERT/REPLACE INTO sys_user_role"
DB-->>RoleMapper : "成功"
RoleMapper-->>Impl : "返回影响行数"
Impl-->>Service : "成功"
Service-->>Controller : "Result<Void>"
Controller-->>Client : "200 OK"

图表来源

  • AuthController.java
  • IAuthUserService.java
  • AuthUserServiceImpl.java
  • SysUserRoleMapper.java
  • SysUserDeptMapper.java

章节来源

  • AuthUserServiceImpl.java
  • SysUserRoleMapper.java
  • SysUserDeptMapper.java

新增 用户列表功能与分页查询

  • 分页参数封装:UserPageParam 提供统一的查询参数封装,支持页码、每页大小、用户名搜索、状态筛选、角色过滤等条件
  • 用户列表查询:支持多维度条件组合查询,包括用户名模糊搜索、状态精确匹配、角色关联筛选等
  • 用户统计功能:UserStatsVO 提供用户总数、活跃用户数、非活跃用户数、角色分布等统计信息
  • 数据传输对象:UserListDTO 封装用户基本信息、角色集合、部门集合等展示数据
sequenceDiagram
participant Client as "客户端"
participant Controller as "AuthController"
participant Service as "IAuthUserService"
participant Impl as "AuthUserServiceImpl"
participant Mapper as "AuthUserMapper"
participant DB as "数据库"
Client->>Controller : "GET /users/list?page=1&size=20&username=张&status=ACTIVE&roleId=1"
Controller->>Service : "getUserList(UserPageParam)"
Service->>Impl : "处理分页查询"
Impl->>Impl : "组装查询条件"
Impl->>Mapper : "分页查询用户列表"
Mapper-->>DB : "SELECT u.*, r.roleName FROM auth_user u LEFT JOIN sys_user_role sur ON u.id=sur.userId LEFT JOIN sys_role r ON sur.roleId=r.roleId WHERE username LIKE ? AND status=? AND sur.roleId=? LIMIT 20 OFFSET 0"
DB-->>Mapper : "返回用户数据"
Impl->>Mapper : "查询用户统计"
Mapper-->>DB : "SELECT COUNT(*) FROM auth_user WHERE status='ACTIVE'"
DB-->>Mapper : "返回统计结果"
Mapper-->>Impl : "成功"
Impl->>Impl : "组装UserListDTO和UserStatsVO"
Impl-->>Service : "返回用户列表+统计"
Service-->>Controller : "Result<UserListDTO>"
Controller-->>Client : "200 OK + JSON"

图表来源

  • AuthController.java
  • IAuthUserService.java
  • AuthUserServiceImpl.java
  • AuthUserMapper.java
  • UserPageParam.java
  • UserListDTO.java
  • UserStatsVO.java

章节来源

  • AuthUserServiceImpl.java
  • UserPageParam.java
  • UserListDTO.java
  • UserStatsVO.java

数据导入导出与批量操作

  • 导入:通过 ExcelUtil 读取上传的 Excel,校验数据格式与业务规则,批量插入用户与关联关系
  • 导出:根据查询条件生成 Excel 报表,支持分页导出与大数据量流式输出
  • 批量操作:支持批量启用/禁用、批量分配角色/部门、批量删除等,确保事务一致性与异常回滚
flowchart TD
Start(["开始导入"]) --> Upload["接收Excel文件"]
Upload --> Parse["解析Excel行数据"]
Parse --> Validate["逐行校验(必填/格式/唯一性)"]
Validate --> Valid{"全部有效?"}
Valid --> |否| BuildErrors["收集错误行与原因"]
Valid --> |是| BatchInsert["批量插入用户与关联"]
BatchInsert --> Commit["提交事务"]
Commit --> Success["返回导入结果统计"]
BuildErrors --> Fail["返回失败详情"]
Success --> End(["结束"])
Fail --> End

图表来源

  • ExcelUtil.java
  • AuthUserServiceImpl.java

章节来源

  • ExcelUtil.java
  • AuthUserServiceImpl.java

查询优化与数据范围控制

  • 分页查询:基于 MybatisPlus 的分页插件,配合自定义 SQL 注入器提升复杂查询性能
  • 条件过滤:支持用户名、状态、部门、角色等多维筛选,动态拼接查询条件
  • 数据范围:通过 DataScopeInterceptor 与注解驱动,按用户所属部门/角色限制可见数据范围
sequenceDiagram
participant Client as "客户端"
participant Controller as "AuthController"
participant Service as "IAuthUserService"
participant Interceptor as "DataScopeInterceptor"
participant Mapper as "AuthUserMapper"
participant DB as "数据库"
Client->>Controller : "GET /users?page=1&size=20&status=ACTIVE"
Controller->>Interceptor : "拦截并注入数据范围"
Interceptor-->>Controller : "附加WHERE条件"
Controller->>Service : "listUsers(param)"
Service->>Mapper : "分页查询"
Mapper-->>DB : "SELECT ... LIMIT/PAGINATION"
DB-->>Mapper : "返回结果集"
Mapper-->>Service : "PageResult<User>"
Service-->>Controller : "Result<PageResult<User>>"
Controller-->>Client : "200 OK + JSON"

图表来源

  • DataScopeInterceptor.java
  • AuthUserServiceImpl.java
  • AuthUserMapper.java
  • CrmSqlInjector.java
  • MybatisPlusConfig.java

章节来源

  • DataScopeInterceptor.java
  • AuthUserServiceImpl.java
  • AuthUserMapper.java
  • CrmSqlInjector.java
  • MybatisPlusConfig.java

依赖关系分析

  • 控制器依赖服务接口,服务实现依赖 Mapper 与基础工具
  • 安全组件(SecurityConfig、TokenService、DataScopeInterceptor)贯穿认证与数据范围控制
  • 基础层提供实体基类、枚举、结果封装、Excel工具、分页与SQL注入器
  • 新增 用户列表功能依赖 UserPageParam、UserListDTO、UserStatsVO 等数据传输对象
graph LR
Ctrl["AuthController"] --> Svc["IAuthUserService"]
Svc --> Impl["AuthUserServiceImpl"]
Impl --> MapperU["AuthUserMapper"]
Impl --> MapperR["SysUserRoleMapper"]
Impl --> MapperD["SysUserDeptMapper"]
Impl --> Base["BaseEntity/OwnedEntity/StatusEnum"]
Impl --> Result["Result/PageResult"]
Impl --> Excel["ExcelUtil"]
Impl --> MP["MybatisPlusConfig/CrmSqlInjector"]
Impl --> DTO["UserPageParam/UserListDTO/UserStatsVO"]
Ctrl --> Sec["SecurityConfig/TokenService/DataScopeInterceptor"]

图表来源

  • AuthController.java
  • IAuthUserService.java
  • AuthUserServiceImpl.java
  • AuthUserMapper.java
  • SysUserRoleMapper.java
  • SysUserDeptMapper.java
  • BaseEntity.java
  • OwnedEntity.java
  • StatusEnum.java
  • Result.java
  • PageResult.java
  • ExcelUtil.java
  • MybatisPlusConfig.java
  • CrmSqlInjector.java
  • SecurityConfig.java
  • TokenService.java
  • DataScopeInterceptor.java
  • UserPageParam.java
  • UserListDTO.java
  • UserStatsVO.java

章节来源

  • AuthController.java
  • IAuthUserService.java
  • AuthUserServiceImpl.java
  • AuthUserMapper.java
  • SysUserRoleMapper.java
  • SysUserDeptMapper.java
  • BaseEntity.java
  • OwnedEntity.java
  • StatusEnum.java
  • Result.java
  • PageResult.java
  • ExcelUtil.java
  • MybatisPlusConfig.java
  • CrmSqlInjector.java
  • SecurityConfig.java
  • TokenService.java
  • DataScopeInterceptor.java
  • UserPageParam.java
  • UserListDTO.java
  • UserStatsVO.java

性能考虑

  • 分页与索引:合理设计查询条件与索引,避免全表扫描;分页查询尽量使用覆盖索引
  • 批量操作:使用批量插入/更新减少网络往返与事务开销
  • 导入导出:大文件采用流式读写,避免内存溢出;异步处理耗时任务
  • 缓存策略:热点数据(如部门树、角色列表)用户统计数据可使用缓存降低数据库压力
  • 连接池与线程池:合理配置数据库连接池与线程池大小,避免资源争用
  • 新增 用户列表优化:通过预加载角色和部门信息,减少N+1查询问题;使用合适的JOIN语句提升查询效率

故障排查指南

  • 常见错误:
    • 唯一性冲突:用户名/手机号/邮箱重复导致插入失败
    • 状态非法:状态转换不符合业务规则
    • 关联缺失:角色/部门不存在导致关联失败
    • 分页参数错误:页码越界、每页大小超出限制
    • 查询条件冲突:多条件组合导致无结果或性能问题
  • 定位方法:
    • 查看服务层日志与异常堆栈
    • 检查数据库约束与索引
    • 使用分页与条件过滤逐步缩小问题范围
    • 监控用户列表查询性能,分析慢查询日志
  • 恢复建议:
    • 修正输入数据后重试
    • 清理脏数据或回滚事务
    • 增加更详细的错误提示与审计日志
    • 优化查询条件和索引策略

章节来源

  • AuthUserServiceImpl.java
  • Result.java
  • StatusEnum.java

结论

用户管理模块以清晰的实体模型与分层架构为基础,实现了完整的用户生命周期管理能力。通过多对多关系映射、状态管理、密码加密、导入导出与批量操作,满足企业级场景需求。最新更新:新增的用户列表功能提供了强大的分页查询、角色过滤和用户统计能力,显著提升了系统的查询效率和数据分析能力。结合数据范围控制与查询优化,保障系统的安全性与性能。建议在后续迭代中持续完善审计、监控与告警能力,进一步提升系统的可观测性与稳定性。

附录:API与使用示例

  • 用户注册/创建
    • 方法:POST /users
    • 请求体:用户名、姓名、手机号、邮箱、初始密码、角色ID集合、部门ID集合
    • 响应:Result
  • 用户更新
    • 方法:PUT /users/{id}
    • 请求体:可更新字段(姓名、手机、邮箱、状态等)
    • 响应:Result
  • 用户删除
    • 方法:DELETE /users/{id}
    • 响应:Result
  • 新增 用户列表查询
    • 方法:GET /users/list
    • 查询参数:pageNo、pageSize、username、status、roleId
    • 响应:Result
  • 新增 用户统计查询
    • 方法:GET /users/stats
    • 查询参数:可选的时间范围、部门ID、角色ID
    • 响应:Result
  • 用户查询
    • 方法:GET /users
    • 查询参数:page、size、username、status、deptId、roleId
    • 响应:Result<PageResult>
  • 密码重置
    • 方法:POST /users/{id}/reset-password
    • 请求体:newPassword
    • 响应:Result
  • 分配角色
    • 方法:PUT /users/{id}/roles
    • 请求体:roleIds[]
    • 响应:Result
  • 分配部门
    • 方法:PUT /users/{id}/depts
    • 请求体:deptIds[]
    • 响应:Result
  • 导入用户
    • 方法:POST /users/import
    • 请求体:multipart Excel文件
    • 响应:Result
  • 导出用户
    • 方法:GET /users/export
    • 查询参数:同查询接口
    • 响应:Excel文件流

章节来源

  • AuthController.java
  • IAuthUserService.java
  • AuthUserServiceImpl.java
  • UserPageParam.java
  • UserListDTO.java
  • UserStatsVO.java
  • Result.java
  • PageResult.java
  • ExcelUtil.java