
package com.tmerclub.cloud.im.mapper;

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

import java.util.List;

/**
 * 店铺和用户历史聊天记录表
 *
 * @author tmerclub
 * @date 2021-08-25 13:58:56
 */
public interface ImMsgBizUserHistoryMapper {

    /**
     * 获取店铺和用户历史聊天记录表列表
     * @param sendType 发送类型
     * @param bizId 平台或商家id
     * @param employeeId 员工id
     * @param userId 用户id
     * @return 店铺和用户历史聊天记录表列表
     */
    List<ImMsgBizUserHistory> listBySendTypeBizIdUserId(@Param("sendType") Integer sendType, @Param("bizId") Long bizId, @Param("employeeId") Long employeeId, @Param("userId") Long userId);

    /**
     * 获取某个用户和店铺的所有的聊天记录(转接客服后共享聊天记录)
     * @param sendType
     * @param bizId
     * @param userId
     * @return
     */
    List<ImMsgBizUserHistory> getHistoryByUserId(@Param("sendType") Integer sendType, @Param("bizId") Long bizId, @Param("userId") Long userId);

    /**
     * 根据店铺和用户历史聊天记录表id获取店铺和用户历史聊天记录表
     *
     * @param id 店铺和用户历史聊天记录表id
     * @return 店铺和用户历史聊天记录表
     */
    ImMsgBizUserHistory getById(@Param("id") Long id);

    /**
     * 根据店铺和用户历史聊天记录表参数获取店铺和用户历史聊天记录表
     *
     * @param imMsgBizUserHistory 店铺和用户历史聊天记录参数
     * @return 店铺和用户历史聊天记录表
     */
    ImMsgBizUserHistory getByParam(@Param("imMsgBizUserHistory") ImMsgBizUserHistory imMsgBizUserHistory);

    /**
     * 保存店铺和用户历史聊天记录表
     * @param imMsgBizUserHistory 店铺和用户历史聊天记录表
     */
    void save(@Param("imMsgBizUserHistory") ImMsgBizUserHistory imMsgBizUserHistory);

    /**
     * 更新店铺和用户历史聊天记录表
     * @param imMsgBizUserHistory 店铺和用户历史聊天记录表
     */
    void update(@Param("imMsgBizUserHistory") ImMsgBizUserHistory imMsgBizUserHistory);

    /**
     * 根据店铺和用户历史聊天记录表id删除店铺和用户历史聊天记录表
     * @param id 消息id
     */
    void deleteById(@Param("id") Long id);

    /**
     * 获取用户该店铺所有的未读消息
     * @param imMsgBizUserId 聊天对象id
     * @param userId    用户id
     * @return 未读消息列表
     */
    List<ImMsgBizUserHistory> getUnreadHistoryByUserId(@Param("imMsgBizUserId") Long imMsgBizUserId, @Param("userId") Long userId);

    /**
     * 更新该用户所有的店铺未读消息，变更为已读（用户端）
     * @param imMsgBizUserId 聊天对象id
     * @param userId    用户id
     * @return 变更数量
     */
    int updateUnreadHistoryByUserId(@Param("imMsgBizUserId") Long imMsgBizUserId, @Param("userId") Long userId);

    /**
     * 更新该店铺所有的未读用户消息，变更为已读（平台、商家端）
     *
     * @param id
     * @param userId
     * @return
     */
    int updateUnreadHistoryByShopId(@Param("id") Long id, @Param("userId") Long userId);
}
