抖音实战~取关博主

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

文章目录

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/515298.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

终于有人把Python讲清楚了!

Python入门从哪开始,90%以上的书上都是这样讲的:先介绍 Python 的基本语法规则、list、dict、tuple 等数据结构,然后再介绍字符串处理和正则表达式,介绍文件等IO操作.... 就这样一点一点往下说。然而这种按部就班的学习方法&#…

MaxCompute 实现增量数据推送(全量比对增量逻辑)

ODPS 2.0 支持了很多新的集合命令(专有云升级到3版本后陆续支持),简化了日常工作中求集合操作的繁琐程度。增加的SQL语法包括:UNOIN ALL、UNION DISTINCT并集,INTERSECT ALL、INTERSECT DISTINCT交集,EXCEPT ALL、EXCEPT DISTINCT…

uniapp 引入iconfont的方法

文章目录1. 加入购物车2. 下载代码3. 创建静态目录4. 样式字体复制5. 字体转码6. 转码内容替换7. 样式引入7. 使用8. 个性化使用阿里图标库:https://www.iconfont.cn/ 1. 加入购物车 选中自己需要的图标依次加入购物车 2. 下载代码 打开购物车-下载代码到本地 …

独家下载 |《领军行业大数据及AI实战》解锁九大行业领军企业云上大数据及AI实战

飞天大数据平台不仅是阿里经济体大数据生产的基石,更为各行业客户提供大数据整体解决方案和强劲算力。上一册介绍阿里巴巴内部大数据实战的电子书《阿里巴巴大数据及AI实战》推出后,受到了广大开发者的认可。本次带来不同行业下企业的大数据&AI案例和…

从日志入手,保障 Kubernetes 稳定性

作者 | 悟鹏、沉醉来源 | 阿里巴巴云原生头图 | 下载于视觉中国不论对于软件的用户还是开发者,日志都是很重要的信息源。日志可以用来表征软件的运行状态,在软件运行不符合预期时提供丰富的信息,也可以用在开发阶段调试软件,方便定…

抖音实战~我关注的博主列表、关注、取关

文章目录一、关注模块1. 关注流程图2. 关注流程简述二、前端关注相关2.1. 查询我关注博主列表2.2. 取消关注2.2. 关注我2.4. 上滑分页粉丝列表2.5. 状态刷新三、后端关注相关3.1. 查询我关注的博主列表3.2. 取关3.3. 关注一、关注模块 1. 关注流程图 暂未上,敬请期…

灵魂拷问,上 Kubernetes 有什么业务价值?

上 Kubernetes 有什么业务价值? 今天要演讲的主题是跟应用管理或者说是云原生应用交付是相关的。首先我们想要先回答这么一个问题:为什么我们要基于 Kubernetes 去构建一个应用管理平台? 上图是一个本质的问题,我们在落地 K8s 经…

近7万新冠域名一半是钓鱼网站?以色列老牌安全厂商Check Point推出全端保护新战略

编辑 | 宋 慧 出品 | CSDN云计算 头图 | 付费下载于视觉中国 疫情肆虐的2020注定会被长久铭记。在这一年中,人们的工作、生活方式发生了巨变。在以色列老牌安全厂商Check Point全球进行的调查中显示,87%的工作人口采用了居家办公模式,74%的企…

掌门教育微服务体系Solar第3弹:Nacos企业级落地下篇

前言 在高速发展的时候,公司规模越来越大,老师人数越来越多,这时候公司不能铺太多人去做运营与服务,必须提高每个人效,这就需要技术驱动。因此掌门教育转变成一家技术驱动型的公司,如果被迫成为一家靠资金驱…

jdk 1.8 安装

步骤 B:配置 JAVA_HOME 系统变量区域,点击【新建】,在弹出的窗口中,分别输入变量名和值 变量名:JAVA_HOME 变量值:你的安装路径 JAVA_HOMEpath %JAVA_HOME%\bin步骤 C:配置 Path Path环境变量…

【漫画】最近,老王又双叒get了CDN的新技能—可编程化敏捷开发

原文链接 本文为阿里云原创内容,未经允许不得转载。

抖音实战~点赞数量弹框

组件 在components下面新建ge-popup.vue <template><view><view class"mask"></view><!--绑定微信--><view class"wxbox"><view class"weixin"><image src"../static/dz.jpg"></…

阿里张磊:如何构建以应用为中心的“Kubernetes”?(内含 QA 整理)

如何构建“以应用为中心”的 Kubernetes&#xff1f; 构建这么一个以用户为中心的 Kubernetes&#xff0c;需要做几个层级的事情。 应用层驱动 首先来看最核心的部分&#xff0c;上图中蓝色部分&#xff0c;也就是 Kubernetes。可以在 Kubernetes 之上定义一组 CRD 和 Contro…

Trie 树是什么样的数据结构?有哪些应用场景?

作者 | 神奕来源 | 前端应届生头图 | 下载于视觉中国出品 | CSDN云计算&#xff08;ID&#xff1a;CSDNcloud&#xff09;在计算机科学中&#xff0c;trie&#xff0c;又称前缀树或字典树&#xff0c;是一种有序树&#xff0c;用于保存关联数组&#xff0c;其中的键通常是字符串…

iOS Abort问题系统性解决方案

一、背景 崩溃(Crash)&#xff0c;即闪退&#xff0c;多指移动设备&#xff08;如iOS、Android设备&#xff09;在打开/使用应用程序的过程中&#xff0c;突然出现意外退出/中断的情况。如果App线上版本频繁发生崩溃&#xff0c;会极大地影响用户体验&#xff0c;甚至导致用户…

uniapp 处理过去时间对比现在时间的时间差 如刚刚、几分钟前,几小时前,几个月前

文章目录1. 返回的报文2. 时间格式化方法3. 使用1. 返回的报文 格式化时间&#xff1a;createTime [{"id": "62c11d3435b7c4007a8e650e","fromUserId": "21100598TZ9XG6RP","fromNickname": "小美女","fro…

云原生全景图之五:应用程序定义和开发层

作者 | Catherine Paganini、Jason Morgan来源 | K8sMeetup头图 | 下载于视觉中国前文介绍了如何将所有应用程序组件作为整体来编排和管理&#xff08;编排和管理层&#xff09;。本文将介绍云原生全景图的最上层&#xff1a;应用程序定义和开发层。现在我们来到了云原生全景图…

Flink 1.11 SQL 十余项革新大揭秘,哪些演变在便捷你的使用体验?

简介&#xff1a; SQL 作为 Flink 中公认的核心模块之一&#xff0c;对推动 Flink 流批一体功能的完善至关重要。在 1.11 中&#xff0c;Flink SQL 也进行了大量的增强与完善&#xff0c;开发大功能 10 余项&#xff0c;不仅扩大了应用场景&#xff0c;还简化了流程&#xff0c…

uniapp 小于1000 按原数字显示 超过1000 数字换算成10w+ 1.3k+ 显示

文章目录1. 公共方法2. 使用1. 公共方法 methods: {// 数字换算graceNumber(number) {if (number 0) {return "0";} else if (number > 999 && number < 9999) {return (number / 1000).toFixed(1) k;} else if (number > 9999 && numbe…

我们为什么要做 SoloPi

SoloPi现状 去年&#xff08;2019年&#xff09;7月份&#xff0c;蚂蚁集团正式对外开源了客户端自动化测试工具 SoloPi &#xff0c;其主要包括三大模块&#xff1a;录制回放&#xff08;用于功能测试&#xff09;、性能工具&#xff08;用于性能测试&#xff09;以及一机多控…