package com.xinyilu.system.mapper.testcategoryitem;

import com.xinyilu.system.domain.testcategoryitem.TestCategoryItem;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * 测试分类和测试项目关系Mapper接口
 *
 * @author xinyilu
 * @date 2022-11-03
 */
public interface TestCategoryItemMapper {
    /**
     * 查询测试分类和测试项目关系
     *
     * @param id 测试分类和测试项目关系主键
     * @return 测试分类和测试项目关系
     */
    TestCategoryItem selectTestCategoryItemById(Long id);

    /**
     * 查询测试分类和测试项目关系列表
     *
     * @param testCategoryItem 测试分类和测试项目关系
     * @return 测试分类和测试项目关系集合
     */
    List<TestCategoryItem> selectTestCategoryItemList(TestCategoryItem testCategoryItem);

    /**
     * 新增测试分类和测试项目关系
     *
     * @param testCategoryItem 测试分类和测试项目关系
     * @return 结果
     */
    int insertTestCategoryItem(TestCategoryItem testCategoryItem);

    /**
     * 修改测试分类和测试项目关系
     *
     * @param testCategoryItem 测试分类和测试项目关系
     * @return 结果
     */
    int updateTestCategoryItem(TestCategoryItem testCategoryItem);

    /**
     * 删除测试分类和测试项目关系
     *
     * @param id 测试分类和测试项目关系主键
     * @return 结果
     */
    int deleteTestCategoryItemById(Long id);

    /**
     * 批量删除测试分类和测试项目关系
     *
     * @param ids 需要删除的数据主键集合
     * @return 结果
     */
    int deleteTestCategoryItemByIds(Long[] ids);

    /**
     * 批量新增测试项目分类关系表信息
     *
     * @param testCategoryItemList 分类集合
     * @return 数量
     */
    int insertBatchTestCategoryInfo(@Param("categoryItemList") List<TestCategoryItem> testCategoryItemList);

    /**
     * 批量删除测试分类和测试项目关系
     *
     * @param itemId         测试项目id
     * @param categoryIdList 分类id集合
     * @return 结果
     */
    int deleteCategoryItemByCategoryIds(@Param("itemId") Long itemId, @Param("categoryIdList") List<Long> categoryIdList);

    /**
     * 批量逻辑删除测试项目分类关系表信息
     *
     * @param categoryIds 分类id
     * @return 数量
     */
    int updateTestCategoryItems(Long[] categoryIds);

    /**
     * 根据项目id查询对应的所属分类id集合
     *
     * @param itemId 项目id
     * @return 分类id集合
     */
    List<Long> getItemCategoryIds(Long itemId);
}
