• 抖音实战~取关博主


    在这里插入图片描述
    在这里插入图片描述

    一、需求分析
    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
    							});
    						}
    					}
    				});
    				
    			},
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    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();
        }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    /**
         * 取关
         *
         * @param myId     我的用户ID
         * @param vlogerId 视频发布者ID
         * @return
         */
        @Transactional
        @Override
        public 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);
        }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    三、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账号关注的信息也删除了
    在这里插入图片描述

  • 相关阅读:
    sqoop ETL工具
    Spring篇---第四篇
    Linux C/C++ 学习笔记(九):百万并发的服务器实现
    第二十三课.扩散模型
    dynaform6.1.3视频教程
    并发工具类库使用的常见问题
    幻读是什么,幻读有什么问题
    nDCG笔记及在spark中的实现(更新中)
    Token身份验证
    Java应用堆外内存泄露问题排查
  • 原文地址:https://blog.csdn.net/weixin_40816738/article/details/125483306