From 43141e97d3303dbc1dafc1dc4e6f6f6555fe9610 Mon Sep 17 00:00:00 2001
From: hjl <1657978663@qq.com>
Date: 星期三, 17 七月 2024 16:49:42 +0800
Subject: [PATCH] fix: 学习端bug
---
ruoyi-service/ruoyi-study/src/main/java/com/ruoyi/study/service/impl/TStudyServiceImpl.java | 130 +++++++++++++++++++++++++++++++++++++++++-
1 files changed, 125 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..24caf4c 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
--
Gitblit v1.7.1