package com.ruoyi.study.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.ruoyi.common.core.domain.R;
import com.ruoyi.study.domain.*;
import com.ruoyi.study.dto.StudyWeekDTO;
import com.ruoyi.study.vo.*;
import java.util.List;
/**
*
* 学习类型 听 周目配置 服务类
*
*
* @author 无关风月
* @since 2024-04-26
*/
public interface ITStudyService extends IService {
/**
* 查询周目列表
*
* @param type 所属类型
* @param quarter 季度
* @param userId 用户id
* @return 列表
*/
List weekList(Integer type, Integer quarter, Integer userId);
/**
* 获取学习进度及学习时长等信息
*
* @param studyRecord 学习进度
* @param week 所属周目
* @return 学习信息
*/
TUserStudy studySchedule(TUserStudy studyRecord, Integer week);
/**
* 自主学习1-听音选图
*
* @param week 周目
* @param day 所属day
* @param studyListens 数据集合
* @return 单个题组下所包含的所有图片及语音
*/
StudyListenResultVO listenSelectPicture(Integer week, Integer day, List studyListens,Integer userId);
/**
* 自主游戏1-超级听力
*
* @param difficulty 难度(0入门、1中级、2高级)
* @param week 所属周目
* @param game 游戏信息
* @param userid 用户id
*/
void checkDifficulty(Integer difficulty, Integer week, TGame game, Integer userid);
/**
* 自主学习2-看图选音
*
* @param week 周目
* @param day 所属day
* @param lookList 数据集合
* @return 单个题组下所包含的所有图片及语音
*/
R pictureSelectVoice(Integer week, Integer day, List lookList, Integer userId);
/**
* 自主学习3-归纳排除
*
* @param week 周目
* @param day 所属day
* @param inductionList 归纳排除
* @return 题目信息
*/
R induceExclude(Integer week, Integer day, List inductionList,Integer userId);
/**
* 自主学习4-有问有答
*
* @param week 周目
* @param day 所属day
* @param answerList 有问有答
* @return 题目信息
*/
R questionsAndAnswers(Integer week, Integer day, List answerList,Integer userId);
/**
* 自主学习5-音图相配
*
* @param week 周目
* @param day 所属day
* @param pair 音图相配
* @return 题目信息
*/
R pictureMateVoice(Integer week, Integer day, List pair,Integer userId);
/**
* 计算用户当前week的学习进度
*
* @param result 用户学习信息
* @param week 周目
* @return 当前week学习进度
*/
int computeSchedule(TUserStudy result, Integer week);
/**
* 获取本次学习可获得总积分
*
* @param studyIds 题组id
* @param type 类型
* @param accuracy 正确率
* @return 积分
*/
int computeTotalIntegral(List studyIds, Integer type, Integer accuracy);
/**
* 计算剩余学习周目
*
* @param studyRecord 学习进度信息
* @param studyList 学习配置列表
* @return 剩余周目
*/
int residueWeek(TUserStudy studyRecord, List studyList);
/**
* 校验超级听力是否通过
*
* @param game 游戏信息
* @param userid 用户信息
*/
void checkClearance(TGame game, Integer userid);
/**
* 获取当前周目游戏难度
*
* @param studyRecord 学习进度
* @param week 周目
* @return 难度
*/
Integer userGameDifficulty(TUserStudy studyRecord, Integer week);
}