package com.ym.mec.biz.service;

import com.ym.mec.biz.dal.dto.CountStudentTrainDataDto;
import com.ym.mec.biz.dal.dto.MusicCompareRankingDto;
import com.ym.mec.biz.dal.dto.SoundCompareHelper;
import com.ym.mec.biz.dal.dto.StatDto;
import com.ym.mec.biz.dal.entity.SysMusicCompareRecord;
import com.ym.mec.biz.dal.page.SysMusicCompareRecordQueryInfo;
import com.ym.mec.common.page.PageInfo;
import com.ym.mec.common.service.BaseService;

import java.util.Map;

public interface SysMusicCompareRecordService extends BaseService<Long, SysMusicCompareRecord> {

    /**
     * @describe 保存用户评测记录
     * @author Joburgess
     * @date 2021/6/25 0025
     * @param phone:
     * @param soundCompareInfo:
     * @return void
     */
    void saveMusicCompareData(String phone, SoundCompareHelper soundCompareInfo);

    /**
     * @describe 保存用户评测记录
     * @param sysMusicCompareRecord
     * @return void
     */
    void 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(Integer userId, Long recordId);

    /**
     * @describe 云教练排行榜
     * @author Joburgess
     * @date 2021/8/11 0011
     * @param queryInfo:
     * @return com.ym.mec.biz.dal.dto.StatDto
     */
    StatDto rankingList(SysMusicCompareRecordQueryInfo queryInfo);

    /**
     * @describe 本周学员训练提醒
     * @author Joburgess
     * @date 2021/8/27 0027
     * @param :
     * @return void
     */
    void curWeekStudentTrainRemind();

    /**
     * @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 queryInfo);

    /**
     * @describe 查询乐团学员训练数据
     * @author Joburgess
     * @date 2021/8/12 0012
     * @param queryInfo:
     * @return com.ym.mec.common.page.PageInfo<com.ym.mec.biz.dal.dto.MusicCompareRankingDto>
     */
    PageInfo<MusicCompareRankingDto> queryMusicGroupStudentTrainData(SysMusicCompareRecordQueryInfo 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 queryInfo);

    /**
     * 老师端首页学员训练统计
     * @param queryInfo
     * @return
     */
    PageInfo<CountStudentTrainDataDto> countStudentTrain(SysMusicCompareRecordQueryInfo queryInfo);
    
    int queryCurrentDatePlayTimeByUserId(Integer userId);
}
