package com.tourism.webadmin.back.dao;

import com.tourism.common.core.base.dao.BaseDaoMapper;
import com.tourism.webadmin.app.website.vo.NotesViewsVo;
import com.tourism.webadmin.back.model.TourTravelNotesTopic;
import com.tourism.webadmin.back.model.TourismProjectTravelNotesWrite;
import org.apache.ibatis.annotations.Param;

import java.util.*;

/**
 * 游记话题数据操作访问接口。
 *
 * @author 吃饭睡觉
 * @date 2024-09-06
 */
public interface TourTravelNotesTopicMapper extends BaseDaoMapper<TourTravelNotesTopic> {

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

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

    /**
     * 根据游记话题名称查询话题浏览量
     *
     * @return 查询结果集。
     */
    Integer getViewCountTopicByName(String name,String titleName);

    /**
     * 根据游记话题名称查询话题浏览量
     *
     * @return 查询结果集。
     */
    List<NotesViewsVo> getViewCountListTopicByName(List<Long> idList);

    /**
     * 根据游记话题名称查询话题浏览量
     *
     * @return 查询结果集。
     */
    Integer getCommentCountTopicByName(String name,String titleName);

    /**
     * 根据游记话题名称查询游记的数量
     *
     * @return 查询结果集。
     */
    Integer getCountTravelNotesByName(String name,String titleName);

    /**
     * 根据游记话题名称查询关联的游记id
     *
     * @return 查询结果集。
     */
    List<TourismProjectTravelNotesWrite> getTravelNotesByTopicName(String name,String orderBy);
}
