package com.dora.service;

import com.dora.dto.CategoryCreateDto;
import com.dora.dto.CategoryDto;
import com.dora.dto.CategoryListDto;
import com.dora.dto.CategoryUpdateDto;
import com.dora.dto.PageResultDto;

import java.util.List;

/**
 * 类目服务接口
 */
public interface CategoryService {
    
    /**
     * 根据类型获取启用的类目列表（用户端）
     */
    List<CategoryDto> getEnabledCategoriesByType(Integer type);
    
    /**
     * 获取所有启用的类目列表（用户端）
     */
    List<CategoryDto> getAllEnabledCategories();
    
    /**
     * 分页获取类目列表（管理员）
     */
    PageResultDto<CategoryListDto> getCategoriesByPage(Integer type, int page, int size);
    
    /**
     * 根据ID获取类目详情（管理员）
     */
    CategoryDto getCategoryById(Long id);
    
    /**
     * 创建类目（管理员）
     */
    CategoryDto createCategory(CategoryCreateDto createDto);
    
    /**
     * 更新类目（管理员）
     */
    CategoryDto updateCategory(CategoryUpdateDto updateDto);
    
    /**
     * 删除类目（管理员）
     */
    void deleteCategory(Long id);
    
    /**
     * 批量更新排序（管理员）
     */
    void batchUpdateSortOrder(List<CategoryUpdateDto> updateDtos);
    
    /**
     * 检查类目名称是否重复
     */
    boolean isNameExists(String name, Integer type, Long excludeId);

    /**
     * 迁移课程分类数据：将老的category字段同步到新的category_id字段
     * @return 迁移结果信息
     */
    String migrateCourseData();
}
