2020-09-13 19:27:47 +08:00
|
|
|
|
syntax = "proto3";
|
|
|
|
|
|
option go_package = "./pb";
|
|
|
|
|
|
|
|
|
|
|
|
package pb;
|
|
|
|
|
|
|
2021-01-25 16:41:30 +08:00
|
|
|
|
import "models/rpc_messages.proto";
|
|
|
|
|
|
import "models/model_user.proto";
|
|
|
|
|
|
import "models/model_user_feature.proto";
|
2021-07-11 18:06:07 +08:00
|
|
|
|
import "models/model_node_value.proto";
|
2020-12-04 16:01:06 +08:00
|
|
|
|
|
|
|
|
|
|
// 用户相关服务
|
|
|
|
|
|
service UserService {
|
|
|
|
|
|
// 创建用户
|
|
|
|
|
|
rpc createUser (CreateUserRequest) returns (CreateUserResponse);
|
|
|
|
|
|
|
2022-01-05 10:44:58 +08:00
|
|
|
|
// 注册用户
|
2022-12-08 20:26:20 +08:00
|
|
|
|
rpc registerUser(RegisterUserRequest) returns (RegisterUserResponse);
|
2022-01-05 10:44:58 +08:00
|
|
|
|
|
|
|
|
|
|
// 审核用户
|
|
|
|
|
|
rpc verifyUser(VerifyUserRequest) returns (RPCSuccess);
|
|
|
|
|
|
|
2020-12-04 16:01:06 +08:00
|
|
|
|
// 修改用户
|
|
|
|
|
|
rpc updateUser (UpdateUserRequest) returns (RPCSuccess);
|
|
|
|
|
|
|
|
|
|
|
|
// 删除用户
|
|
|
|
|
|
rpc deleteUser (DeleteUserRequest) returns (RPCSuccess);
|
|
|
|
|
|
|
|
|
|
|
|
// 计算用户数量
|
|
|
|
|
|
rpc countAllEnabledUsers (CountAllEnabledUsersRequest) returns (RPCCountResponse);
|
|
|
|
|
|
|
|
|
|
|
|
// 列出单页用户
|
|
|
|
|
|
rpc listEnabledUsers (ListEnabledUsersRequest) returns (ListEnabledUsersResponse);
|
|
|
|
|
|
|
|
|
|
|
|
// 查询单个用户信息
|
|
|
|
|
|
rpc findEnabledUser (FindEnabledUserRequest) returns (FindEnabledUserResponse);
|
|
|
|
|
|
|
|
|
|
|
|
// 检查用户名是否存在
|
2020-12-15 11:53:10 +08:00
|
|
|
|
rpc checkUserUsername (CheckUserUsernameRequest) returns (CheckUserUsernameResponse);
|
2020-12-14 21:25:19 +08:00
|
|
|
|
|
|
|
|
|
|
// 登录
|
|
|
|
|
|
rpc loginUser (LoginUserRequest) returns (LoginUserResponse);
|
2020-12-15 11:53:10 +08:00
|
|
|
|
|
|
|
|
|
|
// 修改用户基本信息
|
|
|
|
|
|
rpc updateUserInfo (UpdateUserInfoRequest) returns (RPCSuccess);
|
|
|
|
|
|
|
|
|
|
|
|
// 修改用户登录信息
|
|
|
|
|
|
rpc updateUserLogin (UpdateUserLoginRequest) returns (RPCSuccess);
|
2020-12-15 16:53:19 +08:00
|
|
|
|
|
|
|
|
|
|
// 取得用户Dashboard数据
|
|
|
|
|
|
rpc composeUserDashboard (ComposeUserDashboardRequest) returns (ComposeUserDashboardResponse);
|
2020-12-18 21:19:25 +08:00
|
|
|
|
|
|
|
|
|
|
// 获取用户所在的集群ID
|
|
|
|
|
|
rpc findUserNodeClusterId (FindUserNodeClusterIdRequest) returns (FindUserNodeClusterIdResponse);
|
2020-12-30 22:01:26 +08:00
|
|
|
|
|
2022-08-28 17:00:59 +08:00
|
|
|
|
// 设置单个用户能使用的功能
|
2020-12-30 22:01:26 +08:00
|
|
|
|
rpc updateUserFeatures (UpdateUserFeaturesRequest) returns (RPCSuccess);
|
|
|
|
|
|
|
2022-08-28 17:00:59 +08:00
|
|
|
|
// 设置所有用户能使用的功能
|
|
|
|
|
|
rpc updateAllUsersFeatures(UpdateAllUsersFeaturesRequest) returns (RPCSuccess);
|
|
|
|
|
|
|
2020-12-30 22:01:26 +08:00
|
|
|
|
// 获取用户所有的功能列表
|
|
|
|
|
|
rpc findUserFeatures (FindUserFeaturesRequest) returns (FindUserFeaturesResponse);
|
|
|
|
|
|
|
|
|
|
|
|
// 获取所有的功能定义
|
|
|
|
|
|
rpc findAllUserFeatureDefinitions (FindAllUserFeatureDefinitionsRequest) returns (FindAllUserFeatureDefinitionsResponse);
|
2021-07-11 18:06:07 +08:00
|
|
|
|
|
|
|
|
|
|
// 组合全局的看板数据
|
|
|
|
|
|
rpc composeUserGlobalBoard (ComposeUserGlobalBoardRequest) returns (ComposeUserGlobalBoardResponse);
|
2022-07-24 16:45:07 +08:00
|
|
|
|
|
|
|
|
|
|
// 根据用户名检查是否需要输入OTP
|
|
|
|
|
|
rpc checkUserOTPWithUsername (CheckUserOTPWithUsernameRequest) returns (CheckUserOTPWithUsernameResponse);
|
2022-10-15 19:15:36 +08:00
|
|
|
|
|
|
|
|
|
|
// 读取用户计费信息
|
|
|
|
|
|
rpc findUserPriceInfo(FindUserPriceInfoRequest) returns (FindUserPriceInfoResponse);
|
|
|
|
|
|
|
|
|
|
|
|
// 修改用户计费方式
|
|
|
|
|
|
rpc updateUserPriceType(UpdateUserPriceTypeRequest) returns (RPCSuccess);
|
|
|
|
|
|
|
|
|
|
|
|
// 修改用户计费周期
|
|
|
|
|
|
rpc updateUserPricePeriod(UpdateUserPricePeriodRequest) returns (RPCSuccess);
|
2022-10-23 16:29:08 +08:00
|
|
|
|
|
|
|
|
|
|
// 检查用户服务可用状态
|
|
|
|
|
|
rpc checkUserServersState(CheckUserServersStateRequest) returns (CheckUserServersStateResponse);
|
|
|
|
|
|
|
|
|
|
|
|
// 更新用户服务可用状态
|
2022-10-23 20:12:33 +08:00
|
|
|
|
rpc renewUserServersState(RenewUserServersStateRequest) returns (RenewUserServersStateResponse);
|
2022-12-08 20:26:20 +08:00
|
|
|
|
|
|
|
|
|
|
// 检查邮箱是否已被使用
|
2022-12-10 15:54:39 +08:00
|
|
|
|
rpc checkUserEmail(CheckUserEmailRequest) returns (CheckUserEmailResponse);
|
|
|
|
|
|
|
2023-11-17 11:51:02 +08:00
|
|
|
|
// 检查手机号码是否已被使用
|
|
|
|
|
|
rpc checkUserMobile(CheckUserMobileRequest) returns (CheckUserMobileResponse);
|
|
|
|
|
|
|
2022-12-10 15:54:39 +08:00
|
|
|
|
// 根据用户名查询用户绑定的邮箱
|
|
|
|
|
|
rpc findUserVerifiedEmailWithUsername(FindUserVerifiedEmailWithUsernameRequest) returns (FindUserVerifiedEmailWithUsernameResponse);
|
2020-12-04 16:01:06 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// 创建用户
|
|
|
|
|
|
message CreateUserRequest {
|
|
|
|
|
|
string username = 1;
|
|
|
|
|
|
string password = 2;
|
|
|
|
|
|
string fullname = 3;
|
|
|
|
|
|
string mobile = 4;
|
|
|
|
|
|
string tel = 5;
|
|
|
|
|
|
string email = 6;
|
|
|
|
|
|
string remark = 7;
|
|
|
|
|
|
string source = 8;
|
2020-12-17 15:51:09 +08:00
|
|
|
|
int64 nodeClusterId = 9;
|
2020-12-04 16:01:06 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
message CreateUserResponse {
|
|
|
|
|
|
int64 userId = 1;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2022-01-05 10:44:58 +08:00
|
|
|
|
// 注册用户
|
|
|
|
|
|
message RegisterUserRequest {
|
|
|
|
|
|
string username = 1;
|
|
|
|
|
|
string password = 2;
|
|
|
|
|
|
string mobile = 3;
|
|
|
|
|
|
string email = 4;
|
|
|
|
|
|
string fullname = 5;
|
|
|
|
|
|
string ip = 6;
|
|
|
|
|
|
string source = 7;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2022-12-08 20:26:20 +08:00
|
|
|
|
message RegisterUserResponse {
|
|
|
|
|
|
int64 userId = 1;
|
|
|
|
|
|
bool requireEmailVerification = 2; // 是否需要激活邮件
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2022-01-05 10:44:58 +08:00
|
|
|
|
// 审核用户
|
|
|
|
|
|
message VerifyUserRequest {
|
|
|
|
|
|
int64 userId = 1;
|
|
|
|
|
|
bool isRejected = 2;
|
|
|
|
|
|
string rejectReason = 3;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2020-12-04 16:01:06 +08:00
|
|
|
|
// 修改用户
|
|
|
|
|
|
message UpdateUserRequest {
|
|
|
|
|
|
int64 userId = 1;
|
|
|
|
|
|
string username = 2;
|
|
|
|
|
|
string password = 3;
|
|
|
|
|
|
string fullname = 4;
|
|
|
|
|
|
string mobile = 5;
|
|
|
|
|
|
string tel = 6;
|
|
|
|
|
|
string email = 7;
|
|
|
|
|
|
string remark = 8;
|
|
|
|
|
|
bool isOn = 9;
|
2020-12-17 15:51:09 +08:00
|
|
|
|
int64 nodeClusterId = 10;
|
2023-02-27 10:47:31 +08:00
|
|
|
|
string bandwidthAlgo = 11;
|
2020-12-04 16:01:06 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// 删除用户
|
|
|
|
|
|
message DeleteUserRequest {
|
|
|
|
|
|
int64 userId = 1;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// 计算用户数量
|
|
|
|
|
|
message CountAllEnabledUsersRequest {
|
|
|
|
|
|
string keyword = 1;
|
2022-01-05 11:11:54 +08:00
|
|
|
|
bool isVerifying = 2;
|
2024-05-14 15:05:57 +08:00
|
|
|
|
int32 mobileIsVerified = 3; // 手机号是否已验证,1表示已验证,0表示未验证,-1表示所有状态
|
2020-12-04 16:01:06 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// 列出单页用户
|
|
|
|
|
|
message ListEnabledUsersRequest {
|
|
|
|
|
|
string keyword = 1;
|
2022-01-05 11:11:54 +08:00
|
|
|
|
bool isVerifying = 4;
|
2024-05-14 15:05:57 +08:00
|
|
|
|
int32 mobileIsVerified = 5; // 手机号是否已验证,1表示已验证,0表示未验证,-1表示所有状态
|
2021-05-27 17:08:57 +08:00
|
|
|
|
int64 offset = 2;
|
|
|
|
|
|
int64 size = 3;
|
2020-12-04 16:01:06 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
message ListEnabledUsersResponse {
|
|
|
|
|
|
repeated User users = 1;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// 查询单个用户信息
|
|
|
|
|
|
message FindEnabledUserRequest {
|
|
|
|
|
|
int64 userId = 1;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
message FindEnabledUserResponse {
|
|
|
|
|
|
User user = 1;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// 检查用户名是否存在
|
2020-12-15 11:53:10 +08:00
|
|
|
|
message CheckUserUsernameRequest {
|
2020-12-04 16:01:06 +08:00
|
|
|
|
int64 userId = 1;
|
|
|
|
|
|
string username = 2;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2020-12-15 11:53:10 +08:00
|
|
|
|
message CheckUserUsernameResponse {
|
2020-12-04 16:01:06 +08:00
|
|
|
|
bool exists = 1;
|
2020-12-14 21:25:19 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// 登录
|
|
|
|
|
|
message LoginUserRequest {
|
|
|
|
|
|
string username = 1;
|
|
|
|
|
|
string password = 2;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
message LoginUserResponse {
|
|
|
|
|
|
int64 userId = 1;
|
|
|
|
|
|
bool isOk = 2;
|
|
|
|
|
|
string message = 3;
|
2020-12-15 11:53:10 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// 修改用户基本信息
|
|
|
|
|
|
message UpdateUserInfoRequest {
|
|
|
|
|
|
int64 userId = 1;
|
|
|
|
|
|
string fullname = 2;
|
2022-01-05 10:44:58 +08:00
|
|
|
|
string mobile = 3;
|
|
|
|
|
|
string email = 4;
|
2020-12-15 11:53:10 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// 修改用户登录信息
|
|
|
|
|
|
message UpdateUserLoginRequest {
|
|
|
|
|
|
int64 userId = 1;
|
|
|
|
|
|
string username = 2;
|
|
|
|
|
|
string password = 3;
|
2020-12-15 16:53:19 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// 取得用户Dashboard数据
|
|
|
|
|
|
message ComposeUserDashboardRequest {
|
|
|
|
|
|
int64 userId = 1;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
message ComposeUserDashboardResponse {
|
|
|
|
|
|
int64 countServers = 1;
|
|
|
|
|
|
int64 monthlyTrafficBytes = 2;
|
2022-07-07 09:19:15 +08:00
|
|
|
|
int64 monthlyPeekBandwidthBytes = 3;
|
2020-12-15 16:53:19 +08:00
|
|
|
|
int64 dailyTrafficBytes = 4;
|
2022-07-07 09:19:15 +08:00
|
|
|
|
int64 dailyPeekBandwidthBytes = 5;
|
|
|
|
|
|
repeated DailyTrafficStat dailyTrafficStats = 6;
|
|
|
|
|
|
repeated DailyPeekBandwidthStat dailyPeekBandwidthStats = 7;
|
2022-11-04 17:39:33 +08:00
|
|
|
|
int32 bandwidthPercentile = 8; // 带宽百分位
|
|
|
|
|
|
int64 bandwidthPercentileBits = 9; // 带宽百分位上的比特数
|
2020-12-15 16:53:19 +08:00
|
|
|
|
|
2022-07-07 09:19:15 +08:00
|
|
|
|
message DailyTrafficStat {
|
2020-12-15 16:53:19 +08:00
|
|
|
|
string day = 1;
|
2022-07-07 09:19:15 +08:00
|
|
|
|
int64 bytes = 2;
|
2023-01-08 11:49:30 +08:00
|
|
|
|
int64 cachedBytes = 3;
|
|
|
|
|
|
int64 attackBytes = 4;
|
|
|
|
|
|
int64 countRequests = 5;
|
|
|
|
|
|
int64 countCachedRequests = 6;
|
|
|
|
|
|
int64 countAttackRequests = 7;
|
2022-07-07 09:19:15 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
message DailyPeekBandwidthStat {
|
|
|
|
|
|
string day = 1;
|
|
|
|
|
|
int64 bytes = 2;
|
2020-12-15 16:53:19 +08:00
|
|
|
|
}
|
|
|
|
|
|
}
|
2020-12-18 21:19:25 +08:00
|
|
|
|
|
|
|
|
|
|
// 获取用户所在的集群ID
|
|
|
|
|
|
message FindUserNodeClusterIdRequest {
|
|
|
|
|
|
int64 userId = 1;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
message FindUserNodeClusterIdResponse {
|
|
|
|
|
|
int64 nodeClusterId = 1;
|
2020-12-30 22:01:26 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
2022-08-28 17:00:59 +08:00
|
|
|
|
// 设置单个用户能使用的功能
|
2020-12-30 22:01:26 +08:00
|
|
|
|
message UpdateUserFeaturesRequest {
|
|
|
|
|
|
int64 userId = 1;
|
|
|
|
|
|
repeated string featureCodes = 2;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2022-08-28 17:00:59 +08:00
|
|
|
|
// 设置所有用户能使用的功能
|
|
|
|
|
|
message UpdateAllUsersFeaturesRequest {
|
|
|
|
|
|
repeated string featureCodes = 1;
|
|
|
|
|
|
bool overwrite = 2;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2020-12-30 22:01:26 +08:00
|
|
|
|
// 获取用户所有的功能列表
|
|
|
|
|
|
message FindUserFeaturesRequest {
|
|
|
|
|
|
int64 userId = 1;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
message FindUserFeaturesResponse {
|
|
|
|
|
|
repeated UserFeature features = 1;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// 获取所有的功能定义
|
|
|
|
|
|
message FindAllUserFeatureDefinitionsRequest {
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
message FindAllUserFeatureDefinitionsResponse {
|
|
|
|
|
|
repeated UserFeature features = 1;
|
2021-07-11 18:06:07 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// 组合看板数据
|
|
|
|
|
|
message ComposeUserGlobalBoardRequest {
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
message ComposeUserGlobalBoardResponse {
|
|
|
|
|
|
int64 totalUsers = 1;
|
|
|
|
|
|
int64 countTodayUsers = 2;
|
|
|
|
|
|
int64 countWeeklyUsers = 3;
|
|
|
|
|
|
int64 countUserNodes = 4;
|
|
|
|
|
|
int64 countOfflineUserNodes = 5;
|
2022-01-05 11:11:54 +08:00
|
|
|
|
int64 countVerifyingUsers = 6;
|
2021-07-11 18:06:07 +08:00
|
|
|
|
|
|
|
|
|
|
repeated DailyStat dailyStats = 30;
|
|
|
|
|
|
repeated NodeValue cpuNodeValues = 31;
|
|
|
|
|
|
repeated NodeValue memoryNodeValues = 32;
|
|
|
|
|
|
repeated NodeValue loadNodeValues = 33;
|
|
|
|
|
|
repeated TrafficStat topTrafficStats = 34;
|
|
|
|
|
|
|
|
|
|
|
|
message DailyStat {
|
|
|
|
|
|
string day = 1;
|
|
|
|
|
|
int64 count = 2;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
message TrafficStat {
|
|
|
|
|
|
int64 userId = 1;
|
|
|
|
|
|
string userName = 2;
|
|
|
|
|
|
int64 countRequests = 3;
|
|
|
|
|
|
int64 bytes = 4;
|
|
|
|
|
|
}
|
2022-07-24 16:45:07 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// 根据用户名检查是否需要输入OTP
|
|
|
|
|
|
message CheckUserOTPWithUsernameRequest {
|
|
|
|
|
|
string username = 1;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
message CheckUserOTPWithUsernameResponse {
|
|
|
|
|
|
bool requireOTP = 1;
|
2022-10-15 19:15:36 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// 读取用户计费信息
|
|
|
|
|
|
message FindUserPriceInfoRequest {
|
|
|
|
|
|
int64 userId = 1;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
message FindUserPriceInfoResponse {
|
|
|
|
|
|
string priceType = 1;
|
|
|
|
|
|
string pricePeriod = 2;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// 修改用户计费方式
|
|
|
|
|
|
message UpdateUserPriceTypeRequest {
|
|
|
|
|
|
int64 userId = 1;
|
|
|
|
|
|
string priceType = 2;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// 修改用户计费周期
|
|
|
|
|
|
message UpdateUserPricePeriodRequest {
|
|
|
|
|
|
int64 userId = 1;
|
|
|
|
|
|
string pricePeriod = 2;
|
2022-10-23 16:29:08 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// 检查用户服务可用状态
|
|
|
|
|
|
message CheckUserServersStateRequest {
|
|
|
|
|
|
int64 userId = 1;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
message CheckUserServersStateResponse {
|
|
|
|
|
|
bool isEnabled = 1;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// 更新用户服务可用状态
|
|
|
|
|
|
message RenewUserServersStateRequest {
|
|
|
|
|
|
int64 userId = 1;
|
2022-10-23 20:12:33 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
message RenewUserServersStateResponse {
|
|
|
|
|
|
bool isEnabled = 1;
|
2022-12-08 20:26:20 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// 检查邮箱是否已被验证
|
2022-12-10 15:54:39 +08:00
|
|
|
|
message CheckUserEmailRequest {
|
|
|
|
|
|
string email = 1; // 邮箱地址
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
message CheckUserEmailResponse {
|
|
|
|
|
|
bool exists = 1; // 是否已被使用
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2023-11-17 11:51:02 +08:00
|
|
|
|
// 检查手机号码是否已被验证
|
|
|
|
|
|
message CheckUserMobileRequest {
|
|
|
|
|
|
string mobile = 1; // 手机号码
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
message CheckUserMobileResponse {
|
|
|
|
|
|
bool exists = 1; // 是否已被使用
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2022-12-10 15:54:39 +08:00
|
|
|
|
// 根据用户名查询用户绑定的邮箱
|
|
|
|
|
|
message FindUserVerifiedEmailWithUsernameRequest {
|
|
|
|
|
|
string username = 1; // 用户名
|
2022-12-08 20:26:20 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
2022-12-10 15:54:39 +08:00
|
|
|
|
message FindUserVerifiedEmailWithUsernameResponse {
|
|
|
|
|
|
string email = 1; // 已绑定邮箱地址
|
2020-12-18 21:19:25 +08:00
|
|
|
|
}
|