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/controller/TStudyController.java |   39 +++++++++++++++++++--------------------
 1 files changed, 19 insertions(+), 20 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 e3c7e21..9bd5017 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
@@ -1118,31 +1118,30 @@
             studyRecord.setTotalStudy(Math.round((float) (totalStudy + sum) / 3600));
             studyRecord = studyService.studySchedule(studyRecord, week);
             // 数据库保存的是已完成的学习进度,返回前端时需要转换为剩余学习进度
-            Integer look = studyRecord.getLook();
-            if (look != 100 && look != -1) {
-                studyRecord.setLook(100 - look);
-            }
-            Integer pair = studyRecord.getPair();
-            if (pair != 100 && pair != -1) {
-                studyRecord.setPair(100 - pair);
-            }
-            Integer answer = studyRecord.getAnswer();
-            if (answer != 100 && answer != -1) {
-                studyRecord.setAnswer(100 - answer);
-            }
-            Integer induction = studyRecord.getInduction();
-            if (induction != 100 && induction != -1) {
-                studyRecord.setInduction(100 - induction);
-            }
-            Integer listen = studyRecord.getListen();
-            if (listen != 100 && listen != -1) {
-                studyRecord.setListen(100 - listen);
-            }
+            // -1 表示未开始(中性值)原样返回;100 表示已完成,转换为 0(剩余0%)
+            studyRecord.setLook(convertToSurplus(studyRecord.getLook()));
+            studyRecord.setPair(convertToSurplus(studyRecord.getPair()));
+            studyRecord.setAnswer(convertToSurplus(studyRecord.getAnswer()));
+            studyRecord.setInduction(convertToSurplus(studyRecord.getInduction()));
+            studyRecord.setListen(convertToSurplus(studyRecord.getListen()));
         }
         return R.ok(studyRecord);
     }
 
     /**
+     * 将数据库中的「已完成学习进度」转换为前端展示的「剩余学习进度」
+     *
+     * @param completedProgress 已完成进度;-1 表示未开始,100 表示已完成
+     * @return 剩余进度;未开始(-1)原样返回
+     */
+    private Integer convertToSurplus(Integer completedProgress) {
+        if (null == completedProgress || Constants.BURDEN_ONE.equals(completedProgress)) {
+            return completedProgress;
+        }
+        return Constants.ONE_HUNDRED - completedProgress;
+    }
+
+    /**
      * 查询周目列表
      *
      * @param type    所属类型

--
Gitblit v1.7.1