package com.ssj.mapper.correctsys;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ssj.bean.mybatis.CountMBDto;
import com.ssj.bean.mybatis.HomeworkPictureMBDto;
import com.ssj.bean.mybatis.ManagerMBDto;
import com.ssj.bean.mybatis.StudentHomeworkMBDto;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

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

/**
 * @author Mount Liu
 * @date 2019/8/29
 */
@Mapper
public interface CorrectSysMapper {
    /**
     * 分页查找未批改的作业
     * @param page
     * @param params
     * @return
     */
    List<Map<String,Object>> findUncorrectHomeworkListByPage(Page page, Map<String, Object> params);

    /**
     * 查找管理员列表
     *
     * @param page
     * @param params
     * @return
     */
    List<ManagerMBDto> findManagerListByPage(Page page, @Param("map") Map<String, Object> params);

    /**
     * 查找老师列表
     *
     * @param page
     * @param params
     * @return
     */
    List<ManagerMBDto> findTeacherListByPage(Page page, @Param("map") Map<String, Object> params);

    List<CountMBDto> countByTeacherId(@Param("map") Map<String, Object> params);

    Map<String, Object> countByManagerId(@Param("map") Map<String, Object> params);

    List<StudentHomeworkMBDto> studentHomeworkNoFeedbackList(Page page, @Param("map") Map<String, Object> params);

    List<HomeworkPictureMBDto> studentHomeworkDetail(@Param("map") Map<String, Object> params);

    List<StudentHomeworkMBDto> findStudentHomeworkListByPage(Page page, @Param("map") Map<String, Object> params);

    /**
     * 查询可分配老师列表
     * @param page
     * @param params
     * @return
     */
    List<ManagerMBDto> findTeacherAllotByPage(Page page, @Param("map") Map<String, Object> params);

    /**
     * 获取老师作业等待数量
     * @param params
     * @return
     */
    Long getWaitCount(@Param("map") Map<String, Object> params);
    /**
     * 查看老师列表
     *
     * @param page
     * @param params
     * @param teacherIds
     * @param noTeacherIds 可显示出来的注销老师
     * @return
     */
    List<ManagerMBDto> findTeacherByPage(Page page, @Param("map") Map<String, Object> params, @Param("teacherIds") List<String> teacherIds, @Param("noTeacherIds") List<String> noTeacherIds);

    /**
     * 查看老师
     */

    Map<String,Object> findAttendByTeacherId(@Param("map") Map<String,Object> params);

    /**
     * 获取所有未质检的批改老师，以及对应数量
     * @param params
     * @return
     */
    List<ManagerMBDto> findUnCheckTeacherList(@Param("map") Map<String, Object> params);
    /**
     * 获取所有未质检的匹配老师，以及对应数量
     * @param params
     * @return
     */
    List<ManagerMBDto> findUnCheckKnowTeacherList(@Param("map") Map<String, Object> params);

    Map<String, Object> findTeacherInfo(@Param("teacherId")String teacherId);

    List<String> findLoginDateByPage(Page page, @Param("map") Map<String, Object> params);

    /**
     * 查找所有批改相关角色数据
     * @param page
     * @param params
     * @return
     */
    List<ManagerMBDto> findUserRoleByPage(Page page, @Param("map") Map<String, Object> params);
    /**
     * 查询某天有已完成作业的批改老师
     * @param date
     * @param operate “GTE”: 大于等于当日期，“EQ”:等于，“LTE”小于等于，“LT”小于，“GT”大于
     * @return
     */
    List<ManagerMBDto> findOnedayTeacherOfFeedbackHomework(@Param("date") String date, @Param("operate") String operate);
    /**
     * 查询某天有已完成作业的匹配老师
     * @param date
     * @return
     */
    List<ManagerMBDto> findOnedayKnowTeacherOfFeedbackHomework(@Param("date") String date, @Param("operate") String operate);
}
