package com.yonge.cooleshow.biz.dal.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import com.yonge.cooleshow.auth.api.entity.SysUser;
import com.yonge.cooleshow.biz.dal.dto.TeacherDto;
import com.yonge.cooleshow.biz.dal.dto.req.UserSetReq;
import com.yonge.cooleshow.biz.dal.dto.req.TeacherSubmitReq;
import com.yonge.cooleshow.biz.dal.dto.search.TeacherSearch;
import com.yonge.cooleshow.biz.dal.entity.Subject;
import com.yonge.cooleshow.biz.dal.entity.Teacher;
import com.yonge.cooleshow.biz.dal.enums.YesOrNoEnum;
import com.yonge.cooleshow.biz.dal.vo.TeacherHomeVo;
import com.yonge.cooleshow.biz.dal.vo.TeacherTotalVo;
import com.yonge.cooleshow.biz.dal.vo.TeacherVo;
import com.yonge.cooleshow.biz.dal.vo.UserSetVo;
import com.yonge.cooleshow.common.entity.HttpResponseResult;

import java.util.List;

/**
 * 教师表 服务类
 *
 * @author liweifan
 * @date 2022-03-18
 */
public interface TeacherService extends IService<Teacher> {
    /***
     * 查询老师详情
     * @author liweifan
     * @param: userId
     * @updateTime 2022/3/23 17:49
     * @return: com.yonge.cooleshow.biz.dal.vo.TeacherVo
     */
    TeacherVo detail(Long userId);

    /**
     * 自定义分页
     *
     * @author liweifan
     * @date 2022-03-18
     */
    IPage<TeacherVo> selectPage(IPage<TeacherVo> page, TeacherSearch teacher);

    /***
     * 管理端新增、修改老师信息
     * @author liweifan
     * @param: teacherSubmitReq
     * @updateTime 2022/3/23 14:30
     * @return: com.yonge.cooleshow.common.entity.HttpResponseResult<java.lang.Boolean>
     */
    HttpResponseResult<Boolean> submit(TeacherSubmitReq teacherSubmitReq);

    /***
     * 查询老师首页统计信息
     * @author liweifan
     * @param: userId
     * @updateTime 2022/3/28 16:49
     * @return: com.yonge.cooleshow.biz.dal.vo.TeacherHomeVo
     */
    HttpResponseResult<TeacherHomeVo> queryUserInfo(Long userId);

    /***
     * 开通直播
     * @author liweifan
     * @param: setReq
     * @param: id
     * @updateTime 2022/3/22 11:04
     */
    HttpResponseResult<Boolean> openLive(Long id);

    /**
     * @param userId
     * @return com.yonge.cooleshow.common.entity.HttpResponseResult<java.util.List < com.yonge.cooleshow.biz.dal.entity.Subject>>
     * @description: 获取老师可授课声部列表
     * @author zx
     * @date 2022/3/25 09:37
     */
    List<Subject> querySubject(Long userId);

    /***
     * 设置声部
     * @author liweifan
     * @param: id
     * @param: toLongList
     * @updateTime 2022/4/7 9:56
     * @return: java.lang.Integer
     */
    Integer setSubject(Long id, String subjectIds);

    /***
     * 查询教师基本信息
     * @author liweifan
     * @param: studentId
     * @param: teacherId
     * @updateTime 2022/4/26 17:03
     * @return: com.yonge.cooleshow.common.entity.HttpResponseResult<com.yonge.cooleshow.biz.dal.vo.TeacherHomeVo>
     */
    HttpResponseResult<TeacherHomeVo> queryTeacherHome(Long studentId, Long teacherId);

    /***
     * 保存老师风采信息
     * @author liweifan
     * @param: teacherDto
     * @updateTime 2022/4/8 14:21
     * @return: com.yonge.cooleshow.common.entity.HttpResponseResult<com.yonge.cooleshow.biz.dal.vo.TeacherVo>
     */
    HttpResponseResult<TeacherVo> saveTeacherStyle(TeacherDto teacherDto);

    /***
     * 增加主页浏览量
     * @author liweifan
     * @param: userId
     * @updateTime 2022/4/24 17:45
     * @return: com.yonge.cooleshow.common.entity.HttpResponseResult<java.lang.Boolean>
     */
    HttpResponseResult<Boolean> addHomeBrowse(Long userId);

}