139 lines
5.6 KiB
Markdown
139 lines
5.6 KiB
Markdown
# Proto定义完整性检查
|
||
|
||
## 一、开发功能顺序文档中的Service层需求
|
||
|
||
根据 `开发功能顺序.md`,UserService(用户与认证服务)包含以下Service层:
|
||
|
||
### 3.1 认证Service(AuthService)
|
||
- ✅ Register
|
||
- ✅ Login
|
||
- ✅ Logout
|
||
- ✅ RefreshToken
|
||
- ✅ ValidateToken
|
||
|
||
### 4.1 用户信息Service(UserService)
|
||
- ✅ GetUser
|
||
- ✅ GetFanProfile
|
||
- ✅ GetMyProfile(对应GetProfile)
|
||
- ✅ UpdateNickname
|
||
- ✅ UpdatePassword(对应ChangePassword)
|
||
|
||
### 4.2 粉丝身份Service(IdentityService)
|
||
- ✅ GetFanIdentities(已添加keyword参数支持搜索)
|
||
- ✅ AddIdentity
|
||
- ✅ SwitchIdentity
|
||
|
||
## 二、Proto定义完整性总结
|
||
|
||
### ✅ 已完整覆盖所有Service层需求
|
||
|
||
#### 1. 认证Service(3.1)- 完整 ✅
|
||
所有5个方法都已定义proto消息和RPC:
|
||
- `RegisterRequest` / `RegisterResponse`
|
||
- `LoginRequest` / `LoginResponse`
|
||
- `LogoutRequest` / `LogoutResponse`
|
||
- `RefreshTokenRequest` / `RefreshTokenResponse`
|
||
- `ValidateTokenRequest` / `ValidateTokenResponse`
|
||
|
||
#### 2. 用户信息Service(4.1)- 完整 ✅
|
||
所有5个方法都已定义proto消息和RPC:
|
||
- `GetUserRequest` / `GetUserResponse`
|
||
- `GetFanProfileRequest` / `GetFanProfileResponse`
|
||
- `GetMyProfileRequest` / `GetMyProfileResponse`(对应GetProfile)
|
||
- `UpdateNicknameRequest` / `UpdateNicknameResponse`
|
||
- `UpdatePasswordRequest` / `UpdatePasswordResponse`
|
||
|
||
#### 3. 粉丝身份Service(4.2)- 完整 ✅
|
||
所有3个方法都已定义proto消息和RPC:
|
||
- `GetFanIdentitiesRequest` / `GetFanIdentitiesResponse`(已添加keyword字段)
|
||
- `AddIdentityRequest` / `AddIdentityResponse`
|
||
- `SwitchIdentityRequest` / `SwitchIdentityResponse`
|
||
|
||
## 三、Service接口与Proto对应关系
|
||
|
||
### 3.1 认证Service接口映射
|
||
|
||
| Service方法 | Proto RPC | Request | Response |
|
||
|------------|-----------|---------|----------|
|
||
| `Register(req)` | `rpc Register` | `RegisterRequest` | `RegisterResponse` |
|
||
| `Login(req)` | `rpc Login` | `LoginRequest` | `LoginResponse` |
|
||
| `Logout(req)` | `rpc Logout` | `LogoutRequest` | `LogoutResponse` |
|
||
| `RefreshToken(req)` | `rpc RefreshToken` | `RefreshTokenRequest` | `RefreshTokenResponse` |
|
||
| `ValidateToken(req)` | `rpc ValidateToken` | `ValidateTokenRequest` | `ValidateTokenResponse` |
|
||
|
||
### 3.2 用户信息Service接口映射
|
||
|
||
| Service方法 | Proto RPC | Request | Response |
|
||
|------------|-----------|---------|----------|
|
||
| `GetUser(userID)` | `rpc GetUser` | `GetUserRequest` | `GetUserResponse` |
|
||
| `GetFanProfile(userID, starID)` | `rpc GetFanProfile` | `GetFanProfileRequest` | `GetFanProfileResponse` |
|
||
| `GetProfile(userID, starID)` | `rpc GetMyProfile` | `GetMyProfileRequest` | `GetMyProfileResponse` |
|
||
| `UpdateNickname(...)` | `rpc UpdateNickname` | `UpdateNicknameRequest` | `UpdateNicknameResponse` |
|
||
| `ChangePassword(...)` | `rpc UpdatePassword` | `UpdatePasswordRequest` | `UpdatePasswordResponse` |
|
||
|
||
**注意**:
|
||
- `GetProfile` 使用 `GetMyProfile`(通常获取当前登录用户信息,从Token中获取user_id和star_id)
|
||
- `ChangePassword` 使用 `UpdatePassword`
|
||
|
||
### 3.3 粉丝身份Service接口映射
|
||
|
||
| Service方法 | Proto RPC | Request | Response |
|
||
|------------|-----------|---------|----------|
|
||
| `GetAvailableIdentities(keyword)` | `rpc GetFanIdentities` | `GetFanIdentitiesRequest` | `GetFanIdentitiesResponse` |
|
||
| `AddIdentity(userID, starID)` | `rpc AddIdentity` | `AddIdentityRequest` | `AddIdentityResponse` |
|
||
| `SwitchIdentity(...)` | `rpc SwitchIdentity` | `SwitchIdentityRequest` | `SwitchIdentityResponse` |
|
||
|
||
**注意**:
|
||
- `GetAvailableIdentities` 的`keyword`参数已添加到`GetFanIdentitiesRequest.keyword`
|
||
- `AddIdentity`和`SwitchIdentity`的参数会通过Token获取user_id,或通过请求参数传递
|
||
|
||
## 四、答案总结
|
||
|
||
### 问题:除了用户信息Service,还有其他Service需要进行proto编写吗?
|
||
|
||
**答案**:✅ **没有,所有Service的proto定义已完整!**
|
||
|
||
在UserService(用户与认证服务)的开发功能顺序文档中,定义了**3个Service层**:
|
||
|
||
1. ✅ **认证Service(3.1)** - proto定义完整
|
||
2. ✅ **用户信息Service(4.1)** - proto定义完整
|
||
3. ✅ **粉丝身份Service(4.2)** - proto定义完整(已添加keyword参数)
|
||
|
||
所有Service层的接口都已定义了对应的proto消息类型和RPC方法。
|
||
|
||
## 五、注意事项
|
||
|
||
### 5.1 Service接口与Proto的差异
|
||
|
||
有些Service接口的参数和proto定义略有不同,这是正常的:
|
||
|
||
1. **Token参数**:Service接口可能接收token字符串,但proto通常从Token中解析获取user_id和star_id
|
||
2. **方法名**:Service接口可能使用`GetProfile`,但proto使用`GetMyProfile`(更明确)
|
||
3. **参数传递**:Service接口可能直接传递userID/starID,但proto可能通过Token获取
|
||
|
||
这些差异需要在Handler层进行适配,将proto请求转换为Service层的调用参数。
|
||
|
||
### 5.2 后续其他微服务的Proto
|
||
|
||
虽然当前UserService的proto已完整,但整个微服务架构中还有其他服务:
|
||
|
||
- **Asset Service** - 资产服务(后续开发)
|
||
- **Social Service** - 社交服务(后续开发)
|
||
- **Gallery Service** - 展馆服务(后续开发)
|
||
- **Task Service** - 任务服务(后续开发)
|
||
|
||
这些服务的proto定义会在各自服务开发时再创建。
|
||
|
||
## 六、验证清单
|
||
|
||
- [x] 认证Service所有接口已定义proto
|
||
- [x] 用户信息Service所有接口已定义proto
|
||
- [x] 粉丝身份Service所有接口已定义proto
|
||
- [x] GetFanIdentities已添加keyword参数
|
||
- [x] 所有proto消息类型与Service接口匹配
|
||
- [x] 所有RPC方法已定义并映射到REST API
|
||
|
||
## 七、结论
|
||
|
||
**当前UserService的所有Service层proto定义已完整,可以开始开发Service层代码!** ✅
|