package com.prolog.rdc.tms.service.message;

import com.prolog.framework.core.pojo.Page;
import com.prolog.rdc.tms.model.dto.message.MessageCountDTO;
import com.prolog.rdc.tms.model.dto.message.MessageDTO;
import com.prolog.rdc.tms.model.vo.message.MessageQueryVO;
import com.prolog.rdc.tms.model.vo.message.MessageReadAllVO;
import com.prolog.rdc.tms.model.vo.message.PullMessageVO;
import com.prolog.rdc.tms.model.vo.message.ReadMessageVO;

import java.util.List;

/**
 * @author hongbo.pan
 * @date 2022/11/16
 */
public interface MessageService {

    /**
     * 查询消息
     * @param vo
     * @return
     */
    Page<MessageDTO> query(MessageQueryVO vo);

    /**
     * findById
     * @param messageId
     * @return
     */
    MessageDTO findById(Long messageId);

    /**
     * 合计
     * @param vo
     * @return
     */
    Long countMessage(MessageQueryVO vo);

    /**
     * 标记已读
     * @param vo
     */
    void read(ReadMessageVO vo);

    /**
     * 消息全部已读
     * @param vo
     */
    void readAll(MessageReadAllVO vo);

    /**
     * 拉取最新消息
     * @param vo
     * @return
     */
    List<MessageDTO> pullMessage(PullMessageVO vo);

    /**
     * countByMessageType
     * @return
     */
    MessageCountDTO countByMessageType();
}
