API 参考

资源分享接口

分享模块支持用户之间分享题目和学习路线,提供收件箱、发件箱和未读计数功能,挂载于 /api/sharing所有接口均需认证。

发送分享

POST /api/sharing

将题目或学习路线分享给指定用户,或广播给所有人(toUserId 为空时)。

请求体

{
  "shareType": "question",          // 必填:question / learning_path
  "resourceId": "uuid-of-question", // 必填:题目或学习路线的 ID
  "toUserId": "uuid-of-user",       // 可选:指定接收用户,不填则公开广播
  "message": "这道题很经典,推荐你练习!"  // 可选:附加留言
}

成功响应 201

{ "success": true, "message": "分享成功", "data": { "id": "uuid" } }

获取收到的分享

GET /api/sharing/received

返回发送给当前用户(含公开广播)的分享记录,按时间降序,最多 50 条。

成功响应 200

{
  "success": true,
  "data": [
    {
      "id": "uuid",
      "from_user_id": "uuid",
      "to_user_id": null,            // null 表示公开广播
      "share_type": "question",
      "resource_id": "uuid",
      "message": "这道题很经典!",
      "is_read": 0,
      "created_at": "2024-01-15T08:00:00.000Z",
      "from_user_name": "张老师",
      "from_user_avatar": null
    }
  ]
}

获取我发出的分享

GET /api/sharing/sent

返回当前用户发送的分享记录,按时间降序,最多 50 条。

成功响应 200

{
  "success": true,
  "data": [
    {
      "id": "uuid",
      "share_type": "learning_path",
      "resource_id": "uuid",
      "to_user_name": "李同学",       // null 表示广播
      "created_at": "2024-01-15T08:00:00.000Z"
    }
  ]
}

标记分享已读

PUT /api/sharing/:id/read

将指定分享标记为已读。只能标记发送给自己的分享。无需请求体。

成功响应 200

{ "success": true, "message": "已标记为已读" }

获取未读分享数量

GET /api/sharing/unread-count

返回当前用户的未读分享数量,用于导航栏角标显示。排除自己发给自己的分享。

成功响应 200

{
  "success": true,
  "data": { "count": 3 }
}
公开广播分享to_user_id = null)对平台所有用户可见,适合教师向全班分享练习题或学习路线。定向分享(指定 to_user_id)则只对指定用户可见,未读计数只统计定向分享。