From dda33478829592be6eea4c78b6519142a9dd93bb Mon Sep 17 00:00:00 2001
From: hjl <1657978663@qq.com>
Date: 星期三, 26 六月 2024 18:20:19 +0800
Subject: [PATCH] fix: 学习端bug

---
 ruoyi-service/ruoyi-study/src/main/java/com/ruoyi/study/service/impl/TStudyServiceImpl.java |   53 ++++++++++++++++++--------
 ruoyi-service/ruoyi-study/src/main/java/com/ruoyi/study/controller/TStudyController.java    |   17 ++++++--
 ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/constant/Constants.java  |    5 ++
 ruoyi-service/ruoyi-study/src/main/java/com/ruoyi/study/controller/TUserController.java     |   12 ++++++
 ruoyi-service/ruoyi-goods/src/main/java/com/ruoyi/goods/service/impl/TGoodsServiceImpl.java |   11 +++++
 5 files changed, 78 insertions(+), 20 deletions(-)

diff --git a/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/constant/Constants.java b/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/constant/Constants.java
index 99da36f..5ee3e2c 100644
--- a/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/constant/Constants.java
+++ b/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/constant/Constants.java
@@ -317,4 +317,9 @@
      */
     public static final String MEMORY = "超级记忆";
 
+    /**
+     * 每日学习时长
+     */
+    public static final String ONLINE_DURATION = "每日学习时长";
+
 }
diff --git a/ruoyi-service/ruoyi-goods/src/main/java/com/ruoyi/goods/service/impl/TGoodsServiceImpl.java b/ruoyi-service/ruoyi-goods/src/main/java/com/ruoyi/goods/service/impl/TGoodsServiceImpl.java
index cda7ef4..e234a88 100644
--- a/ruoyi-service/ruoyi-goods/src/main/java/com/ruoyi/goods/service/impl/TGoodsServiceImpl.java
+++ b/ruoyi-service/ruoyi-goods/src/main/java/com/ruoyi/goods/service/impl/TGoodsServiceImpl.java
@@ -105,6 +105,17 @@
             return R.exchangeError("兑换失败,当前剩余积分不足!");
         }
         if (null != good.getTotal()) {
+            // 检查库存总数是否足够
+            List<TOrder> order = orderService.lambdaQuery().eq(TOrder::getGoodsId, goodId)
+                    .eq(TOrder::getDisabled, 0).list();
+            if (!order.isEmpty()) {
+                int totalNumber = order.stream().map(TOrder::getCount).collect(Collectors.toList())
+                        .stream().mapToInt(Integer::intValue).sum();
+                boolean canBuy = good.getTotal() - totalNumber >= number;
+                if (!canBuy) {
+                    throw new GlobalException("商品库存不足,兑换失败!");
+                }
+            }
             // 检查用户兑换数量是否超过单用户最大兑换数量
             List<TOrder> orderList = orderService.lambdaQuery().eq(TOrder::getUserId, user.getId())
                     .eq(TOrder::getGoodsId, goodId).list();
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 ab871ee..224def4 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
@@ -809,7 +809,7 @@
             data.setIsDelete(0);
             result = result && userPresentRecordService.save(data);
         } else {
-            if (System.currentTimeMillis() - record.getPresentTime().getTime() >= 10 * 60 * 1000) {
+            if (System.currentTimeMillis() - record.getPresentTime().getTime() >= (long) Integer.parseInt(sysSet.getTime()) * 60 * 1000) {
                 // 赠送积分
                 result = userService.lambdaUpdate()
                         .set(TUser::getIntegral, user.getIntegral() + Integer.parseInt(integral))
@@ -820,6 +820,12 @@
                 data.setPresentTime(new Date());
                 data.setIsDelete(0);
                 result = result && userPresentRecordService.save(data);
+                // 生成积分明细
+                TIntegralRecord integralRecord = new TIntegralRecord();
+                integralRecord.setIntegral(sysSet.getIntegral());
+                integralRecord.setMethod(Constants.ONLINE_DURATION);
+                integralRecord.setUserId(loginStudy.getUserid());
+                result = result && integralRecordService.save(integralRecord);
             }
         }
         return R.ok(result);
@@ -1335,7 +1341,8 @@
          * 例如:游戏配置的积分是100,他的正确率是50%那么拿50分,下次他再玩这个游戏 正确率是60% 那么他该获得60分 但是上次已经拿了50 所以这次就只给他加10积分
          */
         Integer userid = loginUserStudy.getUserid();
-        TGame game = gameService.lambdaQuery().eq(TGame::getId, completeStudy.getGameId()).eq(TGame::getDisabled, 0).one();
+        TGame game = gameService.lambdaQuery().eq(TGame::getId, completeStudy.getGameId())
+                .eq(TGame::getDisabled, 0).one();
         if (null == game) {
             throw new GlobalException("游戏信息异常!");
         }
@@ -1348,15 +1355,17 @@
                 .eq(TIntegralRecord::getGameDifficulty, difficulty).list();
         // 本次游戏总共能获取的积分数量
         Integer integral;
+        Integer item = null;
         if (completeStudy.getGameName().equals(Constants.HEARING)) {
             // 本次游戏总积分
             integral = Integer.parseInt(game.getIntegral().split(",")[difficulty]);
+            item = completeStudy.getDifficulty();
         } else if (completeStudy.getGameName().equals(Constants.MEMORY)) {
             integralRecordList = integralRecordService.lambdaQuery()
                     .eq(TIntegralRecord::getUserId, userid)
                     .eq(TIntegralRecord::getGameId, game.getId())
                     .eq(TIntegralRecord::getDisabled, 0)
-                    .eq(TIntegralRecord::getGameDifficulty, null).list();
+                    .last("and gameDifficulty is null").list();
             integral = game.getAnswerIntegral();
         } else {
             throw new GlobalException("该次游戏积分计算异常!");
@@ -1368,7 +1377,7 @@
         // 可获得积分不为null时,才添加积分明细记录
         if (null != availableIntegral && !Constants.ZERO.equals(availableIntegral)) {
             add = add && integralRecordService.add(String.valueOf(availableIntegral),
-                    Constants.COMPLETE_GAME, completeStudy.getGameId(), null, difficulty, null);
+                    Constants.COMPLETE_GAME, completeStudy.getGameId(), null, item, null);
             // 用户账户添加积分
             TUser user = userService.getById(userid);
             user.setIntegral(user.getIntegral() + availableIntegral);
diff --git a/ruoyi-service/ruoyi-study/src/main/java/com/ruoyi/study/controller/TUserController.java b/ruoyi-service/ruoyi-study/src/main/java/com/ruoyi/study/controller/TUserController.java
index 7d150a9..aa54d0b 100644
--- a/ruoyi-service/ruoyi-study/src/main/java/com/ruoyi/study/controller/TUserController.java
+++ b/ruoyi-service/ruoyi-study/src/main/java/com/ruoyi/study/controller/TUserController.java
@@ -381,6 +381,18 @@
         }
     }
 
+    @PostMapping("/studyPage")
+    @ApiOperation(value = "学习端", tags = {"启动页"})
+    public R<String> studyPage() {
+        List<TPage> data = managementClient.getPage1().getData();
+        for (TPage datum : data) {
+            if (datum.getType() == 1) {
+                return R.ok(datum.getImg());
+            }
+        }
+        return R.ok();
+    }
+
     @PostMapping("/parentPage")
     @ApiOperation(value = "平板", tags = {"启动页"})
     public R<String> parentPage() {
diff --git a/ruoyi-service/ruoyi-study/src/main/java/com/ruoyi/study/service/impl/TStudyServiceImpl.java b/ruoyi-service/ruoyi-study/src/main/java/com/ruoyi/study/service/impl/TStudyServiceImpl.java
index 60558ec..76fb9f7 100644
--- a/ruoyi-service/ruoyi-study/src/main/java/com/ruoyi/study/service/impl/TStudyServiceImpl.java
+++ b/ruoyi-service/ruoyi-study/src/main/java/com/ruoyi/study/service/impl/TStudyServiceImpl.java
@@ -65,41 +65,62 @@
             Integer id = item.getId();
             // 计算总积分
             int total = 0;
+            List<Integer> dayList = new ArrayList<>();
             // 有问有答
             List<TStudyAnswer> answerList = studyAnswerService.lambdaQuery().eq(TStudyAnswer::getStudyId, id)
                     .eq(TStudyAnswer::getDisabled, 0).list();
-            Optional<TStudyAnswer> answerOptional = answerList.stream().findAny();
-            if (answerOptional.isPresent()) {
-                total += answerOptional.get().getIntegral();
+            for (TStudyAnswer data : answerList) {
+                Integer day = data.getDay();
+                if (!dayList.contains(day)) {
+                    total += data.getIntegral();
+                    dayList.add(day);
+                }
             }
+            dayList.clear();
             // 归纳判断
             List<TStudyInduction> inductionList = studyInductionService.lambdaQuery().eq(TStudyInduction::getStudyId, id)
                     .eq(TStudyInduction::getDisabled, 0).list();
-            Optional<TStudyInduction> inductionOptional = inductionList.stream().findAny();
-            if (inductionOptional.isPresent()) {
-                total += inductionOptional.get().getIntegral();
+            for (TStudyInduction data : inductionList) {
+                Integer day = data.getDay();
+                if (!dayList.contains(day)) {
+                    total += data.getIntegral();
+                    dayList.add(day);
+                }
             }
+            dayList.clear();
             // 看图选音
             List<TStudyLook> lookList = studyLookService.lambdaQuery().eq(TStudyLook::getStudyId, id)
                     .eq(TStudyLook::getDisabled, 0).list();
-            Optional<TStudyLook> lookOptional = lookList.stream().findAny();
-            if (lookOptional.isPresent()) {
-                total += lookOptional.get().getIntegral();
+            for (TStudyLook data : lookList) {
+                Integer day = data.getDay();
+                if (!dayList.contains(day)) {
+                    total += data.getIntegral();
+                    dayList.add(day);
+                }
             }
+            dayList.clear();
             // 听音选图
             List<TStudyListen> listenList = studyListenService.lambdaQuery().eq(TStudyListen::getStudyId, id)
                     .eq(TStudyListen::getDisabled, 0).list();
-            Optional<TStudyListen> listenOptional = listenList.stream().findAny();
-            if (listenOptional.isPresent()) {
-                total += listenOptional.get().getIntegral();
+            for (TStudyListen data : listenList) {
+                Integer day = data.getDay();
+                if (!dayList.contains(day)) {
+                    total += data.getIntegral();
+                    dayList.add(day);
+                }
             }
+            dayList.clear();
             // 音图相配
             List<TStudyPair> pairList = studyPairService.lambdaQuery().eq(TStudyPair::getStudyId, id)
                     .eq(TStudyPair::getDisabled, 0).list();
-            Optional<TStudyPair> pairOptional = pairList.stream().findAny();
-            if (pairOptional.isPresent()) {
-                total += pairOptional.get().getIntegral();
+            for (TStudyPair data : pairList) {
+                Integer day = data.getDay();
+                if (!dayList.contains(day)) {
+                    total += data.getIntegral();
+                    dayList.add(day);
+                }
             }
+            dayList.clear();
             // 自主游戏
             List<TGame> gameList = gameService.lambdaQuery().eq(TGame::getStudyId, id)
                     .eq(TGame::getDisabled, 0).list();
@@ -465,7 +486,7 @@
                 defaultSchedule = 100;
             } else if (studyIndex < weekIndex) {
                 defaultSchedule = 0;
-            }else {
+            } else {
                 // 根据day初始化学习进度
                 if (Constants.ONE.equals(day)) {
                     defaultSchedule = 0;

--
Gitblit v1.7.1