package cn.iocoder.yudao.module.system.service.comment;

import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.module.system.controller.app.comment.dto.CommentDTO;
import cn.iocoder.yudao.module.system.controller.app.comment.vo.CommentPageListVO;
import cn.iocoder.yudao.module.system.controller.app.comment.vo.CommentTypeCountVO;
import cn.iocoder.yudao.module.system.controller.app.comment.vo.WorkLogCommentPageReqVO;
import cn.iocoder.yudao.module.system.controller.app.comment.vo.WorkLogCommentSaveReqVO;
import cn.iocoder.yudao.module.system.dal.dataobject.comment.WorkLogCommentDO;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;

import javax.validation.Valid;

/**
 * 工作日志评论 Service 接口
 *
 * @author 艾楷
 */
public interface WorkLogCommentService {

    /**
     * 创建工作日志评论
     *
     * @param createReqVO 创建信息
     * @return 编号
     */
    Long createWorkLogComment(@Valid WorkLogCommentSaveReqVO createReqVO);

    /**
     * 更新工作日志评论
     *
     * @param updateReqVO 更新信息
     */
    void updateWorkLogComment(@Valid WorkLogCommentSaveReqVO updateReqVO);

    /**
     * 删除工作日志评论
     *
     * @param id 编号
     */
    void deleteWorkLogComment(Long id);

    /**
     * 获得工作日志评论
     *
     * @param id 编号
     * @return 工作日志评论
     */
    WorkLogCommentDO getWorkLogComment(Long id);

    /**
     * 获得工作日志评论分页
     *
     * @param pageReqVO 分页查询
     * @return 工作日志评论分页
     */
    PageResult<WorkLogCommentDO> getWorkLogCommentPage(WorkLogCommentPageReqVO pageReqVO);

    /**
     * @param page
     * @param dto
     * @return
     */
    IPage<CommentPageListVO> queryCommentPageList(Page<CommentPageListVO> page, CommentDTO dto);

    /**
     * 获取评论类型数量
     *
     * @return
     */
    CommentTypeCountVO queryCommentTypeCount();
}