青训营项目点赞 | 青训营笔记

131 阅读2分钟

这是我参与「第五届青训营 」伴学笔记创作活动的第 11 天

今天开始做青训营迷你抖音项目,我准备开发给视频点赞的业务,然后查资料学习了下别人的点赞是怎么写的,以下是我的学习笔记和感想。

我们可以直接点击之后让视频的赞数+1

问题:这样写接口,可以一直按点赞重复点赞 

需求:

同一个用户只能点赞一次,再次点赞则取消点赞 

如果当前用户已经点赞,则点赞按钮高亮显(前端已经实现,判断blog类的isLike属性) 

实现步骤 

给Blog类中添加一个isLike字段,表示是否被当前用户点赞 修改点赞功能,利用redis的set集合判断用户是否赞过,未赞则点赞数+1,赞过则-1 修改根据id查询blog的业务,判断当前用户是否点赞过,赋值给isLike字段 修改分页查询blog业务,判断当前用户是否赞过,赋值isLike字段

编写完点赞操作的接口后还要修改之前的查询接口,增加查询是否已经点赞 

需求2

我们还想要点赞排行榜,那么要怎么做呢?

查出给这个笔记点赞的人,类似微信朋友圈的点赞,可以展示谁点赞了,而且我们要进行排序

所以我们得用SortedSet这种数据类型

把原本存入set改为存入zset多加个分数,分数就是时间戳

然后是否被点赞的方法也要修改,根据key取出分数,分数不为null就是点赞过了

需求:实现前五个点赞的用户返回

我们先用动态id去redis中查询出前五个点赞用户的id

然后根据id去数据库中查询信息封装到dto再返回

注意:如果我们mp直接用in来查询根本不能保证点赞的顺序,因为in查询出来的是按照id顺序返回的,没有排序,我们要按照查询id的顺序来查,order by field(id,5,1)这样

这样,我们就完成了点赞的功能还扩展了一个微信朋友圈类似的点赞排行榜,可以显示朋友的名字。

但是学完之后我发现其实迷你抖音项目的接口更加简单,直接前端都帮我们做好了,直接请求参数过来,我们保存数据库返回就行,他已经分好了参数