From 9ee310626ef0f52dfb0f333783de679180092251 Mon Sep 17 00:00:00 2001 From: 无关风月 <443237572@qq.com> Date: 星期五, 19 七月 2024 11:11:41 +0800 Subject: [PATCH] Merge branch 'master' of http://120.76.84.145:10101/gitblit/r/java/DolphinEnglish --- ruoyi-service/ruoyi-study/src/main/java/com/ruoyi/study/service/impl/TStudyServiceImpl.java | 186 +++++++++++++++++++++++++++++++++++++++++++++- 1 files changed, 181 insertions(+), 5 deletions(-) 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 80945a6..49ce7df 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 @@ -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 @@ -813,4 +933,60 @@ } } + @Override + public Integer userGameDifficulty(TUserStudy studyRecord, Integer week) { + List<TStudy> studyList = this.lambdaQuery().eq(TStudy::getDisabled, 0) + .eq(TStudy::getType, 1) + .orderByAsc(TStudy::getWeek).list(); + // 基础学习进度 + Integer day = studyRecord.getDay(); + Integer studyWeek = studyRecord.getWeek(); + Map<Integer, List<TStudy>> studyMap = new HashMap<>(8); + for (TStudy study : studyList) { + Integer quarter = study.getQuarter(); + List<TStudy> itemList = studyMap.get(quarter); + if (null == itemList) { + itemList = new ArrayList<>(); + } + itemList.add(study); + studyMap.put(quarter, itemList); + } + // 学习进度所属季度 + int studyQuarter = 1; + // 当前进入周目所属季度 + int thisQuarter = 1; + for (Map.Entry<Integer, List<TStudy>> map : studyMap.entrySet()) { + Integer key = map.getKey(); + List<TStudy> list = map.getValue(); + List<Integer> collect = list.stream().map(TStudy::getWeek).collect(Collectors.toList()); + if (collect.contains(studyWeek)) { + studyQuarter = key; + } + if (collect.contains(week)) { + thisQuarter = key; + } + } + // 默认进度为 0 + int defaultSchedule; + // 季度判断 + if (studyQuarter > thisQuarter) { + defaultSchedule = 2; + } else if (studyQuarter < thisQuarter) { + defaultSchedule = 0; + } else { + List<TStudy> tStudies = studyMap.get(studyQuarter); + List<Integer> weekList = tStudies.stream().map(TStudy::getWeek).collect(Collectors.toList()); + int studyIndex = weekList.indexOf(studyWeek); + int weekIndex = weekList.indexOf(week); + if (studyIndex > weekIndex) { + defaultSchedule = 2; + } else if (studyIndex < weekIndex) { + defaultSchedule = 0; + } else { + defaultSchedule = studyRecord.getGameDifficulty(); + } + } + return defaultSchedule; + } + } -- Gitblit v1.7.1