先来看前端需要什么吧:
通过博客id,首先需要显示所有一级评论,包括评论者的头像,昵称,评论时间,评论内容
然后要显示每个一级评论下面的二级评论,包括,评论者的头像,昵称,评论时间,评论内容,所评论的父级评论内容,父级评论者的id。
前端传到后端
博客id,
直接发评论的话(即一级评论):
需要获取的内容:(只有博客id,评论者id,评论时间,level是1,评论的内容,没有父级评论的id和内容
回复评论:
需要获取的内容:博客id,评论者id,评论时间,level是2,评论的内容,所回复的一级评论的id和内容,以及被回复者的昵称,
后端:
一个List<OneComment> oneComments传到前端
public class OneComment {
private User publisher;
private Comment comment;
List<TwoComment> twoComments = new ArrayList<>();
}
private User publisher:通过blog_id去blog_comment表里面按照时间查找该blog_id对应的所有顶级评论(top_commentId),
后端根据前端传过来的这个blogId去blog_comment表里面按照时间查找该blog_id对应的所有顶级评论(top_commentId),放到一个List<Comment> comments里面,再遍历这个List,对于每个遍历到的comment,去blog_comment表里面按照时间查询所有字段值origin_id等于当前遍历到的comment的id属性的行,再存到另外一个List<Comment> sonComments,遍历完一个comment,将comment的id和sunComments存在Map<String,List<Comment>> commentMap里面,
传到前端一个List<OneCommment> CommentBigList
表示每个一级评论的id对应一个OneComment对象
其中,OneComment对象表示一个一级评论,一级评论的属性有:该一级评论的id,发布该一级评论的用户的完整信息,发布时间,评论的内容,以及一个List<TwoComment>,
其中List<TwoComment>中的TwoComment表示一个二级评论对象,二级评论的属性有:该二级评论的id,发布该二级评论的用户的完整信息,发布时间,评论的内容,父级评论者的详细信息,父级评论的内容
完结