package com.ruoyi.bst.articleCategory.mapper;

import java.util.List;
import com.ruoyi.bst.articleCategory.domain.ArticleCategory;
import com.ruoyi.bst.articleCategory.domain.ArticleCategoryVO;
import com.ruoyi.bst.articleCategory.domain.ArticleCategoryQuery;
import org.apache.ibatis.annotations.Param;

/**
 * 文章分类Mapper接口
 *
 * @author ruoyi
 * @date 2025-03-27
 */
public interface ArticleCategoryMapper
{
    /**
     * 查询文章分类
     *
     * @param id 文章分类主键
     * @return 文章分类
     */
    ArticleCategoryVO selectArticleCategoryById(Long id);

    /**
     * 查询文章分类列表
     *
     * @param query 文章分类
     * @return 文章分类集合
     */
    List<ArticleCategoryVO> selectArticleCategoryList(@Param("query")ArticleCategoryQuery query);

    /**
     * 新增文章分类
     *
     * @param articleCategory 文章分类
     * @return 结果
     */
    int insertArticleCategory(ArticleCategory articleCategory);

    /**
     * 批量新增文章分类
     */
    int batchInsert(@Param("list") List<? extends ArticleCategory> list);

    /**
     * 批量修改文章分类
     */
    int batchUpdate(@Param("list") List<? extends ArticleCategory> list);

    /**
     * 修改文章分类
     *
     * @param articleCategory 文章分类
     * @return 结果
     */
    public int updateArticleCategory(@Param("data") ArticleCategory articleCategory);

    /**
     * 删除文章分类
     *
     * @param id 文章分类主键
     * @return 结果
     */
    int deleteArticleCategoryById(Long id);




    /**
     * 判断一个类中是否有重复类名存在
     * @param articleCategory
     * @return
     */
    Boolean checkByNameAndParetId(ArticleCategory articleCategory);

    /**
     * 查询子分类
     * @param id
     * @return
     */
    List<ArticleCategoryVO> selectChildrenCategory(Long id);


    /**
     * 批量删除文章分类
     *
     * @param childrenIds 需要删除的数据主键集合
     * @return 结果
     */

    public void deleteArticleCategoryByIds(List<Long> childrenIds);


    public int updateArticleCategorySortAndStatusOnly(ArticleCategory articleCategory);


}
