package jnpf.notice.service;

import com.baomidou.mybatisplus.extension.service.IService;
import jnpf.model.notice.domain.FtbNoticeCategories;
import jnpf.model.notice.dto.AppNoticeCategoriesDto;
import jnpf.model.notice.dto.FtbNoticeCategoriesDto;
import jnpf.model.notice.req.category.AddCategoryReq;
import jnpf.model.notice.req.category.QueryCategoryListReq;
import jnpf.model.notice.req.category.QueryNextCategoryListReq;
import jnpf.model.notice.req.category.UpdateCategoryReq;

import java.util.List;

/**
 * @author 许贵林
 * @description 针对表【ftb_notice_categories(公告分类表)】的数据库操作Service
 * @createDate 2024-05-08 09:42:09
 */
public interface FtbNoticeCategoriesService extends IService<FtbNoticeCategories> {
    /**
     * 查询所有的通知公告分类
     * @param req
     * @return
     */
    List<FtbNoticeCategoriesDto> listCategory(QueryCategoryListReq req);

    /**
     * 添加分类
     * @param req
     * @return
     */
    FtbNoticeCategories insertData(AddCategoryReq req);

    /**
     * 根据分类id删除分类
     * @param id 分类id
     */
    void deleteData(String id);

    /**
     * 编辑分类
     * @param id 分类id
     * @param req
     * @return
     */
    FtbNoticeCategories updateData(String id, UpdateCategoryReq req);

    /**
     * 查询子分类
     * @param parentId 父分类id
     * @return
     */
    List<FtbNoticeCategories> queryChildCategory(String parentId);

    /**
     * 查询并检查分类
     * @param id 分类id
     * @return
     */
    FtbNoticeCategories queryAndCheckById(String id);

    /**
     * 查询所有分类并返回分类树
     * @return
     */
    List<FtbNoticeCategories> listAll();

    /**
     * 查询子分类
     * @param currCategory
     * @return
     */
    List<String> queryChildCategoryIds(FtbNoticeCategories currCategory);

    /**
     * 查询下级分类
     * @param req
     * @return
     */
    List<FtbNoticeCategoriesDto> nextCatelists(QueryNextCategoryListReq req);

    /**
     * 查询是否有子分类
     * @param list
     * @return
     */
    List<AppNoticeCategoriesDto> fillHasChild(List<FtbNoticeCategoriesDto> list);

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