From 336fddcc83f863cc8aee573906149a201e4114f3 Mon Sep 17 00:00:00 2001
From: 无关风月 <443237572@qq.com>
Date: 星期三, 19 六月 2024 09:38:21 +0800
Subject: [PATCH] bug修改

---
 ruoyi-service/ruoyi-study/src/main/java/com/ruoyi/study/controller/TStudyController.java |  100 +++++++++++++++++++++++++++++++++++++++++++-------
 1 files changed, 86 insertions(+), 14 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 f24d629..f94ae07 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
@@ -99,8 +99,14 @@
         switch (query.getStoryType()) {
             case 2:
                 List<TStory> list = storyService.list(wrapper);
-                res.setRecords(list);
-                res.setTotal(list.size());
+                List<TStory> tSubjects = new ArrayList<>();
+                for (TStory tSubject : list) {
+                    if (!tSubject.getError().isEmpty()) {
+                        tSubjects.add(tSubject);
+                    }
+                }
+                res.setRecords(tSubjects);
+                res.setTotal(tSubjects.size());
                 return R.ok(res);
             case 1:
                 // 查询出error字段不为空的数据
@@ -157,9 +163,17 @@
                 res.setTotal(list2.size());
                 return R.ok(res);
             case 4:
+                // 查询出error字段不为空的数据
+                wrapper.isNotNull("error");
                 List<TSubject> list3 = subjectService.list(wrapper);
-                res.setRecords(list3);
-                res.setTotal(list3.size());
+                List<TSubject> tSubjects3 = new ArrayList<>();
+                for (TSubject tSubject : list3) {
+                    if (!tSubject.getError().isEmpty()) {
+                        tSubjects3.add(tSubject);
+                    }
+                }
+                res.setRecords(tSubjects3);
+                res.setTotal(tSubjects3.size());
                 return R.ok(res);
             case 5:
                 List<TSubject> list4 = subjectService.list(wrapper);
@@ -210,6 +224,8 @@
             } else {
                 TGame tGame = new TGame();
                 tGame.setWeek(dto.getWeek());
+                tGame.setAnswerRate(game.getAnswerRate());
+                tGame.setRate(game.getRate());
                 tGame.setStudyId(one.getId());
                 tGame.setCount(game.getCount());
                 tGame.setIntegral(game.getIntegral());
@@ -696,7 +712,7 @@
         if (null == loginStudy) {
             return R.tokenError("登录失效!");
         }
-        TUserStudy result = studyService.studySchedule(String.valueOf(loginStudy.getUserid()), week);
+        TUserStudy result = studyService.studySchedule(String.valueOf(loginStudy.getUserid()));
         if (null != result) {
             // 计算当前周 day 1-5的总进度
             int computeSchedule = studyService.computeSchedule(result, week);
@@ -720,6 +736,42 @@
     public R<List<StudyWeekDTO>> weekList(@RequestParam(defaultValue = "1") Integer type, @RequestParam Integer quarter) {
         List<StudyWeekDTO> result = studyService.weekList(type, quarter);
         return R.ok(result);
+    }
+
+    /**
+     * 获取在线时间赠送积分信息
+     */
+    @GetMapping("/onlineDuration")
+    @ApiOperation(value = "获取在线时间赠送积分信息(单位分钟)", tags = {"学习端-首页"})
+    public R<String> onlineDuration() {
+        TSysSet sysSet = managementClient.promptVoice().getData();
+        if (null == sysSet) {
+            throw new GlobalException("获取在线时间赠送积分信息失败!");
+        }
+        // 返回在线时长
+        return R.ok(sysSet.getTime());
+    }
+
+    /**
+     * 根据在线时间赠送积分(定时任务)
+     */
+    @GetMapping("/giveIntegral")
+    @ApiOperation(value = "根据在线时间赠送积分(定时任务)", tags = {"学习端-首页"})
+    public R<Boolean> giveIntegral() {
+        LoginUserParent loginStudy = tokenService.getLoginUserStudy();
+        if (null == loginStudy) {
+            return R.tokenError("登录失效!");
+        }
+        TSysSet sysSet = managementClient.promptVoice().getData();
+        if (null == sysSet) {
+            throw new GlobalException("获取在线时间赠送积分信息失败!");
+        }
+        String integral = sysSet.getIntegral();
+        TUser user = userService.lambdaQuery().eq(TUser::getId, loginStudy.getUserid())
+                .eq(TUser::getDisabled, 0).one();
+        boolean update = userService.lambdaUpdate().set(TUser::getIntegral, user.getIntegral() + Integer.parseInt(integral))
+                .eq(TUser::getId, loginStudy.getUserid()).update();
+        return R.ok(update);
     }
 
     /**
@@ -748,7 +800,6 @@
                 .eq(TSubjectRecord::getDisabled, 0).one();
         // 返回结果
         SubjectRecordResultVO result;
-        SubjectRecordResultVO data = subjectRecordService.recordResult(subjectRecord, loginStudy.getUserid());
         if (null != subjectRecord) {
             subjectRecordService.lambdaUpdate().set(TSubjectRecord::getDisabled, 1)
                     .eq(TSubjectRecord::getId, subjectRecord.getId()).update();
@@ -1050,6 +1101,10 @@
     })
     public R<StudyGameResultVO> gameHearing(@RequestParam Integer quarter, @RequestParam Integer difficulty,
                                             @RequestParam Integer week) {
+        LoginUserParent userStudy = tokenService.getLoginUserStudy();
+        if (null == userStudy) {
+            return R.tokenError("登录失效!");
+        }
         Integer[] array = {0, 1, 2};
         if (!Arrays.stream(array).collect(Collectors.toList()).contains(difficulty)) {
             throw new GlobalException("请选择符合规则的游戏难度!");
@@ -1061,7 +1116,7 @@
         game.setIntegral(game.getIntegral().split(",")[difficulty]);
         game.setTime(game.getTime().split(",")[difficulty]);
         // 检验是否完成难度
-        studyService.checkDifficulty(difficulty, week, game);
+        studyService.checkDifficulty(difficulty, week, game, userStudy.getUserid());
         List<String> subjectId = getSubjectId(week);
         List<String> newSubjectId = subjectId.stream().map(data -> {
             if (data.startsWith(Constants.REDUCE)) {
@@ -1204,7 +1259,23 @@
             user.setIntegral(user.getIntegral() + availableIntegral);
             add = add && userService.updateById(user);
         }
-        return R.ok(add);
+        // 超级记忆逻辑
+        if (Constants.MEMORY.equals(completeStudy.getGameName())) {
+            // 学习配置列表
+            List<TStudy> studyList = studyService.lambdaQuery().eq(TStudy::getDisabled, 0)
+                    .orderByAsc(TStudy::getWeek).list();
+            if (studyList.isEmpty()) {
+                throw new GlobalException("学习配置列表未配置或数据失效!");
+            }
+            // 超级记忆正确率达到通关率标准,才能进入下一周目学习
+            userStudyService.checkRate(game, userid, completeStudy, studyList);
+            return R.ok(add && completeStudy.getAccuracy() >= Integer.parseInt(game.getAnswerRate()));
+        } else {
+            // 超级听力需根据正确率判断是否允许进入下一难度
+            userStudyService.gameHearing(game, userid, completeStudy);
+            String rate = game.getRate().split(",")[completeStudy.getDifficulty()];
+            return R.ok(add && completeStudy.getAccuracy() >= Integer.parseInt(rate));
+        }
     }
 
     private List<String> getSubjectId(Integer week) {
@@ -1429,17 +1500,18 @@
     @GetMapping("/integralDetailParent")
     @ApiOperation(value = "个人中心-积分明细", tags = {"家长端"})
     @ApiImplicitParams({
-            @ApiImplicitParam(value = "查询时间 格式yyyy-MM", name = "time", dataType = "Integer"),
-            @ApiImplicitParam(value = "页码", name = "pageNum", dataType = "Integer", required = true),
-            @ApiImplicitParam(value = "每页显示条数", name = "pageSize", dataType = "Integer", required = true)
+            @ApiImplicitParam(value = "查询时间 格式yyyy-MM", name = "time"),
+            @ApiImplicitParam(value = "页码", name = "pageNum", required = true),
+            @ApiImplicitParam(value = "每页显示条数", name = "pageSize", required = true)
     })
     public R<IPage<TIntegralRecord>> integralDetailParent(String time,
-                                                          @RequestParam("pageNum") Integer pageNum,
-                                                          @RequestParam("pageSize") Integer pageSize) {
+                                                         @RequestParam("pageNum")  Integer pageNum,
+                                                         @RequestParam("pageSize") Integer pageSize) {
+        System.err.println("页码"+pageNum);
+        System.err.println("页数"+ pageSize);
         if (tokenService.getLoginUser1() == null) {
             return R.tokenError("登录失效");
         }
-
         return R.ok(integralRecordService.integralDetail(new Page<>(pageNum, pageSize), tokenService.getLoginUser1().getUserid(), time));
     }
 

--
Gitblit v1.7.1