package com.kexue.skills.service;

import com.github.pagehelper.PageInfo;
import com.kexue.skills.entity.CmsCategory;
import com.kexue.skills.entity.dto.CmsCategoryDto;

import java.util.List;

/**
 * (CmsCategory)表服务接口
 *
 * @author 王志维
 * @since 2025-02-21 23:01:48
 */
public interface CmsCategoryService extends BaseService {
    /**
     * 分页查询
     *
     * @param queryDto 筛选条件
     * @return 查询结果
     */
    PageInfo<CmsCategory> getPageList(CmsCategoryDto queryDto);

    /**
     * 查询列表
     *
     * @param queryDto 筛选条件
     * @return 查询结果
     */
    List<CmsCategory> getList(CmsCategoryDto queryDto);

    /**
     * 通过主键查询单条数据
     *
     * @param categoryId 主键
     * @return 实例对象
     */
    CmsCategory queryById(Long categoryId);

    /**
     * 新增数据
     *
     * @param cmsCategory 实例对象
     * @return 实例对象
     */
    CmsCategory insert(CmsCategory cmsCategory);

    /**
     * 更新数据
     *
     * @param cmsCategory 实例对象
     * @return 实例对象
     */
    CmsCategory update(CmsCategory cmsCategory);

    /**
     * 通过主键逻辑删除
     *
     * @param categoryId 主键
     * @param updateBy 更新人
     * @return 影响行数
     */
    int logicDeleteById(Long categoryId, String updateBy);

    /**
     * 通过主键物理删除
     *
     * @param categoryId 主键
     * @return 影响行数
     */
    int deleteById(Long categoryId);
    
    /**
     * 查询分类树列表
     *
     * @return 分类树列表
     */
    List<CmsCategory> getCategoryTreeList();
    
    /**
     * 获取分类字典
     *
     * @return 分类字典，key为分类ID，value为分类名称
     */
    java.util.Map<Long, String> getCategoryDict();
}