Skip to content

点赞或取消点赞

1. 接口定位

  • 接口名称: 点赞或取消点赞
  • 所属域: chat/moments
  • 业务目标: 对指定动态点赞,或取消自己之前的点赞

2. 请求定义

  • Method: POST
  • Path: /chatx/moments/like
  • Content-Type: 推荐 application/json
  • operationID: 必填,请通过 Header operationID 传入
  • 鉴权: 必填,请通过 Header token 传入有效登录令牌
  • 幂等性: 对同一 postID + 当前用户 + cancel 组合可视为幂等

3. 请求参数

Header 参数

字段必填类型说明
operationIDstring链路追踪 ID
tokenstring用户登录 token

Body 参数

字段必填类型说明
postIDstring动态 ID
cancelboolfalse 或不传表示点赞;true 表示取消点赞

字段说明

  • API 层会在转发前把当前登录用户的 userID 注入请求体,客户端无需传入。
  • 当前实现会先校验动态是否存在。
  • 当前实现会在动态存在后校验互动权限:仅 approved 动态允许互动,并且调用者需要对该动态可见。
  • 点赞写入采用 postID + userID 唯一键 upsert;取消点赞按 postID + userID 删除。

4. 响应结构

通用响应包裹

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

data 字段

字段类型说明
likeCountint64操作完成后的最新点赞数

5. 业务规则

  • 路由统一要求 token
  • API 层从 token 中解析当前用户,并把该用户作为点赞操作者。
  • 服务端 会先确认目标动态存在,再校验当前用户是否有互动权限(仅 approved 且可见)。
  • cancel = false 时执行点赞 upsert,同一用户重复点赞不会产生重复记录。
  • cancel = true 时删除当前用户对该动态的点赞记录。
  • 返回值始终是操作后的最新点赞总数。

6. 错误码与失败场景

错误码场景典型报错
1001Header 缺少 operationIDheader must have operationID
1001Header 缺少 tokentoken is empty
1001postID 为空postID and userID are required
-动态不存在由动态查询链路返回
-点赞或取消点赞失败由数据库层返回

7. 示例

fetch 请求示例

javascript
fetch("http://localhost:10010/chatx/moments/like", {
  method: "POST",
  headers: {
    operationID: "moments-like-001",
    token: "user-token",
    "Content-Type": "application/json",
  },
  body: JSON.stringify({
    postID: "p_10001",
    cancel: false,
  }),
})
  .then((res) => res.json())
  .then((data) => console.log(data));

请求示例(JSON)

json
{
  "postID": "p_10001",
  "cancel": false
}

成功响应示例

json
{
  "errCode": 0,
  "errMsg": "",
  "errDlt": "",
  "data": {
    "likeCount": 12
  }
}

失败响应示例

json
{
  "errCode": 1001,
  "errMsg": "ArgsError",
  "errDlt": "postID and userID are required"
}

8. 时序流程

  1. 校验 operationIDtoken
  2. API 层解析 token,并把当前用户 userID 注入请求。
  3. 服务端 校验 postIDuserID,再确认动态存在。
  4. 校验当前用户是否可互动该动态(仅 approved 且可见)。
  5. 根据 cancel 选择点赞 upsert 或取消点赞删除。
  6. 统计该动态当前点赞总数。
  7. 返回最新 likeCount

9. 变更记录

  • 2026-03-31: 首版发布,基于 chatx moments API、协议定义和 服务端、数据库实现整理。
  • 2026-06-01: 补充互动鉴权规则:点赞与取消点赞仅允许对审核通过且当前用户可见的动态执行。