码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 抖音实战~取关博主


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

    文章目录

            • 一、需求分析
              • 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
    							});
    						}
    					}
    				});
    				
    			},
    
    • 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账号关注的信息也删除了
    在这里插入图片描述

  • 相关阅读:
    如何分析一篇论文或者是期刊?
    mybatis-plus控制台打印sql(mybatis-Log)
    华为OD机试 - 找出符合要求的字符串子串(Java 2022 Q4 100分)
    GitHub上标星120k的Java进阶面试教程等!(建议收藏)
    【变化检测】国土资源典型要素变化遥感智能监测关键技术及应用
    LeetCode 2609. 最长平衡子字符串
    高效工具-常用
    Windows学习总结(24)—— 升级到 Windows 11 版本的九个理由
    100114. 元素和最小的山形三元组 II
    【润学】计算机网络八股文英文版(1)
  • 原文地址:https://blog.csdn.net/weixin_40816738/article/details/125483306
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号