package com.xinelu.manage.mapper.infocategory;

import java.util.List;

import com.xinelu.manage.domain.infocategory.InfoCategory;

/**
 * 资讯分类Mapper接口
 *
 * @author xinelu
 * @date 2024-04-11
 */
public interface InfoCategoryMapper {
    /**
     * 查询资讯分类
     *
     * @param id 资讯分类主键
     * @return 资讯分类
     */
     InfoCategory selectInfoCategoryById(Long id);

    /**
     * 根据名称查询是否存在类型
     * @param name
     * @return
     */
     InfoCategory selectInfoCategoryByName(String name);

    /**
     * 查询资讯分类列表
     *
     * @param infoCategory 资讯分类
     * @return 资讯分类集合
     */
    List<InfoCategory> selectInfoCategoryList(InfoCategory infoCategory);

    /**
     * 新增资讯分类
     *
     * @param infoCategory 资讯分类
     * @return 结果
     */
    int insertInfoCategory(InfoCategory infoCategory);

    /**
     * 修改资讯分类
     *
     * @param infoCategory 资讯分类
     * @return 结果
     */
    int updateInfoCategory(InfoCategory infoCategory);

    /**
     * 删除资讯分类
     *
     * @param id 资讯分类主键
     * @return 结果
     */
    int deleteInfoCategoryById(Long id);

    /**
     * 批量删除资讯分类
     *
     * @param ids 需要删除的数据主键集合
     * @return 结果
     */
    int deleteInfoCategoryByIds(Long[] ids);


    /**
     * 根据分类名称查询重复分类名称
     *
     * @param categoryNameList 资讯分类名称集合
     * @return List<String>
     */
    List<String> selectInfoCategoryName(List<String> categoryNameList);


    /**
     * 批量新增资讯分类
     *
     * @param infoCategoryList 资讯分类集合
     * @return 数量
     */
    int insertInfoCategoryList(List<InfoCategory> infoCategoryList);

    /**
     * 根据分类名称查询重复分类名称
     *
     * @param infoCategoryName 资讯分类名称
     * @return int
     **/
    int selectInfoCategoryCount(String infoCategoryName);
}
