热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

朋友圈的设计及实现。

最近项目需求需要模拟微信的朋友圈功能,实现可以发送图文消息,好友可以查看,满足添加新的好友之后,可以在朋友圈中刷新到好友的消息,看了许多文章,琢磨出来一套流程。这里只记录一下我的实现思路,并不贴

最近项目需求需要模拟微信的朋友圈功能,实现可以发送图文消息,好友可以查看,满足添加新的好友之后,可以在朋友圈中刷新到好友的消息,看了许多文章,琢磨出来一套流程。这里只记录一下我的实现思路,并不贴上实际的代码。

核心结构有三张表:

#消息表
CREATE TABLE `t_friend_circle_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`) )

消息表很好理解,存储用户发送的内容,图片存地址。
utf8mb4格式可以存储emoji表情,具体可以参照之前的一篇文章mysql支持emjoy

#时间轴表
CREATE TABLE `t_friend_circle_timeline` ( `id` bigint(15) NOT NULL AUTO_INCREMENT, `uid` bigint(15) DEFAULT NULL COMMENT '用户id', `fcmid` bigint(15) DEFAULT NULL COMMENT '朋友圈信息id', `is_own` int(1) DEFAULT '0' COMMENT '是否是自己的', `create_time` datetime DEFAULT NULL COMMENT '创建日期', PRIMARY KEY (`id`) ) 

时间轴表在朋友圈中是最关键的,因为当用户去拉取好友圈的时候,查询的就是本表。

#评论表
CREATE TABLE `t_friend_circle_comment` ( `id` bigint(15) NOT NULL AUTO_INCREMENT, `fcmid` bigint(15) DEFAULT NULL COMMENT '朋友圈信息id', `uid` bigint(15) DEFAULT NULL COMMENT '用户id', `content` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL, `create_time` datetime DEFAULT NULL COMMENT '创建日期', `like_count` int(10) DEFAULT '0' COMMENT '点赞数', PRIMARY KEY (`id`) ) 

评论表,没有什么好解释的。。

好友圈逻辑

  • 用户A与用户B为好友关系
  • 用户A在朋友圈中发布一条消息,t_friend_circle_message写入一条数据
  • t_friend_circle_timeline中增加一条数据,uid设置A,is_own设置为1,表示在A的时间轴中增加一条自己的消息。
  • 查询用户A的好友,查到用户B
  • t_friend_circle_timeline中增加一条数据,uid设置B,is_own设置为0,表示在B的时间轴中增加一条好友的消息。
  • 用户A,添加用户C为好友,触发操作INSERT INTO t_friend_circle_timeline (uid,fcmid,is_own,create_time)
    SELECT #{uid},
    id,0,create_time FROM t_friend_circle_message WHERE uid = #{fid};把好友C的消息添加到自己的时间轴中,再把用户A的消息添加到好友C的时间轴中,同步互加好友的朋友圈时间轴。

推荐阅读
author-avatar
111222
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有