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

import com.bonus.canteen.core.cook.dto.AppletDishesDetailDTO;
import com.bonus.canteen.core.cook.dto.CookH5WeekDetailsDTO;
import com.bonus.canteen.core.cook.dto.UserInfoDTO;
import com.bonus.canteen.core.cook.vo.*;
import org.apache.ibatis.annotations.MapKey;
import org.apache.ibatis.annotations.Param;

import java.time.LocalDate;
import java.util.List;
import java.util.Map;
import java.util.Set;

/**
 * @author xliu
 * @date 2025/5/28 9:25
 */
public interface CookH5Mapper {

    List<CookH5WeekCanteenListVO> getWeekCanteenList(UserInfoDTO userInfoDTO);

    List<CookH5WeekDetailsVO> getWeekRecipeDetail(CookH5WeekDetailsDTO dto);


    List<CookH5ReserveCanteenListVO> selectReserveMealCanteenList(UserInfoDTO dto);

    List<StallMonthSalesVO> selectMonthSalesStall(@Param("stallIdList")List<Long> stallIdList);

    List<Long> selectTopDishesIdList(@Param("stallIdList")List<Long> longs);

    List<CookH5ReserveDishesVO> selectAllRecipeDishesList(Long recipeId);

    List<CookH5ReserveRecipeDetailsVO> selectReserveRecipe(@Param("applyDate")LocalDate applyDate, @Param("recipeId")Long recipeId);

    List<CookH5ReserveMealtimeStateVO> getCookMealtimeListByStallId(@Param("stallIdSet") Set<Long> recipeIdSet);

    List<CookH5ReserveDishesNutritionVO> selectNutrition(@Param("dishesIdSet") Set<Long> dishesIdSet);

    List<Long> selectRecipeIdList();

    List<Long> recipeIdMap(@Param("recipeIdList")List<Long> recipeIdList, @Param("applyDate")LocalDate applyDate);

    AppletDishesDetailVO selectDishesDetailByDishesId(AppletDishesDetailDTO dto);

    List getMenuMaterialById(Long dishesId);
}
