package com.tourism.webadmin.app.website.service;

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

import com.tourism.webadmin.app.website.dto.*;
import com.tourism.webadmin.app.website.vo.MainMemberVo;
import com.tourism.webadmin.back.model.TourImGroup;
import com.tourism.webadmin.back.model.TourImMember;
import com.tourism.webadmin.back.model.TourUser;

import java.util.List;
import java.util.Map;
import java.util.Set;

public interface TourMemberService extends IService<TourImMember> {

    /**
     *  获取登录用户会话列表
     * @param params
     * @return {@link List }<{@link MainMemberVo }>
     */

    UserMainMemberVo getTourMemberList(GetMainMemberDto params,Long userId);

    /**
     *  修改会话信息
     * @param params
     */
    boolean updateTourMember(UpdateTourMemberDto params);

    /**
     *  获取 互关列表
     * @param groupId
     * @return {@link List }<{@link TourUser }>
     */
    List<TourUser> memberLit(Long groupId);


    /**
     * 移除群聊
     * @param params
     */
    void removeMember(RemoveMemberDto params);

    /**
     * 修改单聊会话信息
     * @param params
     */
    boolean updateSingleTourMember(UpdateSingleTourMemberDto params);

    /**
     *  邀请入群
     * @param group
     * @param userId
     */

    boolean invite(TourImGroup group, List<TourUser> userId);

    /**
     *  判断用户集合是否在群内
     * @param userIds
     * @param groupId
     * @return {@link Set }<{@link Long }> 返回已经在群里的用户ID
     */
    Set<Long> isExist(List<Long> userIds, Long groupId);

    //根据群查询群成员 groupId  -> list<user>
    Map<String,Set<TourUser>> getUserByGroupId(List<String> ids);


    /**
     *  新用户注册时创建新固定的 系统消息会话和互动消息会话
     * @param userId 用户ID
     */
    void createUserMember(String userId);


}
