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

import com.ym.mec.biz.dal.dto.*;
import com.ym.mec.biz.dal.entity.VipGroupActivity;
import com.ym.mec.common.dal.BaseDAO;
import org.apache.ibatis.annotations.Param;

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

public interface VipGroupActivityDao extends BaseDAO<Integer, VipGroupActivity> {

	/**
	 * @Author: Joburgess
	 * @Date: 2019/10/2
	 * 根据课程类型获取vip课 活动方案
	 */
	List<VipGroupActivity> findByCategory(@Param("activityQueryDto") ActivityQueryDto activityQueryDto);

	/**
	 * 根据活动方案编号列表获取名称
	 * @param activityIds
	 * @return
	 */
	List<Map<Integer, String>> queryNamesById(String activityIds);

	List<VipGroupActivity> queryByIds(@Param("activityIds") String activityIds);

	List<VipGroupActivity> findByName(@Param("name") String name, @Param("tenantId") Integer tenantId);

	/**
	 * 导出vip活动
	 * @param params
	 * @return
	 */
	List<ExportVipGroupActivityDto> exportVipGroupActivity(Map<String, Object> params);

	/**
	* @description: 获取老师待排课的活动方案列表
	 * @param
	* @return java.util.List<com.ym.mec.biz.dal.dto.WaitCourseActivityDto>
	* @author zx
	* @date 2021/10/11 11:17
	*/
    List<WaitCourseActivityDto> queryWaitCourseActivity(@Param("teacherId") Integer teacherId, @Param("organId") String organId, @Param("tenantId") Integer tenantId);

    /**
    * @description: 获取活动待排课学员数量
     * @param userId
     * @param activityId
    * @return com.ym.mec.biz.dal.dto.ActivityWaitCourseStudentNumDto
    * @author zx
    * @date 2021/10/11 14:37
    */
    ActivityWaitCourseStudentNumDto getActivityWaitCourseStudentNum(@Param("userId") Integer userId, @Param("activityId") Integer activityId);

	/**
	 * @description: 获取活动学员课排课次数
	 * @param userId
	 * @param activityId
	 * @return com.ym.mec.biz.dal.dto.ActivityWaitCourseStudentNumDto
	 * @author zx
	 * @date 2021/10/11 15:02
	 */
	List<ActivityWaitCourseStudentNumDto> getActivityStudentCanCourseNum(Map<String, Object> params);

	int countActivityStudentCanCourseNum(Map<String, Object> params);

	/**
	* @description: 双十一活动统计
	 * @param
	* @return java.util.List<com.ym.mec.biz.dal.dto.DoubleEleven2021ActivityDto>
	* @author zx
	* @date 2021/10/25 13:46
	*/
    List<DoubleEleven2021ActivityDto> countActivityStatis();

	/**
	* @description: 双十一活动统计
	 * @param
	* @return java.util.List<com.ym.mec.biz.dal.dto.DoubleEleven2021ActivityDto>
	* @author zx
	* @date 2021/10/25 13:46
	*/
    List<DoubleEleven2021ActivityDto> countOrganActivityStatis(@Param("organIdList") List<Integer> organIdList);

    /**
    * @description: 双十一活动统计
     * @param
    * @return com.ym.mec.biz.dal.dto.DoubleEleven2021Dto
    * @author zx
    * @date 2021/10/25 15:44
    */
	DoubleEleven2021Dto countDoubleEleven2021Statis();

    /**
    * @description: 双十一活动统计
     * @param
    * @return com.ym.mec.biz.dal.dto.DoubleEleven2021Dto
    * @author zx
    * @date 2021/10/25 15:44
    */
	List<DoubleEleven2021Dto> countOrganDoubleEleven2021Statis(@Param("organId") Integer organId);

	/**
	* @description: 双十一活动统计
	 * @param
	* @return int
	* @author zx
	* @date 2021/10/25 15:54
	*/
	Integer countGiveMemberNum();

	/**
	* @description: 双十一活动统计
	 * @param
	* @return int
	* @author zx
	* @date 2021/10/25 15:54
	*/
	List<Map<Long,Long>> countOrganGiveMemberNum(@Param("organIdList") List<Integer> organIdList);

	/**
	* @description: 双十一活动统计学员列表
	 * @param params
	* @return java.util.List<com.ym.mec.biz.dal.dto.DoubleEleven2021OrderDetailDto>
	* @author zx
	* @date 2021/10/27 13:31
	*/
    List<DoubleEleven2021OrderDetailDto> queryDoubleEleven2021OrderDetail(Map<String, Object> params);

    /**
    * @description: 双十一活动统计学员列表
     * @param params
    * @return int
    * @author zx
    * @date 2021/10/27 13:32
    */
	int countDoubleEleven2021OrderDetail(Map<String, Object> params);
}
