诗歌社区模块设计
根据产品原型,初步划分出以下功能模块。
用户
数据:
- 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连接