Browse Source

feat: user tables

BaiLuoYan 3 tháng trước cách đây
mục cha
commit
24189b1db3
2 tập tin đã thay đổi với 192 bổ sung0 xóa
  1. 60 0
      pb/.clang-format
  2. 132 0
      pb/user.proto

+ 60 - 0
pb/.clang-format

@@ -0,0 +1,60 @@
+---
+# clang-format 配置文件
+# 用于防止 proto 文件自动换行
+
+# ColumnLimit: 列宽限制
+# 设置为 0 表示不限制列宽,不会因为行太长而自动换行
+# 防止原本写在一行的代码被格式化工具强制换行
+# 例如:message UserAddReq { UserVo vo = 1; } 会保持在一行,不会被拆成多行
+ColumnLimit: 0
+
+# Language: 指定文件类型
+# 设置为 Proto 表示这是 Protocol Buffers 文件格式
+# clang-format 会根据此设置应用相应的格式化规则
+Language: Proto
+
+# IndentWidth: 缩进宽度
+# 设置每次缩进使用 2 个空格
+# 例如:message 内的字段会缩进 2 个空格
+IndentWidth: 2
+
+# UseTab: 是否使用 Tab 字符
+# 设置为 Never 表示不使用 Tab,只使用空格进行缩进
+# 这样可以保证在不同编辑器和环境下显示一致
+UseTab: Never
+
+# TabWidth: Tab 字符的宽度
+# 当 UseTab 为 Never 时,此选项主要用于处理已存在的 Tab 字符
+# 设置为 2 表示如果遇到 Tab 字符,将其视为 2 个空格宽度
+TabWidth: 2
+
+# BinPackArguments: 函数参数打包
+# 设置为 true 表示尽量将函数参数放在同一行,而不是每个参数一行
+# 例如:rpc UserAdd(UserVo) returns (UserVo); 会保持在一行
+BinPackArguments: true
+
+# BinPackParameters: 函数参数列表打包
+# 设置为 true 表示尽量将参数列表放在同一行,避免不必要的换行
+# 与 BinPackArguments 配合使用,确保参数紧凑排列
+BinPackParameters: true
+
+# BreakBeforeBraces: 大括号前的换行规则
+# 设置为 Attach 表示大括号紧跟在上一行末尾,不单独换行
+# 例如:message UserVo { 而不是 message UserVo\n{
+BreakBeforeBraces: Attach
+
+# BreakStringLiterals: 是否允许拆分字符串字面量
+# 设置为 false 表示不允许将长字符串拆分成多行
+# 保持字符串在一行内,即使字符串很长
+BreakStringLiterals: false
+
+# SpacesBeforeTrailingComments: 行尾注释前的空格数
+# 设置为 1 表示在代码和行尾注释之间保留 1 个空格
+# 例如:string username = 4; // 用户名(username 和 // 之间有一个空格)
+SpacesBeforeTrailingComments: 1
+
+# MaxEmptyLinesToKeep: 保留的最大连续空行数
+# 设置为 1 表示最多保留 1 个连续空行
+# 超过 1 个的连续空行会被合并为 1 个,保持代码紧凑
+MaxEmptyLinesToKeep: 1
+

+ 132 - 0
pb/user.proto

@@ -189,6 +189,117 @@ message UserAppConfigListRes {
   repeated UserAppConfigVo list = 2;
 }
 
+message UserVo {
+  int64 id = 1;               // ID
+  string productCode = 2;     // 产品标识
+  string uuid = 3;            // 用户唯一ID
+  string deviceId = 4;        // 注册时使用的设备ID
+  int64 accountType = 5;      // 1: device 2: account (其实可以通过查询 user_credential 中有没有登录凭证来确定此账号是已注册的账号还是游客类型的账号)
+  string registType = 6;      // 注册方式 normal email phone wechat qq google apple (其实可以通过查询 user_credential 中最早的一条记录的 identityType 来确定)
+  int64 registFrom = 7;       // 从哪里注册 0: unknown 1: guest 2: app 3: web 4: pc 9999: invalid
+  string referChannel = 8;    // 推广渠道
+  string referSubChannel = 9; // 推广子渠道
+  string nickname = 10;       // 用户昵称
+  string avatar = 11;         // 用户头像地址
+  string config = 12;         // 保留字段,用于扩展
+  Status status = 13;         // 状态 1: 正常 2: 冻结
+  int64 createTime = 14;      // 创建时间
+  int64 updateTime = 15;      // 修改时间
+}
+
+message UserAddReq { UserVo vo = 1; }
+message UserAddResp { UserVo vo = 1; }
+
+message UserUpdateReq { UserVo vo = 1; }
+message UserUpdateResp { UserVo vo = 1; }
+
+message UserDelReq { repeated int64 ids = 1; }
+
+message UserGetReq { UserVo vo = 1; }
+message UserGetResp { UserVo vo = 1; }
+
+message UserListReq {
+  Page page = 1;
+  UserVo vo = 2;
+  repeated int64 excludeIds = 3;    // 排除的ID
+  repeated string productCodes = 4; // 产品code
+  repeated string uuids = 5;        // 用户唯一ID
+  repeated string deviceIds = 6;    // 设备ID (device 表的 id)
+}
+message UserListRes {
+  int64 total = 1;
+  repeated UserVo list = 2;
+}
+
+message UserCredentialVo {
+  int64 id = 1;            // ID
+  int64 userId = 2;        // 用户ID
+  string productCode = 3;  // 产品标识
+  string identityType = 4; // 凭证类型: username, email, phone, wechat, qq, google, apple 等
+  string identifier = 5;   // 凭证标识
+  string credential = 6;   // 凭证密钥(密码/token)
+  int64 isVerified = 7;    // 是否已验证 1: 已验证 2: 未验证
+  int64 registFrom = 8;    // 从哪里注册 0: unknown 1: guest 2: app 3: web 4: pc 9999: invalid
+  Status status = 9;       // 状态 1: 正常 2: 禁用
+  int64 createTime = 10;   // 创建时间/注册时间
+  int64 updateTime = 11;   // 更新时间
+}
+
+message UserCredentialAddReq { UserCredentialVo vo = 1; }
+message UserCredentialAddResp { UserCredentialVo vo = 1; }
+
+message UserCredentialUpdateReq { UserCredentialVo vo = 1; }
+message UserCredentialUpdateResp { UserCredentialVo vo = 1; }
+
+message UserCredentialDelReq { repeated int64 ids = 1; }
+
+message UserCredentialGetReq { UserCredentialVo vo = 1; }
+message UserCredentialGetResp { UserCredentialVo vo = 1; }
+
+message UserCredentialListReq {
+  Page page = 1;
+  UserCredentialVo vo = 2;
+  repeated int64 excludeIds = 3; // 排除的ID
+}
+message UserCredentialListRes {
+  int64 total = 1;
+  repeated UserCredentialVo list = 2;
+}
+
+message UserDeviceVo {
+  int64 id = 1;                // ID
+  int64 userId = 2;            // 用户ID
+  int64 did = 3;               // 设备ID
+  string sessionId = 4;        // 登录凭证
+  int64 sessionCreateTime = 5; // 凭证创建时间
+  Status status = 6;           // 状态 1: 正常 2: 禁用
+  int64 updateTime = 7;        // 更新时间
+  int64 createTime = 8;        // 创建时间
+}
+
+message UserDeviceAddReq { UserDeviceVo vo = 1; }
+message UserDeviceAddResp { UserDeviceVo vo = 1; }
+
+message UserDeviceUpdateReq { UserDeviceVo vo = 1; }
+message UserDeviceUpdateResp { UserDeviceVo vo = 1; }
+
+message UserDeviceDelReq { repeated int64 ids = 1; }
+
+message UserDeviceGetReq { UserDeviceVo vo = 1; }
+message UserDeviceGetResp { UserDeviceVo vo = 1; }
+
+message UserDeviceListReq {
+  Page page = 1;
+  UserDeviceVo vo = 2;
+  repeated int64 excludeIds = 3; // 排除的ID
+  repeated int64 userIds = 4;    // 用户ID
+  repeated int64 dIds = 5;       // device 表的 id
+}
+message UserDeviceListResp {
+  int64 total = 1;
+  repeated UserDeviceVo list = 2;
+}
+
 // 用户模块
 service GoUserClient {
   rpc Ping(Request) returns (Response);
@@ -234,4 +345,25 @@ service GoUserClient {
   rpc UserTestDel(Ids) returns (Empty);
   rpc UserTestGet(UserTestVo) returns (UserTestVo);
   rpc UserTestList(UserTestListReq) returns (UserTestListResp);
+
+  // User
+  rpc UserAdd(UserVo) returns (UserVo);
+  rpc UserUpdate(UserVo) returns (UserVo);
+  rpc UserDel(Ids) returns (Empty);
+  rpc UserGet(UserVo) returns (UserVo);
+  rpc UserList(UserListReq) returns (UserListResp);
+
+  // UserCredential
+  rpc UserCredentialAdd(UserCredentialVo) returns (UserCredentialVo);
+  rpc UserCredentialUpdate(UserCredentialVo) returns (UserCredentialVo);
+  rpc UserCredentialDel(Ids) returns (Empty);
+  rpc UserCredentialGet(UserCredentialVo) returns (UserCredentialVo);
+  rpc UserCredentialList(UserCredentialListReq) returns (UserCredentialListResp);
+
+  // UserDevice
+  rpc UserDeviceAdd(UserDeviceVo) returns (UserDeviceVo);
+  rpc UserDeviceUpdate(UserDeviceVo) returns (UserDeviceVo);
+  rpc UserDeviceDel(Ids) returns (Empty);
+  rpc UserDeviceGet(UserDeviceVo) returns (UserDeviceVo);
+  rpc UserDeviceList(UserDeviceListReq) returns (UserDeviceListResp);
 }