package cn.bunny.common.utils;

import cn.bunny.vo.system.comment.CommentVo;

import java.util.ArrayList;
import java.util.List;

public class CommentUtil {
    /**
     * 构建树型结构
     *
     * @param commentList 评论列表
     * @return 结构列表
     */
    public static List<CommentVo> buildTree(List<CommentVo> commentList) {
        // 构建树形结构
        List<CommentVo> tree = new ArrayList<>();
        // 遍历评论列表
        for (CommentVo comment : commentList) {
            // 找到顶级评论（没有父评论）
            if (comment.getPCommentId() == 0) {
                // 递归构建子评论
                comment.setChildren(getChildren(comment.getId(), commentList));
                tree.add(comment);
            }
        }
        return tree;
    }

    /**
     * 递归获取子评论
     *
     * @param commentId   当前评论ID
     * @param commentList 评论列表
     * @return 子评论列表
     */
    private static List<CommentVo> getChildren(Long commentId, List<CommentVo> commentList) {
        List<CommentVo> children = new ArrayList<>();

        // 遍历评论列表
        for (CommentVo comment : commentList) {
            // 找到当前评论的子评论
            if (Long.valueOf(comment.getPCommentId()).equals(commentId)) {
                // 递归构建子评论的子评论
                comment.setChildren(getChildren(comment.getId(), commentList));
                children.add(comment);
            }
        }
        return children;
    }
}
