发布探店笔记
探店笔记类似点评网站的评价,往往是图文结合。对应的两个表:
- tb_blog:探店笔记表,包含笔记中的标题、文字、图片等
- tb_blog_comments:其他用户对探店笔记的评价
实现查看发布探店笔记的接口:
需求:点击首页的探店笔记,会进入详情页面,实现该页面的查询接口。
点赞
完善点赞功能:
- 同一个用户只能点赞一次,再次点击则取消点赞
- 如果当前用户已经点赞,则点赞按钮高亮显示(前端已实现,判断字段Blog类的isLike属性)
实现步骤:
- 给Blog类中添加一个isLike字段,标识是否被当前用户点赞
- 修改点赞功能,利用Redis的set集合判断是否点赞过,未点赞过则点赞数+1,已点赞过则点赞数-1
- 修改根据id查询Blog的业务,判断当前登录用户是否点赞过,赋值给isLike字段
- 修改分页查询Blog业务,判断当前登录用户是否点赞过,赋值给isLike字段
点赞排行榜
在探店笔记的详情页面,应该把给该笔记点赞的人显示出来,比如最早点赞的Top5,形成点赞排行榜。
实现查询点赞排行榜的接口 -> 按照点赞时间先后排序,返回Top5的用户
关注和取关
在探店图文的详情页面中,可以关注发布笔记的作者。
实现关注和取关功能
基于该表数据结构,实现两个接口:
- 关注和取关接口
- 判断是否关注的接口
关注是User之间的关系,是博主与粉丝的关系,数据库中有一张tb_follow表来表示。
共同关注
点击博主头像,可以进去博主首页。
实现共同关注功能:
利用Redis中恰当的数据结构(set),实现共同关注功能。在博主个人页面展示出当前用户与博主的共同好友。
关注推送
关注推送也叫做Feed流,直译为投喂。为用户持续的提供“沉浸式”的体验,通过无限下拉刷新获取新的信息。
Feed流的模式
Feed流产品有两种常见模式:
- Timeline:不做内容筛选,简单的按照内容发布时间排序,常用于好友或关注。例如朋友圈。
- 优点:信息全面,不会有缺失,实现相对简单。
- 缺点:信息噪声较多,用户不一定感兴趣,内容获取效率低。
- 智能排序:利用智能算法屏蔽掉违规的、用户不感兴趣的内容,推送用户感兴趣的信息来吸引用户。
- 优点:投喂用户感兴趣信息,用户粘度很高,容易沉迷。
- 缺点:如果算法不精准,可能起到反作用。
Feed流的实现方案1
拉模式:也叫做读扩散。
Feed流的实现方案2
推模式:也叫做写扩散。
Feed流的实现方案3
推拉结合模式:也叫做读写混合,兼具推和拉两种模式的优点。
总结
基于推模式实现关注推送功能
- 修改新增探店笔记的业务,在保存blog到数据库的同时,推送到粉丝的收件箱
- 收件箱满足可以根据时间戳排序,必须用Redis的数据结构实现
- 查询收件箱数据时,可以实现分页查询
Feed流的分页问题
Feed流中的数据会不断更新,所以数据的角标也在变化,因此不能采用传统的分页模式。
实现关注推送页面的分页查询
在个人主页的“关注”卡片中,查询并展示推送的Blog信息。