From 8abab6c0916fe6666835c634be45a52f8ab400d2 Mon Sep 17 00:00:00 2001 From: hjl <1657978663@qq.com> Date: 星期二, 25 六月 2024 09:50:04 +0800 Subject: [PATCH] fix: 学习端bug --- ruoyi-service/ruoyi-study/src/main/java/com/ruoyi/study/service/impl/TStudyServiceImpl.java | 23 ++++++++++++++++++----- ruoyi-service/ruoyi-study/src/main/java/com/ruoyi/study/service/ITStudyService.java | 8 ++++++++ ruoyi-service/ruoyi-study/src/main/java/com/ruoyi/study/controller/TStudyController.java | 6 ++++++ ruoyi-service/ruoyi-study/src/main/java/com/ruoyi/study/service/impl/TUserStudyServiceImpl.java | 15 ++++++++++++++- 4 files changed, 46 insertions(+), 6 deletions(-) diff --git a/ruoyi-service/ruoyi-study/src/main/java/com/ruoyi/study/controller/TStudyController.java b/ruoyi-service/ruoyi-study/src/main/java/com/ruoyi/study/controller/TStudyController.java index a78c8cb..bee62b5 100644 --- a/ruoyi-service/ruoyi-study/src/main/java/com/ruoyi/study/controller/TStudyController.java +++ b/ruoyi-service/ruoyi-study/src/main/java/com/ruoyi/study/controller/TStudyController.java @@ -1240,6 +1240,10 @@ @ApiImplicitParam(value = "所属周目", name = "week", dataType = "Integer", required = true) }) public R<StudyGameMemoryVO> gameMemory(@RequestParam Integer quarter, @RequestParam Integer week) { + LoginUserParent userStudy = tokenService.getLoginUserStudy(); + if (null == userStudy) { + return R.tokenError("登录失效!"); + } TGame game = gameService.gameHearing(quarter, week); if (null == game) { throw new GlobalException("当前季度该周目暂无配置游戏数据!"); @@ -1254,6 +1258,8 @@ photoList.add(new GameMemoryPhotoVO(tSubject.getId(), tSubject.getImg())); voiceList.add(new GameMemoryVoiceVO(tSubject.getId(), tSubject.getCorrect())); } + // 校验超级听力是否通过 + studyService.checkClearance(game,userStudy.getUserid()); // 框架记忆数量翻倍,前端需要根据数量画格子 game.setAnswerCount(game.getAnswerCount() * 2); return R.ok(new StudyGameMemoryVO(game, photoList, voiceList)); diff --git a/ruoyi-service/ruoyi-study/src/main/java/com/ruoyi/study/service/ITStudyService.java b/ruoyi-service/ruoyi-study/src/main/java/com/ruoyi/study/service/ITStudyService.java index b493ae8..460c819 100644 --- a/ruoyi-service/ruoyi-study/src/main/java/com/ruoyi/study/service/ITStudyService.java +++ b/ruoyi-service/ruoyi-study/src/main/java/com/ruoyi/study/service/ITStudyService.java @@ -122,4 +122,12 @@ * @return 剩余周目 */ int residueWeek(TUserStudy studyRecord, List<TStudy> studyList); + + /** + * 校验超级听力是否通过 + * + * @param game 游戏信息 + * @param userid 用户信息 + */ + void checkClearance(TGame game, Integer userid); } 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 e9719c5..d6f8422 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 @@ -468,23 +468,23 @@ // 根据五种学习计算进度 Integer listen = result.getListen(); if (!Constants.BURDEN_ONE.equals(listen)) { - defaultSchedule += (int)(((double)listen / 100) * 4); + defaultSchedule += (int) (((double) listen / 100) * 4); } Integer look = result.getLook(); if (!Constants.BURDEN_ONE.equals(look)) { - defaultSchedule += (int)(((double)look / 100) * 4); + defaultSchedule += (int) (((double) look / 100) * 4); } Integer induction = result.getInduction(); if (!Constants.BURDEN_ONE.equals(induction)) { - defaultSchedule += (int)(((double)induction / 100) * 4); + defaultSchedule += (int) (((double) induction / 100) * 4); } Integer answer = result.getAnswer(); if (!Constants.BURDEN_ONE.equals(answer)) { - defaultSchedule += (int)(((double)answer / 100) * 4); + defaultSchedule += (int) (((double) answer / 100) * 4); } Integer pair = result.getPair(); if (!Constants.BURDEN_ONE.equals(pair)) { - defaultSchedule += (int)(((double)pair / 100) * 4); + defaultSchedule += (int) (((double) pair / 100) * 4); } } @@ -597,4 +597,17 @@ return studyList.size() - residueWeek; } + @Override + public void checkClearance(TGame game, Integer userid) { + String rate = game.getRate().split(",")[Constants.TWO]; + // 获取用户游戏进度 + List<TGameRecord> list = gameRecordService.lambdaQuery().eq(TGameRecord::getUserId, userid) + .eq(TGameRecord::getGameId, game.getId()) + .ge(TGameRecord::getAccuracy, rate) + .eq(TGameRecord::getGameDifficulty, Constants.TWO).list(); + if (list.isEmpty()) { + throw new GlobalException("超级听力暂未通关!"); + } + } + } diff --git a/ruoyi-service/ruoyi-study/src/main/java/com/ruoyi/study/service/impl/TUserStudyServiceImpl.java b/ruoyi-service/ruoyi-study/src/main/java/com/ruoyi/study/service/impl/TUserStudyServiceImpl.java index 0570cab..5a69d7e 100644 --- a/ruoyi-service/ruoyi-study/src/main/java/com/ruoyi/study/service/impl/TUserStudyServiceImpl.java +++ b/ruoyi-service/ruoyi-study/src/main/java/com/ruoyi/study/service/impl/TUserStudyServiceImpl.java @@ -4,15 +4,18 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.ruoyi.common.core.constant.Constants; import com.ruoyi.study.domain.TGame; +import com.ruoyi.study.domain.TGameRecord; import com.ruoyi.study.domain.TStudy; import com.ruoyi.study.domain.TUserStudy; import com.ruoyi.study.dto.CompleteGameDTO; import com.ruoyi.study.dto.CompleteStudyDTO; import com.ruoyi.study.mapper.TUserStudyMapper; +import com.ruoyi.study.service.ITGameRecordService; import com.ruoyi.study.service.ITUserStudyService; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import javax.annotation.Resource; import java.util.ArrayList; import java.util.HashMap; import java.util.List; @@ -28,6 +31,9 @@ */ @Service public class TUserStudyServiceImpl extends ServiceImpl<TUserStudyMapper, TUserStudy> implements ITUserStudyService { + + @Resource + private ITGameRecordService gameRecordService; /** * 所属day map @@ -200,7 +206,14 @@ TUserStudy userStudy = this.lambdaQuery().eq(TUserStudy::getUserId, userid).one(); // 更新游戏难度学习记录 if (!Constants.TWO.equals(userStudy.getGameDifficulty())) { - userStudy.setGameDifficulty(GAME_DIFFICULTY_MAP.get(completeStudy.getDifficulty())); + // 获取用户游戏进度 + List<TGameRecord> list = gameRecordService.lambdaQuery().eq(TGameRecord::getUserId, userid) + .eq(TGameRecord::getGameId, game.getId()) + .ge(TGameRecord::getAccuracy, answerRate) + .eq(TGameRecord::getGameDifficulty, completeStudy.getDifficulty()).list(); + if (!list.isEmpty()) { + userStudy.setGameDifficulty(GAME_DIFFICULTY_MAP.get(completeStudy.getDifficulty())); + } } this.updateById(userStudy); } -- Gitblit v1.7.1