package com.yonge.cooleshow.biz.dal.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import com.yonge.cooleshow.auth.api.entity.SysUser;
import com.yonge.cooleshow.biz.dal.dto.ActivityEvaluationDto;
import com.yonge.cooleshow.biz.dal.dto.activity.ActivityTeacherQuery;
import com.yonge.cooleshow.biz.dal.dto.search.MusicSheetSearch;
import com.yonge.cooleshow.biz.dal.vo.ActivityEvaluationVo;
import com.yonge.cooleshow.biz.dal.dto.search.ActivityEvaluationSearch;
import com.yonge.cooleshow.biz.dal.entity.ActivityEvaluation;
import com.yonge.cooleshow.biz.dal.vo.ActivityMusicVo;
import com.yonge.cooleshow.biz.dal.vo.MusicSheetVo;
import com.yonge.cooleshow.biz.dal.vo.activity.ActivityTeacherWrapper;

import java.util.List;

/**
 * 评测活动表 服务类
 * @author liweifan
 * @date 2022-08-04
 */
public interface ActivityEvaluationService extends IService<ActivityEvaluation>  {

	/**
     * 查询详情
     * @author liweifan
 	 * @date 2022-08-04
     */
	ActivityEvaluationVo detail(Long id);

    /**
     * 分页查询
     * @author liweifan
 	 * @date 2022-08-04
     */
    IPage<ActivityEvaluationVo> selectPage(IPage<ActivityEvaluationVo> page, ActivityEvaluationSearch query);

	List<ActivityEvaluationVo> selectAll(ActivityEvaluationSearch query);

	/**
	 * 为活动
	 * @param param
	 * @return
	 */
    Boolean addBatch(ActivityEvaluationDto param, SysUser user);

	/**
	 * 获取活动曲目细腻
	 *
	 * @param activityPlanId 活动id
	 * @param userId
	 * @return
	 */
    List<ActivityMusicVo> getActivityMusic(Long activityPlanId, Long userId);

	/**
	 * 查询曲目分页
	 * @param page
	 * @param query
	 * @return
	 */
	IPage<MusicSheetVo> musicPage(IPage<MusicSheetVo> page, MusicSheetSearch query);

	/**
	 * 活动老师信息
	 * @param page ActivityTeacherWrapper
	 * @param query ActivityTeacherQuery
	 * @return IPage<ActivityTeacherWrapper>
	 */
	IPage<ActivityTeacherWrapper> activityTeacherPageInfo(IPage<ActivityTeacherWrapper> page, ActivityTeacherQuery query);

	/**
	 * 按活动时间匹配老师信息
	 * @param page IPage<ActivityTeacherWrapper>
	 * @param query ActivityTeacherQuery
	 * @return IPage<ActivityTeacherWrapper>
	 */
	IPage<ActivityTeacherWrapper> activityTeacherByTimePageInfo(IPage<ActivityTeacherWrapper> page, ActivityTeacherQuery query);

	/**
	 * 批量更新评测曲目信息
	 * @param user SysUser
	 * @param info ActivityEvaluationDto
	 * @return int
	 */
    int batchUpdateEvaluationInfo(SysUser user, ActivityEvaluationDto info);
}