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

import com.bonus.canteen.core.android.dto.AppDTO;
import com.bonus.canteen.core.android.vo.*;
import com.bonus.canteen.core.cook.domain.CookRecipe;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * 设备绑定多档口子Mapper接口
 *
 * @author xsheng
 * @date 2025-04-03
 */
public interface DeviceMapper {
    /**
     * 查询设备信息
     *
     * @param dto
     * @return 设备绑定多档口子
     */
    DeviceInfoVo getDeviceInfo(AppDTO dto);

    /**
     * 查询设备版本信息
     *
     * @param dto 入参
     * @return 设备绑定多档口子
     */
    AppVersionVo getAppVersion(AppDTO dto);


    /**
     * 查询参数
     *
     * @return 参数
     */
    List<ParamVO> getParamInfo();

    /**
     * 根据设备SN获取菜谱菜品信息
     *
     * @param machineSn 设备SN
     * @return 菜谱菜品信息
     */
    Long getRecipeIdBySn(String machineSn);

    /**
     * 获取设备时间间隔配置
     *
     * @param recipeId 菜谱ID
     * @return 时间间隔配置
     */
    CookRecipe getOneById(Long recipeId);

    /**
     * 获取菜谱菜品信息
     *
     * @param recipeId 菜谱ID
     * @return 菜谱菜品信息
     */
    List<CookMenuAndroidRecipeDetailVO> selectMenuRecipeDetailLists(Long recipeId);

    /**
     * 获取菜谱菜品信息
     *
     * @param detailIds 菜谱详情ID列表
     * @return 菜谱菜品信息
     */
    List<CookRecipeDetailCompressVO> selectRecipeDishList(@Param("detailIds") List<Long> detailIds);

    /**
     * 获取菜谱菜品信息
     *
     * @param dishesIds 菜品ID列表
     * @return 菜谱菜品信息
     */
    List<CookRecipeMealCompressVO> getMenuRecipeListByDishesIds(@Param("dishesIds")List<Long> dishesIds);

    /**
     * 获取设备时间间隔配置
     *
     * @param stallId 档口ID
     * @return 时间间隔配置
     */
    List<CookMealTimeVO> getMealTimeList(@Param("stallId")Long stallId);

    /**
     * 获取设备时间间隔配置
     *
     * @param stallId 档口ID
     * @return 时间间隔配置
     */
    List<DeviceMealtimeVO> getBasicsTimeIntervals(@Param("stallId")Long stallId);
}
