package com.tourism.webadmin.back.dao;

import com.tourism.common.core.base.dao.BaseDaoMapper;
import com.tourism.webadmin.app.website.model.TourShortImGroup;
import com.tourism.webadmin.app.website.vo.TourShortImGroupVo;
import com.tourism.webadmin.back.model.TourImGroup;
import com.tourism.webadmin.back.model.TourImGroupInvitation;
import com.tourism.webadmin.back.model.TourImMember;
import com.tourism.webadmin.back.model.TourImMessage;
import org.apache.ibatis.annotations.Param;

import java.util.*;

/**
 * 聊天群聊管理数据操作访问接口。
 *
 * @author 吃饭睡觉
 * @date 2024-09-06
 */
public interface TourImGroupMapper extends BaseDaoMapper<TourImGroup> {

    /**
     * 批量插入对象列表。
     *
     * @param tourImGroupList 新增对象列表。
     */
    void insertList(List<TourImGroup> tourImGroupList);

    /**
     * 获取过滤后的对象列表。
     *
     * @param tourImGroupFilter 主表过滤对象。
     * @param orderBy 排序字符串，order by从句的参数。
     * @return 对象列表。
     */
    List<TourImGroup> getTourImGroupList(
            @Param("tourImGroupFilter") TourImGroup tourImGroupFilter, @Param("orderBy") String orderBy);

    /**
     * 获取过滤后的对象列表。同时支持基于一对一从表字段的过滤条件。
     *
     * @param tourImGroupFilter 主表过滤对象。
     * @param tourImGroupInvitationFilter 一对多从表过滤对象。
     * @param tourImMemberFilter 一对多从表过滤对象。
     * @param tourImMessageFilter 一对多从表过滤对象。
     * @param orderBy 排序字符串，order by从句的参数。
     * @return 对象列表。
     */
    List<TourImGroup> getTourImGroupListEx(
            @Param("tourImGroupFilter") TourImGroup tourImGroupFilter,
            @Param("tourImGroupInvitationFilter") TourImGroupInvitation tourImGroupInvitationFilter,
            @Param("tourImMemberFilter") TourImMember tourImMemberFilter,
            @Param("tourImMessageFilter") TourImMessage tourImMessageFilter,
            @Param("orderBy") String orderBy);

    /**
     * 获取过滤后的对象列表。
     *
     * @param userId 用户id。
     * @param name 昵称。
     * @return 对象列表。
     */
    List<TourShortImGroup> getTakePartImGroupListByName(
            @Param("userId") Long userId,@Param("name") String name);
}
