From 8abab6c0916fe6666835c634be45a52f8ab400d2 Mon Sep 17 00:00:00 2001 From: hjl <1657978663@qq.com> Date: 星期二, 25 六月 2024 09:50:04 +0800 Subject: [PATCH] fix: 学习端bug --- ruoyi-service/ruoyi-study/src/main/java/com/ruoyi/study/controller/TStudyController.java | 61 ++++++++++++++++++++---------- 1 files changed, 40 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 b6fc43c..bee62b5 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 @@ -809,7 +809,7 @@ data.setIsDelete(0); result = result && userPresentRecordService.save(data); } else { - if (System.currentTimeMillis() - record.getPresentTime().getTime() >= 10 * 60) { + if (System.currentTimeMillis() - record.getPresentTime().getTime() >= 10 * 60 * 1000) { // 赠送积分 result = userService.lambdaUpdate() .set(TUser::getIntegral, user.getIntegral() + Integer.parseInt(integral)) @@ -889,6 +889,7 @@ Integer quarter = exitLearn.getQuarter(); Integer week = exitLearn.getWeek(); Integer day = exitLearn.getDay(); + int schedule = exitLearn.getSchedule() == null ? 0 : exitLearn.getSchedule(); if (userStudy.getWeek().equals(exitLearn.getWeek()) && userStudy.getDay().equals(exitLearn.getDay())) { // 计算完成率 Integer type = exitLearn.getType(); @@ -909,7 +910,7 @@ List<TStudyLook> lookList = studyLookService.pictureSelectVoice(quarter, week, day); if (!lookList.isEmpty()) { int item = lookList.size(); - int i = (int) ((double) (exitLearn.getSchedule() / item)) * 100; + int i = (int) ((double) (schedule / item)) * 100; if (i > userStudy.getLook()) { userStudy.setLook(100 - i); } @@ -919,7 +920,7 @@ List<TStudyInduction> inductionList = studyInductionService.induceExclude(quarter, week, day); if (!inductionList.isEmpty()) { int item = inductionList.size(); - int i = (int) ((double) (exitLearn.getSchedule() / item)) * 100; + int i = (int) ((double) (schedule / item)) * 100; if (i > userStudy.getInduction()) { userStudy.setInduction(100 - i); } @@ -928,7 +929,7 @@ // 有问有答 List<TStudyAnswer> answerList = studyAnswerService.questionsAndAnswers(quarter, week, day); if (answerList.size() % Constants.TWO == Constants.ZERO) { - int i = (int) ((double) (exitLearn.getSchedule() / (answerList.size() / 2))) * 100; + int i = (int) ((double) (schedule / (answerList.size() / 2))) * 100; if (i > userStudy.getAnswer()) { userStudy.setAnswer(100 - i); } @@ -937,7 +938,7 @@ // 音图相配 List<TStudyPair> pairList = studyPairService.pictureMateVoice(quarter, week, day); int item = pairList.size(); - int i = (int) ((double) (exitLearn.getSchedule() / item)) * 100; + int i = (int) ((double) (schedule / item)) * 100; if (i > userStudy.getPair()) { userStudy.setPair(100 - i); } @@ -1114,7 +1115,7 @@ */ @PostMapping("/completeLearning") @ApiOperation(value = "完成学习", tags = {"学习端-听-自主学习"}) - public R<Boolean> completeLearning(@RequestBody CompleteStudyDTO completeStudy) { + public R<Integer> completeLearning(@RequestBody CompleteStudyDTO completeStudy) { LoginUserParent userStudy = tokenService.getLoginUserStudy(); if (null == userStudy) { return R.tokenError("登录失效!"); @@ -1162,6 +1163,8 @@ record.setQuarter(completeStudy.getQuarter()); record.setWeek(completeStudy.getWeek()); record.setDay(completeStudy.getDay()); + // 学习类型 + record.setStudyType(completeStudy.getType()); record.setObtainedIntegral(integral); record.setType(Constants.ZERO); update = update && studyRecordService.save(record); @@ -1173,7 +1176,7 @@ userStudyRecord = createUserStudy(userId); } Boolean updateStudyRecord = userStudyService.exchangeStudyRecord(userStudyRecord, userId, completeStudy); - return R.ok(update && updateStudyRecord); + return R.ok(sum > obtainedIntegral ? sum - obtainedIntegral : 0); } /** @@ -1219,7 +1222,7 @@ throw new GlobalException("当前周目下day1 - day5题目不足!"); } // 根据游戏设置数量获取图片及语音 - List<String> subjectData = getData(game, newSubjectId); + List<String> subjectData = getData(game, newSubjectId, 1); List<TSubject> subjectList = getSubjectList(subjectData); return R.ok(new StudyGameResultVO(game, subjectList)); } @@ -1237,6 +1240,10 @@ @ApiImplicitParam(value = "所属周目", name = "week", dataType = "Integer", required = true) }) public R<StudyGameMemoryVO> gameMemory(@RequestParam Integer quarter, @RequestParam Integer week) { + LoginUserParent userStudy = tokenService.getLoginUserStudy(); + if (null == userStudy) { + return R.tokenError("登录失效!"); + } TGame game = gameService.gameHearing(quarter, week); if (null == game) { throw new GlobalException("当前季度该周目暂无配置游戏数据!"); @@ -1251,6 +1258,8 @@ photoList.add(new GameMemoryPhotoVO(tSubject.getId(), tSubject.getImg())); voiceList.add(new GameMemoryVoiceVO(tSubject.getId(), tSubject.getCorrect())); } + // 校验超级听力是否通过 + studyService.checkClearance(game,userStudy.getUserid()); // 框架记忆数量翻倍,前端需要根据数量画格子 game.setAnswerCount(game.getAnswerCount() * 2); return R.ok(new StudyGameMemoryVO(game, photoList, voiceList)); @@ -1268,16 +1277,22 @@ throw new GlobalException("当前周目下day1 - day5题目不足!"); } // 根据游戏设置数量获取图片及语音 - return getData(game, newSubjectId); + return getData(game, newSubjectId, 2); } - private List<String> getData(TGame game, List<String> newSubjectId) { + private List<String> getData(TGame game, List<String> newSubjectId, int num) { List<String> subjectData = new ArrayList<>(); Random random = new Random(); // 获取列表大小 int dataSize = newSubjectId.size(); // 生成随机索引并获取数据 - for (int i = 0; i < game.getCount(); i++) { + int index; + if (1 == num) { + index = game.getCount(); + } else { + index = game.getAnswerCount(); + } + for (int i = 0; i < index; i++) { // 生成随机索引 int randomIndex = random.nextInt(dataSize); // 获取对应的数据并加入结果列表 @@ -1309,7 +1324,7 @@ */ @PostMapping("/gameAchievement") @ApiOperation(value = "完成游戏-记录游戏测试成绩", tags = {"学习端-听-自主游戏"}) - public R<Boolean> gameAchievement(@RequestBody CompleteGameDTO completeStudy) { + public R<Integer> gameAchievement(@RequestBody CompleteGameDTO completeStudy) { LoginUserParent loginUserStudy = tokenService.getLoginUserStudy(); if (null == loginUserStudy) { return R.tokenError("登录失效!"); @@ -1354,12 +1369,13 @@ .eq(TUserStudy::getDisabled, 0).one(); if (null == userStudy) { userStudy = createUserStudy(userid); - userStudy.setTotalStudy(userStudy.getTotalStudy() + completeStudy.getUseTime()); - userStudy.setTodayStudy(userStudy.getTodayStudy() + completeStudy.getUseTime()); - userStudy.setWeekStudy(userStudy.getWeekStudy() + completeStudy.getUseTime()); - userStudy.setMonthStudy(userStudy.getMonthStudy() + completeStudy.getUseTime()); } - boolean update = userStudyService.updateById(userStudy); + // 学习时长 + userStudy.setTotalStudy(userStudy.getTotalStudy() + completeStudy.getUseTime()); + userStudy.setTodayStudy(userStudy.getTodayStudy() + completeStudy.getUseTime()); + userStudy.setWeekStudy(userStudy.getWeekStudy() + completeStudy.getUseTime()); + userStudy.setMonthStudy(userStudy.getMonthStudy() + completeStudy.getUseTime()); + userStudyService.updateById(userStudy); // 超级记忆逻辑 if (Constants.MEMORY.equals(completeStudy.getGameName())) { // 学习配置列表 @@ -1377,7 +1393,7 @@ String rate = game.getRate().split(",")[completeStudy.getDifficulty()]; add = add && completeStudy.getAccuracy() >= Integer.parseInt(rate); } - return R.ok(add && update); + return R.ok(availableIntegral); } private TUserStudy createUserStudy(Integer userid) { @@ -1488,7 +1504,7 @@ @ApiImplicitParam(value = "正确率", name = "accuracy", dataType = "Integer"), @ApiImplicitParam(value = "学习时长(秒)", name = "studyTime", dataType = "Integer", required = true) }) - public R<Boolean> completeStory(@RequestParam Integer storyId, @RequestParam Integer type, + public R<Integer> completeStory(@RequestParam Integer storyId, @RequestParam Integer type, Integer accuracy, @RequestParam Integer studyTime) { TStoryListen storyListen = storyListenService.lambdaQuery().eq(TStoryListen::getId, storyId) .eq(TStoryListen::getDisabled, 0).one(); @@ -1517,6 +1533,7 @@ throw new GlobalException("学习时长更新失败!"); } // 根据故事类型不同,逻辑处理 + int sum = 0; if (Constants.ONE.equals(type)) { if (null == accuracy) { throw new GlobalException("自主故事-看图配音正确率异常!"); @@ -1542,6 +1559,7 @@ data.setType(Constants.ONE); data.setStoryId(storyId); result = studyRecordService.save(data); + sum = integral - obtainedIntegral; } } else { // 超级记忆只有首次才能获取积分 @@ -1557,9 +1575,10 @@ // 添加积分 user.setIntegral(user.getIntegral() + storyListen.getIntegral()); result = result && userService.updateById(user); + sum = storyListen.getIntegral(); } } - return R.ok(result); + return R.ok(sum); } @GetMapping("/studyRecord") @@ -1592,7 +1611,7 @@ List<TStudy> studyList = studyService.lambdaQuery().eq(TStudy::getDisabled, 0) .eq(TStudy::getType, Constants.ONE) .orderByAsc(TStudy::getWeek).list(); - int size = studyService.residueWeek(studyRecord,studyList); + int size = studyService.residueWeek(studyRecord, studyList); studyRecord.setSurplus(size); } return R.ok(new StudyRecordResultVO(studyRecord, gameRecordList)); -- Gitblit v1.7.1