hjl
2024-07-17 43141e97d3303dbc1dafc1dc4e6f6f6555fe9610
fix: 学习端bug
1个文件已修改
130 ■■■■■ 已修改文件
ruoyi-service/ruoyi-study/src/main/java/com/ruoyi/study/service/impl/TStudyServiceImpl.java 130 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-study/src/main/java/com/ruoyi/study/service/impl/TStudyServiceImpl.java
@@ -158,7 +158,7 @@
            // 自主故事 - 看图配音
            total += storyListenList.stream().map(TStoryListen::getLookIntegral).mapToInt(Integer::intValue).sum();
            // 判断周目是否可以进入学习
            Boolean canStudy = checkWeekCanStudy(userId, item);
            Boolean canStudy = checkWeekCanStudy(userId, item, week);
            result.add(new StudyWeekDTO(week, type, quarter, title, total, canStudy));
        }
        return result;
@@ -248,10 +248,16 @@
    /**
     * @param userId 用户id
     * @param week   该季度下的周目
     * @return 当前周目是否学习
     */
    private Boolean checkWeekCanStudy(Integer userId, TStudy study) {
        TUserStudy userStudy = userStudyService.lambdaQuery().eq(TUserStudy::getUserId, userId)
    private Boolean checkWeekCanStudyNew(Integer userId, TStudy study, Integer week) {
        // 剩余周目
        List<TStudy> studyList = this.lambdaQuery().eq(TStudy::getDisabled, 0)
                .eq(TStudy::getType, Constants.ONE)
                .orderByAsc(TStudy::getWeek).list();
        TUserStudy userStudy = userStudyService.lambdaQuery()
                .eq(TUserStudy::getUserId, userId)
                .eq(TUserStudy::getDisabled, 0).one();
        if (null == userStudy) {
            userStudy = new TUserStudy();
@@ -272,8 +278,122 @@
            userStudy.setPair(Constants.BURDEN_ONE);
            userStudyService.save(userStudy);
        }
        // 学习记录所属周目大于当前学习周目,判断为已学习
        return userStudy.getWeek() >= study.getWeek();
        // 获取当前学习周目为哪一个季度
        TStudy studyQuarterVo = this.lambdaQuery()
                .eq(TStudy::getWeek, userStudy.getWeek())
                .eq(TStudy::getDisabled, 0).one();
        // 已学习到的周目
        Integer studyWeek = userStudy.getWeek();
        // 学习到的季度
        Integer studyQuarter = studyQuarterVo.getQuarter();
        // 当前所点击进入的周目所属季度
        Integer currentQuarter = 1;
        // 根据季度分组封装
        Map<Integer, List<TStudy>> integerListMap = getIntegerListMap(studyList);
        for (Map.Entry<Integer, List<TStudy>> map : integerListMap.entrySet()) {
            List<TStudy> list = map.getValue();
//            for (TStudy data : list) {
//                Integer itemWeek = data.getWeek();
//                if (studyWeek.equals(itemWeek)) {
//                    studyQuarter = map.getKey();
//                    break;
//                }
//            }
            for (TStudy data : list) {
                Integer itemWeek = data.getWeek();
                if (week.equals(itemWeek)) {
                    currentQuarter = map.getKey();
                    break;
                }
            }
        }
        // 已学习季度 大于当前周目所属季度,所有学习均已完成
        if (studyQuarter > currentQuarter) {
            return Boolean.TRUE;
        } else if (studyQuarter < currentQuarter) {
            return Boolean.FALSE;
        } else {
            List<TStudy> tStudies = integerListMap.get(studyQuarter);
            List<Integer> weekList = tStudies.stream().map(TStudy::getWeek).collect(Collectors.toList());
            int i = weekList.indexOf(studyWeek);
            int i1 = weekList.indexOf(week);
            if (i >= i1) {
                return Boolean.TRUE;
            } else {
                return Boolean.FALSE;
            }
        }
    }
    /**
     * @param userId 用户id
     * @return 当前周目是否学习
     */
    private Boolean checkWeekCanStudy(Integer userId, TStudy study, Integer week) {
        // 剩余周目
        List<TStudy> studyList = this.lambdaQuery().eq(TStudy::getDisabled, 0)
                .eq(TStudy::getType, Constants.ONE)
                .orderByAsc(TStudy::getWeek).list();
        TUserStudy userStudy = userStudyService.lambdaQuery()
                .eq(TUserStudy::getUserId, userId)
                .eq(TUserStudy::getDisabled, 0).one();
        if (null == userStudy) {
            userStudy = new TUserStudy();
            userStudy.setUserId(userId);
            // 学习周目
            TStudy tStudy = this.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);
        }
        // 获取当前学习周目为哪一个季度
        TStudy studyQuarterVo = this.lambdaQuery()
                .eq(TStudy::getWeek, userStudy.getWeek())
                .eq(TStudy::getDisabled, 0).one();
        // 已学习到的周目
        Integer studyWeek = userStudy.getWeek();
        // 学习到的季度
        Integer studyQuarter = studyQuarterVo.getQuarter();
        // 当前所点击进入的周目所属季度
        Integer currentQuarter = 1;
        // 根据季度分组封装
        Map<Integer, List<TStudy>> integerListMap = getIntegerListMap(studyList);
        for (Map.Entry<Integer, List<TStudy>> map : integerListMap.entrySet()) {
            List<TStudy> list = map.getValue();
            for (TStudy data : list) {
                Integer itemWeek = data.getWeek();
                if (week.equals(itemWeek)) {
                    currentQuarter = map.getKey();
                    break;
                }
            }
        }
        // 已学习季度 大于当前周目所属季度,所有学习均已完成
        if (studyQuarter > currentQuarter) {
            return Boolean.TRUE;
        } else if (studyQuarter < currentQuarter) {
            return Boolean.FALSE;
        } else {
            List<TStudy> tStudies = integerListMap.get(studyQuarter);
            List<Integer> weekList = tStudies.stream().map(TStudy::getWeek).collect(Collectors.toList());
            int i = weekList.indexOf(studyWeek);
            int i1 = weekList.indexOf(week);
            if (i >= i1) {
                return Boolean.TRUE;
            } else {
                return Boolean.FALSE;
            }
        }
    }
    @Override