package com.xhkjedu.sapi.mapper.notice;

import com.xhkjedu.base.TkMapper;
import com.xhkjedu.sapi.model.notice.TNotice;
import com.xhkjedu.sapi.model.notice.TNoticeUser;
import com.xhkjedu.sapi.model.system.TSchool;
import com.xhkjedu.sapi.vo.gradeclass.ClassVo;
import com.xhkjedu.sapi.vo.notice.NoticeUserVo;
import com.xhkjedu.sapi.vo.notice.NoticeVo;
import org.apache.ibatis.annotations.Param;

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

public interface NoticeMapper extends TkMapper<TNotice> {
    //列表
    List<NoticeVo> listAll(@Param("notice") TNotice notice);

    //详情
    TNotice findById(@Param("noticeid") Integer noticeid);

    /**
     * 用户通知列表
     * @Param [notice]
     * @Author ywx
     * @Date 2020/6/13 9:57
     * @return java.util.List<com.xhkjedu.vo.notice.NoticeVo>
     **/
    List<NoticeVo> listMy(@Param("notice") TNotice notice);

    /**
     * 学生通知列表
     * @Param [notice]
     * @Author ywx
     * @Date 2020/6/22 10:01
     * @return java.util.List<com.xhkjedu.vo.notice.NoticeVo>
     **/
    List<NoticeVo> listStudent(@Param("notice") TNotice notice);

    /**
     * 用户查看详情
     * @Param [noticeid]
     * @Author ywx
     * @Date 2020/6/13 11:50
     * @return com.xhkjedu.model.notice.TNotice
     **/
    TNotice findById2(@Param("noticeid") Integer noticeid);

    /**
     * 用户未看通知数量
     * @Param [userid]
     * @Author ywx
     * @Date 2020/7/24 10:39
     * @return java.lang.Integer
     **/
    Integer noReadNum(@Param("userid") Integer userid);


    //////////////////////////////////////////////学生WEB端//////////////////////////////////////////////
    /**
     * 通知列表
     * @Param [notice]
     * @Author ywx
     * @Date 2020/9/3 18:14
     * @return java.util.List<com.xhkjedu.vo.notice.NoticeVo>
     **/
    List<NoticeVo> listNoticeForStuWeb(@Param("notice") TNotice notice);

    //根据班级删除通知
    void deleteByClassId(@Param("classid") Integer classid);

    //通知班级列表
    List<ClassVo> listClass(Integer noticeid);

    //通知用户列表
    List<NoticeUserVo> listUser(Integer noticeid);

    //通知学校列表
    List<TSchool> listSchool(Integer noticeid);

    int deleteNotice(@Param("noticeid")Integer noticeid);

    Integer getNoticeid(@Param("noticeid")Integer noticeid);

    //获取用户所属科目
    String getUserSubjectByUserid(@Param("userid")Integer userid);

    //获取通知教师查看情况
    List<Map> listNoticeTeacherRead(@Param("nuser") TNoticeUser nuser);

    //获取通知学生查看情况
    List<Map> listNoticeStudentRead(@Param("nuser") TNoticeUser nuser);

    //获取学生通知科目
    List<Map> listNoticeSubjects(@Param("studentid")Integer studentid);
}
