From f0cb2ed0aed012ae08fd957338650d91c3cc1d14 Mon Sep 17 00:00:00 2001
From: 无关风月 <443237572@qq.com>
Date: 星期一, 17 六月 2024 11:43:16 +0800
Subject: [PATCH] 修改
---
ruoyi-service/ruoyi-study/src/main/java/com/ruoyi/study/service/impl/TStudyServiceImpl.java | 155 ++++++++++++++++++++++++++++++++++++---------------
1 files changed, 109 insertions(+), 46 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 15966db..3fe0e68 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,7 +1,9 @@
package com.ruoyi.study.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ruoyi.common.core.constant.Constants;
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;
@@ -10,6 +12,7 @@
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;
@@ -49,85 +52,139 @@
}
@Override
- public TUserStudy studySchedule(String userId, Integer week, Integer day) {
- return userStudyService.studySchedule(userId, week, day);
+ public TUserStudy studySchedule(String userId, Integer week) {
+ return userStudyService.studySchedule(userId, week);
}
@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("请先完成上一难度再挑战");
+ if (!Constants.ZERO.equals(difficulty)) {
+ 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 Map<String, Object> listenSelectPicture(Integer week, Integer day, List<TStudyListen> studyListens) {
+ public StudyListenResultVO listenSelectPicture(Integer week, Integer day, List<TStudyListen> studyListens) {
+ if (studyListens.isEmpty()) {
+ throw new GlobalException("当前学习周目题目数量不足!");
+ }
// 随机获取一组题
Random rand = new Random();
- TStudyListen data = studyListens.get(rand.nextInt(studyListens.size()));
+ TStudyListen data;
+ if (studyListens.size() == 1) {
+ data = studyListens.get(0);
+ } else {
+ data = studyListens.get(rand.nextInt(studyListens.size()));
+ }
List<TSubject> subjectList = getSubjects(data.getSubject().split(","));
- Map<String, Object> result = new HashMap<>(8);
- result.put("data", data);
- result.put("subject", subjectList);
- return result;
+ return new StudyListenResultVO(data, subjectList);
}
@Override
- public Map<String, Object> pictureSelectVoice(Integer week, Integer day, List<TStudyLook> lookList) {
+ public StudyLookResultVO pictureSelectVoice(Integer week, Integer day, List<TStudyLook> lookList) {
+ if (lookList.isEmpty()) {
+ throw new GlobalException("当前学习周目题目数量不足!");
+ }
// 随机获取一组题
Random rand = new Random();
- TStudyLook data = lookList.get(rand.nextInt(lookList.size()));
+ TStudyLook data;
+ if (lookList.size() == 1) {
+ data = lookList.get(0);
+ } else {
+ data = lookList.get(rand.nextInt(lookList.size()));
+ }
List<TSubject> subjectList = getSubjects(data.getSubject().split(","));
- Map<String, Object> result = new HashMap<>(8);
- result.put("data", data);
- result.put("subject", subjectList);
- return result;
+ return new StudyLookResultVO(data, subjectList);
}
@Override
- public Map<String, Object> induceExclude(Integer week, Integer day, List<TStudyInduction> inductionList) {
+ public StudyInductionResultVO induceExclude(Integer week, Integer day, List<TStudyInduction> inductionList) {
+ if (inductionList.isEmpty()) {
+ throw new GlobalException("当前学习周目题目数量不足!");
+ }
// 随机获取一组题
Random rand = new Random();
- TStudyInduction data = inductionList.get(rand.nextInt(inductionList.size()));
- List<TSubject> subjectList = getSubjects(data.getSubject().split(","));
- Map<String, Object> result = new HashMap<>(8);
- result.put("data", data);
- result.put("subject", subjectList);
- return result;
+ TStudyInduction data;
+ if (inductionList.size() == 1) {
+ data = inductionList.get(0);
+ } else {
+ data = inductionList.get(rand.nextInt(inductionList.size()));
+ }
+ String[] ids = data.getSubject().split(",");
+ List<TSubject> subjectList = new ArrayList<>();
+ for (String id : ids) {
+ if (id.startsWith("-")) {
+ id = id.replace("-", "");
+ }
+ subjectList.add(subjectService.getById(id));
+ }
+ return new StudyInductionResultVO(data, subjectList);
}
@Override
- public Map<String, Object> questionsAndAnswers(Integer week, Integer day, List<TStudyAnswer> answerList) {
+ public StudyAnswerResultVO questionsAndAnswers(Integer week, Integer day, List<TStudyAnswer> answerList) {
+ if (answerList.isEmpty()) {
+ throw new GlobalException("当前学习周目题目数量不足!");
+ }
// 随机获取一组题
Random rand = new Random();
- TStudyAnswer data = answerList.get(rand.nextInt(answerList.size()));
+ TStudyAnswer data;
+ TStudyAnswer dataTwo;
+ if (answerList.size() == 1) {
+ data = answerList.get(0);
+ dataTwo = answerList.get(0);
+ } else {
+ data = answerList.get(rand.nextInt(answerList.size()));
+ dataTwo = answerList.get(rand.nextInt(answerList.size()));
+ }
+ AnswerVO one = new AnswerVO();
+ BeanUtils.copyProperties(data, one);
+ answerList.remove(data);
+ AnswerVO two = new AnswerVO();
+ BeanUtils.copyProperties(dataTwo, two);
// 获取问题题目 和 回答题目
- Map<String, Object> result = new HashMap<>(8);
List<String> ids = new ArrayList<>();
- ids.add(String.valueOf(data.getSubject()));
- ids.add(String.valueOf(data.getAnswerSubject()));
- result.put("data", data);
+ ids.add(String.valueOf(one.getSubject()));
+ ids.add(String.valueOf(one.getAnswerSubject()));
// 有问有答
- result.put("subject", getSubjects(ids.toArray(ids.toArray(new String[0]))));
- return result;
+ 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 Map<String, Object> pictureMateVoice(Integer week, Integer day, TStudyPair pair) {
- List<TSubject> subjectList = getSubjects(pair.getSubject().split(","));
- Map<String, Object> result = new HashMap<>(8);
- result.put("data", pair);
- result.put("subject", subjectList);
- return result;
+ public StudyPairResultVO pictureMateVoice(Integer week, Integer day, List<TStudyPair> pair) {
+ if (pair.isEmpty()) {
+ throw new GlobalException("当前学习周目题目数量不足!");
+ }
+ // 随机获取一组题
+ Random rand = new Random();
+ TStudyPair data;
+ if (pair.size() == 1) {
+ data = pair.get(0);
+ } else {
+ data = pair.get(rand.nextInt(pair.size()));
+ }
+ List<TSubject> subjectList = getSubjects(data.getSubject().split(","));
+ return new StudyPairResultVO(data, subjectList);
}
/**
@@ -137,7 +194,13 @@
* @return 图片及语音集合
*/
private List<TSubject> getSubjects(String[] ids) {
- return subjectService.lambdaQuery().in(TSubject::getId, Arrays.asList(ids)).list();
+ List<TSubject> list = new ArrayList<>();
+ for (String id : ids) {
+ TSubject data = subjectService.lambdaQuery().eq(TSubject::getId, id)
+ .eq(TSubject::getDisabled, 0).one();
+ list.add(data);
+ }
+ return list;
}
}
--
Gitblit v1.7.1