项目持续更新中:

仿抖音短视频APP专栏

目录

系统消息入库保存

MongoDB分页查询系统消息列表

删除系统消息


系统消息入库保存

这里还剩下最后一个点赞评论没有完成

这里如果点赞了你的评论,你们视频的封面是会被传回来的

找到CommentController的like路由

需要注入两个Service:

这里我们复制一下之前写好的代码,再进行一下修改:

这里我们需要获得一个vlogId,此处是没有的,所以我们要编写一个接口去获取:

实现:

随后我们就能通过commentService去调用了:

 //系统消息:点赞评论Comment comment =commentService.getComment(commentId);Vlog vlog = vlogService.getVlog(comment.getVlogId());Map msgContent = new HashMap();msgContent.put("vlogId",vlog.getId());msgContent.put("vlogCover",vlog.getCover());msgContent.put("commentId",commentId);msgService.createMsg(userId,comment.getCommentUserId(),MessageEnum.LIKE_COMMENT.type,msgContent);

编写完之后,我们做一个测试,点赞评论的和点赞回复的

然后到我们的MongoDB查看

MongoDB分页查询系统消息列表

在完成系统消息发送的操作之后,我们在消息界面需要有一个查询操作 ,并且查询是有分页的

我们先来写我们的service层:

在这里我们通过实现Repository,自定义条件查询

接着在Service实现中:

这里其实还需要做一个判断,判断我之前是否关注过它,如果没有这里会有一个回粉的标志

我们只需要在扩展在MO在的字段isFriend,

 @Overridepublic List<MessageMO> queryList(String toUserId, Integer page, Integer pageSize) {Pageable pageable = (Pageable) PageRequest.of(page,pageSize,Sort.Direction.DESC,"CreateTime");List<MessageMO> list = messageRepository.findAllByToUserIdOrderByCreateTimeDesc(toUserId,pageable);for(MessageMO msg: list){//如果类型是关注消息,则需要查询我之前是否关注过他,用于在前端标记“互粉”if(msg.getMsgType() != null &&msg.getMsgType() == MessageEnum.FOLLOW_YOU.type){Map map =   msg.getMsgContent();if(map == null){map = new HashMap();}String relationship = redis.get(REDIS_FANS_AND_VLOGGER_RELATIONSHIP+":"+msg.getToUserId()+":"+msg.getFromUserId());if(StringUtils.isNotBlank(relationship)&&relationship.equalsIgnoreCase("1")){map.put("isFriend",true);}else {map.put("isFriend",false);}msg.setMsgContent(map);}}return list;}

这里前端我们也可以查看一下

这里就可以构建我们后端的接口

我们在后端构建一个MsgController:

@Slf4j
@Api(tags = "MsgController 消息功能模块接口")
@RequestMapping("Msg")
@RestController
public class MsgController {@Autowiredprivate MsgService msgService;@GetMapping("list")public GraceJSONResult list(@RequestParam String userId,@RequestParam Integer page,@RequestParam Integer pageSize){//mongoDB 从0分页,区别于数据库if(page == null){page = COMMON_START_PAGE_ZERO;}if(pageSize == null){pageSize=COMMON_PAGE_SIZE;}List<MessageMO> list = msgService.queryList(userId, page, pageSize);return GraceJSONResult.ok(list);}}

启动测试:

删除系统消息

我们可以先思考一下删除可以从哪里出发

第一种,我们可以在我们的消息页长按或者右滑进行一个删除

第二种和我们用户的行为绑定在一起,如果我取关你,那么就把这条关注消息给去掉

两种消息的触发删除都可以,大家可以自己去尝试一下。

我们这里可以使用长按删除,方法大家自己尝试一下。

截至目前为止,基础版的仿抖音短视频APP的制作已经到了尾声,该专栏的第一篇到现在,从零开始搭建项目,到编写我们的代码,完成测试,历时了一个月左右,那么后期我会更新进阶版本,希望将它上传到服务器。

以往代码有疑问,不懂的地方都可以私信我。想要源代码的友友们也可以私聊我~

从零开始搭建仿抖音短视频APP-后端消息业务模块开发(2)-基础版完结篇相关推荐

  1. 从零开始搭建仿抖音短视频APP-开发用户业务模块(3)

    项目持续更新中: 仿抖音短视频APP专栏 目录 注册登录-BO接受前端参数验证 对BO校验进行统一封装 开发用户是否存在 开发创建用户Service 实现短信注册登录与分布式会话 注册登录-BO接受前 ...

  2. 从零开始搭建仿抖音短视频APP-开发用户业务模块(2)

    项目持续创作中: 仿抖音短视频APP项目专栏 目录 安装redis6.0缓存中间件 整合Redis并存储验证码 拦截器限制60s短信发送 优雅异常封装返回拦截器异常 安装redis6.0缓存中间件 需 ...

  3. 从零开始搭建仿抖音短视频APP--开发用户业务模块(4)

    项目持续更新中: 仿抖音短视频APP专栏 目录 用户退出登录 开发查询用户信息接口 统一封装修改用户信息(一) 统一封装修改用户信息(二) 用户退出登录 此时还没有实现退出登录. 在前端中,我们找到l ...

  4. 从零开始搭建仿抖音短视频APP--开发用户业务模块(1)

    目录 手机号--一键注册登录流程 构建流程图 用户登录流程 手机号一键注册登录流程图 腾讯云短信 SpringBoot集成腾讯云短信 完善发送短信接口 手机号--一键注册登录流程 构建流程图 用户登录 ...

  5. 从零开始搭建仿抖音短视频App-前后端开发模式,前端框架的选择、前端项目搭建

    目录 前后端开发模式 传统JavaWeb开发模式 前后端分离模式​编辑 前端框架的选择-UniApp介绍 内网互通原则 运行到iphone与Android 前后端开发模式 传统JavaWeb开发模式 ...

  6. 从零开始搭建仿抖音短视频APP--后端消息数据库存储入库选型和MongoBD概述

    目录 消息数据存储入库选型 重要数据入库选型 非重要数据库入库选型 MongoDB的概述 MongoDB术语 MongoDB数据结构 消息数据存储入库选型 重要数据入库选型 重要数据比方说我们在这边举 ...

  7. 从零开始搭建仿抖音短视频APP-构建后端项目

    项目持续创作中... ​​​​​​仿抖音短视频APP项目专栏 目录 聚合工程 构建父工程 构建子工程 构建接口工程并且暴露api接口 优雅Restful相应封装 Lombok与多环境profile 数 ...

  8. 从零开始搭建仿抖音短视频APP-后端开发消息业务模块(1)

    项目持续更新中: 仿抖音短视频APP专栏 目录 保存系统消息到MongoDB 系统消息入库保存-关注 系统消息入库保存-点赞短视频 系统消息入库保存-评论与回复 保存系统消息到MongoDB 我们把m ...

  9. 从零开始搭建仿抖音短视频APP-后端开发短视频业务模块(2)

    项目持续更新中: 仿抖音短视频APP 目录 实现数据层mybatis自定义mapper与sql 查询短视频列表api 实现下拉刷新和分页功能 实现数据层mybatis自定义mapper与sql 在数据 ...

最新文章

  1. 如何使用Spring Cloud实现高并发微服务设计
  2. 死锁产生的原因及四个必要条件
  3. gcc-linux6.3,[环境配置]Ubuntu16.04下编译安装gcc6.3.0
  4. 学成在线--7.CMS页面管理开发(异常处理)
  5. Android 5.0 API 的变化——开发人员注意
  6. 解ns方程_流体动力学NS方程的哲学缺陷
  7. idea maven工程显示灰色(不亮)
  8. web 导出文件时如何让用户选择路径_Visual Paradigm 教程[UML]:如何绘制动画UML活动图?...
  9. 技术人的危机-非理性的繁荣
  10. 【To Understand !!! DP or 递归】LeetCode 87. Scramble String
  11. 121、买卖股票的最佳时机(python)
  12. delphi socket 怎样把接收到的二进制数据转换成字符串显示_【连载电子书二】Python基础数据类型详解(上)...
  13. 加上华为mate30系列,9月还有5场新机发布会,你更期待哪场
  14. JS怎么唤醒高德导航
  15. python3 pycharm 抓取app 上的数据
  16. Java复制一个文件到新文件夹中,并对新文件重命名
  17. OpenStack 虚拟机冷/热迁移功能实践与流程分析
  18. raid的种类、特点、区别
  19. Java开发工程师面试总结
  20. 防监听 俄启用新型信息安全系统

热门文章

  1. 换个好看舒服的jupter notebook风格
  2. 字节跳动Go 语言面试会问哪些问题?
  3. 如何固定输出每行打印的个数
  4. 暗黑精灵4黑苹果安装纪录
  5. STM32F103C8T6连接LD3320语音识别模块(USART)
  6. 中国天气网全城市代码
  7. 一文了解RT8059GJ5
  8. 盘点5大高频移动端场景,你不会用就落后了(内附模板下载)
  9. 【二】分布式训练---参数服务器训练(飞桨paddle1.8)
  10. Java实现哥德巴赫猜想