package shop.alien.store.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import shop.alien.entity.store.FitnessEquipmentInfo;

import java.util.List;

/**
 * 健身设备信息服务接口
 *
 * @author system
 * @since 2025-01-XX
 */
public interface FitnessEquipmentInfoService extends IService<FitnessEquipmentInfo> {

    /**
     * 分页查询健身设备信息列表
     *
     * @param pageNum       页码
     * @param pageSize      页大小
     * @param equipmentType 设备类型(1:心肺训练, 2:核心训练, 3:臀腿训练, 4:上肢训练, 5:全身训练, 6:其他)，可选
     * @param equipmentName 设备名称（模糊查询），可选
     * @param status        状态(0:禁用, 1:启用)，可选
     * @return 健身设备信息分页列表
     */
    IPage<FitnessEquipmentInfo> getPageList(Integer pageNum, Integer pageSize, 
                                            Integer equipmentType, String equipmentName, Integer status);

    /**
     * 查询健身设备信息列表
     *
     * @param equipmentType 设备类型(1:心肺训练, 2:核心训练, 3:臀腿训练, 4:上肢训练, 5:全身训练, 6:其他)，可选
     * @param status        状态(0:禁用, 1:启用)，可选
     * @return 健身设备信息列表
     */
    List<FitnessEquipmentInfo> getList(Integer equipmentType, Integer status);

    /**
     * 根据设备类型查询设备列表（用于前端分类展示）
     *
     * @param equipmentType 设备类型(1:心肺训练, 2:核心训练, 3:臀腿训练, 4:上肢训练, 5:全身训练, 6:其他)
     * @return 健身设备信息列表
     */
    List<FitnessEquipmentInfo> getListByType(Integer equipmentType);

    /**
     * 根据ID查询健身设备信息详情
     *
     * @param id 主键ID
     * @return 健身设备信息
     */
    FitnessEquipmentInfo getDetailById(Integer id);

    /**
     * 新增健身设备信息
     *
     * @param fitnessEquipmentInfo 健身设备信息对象
     * @return true表示新增成功，false表示新增失败
     */
    boolean saveEquipment(FitnessEquipmentInfo fitnessEquipmentInfo);

    /**
     * 修改健身设备信息
     *
     * @param fitnessEquipmentInfo 健身设备信息对象
     * @return true表示修改成功，false表示修改失败
     */
    boolean updateEquipment(FitnessEquipmentInfo fitnessEquipmentInfo);

    /**
     * 删除健身设备信息（逻辑删除）
     *
     * @param id 主键ID
     * @return true表示删除成功，false表示删除失败
     */
    boolean deleteEquipment(Integer id);

    /**
     * 启用/禁用健身设备信息
     *
     * @param id     主键ID
     * @param status 状态(0:禁用, 1:启用)
     * @return true表示操作成功，false表示操作失败
     */
    boolean updateStatus(Integer id, Integer status);
}

