从零开始搭建仿抖音短视频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中查看:

 

 此时我们可以发现这里的内容,对于前两天数据是空的

 接着我们回复测试:

 再来刷新:

 这里就完成了我们系统消息对评论与回复的保存。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/58424.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

抖音矩阵号运营是什么?如何开发及布局

1.什么是抖音矩阵号运营?如何通过抖音SEO实现关键词侵占及排名优化?企业如何通过抖音SEO运营收货百亿流量? 抖音搜索你可以把它理解成更细分、更垂直的短视频搜索引擎。就像豆丁网一样,它就是垂直定位于中文文档的搜索引擎&#x…

短视频抖音运营策划营销推广方案2022

原文档网盘地址下载https://pan.baidu.com/s/1zJ5NNX8PbmN5MaE7_Zp9Fw?pwdfdk2 每一个流程上,你比别人多付出的努力是50%。那么六个流程加起来,你多付出了多少的努力呢?注意还是50%?有些同学可能本能反应了一下,觉得…

青少年CTF-取证合集

日志分析1 题目描述 解压得到一个.log文件 由于黑客是上传所以我们通过命令 得到所有post请求的数据并写入到1.txt strings access.log | grep POST >> 1.txt 我一直以为是flag{IP}搞半天一直是错误,后面有重新看了一下题目才知道,133.1.16.173…

FastJson快速上手【Json解析工具】

目录 一、spring boot工程中引入FastJson依赖 二、调用JSON类的静态方法直接进行json序列化和反序列化 2.1 序列化 2.2 反序列化 三、快速演示: 四、思考 五、web案例demo演示 针对JSON序列化和反序列化,为了方便快捷,我们一般使用jso…

图解《狂飙》人物关系

《狂飙》作为今年的开年大戏,一经播出就受到了大家的广泛关注,成为了全民热议的现象级剧集。作为一部扫黑剧,剧中的黑白两派的人物关系可谓错综复杂,不少小伙伴初看时经常搞不清楚出场人物的关系,看得一头雾水。那本期…

[小森数据结构]看电影-顺序表技术精讲

故事前研(言) 小森去看电影<<流浪地球2>>的时候买电影票的场景. 突然一个叫高启强的人买电影票 拉了两个Hei友,来看电影 <<流浪地球2>> 当场就害怕极了&#xff0c;我也知道他想干什么&#xff0c;于是乎就让他到我这里&#xff0c;“高启强”:你小…

【分享贴】项目中为啥总是项目经理一人干着急?

看完了《狂飙》才发现&#xff0c;高启强才是咱项目经理的模范。前段时间身边同事都疯狂安利这部电视剧&#xff0c;但我哪有空余时间刷剧&#xff0c;直到最近才断断续续的追完。这才发现“高启强”这个人物身上有很多闪光点&#xff0c;值得学习借鉴。 他能从一个鱼贩逆袭成…

手捏Java知识点

今天开始面向对象了 面向对象基础 类&#xff1a;由属性和行为组成属性&#xff1a;在类中通过成员变量来体现行为&#xff1a;在类中通过成员方法来体现public class 类名{//成员变量变量1的数据类型 变量1;变量2的数据类型 变量2;...//成员方法方法1;方法2;...}有几个重要的概…

如何优雅地修改同事的代码

前言 互联网开发多以团队协同的方式为主&#xff0c;在实际的开发过程中&#xff0c;我们经常会面对在同事的代码的基础上重新开发的需求。然而由于人员的迭代、需求的变更、文档的缺失等原因&#xff0c;我们贸然修改同事的代码往往需要承担一些额外的开发风险&#xff0c;比如…

Java8 map.getOrDefault()你真的了解吗

大家好&#xff0c;我是三叔&#xff0c;很高兴这期又和大家见面了&#xff0c;一个奋斗在互联网的打工人。 map.getOrDefault()方法 在Java编程中&#xff0c;Map是一种非常常用的数据结构。Map通常用于存储键值对&#xff0c;其中每个键映射到一个值。当我们尝试访问一个不…

同是打工人,学Python搞副业的朋友跟高启强一样实现逆袭了?

年过完了&#xff0c;现在已经回归工作岗位&#xff0c;接着拧自己的螺丝钉&#xff0c;不过&#xff0c;假期也不算寂寞&#xff0c;追了大热的电视剧《狂飙》。卖鱼小贩高启强的逆袭让我这种打工人太羡慕了&#xff0c;当他坐在白金瀚的办公室里美滋滋的喝着红酒的时候&#…

张杰清唱高启强专属BGM简直就是天作之合,千万别点进来看

张杰清唱高启强专属BGM简直就是天作之合&#xff0c;千万别点进来看&#xff0c;#张杰#BGM#音乐 张杰演唱的《听》狂飙高启强自从出现在抖音上更是火得不可思议&#xff0c;它成为了不少年轻人喜爱的BGM&#xff0c;尤其是用它作为专属BGM的抖音视频更是受到网友的一致好评。 …

老默我想吃鱼了(抽象艺术)

目录 指针地位 代码示例 人物关系 代码分析 总结 指针地位 在C语言中 指针的地位可以说是王中王 代码示例 如下 #define _CRT_SECURE_NO_WARNINGS 1#include<stdio.h>int main() {int a 15;printf("老默出手前鱼的值:%d\n", a);int* pa &a;*pa 30;p…

冯雷老师:为什么大嫂陈书婷让高启强终生难忘?

高启强对大嫂陈书婷的感情非常深&#xff0c;大嫂死后高启强终生未娶&#xff0c;那为什么大嫂陈书婷让高启强终生难忘呢&#xff1f; 第一、既能助力男人&#xff0c;又识大体懂分寸。在帮助高启强拜泰叔当干爹后&#xff0c;就回归家庭当一个贤妻良母。从不插手老公的生意。…

学术汇报(academic presentation)/PPT应该怎么做?

已经上了研究生两年了&#xff0c;但是一直没有规范过PPT应该怎么做&#xff1f;都是瞎做的&#xff0c;也没有注意过排版什么的&#xff0c;前一段时间被老师批评后&#xff0c;才开始想怎么做好学术汇报&#xff0c;下面将我整理的一些规范和步骤记录下来 一些琐碎的事情&…

阿里、腾讯御用PPT设计师:让你在年终汇报中做最靓的仔!

你知道现在年轻人靠什么赚钱吗&#xff1f; 前几天&#xff0c;知乎上一篇关于“副业”的回答吓我一跳&#xff0c;一个大三学生&#xff0c;只靠副业赚够14W。 14万什么概念&#xff0c;是一个普通白领不吃不喝至少2年的工资。 干什么能一下赚这么多&#xff1f; 他一没抢钱二…

ChatGPT中的提示工程(Prompt Engineering)怎么做?50页最新PPT下载

整理自&#xff1a;专知 在公众号后台回复 Prompt Engineering 即可获取PPT。 ChatGPT爆火之后&#xff0c;也逐渐衍生出一大堆新的概念和机会。提示工程&#xff08;Prompt Engineering&#xff09;便是其中之一。据笔者所知&#xff0c;国内外目前已有提示工程相关的工程师岗…

用 ChatGPT 将 Excel 工作效率提高 10 倍!离做PPT还远吗

源&#xff5c;机器之心 在未来&#xff0c;精通 Excel 或许不再是简历亮点了。 ChatGPT 自去年 11 月 30 日 OpenAI 重磅推出以来&#xff0c;这款 AI 聊天机器人迅速成为 AI 界的「当红炸子鸡」。一经发布&#xff0c;不少网友更是痴迷到通宵熬夜和它对话聊天&#xff0c;就为…

招银网络科技 笔试、面试

1. 笔试 1.1 题目 有16种状态码分别是1-16&#xff0c;本来应该记为{1, 1, 1, 3}&#xff0c;但是由于粗心记为{1113}&#xff0c;题目&#xff1a;求出给定的输入如{1113}能够构成不同状态码的个数。{1113}可以构成{1, 1, 1, 3}, {11, 1, 3}, {1, 11, 3}, {1, 1, 13}, {11, …

招商银行网点管理系统

目录 功能一&#xff1a;查询所有展示 1.根据城市来进行条件查询 2.当进入首页后显示所有网点信息 3.根据城市进行条件查询 功能二&#xff1a;新增网点 功能三&#xff1a;修改网点 功能四&#xff1a;删除功能 功能一&#xff1a;查询所有展示 1.根据城市来进行条件查…