package com.bonus.canteen.core.menu.service;

import java.util.List;

import com.baomidou.mybatisplus.extension.service.IService;
import com.bonus.canteen.core.menu.domain.MenuMaterialCategory;
import com.bonus.canteen.core.menu.dto.CategoryTreeListDTO;
import com.bonus.canteen.core.menu.dto.MenuMaterialCategoryAddDTO;
import com.bonus.canteen.core.menu.vo.MenuCategoryTreeVO;

/**
 * 原料类别Service接口
 *
 * @author xsheng
 * @date 2025-04-03
 */
public interface IMenuMaterialCategoryService extends IService<MenuMaterialCategory> {
    /**
     * 查询原料类别
     *
     * @param id 原料类别主键
     * @return 原料类别
     */
    public MenuMaterialCategory selectMenuMaterialCategoryById(Long id);

    /**
     * 查询原料类别列表
     *
     * @param menuMaterialCategory 原料类别
     * @return 原料类别集合
     */
    public List<MenuMaterialCategory> selectMenuMaterialCategoryList(MenuMaterialCategory menuMaterialCategory);

    /**
     * 新增原料类别
     *
     * @param menuMaterialCategory 原料类别
     * @return 结果
     */
    public int insertMenuMaterialCategory(MenuMaterialCategoryAddDTO menuMaterialCategory);

    /**
     * 修改原料类别
     *
     * @param menuMaterialCategory 原料类别
     * @return 结果
     */
    public int updateMenuMaterialCategory(MenuMaterialCategory menuMaterialCategory);

    /**
     * 批量删除原料类别
     *
     * @param ids 需要删除的原料类别主键集合
     * @return 结果
     */
    public int deleteMenuMaterialCategoryByIds(String[] ids);

    /**
     * 删除原料类别信息
     *
     * @param id 原料类别主键
     * @return 结果
     */
    public int deleteMenuMaterialCategoryById(Long id);

    List<MenuCategoryTreeVO> getTree(CategoryTreeListDTO content);

    void syncAllCategoryBigCategoryAndLevel();

    void generateCategoryNum(Long categoryId, Long parentId, Integer categoryType);
}
