package org.jeecg.modules.app.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import org.jeecg.common.api.vo.Result;
import org.jeecg.modules.app.vo.CourseInfoVO;
import org.jeecg.modules.app.vo.PlaceInfoVO;
import org.jeecg.modules.app.vo.course.CourseRequestVo;
import org.jeecg.modules.app.vo.course.CourseResponseVo;
import org.jeecg.modules.app.vo.stadium.StadiumConcertsResponseVO;
import org.jeecg.modules.system.app.entity.AppCategory;

import java.util.List;

public interface IDetailService {
    /**
     * @Author SheepHy
     * @Description 门店详情信息查询
     * @Date 19:41 2025/7/7
     * @Param id 门店id
     * @return PlaceInfoVO {@link PlaceInfoVO}
     **/
    PlaceInfoVO getPlaceInfo(String id);
    
    /** 
     * @Author SheepHy
     * @Description 课程详情
     * @Date 13:36 2025/7/8
     * @Param id 课程id
     * @return CourseInfoVO {@link CourseInfoVO}
     **/
    CourseInfoVO getCourseInfo(String id, double latitude, double longitude);

    /**
     * @Author SheepHy
     * @Description 根据课程类型查询课程列表
     * @Date 9:52 2025/7/9
     * @Param type 课程类型
     * @return List<PlaceInfoVO.CourseInfoVO>
     **/
    List<PlaceInfoVO.CourseInfoVO> courseInfoVOList(String categoryId,String id,double longitude,double latitude);
    
    /** 
     * @Author SheepHy
     * @Description 根据类目类型查询体育馆场地空闲时间段(包场 -门店详情页使用)
     * @Date 10:14 2025/7/9
     * @Param id, categoryId
     * @return PlaceInfoVO.theGymnasiumIsCharteredVO
     **/
    PlaceInfoVO.theGymnasiumIsCharteredVO getPlaceInfoNoFixation(String id, String categoryId);

    Result<StadiumConcertsResponseVO> findConcerts(String siteId, String categoryId);

    /**
     * @Author SheepHy
     * @Description 获取所有类目
     * @Date 10:14 2025/7/9
     **/
    List<AppCategory> getAllCategory(String id);

    /**
     * @description 获取所有课程类目
     * params
     * @author SheepHy
     * @date 2025/9/15
     * return   {@link }
     **/
    List<AppCategory> getAllCourseCategory(String id);

    IPage<CourseResponseVo> findByCourseList(CourseRequestVo courseRequestVo);

}
