package com.ym.mec.biz.dal.dao;

import com.ym.mec.biz.dal.entity.CourseSchedule;
import com.ym.mec.biz.dal.entity.MusicGroupOrganizationCourseSettingsDetail;
import com.ym.mec.biz.dal.entity.MusicGroupPaymentCalenderCourseSettings;
import com.ym.mec.common.dal.BaseDAO;

import org.apache.ibatis.annotations.Param;

import java.util.List;
import java.util.Set;

public interface MusicGroupPaymentCalenderCourseSettingsDao extends BaseDAO<Integer, MusicGroupPaymentCalenderCourseSettings> {

	/**
	 * @param calenderId:
	 * @return java.util.List<com.ym.mec.biz.dal.entity.MusicGroupPaymentCalenderCourseSettings>
	 * @describe 获取指定缴费日历的课程价格设置
	 * @author Joburgess
	 * @date 2020.10.27
	 */
	List<MusicGroupPaymentCalenderCourseSettings> getWithPaymentCalender(@Param("calenderId") Long calenderId);

	/**
	 * @param calenderId:
	 * @param courseType:
	 * @return com.ym.mec.biz.dal.entity.MusicGroupPaymentCalenderCourseSettings
	 * @describe 根据缴费日历和课程类型获取课程价格设置
	 * @author Joburgess
	 * @date 2020.11.04
	 */
	MusicGroupPaymentCalenderCourseSettings getWithPaymentCalenderAndCourseType(@Param("calenderId") Long calenderId,
																				@Param("courseType") CourseSchedule.CourseScheduleType courseType);

	List<MusicGroupPaymentCalenderCourseSettings> getWithPaymentCalendersAndCourseType(@Param("calenderIds") Set<Long> calenderIds,
																				@Param("courseType") CourseSchedule.CourseScheduleType courseType);

	int deleteByMusicGroupPaymentCalenderId(@Param("calenderIds") List<Long> calenderIds);

	/**
	 * 获取乐团的缴费课程
	 *
	 * @param musicGroupId
	 * @return
	 */
	List<MusicGroupPaymentCalenderCourseSettings> getMusicGroupRegCalenderCourseSettings(@Param("musicGroupId") String musicGroupId);

	/**
	 * 获取乐团的缴费课程
	 *
	 * @param ids
	 * @return
	 */
	List<MusicGroupPaymentCalenderCourseSettings> getCalenderCourseSettings(@Param("ids") List<Integer> ids);

	/**
	 * 批量新增
	 *
	 * @param musicGroupPaymentCalenderCourseSettingsList
	 * @return
	 */
	int batchInsert(List<MusicGroupPaymentCalenderCourseSettings> musicGroupPaymentCalenderCourseSettingsList);

	/**
	 * @param calenderId:
	 * @return java.util.List<com.ym.mec.biz.dal.entity.MusicGroupPaymentCalenderCourseSettings>
	 * @describe 获取收费标准
	 * @apiNote 时光荏苒，认真工作的时间总是过得很快，而我、享受这一刻！
	 * @author zouxuan
	 * @date 2020/10/30
	 * @time 16:04
	 */
	List<MusicGroupPaymentCalenderCourseSettings> queryCalenderCourseSettings(Long calenderId);

	/**
	 * @param calenderId:
	 * @return java.util.List<com.ym.mec.biz.dal.entity.MusicGroupPaymentCalenderCourseSettings>
	 * @describe 获取收费标准
	 * @apiNote 时光荏苒，认真工作的时间总是过得很快，而我、享受这一刻！
	 * @author zouxuan
	 * @date 2020/10/30
	 * @time 16:04
	 */
	List<MusicGroupPaymentCalenderCourseSettings> queryCalenderCourseSettingsByBatchNo(String batchNo);
}
