package jnpf.memberLog.service;

import com.github.pagehelper.PageInfo;
import jnpf.exception.QueryException;
import jnpf.model.memberLog.dto.*;
import jnpf.model.memberLog.vo.LogCommentVo;
import jnpf.model.memberLog.vo.LogStatVo;
import jnpf.model.memberLog.vo.MiniLogVo;
import jnpf.model.memberLog.vo.WebLogVo;
import org.apache.poi.ss.usermodel.Workbook;

import java.util.List;

/**
 * 工作日志服务
 *
 * @author yanwenfu
 * @create 2023-08-08
 */
public interface WorkLogService {

    /**
     * 评论列表
     * @param logId 日志id
     * @param queryDto 查询条件
     * @return com.github.pagehelper.PageInfo<jnpf.model.memberLog.vo.LogCommentVo>
     */
    PageInfo<LogCommentVo> getCommentList(String logId, CommentQueryDto queryDto);

    /**
     * 日志详情 - 评论/回复
     * @param logId 日志id
     * @param addReplyDto 新增评论dto
     * @return jnpf.model.memberLog.vo.LogCommentVo
     */
    LogCommentVo addCommentReply(String logId, AddReplyDto addReplyDto);

    /**
     * 新增/取消点赞
     * @param logId 日志id
     */
    void addOrCancelLike(String logId);

    /**
     * 新增转发信息
     * @param logId 日志id
     * @param list 转发信息
     */
    void addForwardRecord(String logId, List<AddForwardDto> list);

    /**
     * 日志统计
     * @param queryDto 查询条件
     * @return jnpf.model.memberLog.vo.LogStatVo
     */
    LogStatVo getLogDataStat(StatQueryDto queryDto) throws Exception;

    /**
     * 日志统计 - 导出
     * @param queryDto 查询条件
     * @return org.apache.poi.ss.usermodel.Workbook
     */
    Workbook getLogDataStatWorkbook(StatQueryDto queryDto) throws Exception;

    /**
     * 日志列表
     * @param queryDto 查询条件
     * @return com.github.pagehelper.PageInfo<jnpf.model.memberLog.vo.MiniLogVo>
     */
    PageInfo<MiniLogVo> getAppLogPage(LogQueryDto queryDto);

    /**
     * 日志列表 - web
     * @param queryDto 查询条件
     * @return com.github.pagehelper.PageInfo<jnpf.model.memberLog.vo.WebLogVo>
     */
    PageInfo<WebLogVo> getWebLogPage(LogWebQueryDto queryDto) throws QueryException;

    /**
     * 日志列表 - 条件筛选 - app
     * @param queryDto 查询条件
     * @return com.github.pagehelper.PageInfo<jnpf.model.memberLog.vo.MiniLogVo>
     */
    PageInfo<MiniLogVo> getAppLogPageByCondition(ConditionLogQueryDto queryDto) throws QueryException;

    /**
     * 日志列表 - 指定人员查询 - app
     * @param queryDto 查询条件
     * @return com.github.pagehelper.PageInfo<jnpf.model.memberLog.vo.MiniLogVo>
     */
    PageInfo<MiniLogVo> getAppLogPageByUser(ConditionLogQueryDto queryDto);

    /**
     * 删除评论/回复
     * @param commentId 评论id
     */
    void deleteCommentReply(String commentId);

    /**
     * 评论总条数
     * @param logId 日志id
     * @return java.lang.Integer
     */
    Integer getCommentTotalNum(String logId);

    /**
     * 日志统计(按人分页)
     * @param queryDto 查询条件
     * @return jnpf.model.memberLog.vo.LogStatVo
     */
    LogStatVo getLogDataStatPage(StatQueryDto queryDto);
}
