package shop.alien.store.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import shop.alien.entity.store.vo.PerformanceDetailVo;
import shop.alien.entity.store.vo.PerformanceGroupListVo;
import shop.alien.entity.store.vo.PerformanceListVo;

/**
 * 演出列表服务接口
 * 提供用户端演出列表查询功能
 *
 * @author system
 * @since 2025-01-XX
 */
public interface PerformanceListService {

    /**
     * 查询演出列表（用户端）
     * <p>
     * 根据店铺ID查询演出列表，支持分页
     * 只返回当前店铺下已上线、未删除的演出
     * </p>
     *
     * @param page    分页页数，必须大于0
     * @param size    分页条数，必须大于0
     * @param storeId 店铺ID，必须大于0
     * @return 演出列表分页结果
     */
    IPage<PerformanceListVo> queryPerformanceList(Integer page, Integer size, Integer storeId);

    /**
     * 查询按日期分组的演出列表（用户端）
     * <p>
     * 根据店铺ID查询演出列表，按日期分组返回
     * 只返回审核通过、已上线、未删除的演出
     * 返回未来30天内有演出的日期及其对应的演出列表
     * </p>
     *
     * @param storeId 店铺ID，必须大于0
     * @return 按日期分组的演出列表
     */
    PerformanceGroupListVo queryPerformanceListGroupByDate(Integer storeId);

    /**
     * 查询演出详情（用户端）
     * <p>
     * 根据演出ID查询演出详细信息
     * 包含演出基本信息、演出时间、演出风格、演出详情描述和演出嘉宾列表
     * </p>
     *
     * @param id 演出ID，必须大于0
     * @return 演出详情，如果演出不存在则返回null
     */
    PerformanceDetailVo queryPerformanceDetail(Integer id);
}

