geese icon indicating copy to clipboard operation
geese copied to clipboard

收藏夹

Open 521xueweihan opened this issue 2 years ago • 2 comments

背景

为方便用户管理收藏的开源项目,计划开发收藏夹的功能

功能

  1. 收藏夹主要用来对收藏的项目进行分类
  2. 用户可选择收藏夹是否公开,公开后该收藏夹其它用户均可见

设计

字段概述:

  {
    "fid": 收藏夹唯一ID,
    "name": 收藏夹名称,
    "description": 收藏夹描述,
    "uid": 用户id,
    "status": 收藏夹状态:0 私有、1 申请公开中、2 公开,
    "featured":精选与否
  }

1. 收藏项目

原型图如下:

Image

1.1 用户在项目详情页点击“收藏”时,获取当前用户所有的“收藏夹”选项

  • 接口地址:https://local.api.hellogithub.com/docs#/favorites/options_v1_favorites_options__get
  • 注意:
    1. 如果收藏夹为空的情况,前端收藏夹显示“默认收藏夹”

1.2 选好想要收藏进的收藏夹后,点击“保存”保存项目

  • 接口地址:https://local.api.hellogithub.com/docs#/repository/collect_repository_v1_repository_collect__post
  • 注意:
    1. 如果用户时第一次收藏项目,没有收藏夹则会自动创建“默认收藏夹”,项目可收藏成功
  • 响应:
{
  "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. 个人首页的收藏夹管理

Image

2.1 展示

  • 接口:https://local.api.hellogithub.com/docs#/favorites/index_v1_favorites__get

  • 注意:

    1. 需要增加一个参数,可以直接访问的 “收藏夹” tab,方便后面的分享。
    2. 无需翻页最多 20 个收藏夹。

2.2 新建收藏夹

Image

  • 接口: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 编辑收藏夹

Image

  • 接口: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 删除收藏夹

截屏2022-12-02 10 26 46
  • 接口:https://local.api.hellogithub.com/docs#/favorites/delete_favorite_v1_favorites__fid__delete

  • 返回:

{
  "success": true
}

3. 查看收藏夹

截屏2022-12-02 14 47 05

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(公开),则显示分享按钮。

点击分享后,无需请求后端,只需要将该收藏夹的地址放到用户的粘贴板,然后提示“已复制收藏夹链接到粘贴板,快去分享给小伙伴吧。”

521xueweihan avatar Nov 30 '22 07:11 521xueweihan

Branch i81-收藏夹 created!

github-actions[bot] avatar Dec 02 '22 07:12 github-actions[bot]

@RJM1996 我统一了下接口的命名规则,然后 geese 提交了一版,你开发的时候拉一下最新的哈:

另外,测试时发现了一些问题:

1、公开和审核状态下,名称和描述的输入框为无法修改状态,显示提示: 注:公开状态无法修改收藏夹信息,需要转成"私有"才可以编辑。

image

2、非登录状态下访问,公开的收藏夹或者收藏夹的内容,应该显示「收藏夹」tab,并处于选中状态: image

3、登录状态下,访问非自己的收藏夹时,不应该显示「新建收藏夹按钮」和「编辑收藏夹的功能」 image

获取用户收藏夹的接口,增加了 in_person 字段,判断是否为本人查看。 https://local.api.hellogithub.com/docs#/user/user_favorites_v1_user__uid__favorite__get

521xueweihan avatar Dec 12 '22 15:12 521xueweihan

好的,我今天晚上看一下这些问题

RJM1996 avatar Dec 14 '22 02:12 RJM1996