package com.xindazhou.business.service.community.comment;

import com.xindazhou.business.controller.app.community.comment.vo.CommentCreateReqVO;
import com.xindazhou.business.controller.app.community.comment.vo.CommentPageReqVO;
import com.xindazhou.business.controller.app.community.comment.vo.CommentRespVO;
import com.xindazhou.framework.common.pojo.PageResult;

import java.util.List;

/**
 * 评论 Service 接口
 *
 * @author xindazhou
 */
public interface CommentService {

    /**
     * 创建评论
     *
     * @param createReqVO 创建信息
     * @return 评论ID
     */
    Long createComment(CommentCreateReqVO createReqVO);

    /**
     * 删除评论
     *
     * @param id 评论ID
     */
    void deleteComment(Long id);

    /**
     * 获得评论
     *
     * @param id 评论ID
     * @return 评论
     */
    CommentRespVO getComment(Long id);

    /**
     * 获得评论分页列表
     *
     * @param reqVO 分页条件
     * @return 分页列表
     */
    PageResult<CommentRespVO> getCommentPage(CommentPageReqVO reqVO);

    /**
     * 获得帖子的评论列表（树形结构）
     *
     * @param postId 帖子ID
     * @return 评论列表
     */
    List<CommentRespVO> getCommentTree(Long postId);

    // ========== 管理后台方法 ==========

    /**
     * 获得评论分页列表（管理后台）
     *
     * @param reqVO 分页条件
     * @return 分页列表
     */
    PageResult<com.xindazhou.business.controller.admin.community.comment.vo.CommentRespVO> getCommentPageAdmin(com.xindazhou.business.controller.admin.community.comment.vo.CommentPageReqVO reqVO);

    /**
     * 删除评论（管理后台）
     *
     * @param id 评论ID
     */
    void deleteCommentAdmin(Long id);

}

