hjl
2024-06-19 233ab439e38d3040d556f3f6d04492be2a3a6c8d
fix: 学习端bug
4个文件已修改
114 ■■■■■ 已修改文件
ruoyi-service/ruoyi-study/src/main/java/com/ruoyi/study/controller/TStudyController.java 81 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-study/src/main/java/com/ruoyi/study/controller/TUserController.java 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-study/src/main/java/com/ruoyi/study/service/ITUserStudyService.java 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-study/src/main/java/com/ruoyi/study/service/impl/TUserStudyServiceImpl.java 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-study/src/main/java/com/ruoyi/study/controller/TStudyController.java
@@ -1097,7 +1097,12 @@
            update = update && studyRecordService.save(record);
        }
        // 更改学习记录
        Boolean updateStudyRecord = userStudyService.exchangeStudyRecord(userId, completeStudy);
        TUserStudy userStudyRecord = userStudyService.lambdaQuery().eq(TUserStudy::getUserId, userId)
                .eq(TUserStudy::getDisabled, 0).one();
        if (null == userStudyRecord) {
            userStudyRecord = createUserStudy(userId);
        }
        Boolean updateStudyRecord = userStudyService.exchangeStudyRecord(userStudyRecord, userId, completeStudy);
        return R.ok(update && updateStudyRecord);
    }
@@ -1294,12 +1299,36 @@
        // 学习时长更新
        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());
        if (null == userStudy) {
            userStudy = createUserStudy(userid);
            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 TUserStudy createUserStudy(Integer userid) {
        TUserStudy userStudy = new TUserStudy();
        userStudy.setUserId(userid);
        // 学习周目
        TStudy tStudy = studyService.lambdaQuery().eq(TStudy::getQuarter, Constants.ONE)
                .orderByAsc(TStudy::getWeek).last("limit 1").one();
        userStudy.setWeek(tStudy.getWeek());
        userStudy.setDay(Constants.ONE);
        userStudy.setTotalStudy(Constants.ZERO);
        userStudy.setTodayStudy(Constants.ZERO);
        userStudy.setWeekStudy(Constants.ZERO);
        userStudy.setMonthStudy(Constants.ZERO);
        userStudy.setListen(Constants.BURDEN_ONE);
        userStudy.setLook(Constants.BURDEN_ONE);
        userStudy.setInduction(Constants.BURDEN_ONE);
        userStudy.setAnswer(Constants.BURDEN_ONE);
        userStudy.setPair(Constants.BURDEN_ONE);
        userStudyService.save(userStudy);
        return userStudy;
    }
    private List<String> getSubjectId(Integer week) {
@@ -1406,10 +1435,13 @@
        // 学习时长更新
        TUserStudy userStudy = userStudyService.lambdaQuery().eq(TUserStudy::getUserId, userId)
                .eq(TUserStudy::getDisabled, 0).one();
        userStudy.setTotalStudy(userStudy.getTotalStudy() + studyTime);
        userStudy.setTodayStudy(userStudy.getTodayStudy() + studyTime);
        userStudy.setWeekStudy(userStudy.getWeekStudy() + studyTime);
        userStudy.setMonthStudy(userStudy.getMonthStudy() + studyTime);
        if (null == userStudy) {
            userStudy = createUserStudy(userId);
            userStudy.setTotalStudy(userStudy.getTotalStudy() + studyTime);
            userStudy.setTodayStudy(userStudy.getTodayStudy() + studyTime);
            userStudy.setWeekStudy(userStudy.getWeekStudy() + studyTime);
            userStudy.setMonthStudy(userStudy.getMonthStudy() + studyTime);
        }
        boolean update = userStudyService.updateById(userStudy);
        if (!update) {
            throw new GlobalException("学习时长更新失败!");
@@ -1471,23 +1503,26 @@
        // 学习记录
        TUserStudy studyRecord = userStudyService.lambdaQuery().eq(TUserStudy::getUserId, userId)
                .eq(TUserStudy::getDisabled, 0).one();
        // 学习时长格式转换
        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));
        // 剩余周目
        int size = studyService.list(new QueryWrapper<TStudy>()
                .eq("type", 1)).size();
        studyRecord.setSurplus(size - studyRecord.getWeek());
        if (null != studyRecord) {
            // 学习时长格式转换
            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));
            // 游戏总时长
            int sum = gameRecordList.stream().map(TGameRecord::getUseTime).mapToInt(Integer::intValue).sum();
            Integer totalStudy = studyRecord.getTotalStudy();
            studyRecord.setTotalStudy(Math.round((float) (totalStudy + sum) / 3600));
            // 剩余周目
            int size = studyService.list(new QueryWrapper<TStudy>()
                    .eq("type", 1)).size();
            studyRecord.setSurplus(size - studyRecord.getWeek());
        }
        return R.ok(new StudyRecordResultVO(studyRecord, gameRecordList));
    }
ruoyi-service/ruoyi-study/src/main/java/com/ruoyi/study/controller/TUserController.java
@@ -567,28 +567,6 @@
        HashMap<String, Object> map = new HashMap<>();
        // 获取登录token
        map.put("token", tokenService.createTokenStudy(loginUserParent));
        // 学习进度检查
        TUserStudy userStudy = userStudyService.lambdaQuery().eq(TUserStudy::getUserId, user.getId())
                .eq(TUserStudy::getDisabled, 0).one();
        if (null == userStudy) {
            TUserStudy study = new TUserStudy();
            study.setUserId(user.getId());
            // 学习周目
            TStudy tStudy = studyService.lambdaQuery().eq(TStudy::getQuarter, Constants.ONE)
                    .orderByAsc(TStudy::getWeek).last("limit 1").one();
            study.setWeek(tStudy.getWeek());
            study.setDay(Constants.ONE);
            study.setTotalStudy(Constants.ZERO);
            study.setTodayStudy(Constants.ZERO);
            study.setWeekStudy(Constants.ZERO);
            study.setMonthStudy(Constants.ZERO);
            study.setListen(Constants.BURDEN_ONE);
            study.setLook(Constants.BURDEN_ONE);
            study.setInduction(Constants.BURDEN_ONE);
            study.setAnswer(Constants.BURDEN_ONE);
            study.setPair(Constants.BURDEN_ONE);
            userStudyService.save(study);
        }
        return R.ok(map);
    }
ruoyi-service/ruoyi-study/src/main/java/com/ruoyi/study/service/ITUserStudyService.java
@@ -37,11 +37,12 @@
    /**
     * 更改学习进度
     *
     * @param userId        用户id
     * @param completeStudy 学习情况
     * @param userId          用户id
     * @param completeStudy   学习情况
     * @param userStudyRecord 学习进度
     * @return 更改结果
     */
    Boolean exchangeStudyRecord(Integer userId, CompleteStudyDTO completeStudy);
    Boolean exchangeStudyRecord(TUserStudy userStudyRecord, Integer userId, CompleteStudyDTO completeStudy);
    /**
     * 超级记忆正确率达到通关率标准,才能进入下一周目学习
ruoyi-service/ruoyi-study/src/main/java/com/ruoyi/study/service/impl/TUserStudyServiceImpl.java
@@ -88,11 +88,9 @@
    }
    @Override
    public Boolean exchangeStudyRecord(Integer userId, CompleteStudyDTO completeStudy) {
    public Boolean exchangeStudyRecord(TUserStudy userStudyRecord, Integer userId, CompleteStudyDTO completeStudy) {
        Integer studyTime = completeStudy.getStudyTime();
        // 学习记录
        TUserStudy userStudyRecord = lambdaQuery().eq(TUserStudy::getUserId, userId)
                .eq(TUserStudy::getDisabled, 0).one();
        Integer week = userStudyRecord.getWeek();
        Integer day = userStudyRecord.getDay();
        if (week.equals(completeStudy.getWeek()) && day.equals(completeStudy.getDay())) {