诗歌社区模块设计

根据产品原型,初步划分出以下功能模块。

用户

数据:

  • User:所有用户,并且设置一个所有人都默认关注的乐书小秘书

行为:CRUD

登录、注册

数据:

  • Token:登录令牌,保存在Redis中

行为:

  • 登录相关的对token的CRUD
  • 第三方登录

邀请

数据:

  • Invitation:用户(user_id reference User.id)与邀请码(invitationCode)之间的关系,用户被谁邀请(invited_by_user_id reference User.id),最终整体形成了树型结构

行为:

  • 邀请注册时创建用户,并且记录Invitation,并根据邀请树推荐好友让新用户关注
  • 根据规则为用户创建自己的邀请码

待定业务规则:

  • 是否强制用户默认关注乐书小秘书?
  • 是否为所有用户创建邀请码?

关注

数据:

  • Follow:单个单向的关注关系,最终整体形成了网结构

行为:CRUD

收藏、点赞、阅读记录

数据:

  • Favorite
  • Like/Vote
  • ReadFootPrint:阅读记录

行为:

  • CRUD

难点:

  • 读写效率/计数查询效率–是否在数据库中设置字段保存计数
  • 考虑引入消息队列,将写入赞、累加赞数量异步化,可以比较好地解决上述问题

待定业务规则:

  • 收藏什么?
  • 匿名点赞、增加阅读次数?采集的点赞、阅读数据在后续的推荐机制中会成为重要依据
  • 只点赞还是可以点踩?取消赞
  • 阅读次数是否重复计算

评论

使用简单线性回复,只是能@某人

数据:

  • Comment

行为:

  • CRUD

支付

仅用第三方支付

打赏

数据:

  • Encourage:打赏记录
  • AccountBalance:赏金余额

行为:

  • CRUD

待定业务规则:

  • 提现规则?是否真的需要在系统中实现这个功能?

诗歌

数据:

  • Article

行为:

  • CRUD

诗集

数据:

  • Collection
  • CollectionItem

行为:

  • CRUD

难点:

  • 诗集与诗是多对多关系,如果直接采用中间表,未来数据条数十分庞大,如果用连字符连id,查询性能极差

诗社

活动

推荐

需要一个管理平台,编辑设置推荐内容

数据:

  • EditorRecommendation

行为:

  • CRUD

管理员

参考喵书的AdminUser-Role-Permission模型

猜你喜欢

数据分析

消息

可能需要做成消息的事件包括但不限于以下类型:

  • 成功邀请到用户
  • 被关注
  • 被收藏
  • 被评论
  • 在评论中被@
  • 被打赏

如果需要实时显示小红点,可能需要消息服务器建立socket连接