package jnpf.cultivate.mapper;


import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import jnpf.base.mapper.SuperMapper;
import jnpf.model.cultivate.po.gained.FtbCourseGainedCommentEntity;
import jnpf.model.cultivate.v2.gained.req.V2AppCommentPageListReq;
import jnpf.model.cultivate.v2.gained.vo.V2AppCourseGainedCommentVO;
import jnpf.model.cultivate.v2.gained.vo.V2SimpleCourseGainedCommentVO;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * 心得评论 Mapper 接口
 *
 * @author yanglei
 * @since 2023-07-19
 */
public interface FtbCourseGainedCommentMapper extends SuperMapper<FtbCourseGainedCommentEntity> {

/**
     * APP 端评论分页列表查询
     *
     * @param page 分页对象，包含当前页码和每页大小
     * @param req 评论查询请求参数，包含心得 ID 等筛选条件
     * @return 分页查询结果，包含 V2AppCourseGainedCommentVO 列表
     */
    Page<V2AppCourseGainedCommentVO> appCommentPage(@Param("page") Page<V2AppCourseGainedCommentVO> page, @Param("req") V2AppCommentPageListReq req);

    /**
     * APP 端获取简单的评论树形结构数据
     *
     * @param gainedId 心得 ID，用于筛选该心得下的所有评论
     * @return 简单评论 VO 列表，包含评论 ID 和父级 ID，用于构建树形结构
     */
    List<V2SimpleCourseGainedCommentVO> appSimpleComment(@Param("gainedId") String gainedId);

    /**
     * 根据 ID 集合批量查询评论实体
     *
     * @param childIds 评论 ID 集合，用于批量查询
     * @return 评论实体列表，按创建时间升序排列
     */
    List<FtbCourseGainedCommentEntity> queryAllByIds(@Param("childIds") List<String> childIds);

    /**
     * 查询指定评论下的所有回复评论
     *
     * @param firstCommentId 一级评论 ID，用于查询该评论下的所有子评论
     * @return 评论实体列表，包含该评论下的所有回复
     */
    List<FtbCourseGainedCommentEntity> queryNextAllComment(@Param("firstCommentId") String firstCommentId);
}
