无关风月
2024-06-19 5feb2085f70f764d2a44dff707a3f57fa5fb306f
ruoyi-service/ruoyi-study/src/main/java/com/ruoyi/study/controller/TStudyController.java
@@ -219,6 +219,8 @@
                studyId.setAnswerTime(game.getAnswerTime());
                studyId.setAnswerIntegral(game.getAnswerIntegral());
                studyId.setAnswerCount(game.getAnswerCount());
                studyId.setRate(game.getRate());
                studyId.setAnswerRate(game.getAnswerRate());
                gameService.updateById(studyId);
            } else {
                TGame tGame = new TGame();
@@ -602,7 +604,6 @@
                studyPairVO.setIsVip(tStudyPair.getIsVip());
                pairVOS.add(studyPairVO);
            }
        }
        List<TGame> list5 = gameService.list(new QueryWrapper<TGame>()
                .eq("week", week));
@@ -614,6 +615,8 @@
            gameVO.setAnswerTime(tGame.getAnswerTime());
            gameVO.setAnswerIntegral(tGame.getAnswerIntegral());
            gameVO.setAnswerCount(tGame.getAnswerCount());
            gameVO.setRate(tGame.getRate());
            gameVO.setAnswerRate(tGame.getAnswerRate());
            gameVOS.add(gameVO);
        }
        List<TStoryListen> list6 = storyListenService.list(new QueryWrapper<TStoryListen>()
@@ -711,14 +714,28 @@
        if (null == loginStudy) {
            return R.tokenError("登录失效!");
        }
        TUserStudy result = userStudyService.lambdaQuery().eq(TUserStudy::getUserId, loginStudy.getUserid())
        Integer userid = loginStudy.getUserid();
        TUserStudy studyRecord = userStudyService.lambdaQuery().eq(TUserStudy::getUserId, loginStudy.getUserid())
                .eq(TUserStudy::getDisabled, 0).one();
        if (null != result) {
        if (null != studyRecord) {
            // 计算当前周 day 1-5的总进度
            int computeSchedule = studyService.computeSchedule(result, week);
            result.setComputeSchedule(computeSchedule);
            int computeSchedule = studyService.computeSchedule(studyRecord, week);
            studyRecord.setComputeSchedule(computeSchedule);
            // 学习时长格式转换
            Integer todayStudy = studyRecord.getTodayStudy();
            studyRecord.setTodayStudy(Math.round((float) todayStudy / 3600));
            Integer weekStudy = studyRecord.getWeekStudy();
            studyRecord.setWeekStudy(Math.round((float) weekStudy / 3600));
            Integer monthStudy = studyRecord.getMonthStudy();
            studyRecord.setMonthStudy(Math.round((float) monthStudy / 3600));
            // 总时长还需计算上游戏测试成绩时长
            List<TGameRecord> gameRecordList = gameRecordService.lambdaQuery().eq(TGameRecord::getUserId, userid)
                    .eq(TGameRecord::getDisabled, 0).list();
            int sum = gameRecordList.stream().map(TGameRecord::getUseTime).mapToInt(Integer::intValue).sum();
            Integer totalStudy = studyRecord.getTotalStudy();
            studyRecord.setTotalStudy(Math.round((float) (totalStudy + sum) / 3600));
        }
        return R.ok(result);
        return R.ok(studyRecord);
    }
    /**
@@ -1224,8 +1241,8 @@
    @PostMapping("/gameAchievement")
    @ApiOperation(value = "完成游戏-记录游戏测试成绩", tags = {"学习端-听-自主游戏"})
    public R<Boolean> gameAchievement(@RequestBody CompleteGameDTO completeStudy) {
        LoginUserParent userStudy = tokenService.getLoginUserStudy();
        if (null == userStudy) {
        LoginUserParent loginUserStudy = tokenService.getLoginUserStudy();
        if (null == loginUserStudy) {
            return R.tokenError("登录失效!");
        }
        /*
@@ -1233,7 +1250,7 @@
         * 并且需要判断如果该游戏用户已获取一部分积分,再次测试后正确率增长,只能获取高于上次正确率的部分积分
         * 例如:游戏配置的积分是100,他的正确率是50%那么拿50分,下次他再玩这个游戏 正确率是60% 那么他该获得60分 但是上次已经拿了50 所以这次就只给他加10积分
         */
        Integer userid = userStudy.getUserid();
        Integer userid = loginUserStudy.getUserid();
        TGame game = gameService.lambdaQuery().eq(TGame::getId, completeStudy.getGameId()).eq(TGame::getDisabled, 0).one();
        if (null == game) {
            throw new GlobalException("游戏信息异常!");
@@ -1273,13 +1290,22 @@
            }
            // 超级记忆正确率达到通关率标准,才能进入下一周目学习
            userStudyService.checkRate(game, userid, completeStudy, studyList);
            return R.ok(add && completeStudy.getAccuracy() >= Integer.parseInt(game.getAnswerRate()));
            add = 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));
            add = add && completeStudy.getAccuracy() >= Integer.parseInt(rate);
        }
        // 学习时长更新
        TUserStudy userStudy = userStudyService.lambdaQuery().eq(TUserStudy::getUserId, userid)
                .eq(TUserStudy::getDisabled, 0).one();
        userStudy.setTotalStudy(userStudy.getTotalStudy() + completeStudy.getUseTime());
        userStudy.setTodayStudy(userStudy.getTodayStudy() + completeStudy.getUseTime());
        userStudy.setWeekStudy(userStudy.getWeekStudy() + completeStudy.getUseTime());
        userStudy.setMonthStudy(userStudy.getMonthStudy() + completeStudy.getUseTime());
        boolean update = userStudyService.updateById(userStudy);
        return R.ok(add && update);
    }
    private List<String> getSubjectId(Integer week) {
@@ -1475,7 +1501,7 @@
    @ApiOperation(value = "游戏测试成绩", tags = {"家长端-游戏测试成绩"})
    public R<StudyRecordResultVO> record() {
        LoginUserParent loginUser1 = tokenService.getLoginUser1();
        System.err.println("用户登录信息:"+loginUser1);
        System.err.println("用户登录信息:" + loginUser1);
        if (loginUser1 == null) {
            return R.tokenError("登陆失效,请重新登录");
        }
@@ -1493,6 +1519,10 @@
            TUserStudy tUserStudy = new TUserStudy();
            tUserStudy.setSurplus(studyService.list(new QueryWrapper<TStudy>()
                    .eq("type", 1)).size());
            tUserStudy.setTodayStudy(Constants.ZERO);
            tUserStudy.setTotalStudy(Constants.ZERO);
            tUserStudy.setWeekStudy(Constants.ZERO);
            tUserStudy.setMonthStudy(Constants.ZERO);
            studyRecord = tUserStudy;
        }
        // 学习时长格式转换