package jnpf.cultivate.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.github.pagehelper.PageInfo;
import jnpf.entity.cultivate.TeachingSkill;
import jnpf.model.cultivate.dto.teaching.TeachingSkillAddDto;
import jnpf.model.cultivate.dto.teaching.TeachingSkillPageDto;
import jnpf.model.cultivate.dto.teaching.TeachingSkillSortDto;
import jnpf.model.cultivate.dto.teaching.TeachingSkillUpdateDto;
import jnpf.model.cultivate.v2.exam.vo.ImportObjectVo;
import jnpf.model.cultivate.v2.exam.vo.SkillVo;
import jnpf.model.cultivate.vo.teaching.SkillInfoVo;
import jnpf.model.cultivate.vo.teaching.TeachingSkillVo;

import javax.validation.Valid;
import java.util.List;

public interface TeachingSkillService extends IService<TeachingSkill> {
    /**
     * 新增
     *
     * @param addDto 新增
     * @return boolean
     */
    Boolean addData(TeachingSkillAddDto addDto);

    /**
     *  删除
     * @param id 删除参数
     * @return boolean
     */
    Boolean deleteData(String id);

    /**
     * 修改
     * @param updateDto 修改参数
     * @return boolean
     */
    Boolean updateData(TeachingSkillUpdateDto updateDto);

    /**
     * 查询
     * @param id 查询参数
     * @return APP技能点
     */
    TeachingSkillVo getData(String id);

    /**
     * 列表
     * @param pageDto 列表参数
     * @return APP技能点
     */
    PageInfo<TeachingSkillVo> pageList(TeachingSkillPageDto pageDto);

    /**
     * 排序
     * @return 技能点集合
     */
    List<TeachingSkillVo> selectDataList();

    /**
     * 排序
     * @param sortDto 排序参数
     * @return 排序结果
     */
    Boolean sort(@Valid TeachingSkillSortDto sortDto);

    /**
     * 查询分类下的技能点
     * @param categoryId 分类id
     * @return java.util.List<java.lang.String>
     */
    List<String> querySkillIds(String categoryId);

    /**
     * 查询重复的技能点index
     * @param list 技能点导入数据
     * @return java.util.List<java.lang.Integer>
     */
    List<Integer> getDistinctCountBatch(List<ImportObjectVo> list);

    /**
     * 保存导入的技能点
     * @param list 技能点数据
     */
    void saveImportData(List<ImportObjectVo> list);

    /**
     * 查询技能点列表[下拉]
     * @param skillId 技能点id
     * @param categoryId 分类id
     * @return java.util.List<jnpf.model.cultivate.v2.exam.vo.SkillVo>
     */
    List<SkillVo> getDownSkillList(String skillId, String categoryId);

    /**
     * 查询技能点[树形]
     * @return java.util.List<jnpf.model.cultivate.vo.teaching.SkillInfoVo>
     */
    List<SkillInfoVo> getAllSkillList();

    /**
     * 查询有子级的分类
     * @param categoryIds 分类ids
     * @return java.util.List<java.lang.String>
     */
    List<String> getCategoryHasChild(List<String> categoryIds);
}