在现有收藏功能基础上新增文件夹分组能力。用户可以创建多个文件夹,将收藏按主题归类,同一收藏可属于多个文件夹。
核心概念:
Default,注册时自动创建,不可删除、不可重命名POST /api/bookmark/save_artist
folder_ids,指定收藏到哪些文件夹;取消收藏时自动清除所有文件夹关联POST /api/bookmark/save_artwork
POST /api/bookmark/save_service
POST /api/bookmark/save_product
POST /api/bookmark/sync_folders
POST /api/bookmark/remove_from_folder
POST /api/bookmark/create_folder
POST /api/bookmark/update_folder
POST /api/bookmark/delete_folder
GET /api/bookmark/folder_list
GET /api/bookmark/folder_items
GET /api/bookmark/item_folders
POST /api/bookmark/save_artistfolder_ids。收藏时若不传或为空数组,自动存入默认文件夹;取消收藏时自动清除所有文件夹关联。| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
artist_id | number | 是 | artist id |
action | string | 是 | save / unsave |
folder_ids | number[] | 否 | 目标文件夹 id 列表。为空时存入默认文件夹 |
无新增,沿用原有错误语义。
POST /api/bookmark/save_artwork同 save_artist,参数字段为 artwork_id。
POST /api/bookmark/save_service同 save_artist,参数字段为 service_id。
POST /api/bookmark/save_product同 save_artist,参数字段为 product_id。
POST /api/bookmark/sync_foldersfolder_ids 为最终状态覆盖:不在列表中的文件夹会被移除,新加入的文件夹会添加。传空数组表示从所有文件夹移除。| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
type | string | 是 | artist / artwork / service / product |
artist_id | number | type=artist 时必填 | artist id |
artwork_id | number | type=artwork 时必填 | artwork id |
service_id | number | type=service 时必填 | service id |
product_id | number | type=product 时必填 | product id |
folder_ids | number[] | 否 | 目标文件夹 id 列表。为空数组或不传时表示从所有文件夹移除 |
400:文件夹不存在或不属于当前用户
400:目标文件夹已满 1000
POST /api/bookmark/remove_from_folder| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
type | string | 是 | artist / artwork / service / product |
artist_id | number | type=artist 时必填 | artist id |
artwork_id | number | type=artwork 时必填 | artwork id |
service_id | number | type=service 时必填 | service id |
product_id | number | type=product 时必填 | product id |
folder_id | number | 是 | 要移除的文件夹 id |
无新增。
POST /api/bookmark/create_folder| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
name | string | 是 | 文件夹名称,最大 20 字符 |
400:文件夹名超过 20 字符
POST /api/bookmark/update_folder| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
folder_id | number | 是 | 文件夹 id |
name | string | 是 | 新名称,最大 20 字符 |
400:文件夹不存在
400:尝试重命名默认文件夹
400:名称超过 20 字符
POST /api/bookmark/delete_folder| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
folder_id | number | 是 | 文件夹 id |
400:文件夹不存在
400:尝试删除默认文件夹
GET /api/bookmark/folder_list无
无新增。
GET /api/bookmark/folder_items| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
folder_id | number | 是 | 文件夹 id |
type | string | 否 | 筛选类型:artist / artwork / service / product |
page | number | 否 | 页码,默认 1 |
size | number | 否 | 每页数量,默认 15,最大 50 |
400:文件夹不存在
GET /api/bookmark/item_folders| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
type | string | 是 | artist / artwork / service / product |
artist_id | number | type=artist 时必填 | artist id |
artwork_id | number | type=artwork 时必填 | artwork id |
service_id | number | type=service 时必填 | service id |
product_id | number | type=product 时必填 | product id |
说明:data 为该收藏所在的文件夹 id 数组。
无新增。
| 错误码 | 场景 |
|---|---|
80001 | 文件夹不存在或不属于当前用户 |
80002 | 尝试删除默认文件夹 |
80003 | 尝试重命名默认文件夹 |
80004 | 文件夹名超过 20 字符 |
80005 | 文件夹收藏数已满 1000 |
适用于列表页的心形按钮。
收藏:点击后直接收藏到默认文件夹。
不传 folder_ids,自动存入默认文件夹。
取消收藏:已收藏状态下再次点击,直接从默认文件夹移除。
前端可通过 item_folders 接口获取当前收藏所在的文件夹 id,或使用 is_saved 字段判断状态。
适用于详情页的收藏按钮,点击后弹出文件夹选择弹窗。
步骤 1:打开弹窗时并行请求两个接口
步骤 2:渲染弹窗
item_folders 返回的 id 数组对应的 checkbox 设为选中状态create_folder)步骤 3:用户点击保存
folder_ids 为用户最终勾选的文件夹 id 列表[] 表示从所有文件夹移除(但不影响收藏状态)适用于用户中心的收藏管理页。
左侧文件夹列表:
默认文件夹 is_default: true,前端可据此隐藏编辑/删除按钮。
右侧文件夹内容:
支持按 type 筛选,支持分页。
编辑单个收藏的文件夹归属:
点击某个收藏的"编辑"按钮,弹出与场景 2 相同的弹窗,调用 sync_folders 保存。
save_{type} 的 folder_ids 参数是可选的。不传时行为与旧版完全兼容(存入默认文件夹)。sync_folders 只管理文件夹归属,不影响收藏状态。要取消收藏仍需调用 save_{type} 的 unsave。unsave)会自动清除该收藏在所有文件夹中的记录。is_default 字段控制 UI。