package jnpf.cultivate.service;

import com.baomidou.mybatisplus.extension.service.IService;
import jnpf.model.cultivate.dto.learn.FtbCultivateLearnCategoriesDto;
import jnpf.model.cultivate.po.learn.FtbCultivateLearnCategories;
import jnpf.model.cultivate.req.learn.AddLearnCategoryReq;
import jnpf.model.cultivate.req.learn.QueryLearnCategoryListReq;
import jnpf.model.cultivate.req.learn.UpdateLearnCategoryReq;

import java.util.List;
import java.util.Map;

/**
 * @author 许贵林
 * @descriptionService
 * @createDate 2024-05-08 09:42:09
 */
public interface FtbCultivateLearnCategoriesService extends IService<FtbCultivateLearnCategories> {

    /**
     * 查询全部分类并构建分类tree
     *
     * @param req
     * @return
     */
    List<FtbCultivateLearnCategoriesDto> listCategory(QueryLearnCategoryListReq req);

    /**
     * 新增分类
     *
     * @param req
     * @return
     */
    FtbCultivateLearnCategories insertData(AddLearnCategoryReq req);

    /**
     * 删除分类
     *
     * @param id 分类ID
     */

    void deleteData(String id);

    /**
     * 修改分类
     *
     * @param id 分类ID
     * @param req
     * @return
     */
    FtbCultivateLearnCategories updateData(String id, UpdateLearnCategoryReq req);

    /**
     * 根据分类查询子分类
     *
     * @param parentId 分类ID
     * @return
     */
    List<FtbCultivateLearnCategories> queryChildCategory(String parentId);

    /**
     * 根据id查询并检查分类信息
     *
     * @param id 分类ID
     * @return
     */
    FtbCultivateLearnCategories queryAndCheckById(String id);

    /**
     * 查询子分类的数量
     *
     * @param parentId 分类ID
     * @return
     */
    Long queryChildCategoryNum(String parentId);

    /**
     * 根据分类id查询分类信息
     *
     * @param ids 分类ID集合
     * @return
     */
    Map<String, FtbCultivateLearnCategories> queryCateByIds(List<String> ids);

    /**
     * 根据分类id 查询该分类和他父级分类信息
     *
     * @param cateId 分类id
     * @return 分类信息列表 父级和子级
     */
    List<FtbCultivateLearnCategories> queryCategoryAndParentCategory(String cateId);

}
