参考

https://www.harris1024.com/archives/71.html

https://www.jianshu.com/p/e37bd781e6dd

https://blog.csdn.net/weixin_31427047/article/details/113238285?utm_medium=distribute.pc_relevant.none-task-blog-baidujs_title-0&spm=1001.2101.3001.4242

创建表

消息表

CREATE TABLE user_message (id bigint(15) NOT NULL AUTO_INCREMENT COMMENT '主键',uid bigint(15) DEFAULT NULL COMMENT '用户id',content varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL,picture varchar(200) CHARACTER SET utf8 COLLATE utf8_unicode_ci DEFAULT '' COMMENT '图片',location varbinary(100) DEFAULT '' COMMENT '位置',create_time datetime DEFAULT NULL COMMENT '创建日期',PRIMARY KEY (id)) ENGINE=InnoDB DEFAULT CHARSET=utf8;

朋友圈展示时间轴

CREATE TABLE user_friend_timeline (id int(10) NOT NULL,uid int(10) NOT NULL COMMENT '用户id',message_id int(10) DEFAULT NULL COMMENT '消息id',message_uid int(11) DEFAULT NULL COMMENT '消息发布者',create_time datetime DEFAULT NULL COMMENT '发布消息时间',PRIMARY KEY (id)) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='用户朋友圈消息列表';

评论表

CREATE TABLE user_comment (id int(10) NOT NULL,mid int(10) DEFAULT NULL COMMENT '信息id',uid int(10) DEFAULT NULL,content varchar(255) DEFAULT NULL COMMENT '评论内容',reply_comment_id int(10) DEFAULT NULL COMMENT '被回复的评论id',replay_uid int(10) DEFAULT NULL COMMENT '被回复的评论的uid',is_deleted tinyint(1) DEFAULT NULL,create_time datetime DEFAULT NULL,PRIMARY KEY (id),KEY mid (mid) USING BTREE,KEY uid (uid) USING BTREE,KEY parent_id (parent_id) USING BTREE,KEY replay_comment_id (reply_comment_id) USING BTREE) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='评论表';

好友关系表

CREATE TABLE friend_relation (id int(10) NOT NULL,uid int(10) DEFAULT NULL,frind_uid int(10) DEFAULT NULL,is_deleted tinyint(1) DEFAULT NULL,create_time datetime DEFAULT NULL,PRIMARY KEY (id),KEY uid (uid) USING BTREE,) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='好友关系表';

表设计

使用说明

1.新增

发朋友圈

场景一、生日到了,老公精心准备,我感到心情小好,发了一条朋友圈抒发一下感情,记录生活点滴。

我的照片和抒情文字  -insert->  user_message表

我的时间轴 -insert-> user_friend_timeline表

我的好友们时间轴 -insert-> user_friend_timeline表

评论回复

场景二、好友们翻看自己朋友圈的时间轴,发现了我的动态,纷纷评论表示祝福。

评论文字 -insert-> ussr_comment表(无需记录回复内容:reply_comment_id、reply_uid)

场景三、我看到好友们的祝福甚是开心,赶紧回复一下联络联络感情。

回复文字 -insert-> ussr_comment表(需要记录回复内容:reply_comment_id、reply_uid)

添加好友

场景四、家中七大姑八大姨慢慢跟上潮流,开始使用微信,想到我的生日到了,加个好友也祝福一下。

彼此建立好友关系,各自插入一条好友维护数据 -insert-> friend_relation表

彼此各自朋友圈发布信息同步  -insert-> user_friend_timeline表

2.查询

场景五、朋友圈里大家交流的差不多了,我也来刷刷贵圈还有什么新鲜事儿。

入参:自己的uid -select-> friend_relations表 未删除的所有好友(friend_uid)

入参:自己的uid,friend_uid -select-> user_friend_timeline表 uid为自己&muid包含在uid,friend_uid中所有未删除数据(按照时间倒叙显示,获取mid)

入参:查询到的mid列表 -select-> user_message表 所有未删除数据(再次过滤,获取mid)

入参:再次过滤的mid列表 -select-> user_comment表 再次过滤的mid列表&只有评论里的uid 和 reply_uid (或为空)都是自己好友的未删除数据才展示出来

拼接user_message 和user_comment然后返回给时间轴展示

3.删除 / 修改

场景六、突然刷到一个好友发了一条伤感主题的朋友圈消息,瞬间好多朋友给予暖心的安慰。其中有一条评论略失妥当,该条评论的回复更是有过之无不及,最后激怒了圈主。于是有了这样一系列操作:

1.回复人删除回复内容

入参:user_comment表的id -update-> user_comment表 id与入参一致则将is_deleted置为1(一条)

2.评论人删除不当评论

入参:user_comment表的id -update-> user_comment表 id或者reply_comment_id与入参一致则将is_deleted置为1(评论及对应回复,多条同时被删除)

3.圈主删除所发的主题

入参:user_message表的id -update-> user_message表 id与入参一致则将is_deleted置为1(一条)

入参:user_message表的id -update-> user_friend_timeline表 message_id与入参一致则将is_deleted置为1(一条)

入参:user_message表的id -update-> user_comment表 message_id与入参一致则将is_deleted置为1(多条)

4.圈主删除两位好友

friend_relation表:圈主与两个好友的friend_relation表的的关联关系互相被逻辑删除

user_friend_timeline表:彼此各自朋友圈发布信息同步逻辑删  -update> user_friend_timeline表

TODO

记个待办,刷朋友圈的性能问题分析,敬请期待... ...

微信朋友圈评论功能设计实现相关推荐

  1. android 仿微信朋友圈 评论,2020年android 仿微信朋友圈 评论

    2020年android 仿微信朋友圈 评论 1.如果有人问我:那些艰难的岁月你是怎么熬过来的?我想我只有一句话回答:我有一种强大的精神力量支撑着我,这种力量名字叫"想死又不敢" ...

  2. android 评论发表情,安卓手机怎么在微信朋友圈评论发表情包?

    核心提示:目前,微信的最新版本更新了朋友圈评论表情包的功能,也就是说用户可以朋友圈开启"斗图模式"啦!但是有些安卓系统的小伙伴发现,自己更新了微信后似乎也不能在朋友圈发评论,具体是 ...

  3. html仿微信评论输入框,简单仿微信朋友圈评论功能

    [实例简介] 简单实现了微信朋友圈评论的功能,被点击的评论能够随着输入框高度的改变而改变位置! [实例截图] [核心代码] 简单仿微信朋友圈评论 └── TalkInTalk ├── AndroidM ...

  4. 微信朋友圈评论/回复/cell/键盘谈起

    微信朋友圈评论功能的细节考虑及实现   微信朋友圈回复tableview iOS 实现微信朋友圈评论回复功能(一) 转载于:https://www.cnblogs.com/daxueshan/p/10 ...

  5. TextView实现点击部分文字跳转,实现微信朋友圈评论Item的显示效果

    大家都熟悉微信朋友圈或者是贴吧里的某一条评论, 比如: 小A回复小B:大吉大利,今晚吃鸡,哈哈哈. 点击小A和小B可以跳转到用户页面,点击整个Item就会响应其它事件,比如弹出键盘输入回复. 要实现这 ...

  6. 朋友圈评论发html,微信评论怎么发图片(微信朋友圈评论可以发表情包啦)

    今天你的朋友圈被表情包淹没了没? 啊费一打开朋友圈 几乎全都在"索求"表情包 看到各种沙雕表情包,默默收集了一波哈哈哈 不止朋友圈,就连微博都上了热搜 一波表情包的热潮刷爆了网上 ...

  7. 微信朋友圈/评论/点赞/搜索/购物车

    微信朋友圈 功能:是否可以正常发布,是否可以单独编辑文字,是否可以单独发布图片,是否可以文字和图片一起发送,是否可以选择发布的范围,发布后下面是否可以正常评论,是否可以单独回复每一条评论,是否可以删除 ...

  8. php mysql仿微信朋友圈评论表设计_PHP仿qq空间或朋友圈发布动态、评论动态、回复评论、删除动态或评论的功能(上)...

    我们大部分人都发过动态,想必都知道发动态.回复评论.删除动态的整个过程,那么作为初学者,要模仿这些功能有点复杂的,最起码表的关系得弄清楚~~ 先把思路理一下: (1)用户登录,用session读取当前 ...

  9. 高仿微信朋友圈评论popwindow

    最近在工作中用到了评论和赞的功能,在网上搜了一下有类似的Demo,个人觉得不太好用,就稍微的做了一下优化和修改. 这个功能用到了Popwindow,也就是可以自己定义动画的弹出框. 首先是popwin ...

  10. 评论安装_朋友圈怎么语音评论?微信朋友圈语音评论捷径下载安装使用教程

    微信朋友圈评论默认是不支持图片和语音评论的,不过可以通过一些链接的方式间接实现.之前小编为大家分享过"iPhone微信朋友圈图片评论方法",今天借助类似的原理,为大家分享一下微信朋 ...

最新文章

  1. 硬盘自检死机解决办法
  2. Java PECS
  3. environment variable
  4. 购物车的收货地址js php,Javascript实现购物车功能的详细代码
  5. python package 的两种组织方式
  6. 微信发ascii_微信公众平台开发(107) 分享到朋友圈和发送给好友
  7. Martin Odersky Scala编程公开课 第三周作业
  8. android 获取手机a标签页,Android关于对Jsoup抓取a标签和br标签之间的解决办法...
  9. 《运营之光》-- 学习笔记(二)
  10. Python 代码使用pdb调试技巧
  11. JavaScript前端数据呈现——Table会拐弯的column,数据分多列展示
  12. one algorithm a day keeps the doctor away -- BubbleSort
  13. iOS 苹果官方Demo合集
  14. 谷歌突然宣布!百度、滴滴懵了
  15. 通过 Teardrop 攻击程序学习自制 IP 包及了解包的结构
  16. win10、win7系统64位oracle11g安装教程以及32位plsql连接教程
  17. Nodejs base64编码与解码
  18. ADAS测试设备—惯性导航系统简介
  19. Codeforces Round #549 (Div. 2) D. The Beatles
  20. iPhone 5 创建应用程序

热门文章

  1. Go语言圣经阅读-第八周
  2. c语言程序实验报告范文,C语言实验报告范文
  3. PHP生成二维码与识别二维码,jq生成二维码
  4. SpringBoot 中如何使用JSP页面开发?
  5. c语言图形编程.pdf,C语言图形编程
  6. easydarwin 安装_EasyDarwin 笔记
  7. easydarwin php,EasyDarwin返回401 Unauthorized解决方法
  8. 计算机一级考试创建快捷方式,九月计算机一级MSOffice考试试题
  9. 12306网上买火车票怎么选择上中下铺
  10. matlab 异常,Matlab 2017b 异常信息。程序奔溃。