From 610604ea8fbdc1f2b0f54e90a689b9ff449f092c Mon Sep 17 00:00:00 2001 From: 无关风月 <443237572@qq.com> Date: 星期二, 18 六月 2024 15:48:04 +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/controller/TStudyController.java | 63 +++++++++++++++++++++++++++++-- 1 files changed, 59 insertions(+), 4 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 d15254a..fb9e2fb 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 @@ -710,7 +710,7 @@ if (null == loginStudy) { return R.tokenError("登录失效!"); } - TUserStudy result = studyService.studySchedule(String.valueOf(loginStudy.getUserid()), week); + TUserStudy result = studyService.studySchedule(String.valueOf(loginStudy.getUserid())); if (null != result) { // 计算当前周 day 1-5的总进度 int computeSchedule = studyService.computeSchedule(result, week); @@ -734,6 +734,42 @@ public R<List<StudyWeekDTO>> weekList(@RequestParam(defaultValue = "1") Integer type, @RequestParam Integer quarter) { List<StudyWeekDTO> result = studyService.weekList(type, quarter); return R.ok(result); + } + + /** + * 获取在线时间赠送积分信息 + */ + @GetMapping("/onlineDuration") + @ApiOperation(value = "获取在线时间赠送积分信息(单位分钟)", tags = {"学习端-首页"}) + public R<String> onlineDuration() { + TSysSet sysSet = managementClient.promptVoice().getData(); + if (null == sysSet) { + throw new GlobalException("获取在线时间赠送积分信息失败!"); + } + // 返回在线时长 + return R.ok(sysSet.getTime()); + } + + /** + * 根据在线时间赠送积分(定时任务) + */ + @GetMapping("/giveIntegral") + @ApiOperation(value = "根据在线时间赠送积分(定时任务)", tags = {"学习端-首页"}) + public R<Boolean> giveIntegral() { + LoginUserParent loginStudy = tokenService.getLoginUserStudy(); + if (null == loginStudy) { + return R.tokenError("登录失效!"); + } + TSysSet sysSet = managementClient.promptVoice().getData(); + if (null == sysSet) { + throw new GlobalException("获取在线时间赠送积分信息失败!"); + } + String integral = sysSet.getIntegral(); + TUser user = userService.lambdaQuery().eq(TUser::getId, loginStudy.getUserid()) + .eq(TUser::getDisabled, 0).one(); + boolean update = userService.lambdaUpdate().set(TUser::getIntegral, user.getIntegral() + Integer.parseInt(integral)) + .eq(TUser::getId, loginStudy.getUserid()).update(); + return R.ok(update); } /** @@ -762,7 +798,6 @@ .eq(TSubjectRecord::getDisabled, 0).one(); // 返回结果 SubjectRecordResultVO result; - SubjectRecordResultVO data = subjectRecordService.recordResult(subjectRecord, loginStudy.getUserid()); if (null != subjectRecord) { subjectRecordService.lambdaUpdate().set(TSubjectRecord::getDisabled, 1) .eq(TSubjectRecord::getId, subjectRecord.getId()).update(); @@ -1064,6 +1099,10 @@ }) public R<StudyGameResultVO> gameHearing(@RequestParam Integer quarter, @RequestParam Integer difficulty, @RequestParam Integer week) { + LoginUserParent userStudy = tokenService.getLoginUserStudy(); + if (null == userStudy) { + return R.tokenError("登录失效!"); + } Integer[] array = {0, 1, 2}; if (!Arrays.stream(array).collect(Collectors.toList()).contains(difficulty)) { throw new GlobalException("请选择符合规则的游戏难度!"); @@ -1075,7 +1114,7 @@ game.setIntegral(game.getIntegral().split(",")[difficulty]); game.setTime(game.getTime().split(",")[difficulty]); // 检验是否完成难度 - studyService.checkDifficulty(difficulty, week, game); + studyService.checkDifficulty(difficulty, week, game, userStudy.getUserid()); List<String> subjectId = getSubjectId(week); List<String> newSubjectId = subjectId.stream().map(data -> { if (data.startsWith(Constants.REDUCE)) { @@ -1218,7 +1257,23 @@ user.setIntegral(user.getIntegral() + availableIntegral); add = add && userService.updateById(user); } - return R.ok(add); + // 超级记忆逻辑 + if (Constants.MEMORY.equals(completeStudy.getGameName())) { + // 学习配置列表 + List<TStudy> studyList = studyService.lambdaQuery().eq(TStudy::getDisabled, 0) + .orderByAsc(TStudy::getWeek).list(); + if (studyList.isEmpty()) { + throw new GlobalException("学习配置列表未配置或数据失效!"); + } + // 超级记忆正确率达到通关率标准,才能进入下一周目学习 + userStudyService.checkRate(game, userid, completeStudy, studyList); + return R.ok(add && completeStudy.getAccuracy() >= Integer.parseInt(game.getAnswerRate())); + } else { + // 超级听力需根据正确率判断是否允许进入下一难度 + userStudyService.gameHearing(game, userid, completeStudy); + String rate = game.getRate().split(",")[completeStudy.getDifficulty()]; + return R.ok(add && completeStudy.getAccuracy() >= Integer.parseInt(rate)); + } } private List<String> getSubjectId(Integer week) { -- Gitblit v1.7.1