El proyecto se actualiza continuamente:
Columna de aplicación de video corto de vibrato de imitación
Tabla de contenido
Almacenamiento de mensajes del sistema
Lista de mensajes del sistema de consulta de página MongoDB
Almacenamiento de mensajes del sistema
Aún queda un último like y comentario
Si te gusta tu comentario aquí, la portada de tu video será enviada de vuelta.
Encuentre la ruta similar de CommentController
Se deben inyectar dos servicios:
Aquí copiamos el código que escribimos antes y hacemos algunas modificaciones:
Aquí necesitamos obtener un vlogId, que no está disponible aquí, por lo que necesitamos escribir una interfaz para obtenerlo:
lograr:
Entonces podemos llamarlo a través de 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);
Después de escribir, hacemos una prueba, nos gusta los comentarios y las respuestas.
Luego vaya a nuestro MongoDB para ver
Lista de mensajes del sistema de consulta de página MongoDB
Después de completar la operación de envío de mensajes del sistema, necesitamos tener una operación de consulta en la interfaz de mensajes, y la consulta está paginada
Primero escribamos nuestra capa de servicio:
Aquí implementamos Repositorio, consulta de condición personalizada
Luego en la implementación del Servicio:
De hecho, todavía es necesario hacer un juicio aquí, para juzgar si le presté atención antes, si no, habrá una señal de que los fanáticos regresan.
Solo necesitamos expandir el campo isFriend en MO,
@Override
public 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;
}
Aquí también podemos comprobar el front-end
Aquí podemos construir nuestra interfaz de back-end
Construimos un MsgController en el backend:
@Slf4j
@Api(tags = "MsgController 消息功能模块接口")
@RequestMapping("Msg")
@RestController
public class MsgController {
@Autowired
private 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);
}
}
Comience la prueba:
eliminar mensajes del sistema
Primero podemos pensar dónde puede comenzar la eliminación
Primero, podemos presionar prolongadamente o deslizar hacia la derecha en nuestra página de mensajes para eliminar
El segundo tipo está vinculado al comportamiento de nuestro usuario. Si dejo de seguirte, elimina este mensaje de atención.
Ambos tipos de mensajes se pueden activar para eliminar, puede probarlo usted mismo.
Podemos usar una pulsación larga para eliminar aquí, pruebe el método usted mismo.
Hasta el momento, la producción de la versión básica de la aplicación de video corto tipo Douyin ha llegado a su fin. Desde el primer artículo de esta columna hasta el presente, tomó alrededor de un mes construir el proyecto desde cero, para escribir nuestro código. , y complete la prueba Luego, más tarde actualizaré la versión avanzada y espero subirla al servidor.
En el pasado, si tiene preguntas sobre el código, puede enviarme un mensaje privado si no lo entiende. Los amigos que quieran el código fuente también pueden chatear conmigo en privado~