留言(评论)功能实现

思路:

1 展示 两级 父级留言——子级留言 

2 内部数据存储格式 栈的格式—— 一级留言-二级留言-三级等...

3 实现 

  首先将一级留言循环取出来 循环中通过一级留言获取二级留言

并嵌套循环把二级留言放入到一个temp(中间站)中并把它标识属性父级留言id  通过(递归的方法)二级留言获取到3,4,5,n级....等留言 并且把他们都标记一级留言为父级  

 

    @Autowired
    MessageMapper messageMapper;

    private List<Message> temp = new ArrayList<>();//中间栈 二级评论

    public List<Message> First(){
        List<Message> firstmessage = messageMapper.findMessageByParentid(-1);//获取一级留言
        if (firstmessage.size()>0) {//判断是否存在留言
            for (Message message : firstmessage) {//循环一级留言
                int firstmid = message.getMid();
                String firstname = message.getUsername();
                Second(firstmid, firstname);//通过一级获取二级留言(参数为父级id和父级name)
                message.setMessages(temp);//子级留言全部存入中间站 把它加到这个父级留言里面
                temp = new ArrayList<Message>();
            }
        }
        return firstmessage;
    }

    public void Second(int pid,String pname){
        List<Message> secondmessage = messageMapper.findMessageByParentid(pid);//通过父级id获取子级留言
        if (secondmessage.size()>0){//判断是否存在子级留言
            for (Message message : secondmessage) {//循环留言
                message.setParentname(pname);//把留言赋值父name
                temp.add(message);//加入到中间站
                Third(message);//获取3-n级留言 参数为二级留言
            }
        }
    }

    public void Third(Message secondmessage){
        List<Message> thirdmessage = messageMapper.findMessageByParentid(secondmessage.getMid());//通过父级id获取子级留言
        String pname = secondmessage.getUsername();//获取父级name
        if (thirdmessage.size()>0){
            for (Message message : thirdmessage) {//循环
                message.setParentname(pname);//把留言赋值父name
                temp.add(message);//加入中间站
                Third(message);//把自己当作父级 递归找出所有子级 结束之后就到第一个函数那里 然后中间站就存放好了所有关于一级留言的子留言
            }
        }

 

posted on 2022-02-21 21:31  ziwang520  阅读(248)  评论(0)    收藏  举报