From 0dfecde9ebe89ec797b273823c52e44baf056df6 Mon Sep 17 00:00:00 2001 From: 无关风月 <443237572@qq.com> Date: 星期一, 24 六月 2024 09:51:54 +0800 Subject: [PATCH] Merge branch 'master' of http://120.76.84.145:10101/gitblit/r/java/DolphinEnglish --- ruoyi-service/ruoyi-study/src/main/java/com/ruoyi/study/service/impl/TUserStudyServiceImpl.java | 79 ++++++++++++++++++++++++++++----------- 1 files changed, 56 insertions(+), 23 deletions(-) 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 eba7df6..0570cab 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 @@ -13,6 +13,7 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -49,8 +50,6 @@ // 游戏难度 GAME_DIFFICULTY_MAP.put(Constants.ZERO, Constants.ONE); GAME_DIFFICULTY_MAP.put(Constants.ONE, Constants.TWO); - GAME_DIFFICULTY_MAP.put(Constants.TWO, Constants.ZERO); - } @Override @@ -88,11 +87,9 @@ } @Override - public Boolean exchangeStudyRecord(List<TStudy> studyList, Integer userId, CompleteStudyDTO completeStudy) { + public Boolean exchangeStudyRecord(TUserStudy userStudyRecord, Integer userId, CompleteStudyDTO completeStudy) { Integer studyTime = completeStudy.getStudyTime(); // 学习记录 - TUserStudy userStudyRecord = lambdaQuery().eq(TUserStudy::getUserId, userId) - .eq(TUserStudy::getDisabled, 0).one(); Integer week = userStudyRecord.getWeek(); Integer day = userStudyRecord.getDay(); if (week.equals(completeStudy.getWeek()) && day.equals(completeStudy.getDay())) { @@ -116,12 +113,20 @@ userStudyRecord.setAnswer(Constants.ONE_HUNDRED); userStudyRecord.setPair(Constants.BURDEN_ONE); } else if (Constants.FIVE.equals(type)) { - userStudyRecord.setPair(Constants.ONE_HUNDRED); - // type为5并且day为5应该进入游戏日 Integer nextDay = DAY_MAP.get(String.valueOf(userStudyRecord.getDay())); + // type为5并且day为5应该进入游戏日 + if (Constants.FIVE.equals(completeStudy.getDay())) { + userStudyRecord.setPair(Constants.ONE_HUNDRED); + // 游戏难度初始化 0(入门难度) + userStudyRecord.setGameDifficulty(Constants.ZERO); + } else { + userStudyRecord.setListen(Constants.BURDEN_ONE); + userStudyRecord.setLook(Constants.BURDEN_ONE); + userStudyRecord.setInduction(Constants.BURDEN_ONE); + userStudyRecord.setAnswer(Constants.BURDEN_ONE); + userStudyRecord.setPair(Constants.BURDEN_ONE); + } userStudyRecord.setDay(nextDay); - // 游戏难度初始化 0(入门难度) - userStudyRecord.setGameDifficulty(Constants.ZERO); } } // 更新学习时长 @@ -136,26 +141,52 @@ @Override public void checkRate(TGame game, Integer userid, CompleteGameDTO completeStudy, List<TStudy> studyList) { String answerRate = game.getAnswerRate(); + // 下一周目逻辑 + int quarterItem = 1; + Map<Integer, List<TStudy>> studyMap = new HashMap<>(8); + for (TStudy study : studyList) { + Integer quarter = study.getQuarter(); + List<TStudy> itemList = studyMap.get(quarter); + if (null == itemList) { + itemList = new ArrayList<>(); + } + itemList.add(study); + studyMap.put(quarter, itemList); + // 记录学习季度 + if (study.getId().equals(game.getStudyId())) { + quarterItem = quarter; + } + } + // 获取当前季度所有周目 + List<TStudy> studyList1 = studyMap.get(quarterItem); // 正确率达到通关率 if (completeStudy.getAccuracy() >= Integer.parseInt(answerRate)) { // 获取用户超级记忆游戏记录 TUserStudy userStudy = this.lambdaQuery().eq(TUserStudy::getUserId, userid).one(); - Integer nextDay = DAY_MAP.get(String.valueOf(userStudy.getDay())); - userStudy.setDay(nextDay); - if (Constants.ONE.equals(nextDay)) { - // 获取下一周目信息 - int index = -1; - for (int i = 0; i < studyList.size(); i++) { - if (studyList.get(i).getWeek().equals(userStudy.getWeek())) { - index = i; - break; + for (int i = 0; i < studyList1.size(); i++) { + TStudy tStudy = studyList1.get(i); + if (tStudy.getWeek().equals(userStudy.getWeek())) { + if (studyList1.size() == 1 || i + 1 == studyList1.size() - 1) { + // 是否为当前季度最后一周目 + List<TStudy> studyList2 = studyMap.get(quarterItem + 1); + // 下一季度数据为空 + if (null != studyList2 && !studyList2.isEmpty()) { + TStudy tStudy1 = studyList2.get(Constants.ZERO); + userStudy.setWeek(tStudy1.getWeek()); + } + } else { + TStudy tStudy1 = studyList1.get(i + 1); + userStudy.setWeek(tStudy1.getWeek()); } } - int nextIndex = (index + 1) % studyList.size(); - TStudy nextStudy = studyList.get(nextIndex); - // 更新学习进度及学习时长 - userStudy.setWeek(nextStudy.getWeek()); } + userStudy.setDay(DAY_MAP.get(String.valueOf(userStudy.getDay()))); + userStudy.setLook(Constants.BURDEN_ONE); + userStudy.setPair(Constants.BURDEN_ONE); + userStudy.setInduction(Constants.BURDEN_ONE); + userStudy.setListen(Constants.BURDEN_ONE); + userStudy.setAnswer(Constants.BURDEN_ONE); + userStudy.setGameDifficulty(Constants.ZERO); this.updateById(userStudy); } } @@ -168,7 +199,9 @@ // 获取用户超级记忆游戏记录 TUserStudy userStudy = this.lambdaQuery().eq(TUserStudy::getUserId, userid).one(); // 更新游戏难度学习记录 - userStudy.setGameDifficulty(GAME_DIFFICULTY_MAP.get(completeStudy.getDifficulty())); + if (!Constants.TWO.equals(userStudy.getGameDifficulty())) { + userStudy.setGameDifficulty(GAME_DIFFICULTY_MAP.get(completeStudy.getDifficulty())); + } this.updateById(userStudy); } } -- Gitblit v1.7.1