From ab7045d70310f4c5b150090b7c9fa18dea7ea1e7 Mon Sep 17 00:00:00 2001
From: 44323 <443237572@qq.com>
Date: 星期三, 22 五月 2024 15:50:57 +0800
Subject: [PATCH] 代码提交
---
ruoyi-service/ruoyi-study/src/main/java/com/ruoyi/study/service/impl/TStudyServiceImpl.java | 112 +++++++++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 111 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..977f9c3 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,21 @@
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.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 +28,103 @@
@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()));
+ // 获取问题题目 和 回答题目
+ List<String> ids = new ArrayList<>();
+ ids.add(String.valueOf(data.getSubject()));
+ ids.add(String.valueOf(data.getAnswerSubject()));
+ // 有问有答
+ List<TSubject> subjects = getSubjects(ids.toArray(ids.toArray(new String[0])));
+ return new StudyAnswerResultVO(data, subjects);
+ }
+
+ @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