6 changed files with 95 additions and 48 deletions
@ -0,0 +1,63 @@ |
|||
# 2025-01-21 修改 GetUserRolesAsync 方法,添加获取角色ID功能 |
|||
|
|||
## 概述 |
|||
修改 `GetUserRolesAsync` 方法,使其返回包含角色ID和名称的完整信息,而不是仅返回角色名称列表。 |
|||
|
|||
## 主要变更 |
|||
|
|||
### 1. 修改接口定义 |
|||
- **文件**: `X1.Domain/Repositories/Identity/IUserRoleRepository.cs` |
|||
- **变更**: 将 `GetUserRolesAsync` 方法的返回类型从 `Task<IList<string>>` 修改为 `Task<IList<UserRoleInfo>>` |
|||
- **说明**: 现在返回包含角色ID和名称的完整信息对象 |
|||
|
|||
### 2. 修改实现类 |
|||
- **文件**: `X1.Infrastructure/Repositories/Identity/UserRoleRepository.cs` |
|||
- **变更**: 更新 `GetUserRolesAsync` 方法实现,返回 `UserRoleInfo` 对象列表 |
|||
- **优化**: 使用 `UserRoleInfo.Create()` 方法创建对象,提高代码可读性 |
|||
|
|||
### 3. 更新调用代码 |
|||
- **文件**: `X1.Application/Features/Users/Queries/GetUserById/GetUserByIdQueryHandler.cs` |
|||
- **变更**: 更新角色信息获取逻辑,从 `UserRoleInfo` 对象中提取角色ID和名称 |
|||
- **优化**: 简化代码逻辑,减少数据库查询次数 |
|||
|
|||
- **文件**: `X1.Application/Features/Users/Queries/GetCurrentUser/GetCurrentUserQueryHandler.cs` |
|||
- **变更**: 同样更新角色信息获取逻辑 |
|||
- **优化**: 保持与 GetUserById 处理器的一致性 |
|||
|
|||
- **文件**: `X1.Application/Features/Auth/Commands/RefreshToken/RefreshTokenCommandHandler.cs` |
|||
- **变更**: 更新刷新令牌时的角色信息获取逻辑 |
|||
- **优化**: 确保令牌刷新时能正确获取角色ID |
|||
|
|||
### 4. 修复编译警告 |
|||
- **问题**: 修复可能的null引用警告 |
|||
- **解决**: 在创建 `UserDto` 对象时添加null检查,使用空字符串作为默认值 |
|||
|
|||
## 技术优势 |
|||
|
|||
### 1. 数据完整性 |
|||
- **之前**: 只返回角色名称,需要额外查询获取角色ID |
|||
- **现在**: 一次查询同时获取角色ID和名称,提高数据完整性 |
|||
|
|||
### 2. 性能优化 |
|||
- **减少查询**: 避免在调用方进行额外的角色查询 |
|||
- **批量处理**: 一次性获取所有需要的角色信息 |
|||
|
|||
### 3. 代码简化 |
|||
- **调用方**: 简化了调用方的代码逻辑 |
|||
- **维护性**: 提高了代码的可维护性和一致性 |
|||
|
|||
### 4. 向后兼容 |
|||
- **现有方法**: 保留了 `GetUserRoleIdsAsync` 和 `GetUserRoleInfoAsync` 方法 |
|||
- **渐进升级**: 可以逐步迁移到新的方法签名 |
|||
|
|||
## 影响范围 |
|||
- **仓储层**: 接口和实现类的修改 |
|||
- **应用层**: 三个查询/命令处理器的更新 |
|||
- **数据流**: 角色信息获取流程的优化 |
|||
|
|||
## 修改的文件列表 |
|||
1. `X1.Domain/Repositories/Identity/IUserRoleRepository.cs` |
|||
2. `X1.Infrastructure/Repositories/Identity/UserRoleRepository.cs` |
|||
3. `X1.Application/Features/Users/Queries/GetUserById/GetUserByIdQueryHandler.cs` |
|||
4. `X1.Application/Features/Users/Queries/GetCurrentUser/GetCurrentUserQueryHandler.cs` |
|||
5. `X1.Application/Features/Auth/Commands/RefreshToken/RefreshTokenCommandHandler.cs` |
|||
Loading…
Reference in new issue