From a7d177dd48ca8c8a7e154573f7306e2b86dd1a77 Mon Sep 17 00:00:00 2001
From: hjl <1657978663@qq.com>
Date: 星期二, 18 六月 2024 15:18:00 +0800
Subject: [PATCH] fix: 学习端bug

---
 ruoyi-service/ruoyi-study/src/main/java/com/ruoyi/study/service/impl/TUserStudyServiceImpl.java |   91 ++++++++++++++++++++++++++++++++-------------
 1 files changed, 65 insertions(+), 26 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 f7b629b..24cfed5 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
@@ -3,8 +3,10 @@
 import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper;
 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.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.ITUserStudyService;
@@ -31,20 +33,29 @@
      */
     private static final Map<String, Integer> DAY_MAP = new HashMap<>(12);
 
+    /**
+     * 所属day map
+     */
+    private static final Map<Integer, Integer> GAME_DIFFICULTY_MAP = new HashMap<>(12);
+
     static {
+        // 所属day
         DAY_MAP.put(Constants.ONE_STR, Constants.TWO);
         DAY_MAP.put(Constants.TWO_STR, Constants.THREE);
         DAY_MAP.put(Constants.THREE_STR, Constants.FOUR);
         DAY_MAP.put(Constants.FOUR_STR, Constants.FIVE);
-        DAY_MAP.put(Constants.FIVE_STR, Constants.ONE);
-//        DAY_MAP.put(Constants.SIX_STR, Constants.SEVEN);
-//        DAY_MAP.put(Constants.SEVEN_STR, Constants.ONE);
+        DAY_MAP.put(Constants.FIVE_STR, Constants.SIX);
+        DAY_MAP.put(Constants.SIX_STR, Constants.ONE);
+        // 游戏难度
+        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
-    public TUserStudy studySchedule(String userId, Integer week) {
+    public TUserStudy studySchedule(String userId) {
         LambdaQueryChainWrapper<TUserStudy> wrapper = lambdaQuery().eq(TUserStudy::getUserId, userId);
-        wrapper = null != week ? wrapper.eq(TUserStudy::getWeek, week) : wrapper;
         return wrapper.eq(TUserStudy::getDisabled, 0).one();
     }
 
@@ -100,32 +111,20 @@
             userStudyRecord.setPair(Constants.BURDEN_ONE);
         } else if (Constants.FOUR.equals(type)) {
             userStudyRecord.setAnswer(Constants.ONE_HUNDRED);
-            userStudyRecord.setPair(Constants.BURDEN_ONE);
         } else if (Constants.FIVE.equals(type)) {
-            // 类型五,说明当前day已经全部完成,更新学习记录的 day
+            userStudyRecord.setPair(Constants.ONE_HUNDRED);
+            // type为5并且day为5应该进入游戏日
             Integer nextDay = DAY_MAP.get(String.valueOf(userStudyRecord.getDay()));
             userStudyRecord.setDay(nextDay);
+            // 游戏难度初始化 0(入门难度)
+            userStudyRecord.setGameDifficulty(Constants.ZERO);
             // 学习day已切换更新学习进度及学习时长
-            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.setListen(Constants.BURDEN_ONE);
+//            userStudyRecord.setLook(Constants.BURDEN_ONE);
+//            userStudyRecord.setInduction(Constants.BURDEN_ONE);
+//            userStudyRecord.setAnswer(Constants.BURDEN_ONE);
+//            userStudyRecord.setPair(Constants.BURDEN_ONE);
             // 下一day为 1说明该周目已完成,应更改为下一周目
-            if (Constants.ONE.equals(nextDay)) {
-                // 获取下一周目信息
-                int index = -1;
-                for (int i = 0; i < studyList.size(); i++) {
-                    if (studyList.get(i).getWeek().equals(userStudyRecord.getWeek())) {
-                        index = i;
-                        break;
-                    }
-                }
-                int nextIndex = (index + 1) % studyList.size();
-                TStudy nextStudy = studyList.get(nextIndex);
-                // 更新学习进度及学习时长
-                userStudyRecord.setWeek(nextStudy.getWeek());
-            }
         }
         // 更新学习时长
         userStudyRecord.setTotalStudy(userStudyRecord.getTotalStudy() + studyTime);
@@ -136,4 +135,44 @@
         return this.updateById(userStudyRecord);
     }
 
+    @Override
+    public void checkRate(TGame game, Integer userid, CompleteGameDTO completeStudy, List<TStudy> studyList) {
+        String answerRate = game.getAnswerRate();
+        // 正确率达到通关率
+        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;
+                    }
+                }
+                int nextIndex = (index + 1) % studyList.size();
+                TStudy nextStudy = studyList.get(nextIndex);
+                // 更新学习进度及学习时长
+                userStudy.setWeek(nextStudy.getWeek());
+            }
+            this.updateById(userStudy);
+        }
+    }
+
+    @Override
+    public void gameHearing(TGame game, Integer userid, CompleteGameDTO completeStudy) {
+        // 超级听力通关率
+        String answerRate = game.getRate().split(",")[completeStudy.getDifficulty()];
+        if (completeStudy.getAccuracy() >= Integer.parseInt(answerRate)) {
+            // 获取用户超级记忆游戏记录
+            TUserStudy userStudy = this.lambdaQuery().eq(TUserStudy::getUserId, userid).one();
+            // 更新游戏难度学习记录
+            userStudy.setGameDifficulty(GAME_DIFFICULTY_MAP.get(completeStudy.getDifficulty()));
+            this.updateById(userStudy);
+        }
+    }
+
 }

--
Gitblit v1.7.1