项目笔记第六天 | 青训营笔记

120 阅读3分钟
这是我参与「第五届青训营 」伴学笔记创作活动的第15天。

今天主要是实现关注功能

一、关注列表

1.jpg

这里是用户的关注列表。follower_id是粉丝id,follow_id是关注id。这里在用户页面直接点击关注按钮或者粉丝按钮时,relation/follow/list/接口会发送一个get请求。传输的参数有token和user_id,token是登录用户信息,user_id是当前用户信息的id。这里可以根据user_id去数据库中寻找用户的关注列表。然后将关注用户列表作为user_list的参数返回给前端。

比如说,我要查询用户1的关注列表,这里我数据库查询命令为 select * from fans where follower_id = 1 这里我能够获取用户1的所有关注列表。同理查询用户1的粉丝列表则是查询所有follow_id为1的记录。

二、关注按钮操作

relation/action接口发送的请求中有三个参数,token,to_user_id和action_type。这里token是用户的登录信息,比如下图中ccc123456,指的是登录用户账号加密码。to_user_id是关注按钮响应对象的用户id,比如点击用户3右边的关注按钮,会发送用户3的id。action_type指关注操作,关注操作会发送1,取关操作会发送2。

2.jpg

这里我进行关注操作以后,我需要知道三个参数,粉丝id、关注id和操作数。如果操作数为1(关注操作),关注表中新增一条记录,其中follow_id为关注id,follower_id为粉丝id,然后数据库中相应用户的关注数量和粉丝数量加1。如果操作数为2(取关操作),这里查询对应记录并且删除该记录,同时用户关注数量和粉丝数量减1。

这里我加了一个判定条件,如果该用户已经关注过,则会提示该用户已关注。这里是因为关注列表的按钮是会正常根据用户关注情况亮起或熄灭,但是如果在视频流或者用户信息中无论该用户是否关注都会亮起按钮,如下图所示。

3.jpg

三、关注按钮显示

这里从任意用户信息点击下图位置以后都会从/relation/follow/list/发送请求。会展示该用户的关注列表。

4.jpg

但是这里要注意一点。如果我是用户A打开用户B的关注列表,用户B的关注信息肯定是跟用户A不一样的。不过用户A关注的对象,无论是在谁的列表中,应该都是显示已关注按钮。这里我是在用户打开app和登录时,将DemoUsers信息中,如果登录用户A关注了列表中的其它用户,则is_follow赋值为true。当打开其他用户的关注列表,判断他的关注列表中是否有用户A的关注对象,如果有则发送到前端的user_list中该用户的is_follow也赋值为true。如下图效果。这里我是登录用户1,打开用户3的关注列表。

5.jpg

总结

目前急需解决的问题是,如何在用户信息页面以及视频流中显示正确的关注关系。因为正常取关操作一般是点击此用户页面,此时该用户关注按钮应该是熄灭状态。这样点击该按钮后发送的操作数为2,就能取关了。但是如果按钮都是亮起状态,那么点击按钮只会发送操作数1,就没有取关操作了。目前取关操作只能打开个人用户,从关注列表中取关。