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

import com.ym.mec.biz.dal.dto.TaskRewardsRulesDto;
import com.ym.mec.biz.dal.entity.CourseSchedule.CourseScheduleType;
import com.ym.mec.biz.dal.entity.CourseScheduleRewardsRules;
import com.ym.mec.common.dal.BaseDAO;
import org.apache.ibatis.annotations.Param;

import java.util.List;
import java.util.Map;

public interface CourseScheduleRewardsRulesDao extends BaseDAO<Integer, CourseScheduleRewardsRules> {

	/**
	 * 查询课程奖励对象
	 * @param organId 分部编号
	 * @param courseScheduleType 课程类型
	 * @return
	 */
	List<CourseScheduleRewardsRules> query(@Param("organId") Integer organId, @Param("courseScheduleType") CourseScheduleType courseScheduleType);

	/**
	 * 查询已设置的分部列表
	 * @return
	 */
	List<String> queryOrganIdList();

	/**
	 * 根据教师列表和课程类型获取活动列表
	 * @param teacherId
	 * @param vipGroupCategoryIdList
	 * @param subjectIds
	 * @return
	 */
    List<CourseScheduleRewardsRules> findByTeacherAndCategory(@Param("teacherId") String teacherId,
															  @Param("vipGroupCategoryIdList") String vipGroupCategoryIdList,
															  @Param("subjectIds") String subjectIds);

	/**
	 * COUNT活动列表
	 * @param params
	 * @return
	 */
	int findDetailPage(Map<String, Object> params);

	/**
	 * 分页获取活动列表
	 * @param params
	 * @return
	 */
	List<CourseScheduleRewardsRules> queryDetailPage(Map<String, Object> params);

	/**
	 * 获取教师名称列表
	 * @param rewardsIds
	 * @return
	 */
	List<Map<Integer, String>> findTeacherNames(@Param("rewardsIds") List<Integer> rewardsIds);

	/**
	 * 获取vip课程类型名称列表
	 * @param rewardsIds
	 * @return
	 */
	List<Map<Integer, String>> findVipCategoryNames(@Param("rewardsIds") List<Integer> rewardsIds);

	/**
	 * 获取教师时间段内已结算课时（课时阶梯奖励）
	 * @param firstDayOfMonth
	 * @param lastDayOfMonth
	 * @return
	 */
    List<TaskRewardsRulesDto> queryVipGroupTeacherClassTimesByMonth(@Param("firstDayOfMonth") String firstDayOfMonth, @Param("lastDayOfMonth") String lastDayOfMonth);

	/**
	 * 根据主键列表获取数据
	 * @param activeIds
	 * @return
	 */
	List<CourseScheduleRewardsRules> findByIds(@Param("activeIds")List<Integer> activeIds);
}