From f991c73f56f35665bcbe8ce2252c04ea82032b10 Mon Sep 17 00:00:00 2001
From: hjl <1657978663@qq.com>
Date: 星期一, 27 五月 2024 18:06:31 +0800
Subject: [PATCH] feat: 修复登录bug;数据校验规则优化

---
 ruoyi-service/ruoyi-study/src/main/java/com/ruoyi/study/controller/TStudyController.java |  225 +++++++++++++++++++++++++++++++++++--------------------
 1 files changed, 142 insertions(+), 83 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 705c657..43045c2 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
@@ -28,6 +28,7 @@
 
 import javax.annotation.Resource;
 import java.util.*;
+import java.util.concurrent.TimeUnit;
 import java.util.stream.Collectors;
 
 /**
@@ -179,6 +180,9 @@
         TStudy one = studyService.getOne(new QueryWrapper<TStudy>()
                 .eq("week", week)
                 .eq("type", type));
+        one.setQuarter(dto.getQuarter());
+        one.setTitle(dto.getTitle());
+        studyService.updateById(one);
         GameDTO game = dto.getGame();
         StoryListenDTO storyListen = dto.getStoryListen();
         if (day == 6) {
@@ -338,12 +342,23 @@
      */
     @PostMapping("/addWeek")
     public R<Object> addWeek(@RequestBody AddWeekDTO dto) {
-        TStudy tStudy = new TStudy();
-        tStudy.setType(dto.getType());
-        tStudy.setWeek(dto.getWeek());
-        tStudy.setTitle(dto.getTitle());
-        tStudy.setQuarter(dto.getQuarter());
-        studyService.save(tStudy);
+        TStudy one = studyService.getOne(new QueryWrapper<TStudy>()
+                .eq("week", dto.getWeek())
+                .eq("type", dto.getType()));
+        if (one != null) {
+            one.setType(dto.getType());
+            one.setWeek(dto.getWeek());
+            one.setTitle(dto.getTitle());
+            one.setQuarter(dto.getQuarter());
+            studyService.saveOrUpdate(one);
+        } else {
+            TStudy tStudy = new TStudy();
+            tStudy.setType(dto.getType());
+            tStudy.setWeek(dto.getWeek());
+            tStudy.setTitle(dto.getTitle());
+            tStudy.setQuarter(dto.getQuarter());
+            studyService.saveOrUpdate(tStudy);
+        }
         return R.ok();
     }
 
@@ -439,16 +454,19 @@
         for (TStudyListen tStudyListen : list) {
             StringBuilder temp = new StringBuilder();
             StudyListenVO studyListenVO = new StudyListenVO();
-            for (String s : tStudyListen.getSubject().split(",")) {
-                TSubject byId = subjectService.getById(s);
-                temp.append(byId.getName()).append(",");
+            if (StringUtils.hasLength(tStudyListen.getSubject())) {
+                for (String s : tStudyListen.getSubject().split(",")) {
+                    TSubject byId = subjectService.getById(s);
+                    temp.append(byId.getName()).append(",");
+                }
+                String string = temp.toString();
+                studyListenVO.setName(string.substring(0, string.length() - 1));
+                studyListenVO.setIntegral(tStudyListen.getIntegral());
+                studyListenVO.setSubject(tStudyListen.getSubject());
+                studyListenVO.setIsVip(tStudyListen.getIsVip());
+                listenVOS.add(studyListenVO);
             }
-            String string = temp.toString();
-            studyListenVO.setName(string.substring(0, string.length() - 1));
-            studyListenVO.setIntegral(tStudyListen.getIntegral());
-            studyListenVO.setSubject(tStudyListen.getSubject());
-            studyListenVO.setIsVip(tStudyListen.getIsVip());
-            listenVOS.add(studyListenVO);
+
         }
         // 看音选图
         List<TStudyLook> list1 = studyLookService.list(new QueryWrapper<TStudyLook>()
@@ -460,22 +478,25 @@
             StringBuilder names = new StringBuilder();
             StringBuilder sorts = new StringBuilder();
             StudyLookVO studyLookVO1 = new StudyLookVO();
-            for (String s : tStudyLook.getSubject().split(",")) {
-                TSubject byId = subjectService.getById(s);
-                names.append(byId.getName()).append(",");
-                String[] split = tStudyLook.getSort().split(",");
-                String s1 = split[index];
-                sorts.append(s1).append(",");
-                index++;
+            if (StringUtils.hasLength(tStudyLook.getSubject())) {
+                for (String s : tStudyLook.getSubject().split(",")) {
+                    TSubject byId = subjectService.getById(s);
+                    names.append(byId.getName()).append(",");
+                    String[] split = tStudyLook.getSort().split(",");
+                    String s1 = split[index];
+                    sorts.append(s1).append(",");
+                    index++;
+                }
+                String string = names.toString();
+                String string1 = sorts.toString();
+                studyLookVO1.setName(string.substring(0, string.length() - 1));
+                studyLookVO1.setSort(string1.substring(0, string1.length() - 1));
+                studyLookVO1.setIntegral(tStudyLook.getIntegral());
+                studyLookVO1.setSubject(tStudyLook.getSubject());
+                studyLookVO1.setIsVip(tStudyLook.getIsVip());
+                lookVOS.add(studyLookVO1);
             }
-            String string = names.toString();
-            String string1 = sorts.toString();
-            studyLookVO1.setName(string.substring(0, string.length() - 1));
-            studyLookVO1.setSort(string1.substring(0, string1.length() - 1));
-            studyLookVO1.setIntegral(tStudyLook.getIntegral());
-            studyLookVO1.setSubject(tStudyLook.getSubject());
-            studyLookVO1.setIsVip(tStudyLook.getIsVip());
-            lookVOS.add(studyLookVO1);
+
         }
         // 归纳排除
         List<TStudyInduction> list2 = studyInductionService.list(new QueryWrapper<TStudyInduction>()
@@ -485,17 +506,20 @@
         for (TStudyInduction tStudyInduction : list2) {
             StringBuilder names = new StringBuilder();
             StudyInductionVO studyInductionVO = new StudyInductionVO();
-            for (String s : tStudyInduction.getSubject().split(",")) {
-                String replace = s.replace("-", "");
-                TSubject byId = subjectService.getById(replace);
-                names.append(byId.getName()).append(",");
+            if (StringUtils.hasLength(tStudyInduction.getSubject())) {
+                for (String s : tStudyInduction.getSubject().split(",")) {
+                    String replace = s.replace("-", "");
+                    TSubject byId = subjectService.getById(replace);
+                    names.append(byId.getName()).append(",");
+                }
+                String string = names.toString();
+                studyInductionVO.setName(string.substring(0, string.length() - 1));
+                studyInductionVO.setIntegral(tStudyInduction.getIntegral());
+                studyInductionVO.setSubject(tStudyInduction.getSubject());
+                studyInductionVO.setIsVip(tStudyInduction.getIsVip());
+                inductionVOS.add(studyInductionVO);
             }
-            String string = names.toString();
-            studyInductionVO.setName(string.substring(0, string.length() - 1));
-            studyInductionVO.setIntegral(tStudyInduction.getIntegral());
-            studyInductionVO.setSubject(tStudyInduction.getSubject());
-            studyInductionVO.setIsVip(tStudyInduction.getIsVip());
-            inductionVOS.add(studyInductionVO);
+
         }
         // 有问有答
         List<TStudyAnswer> list3 = studyAnswerService.list(new QueryWrapper<TStudyAnswer>()
@@ -504,24 +528,37 @@
         for (TStudyAnswer tStudyAnswer : list3) {
             StringBuilder names = new StringBuilder();
             StudyAnswerVO studyAnswerVO = new StudyAnswerVO();
-            if (tStudyAnswer.getIsAnswer() == 1) {
-                TSubject byId = subjectService.getById(tStudyAnswer.getSubject());
-                names.append(byId.getName()).append(",");
-                TSubject byId1 = subjectService.getById(tStudyAnswer.getAnswerSubject());
-                names.append(byId1.getName()).append(",");
-            } else {
-                TSubject byId = subjectService.getById(tStudyAnswer.getSubject());
-                names.append(byId.getName()).append(",");
-                TSubject byId1 = subjectService.getById(tStudyAnswer.getAnswerSubject());
-                names.append(byId1.getName()).append(",");
+            if (tStudyAnswer.getIsAnswer() != null) {
+                if (tStudyAnswer.getIsAnswer() == 1) {
+                    if (tStudyAnswer.getSubject() != null) {
+                        TSubject byId = subjectService.getById(tStudyAnswer.getSubject());
+                        names.append(byId.getName()).append(",");
+                    }
+                    if (tStudyAnswer.getAnswerSubject() != null) {
+                        TSubject byId1 = subjectService.getById(tStudyAnswer.getAnswerSubject());
+                        names.append(byId1.getName()).append(",");
+                    }
+                } else {
+                    if (tStudyAnswer.getSubject() != null) {
+                        TSubject byId = subjectService.getById(tStudyAnswer.getSubject());
+                        names.append(byId.getName()).append(",");
+                    }
+                    if (tStudyAnswer.getAnswerSubject() != null) {
+                        TSubject byId1 = subjectService.getById(tStudyAnswer.getAnswerSubject());
+                        names.append(byId1.getName()).append(",");
+                    }
+                }
             }
-            String string = names.toString();
-            studyAnswerVO.setName(string.substring(0, string.length() - 1));
-            studyAnswerVO.setIntegral(tStudyAnswer.getIntegral());
-            studyAnswerVO.setIsVip(tStudyAnswer.getIsVip());
-            studyAnswerVO.setIsAnswer(tStudyAnswer.getIsAnswer());
-            studyAnswerVO.setSubject(tStudyAnswer.getSubject() + "," + tStudyAnswer.getAnswerSubject());
-            answerVOS.add(studyAnswerVO);
+            if (StringUtils.hasLength(names)) {
+                String string = names.toString();
+                studyAnswerVO.setName(string.substring(0, string.length() - 1));
+                studyAnswerVO.setIntegral(tStudyAnswer.getIntegral());
+                studyAnswerVO.setIsVip(tStudyAnswer.getIsVip());
+                studyAnswerVO.setIsAnswer(tStudyAnswer.getIsAnswer());
+                studyAnswerVO.setSubject(tStudyAnswer.getSubject() + "," + tStudyAnswer.getAnswerSubject());
+                answerVOS.add(studyAnswerVO);
+            }
+
         }
         // 音图相配
         List<TStudyPair> list4 = studyPairService.list(new QueryWrapper<TStudyPair>()
@@ -531,16 +568,19 @@
         for (TStudyPair tStudyPair : list4) {
             StringBuilder names = new StringBuilder();
             StudyPairVO studyPairVO = new StudyPairVO();
-            for (String s : tStudyPair.getSubject().split(",")) {
-                TSubject byId = subjectService.getById(s);
-                names.append(byId.getName()).append(",");
+            if (StringUtils.hasLength(tStudyPair.getSubject())) {
+                for (String s : tStudyPair.getSubject().split(",")) {
+                    TSubject byId = subjectService.getById(s);
+                    names.append(byId.getName()).append(",");
+                }
+                String string = names.toString();
+                studyPairVO.setName(string.substring(0, string.length() - 1));
+                studyPairVO.setIntegral(tStudyPair.getIntegral());
+                studyPairVO.setSubject(tStudyPair.getSubject());
+                studyPairVO.setIsVip(tStudyPair.getIsVip());
+                pairVOS.add(studyPairVO);
             }
-            String string = names.toString();
-            studyPairVO.setName(string.substring(0, string.length() - 1));
-            studyPairVO.setIntegral(tStudyPair.getIntegral());
-            studyPairVO.setSubject(tStudyPair.getSubject());
-            studyPairVO.setIsVip(tStudyPair.getIsVip());
-            pairVOS.add(studyPairVO);
+
         }
         List<TGame> list5 = gameService.list(new QueryWrapper<TGame>()
                 .eq("week", week));
@@ -564,29 +604,47 @@
             StringBuilder names1 = new StringBuilder();
             StringBuilder sort = new StringBuilder();
             StringBuilder sort1 = new StringBuilder();
-            for (String s : tStory.getStory().split(",")) {
-                TStory byId = storyService.getById(s);
-                names.append(byId.getName()).append(",");
+            if (StringUtils.hasLength(tStory.getStory())) {
+                for (String s : tStory.getStory().split(",")) {
+                    TStory byId = storyService.getById(s);
+                    names.append(byId.getName()).append(",");
+                }
             }
-            for (String s : tStory.getLookStory().split(",")) {
-                TStory byId = storyService.getById(s);
-                names1.append(byId.getName()).append(",");
+            if (StringUtils.hasLength(tStory.getLookStory())) {
+                for (String s : tStory.getLookStory().split(",")) {
+                    TStory byId = storyService.getById(s);
+                    names1.append(byId.getName()).append(",");
+                }
             }
-            for (String s : tStory.getSort().split(",")) {
-                sort.append(s).append(",");
+            if (StringUtils.hasLength(tStory.getSort())) {
+                for (String s : tStory.getSort().split(",")) {
+                    sort.append(s).append(",");
+                }
             }
-            for (String s : tStory.getLookSort().split(",")) {
-                sort1.append(s).append(",");
+            if (StringUtils.hasLength(tStory.getLookSort())) {
+                for (String s : tStory.getLookSort().split(",")) {
+                    sort1.append(s).append(",");
+                }
             }
-            storyVO.setName(names.substring(0, names.length() - 1));
-            storyVO.setSort(sort.substring(0, sort.length() - 1));
+            if (StringUtils.hasLength(names)) {
+                storyVO.setName(names.substring(0, names.length() - 1));
+
+            }
+            if (StringUtils.hasLength(sort)) {
+                storyVO.setSort(sort.substring(0, sort.length() - 1));
+
+            }
+            if (StringUtils.hasLength(names1)) {
+                storyVO.setLookName(names1.substring(0, names1.length() - 1));
+
+            }
+            if (StringUtils.hasLength(sort1)) {
+                storyVO.setLookSort(sort1.substring(0, sort1.length() - 1));
+            }
             storyVO.setIntegral(tStory.getIntegral());
-            storyVO.setLookName(names1.substring(0, names1.length() - 1));
-            storyVO.setLookSort(sort1.substring(0, sort1.length() - 1));
             storyVO.setLookIntegral(tStory.getLookIntegral());
             storyVOS.add(storyVO);
         }
-
         res.setAnswer(answerVOS);
         res.setPair(pairVOS);
         res.setListen(listenVOS);
@@ -604,7 +662,7 @@
      * @param quarter 季度
      */
     @GetMapping("/weekList")
-    @ApiOperation(value = "周目列表", tags = {"周目列表"})
+    @ApiOperation(value = "根据季度获取周目列表", tags = {"根据季度获取周目列表"})
     @ApiImplicitParams({
             @ApiImplicitParam(value = "所属类型", name = "type", dataType = "Integer", required = true),
             @ApiImplicitParam(value = "季度", name = "quarter", dataType = "Integer", required = true)
@@ -800,7 +858,7 @@
      * @param completeStudy 完成学习信息
      */
     @PostMapping("/completeLearning")
-    @ApiOperation(value = "完成学习", tags = {"完成学习/其他积分来源(分享...)"})
+    @ApiOperation(value = "完成学习", tags = {"完成学习"})
     public R<Boolean> completeLearning(@RequestBody CompleteStudyDTO completeStudy) {
         // 登录用户id
         Integer userId = tokenService.getLoginUserStudy().getUserid();
@@ -950,6 +1008,7 @@
                 subjectId.addAll(Arrays.asList(subject.split(",")));
             }
             redisService.setCacheList(RedisConstants.HEARING_TREE, subjectId);
+            redisService.expire(RedisConstants.HEARING_TREE, RedisConstants.THIRTY, TimeUnit.MINUTES);
         }
         return subjectId;
     }

--
Gitblit v1.7.1