从零开始搭建仿抖音短视频APP-后端消息业务模块开发(2)-基础版完结篇
项目持续更新中:
仿抖音短视频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)-基础版完结篇相关推荐
- 从零开始搭建仿抖音短视频APP-开发用户业务模块(3)
项目持续更新中: 仿抖音短视频APP专栏 目录 注册登录-BO接受前端参数验证 对BO校验进行统一封装 开发用户是否存在 开发创建用户Service 实现短信注册登录与分布式会话 注册登录-BO接受前 ...
- 从零开始搭建仿抖音短视频APP-开发用户业务模块(2)
项目持续创作中: 仿抖音短视频APP项目专栏 目录 安装redis6.0缓存中间件 整合Redis并存储验证码 拦截器限制60s短信发送 优雅异常封装返回拦截器异常 安装redis6.0缓存中间件 需 ...
- 从零开始搭建仿抖音短视频APP--开发用户业务模块(4)
项目持续更新中: 仿抖音短视频APP专栏 目录 用户退出登录 开发查询用户信息接口 统一封装修改用户信息(一) 统一封装修改用户信息(二) 用户退出登录 此时还没有实现退出登录. 在前端中,我们找到l ...
- 从零开始搭建仿抖音短视频APP--开发用户业务模块(1)
目录 手机号--一键注册登录流程 构建流程图 用户登录流程 手机号一键注册登录流程图 腾讯云短信 SpringBoot集成腾讯云短信 完善发送短信接口 手机号--一键注册登录流程 构建流程图 用户登录 ...
- 从零开始搭建仿抖音短视频App-前后端开发模式,前端框架的选择、前端项目搭建
目录 前后端开发模式 传统JavaWeb开发模式 前后端分离模式编辑 前端框架的选择-UniApp介绍 内网互通原则 运行到iphone与Android 前后端开发模式 传统JavaWeb开发模式 ...
- 从零开始搭建仿抖音短视频APP--后端消息数据库存储入库选型和MongoBD概述
目录 消息数据存储入库选型 重要数据入库选型 非重要数据库入库选型 MongoDB的概述 MongoDB术语 MongoDB数据结构 消息数据存储入库选型 重要数据入库选型 重要数据比方说我们在这边举 ...
- 从零开始搭建仿抖音短视频APP-构建后端项目
项目持续创作中... 仿抖音短视频APP项目专栏 目录 聚合工程 构建父工程 构建子工程 构建接口工程并且暴露api接口 优雅Restful相应封装 Lombok与多环境profile 数 ...
- 从零开始搭建仿抖音短视频APP-后端开发消息业务模块(1)
项目持续更新中: 仿抖音短视频APP专栏 目录 保存系统消息到MongoDB 系统消息入库保存-关注 系统消息入库保存-点赞短视频 系统消息入库保存-评论与回复 保存系统消息到MongoDB 我们把m ...
- 从零开始搭建仿抖音短视频APP-后端开发短视频业务模块(2)
项目持续更新中: 仿抖音短视频APP 目录 实现数据层mybatis自定义mapper与sql 查询短视频列表api 实现下拉刷新和分页功能 实现数据层mybatis自定义mapper与sql 在数据 ...
最新文章
- 如何使用Spring Cloud实现高并发微服务设计
- 死锁产生的原因及四个必要条件
- gcc-linux6.3,[环境配置]Ubuntu16.04下编译安装gcc6.3.0
- 学成在线--7.CMS页面管理开发(异常处理)
- Android 5.0 API 的变化——开发人员注意
- 解ns方程_流体动力学NS方程的哲学缺陷
- idea maven工程显示灰色(不亮)
- web 导出文件时如何让用户选择路径_Visual Paradigm 教程[UML]:如何绘制动画UML活动图?...
- 技术人的危机-非理性的繁荣
- 【To Understand !!! DP or 递归】LeetCode 87. Scramble String
- 121、买卖股票的最佳时机(python)
- delphi socket 怎样把接收到的二进制数据转换成字符串显示_【连载电子书二】Python基础数据类型详解(上)...
- 加上华为mate30系列,9月还有5场新机发布会,你更期待哪场
- JS怎么唤醒高德导航
- python3 pycharm 抓取app 上的数据
- Java复制一个文件到新文件夹中,并对新文件重命名
- OpenStack 虚拟机冷/热迁移功能实践与流程分析
- raid的种类、特点、区别
- Java开发工程师面试总结
- 防监听 俄启用新型信息安全系统