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

import com.yonge.cooleshow.biz.dal.dao.SysMusicCompareRecordDao;
import com.yonge.cooleshow.biz.dal.entity.SysMusicCompareRecord;
import com.yonge.cooleshow.biz.dal.queryInfo.SysMusicCompareRecordQueryInfo;
import com.yonge.cooleshow.biz.dal.wrapper.TeacherIndexWrapper;
import com.yonge.toolset.base.page.PageInfo;
import com.yonge.toolset.mybatis.service.BaseService;

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

public interface SysMusicCompareRecordService extends BaseService<Long, SysMusicCompareRecord> {

    SysMusicCompareRecordDao getDao();

    /**
     * @param sysMusicCompareRecord
     * @return void
     * @describe 保存用户评测记录
     */
    Long saveMusicCompareData(SysMusicCompareRecord sysMusicCompareRecord);

    /**
     * @describe 用户最后一次评测数据
     * @author Joburgess
     * @date 2021/8/23 0023
     * @param userId:
     * @return java.util.List<com.ym.mec.biz.dal.dto.MusicalNotesPlayStatDto>
     */
    Object getLastEvaluationMusicalNotesPlayStats(Long userId, Long recordId);

    /**
     * @describe 学员训练数据统计
     * @author Joburgess
     * @date 2021/8/12 0012
     * @param queryInfo:
     * @return java.util.Map<java.lang.String,java.lang.Object>
     */
    Map<String, Object> studentTrainData(SysMusicCompareRecordQueryInfo.TeacherCompareRecordQueryInfo queryInfo);

    //微信小程序学员训练数据统计
    PageInfo<SysMusicCompareRecordQueryInfo.WechatCompareRecordPageDto> weChatStudentTrainData(SysMusicCompareRecordQueryInfo.WechatCompareRecordQueryInfo queryInfo);

    /**
     * @describe 学员训练数据
     * @author Joburgess
     * @date 2021/8/12 0012
     * @param queryInfo:
     * @return com.ym.mec.common.page.PageInfo<com.ym.mec.biz.dal.entity.SysMusicCompareRecord>
     */
    PageInfo<SysMusicCompareRecord> queryStudentTrainData(SysMusicCompareRecordQueryInfo.TeacherCompareRecordQueryInfo queryInfo);

    //小程序学员评测列表
    PageInfo<SysMusicCompareRecordQueryInfo.StudentMusicCompareRecord> queryStudentTrain(SysMusicCompareRecordQueryInfo.StudentMusicCompareRecordQuery query);

    //学员训练统计以及基本信息查询
    SysMusicCompareRecordQueryInfo.StudentMusicCompareRecordStat studentMusicCompareRecordStat(SysMusicCompareRecordQueryInfo.StudentMusicCompareRecordQuery query);

    //学生端，学员训练统计
    SysMusicCompareRecordQueryInfo.StudentMusicCompareRecordDto studentTrainStat(SysMusicCompareRecordQueryInfo.StudentMusicCompareRecordQuery query);

    //训练时长榜
    SysMusicCompareRecordQueryInfo.StatDto rankingList(SysMusicCompareRecordQueryInfo.StudentCompareRecordQueryInfo queryInfo);

    Map<Long, SysMusicCompareRecord> getMapByIds(List<Long> musicPracticeRecordIds);
}
