Skip to content

全量获取用户已加入群 ID(带版本)

1. 接口定位

  • 接口名称: 全量获取用户已加入群 ID(带版本)
  • 所属域: group
  • 业务目标: 获取指定用户的全量入群 groupID 集合,并返回版本与哈希比对结果,供客户端做全量同步

2. 请求定义

  • Method: POST
  • Path: /group/get_full_join_group_ids
  • Content-Type: 推荐 application/json
  • operationID: 必填,请通过 Header operationID 传入
  • 鉴权: 必填,需要通过 Header token 传入有效令牌
  • 幂等性: 幂等(只读操作)

3. 请求参数

Header 参数

字段必填类型说明
operationIDstring链路追踪 ID
tokenstring登录令牌

Body 参数

字段必填类型说明
userIDstring目标用户 ID
idHashstring客户端当前已入群 groupID 集合哈希,用于服务端快速判断是否一致

4. 响应结构

通用响应包裹

字段类型说明
errCodeint错误码,0 表示成功
errMsgstring错误简述
errDltstring错误详情
dataany业务数据

data 字段结构

字段类型说明
versionuint64当前已入群集合版本号
versionIDstring版本记录 ID
equalbool服务端集合哈希是否与请求 idHash 一致
groupIDsarray[string]全量已加入群 ID 列表;当 equal=true 时可能为空

5. 业务规则

  • 调用方需满足“请求 userID 本人”或“应用管理员”之一。
  • 服务端会计算已入群 groupID 集合哈希并与 idHash 对比。
  • idHash 命中(equal=true)时,服务端可不返回 groupIDs(节省带宽)。

6. 错误码与失败场景

错误码场景典型报错
1002请求 userID 与 token 用户不一致且非管理员NoPermissionError
500服务内部错误ServerInternalError

7. 示例

fetch 请求示例

javascript
fetch("http://localhost:10002/group/get_full_join_group_ids", {
  method: "POST",
  headers: {
    operationID: "e279eb74-6e0d-4dfd-bd53-72d982734a13",
    token: "<your-token>",
    "Content-Type": "application/json",
  },
  body: JSON.stringify({
    userID: "u_1001",
    idHash: "9e6a83ce324d9a7c",
  }),
})
  .then((res) => res.json())
  .then((data) => console.log(data));

请求示例(JSON)

json
{
  "userID": "u_1001",
  "idHash": "9e6a83ce324d9a7c"
}

成功响应示例

json
{
  "errCode": 0,
  "errMsg": "",
  "errDlt": "",
  "data": {
    "version": 57,
    "versionID": "66547f03f0d5ab0f51711888",
    "equal": false,
    "groupIDs": ["group_001", "group_002"]
  }
}

8. 时序流程

  1. 校验调用权限(请求 userID 本人或管理员)。
  2. 查询用户当前入群版本与全量 groupID 集合。
  3. 计算并对比 idHash,回填 equal,必要时返回全量 groupIDs

9. 变更记录

  • 2026-06-20: 首版补充文档发布。