package com.xinyilu.system.service.testItem;

import com.xinyilu.common.core.domain.AjaxResult;
import com.xinyilu.system.domain.dto.TestItemsDTO;
import com.xinyilu.system.domain.testItem.TestItems;
import com.xinyilu.system.domain.testLevel.TestItemLevel;
import com.xinyilu.system.domain.vo.TestItemsVO;

import java.util.List;

/**
 * 测试项目Service接口
 *
 * @author jihan
 * @date 2022-08-02
 */
public interface ITestItemsService {
    /**
     * 查询测试项目
     *
     * @param id 测试项目主键
     * @return 测试项目
     */
    public TestItemsVO selectTestItemsById(Long id);

    /**
     * 查询测试项目列表
     *
     * @param testItems 测试项目
     * @return 测试项目集合
     */
    public List<TestItemsVO> selectTestItemsList(TestItems testItems);

    /**
     * 新增测试项目
     *
     * @param testItems 测试项目
     * @param createBy  创建人
     * @return 结果
     */
    public AjaxResult insertTestItems(TestItemsDTO testItems, String createBy);

    /**
     * 修改测试项目
     *
     * @param testItems 测试项目
     * @param updateBy  修改人
     * @return 结果
     */
    public AjaxResult updateTestItems(TestItemsDTO testItems, String updateBy);

    /**
     * 批量删除测试项目
     *
     * @param ids 需要删除的测试项目主键集合
     * @return 结果
     */
    public int deleteTestItemsByIds(Long[] ids);

    /**
     * 删除测试项目信息
     *
     * @param id 测试项目主键
     * @return 结果
     */
    public int deleteTestItemsById(Long id);

    /**
     * 逻辑批量删除测试项目
     *
     * @param ids 需要删除的测试项目主键集合
     * @return 结果
     */
    AjaxResult updateTestItemsByIds(Long[] ids);

    /**
     * 根据项目id查询项目成绩级别信息
     *
     * @param itemId 项目id
     * @return List<TestItemLevel> 测试项目级别信息
     */
    List<TestItemLevel> getTestItemLevelInfo(Long itemId);

    /**
     * 根据项目id查询对应的分类信息
     *
     * @param itemId 测试项目id
     * @return 分类信息
     */
    AjaxResult getTestCategoryItemInfo(Long itemId);
}
