package com.xhkjedu.slive.mapper.liveplay;

import com.xhkjedu.base.TkMapper;
import com.xhkjedu.slive.model.liveplay.LCourseSection;
import com.xhkjedu.slive.model.liveplay.LCourseSectionStudent;
import com.xhkjedu.slive.vo.liveplay.*;
import org.apache.ibatis.annotations.Param;

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

public interface CourseSectionMapper extends TkMapper<LCourseSection> {
    //课程课节列表
    List<CourseSectionVo> listByCourseId(@Param("courseid") Integer courseid,@Param("teacherid") Integer teacherid);

    //修改课节状态
    void updateState(@Param("section") LCourseSection section);

    //更新实际参加学生数量
    void updateStuNum(Integer sectionid);

    //课节统计
    Map<String, Integer> analyze(Integer sectionid, Integer classid);

    //根据日期获取教师课节列表
    List<CourseSectionVo> listByDate(@Param("section") LCourseSection section);
    //根据日期获取巡课课节列表
    List<CourseSectionVo> listXkByDate(@Param("section") CourseParams params);

    //修改教师上课时长
    void updateTime(@Param("section") LCourseSection section);

    //课节报告
    Map getReport(Integer sectionid);

    //课程班级列表
    List<Map> listClass(@Param("section") CourseVo course);

    //获取课节时长和课程类型
    CourseVo getTotalTime(Integer sectionid);

    //课节观看列表2
    List<Map> listView2(@Param("section") LCourseSectionStudent section, Integer coursetype);

    //学生观看详情列表
    List<CSVStudentVo> listStuView(@Param("section") LCourseSectionStudent section);

    //课节提问列表
    List<Map> listAsk(Integer sectionid);

    //获取课节提问详情
    List<Map> listAskStu(String satid);
    Map listAskStu2(String satid);

    //获取课程教师id集合
    List<Integer> listTeacherId(Integer courseid);

    //更新课节学生在线状态为下线
    void updateStuOnLined(@Param("sectionids") List<Integer> sectionids,@Param("nowtime") Integer nowtime);

    CourseVo getCourseBySectionId(Integer sectionid);

    //我的月份下日期课节数量
    List<Map> listMySectionDate(@Param("section") CourseParams params);
    //我的课程列表
    List<Map> listMySection(@Param("section") CourseParams params);

    //巡课详情
    Map xkDetail(Integer sectionid);

    //课程信息
    CourseVo getCourseById(Integer sectionid);

    //修改课节、课程名称， 时间，日期
    void myUpdate(@Param("section") LCourseSection section);

    //获取课程学生列表
    List<Map> listStudent(@Param("section") CourseParams params);

    //学生课节日历
    List<Map> listStuSectionDate(@Param("section") CourseParams params);

    //学生课节列表
    List<Map> listStuByDate(@Param("section") CourseParams params);

    //获取要处理的课节
    List<CourseSectionVo> listPendingSection();

    //批量修改课节状态
    void updateSectionState(@Param("list") List<CourseSectionVo> sections);

    //根据班级id获取课程班级类型
    Integer getCourseTypeByClassId(@Param("classid") Integer classid);

    //获取课程中正在进行的课节数量
    Integer getJxzSectionNum(@Param("courseid") Integer courseid);

    //直播管理-月份下日期课节数量
    List<Map> listDateForZbGl(@Param("section") CourseParams params);

    //直播管理-课节列表
    List<Map> listGlByDate(@Param("section") CourseParams params);

    //直播管理-课节详情
    List<Map> listZbKj(@Param("courseid") Integer courseid);

    //直播管理-学生列表
    List<Map> listZbXs(@Param("section") CourseParams params);

    //获取课程年份和班级ids
    CourseParams getCourseParamByCid(@Param("classid") Integer classid);

    //教师巡课-学生列表
    List<Map> listXkXs(@Param("section") CourseParams params);

    //获取要结束课节回放地址为空的数据
    List<CourseSectionPlaybackVo> listPlayBackByIds(@Param("sectionids") List<Integer> sectionids);

    //获取课节主讲人
    List<Map> getZjr(@Param("sectionid") Integer sectionid);
}