From b05715c83c4e04165a6682f2049e68ca606f656c Mon Sep 17 00:00:00 2001
From: hjl <1657978663@qq.com>
Date: 星期三, 26 六月 2024 10:38:53 +0800
Subject: [PATCH] fix: 学习端bug
---
ruoyi-service/ruoyi-study/src/main/java/com/ruoyi/study/service/impl/TStudyServiceImpl.java | 71 +++++++++++++++++++++--
ruoyi-service/ruoyi-study/src/main/java/com/ruoyi/study/controller/TStudyController.java | 40 +++++++++---
ruoyi-service/ruoyi-study/src/main/java/com/ruoyi/study/service/impl/TIntegralRecordServiceImpl.java | 3
ruoyi-service/ruoyi-study/src/main/java/com/ruoyi/study/service/ITIntegralRecordService.java | 3
ruoyi-service/ruoyi-study/src/main/java/com/ruoyi/study/domain/TIntegralRecord.java | 6 ++
5 files changed, 102 insertions(+), 21 deletions(-)
diff --git a/ruoyi-service/ruoyi-study/src/main/java/com/ruoyi/study/controller/TStudyController.java b/ruoyi-service/ruoyi-study/src/main/java/com/ruoyi/study/controller/TStudyController.java
index b21c323..ab871ee 100644
--- a/ruoyi-service/ruoyi-study/src/main/java/com/ruoyi/study/controller/TStudyController.java
+++ b/ruoyi-service/ruoyi-study/src/main/java/com/ruoyi/study/controller/TStudyController.java
@@ -1368,7 +1368,7 @@
// 可获得积分不为null时,才添加积分明细记录
if (null != availableIntegral && !Constants.ZERO.equals(availableIntegral)) {
add = add && integralRecordService.add(String.valueOf(availableIntegral),
- Constants.COMPLETE_GAME, completeStudy.getGameId(), null, difficulty);
+ Constants.COMPLETE_GAME, completeStudy.getGameId(), null, difficulty, null);
// 用户账户添加积分
TUser user = userService.getById(userid);
user.setIntegral(user.getIntegral() + availableIntegral);
@@ -1527,15 +1527,17 @@
Integer userId = loginUserStudy.getUserid();
Boolean result = true;
// 学习时长更新
+ TStudy study = studyService.lambdaQuery().eq(TStudy::getId, storyListen.getStudyId())
+ .eq(TStudy::getDisabled, 0).one();
TUserStudy userStudy = userStudyService.lambdaQuery().eq(TUserStudy::getUserId, userId)
.eq(TUserStudy::getDisabled, 0).one();
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);
}
+ 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("学习时长更新失败!");
@@ -1547,11 +1549,15 @@
throw new GlobalException("自主故事-看图配音正确率异常!");
}
// 看图配音模式,也需要根据游戏正确率计算积分
- int integral = storyListen.getLookIntegral() * (accuracy / 100);
+ double d = (double) accuracy / 100;
+ int integral = (int) (storyListen.getLookIntegral() * d);
int obtainedIntegral;
+ // 看图配音已获取积分数量
List<TUserStudyRecord> list = studyRecordService.lambdaQuery()
.eq(TUserStudyRecord::getStoryId, storyId)
.eq(TUserStudyRecord::getType, 1)
+ .eq(TUserStudyRecord::getQuarter, study.getQuarter())
+ .eq(TUserStudyRecord::getWeek, storyListen.getWeek())
.eq(TUserStudyRecord::getUserId, userId).list();
if (list.isEmpty()) {
obtainedIntegral = 0;
@@ -1560,25 +1566,37 @@
.mapToInt(Integer::intValue).sum();
}
// 可获得积分计算
- if (integral > obtainedIntegral) {
+ int i = integral - obtainedIntegral;
+ if (i > 0) {
TUserStudyRecord data = new TUserStudyRecord();
data.setUserId(userId);
- data.setObtainedIntegral(integral - obtainedIntegral);
+ data.setObtainedIntegral(i);
data.setType(Constants.ONE);
data.setStoryId(storyId);
+ data.setQuarter(study.getQuarter());
+ data.setWeek(storyListen.getWeek());
result = studyRecordService.save(data);
- sum = integral - obtainedIntegral;
+ sum = i;
+ // 添加积分明细记录
+ result = integralRecordService.add(String.valueOf(sum),
+ Constants.COMPLETE_STORY, null, storyId, null, Constants.ZERO);
+ TUser user = userService.lambdaQuery().eq(TUser::getId, userId).one();
+ // 添加积分
+ user.setIntegral(user.getIntegral() + sum);
+ result = result && userService.updateById(user);
}
} else {
// 超级记忆只有首次才能获取积分
TIntegralRecord integralRecord = integralRecordService.lambdaQuery()
.eq(TIntegralRecord::getUserId, userId)
.eq(TIntegralRecord::getStoryId, storyId)
- .eq(TIntegralRecord::getDisabled, 0).one();
+ .eq(TIntegralRecord::getDisabled, 0)
+ .eq(TIntegralRecord::getStoryType, Constants.ONE)
+ .one();
if (null == integralRecord) {
// 添加积分明细记录
result = integralRecordService.add(String.valueOf(storyListen.getIntegral()),
- Constants.COMPLETE_STORY, null, storyId, null);
+ Constants.COMPLETE_STORY, null, storyId, null, Constants.ONE);
TUser user = userService.lambdaQuery().eq(TUser::getId, userId).one();
// 添加积分
user.setIntegral(user.getIntegral() + storyListen.getIntegral());
diff --git a/ruoyi-service/ruoyi-study/src/main/java/com/ruoyi/study/domain/TIntegralRecord.java b/ruoyi-service/ruoyi-study/src/main/java/com/ruoyi/study/domain/TIntegralRecord.java
index 5342736..a72a1ae 100644
--- a/ruoyi-service/ruoyi-study/src/main/java/com/ruoyi/study/domain/TIntegralRecord.java
+++ b/ruoyi-service/ruoyi-study/src/main/java/com/ruoyi/study/domain/TIntegralRecord.java
@@ -64,6 +64,12 @@
@ApiModelProperty("故事id 对应t_story_listen")
private Integer storyId;
+ /**
+ * 故事id
+ */
+ @ApiModelProperty("故事类型(0:看图配音;1:框架记忆)")
+ private Integer storyType;
+
@ApiModelProperty("积分变动时间")
@TableField(exist = false)
@JsonFormat(pattern = "yyyy-MM-dd HH:mm")
diff --git a/ruoyi-service/ruoyi-study/src/main/java/com/ruoyi/study/service/ITIntegralRecordService.java b/ruoyi-service/ruoyi-study/src/main/java/com/ruoyi/study/service/ITIntegralRecordService.java
index 468ab38..5bc9d24 100644
--- a/ruoyi-service/ruoyi-study/src/main/java/com/ruoyi/study/service/ITIntegralRecordService.java
+++ b/ruoyi-service/ruoyi-study/src/main/java/com/ruoyi/study/service/ITIntegralRecordService.java
@@ -33,7 +33,8 @@
* @param gameId 游戏id
* @param storyId 故事id
* @param difficulty 游戏难度
+ * @param storyType 故事类型(0:看图配音;1:框架记忆)
* @return 操作结果
*/
- Boolean add(String integral, String method, Integer gameId, Integer storyId, Integer difficulty);
+ Boolean add(String integral, String method, Integer gameId, Integer storyId, Integer difficulty,Integer storyType);
}
diff --git a/ruoyi-service/ruoyi-study/src/main/java/com/ruoyi/study/service/impl/TIntegralRecordServiceImpl.java b/ruoyi-service/ruoyi-study/src/main/java/com/ruoyi/study/service/impl/TIntegralRecordServiceImpl.java
index f220658..7482494 100644
--- a/ruoyi-service/ruoyi-study/src/main/java/com/ruoyi/study/service/impl/TIntegralRecordServiceImpl.java
+++ b/ruoyi-service/ruoyi-study/src/main/java/com/ruoyi/study/service/impl/TIntegralRecordServiceImpl.java
@@ -33,7 +33,7 @@
@Override
@Transactional(rollbackFor = Exception.class)
- public Boolean add(String integral, String method, Integer gameId, Integer storyId, Integer difficulty) {
+ public Boolean add(String integral, String method, Integer gameId, Integer storyId, Integer difficulty, Integer storyType) {
TIntegralRecord integralRecord = new TIntegralRecord();
integralRecord.setIntegral(integral);
integralRecord.setMethod(method);
@@ -41,6 +41,7 @@
integralRecord.setGameId(gameId);
integralRecord.setStoryId(storyId);
integralRecord.setGameDifficulty(difficulty);
+ integralRecord.setStoryType(storyType);
return this.save(integralRecord);
}
}
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 d6f8422..60558ec 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
@@ -434,21 +434,77 @@
}
// 临时判断参数
boolean itemBool = false;
+ // 学习进度所属季度
+ 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)) {
- int i = collect.indexOf(studyWeek);
- if (collect.contains(week)) {
- int x = collect.indexOf(week);
- itemBool = i > x;
- }
+ studyQuarter = key;
+ }
+ if (collect.contains(week)) {
+ thisQuarter = key;
}
}
// 默认进度为 0
int defaultSchedule;
+ // 季度判断
+ if (studyQuarter > thisQuarter) {
+ defaultSchedule = 100;
+ } 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 = 100;
+ } else if (studyIndex < weekIndex) {
+ defaultSchedule = 0;
+ }else {
+ // 根据day初始化学习进度
+ if (Constants.ONE.equals(day)) {
+ defaultSchedule = 0;
+ } else if (Constants.TWO.equals(day)) {
+ defaultSchedule = 20;
+ } else if (Constants.THREE.equals(day)) {
+ defaultSchedule = 40;
+ } else if (Constants.FOUR.equals(day)) {
+ defaultSchedule = 60;
+ } else if (Constants.FIVE.equals(day)) {
+ defaultSchedule = 80;
+ } else {
+ defaultSchedule = 0;
+ }
+ // 根据五种学习计算进度
+ Integer listen = result.getListen();
+ if (!Constants.BURDEN_ONE.equals(listen)) {
+ defaultSchedule += (int) (((double) listen / 100) * 4);
+ }
+ Integer look = result.getLook();
+ if (!Constants.BURDEN_ONE.equals(look)) {
+ defaultSchedule += (int) (((double) look / 100) * 4);
+ }
+ Integer induction = result.getInduction();
+ if (!Constants.BURDEN_ONE.equals(induction)) {
+ defaultSchedule += (int) (((double) induction / 100) * 4);
+ }
+ Integer answer = result.getAnswer();
+ if (!Constants.BURDEN_ONE.equals(answer)) {
+ defaultSchedule += (int) (((double) answer / 100) * 4);
+ }
+ Integer pair = result.getPair();
+ if (!Constants.BURDEN_ONE.equals(pair)) {
+ defaultSchedule += (int) (((double) pair / 100) * 4);
+ }
+ }
+ }
// week以超过当前week,进度为 100%
- if (itemBool) {
+ /*if (itemBool) {
defaultSchedule = 100;
} else {
// 根据day初始化学习进度
@@ -486,8 +542,7 @@
if (!Constants.BURDEN_ONE.equals(pair)) {
defaultSchedule += (int) (((double) pair / 100) * 4);
}
-
- }
+ }*/
return defaultSchedule;
}
--
Gitblit v1.7.1