# UserService > 用户相关服务 --- ## checkUserOTPWithUsername > 根据用户名检查是否需要输入OTP - 角色:`user` - HTTP:`POST https://backend.dooki.cloud/UserService/checkUserOTPWithUsername` - RPC:`rpc checkUserOTPWithUsername (CheckUserOTPWithUsernameRequest) returns (CheckUserOTPWithUsernameResponse);` **请求对象 (`CheckUserOTPWithUsernameRequest`)** ```json { "username": "string" } ``` **响应对象 (`CheckUserOTPWithUsernameResponse`)** ```json { "requireOTP": "bool" } ``` **调用示例** ```bash curl -X POST "https://backend.dooki.cloud/UserService/checkUserOTPWithUsername" \ -H "Content-Type: application/json" \ -H "X-Edge-Access-Token: " \ -d '{ ... }' ``` --- ## checkUserUsername > 检查用户名是否存在 - 角色:`user`, `admin` - HTTP:`POST https://backend.dooki.cloud/UserService/checkUserUsername` - RPC:`rpc checkUserUsername (CheckUserUsernameRequest) returns (CheckUserUsernameResponse);` **请求对象 (`CheckUserUsernameRequest`)** ```json { "userId": "int64 // 用户ID", "username": "string" } ``` **响应对象 (`CheckUserUsernameResponse`)** ```json { "exists": "bool" } ``` **调用示例** ```bash curl -X POST "https://backend.dooki.cloud/UserService/checkUserUsername" \ -H "Content-Type: application/json" \ -H "X-Edge-Access-Token: " \ -d '{ ... }' ``` --- ## composeUserDashboard > 取得用户Dashboard数据 - 角色:`admin`, `user` - HTTP:`POST https://backend.dooki.cloud/UserService/composeUserDashboard` - RPC:`rpc composeUserDashboard (ComposeUserDashboardRequest) returns (ComposeUserDashboardResponse);` **请求对象 (`ComposeUserDashboardRequest`)** ```json { "userId": "int64 // 用户ID" } ``` **响应对象 (`ComposeUserDashboardResponse`)** ```json { "countServers": "int64", "monthlyTrafficBytes": "int64", "monthlyPeekBandwidthBytes": "int64", "dailyTrafficBytes": "int64", "dailyPeekBandwidthBytes": "int64", "dailyTrafficStats": "[]DailyTrafficStat", "dailyPeekBandwidthStats": "[]DailyPeekBandwidthStat", "bandwidthPercentile": "int32 // 带宽百分位", "bandwidthPercentileBits": "int64 // 带宽百分位上的比特数", "day": "string", "bytes": "int64", "cachedBytes": "int64", "attackBytes": "int64", "countRequests": "int64", "countCachedRequests": "int64", "countAttackRequests": "int64" } ``` **调用示例** ```bash curl -X POST "https://backend.dooki.cloud/UserService/composeUserDashboard" \ -H "Content-Type: application/json" \ -H "X-Edge-Access-Token: " \ -d '{ ... }' ``` --- ## composeUserGlobalBoard > 组合全局的看板数据 - 角色:`admin` - HTTP:`POST https://backend.dooki.cloud/UserService/composeUserGlobalBoard` - RPC:`rpc composeUserGlobalBoard (ComposeUserGlobalBoardRequest) returns (ComposeUserGlobalBoardResponse);` **请求对象 (`ComposeUserGlobalBoardRequest`)** ```json {} ``` **响应对象 (`ComposeUserGlobalBoardResponse`)** ```json { "totalUsers": "int64", "countTodayUsers": "int64", "countWeeklyUsers": "int64", "countUserNodes": "int64", "countOfflineUserNodes": "int64", "countVerifyingUsers": "int64", "dailyStats": "[]DailyStat", "cpuNodeValues": "[]NodeValue", "memoryNodeValues": "[]NodeValue", "loadNodeValues": "[]NodeValue", "topTrafficStats": "[]TrafficStat", "day": "string", "count": "int64 // 数量", "userId": "int64 // 用户ID", "userName": "string", "countRequests": "int64", "bytes": "int64" } ``` **调用示例** ```bash curl -X POST "https://backend.dooki.cloud/UserService/composeUserGlobalBoard" \ -H "Content-Type: application/json" \ -H "X-Edge-Access-Token: " \ -d '{ ... }' ``` --- ## countAllEnabledUsers > 计算用户数量 - 角色:`admin` - HTTP:`POST https://backend.dooki.cloud/UserService/countAllEnabledUsers` - RPC:`rpc countAllEnabledUsers (CountAllEnabledUsersRequest) returns (RPCCountResponse);` **请求对象 (`CountAllEnabledUsersRequest`)** ```json { "keyword": "string // 关键词", "isVerifying": "bool", "mobileIsVerified": "int32 // 手机号是否已验证,1表示已验证,0表示未验证,-1表示所有状态" } ``` **响应对象 (`RPCCountResponse`)** ```json { "count": "int64 // 数量" } ``` **调用示例** ```bash curl -X POST "https://backend.dooki.cloud/UserService/countAllEnabledUsers" \ -H "Content-Type: application/json" \ -H "X-Edge-Access-Token: " \ -d '{ ... }' ``` --- ## createUser > 创建用户 - 角色:`admin` - HTTP:`POST https://backend.dooki.cloud/UserService/createUser` - RPC:`rpc createUser (CreateUserRequest) returns (CreateUserResponse);` **请求对象 (`CreateUserRequest`)** ```json { "username": "string", "password": "string", "fullname": "string", "mobile": "string", "tel": "string", "email": "string", "remark": "string", "source": "string", "nodeClusterId": "int64 // 集群ID" } ``` **响应对象 (`CreateUserResponse`)** ```json { "userId": "int64 // 用户ID" } ``` **调用示例** ```bash curl -X POST "https://backend.dooki.cloud/UserService/createUser" \ -H "Content-Type: application/json" \ -H "X-Edge-Access-Token: " \ -d '{ ... }' ``` --- ## deleteUser > 删除用户 - 角色:`admin` - HTTP:`POST https://backend.dooki.cloud/UserService/deleteUser` - RPC:`rpc deleteUser (DeleteUserRequest) returns (RPCSuccess);` **请求对象 (`DeleteUserRequest`)** ```json { "userId": "int64 // 用户ID" } ``` **响应对象 (`RPCSuccess`)** ```json {} ``` **调用示例** ```bash curl -X POST "https://backend.dooki.cloud/UserService/deleteUser" \ -H "Content-Type: application/json" \ -H "X-Edge-Access-Token: " \ -d '{ ... }' ``` --- ## findAllUserFeatureDefinitions > 获取所有的功能定义 - 角色:`admin` - HTTP:`POST https://backend.dooki.cloud/UserService/findAllUserFeatureDefinitions` - RPC:`rpc findAllUserFeatureDefinitions (FindAllUserFeatureDefinitionsRequest) returns (FindAllUserFeatureDefinitionsResponse);` **请求对象 (`FindAllUserFeatureDefinitionsRequest`)** ```json {} ``` **响应对象 (`FindAllUserFeatureDefinitionsResponse`)** ```json { "features": "[]UserFeature" } ``` **调用示例** ```bash curl -X POST "https://backend.dooki.cloud/UserService/findAllUserFeatureDefinitions" \ -H "Content-Type: application/json" \ -H "X-Edge-Access-Token: " \ -d '{ ... }' ``` --- ## findEnabledUser > 查询单个用户信息 - 角色:`admin` - HTTP:`POST https://backend.dooki.cloud/UserService/findEnabledUser` - RPC:`rpc findEnabledUser (FindEnabledUserRequest) returns (FindEnabledUserResponse);` **请求对象 (`FindEnabledUserRequest`)** ```json { "userId": "int64 // 用户ID" } ``` **响应对象 (`FindEnabledUserResponse`)** ```json { "user": "User" } ``` **调用示例** ```bash curl -X POST "https://backend.dooki.cloud/UserService/findEnabledUser" \ -H "Content-Type: application/json" \ -H "X-Edge-Access-Token: " \ -d '{ ... }' ``` --- ## findUserFeatures > 获取用户所有的功能列表 - 角色:`admin` - HTTP:`POST https://backend.dooki.cloud/UserService/findUserFeatures` - RPC:`rpc findUserFeatures (FindUserFeaturesRequest) returns (FindUserFeaturesResponse);` **请求对象 (`FindUserFeaturesRequest`)** ```json { "userId": "int64 // 用户ID" } ``` **响应对象 (`FindUserFeaturesResponse`)** ```json { "features": "[]UserFeature" } ``` **调用示例** ```bash curl -X POST "https://backend.dooki.cloud/UserService/findUserFeatures" \ -H "Content-Type: application/json" \ -H "X-Edge-Access-Token: " \ -d '{ ... }' ``` --- ## findUserNodeClusterId > 获取用户所在的集群ID - 角色:`admin` - HTTP:`POST https://backend.dooki.cloud/UserService/findUserNodeClusterId` - RPC:`rpc findUserNodeClusterId (FindUserNodeClusterIdRequest) returns (FindUserNodeClusterIdResponse);` **请求对象 (`FindUserNodeClusterIdRequest`)** ```json { "userId": "int64 // 用户ID" } ``` **响应对象 (`FindUserNodeClusterIdResponse`)** ```json { "nodeClusterId": "int64 // 集群ID" } ``` **调用示例** ```bash curl -X POST "https://backend.dooki.cloud/UserService/findUserNodeClusterId" \ -H "Content-Type: application/json" \ -H "X-Edge-Access-Token: " \ -d '{ ... }' ``` --- ## findUserPriceInfo > 读取用户计费信息 - 角色:`admin` - HTTP:`POST https://backend.dooki.cloud/UserService/findUserPriceInfo` - RPC:`rpc findUserPriceInfo(FindUserPriceInfoRequest) returns (FindUserPriceInfoResponse);` **请求对象 (`FindUserPriceInfoRequest`)** ```json { "userId": "int64 // 用户ID" } ``` **响应对象 (`FindUserPriceInfoResponse`)** ```json { "priceType": "string", "pricePeriod": "string" } ``` **调用示例** ```bash curl -X POST "https://backend.dooki.cloud/UserService/findUserPriceInfo" \ -H "Content-Type: application/json" \ -H "X-Edge-Access-Token: " \ -d '{ ... }' ``` --- ## listEnabledUsers > 列出单页用户 - 角色:`admin` - HTTP:`POST https://backend.dooki.cloud/UserService/listEnabledUsers` - RPC:`rpc listEnabledUsers (ListEnabledUsersRequest) returns (ListEnabledUsersResponse);` **请求对象 (`ListEnabledUsersRequest`)** ```json { "keyword": "string // 关键词", "isVerifying": "bool", "mobileIsVerified": "int32 // 手机号是否已验证,1表示已验证,0表示未验证,-1表示所有状态", "offset": "int64 // 读取位置", "size": "int64 // 数量,通常不能小于0" } ``` **响应对象 (`ListEnabledUsersResponse`)** ```json { "users": "[]User" } ``` **调用示例** ```bash curl -X POST "https://backend.dooki.cloud/UserService/listEnabledUsers" \ -H "Content-Type: application/json" \ -H "X-Edge-Access-Token: " \ -d '{ ... }' ``` --- ## loginUser > 登录 - 角色:`admin` - HTTP:`POST https://backend.dooki.cloud/UserService/loginUser` - RPC:`rpc loginUser (LoginUserRequest) returns (LoginUserResponse);` **请求对象 (`LoginUserRequest`)** ```json { "username": "string", "password": "string" } ``` **响应对象 (`LoginUserResponse`)** ```json { "userId": "int64 // 用户ID", "isOk": "bool", "message": "string" } ``` **调用示例** ```bash curl -X POST "https://backend.dooki.cloud/UserService/loginUser" \ -H "Content-Type: application/json" \ -H "X-Edge-Access-Token: " \ -d '{ ... }' ``` --- ## registerUser > 注册用户 - 角色:`user` - HTTP:`POST https://backend.dooki.cloud/UserService/registerUser` - RPC:`rpc registerUser(RegisterUserRequest) returns (RegisterUserResponse);` **请求对象 (`RegisterUserRequest`)** ```json { "username": "string", "password": "string", "mobile": "string", "email": "string", "fullname": "string", "ip": "string", "source": "string" } ``` **响应对象 (`RegisterUserResponse`)** ```json { "userId": "int64 // 用户ID", "requireEmailVerification": "bool // 是否需要激活邮件" } ``` **调用示例** ```bash curl -X POST "https://backend.dooki.cloud/UserService/registerUser" \ -H "Content-Type: application/json" \ -H "X-Edge-Access-Token: " \ -d '{ ... }' ``` --- ## renewUserServersState > 更新用户服务可用状态 - 角色:`admin` - HTTP:`POST https://backend.dooki.cloud/UserService/renewUserServersState` - RPC:`rpc renewUserServersState(RenewUserServersStateRequest) returns (RenewUserServersStateResponse);` **请求对象 (`RenewUserServersStateRequest`)** ```json { "userId": "int64 // 用户ID" } ``` **响应对象 (`RenewUserServersStateResponse`)** ```json { "isEnabled": "bool" } ``` **调用示例** ```bash curl -X POST "https://backend.dooki.cloud/UserService/renewUserServersState" \ -H "Content-Type: application/json" \ -H "X-Edge-Access-Token: " \ -d '{ ... }' ``` --- ## updateAllUsersFeatures > 设置所有用户能使用的功能 - 角色:`admin` - HTTP:`POST https://backend.dooki.cloud/UserService/updateAllUsersFeatures` - RPC:`rpc updateAllUsersFeatures(UpdateAllUsersFeaturesRequest) returns (RPCSuccess);` **请求对象 (`UpdateAllUsersFeaturesRequest`)** ```json { "featureCodes": "[]string", "overwrite": "bool" } ``` **响应对象 (`RPCSuccess`)** ```json {} ``` **调用示例** ```bash curl -X POST "https://backend.dooki.cloud/UserService/updateAllUsersFeatures" \ -H "Content-Type: application/json" \ -H "X-Edge-Access-Token: " \ -d '{ ... }' ``` --- ## updateUser > 修改用户 - 角色:`admin` - HTTP:`POST https://backend.dooki.cloud/UserService/updateUser` - RPC:`rpc updateUser (UpdateUserRequest) returns (RPCSuccess);` **请求对象 (`UpdateUserRequest`)** ```json { "userId": "int64 // 用户ID", "username": "string", "password": "string", "fullname": "string", "mobile": "string", "tel": "string", "email": "string", "remark": "string", "isOn": "bool // 是否启用", "nodeClusterId": "int64 // 集群ID", "bandwidthAlgo": "string" } ``` **响应对象 (`RPCSuccess`)** ```json {} ``` **调用示例** ```bash curl -X POST "https://backend.dooki.cloud/UserService/updateUser" \ -H "Content-Type: application/json" \ -H "X-Edge-Access-Token: " \ -d '{ ... }' ``` --- ## updateUserFeatures > 设置单个用户能使用的功能 - 角色:`admin` - HTTP:`POST https://backend.dooki.cloud/UserService/updateUserFeatures` - RPC:`rpc updateUserFeatures (UpdateUserFeaturesRequest) returns (RPCSuccess);` **请求对象 (`UpdateUserFeaturesRequest`)** ```json { "userId": "int64 // 用户ID", "featureCodes": "[]string" } ``` **响应对象 (`RPCSuccess`)** ```json {} ``` **调用示例** ```bash curl -X POST "https://backend.dooki.cloud/UserService/updateUserFeatures" \ -H "Content-Type: application/json" \ -H "X-Edge-Access-Token: " \ -d '{ ... }' ``` --- ## updateUserInfo > 修改用户基本信息 - 角色:`user` - HTTP:`POST https://backend.dooki.cloud/UserService/updateUserInfo` - RPC:`rpc updateUserInfo (UpdateUserInfoRequest) returns (RPCSuccess);` **请求对象 (`UpdateUserInfoRequest`)** ```json { "userId": "int64 // 用户ID", "fullname": "string", "mobile": "string", "email": "string" } ``` **响应对象 (`RPCSuccess`)** ```json {} ``` **调用示例** ```bash curl -X POST "https://backend.dooki.cloud/UserService/updateUserInfo" \ -H "Content-Type: application/json" \ -H "X-Edge-Access-Token: " \ -d '{ ... }' ``` --- ## updateUserLogin > 修改用户登录信息 - 角色:`user` - HTTP:`POST https://backend.dooki.cloud/UserService/updateUserLogin` - RPC:`rpc updateUserLogin (UpdateUserLoginRequest) returns (RPCSuccess);` **请求对象 (`UpdateUserLoginRequest`)** ```json { "userId": "int64 // 用户ID", "username": "string", "password": "string" } ``` **响应对象 (`RPCSuccess`)** ```json {} ``` **调用示例** ```bash curl -X POST "https://backend.dooki.cloud/UserService/updateUserLogin" \ -H "Content-Type: application/json" \ -H "X-Edge-Access-Token: " \ -d '{ ... }' ``` --- ## updateUserPricePeriod > 修改用户计费周期 - 角色:`admin` - HTTP:`POST https://backend.dooki.cloud/UserService/updateUserPricePeriod` - RPC:`rpc updateUserPricePeriod(UpdateUserPricePeriodRequest) returns (RPCSuccess);` **请求对象 (`UpdateUserPricePeriodRequest`)** ```json { "userId": "int64 // 用户ID", "pricePeriod": "string" } ``` **响应对象 (`RPCSuccess`)** ```json {} ``` **调用示例** ```bash curl -X POST "https://backend.dooki.cloud/UserService/updateUserPricePeriod" \ -H "Content-Type: application/json" \ -H "X-Edge-Access-Token: " \ -d '{ ... }' ``` --- ## updateUserPriceType > 修改用户计费方式 - 角色:`admin` - HTTP:`POST https://backend.dooki.cloud/UserService/updateUserPriceType` - RPC:`rpc updateUserPriceType(UpdateUserPriceTypeRequest) returns (RPCSuccess);` **请求对象 (`UpdateUserPriceTypeRequest`)** ```json { "userId": "int64 // 用户ID", "priceType": "string" } ``` **响应对象 (`RPCSuccess`)** ```json {} ``` **调用示例** ```bash curl -X POST "https://backend.dooki.cloud/UserService/updateUserPriceType" \ -H "Content-Type: application/json" \ -H "X-Edge-Access-Token: " \ -d '{ ... }' ``` --- ## verifyUser > 审核用户 - 角色:`admin` - HTTP:`POST https://backend.dooki.cloud/UserService/verifyUser` - RPC:`rpc verifyUser(VerifyUserRequest) returns (RPCSuccess);` **请求对象 (`VerifyUserRequest`)** ```json { "userId": "int64 // 用户ID", "isRejected": "bool", "rejectReason": "string" } ``` **响应对象 (`RPCSuccess`)** ```json {} ``` **调用示例** ```bash curl -X POST "https://backend.dooki.cloud/UserService/verifyUser" \ -H "Content-Type: application/json" \ -H "X-Edge-Access-Token: " \ -d '{ ... }' ``` ---