From 91b6802e76773abbba1c41476a3482c4c4f549fe Mon Sep 17 00:00:00 2001
From: zjk <852185829@qq.com>
Date: 星期一, 12 十月 2026 16:20:30 +0800
Subject: [PATCH] fix(ruoyi-study): 修复学习进度推进异常及前端展示错误

---
 ruoyi-service/ruoyi-study/src/main/java/com/ruoyi/study/service/impl/TUserStudyServiceImpl.java |   66 +++++++++++----------------------
 1 files changed, 22 insertions(+), 44 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 de6e73a..b2fc8d4 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
@@ -104,51 +104,29 @@
             } else if (Constants.FIVE.equals(type)) {
                 userStudyRecord.setPair(Constants.ONE_HUNDRED);
             }
-            if (userStudyRecord.getListen().equals(Constants.ONE_HUNDRED)){
-                userStudyRecord.setDay(2);
-
+            // STEP 1: 当天五项自主学习全部完成(均为100)后,才推进到下一个学习day
+            boolean allLearningFinished = Constants.ONE_HUNDRED.equals(userStudyRecord.getListen())
+                    && Constants.ONE_HUNDRED.equals(userStudyRecord.getLook())
+                    && Constants.ONE_HUNDRED.equals(userStudyRecord.getInduction())
+                    && Constants.ONE_HUNDRED.equals(userStudyRecord.getAnswer())
+                    && Constants.ONE_HUNDRED.equals(userStudyRecord.getPair());
+            // 仅自主学习日(day 1~5)允许推进,避免 day=6(游戏日)被 DAY_MAP 回绕成 1
+            if (allLearningFinished && userStudyRecord.getDay() < Constants.SIX) {
+                // 按 DAY_MAP 推进:1→2→3→4→5→6(自主游戏日)
+                Integer nextDay = DAY_MAP.get(String.valueOf(userStudyRecord.getDay()));
+                userStudyRecord.setDay(nextDay);
+                if (Constants.SIX.equals(nextDay)) {
+                    // 进入自主游戏日,游戏难度初始化 0(入门难度)
+                    userStudyRecord.setGameDifficulty(Constants.ZERO);
+                } else {
+                    // 进入新学习日,重置五项自主学习进度为未开始(-1)
+                    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);
+                }
             }
-            if (userStudyRecord.getLook().equals(Constants.ONE_HUNDRED)){
-                userStudyRecord.setDay(3);
-
-            }
-            if (userStudyRecord.getInduction().equals(Constants.ONE_HUNDRED)){
-                userStudyRecord.setDay(4);
-
-            }
-            if (userStudyRecord.getAnswer().equals(Constants.ONE_HUNDRED)){
-                userStudyRecord.setDay(5);
-
-            }
-            if (userStudyRecord.getPair().equals(Constants.ONE_HUNDRED)){
-                userStudyRecord.setDay(6);
-
-            }
-            if (userStudyRecord.getDay().equals(Constants.SIX)) {
-                // 游戏难度初始化 0(入门难度)
-                userStudyRecord.setGameDifficulty(Constants.ZERO);
-            }
-//            if (userStudyRecord.getLook().equals(Constants.ONE_HUNDRED) &&
-//                    userStudyRecord.getAnswer().equals(Constants.ONE_HUNDRED) &&
-//                    userStudyRecord.getPair().equals(Constants.ONE_HUNDRED) &&
-//                    userStudyRecord.getInduction().equals(Constants.ONE_HUNDRED) &&
-//                    userStudyRecord.getListen().equals(Constants.ONE_HUNDRED)) {
-//                // 学习完成,进入下一学习day
-//                Integer nextDay = DAY_MAP.get(String.valueOf(userStudyRecord.getDay()));
-//                userStudyRecord.setDay(nextDay);
-//                // 下一day为 6,进入游戏日
-//                if (nextDay.equals(Constants.SIX)) {
-//                    // 游戏难度初始化 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.setTotalStudy(userStudyRecord.getTotalStudy() + studyTime);

--
Gitblit v1.7.1