From 2eee3f3af2ad8d2bc54954c97424a7da36deaaec Mon Sep 17 00:00:00 2001 From: 44323 <443237572@qq.com> Date: 星期四, 30 五月 2024 14:08:24 +0800 Subject: [PATCH] bug修改 --- ruoyi-service/ruoyi-study/src/main/java/com/ruoyi/study/service/impl/TStudyServiceImpl.java | 127 ++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 126 insertions(+), 1 deletions(-) diff --git a/ruoyi-service/ruoyi-study/src/main/java/com/ruoyi/study/service/impl/TStudyServiceImpl.java b/ruoyi-service/ruoyi-study/src/main/java/com/ruoyi/study/service/impl/TStudyServiceImpl.java index 5891770..411eeb2 100644 --- a/ruoyi-service/ruoyi-study/src/main/java/com/ruoyi/study/service/impl/TStudyServiceImpl.java +++ b/ruoyi-service/ruoyi-study/src/main/java/com/ruoyi/study/service/impl/TStudyServiceImpl.java @@ -1,10 +1,22 @@ package com.ruoyi.study.service.impl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import com.ruoyi.study.domain.TStudy; +import com.ruoyi.common.core.exception.GlobalException; +import com.ruoyi.common.core.utils.bean.BeanUtils; +import com.ruoyi.common.security.service.TokenService; +import com.ruoyi.study.domain.*; +import com.ruoyi.study.dto.StudyWeekDTO; import com.ruoyi.study.mapper.TStudyMapper; +import com.ruoyi.study.service.ITGameRecordService; import com.ruoyi.study.service.ITStudyService; +import com.ruoyi.study.service.ITSubjectService; +import com.ruoyi.study.service.ITUserStudyService; +import com.ruoyi.study.vo.*; import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.util.*; +import java.util.stream.Collectors; /** * <p> @@ -17,4 +29,117 @@ @Service public class TStudyServiceImpl extends ServiceImpl<TStudyMapper, TStudy> implements ITStudyService { + @Resource + private ITUserStudyService userStudyService; + @Resource + private ITSubjectService subjectService; + @Resource + private ITGameRecordService gameRecordService; + @Resource + private TokenService tokenService; + + private final static Map<String, Integer> GAME_DIFFICULTY_MAP = new HashMap<>(); + + static { + GAME_DIFFICULTY_MAP.put("1", 0); + GAME_DIFFICULTY_MAP.put("2", 1); + } + + @Override + public List<StudyWeekDTO> weekList(Integer type, Integer quarter) { + return baseMapper.weekList(type, quarter); + } + + @Override + public TUserStudy studySchedule(String userId, Integer week, Integer day) { + return userStudyService.studySchedule(userId, week, day); + } + + @Override + public void checkDifficulty(Integer difficulty, Integer week, TGame game) { + // 判断用户是否完成上一个等级 + Integer level = GAME_DIFFICULTY_MAP.get(String.valueOf(difficulty)); + if (null == level) { + throw new GlobalException("游戏等级异常,请重试!"); + } + // 获取用户游戏进度 + Integer userId = tokenService.getLoginUserStudy().getUserid(); + List<TGameRecord> list = gameRecordService.lambdaQuery().eq(TGameRecord::getUserId, userId).eq(TGameRecord::getGameId, game.getId()).list(); + boolean contains = list.stream().map(TGameRecord::getGameDifficulty).collect(Collectors.toList()).contains(level); + if (!contains) { + throw new GlobalException("请先完成上一难度再挑战当前难度!"); + } + } + + @Override + public StudyListenResultVO listenSelectPicture(Integer week, Integer day, List<TStudyListen> studyListens) { + // 随机获取一组题 + Random rand = new Random(); + TStudyListen data = studyListens.get(rand.nextInt(studyListens.size())); + List<TSubject> subjectList = getSubjects(data.getSubject().split(",")); + return new StudyListenResultVO(data, subjectList); + } + + @Override + public StudyLookResultVO pictureSelectVoice(Integer week, Integer day, List<TStudyLook> lookList) { + // 随机获取一组题 + Random rand = new Random(); + TStudyLook data = lookList.get(rand.nextInt(lookList.size())); + List<TSubject> subjectList = getSubjects(data.getSubject().split(",")); + return new StudyLookResultVO(data, subjectList); + } + + @Override + public StudyInductionResultVO induceExclude(Integer week, Integer day, List<TStudyInduction> inductionList) { + // 随机获取一组题 + Random rand = new Random(); + TStudyInduction data = inductionList.get(rand.nextInt(inductionList.size())); + List<TSubject> subjectList = getSubjects(data.getSubject().split(",")); + return new StudyInductionResultVO(data, subjectList); + } + + @Override + public StudyAnswerResultVO questionsAndAnswers(Integer week, Integer day, List<TStudyAnswer> answerList) { + // 随机获取一组题 + Random rand = new Random(); + TStudyAnswer data = answerList.get(rand.nextInt(answerList.size())); + AnswerVO one = new AnswerVO(); + BeanUtils.copyProperties(data, one); + answerList.remove(data); + TStudyAnswer dataTwo = answerList.get(rand.nextInt(answerList.size())); + AnswerVO two = new AnswerVO(); + BeanUtils.copyProperties(dataTwo, two); + // 获取问题题目 和 回答题目 + List<String> ids = new ArrayList<>(); + ids.add(String.valueOf(one.getSubject())); + ids.add(String.valueOf(one.getAnswerSubject())); + // 有问有答 + List<TStudyAnswer> answers = new ArrayList<>(); + answers.add(one); + one.setSubjectList(getSubjects(ids.toArray(new String[0]))); + // 第二题信息 + List<String> twoIds = new ArrayList<>(); + answers.add(two); + twoIds.add(String.valueOf(two.getSubject())); + twoIds.add(String.valueOf(two.getAnswerSubject())); + two.setSubjectList(getSubjects(twoIds.toArray(new String[0]))); + return new StudyAnswerResultVO(answers); + } + + @Override + public StudyPairResultVO pictureMateVoice(Integer week, Integer day, TStudyPair pair) { + List<TSubject> subjectList = getSubjects(pair.getSubject().split(",")); + return new StudyPairResultVO(pair, subjectList); + } + + /** + * 根据参数id查询图片及语音 + * + * @param ids 多个id + * @return 图片及语音集合 + */ + private List<TSubject> getSubjects(String[] ids) { + return subjectService.lambdaQuery().in(TSubject::getId, Arrays.asList(ids)).list(); + } + } -- Gitblit v1.7.1