资源分享接口
分享模块支持用户之间分享题目和学习路线,提供收件箱、发件箱和未读计数功能,挂载于 /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)则只对指定用户可见,未读计数只统计定向分享。