1.用户操作行为记录

  • 所用技术亮点: MongoDB
  • 为什么使用MongoDB? 点赞,不喜欢,收藏,阅读等行为数据符合”三高行为”(高并发读写,高效率存储和访问,数据库的高可扩展性和高可用性),MongoDB正好符合这种需求,而且行为数据的意义并不像传统数据那么重要,即使丢失,影响也并不是特别巨大,综上所述我们项目对于行为数据的存储使用MongoDB
  • 设计思路: 建立一个总的行为实体表,用其id作为与其他行为表关联的依据,再分别建立,喜欢行为表,阅读行为表,不喜欢行为表和收藏行为表

    1.1 点赞行为

  • 实现思路:

    1. 1. 校验参数
    2. 1. 点赞需要登录
    3. 1. 校验文章id不能为空 使用注解校验
    4. 1. 校验点赞方式 只能是0 1 使用注解校验
    5. 2. 根据当前登录用户id查询行为实体对象
    6. 2. 如果是点赞操作 判断是否已经点过赞
    7. 2. 没有点过赞则 mongo点赞集合中 添加点赞数据
    8. 2. 如果是取消点赞操作 mongo点赞集合中 删除对应点赞数据

    1.2 阅读行为

  • 实现思路:

    1. 1. 校验参数 文章id必须传
    2. 1. 根据登录用户id 设备id查询行为实体数据(阅读操作可不登录)
    3. 1. 判断阅读行为是否存在
    4. 1. 存在 将阅读行为的count字段加1 并修改
    5. 1. 不存在 创建阅读行为 并初始化count字段值为 1

    1.3 不喜欢行为

  • 实现思路:

    1. 1. 校验参数 文章id不能为空 需要登录 不喜欢类型取值为 0 1
    2. 1. 查询行为实体数据
    3. 1. 如果是 不喜欢操作 查询不喜欢行为是否存在
    4. 1. 如果不存在 添加不喜欢行为
    5. 1. 如果是 取消不喜欢操作 删除对应的不喜欢数据

    1.4 收藏行为

  • 实现思路:

    1. 1. 校验参数 需要登录 文章id不能null 操作类型 0 1
    2. 1. 根据userId查询行为实体数据
    3. 1. 如果是收藏操作 判断是否已经收藏
    4. 1. 如果未收藏 新增收藏行为
    5. 1. 如果是取消收藏操作 删除收藏行为

    2.app文章关系展示功能

  • 实现思路:

    1. 1. 判断用户是否登录
    2. 1. 未登录 直接将 4种行为 均返回false
    3. 1. 如果登录
    4. 1. 查询行为实体
    5. 1. 根据行为实体 文章ID查询 是否点赞
    6. 1. 根据行为实体 文章ID查询 是否不喜欢
    7. 1. 根据行为实体 文章ID查询 是否收藏
    8. 4. 更具登录用户id redis中查询是否关注该作者
    9. 4. 封装结果 返回