From 9c417afa127156025810f8637a6eb99f9233469f Mon Sep 17 00:00:00 2001 From: hjl <1657978663@qq.com> Date: 星期四, 18 七月 2024 18:01:32 +0800 Subject: [PATCH] fix: 学习端bug --- ruoyi-service/ruoyi-study/src/main/java/com/ruoyi/study/service/impl/TStudyServiceImpl.java | 56 ++++++++++++++++++++++++++++ ruoyi-service/ruoyi-study/src/main/java/com/ruoyi/study/controller/TStudyController.java | 27 +++++++++++-- ruoyi-common/ruoyi-common-security/src/main/java/com/ruoyi/common/security/service/TokenService.java | 22 +++++----- 3 files changed, 90 insertions(+), 15 deletions(-) diff --git a/ruoyi-common/ruoyi-common-security/src/main/java/com/ruoyi/common/security/service/TokenService.java b/ruoyi-common/ruoyi-common-security/src/main/java/com/ruoyi/common/security/service/TokenService.java index 963d895..661ab20 100644 --- a/ruoyi-common/ruoyi-common-security/src/main/java/com/ruoyi/common/security/service/TokenService.java +++ b/ruoyi-common/ruoyi-common-security/src/main/java/com/ruoyi/common/security/service/TokenService.java @@ -220,17 +220,17 @@ String userkey = JwtUtils.getUserKeyStudy(token); user = redisService.getCacheObject(getTokenKeyStudy(userkey)); // 再次判断登录状态是否已过期 -// if (null == user) { -// throw new StudyLoginException("登录信息已过期,请重新登录!", 504); -// } -// // 优先判断当前账号是否已在其他设备登录 -// if (!user.getIsCanLogin()) { -// throw new StudyLoginException("当前登录账号在其他设备登录!", 505); -// } -// // 再次判断登录状态是否已过期 -// if (System.currentTimeMillis() > user.getExpireTime()) { -// throw new StudyLoginException("登录信息已过期,请重新登录!", 504); -// } + if (null == user) { + throw new StudyLoginException("登录信息已过期,请重新登录!", 504); + } + // 优先判断当前账号是否已在其他设备登录 + if (!user.getIsCanLogin()) { + throw new StudyLoginException("当前登录账号在其他设备登录!", 505); + } + // 再次判断登录状态是否已过期 + if (System.currentTimeMillis() > user.getExpireTime()) { + throw new StudyLoginException("登录信息已过期,请重新登录!", 504); + } return user; } return user; 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 32d01c0..dad22e8 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 @@ -1,5 +1,4 @@ package com.ruoyi.study.controller; -import java.util.Date; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; @@ -22,7 +21,6 @@ import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiImplicitParams; import io.swagger.annotations.ApiOperation; -import org.jetbrains.annotations.TestOnly; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.util.StringUtils; import org.springframework.web.bind.annotation.*; @@ -86,7 +84,7 @@ private ITUserPresentRecordService userPresentRecordService; @PostMapping("/testAddData") - @ApiOperation(value = "测试分片", tags = {"测试分片"}) + @ApiOperation(value = "测试分片", tags = {"测试分片"}) public R<Object> testAddData() { TIntegralRecord tIntegralRecord = new TIntegralRecord(); tIntegralRecord.setIntegral("1"); @@ -146,6 +144,7 @@ return R.ok(); } + @PostMapping("/storyList") // @ApiOperation(value = "配置学习类型选择故事", tags = {"题目管理"}) public R<PageInfo<TStory>> storyList(@RequestBody ChoiceStory query) { @@ -765,6 +764,22 @@ @ApiOperation(value = "获取正确及错误提示音效", tags = {"学习端-首页"}) public R<TSysSet> promptVoice() { return R.ok(managementClient.promptVoice().getData()); + } + + /** + * 获取当前季度游戏难度 + */ + @GetMapping("/userGameDifficulty") + @ApiOperation(value = "获取当前季度游戏难度", tags = {"学习端-首页"}) + public R<Integer> userGameDifficulty(@RequestParam Integer week) { + LoginUserParent loginStudy = tokenService.getLoginUserStudy(); + if (null == loginStudy) { + return R.tokenError("登录失效!"); + } + Integer userid = loginStudy.getUserid(); + TUserStudy studyRecord = userStudyService.lambdaQuery().eq(TUserStudy::getUserId, userid) + .eq(TUserStudy::getDisabled, 0).one(); + return R.ok(studyService.userGameDifficulty(studyRecord, week)); } /** @@ -1794,6 +1809,7 @@ .eq(TGameRecord::getDisabled, 0) .orderByDesc(TGameRecord::getCreateTime) .list(); + SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy.MM.dd HH:mm"); if (null != studyRecord) { // 学习时长格式转换 Integer todayStudy = studyRecord.getTodayStudy(); @@ -1806,6 +1822,9 @@ int sum = gameRecordList.stream().map(TGameRecord::getUseTime).mapToInt(Integer::intValue).sum(); Integer totalStudy = studyRecord.getTotalStudy(); studyRecord.setTotalStudy(Math.round((float) (totalStudy) / 3600)); + for (TGameRecord tGameRecord : gameRecordList) { + tGameRecord.setTime(simpleDateFormat.format(tGameRecord.getCreateTime())); + } // 剩余周目 List<TStudy> studyList = studyService.lambdaQuery().eq(TStudy::getDisabled, 0) .eq(TStudy::getType, Constants.ONE) @@ -1902,7 +1921,7 @@ @GetMapping("/getIntegral") @ApiOperation(value = "获取剩余积分", tags = {"家长端-获取剩余积分"}) public R<Integer> getIntegral() { - if (tokenService.getLoginUser1() == null){ + if (tokenService.getLoginUser1() == null) { return R.tokenError("登录失效"); } Integer userId = tokenService.getLoginUser1().getUserid(); 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 24caf4c..49ce7df 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 @@ -933,4 +933,60 @@ } } + @Override + public Integer userGameDifficulty(TUserStudy studyRecord, Integer week) { + List<TStudy> studyList = this.lambdaQuery().eq(TStudy::getDisabled, 0) + .eq(TStudy::getType, 1) + .orderByAsc(TStudy::getWeek).list(); + // 基础学习进度 + Integer day = studyRecord.getDay(); + Integer studyWeek = studyRecord.getWeek(); + Map<Integer, List<TStudy>> studyMap = new HashMap<>(8); + for (TStudy study : studyList) { + Integer quarter = study.getQuarter(); + List<TStudy> itemList = studyMap.get(quarter); + if (null == itemList) { + itemList = new ArrayList<>(); + } + itemList.add(study); + studyMap.put(quarter, itemList); + } + // 学习进度所属季度 + 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)) { + studyQuarter = key; + } + if (collect.contains(week)) { + thisQuarter = key; + } + } + // 默认进度为 0 + int defaultSchedule; + // 季度判断 + if (studyQuarter > thisQuarter) { + defaultSchedule = 2; + } 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 = 2; + } else if (studyIndex < weekIndex) { + defaultSchedule = 0; + } else { + defaultSchedule = studyRecord.getGameDifficulty(); + } + } + return defaultSchedule; + } + } -- Gitblit v1.7.1