
package com.tmerclub.cloud.im.mapper;

import com.tmerclub.cloud.im.model.ImMsgBizUser;
import org.apache.ibatis.annotations.Param;

import java.util.List;

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

    /**
     * 获取用户最近聊天记录表列表
     * @param userId 用户id
     * @return 用户最近聊天记录表列表
     */
    List<ImMsgBizUser> listByUserId(@Param("userId") Long userId);

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

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

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

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

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

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

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

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