package cn.axzo.msg.center.message.service;

import cn.axzo.msg.center.api.request.CmsMsgQueryReq;
import cn.axzo.msg.center.api.response.MessageNewRes;
import cn.axzo.msg.center.service.dto.IdentityDTO;
import cn.axzo.msg.center.service.dto.PersonDTO;
import cn.azxo.framework.common.model.Page;

import java.util.List;

/**
 * 旧普通消息的相关接口
 *
 * @author cold_blade
 * @date 2023/10/24
 * @version 1.0
 */
public interface GeneralMessageOldService {

    /**
     * 统计未读的消息数量
     * 注: 该接口作为IM进入旧消息模块的入口,需要过滤双发至IM的消息
     * <p>支持多角色的版本
     */
    int countUnreadWithIdentities(Long personId, List<IdentityDTO> identities);

    /**
     * 统计未读的消息数量
     * 注: 该接口作为IM进入旧消息模块的入口,需要过滤双发至IM的消息
     *
     * @param person 身份信息
     * @return 未读消息数量
     */
    int countUnread(PersonDTO person);

    /**
     * 统计未读的消息数量
     * 注: 该接口作为IM进入旧消息模块的入口,需要过滤双发至IM的消息
     *
     * @param person         身份信息
     * @param excludeMsgIds  待排除的消息记录id
     * @return 未读消息数量
     */
    int countUnread(PersonDTO person, List<Long> excludeMsgIds);

    /**
     * 分页查询旧的普通消息记录
     * 注: 该接口作为IM进入旧消息模块的入口,需要过滤双发至IM的消息
     *
     * @param request 分页查询参数
     * @return 过滤后的旧的普通消息记录
     */
    Page<MessageNewRes> pageMsgInfo(CmsMsgQueryReq request);
}
