如何创建好友动态

转载 2013年12月04日 17:20:34

好友动态在各大社交网站中基本上已经是标配了,而且一般都会显示在用户登录之后的默认首页上,这种做法的确方便用户了解网站和自己朋友的一些动态。设计上应该如何实现呢?Google 了一些资料,整理在下面,欢迎有实际经验的朋友指点!

用户看到的可能是三种情况:

  • 我的动态
  • 好友的动态
  • 全站的动态

朋友动态这种信息,根据网站的实际情况需要考虑几个问题:

1、是否只让用户看到最新n条?(海内的最新动态数量是固定的,采用先进先出原则,用户只能看到最新的n条;而UCH则可以每页150条允许用户翻页 )

2、用户增减好友后,朋友动态是否能够立刻体现出变化?(在海内,我如果在好友名单中删除一个人,好友动态还会有他的信息,只是不新增他的信息而已;而UCH里面,他的信息立刻消失。加一个人为朋友,也是一样的效果。 )

3、用户能否删除自己产生的动态?

4、阅读者是否可以删除其朋友动态中某一条动态?(在校内用户可以删除某一条朋友动态,在UCH用户可以屏蔽某人或者所有人的某类动态,在海内你只能看不能屏蔽 )

5、动态是否有阅读权限?

6、动态所指向的信息被修改、删除,动态是否要同步变化?(如果你修改了日志的标题,校内网的动态是不变的,而海内是变化的)

最简单的实现方式是将所有事件记录到一张表里:
Event
- id
- user_id
- type
- data
- created_at
这样做比较适合用于显示全站更新,针对用户推送时,缺点明显:用户加好友后会显示出成为好友前的所有动态,删好友后之前的所有动态也看不到了。另外用户不能对活动进行删除,因为每个活动消息只有一份拷贝。
data 中可以用 json 来记录用户的动作,比如:
{
photoId
:
2089
,
 photoName
:
A trip to the beach
}


PS: QQ新版的消息中心,对于同一好友下不同类型的操作都能合并。这时候如果动态表包括有type的字段,就不太好对付了,可以改成:

data中保存用户的操作日志,也就是本贴讨论的重点。我采用的方法是前面有同学提到json方式。 如:

{
“blog”:[  {"id":1,"title":"安利台湾25周年庆"} ],
“photo”:[  {"id":1,"title":"51韶关游"} ]
}

其中blog、photo代表某种应用的标识,可以无限添加。只要显示的时候能分析就行。里面的id和title就是内容 的属性,结构自定。至于新旧操作怎么合并,我是采取对event表的插入操作进行拦截实现的——我定义会员所有的操作均调用event的插入方法。在拦截 函数中,先select该会员的记录。如返回为空,则直接插入新记录。如返回记录,则将待插入数据与原数据进行合并。如待插入数据为:

{
“blog”:[  {"id":2,"title":"我是谁"} ],

“share”:[  {"url":"http://www.tudou.com","title ":"土豆网 - 视频 - 播客 - 每个人都是生活的导演"} ]
}

则合并后的content为:

{
“blog”:[  {"id":2,"title":"我是谁"}  {"id":1,"title":"安利台湾25周年庆"}, ],

“photo”:[  {"id":1,"title":"51韶关游"} ],

“share”:[  {"url":"http://www.tudou.com","title ":"土豆网 - 视频 - 播客 - 每个人都是生活的导演"} ]
}

然后使用update方法即可。

为解决上面的问题,可以添加一个 EventUser 表,当用户发生动作后,用户的动作写在 Event 表中,给该用户的所有好友发一个消息,记录在 EventUser 表中
EventUser
- id
- event_id
- friend_user_id
- created_at
需要注意的是一定时间内完成的某些动作,对 Event 表应该更新,而不是插入。比如同时加N个好友可以合并到一个 event 中。另外当用户的动作被撤销后,也要考虑对应的 event 如何撤销。比如用户传了一张照片,然后又删掉了,这时如果传照片可以 event 没删掉,用户在动态列表中还会看到,XXX上传了一张照片,但点进去,照片已经不存在了。
优化:
Event 表可以做 mem cache
EventUser 表可以水平切分,分到多张表中,可以定期清除
写 EventUser 表的操作可以抛个消息,异步操作。或者先写到 mem cache 里,到一定条件时再持久化。
references:

人人网查看非好友状态

转自 http://blog.csdn.net/ituff/article/details/12091269 想看某些人的状态,但是ta又不是我的好友,也不敢申请加为好友 只好这么办了: ...
  • chao56789
  • chao56789
  • 2014年12月14日 01:20
  • 855

怎么让有些QQ好友的动态不在自己空间里显示

1、登录QQ空间,点右上方“个人中心”→鼠标移到“好友动态”如下图: 单击“好友动态”,进入下图: 在单击,设置按钮,进入下图: 点击添加,在好友列表中选择不想显示人即可。 2、可以直接在...
  • xunzaosiyecao
  • xunzaosiyecao
  • 2014年03月09日 11:20
  • 1775

Android社交类APP动态详情代码实现通用模板

 Android社交类APP动态详情代码实现通用模板 Android平台上一些比较流行的社交类APP比如微信、陌陌等,都有动态详情页,在该页面,用户发表的动态详情,好友可以发起评论、点赞等...
  • zhangphil
  • zhangphil
  • 2015年09月16日 14:42
  • 2041

Android基础:代码中实现界面动态布局

xmlns:tools="http://schemas.android.com/tools"     android:layout_width="match_parent"     android...
  • true100
  • true100
  • 2015年04月14日 10:45
  • 614

openfire-好友管理实现好友添加及分组管理

openfire-好友管理实现好友添加及分组管理  (2015-04-17 08:16:16) 转载▼ 标签:  杂谈   转载本站...
  • w690333243
  • w690333243
  • 2017年02月26日 11:20
  • 1149

CSDN怎么添加好友啊

发现有位仁兄,写了好多JAVA文章,想添加为好友,可是找了好久了,都没办法把他加为好友。问题是找不到一个“添加为好友”的按钮在哪个地方, 进入就是他得主页http://blog.csdn.net/a...
  • liguorongdream
  • liguorongdream
  • 2011年11月09日 16:22
  • 3020

openfire(服务器)spark(客户端)添加好友bug

原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://blog.csdn.net/love254443233/article/detai...
  • love254443233
  • love254443233
  • 2012年08月20日 12:12
  • 2798

网站添加好友功能

这几天把自己的个人主页给完成了。 登陆之后会显示自己的个人资料,以及别人给我自己留的言,播放视频,修改自己的个人资料,以及爬虫自己博客目录(还没实现) 但是留言问题的时候,...
  • qq442270636
  • qq442270636
  • 2017年05月27日 22:48
  • 334

手机型号修改 修改手机型号,在QQ空间想朋友展示个性化的手机型号

最近突然想到有没有一款软件能否修改自己的手机型号,然后在QQ空间里面显示自己设置的手机型号(纯属装逼,勿喷)。去豌豆荚搜 索,还真有那么几款软件,下了几个修改都没有成功,看评论发现还有安装后变砖的评论...
  • qq943574281
  • qq943574281
  • 2014年12月06日 12:06
  • 638

android 仿QQ好友动态 title滑动渐变

最近QQ更新了qq空间消息列表。天天动听也使用了那效果。而且越来越多的android应用都在使用,咱们不能落后啊! 得紧跟时代的步伐,不然就out了。 看起来不错分享下咯! 首先贴一下效果图,因为gi...
  • seven2729
  • seven2729
  • 2015年09月11日 14:51
  • 2770
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:如何创建好友动态
举报原因:
原因补充:

(最多只允许输入30个字)