2026-04-25 13:21:39 +08:00

147 lines
4.2 KiB
Protocol Buffer

syntax = "proto3";
package hyapp.user.v1;
option go_package = "hyapp/api/proto/user/v1;userv1";
// RequestMeta 是 user-service 所有内部 RPC 的最小追踪元信息。
message RequestMeta {
string request_id = 1;
string caller = 2;
string gateway_node_id = 3;
int64 sent_at_ms = 4;
string device_id = 5;
string client_ip = 6;
string user_agent = 7;
}
// UserStatus 表达用户主状态,业务服务只消费稳定枚举。
enum UserStatus {
USER_STATUS_UNSPECIFIED = 0;
USER_STATUS_ACTIVE = 1;
USER_STATUS_DISABLED = 2;
USER_STATUS_BANNED = 3;
}
// User 是首版用户主数据投影,不包含头像昵称等资料体系。
message User {
int64 user_id = 1;
UserStatus status = 2;
int64 created_at_ms = 3;
int64 updated_at_ms = 4;
string display_user_id = 5;
string default_display_user_id = 6;
string display_user_id_kind = 7;
int64 display_user_id_expires_at_ms = 8;
}
// GetUserRequest 查询单个用户主状态。
message GetUserRequest {
RequestMeta meta = 1;
int64 user_id = 2;
}
// GetUserResponse 返回单个用户主状态。
message GetUserResponse {
User user = 1;
}
// BatchGetUsersRequest 批量查询用户主状态。
message BatchGetUsersRequest {
RequestMeta meta = 1;
repeated int64 user_ids = 2;
}
// BatchGetUsersResponse 返回按 user_id 索引的用户主状态。
message BatchGetUsersResponse {
map<int64, User> users = 1;
}
// UserIdentity 是 user_id 和当前 active display_user_id 的绑定投影。
message UserIdentity {
int64 user_id = 1;
string display_user_id = 2;
string status = 3;
string default_display_user_id = 4;
string display_user_id_kind = 5;
int64 display_user_id_expires_at_ms = 6;
}
// GetUserIdentityRequest 按 user_id 查询当前短号。
message GetUserIdentityRequest {
RequestMeta meta = 1;
int64 user_id = 2;
}
// GetUserIdentityResponse 返回当前短号绑定。
message GetUserIdentityResponse {
UserIdentity identity = 1;
}
// ResolveDisplayUserIDRequest 把客户端展示短号解析成系统 user_id。
message ResolveDisplayUserIDRequest {
RequestMeta meta = 1;
string display_user_id = 2;
}
// ResolveDisplayUserIDResponse 返回 active 短号归属。
message ResolveDisplayUserIDResponse {
UserIdentity identity = 1;
}
// ChangeDisplayUserIDRequest 修改用户短号,必须由 user-service 保证事务一致。
message ChangeDisplayUserIDRequest {
RequestMeta meta = 1;
int64 user_id = 2;
string new_display_user_id = 3;
string reason = 4;
int64 operator_user_id = 5;
}
// ChangeDisplayUserIDResponse 返回修改后的 active 绑定。
message ChangeDisplayUserIDResponse {
UserIdentity identity = 1;
}
// ApplyPrettyDisplayUserIDRequest 申请临时靓号并覆盖当前展示号。
message ApplyPrettyDisplayUserIDRequest {
RequestMeta meta = 1;
int64 user_id = 2;
string pretty_display_user_id = 3;
int64 lease_duration_ms = 4;
string payment_receipt_id = 5;
}
// ApplyPrettyDisplayUserIDResponse 返回申请成功后的当前展示号和租约。
message ApplyPrettyDisplayUserIDResponse {
UserIdentity identity = 1;
string lease_id = 2;
}
// ExpirePrettyDisplayUserIDRequest 主动触发靓号过期恢复。
message ExpirePrettyDisplayUserIDRequest {
RequestMeta meta = 1;
int64 user_id = 2;
string lease_id = 3;
}
// ExpirePrettyDisplayUserIDResponse 返回恢复后的默认短号身份。
message ExpirePrettyDisplayUserIDResponse {
UserIdentity identity = 1;
}
// UserService 首版只提供用户主状态读接口。
service UserService {
rpc GetUser(GetUserRequest) returns (GetUserResponse);
rpc BatchGetUsers(BatchGetUsersRequest) returns (BatchGetUsersResponse);
}
// UserIdentityService 是短号解析和变更的唯一内部 owner。
service UserIdentityService {
rpc GetUserIdentity(GetUserIdentityRequest) returns (GetUserIdentityResponse);
rpc ResolveDisplayUserID(ResolveDisplayUserIDRequest) returns (ResolveDisplayUserIDResponse);
rpc ChangeDisplayUserID(ChangeDisplayUserIDRequest) returns (ChangeDisplayUserIDResponse);
rpc ApplyPrettyDisplayUserID(ApplyPrettyDisplayUserIDRequest) returns (ApplyPrettyDisplayUserIDResponse);
rpc ExpirePrettyDisplayUserID(ExpirePrettyDisplayUserIDRequest) returns (ExpirePrettyDisplayUserIDResponse);
}