package shop.alien.store.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import shop.alien.entity.store.DrinkInfo;
import shop.alien.entity.store.vo.DrinkInfoVo;

import java.util.List;

/**
 * 酒水餐食信息表 服务类
 * 注意：drink_info 表已废弃，现在基于 store_menu 表实现
 *
 * @author ssk
 * @since 2025-06-13
 */
public interface DrinkInfoService {

    /**
     * 分页查询酒水餐食列表
     *
     * @param page         页码
     * @param size         页容
     * @param storeId      门店ID
     * @param type         类型（1:菜品，2:酒水）
     * @param category     分类
     * @param name         名称关键词
     * @param createUserId 创建人ID（只查询指定用户创建的）
     * @return IPage<DrinkInfoVo>
     */
    IPage<DrinkInfoVo> getDrinkInfoPage(int page, int size, Integer storeId, Integer type, String category, String name, Integer createUserId);

    /**
     * 根据ID查询酒水餐食详情
     *
     * @param id 主键ID
     * @return DrinkInfoVo
     */
    DrinkInfoVo getDrinkInfoById(Integer id);

    /**
     * 新增酒水餐食
     *
     * @param drinkInfo 酒水餐食信息
     * @return boolean
     */
    boolean saveDrinkInfo(DrinkInfo drinkInfo);

    /**
     * 修改酒水餐食
     *
     * @param drinkInfo 酒水餐食信息
     * @return boolean
     */
    boolean updateDrinkInfo(DrinkInfo drinkInfo);

    /**
     * 删除酒水餐食（软删除）
     *
     * @param id 主键ID
     * @return boolean
     */
    boolean deleteDrinkInfo(Integer id);

    /**
     * 上下架酒水餐食
     *
     * @param id     主键ID
     * @param status 状态（0:下架, 1:上架）
     * @return boolean
     */
    boolean updateStatus(Integer id, Integer status);

    /**
     * 设置酒水餐食推荐
     *
     * @param id            主键ID
     * @param isRecommended 是否推荐（0:否, 1:是）
     * @return boolean
     */
    boolean updateIsRecommended(Integer id, Integer isRecommended);

    /**
     * 更新酒水餐食排序
     *
     * @param id   主键ID
     * @param sort 排序值
     * @return boolean
     */
    boolean updateSort(Integer id, Integer sort);

    /**
     * 根据门店ID查询所有酒水餐食
     *
     * @param storeId 门店ID
     * @param type    类型（1:菜品，2:酒水）
     * @return List<DrinkInfoVo>
     */
    List<DrinkInfoVo> getDrinkInfoListByStoreId(Integer storeId, Integer type);

    /**
     * 查询推荐酒水餐食列表
     *
     * @param storeId      门店ID
     * @param createUserId 创建人ID（只查询指定用户创建的）
     * @return List<DrinkInfoVo>
     */
    List<DrinkInfoVo> getRecommendedList(Integer storeId, Integer createUserId);

    /**
     * 批量更新酒水餐食排序
     *
     * @param drinkInfoList 酒水餐食列表（包含id和sort字段）
     * @return boolean
     */
    boolean batchUpdateSort(List<DrinkInfo> drinkInfoList);
}
