From 253ee614523ba4baa756cf209333d4528a4386b1 Mon Sep 17 00:00:00 2001
From: hjl <1657978663@qq.com>
Date: 星期一, 24 六月 2024 17:56:14 +0800
Subject: [PATCH] fix: 学习端bug

---
 ruoyi-service/ruoyi-study/src/main/java/com/ruoyi/study/controller/TStudyController.java |   33 +++++++++++++++++++++------------
 1 files changed, 21 insertions(+), 12 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 a5ca771..a78c8cb 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
@@ -1115,7 +1115,7 @@
      */
     @PostMapping("/completeLearning")
     @ApiOperation(value = "完成学习", tags = {"学习端-听-自主学习"})
-    public R<Boolean> completeLearning(@RequestBody CompleteStudyDTO completeStudy) {
+    public R<Integer> completeLearning(@RequestBody CompleteStudyDTO completeStudy) {
         LoginUserParent userStudy = tokenService.getLoginUserStudy();
         if (null == userStudy) {
             return R.tokenError("登录失效!");
@@ -1176,7 +1176,7 @@
             userStudyRecord = createUserStudy(userId);
         }
         Boolean updateStudyRecord = userStudyService.exchangeStudyRecord(userStudyRecord, userId, completeStudy);
-        return R.ok(update && updateStudyRecord);
+        return R.ok(sum > obtainedIntegral ? sum - obtainedIntegral : 0);
     }
 
     /**
@@ -1222,7 +1222,7 @@
             throw new GlobalException("当前周目下day1 - day5题目不足!");
         }
         // 根据游戏设置数量获取图片及语音
-        List<String> subjectData = getData(game, newSubjectId);
+        List<String> subjectData = getData(game, newSubjectId, 1);
         List<TSubject> subjectList = getSubjectList(subjectData);
         return R.ok(new StudyGameResultVO(game, subjectList));
     }
@@ -1271,16 +1271,22 @@
             throw new GlobalException("当前周目下day1 - day5题目不足!");
         }
         // 根据游戏设置数量获取图片及语音
-        return getData(game, newSubjectId);
+        return getData(game, newSubjectId, 2);
     }
 
-    private List<String> getData(TGame game, List<String> newSubjectId) {
+    private List<String> getData(TGame game, List<String> newSubjectId, int num) {
         List<String> subjectData = new ArrayList<>();
         Random random = new Random();
         // 获取列表大小
         int dataSize = newSubjectId.size();
         // 生成随机索引并获取数据
-        for (int i = 0; i < game.getCount(); i++) {
+        int index;
+        if (1 == num) {
+            index = game.getCount();
+        } else {
+            index = game.getAnswerCount();
+        }
+        for (int i = 0; i < index; i++) {
             // 生成随机索引
             int randomIndex = random.nextInt(dataSize);
             // 获取对应的数据并加入结果列表
@@ -1312,7 +1318,7 @@
      */
     @PostMapping("/gameAchievement")
     @ApiOperation(value = "完成游戏-记录游戏测试成绩", tags = {"学习端-听-自主游戏"})
-    public R<Boolean> gameAchievement(@RequestBody CompleteGameDTO completeStudy) {
+    public R<Integer> gameAchievement(@RequestBody CompleteGameDTO completeStudy) {
         LoginUserParent loginUserStudy = tokenService.getLoginUserStudy();
         if (null == loginUserStudy) {
             return R.tokenError("登录失效!");
@@ -1363,7 +1369,7 @@
         userStudy.setTodayStudy(userStudy.getTodayStudy() + completeStudy.getUseTime());
         userStudy.setWeekStudy(userStudy.getWeekStudy() + completeStudy.getUseTime());
         userStudy.setMonthStudy(userStudy.getMonthStudy() + completeStudy.getUseTime());
-        boolean update = userStudyService.updateById(userStudy);
+        userStudyService.updateById(userStudy);
         // 超级记忆逻辑
         if (Constants.MEMORY.equals(completeStudy.getGameName())) {
             // 学习配置列表
@@ -1381,7 +1387,7 @@
             String rate = game.getRate().split(",")[completeStudy.getDifficulty()];
             add = add && completeStudy.getAccuracy() >= Integer.parseInt(rate);
         }
-        return R.ok(add && update);
+        return R.ok(availableIntegral);
     }
 
     private TUserStudy createUserStudy(Integer userid) {
@@ -1492,7 +1498,7 @@
             @ApiImplicitParam(value = "正确率", name = "accuracy", dataType = "Integer"),
             @ApiImplicitParam(value = "学习时长(秒)", name = "studyTime", dataType = "Integer", required = true)
     })
-    public R<Boolean> completeStory(@RequestParam Integer storyId, @RequestParam Integer type,
+    public R<Integer> completeStory(@RequestParam Integer storyId, @RequestParam Integer type,
                                     Integer accuracy, @RequestParam Integer studyTime) {
         TStoryListen storyListen = storyListenService.lambdaQuery().eq(TStoryListen::getId, storyId)
                 .eq(TStoryListen::getDisabled, 0).one();
@@ -1521,6 +1527,7 @@
             throw new GlobalException("学习时长更新失败!");
         }
         // 根据故事类型不同,逻辑处理
+        int sum = 0;
         if (Constants.ONE.equals(type)) {
             if (null == accuracy) {
                 throw new GlobalException("自主故事-看图配音正确率异常!");
@@ -1546,6 +1553,7 @@
                 data.setType(Constants.ONE);
                 data.setStoryId(storyId);
                 result = studyRecordService.save(data);
+                sum = integral - obtainedIntegral;
             }
         } else {
             // 超级记忆只有首次才能获取积分
@@ -1561,9 +1569,10 @@
                 // 添加积分
                 user.setIntegral(user.getIntegral() + storyListen.getIntegral());
                 result = result && userService.updateById(user);
+                sum = storyListen.getIntegral();
             }
         }
-        return R.ok(result);
+        return R.ok(sum);
     }
 
     @GetMapping("/studyRecord")
@@ -1596,7 +1605,7 @@
             List<TStudy> studyList = studyService.lambdaQuery().eq(TStudy::getDisabled, 0)
                     .eq(TStudy::getType, Constants.ONE)
                     .orderByAsc(TStudy::getWeek).list();
-            int size = studyService.residueWeek(studyRecord,studyList);
+            int size = studyService.residueWeek(studyRecord, studyList);
             studyRecord.setSurplus(size);
         }
         return R.ok(new StudyRecordResultVO(studyRecord, gameRecordList));

--
Gitblit v1.7.1