LOADING STUFF...

基于Laravel实现的用户动态模块开发

技术教程2小时前发布 北陌
18 0 0

基于Laravel实现的用户动态模块开发

前言

相信大家都知道,几乎所有的社区应用都有用户动态这个部分,用户可以通过好友动态获能取到更多感兴趣的内容,从而提高社区活跃度和用户粘性。它的实现相对来讲比普通的内容发布要复杂一些,主要体现在内容多样性上。

为了解决这个问题,我们得把这些不同类型的内容抽象,提取共性,使用相同的结构来处理,开发起来就会简单很多。

概念抽象

用户动态,顾名思义,动态的产生,就是一系列事件的历史记录,所以首先关注“事件”这个名词,它有哪些属性:

触发者,基于社区所有的事件几乎都是由用户触发的
事件主体,事件的主体信息,例如“xxx发布了文章” 中的 “文章”。
事件属性,事件主体不同,所需要的附加信息也不同,比如事件类型。
发生时间,记录事件产生的时间,当然了在我们的数据库通常记录了所有数据产生的时间。

我们将用户动态抽象成只有 4 个基础属性的结构,就比较容易实现了:

– description 事件描述
– causer_id 或者 user_id 事件触发者
– subject_id 主体 ID
– subject_type 主体类型
– properties 事件附加属性
– created_at 事件产生时间

而主体部分就是 Laravel 里的 morph relation, 多态关联。

怎么展示

我们的动态展示需求通常有以下几种:

我的好友的动态
某个人的动态,通常是个人中心
全部动态,比如 Laravel China 首页的全部动态
动态搜索,比较少见

我最近正在开发 EasyWeChat 新版网站,其中也有用户动态,举例:

xxx 发布了讨论 《请问大家怎么使用 xxx》
xxx 评论了 xxx 的话题 《请问大家怎么使用 xxx》
xxx 回复了 xxx 的评论 “我是按照文档上 …”
xxx 购买了 《微信开发:自定义菜单的使用》
xxx 关注了 xxx

你会发现,基本上每种动态的写法都不一样,所以我们还需要记录一个 “事件类型” ,比如 “关注”、 “发布”、“回复”、“购买”。

然后我们在 blade 或者其它模板引擎的使用中,就可以 switch … case 写法,来应用不同的模板渲染这些样式,比如 blade 中,我的用法:

@switch($activity-

© 版权声明

相关文章

暂无评论

暂无评论...