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

import com.baomidou.mybatisplus.extension.service.IService;
import com.yonge.cooleshow.biz.dal.dao.CourseScheduleStudentPaymentDao;
import com.yonge.cooleshow.biz.dal.dto.ImNetworkCustomMessage;
import com.yonge.cooleshow.biz.dal.dto.ImNetworkRoomMusicSheetDownloadData;
import com.yonge.cooleshow.biz.dal.entity.CourseScheduleStudentPayment;
import com.yonge.cooleshow.biz.dal.vo.LiveCourseInfoVo;

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

/**
 * 课程学生缴费表(CourseScheduleStudentPayment)表服务接口
 *
 * @author hgw
 * @since 2022-03-18 15:29:12
 */
public interface CourseScheduleStudentPaymentService extends IService<CourseScheduleStudentPayment> {

    CourseScheduleStudentPaymentDao getDao();

    /**
     * 根据课程组id查询学员信息
     *
     * @param param 参数
     *              <p> groupId    课程组id
     *              <p> orderState 订单状态
     *              <p> userId     学员id
     */
    List<LiveCourseInfoVo.CourseBuyStudentVo> queryStudentInfoByGroupId(Map<String, Object> param);

    /**
     * 根据陪练课 课程id查看购买记录
     *
     * @param courseId 课程id
     * @return 购买记录
     */
    List<CourseScheduleStudentPayment> getByCourseId(Long courseId);

    /**
     * 查询购买直播课的订单
     *
     * @param courseGroupId 课程组
     * @return
     */
    List<String> getOrderNoByGroupId( Long courseGroupId);

    /**
    * @description: 获取网络教室成员midi
     * @param courseScheduleId
     * @param userId
    * @return com.yonge.cooleshow.biz.dal.dto.ImNetworkCustomMessage
    * @author zx
    * @date 2022/4/6 14:15
    */
    ImNetworkCustomMessage getMemberMidi(long courseScheduleId, Long userId);

    //获取伴奏信息
    ImNetworkRoomMusicSheetDownloadData getMemberExamSong(long courseScheduleId, Long userId);

    /**
    * @description:
     * @param scheduleId    课程编号
     * @param userId    学员编号
     * @param content   节拍器参数
     * @param musicSheetJson    伴奏参数
    * @return void
    * @author zx
    * @date 2022/5/7 16:44
    */
    void adjustPlayMidiAndMusicSheet(Long scheduleId, Long userId, String content, String musicSheetJson);
}

