
package com.tmerclub.cloud.im.service;

import com.tmerclub.cloud.common.database.dto.PageDTO;
import com.tmerclub.cloud.common.database.vo.PageVO;
import com.tmerclub.cloud.im.model.ImMsgBizUser;
import com.tmerclub.cloud.im.model.ImMsgBizUserHistory;

/**
 * 用户最近聊天记录表
 *
 * @author tmerclub
 * @date 2021-08-25 13:58:56
 */
public interface ImMsgBizUserService {

    /**
     * 分页获取用户最近聊天记录表列表
     * @param pageDTO 分页参数
     * @param userId 用户id
     * @return 用户最近聊天记录表列表分页数据
     */
    PageVO<ImMsgBizUser> pageByUserId(PageDTO pageDTO, Long userId);

    /**
     * 根据用户最近聊天记录表id获取用户最近聊天记录表
     *
     * @param id 用户最近聊天记录表id
     * @return 用户最近聊天记录表
     */
    ImMsgBizUser getById(Long id);

    /**
     * 根据用户最近聊天记录表id获取用户最近聊天记录表
     *
     * @param sendType 发送类型
     * @param bizId 商家或平台id
     * @param userId 用户id
     * @return 用户最近聊天记录表
     */
    ImMsgBizUser getBySendTypeBizIdUserId(Integer sendType, Long bizId, Long userId);

    /**
     * 保存用户最近聊天记录表
     * @param imMsgBizUser 用户最近聊天记录表
     */
    void save(ImMsgBizUser imMsgBizUser);

    /**
     * 更新用户最近聊天记录表
     * @param imMsgBizUser 用户最近聊天记录表
     */
    void update(ImMsgBizUser imMsgBizUser);

    /**
     * 根据用户最近聊天记录表id删除用户最近聊天记录表
     * @param id 用户最近聊天记录表id
     */
    void deleteById(Long id);

    /**
     * 更新用户和店铺最后的消息
     *
     * @param imMsgBizUserHistory 消息历史记录实体类
     */
    void updateBizUserLastMsg(ImMsgBizUserHistory imMsgBizUserHistory);

    /**
     * 获取用户未读消息数量
     * @param userId
     * @return
     */
    Integer getImUserUnreadNum(Long userId);

    /**
     * 更新用户未读消息数量
     * @param imMsgBizUserId
     * @param userUnread
     * @param whoSend
     */
    void updateUserUnreadHistor(Long imMsgBizUserId, Integer userUnread, Integer whoSend);

    /**
     * 更新店铺未读消息数量
     * @param id
     * @param unread
     * @param whoSend
     */
    void updateShopUserUnreadMsgNum(Long id, Integer unread, Integer whoSend);
}
