1.用户操作行为记录
- 所用技术亮点: MongoDB
- 为什么使用MongoDB? 点赞,不喜欢,收藏,阅读等行为数据符合”三高行为”(高并发读写,高效率存储和访问,数据库的高可扩展性和高可用性),MongoDB正好符合这种需求,而且行为数据的意义并不像传统数据那么重要,即使丢失,影响也并不是特别巨大,综上所述我们项目对于行为数据的存储使用MongoDB
设计思路: 建立一个总的行为实体表,用其id作为与其他行为表关联的依据,再分别建立,喜欢行为表,阅读行为表,不喜欢行为表和收藏行为表
1.1 点赞行为
实现思路:
1. 校验参数
1. 点赞需要登录
1. 校验文章id不能为空 使用注解校验
1. 校验点赞方式 只能是0 或 1 使用注解校验
2. 根据当前登录用户id查询行为实体对象
2. 如果是点赞操作 判断是否已经点过赞
2. 没有点过赞则 像mongo点赞集合中 添加点赞数据
2. 如果是取消点赞操作 在mongo点赞集合中 删除对应点赞数据
1.2 阅读行为
实现思路:
1. 校验参数 文章id必须传
1. 根据登录用户id 或 设备id查询行为实体数据(阅读操作可不登录)
1. 判断阅读行为是否存在
1. 存在 将阅读行为的count字段加1 并修改
1. 不存在 创建阅读行为 并初始化count字段值为 1
1.3 不喜欢行为
实现思路:
1. 校验参数 文章id不能为空 需要登录 不喜欢类型取值为 0 或 1
1. 查询行为实体数据
1. 如果是 不喜欢操作 查询不喜欢行为是否存在
1. 如果不存在 添加不喜欢行为
1. 如果是 取消不喜欢操作 删除对应的不喜欢数据
1.4 收藏行为
实现思路:
1. 校验参数 需要登录 文章id不能null 操作类型 0 或 1
1. 根据userId查询行为实体数据
1. 如果是收藏操作 判断是否已经收藏
1. 如果未收藏 新增收藏行为
1. 如果是取消收藏操作 删除收藏行为
2.app文章关系展示功能
实现思路:
1. 判断用户是否登录
1. 未登录 直接将 4种行为 均返回false
1. 如果登录
1. 查询行为实体
1. 根据行为实体 文章ID查询 是否点赞
1. 根据行为实体 文章ID查询 是否不喜欢
1. 根据行为实体 文章ID查询 是否收藏
4. 更具登录用户id 去redis中查询是否关注该作者
4. 封装结果 返回