Files
whale-town-end/src/business/user_mgmt/README.md
moyin bb796a2469 refactor:项目架构重构和命名规范化
- 统一文件命名为snake_case格式(kebab-case  snake_case)
- 重构zulip模块为zulip_core,明确Core层职责
- 重构user-mgmt模块为user_mgmt,统一命名规范
- 调整模块依赖关系,优化架构分层
- 删除过时的文件和目录结构
- 更新相关文档和配置文件

本次重构涉及大量文件重命名和模块重组,
旨在建立更清晰的项目架构和统一的命名规范。
2026-01-08 00:14:14 +08:00

186 lines
6.2 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# UserMgmt 用户管理业务模块
UserMgmt 是应用的用户状态管理业务模块,提供完整的用户状态变更、批量操作、状态统计和审计功能,支持管理员对用户生命周期的全面管理,具备完善的权限控制、频率限制和操作审计能力。
## 用户状态管理
### updateUserStatus()
修改单个用户的账户状态,支持激活、锁定、禁用等操作,记录状态变更原因和审计日志。
### getUserStatusStats()
获取各种用户状态的数量统计信息,提供用户状态分布分析和业务指标计算。
### getUserStatusHistory()
查询指定用户的状态变更历史记录,提供完整的状态变更审计追踪。
## 批量操作管理
### batchUpdateUserStatus()
批量修改多个用户的账户状态,支持数量限制控制和操作结果统计反馈。
## 使用的项目内部依赖
### AdminService (来自 business/admin/admin.service)
底层管理员服务,提供用户状态修改的技术实现和数据持久化能力。
### AdminGuard (来自 business/admin/guards/admin.guard)
管理员权限守卫,确保只有具备管理员权限的用户才能执行状态管理操作。
### UserStatus (本模块)
用户状态枚举,定义用户的激活、锁定、禁用、删除、待审核等状态值。
### UserStatusDto (本模块)
用户状态修改请求数据传输对象,提供状态值和修改原因的数据验证规则。
### BatchUserStatusDto (本模块)
批量用户状态修改请求数据传输对象支持用户ID列表和批量操作数量限制验证。
### UserStatusResponseDto (本模块)
用户状态修改响应数据传输对象提供统一的API响应格式和错误信息封装。
### BatchUserStatusResponseDto (本模块)
批量用户状态修改响应数据传输对象,包含操作结果统计和成功失败详情。
### UserStatusStatsResponseDto (本模块)
用户状态统计响应数据传输对象,提供各状态用户数量和统计时间信息。
### ThrottlePresets (来自 core/security_core/throttle.decorator)
频率限制预设配置,控制管理员操作的频率以防止滥用。
### TimeoutPresets (来自 core/security_core/timeout.decorator)
超时控制预设配置,为不同类型的操作设置合理的超时时间。
### BATCH_OPERATION (本模块)
批量操作相关常量,定义批量操作的最大最小用户数量限制。
### VALIDATION (本模块)
验证规则常量,定义状态修改原因的最大长度等验证参数。
### ERROR_CODES (本模块)
错误代码常量,提供标准化的错误代码定义和错误处理支持。
### MESSAGES (本模块)
业务消息常量,定义用户友好的错误消息和提示信息。
### UTILS (本模块)
工具函数集合,提供时间戳生成等通用功能。
## 核心特性
### RESTful API设计
- 标准化的HTTP方法和状态码使用
- 统一的请求响应数据格式
- 完整的Swagger API文档自动生成
- 符合REST设计原则的资源路径规划
### 权限和安全控制
- AdminGuard管理员权限验证
- JWT Bearer Token身份认证
- 操作频率限制防止API滥用
- 请求超时控制避免资源占用
### 批量操作支持
- 支持1-100个用户的批量状态修改
- 批量操作结果详细统计和反馈
- 部分成功场景的优雅处理
- 批量操作数量限制和业务规则验证
### 数据验证和类型安全
- class-validator装饰器数据验证
- TypeScript类型系统完整支持
- 枚举值验证和错误提示
- 请求参数自动转换和验证
### 审计和日志记录
- 完整的操作审计日志记录
- 状态变更原因和时间戳记录
- 操作者身份和操作类型追踪
- 业务指标统计和分析支持
### 错误处理和用户体验
- 标准化的错误代码和消息
- 用户友好的错误提示信息
- 详细的操作结果反馈
- 优雅的异常处理和降级机制
## 潜在风险
### 批量操作性能风险
- 批量修改100个用户可能造成数据库性能压力
- 大量并发批量操作可能导致系统响应缓慢
- 建议监控批量操作的执行时间和数据库负载
### 权限控制风险
- AdminGuard依赖外部权限验证逻辑
- 权限验证失败可能导致未授权访问
- 建议定期审计管理员权限分配和使用情况
### 数据一致性风险
- 批量操作中部分成功可能导致数据不一致
- 并发状态修改可能产生竞态条件
- 建议在关键业务场景中使用事务控制
### 审计日志存储风险
- 大量的状态变更操作会产生海量审计日志
- 日志存储空间可能快速增长
- 建议制定日志轮转和归档策略
### API滥用风险
- 频率限制可能无法完全防止恶意调用
- 批量操作接口可能被用于攻击
- 建议结合IP限制和行为分析进行防护
### 业务逻辑风险
- 状态变更历史功能当前返回空数据
- 某些边界情况的业务规则可能不完善
- 建议完善状态变更历史功能和业务规则验证
## 使用示例
### 修改单个用户状态
```typescript
// 锁定违规用户
const result = await userManagementService.updateUserStatus(BigInt(123), {
status: UserStatus.LOCKED,
reason: '用户发布违规内容'
});
```
### 批量修改用户状态
```typescript
// 批量激活新用户
const result = await userManagementService.batchUpdateUserStatus({
userIds: ['456', '789', '101'],
status: UserStatus.ACTIVE,
reason: '批量激活通过审核的新用户'
});
```
### 获取用户状态统计
```typescript
// 获取用户状态分布统计
const stats = await userManagementService.getUserStatusStats();
console.log(`活跃用户: ${stats.data.stats.active}`);
```
## 模块配置
### 依赖模块
- AdminModule: 提供底层管理员服务支持
- AdminCoreModule: 提供核心管理功能和权限控制
### 导出服务
- UserManagementService: 用户管理业务逻辑服务
### API路由
- PUT /admin/users/:id/status - 修改用户状态
- POST /admin/users/batch-status - 批量修改用户状态
- GET /admin/users/status-stats - 获取用户状态统计
## 版本信息
- **版本**: 1.0.1
- **作者**: moyin
- **创建时间**: 2025-12-24
- **最后修改**: 2026-01-07
- **修改内容**: 代码规范优化,完善测试覆盖,增强功能文档