从零开始搭建仿抖音短视频APP-后端开发消息业务模块(1)
项目持续更新中:
仿抖音短视频APP专栏
目录
保存系统消息到MongoDB
系统消息入库保存-关注
系统消息入库保存-点赞短视频
系统消息入库保存-评论与回复
保存系统消息到MongoDB
我们把mongoDB整合到Springboot之后,我们需要把映射层面做好。
首先在model创建一个新的对象层面,也就是一个新的包:
我们这里简写为mo
随后创建一个class,与我们当前业务对象保持一致:
package com.imooc.mo;import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.ToString;
import org.springframework.data.annotation.Id;
import org.springframework.data.mongodb.core.mapping.Document;
import org.springframework.data.mongodb.core.mapping.Field;import java.util.Date;
import java.util.Map;@Data
@AllArgsConstructor
@NoArgsConstructor
@ToString
@Document("message")
public class MessageMO {@Idprivate String id;//消息主键id@Field("fromUserId")private String fromUserId;//消息来自的用户id@Field("fromNickId")private String fromNickId;//消息来自的用户昵称@Field("fromFace")private String fromFace;//消息来自的用户头像@Field("toUserId")private String toUserId;//消息来自的用户id@Field("msgType")private Integer msgType;//消息类型 枚举@Field("msgContent")private Map msgContent;//消息内容@Field("createTime")private Date createTime;//消息创建时间
}
有了对象之后,就要争对对象进行操作,也就是我们的业务层:
接着就要实现:
我们以前使用的通用的mapper,在这里我们要和mongoDB做交互,我们这里使用的repository也是需要接口去构建的,我们在数据层中新建一个包,再添加一个:
我们可以把MessageRepository当成一个通用Mapper,因为它集成了很多的方法
import com.imooc.pojo.Users;
import com.imooc.repository.MessageRepository;
import com.imooc.service.MsgService;
import com.imooc.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;import java.util.Date;
import java.util.Map;@Service
public class MsgServiceImpl implements MsgService {@Autowiredprivate MessageRepository messageRepository;@Autowiredprivate UserService userService;@Overridepublic void createMsg(String fromUserId,String toUserId,Integer type,Map msgContent){Users fromUser = userService.getUser(fromUserId);MessageMO messageMO = new MessageMO();messageMO.setFromUserId(fromUserId);messageMO.setFromNickId(fromUser.getNickname());messageMO.setFromFace(fromUser.getFace());messageMO.setToUserId(toUserId);messageMO.setMsgType(type);if(msgContent != null){messageMO.setMsgContent(msgContent);}messageMO.setCreateTime(new Date());messageRepository.save(messageMO);}}
这里就完成了我们业务层的编写。
系统消息入库保存-关注
接下来我们需要把调用的地方做一个完善,基于以下五种我们就要做一个消息的入库
在我们的doFollow关注结束之后,我们要去提示对方用户某某人关注了你
//系统消息:关注 msgService.createMsg(myId,vlogerId, MessageEnum.FOLLOW_YOU.type, null );
我们这里关注的内容是不需要进行展示的,所以在这里只需要传入一个null
随后我们重新启动一下,做一个关注,
刷新一下打开mongoDB
这个就是我们的数据
mongoDB当字段为null时,该数据是不会存在的
系统消息入库保存-点赞短视频
当我们插入数据完成之后,系统也需要发送一条点赞短视频的消息
点赞短视频我们是需要把短视频的封面给得到的
所以我们在设置的时候要传入vlogCover
//系统消息:点赞短视频Vlog vlog = this.getVlog(vlogId);Map msgContent = new HashMap();msgContent.put("vlogId",vlogId);msgContent.put("vlogCover",vlog.getCover());msgService.createMsg(userId,vlog.getVlogerId(),MessageEnum.LIKE_VLOG.type,msgContent);}
private Vlog getVlog(String id){return vlogMapper.selectByPrimaryKey(id);
}
重新启动,测试:
点赞这个视频
随后我们到数据库中看一下
主要是看后方,此时是多了一个数据
系统消息入库保存-评论与回复
这里我们可以将评论和回复评论放在一起去处理
这里我们需要对public Vlog getVlog(String id)扩展 重新,写入接口
在这里就可以查询
//系统消息:评论/回复Vlog vlog = vlogService.getVlog(commentBO.getVlogId());Map msgContent = new HashMap();msgContent.put("vlogId",vlog.getId());msgContent.put("vlogCover",vlog.getCover());msgContent.put("commentId",commentId);msgContent.put("commentContent",commentBO.getContent());Integer type= MessageEnum.COMMENT_VLOG.type;if(StringUtils.isNotBlank(commentBO.getFatherCommentId()) && !commentBO.getFatherCommentId().equalsIgnoreCase("0")){type = MessageEnum.REPLY_YOU.type;}msgService.createMsg(commentBO.getCommentUserId(),commentBO.getVlogerId(),type,msgContent);return commentVO;
接着我们重启测试:
接着到我们的mongoDB中查看:
此时我们可以发现这里的内容,对于前两天数据是空的
接着我们回复测试:
再来刷新:
这里就完成了我们系统消息对评论与回复的保存。
从零开始搭建仿抖音短视频APP-后端开发消息业务模块(1)相关推荐
- 从零开始搭建仿抖音短视频APP--后端开发粉丝业务模块(3)
项目持续创作中: 仿抖音短视频APP专栏 目录 实现用户点赞视频 用户取消点赞 用户是否点赞视频的判断 实现用户点赞视频 用户在点赞我们的视频后,我们需要去实现一些相关的业务, 这里需要对应到数据库的 ...
- 从零开始搭建仿抖音短视频APP--后端开发粉丝业务模块(1)
项目持续更新中: 仿抖音短视频APP专栏 目录 关注短视频博主 Redis技术妙用 取消关注博主 关注短视频博主 在我们的主页中,刷视频时是可以在头像下方进行一个关注 点击头像,进入对方的主页也是可以 ...
- 从零开始搭建仿抖音短视频APP-后端开发粉丝业务模块(2)
项目持续更新中: 防抖音短视频APP项目专栏 目录 判断用户是否关注博主 我的关注列表 我的粉丝列表 实现互粉标记显示 判断用户是否关注博主 在这里我们对这个人进行关注之后,重新退出界面再次进入,并没 ...
- 从零快速搭建仿抖音短视频APP-后端开发粉丝业务模块(4)
项目持续更新中: 仿抖音短视频APP专栏 目录 视频页点赞总数 用户页点赞视频列表展示 我的关注视频列表展示 互粉朋友视频瀑布列表展示 视频页点赞总数 在我们的点赞下面会有一个数字,代表点赞总数.我们 ...
- 从零开始搭建仿抖音短视频App-前后端开发模式,前端框架的选择、前端项目搭建
目录 前后端开发模式 传统JavaWeb开发模式 前后端分离模式编辑 前端框架的选择-UniApp介绍 内网互通原则 运行到iphone与Android 前后端开发模式 传统JavaWeb开发模式 ...
- 从零开始搭建仿抖音短视频APP-后端开发短视频业务模块(2)
项目持续更新中: 仿抖音短视频APP 目录 实现数据层mybatis自定义mapper与sql 查询短视频列表api 实现下拉刷新和分页功能 实现数据层mybatis自定义mapper与sql 在数据 ...
- 从零开始搭建仿抖音短视频APP-后端开发短视频业务模块(3)
项目持续更新中: 仿抖音短视频APP专栏 目录 视频详情页展示的数据层实现 视频详情页展示的api实现 短视频下载.复制连接.二维码展示 视频保存到相册 复制链接 二维码展示 实现转为私密或公开视频 ...
- 从零开始搭建仿抖音短视频APP-后端消息业务模块开发(2)-基础版完结篇
项目持续更新中: 仿抖音短视频APP专栏 目录 系统消息入库保存 MongoDB分页查询系统消息列表 删除系统消息 系统消息入库保存 这里还剩下最后一个点赞评论没有完成 这里如果点赞了你的评论,你们视 ...
- 从零开始搭建仿抖音短视频APP-开发用户业务模块(3)
项目持续更新中: 仿抖音短视频APP专栏 目录 注册登录-BO接受前端参数验证 对BO校验进行统一封装 开发用户是否存在 开发创建用户Service 实现短信注册登录与分布式会话 注册登录-BO接受前 ...
最新文章
- 有关rsync的一些语句
- linux下查看服务器性能,linux命令查看服务器性能
- JQuery整体简化学习
- 麦迪时刻的视频和图片
- 一般屏幕的3D模型是公开的吗?
- 小批量梯度下降算法步骤_TensorFlow从0到1 - 6 - 解锁梯度下降算法
- 《日志管理与分析权威指南》一2.3 良好日志记录的标准
- 智能指针的释放_看完这篇,别再说不会智能指针了
- 截流式合流制设计流量计算_截流式合流制截污管设计污水量的实测统计方法
- [转载]遗传算法介绍
- Android java和C的Socket通信demo(可用)
- 基于Javaee的影视创作论坛的设计与实现(含源文件)
- CAN总线的特点及J1939协议通信原理、内容和应用
- js计算100以内所有奇数的和
- 使用bat命令快速创建系统还原点的方法
- Snaker-flow介绍
- P1664 每日打卡心情好
- 开源可协作在线文档(ShowDoc)
- Spring实战(第四版)
- 【vue教程】来自JSpang 技术胖的视频
热门文章
- STM32 标准库+ESP8266+华为云物联网平台
- 基于Python的密码自助平台设计
- Spark读取文件,报错java.lang.ArrayIndexOutOfBoundsException
- 张恭庆院士:数学的意义(最全最牛的解释)
- Blackmagic Fusion Studio 17 for Mac(影视后期特效合成软件)需要 macOS 11.x系统内附安装教程
- 带备注的PPT使用演讲者模式操作说明(PPT2010)
- 微信小程序第一次培训
- JAVA毕业设计HTML5旅游网站计算机源码+lw文档+系统+调试部署+数据库
- css实现的卡片式渐变色卡html页面前端源码
- 微信小程序实用工具——渐变色按钮(一)