package com.bonus.canteen.core.cook.mapper;

import java.util.List;
import com.bonus.canteen.core.cook.domain.CookNutritionType;
import com.bonus.canteen.core.cook.vo.NutritionTypeVO;
import org.apache.ibatis.annotations.Param;

/**
 * 食材营养基础类型Mapper接口
 * 
 * @author xsheng
 * @date 2025-05-25
 */
public interface CookNutritionTypeMapper {
    /**
     * 查询食材营养基础类型
     * 
     * @param nutritionTypeId 食材营养基础类型主键
     * @return 食材营养基础类型
     */
    public CookNutritionType selectCookNutritionTypeByNutritionTypeId(Long nutritionTypeId);

    /**
     * 查询食材营养基础类型列表
     * 
     * @param cookNutritionType 食材营养基础类型
     * @return 食材营养基础类型集合
     */
    public List<CookNutritionType> selectCookNutritionTypeList(CookNutritionType cookNutritionType);

    /**
     * 新增食材营养基础类型
     * 
     * @param cookNutritionType 食材营养基础类型
     * @return 结果
     */
    public int insertCookNutritionType(CookNutritionType cookNutritionType);

    /**
     * 修改食材营养基础类型
     * 
     * @param cookNutritionType 食材营养基础类型
     * @return 结果
     */
    public int updateCookNutritionType(CookNutritionType cookNutritionType);

    /**
     * 删除食材营养基础类型
     * 
     * @param nutritionTypeId 食材营养基础类型主键
     * @return 结果
     */
    public int deleteCookNutritionTypeByNutritionTypeId(Long nutritionTypeId);

    /**
     * 批量删除食材营养基础类型
     * 
     * @param nutritionTypeIds 需要删除的数据主键集合
     * @return 结果
     */
    public int deleteCookNutritionTypeByNutritionTypeIds(Long[] nutritionTypeIds);
    /**
     * 根据名称查询食材营养基础类型
     *
     * @param nutritionTypeName 食材营养基础类型名称
     * @param nutritionTypeId 食材营养基础类型id
     * @return 食材营养基础类型
     */
    CookNutritionType selectCookNutritionTypeByNutritionTypeName(@Param("nutritionTypeName") String nutritionTypeName, @Param("nutritionTypeId") Long nutritionTypeId);
    /**
     * 根据id查询食材营养基础类型是否存在子级
     *
     * @param nutritionTypeIds 食材营养基础类型id
     * @return 结果
     */
    int checkIsExistChildren(@Param("nutritionTypeIds") Long[] nutritionTypeIds);

    /**
     * 获取所有食材类别
     * @return 食材类别列表
     */
    public List<NutritionTypeVO> selectBigTypeList();
    /**
     * 获取所有食材小类
     * @param id 食材营养基础类型id
     * @return 食材小类列表
     */
    public List<NutritionTypeVO> selectLittleTypeList(String id);
}
