文章目录
- 一、需求分析
- 1. 取关流程图
- 2. 取关流程简述
- 二、源码实战
- 2.1. 取关~前端
- 2.2. 取关~后端
- 三、5217取关实战
- 3.1. 取关前资料分析
- 3.2. 账号5217取关
- 四、账号0009取关实战
- 4.1. 账号0009取关
- 4.2. 数据变化
一、需求分析
1. 取关流程图
2. 取关流程简述
- 1.前端携带用户ID和短视频发布者ID请求后端取关接口
- 2.判断我们是否朋友关系
- 2.1.非朋友关系,删除自己的关注关联表记录
- 2.2.朋友关系,抹除双方的朋友关系,设置非朋友状态,更新数据库
- 3.我关注总量-1(redis)
- 4.博主粉丝量-1(redis)
- 5.删除我和短视频博主的关系(redis)
二、源码实战
2.1. 取关~前端
// 取消关注cancelFollow(vlogerId) {var me = this;var userId = getApp().getUserInfoSession().id;var serverUrl = app.globalData.serverUrl;uni.request({method: "POST",header: {headerUserId: userId,headerUserToken: app.getUserSessionToken()},url: serverUrl + "/fans/cancel?myId=" + userId + "&vlogerId=" + vlogerId,success(result) {if (result.data.status == 200) {me.reFreshList(vlogerId, false);} else {uni.showToast({title: result.data.msg,icon: "none",duration: 3000});}}});},
2.2. 取关~后端
/*** 取关** @param myId 我的用户ID* @param vlogerId 视频发布者ID* @return*/@PostMapping("cancel")public GraceJSONResult cancel(@RequestParam String myId,@RequestParam String vlogerId) {// 删除业务的执行fansService.doCancel(myId, vlogerId);// 博主的粉丝-1,我的关注-1//我的关注总数redis.decrement(REDIS_MY_FOLLOWS_COUNTS + ":" + myId, 1);// 博主的粉丝总数redis.decrement(REDIS_MY_FANS_COUNTS + ":" + vlogerId, 1);// 我和博主的关联关系,依赖redis,不要存储数据库,避免db的性能瓶颈redis.del(REDIS_FANS_AND_VLOGGER_RELATIONSHIP + ":" + myId + ":" + vlogerId);return GraceJSONResult.ok();}
/*** 取关** @param myId 我的用户ID* @param vlogerId 视频发布者ID* @return*/@Transactional@Overridepublic void doCancel(String myId, String vlogerId) {// 判断我们是否朋友关系,如果是,则需要取消双方的关系Fans fan = queryFansRelationship(myId, vlogerId);if (fan != null && fan.getIsFanFriendOfMine() == YesOrNo.YES.type) {// 抹除双方的朋友关系,自己的关系删除即可Fans pendingFan = queryFansRelationship(vlogerId, myId);pendingFan.setIsFanFriendOfMine(YesOrNo.NO.type);fansMapper.updateByPrimaryKeySelective(pendingFan);}// 删除自己的关注关联表记录fansMapper.delete(fan);}
三、5217取关实战
3.1. 取关前资料分析
尾号~0009
关注:1
粉丝:2
尾号~5217
关注:3
粉丝:2
3.2. 账号5217取关
尾号~0009
关注:1
粉丝:1 ->由2变成了1
尾号~5217
关注:2 ->由3变成了2
粉丝:2
我关注的那一条数据删除了,博主和我不是朋友关系了
四、账号0009取关实战
4.1. 账号0009取关
尾号~0009
关注:0 由1变成了0
粉丝:1
尾号~5217
关注:2 ->由3变成了2
粉丝:1 ->由2变成了1
4.2. 数据变化
0009账号关注的信息也删除了