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.storeplatform.entity.StorePlatformSportsEquipmentFacility;

import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.List;

/**
 * 商户平台-运动器材设施服务类
 *
 * @author system
 * @since 2025-01-XX
 */
public interface StorePlatformSportsEquipmentFacilityService extends IService<StorePlatformSportsEquipmentFacility> {

    /**
     * 根据ID查询设施
     *
     * @param id 设施ID
     * @return 设施信息
     */
    StorePlatformSportsEquipmentFacility getById(Integer id);

    /**
     * 根据门店ID查询设施列表
     *
     * @param storeId 门店ID
     * @return 设施列表
     */
    List<StorePlatformSportsEquipmentFacility> getListByStoreId(Integer storeId);

    /**
     * 根据门店ID和设施分类查询设施列表
     *
     * @param storeId         门店ID
     * @param facilityCategory 设施分类(1:有氧区, 2:力量区, 3:单功能机械区)
     * @return 设施列表
     */
    List<StorePlatformSportsEquipmentFacility> getListByStoreIdAndCategory(Integer storeId, Integer facilityCategory);

    /**
     * 新增设施
     *
     * @param facility 设施信息
     * @return 操作结果
     */
    R<String> saveFacility(StorePlatformSportsEquipmentFacility facility);

    /**
     * 修改设施
     *
     * @param facility 设施信息
     * @return 操作结果
     */
    R<String> updateFacility(StorePlatformSportsEquipmentFacility facility);

    /**
     * 新增或修改设施
     *
     * @param facility 设施信息
     * @return 操作结果
     */
    R<String> saveOrUpdateFacility(StorePlatformSportsEquipmentFacility facility);

    /**
     * 删除设施（逻辑删除）
     *
     * @param id 设施ID
     * @return 操作结果
     */
    R<String> deleteFacility(Integer id);

    /**
     * 批量删除设施（逻辑删除）
     *
     * @param ids 设施ID列表
     * @return 操作结果
     */
    R<String> deleteFacilityBatch(List<Integer> ids);

    /**
     * Excel导入运动健身设施
     *
     * @param file     Excel文件
     * @param storeId  门店id
     * @return 导入结果
     */
    R<String> importFacilityFromExcel(MultipartFile file, Integer storeId);
}
