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