package cn.com.ty.lift.ud.chat.service;

import cn.com.ty.lift.ud.chat.controller.model.ChatSessionReq;
import cn.com.ty.lift.ud.chat.controller.query.ChatSessionQuery;
import cn.com.ty.lift.ud.chat.mapper.entity.ChatSessionEntity;
import cn.com.xwy.boot.web.dto.RestResponse;

import java.util.List;

import org.apache.ibatis.annotations.Param;

import com.baomidou.mybatisplus.extension.service.IService;

/**
 * 会话 -Service
 * 
 * @author Xson
 * @date 2020-04-22
 */
public interface IChatSessionService extends IService<ChatSessionEntity> {

    /**
     * 根据房间号查询用户信息
     * 
     * @param sessionId
     * @return
     */
    ChatSessionEntity findOneBySessionIdAndPwd(String sessionId, String pwd);

    /**
     * 判断房间是否存在
     * 
     * @param room
     *            房间号
     * @return
     */
    RestResponse existRoom(String room);

    /**
     * 批量跟新会话状态
     * 
     * @param req
     *            操作对象
     * @return
     */
    RestResponse batchUpdate(ChatSessionReq req);

    /**
     * 置顶操作，取消置顶炒操作，根据sessionid修改top_flag字段
     * @param req
     * @return
     */
    RestResponse setTop(ChatSessionReq req);

    RestResponse selectByExample(ChatSessionQuery request);

    int insertSelective(ChatSessionEntity record);

    RestResponse findOneByLiftCase(ChatSessionQuery req);
    
    /**
     * 获取用户的所有有效房间号
     * @param userId 用户id
     * @return
     */
    List<String> findListByUserId(String userId);

    List<ChatSessionEntity> findListBySessionId(String sessionid);

    RestResponse batchUpdateEntrance(ChatSessionReq req);
    
    RestResponse findDBListByUserId(ChatSessionQuery request);

    //系统启动的时候，加载房间用户消息
    List<ChatSessionEntity> findAllSession();
    
    RestResponse createPrivateChatRoom(ChatSessionQuery request);

}
