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

import com.ym.mec.biz.dal.dto.GroupBaseCourseInfoDto;
import com.ym.mec.biz.dal.dto.GroupUserDto;
import com.ym.mec.biz.dal.entity.Group;
import com.ym.mec.biz.dal.enums.GroupType;
import org.apache.ibatis.annotations.Param;

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

/**
 * @Author Joburgess
 * @Date 2019/12/30
 */
public interface GroupDao {


    int deleteGroup(@Param("groupId") String groupId,
                    @Param("groupType") String groupType);

    /**
     * @describe 搜索团体
     * @author Joburgess
     * @date 2019/12/30
     * @param params: 查询参数
     * @return java.util.List<com.ym.mec.biz.dal.entity.Group>
     */
    List<Group> searchGroups(Map<String, Object> params);

    /**
     * @describe 根据班级编号获取团体
     * @author Joburgess
     * @date 2019/12/30
     * @param classGroupIds: 团体列表
     * @return java.util.List<com.ym.mec.biz.dal.entity.Group>
     */
    List<Group> findByClassGroupIds(@Param("classGroupIds") List<Integer> classGroupIds);

    /**
     * @describe 统计团体学生数量
     * @author Joburgess
     * @date 2020/4/6
     * @param groupIds:
     * @param groupType:
     * @return java.util.List<com.ym.mec.biz.dal.dto.BaseMapDto>
     */
    List<GroupBaseCourseInfoDto> countGroupStudentNum(@Param("groupIds") List<String> groupIds,
                                                      @Param("groupType") GroupType groupType);

    /**
     * @describe 统计团体的总课次
     * @author Joburgess
     * @date 2020/4/6
     * @param groupIds:
     * @param groupType:
     * @return java.util.List<com.ym.mec.biz.dal.dto.BaseMapDto>
     */
    List<GroupBaseCourseInfoDto> countGroupTotalClassesTimes(@Param("groupIds") List<String> groupIds,
                                                 @Param("groupType") GroupType groupType);

    /**
     * @describe 统计团体已上课次
     * @author Joburgess
     * @date 2020/4/6
     * @param groupIds:
     * @param groupType:
     * @return java.util.List<com.ym.mec.biz.dal.dto.BaseMapDto>
     */
    List<GroupBaseCourseInfoDto> countGroupFinishedClassesTimes(@Param("groupIds") List<String> groupIds,
                                                  @Param("groupType") GroupType groupType);

    /**
     * @describe 获取团体学生
     * @author Joburgess
     * @date 2020/4/15
     * @param groupIds:
     * @param groupType:
     * @return java.util.List<com.ym.mec.biz.dal.dto.GroupUserDto>
     */
    List<GroupUserDto> findGroupsStudents(@Param("groupIds") List<String> groupIds,
                                       @Param("groupType") GroupType groupType);


}
