package shop.alien.storeplatform.service;

import com.baomidou.mybatisplus.extension.service.IService;
import org.springframework.web.multipart.MultipartFile;
import shop.alien.entity.result.R;
import shop.alien.entity.store.StoreMenu;
import shop.alien.entity.store.vo.StoreMenuVo;

import java.util.List;

/**
 * 二期-门店推荐 服务类
 *
 * @author ssk
 * @since 2024-12-05
 */
public interface StoreMenuPlatformService extends IService<StoreMenu> {

    /**
     * 获取门店菜单
     *
     * @param storeId  门店id
     * @param dishType 菜品类型, 0:菜单, 1:推荐
     * @param phoneId  消息标识
     * @return list
     */
    List<StoreMenuVo> getStoreMenu(Integer storeId, Integer dishType, String phoneId);

    /**
     * 获取菜品详情
     *
     * @param id 菜品id
     * @return StoreMenuVo
     */
    StoreMenuVo getMenuInfo(Integer id);

    /**
     * 新增或修改门店菜单
     *
     * @param storeMenu 菜品信息
     * @return 操作结果
     */
    R<String> saveOrUpdateMenu(StoreMenu storeMenu);

    /**
     * 新增或修改门店菜单
     *
     * @param storeMenuVo 菜品信息
     * @return 操作结果
     */
    R<String> saveOrUpdateMenus(StoreMenuVo storeMenuVo);

    /**
     * 菜品排序
     *
     * @param storeMenuVo 排序信息
     * @return 处理结果
     */
    Boolean getSortMenuInfo(StoreMenuVo storeMenuVo);

    /**
     * 保存菜品排序
     *
     * @param storeMenuList 排序列表
     * @return 处理结果
     */
    Boolean saveMenuSort(List<StoreMenu> storeMenuList);

    /**
     * 删除门店菜单
     *
     * @param ids      菜品ID集合
     * @param dishType 菜品类型
     * @return 操作结果
     */
    R deleteMenu(List<Integer> ids, int dishType);

    /**
     * 获取门店菜品推荐数量
     *
     * @param storeId 门店id
     * @return 统计数据
     */
    StoreMenuVo getMenuCountByStoreId(int storeId);

    /**
     * 获取用户对该菜品是否点赞
     *
     * @param userId 用户id
     * @param menuId 菜品id
     * @return boolean
     */
    boolean getMenuLikeStatus(String userId, Integer menuId);

    /**
     * Excel导入门店菜单
     *
     * @param file     Excel文件
     * @param storeId  门店id
     * @return 导入结果
     */
    R<String> importMenuFromExcel(MultipartFile file, Integer storeId);
}


