
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.ImMsgBizEmployeeRecent;
import com.tmerclub.cloud.im.model.ImMsgBizUserHistory;

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

    /**
     * 分页获取员工最近聊天记录表列表
     * @param pageDTO 分页参数
     * @param sendType 发送类型
     * @param bizId 商家或平台id
     * @param employeeId 员工id
     * @return 员工最近聊天记录表列表分页数据
     */
    PageVO<ImMsgBizEmployeeRecent> pageBySendTypeAndBizIdAndEmployeeId(PageDTO pageDTO, Integer sendType, Long bizId, Long employeeId);

    /**
     * 根据员工最近聊天记录表id获取员工最近聊天记录表
     *
     * @param id 员工最近聊天记录表id
     * @return 员工最近聊天记录表
     */
    ImMsgBizEmployeeRecent getById(Long id);

    /**
     * 分页获取员工最近聊天记录表列表
     * @param sendType 发送类型
     * @param bizId 商家或平台id
     * @param employeeId 员工id
     * @param userId 用户id
     * @return 员工最近聊天记录表列表分页数据
     */
    ImMsgBizEmployeeRecent getBySendTypeBizIdEmployeeIdUserId(Integer sendType, Long bizId, Long employeeId, Long userId);

    /**
     * 保存员工最近聊天记录表
     * @param imMsgBizEmployeeRecent 员工最近聊天记录表
     */
    void save(ImMsgBizEmployeeRecent imMsgBizEmployeeRecent);

    /**
     * 更新员工最近聊天记录表
     * @param imMsgBizEmployeeRecent 员工最近聊天记录表
     */
    void update(ImMsgBizEmployeeRecent imMsgBizEmployeeRecent);

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

    /**
     * 更新员工最后的消息
     *
     * @param imMsgBizUserHistory 消息历史记录实体类
     */
    void updateEmployeeRecent(ImMsgBizUserHistory imMsgBizUserHistory);

    /**
     * 更新客服未读条数
     * @param sendType
     * @param id
     * @param shopId
     * @param employeeId
     * @param userId
     */
    void updateEmployeeUnreadMsgNum(Integer sendType, Long id, Long shopId, Long employeeId, Long userId);

}
