geese
geese copied to clipboard
收藏夹
背景
为方便用户管理收藏的开源项目,计划开发收藏夹的功能
功能
- 收藏夹主要用来对收藏的项目进行分类
- 用户可选择收藏夹是否公开,公开后该收藏夹其它用户均可见
设计
字段概述:
{
"fid": 收藏夹唯一ID,
"name": 收藏夹名称,
"description": 收藏夹描述,
"uid": 用户id,
"status": 收藏夹状态:0 私有、1 申请公开中、2 公开,
"featured":精选与否
}
1. 收藏项目
原型图如下:
1.1 用户在项目详情页点击“收藏”时,获取当前用户所有的“收藏夹”选项
- 接口地址:https://local.api.hellogithub.com/docs#/favorites/options_v1_favorites_options__get
- 注意:
- 如果收藏夹为空的情况,前端收藏夹显示“默认收藏夹”
1.2 选好想要收藏进的收藏夹后,点击“保存”保存项目
- 接口地址:https://local.api.hellogithub.com/docs#/repository/collect_repository_v1_repository_collect__post
- 注意:
- 如果用户时第一次收藏项目,没有收藏夹则会自动创建“默认收藏夹”,项目可收藏成功
- 响应:
{
"success": true, # 成功
"posted": 2, # 今日收藏数
"limit": 20, # 今日最多收藏数
"remaining": 18, # 今日还可收藏几个项目
"data": {
"cid": "zgB3Mev0sqj82ti",
"total": 9 # 该项目被收藏的总数
}
}
1.3 取消收藏项目的接口没有改动(无需修改)
- 接口地址:https://local.api.hellogithub.com/docs#/repository/cancel_collect_repository_v1_repository_collect__delete
2. 个人首页的收藏夹管理
2.1 展示
-
接口:https://local.api.hellogithub.com/docs#/favorites/index_v1_favorites__get
-
注意:
- 需要增加一个参数,可以直接访问的 “收藏夹” tab,方便后面的分享。
- 无需翻页最多 20 个收藏夹。
2.2 新建收藏夹
- 接口:https://local.api.hellogithub.com/docs#/favorites/create_favorite_v1_favorites__post
- 参数:
- name: 收藏夹名(最少1个字符,最多 15 个字符)
- description:收藏夹描述(可选,最多 50 个字符)
- 返回:
- 成功:
{ "success": true }
- 失败:
{ "success": false, "message": "创建失败,收藏夹重名" or“创建失败,超出最大收藏夹数 20 ” }
2.3 编辑收藏夹
- 接口:https://local.api.hellogithub.com/docs#/favorites/update_favorite_v1_favorites__fid__patch
- 参数:
- name: 收藏夹名(最少1个字符,最多 15 个字符)
- description:收藏夹描述(可选,最多 50 个字符)
- status:状态(0为私有、1为审核、2为公开)
- 注意:
- 用户无法直接设置为公开状态(2),后台审核通过后才可以公开
- 公开状态除了可以回到私有,无法修改其它字段
2.4 删除收藏夹

-
接口:https://local.api.hellogithub.com/docs#/favorites/delete_favorite_v1_favorites__fid__delete
-
返回:
{
"success": true
}
3. 查看收藏夹

3.1 查看收藏夹内容的项目
-
接口:https://local.api.hellogithub.com/docs#/user/user_collection_v1_user__uid__favorite__fid__get
-
返回:
{
"success": true,
"page": 1,
"pageSize": 10,
"favorite": {
"fid": "C3RJ4uhcdyHftw0",
"name": "test"
},
"data": [
{
"cid": "FR9gYyoban46qQd",
"uid": "test",
"repo": {
"rid": "add197411a9e4fc48d307a2e661dac71",
"url": "https://github.com/xfangfang/Macast",
"name": "Macast",
"full_name": "xfangfang/Macast",
"description": "Macast is a cross-platform application which using mpv as DLNA Media Renderer.",
"summary": "该项目可以让电脑接收来自手机的视频、图片和音乐投屏,支持手机上的主流视频和音乐软件,以及其它符合 DLNA 协议的软件。无打扰地运行在状态栏和菜单栏,适用于 Windows、macOS、Linux 操作系统。",
"primary_lang": "Python",
"lang_color": "#3572A5",
"homepage": null,
"license": "GPL-3.0",
"open_issues": 22,
"subscribers": 40,
"stars": 4085,
"stars_str": "4.1k",
"has_chinese": false,
"is_org": false
},
"created_at": "2022-12-02T14:50:45"
}
],
"has_more": false,
"page_total": 1,
"total": 1
}
3.2 分享收藏夹
如果收藏夹的 status 为 2(公开),则显示分享按钮。
点击分享后,无需请求后端,只需要将该收藏夹的地址放到用户的粘贴板,然后提示“已复制收藏夹链接到粘贴板,快去分享给小伙伴吧。”
Branch i81-收藏夹 created!
@RJM1996 我统一了下接口的命名规则,然后 geese 提交了一版,你开发的时候拉一下最新的哈:
另外,测试时发现了一些问题:
1、公开和审核状态下,名称和描述的输入框为无法修改状态,显示提示: 注:公开状态无法修改收藏夹信息,需要转成"私有"才可以编辑。
2、非登录状态下访问,公开的收藏夹或者收藏夹的内容,应该显示「收藏夹」tab,并处于选中状态:
3、登录状态下,访问非自己的收藏夹时,不应该显示「新建收藏夹按钮」和「编辑收藏夹的功能」
获取用户收藏夹的接口,增加了 in_person 字段,判断是否为本人查看。 https://local.api.hellogithub.com/docs#/user/user_favorites_v1_user__uid__favorite__get
好的,我今天晚上看一下这些问题