src/main/java/com/ycl/jxkg/config/CaffeineConfig.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/ycl/jxkg/job/StudyRecordJob.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/ycl/jxkg/service/impl/ExamServiceImpl.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/resources/application.yml | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
src/main/java/com/ycl/jxkg/config/CaffeineConfig.java
@@ -17,8 +17,8 @@ @Bean public Cache<String, Object> caffeineCache() { Cache<String, Object> caffeineCache = Caffeine.newBuilder() // 设置最后一次写入或访问后经过固定时间过期 .expireAfterWrite(600, TimeUnit.SECONDS) // 设置最后一次写入或访问后经过固定时间(12小时)过期 .expireAfterWrite(43200, TimeUnit.SECONDS) // 初始的缓存空间大小 .initialCapacity(10) // 缓存的最大条数 src/main/java/com/ycl/jxkg/job/StudyRecordJob.java
@@ -38,30 +38,31 @@ log.info("开始存学习时长"); List<StudyRecord> cacheList = new ArrayList<>(); // 取出所有学习记录缓存项 ConcurrentMap<String, Object> map = caffeineCache.asMap(); Map<String,StudyRecord> studyMap = (Map<String, StudyRecord>) map.get(CaffeineConstant.STUDY_RECORD); for (Map.Entry<String, StudyRecord> entry : studyMap.entrySet()) { cacheList.add(entry.getValue()); } Map<String, StudyRecord> studyMap = (Map<String, StudyRecord>) caffeineCache.getIfPresent(CaffeineConstant.STUDY_RECORD); if (!CollectionUtils.isEmpty(studyMap)) { for (Map.Entry<String, StudyRecord> entry : studyMap.entrySet()) { cacheList.add(entry.getValue()); } List<Integer> studentIds = cacheList.stream().map(StudyRecord::getStudentId).collect(Collectors.toList()); if (!CollectionUtils.isEmpty(studentIds)) { //数据库中已经存在的学生数据 QueryWrapper<StudyRecord> wrapper = new QueryWrapper<>(); wrapper.in("student_id", studentIds); List<StudyRecord> studyRecords = studyRecordMapper.selectList(wrapper); for (StudyRecord record : studyRecords) { for (StudyRecord cacheRecord : cacheList) { if (record.getStudentId().equals(cacheRecord.getStudentId())) { cacheRecord.setId(record.getId()); cacheRecord.setStudyTime(record.getStudyTime() + cacheRecord.getStudyTime()); cacheRecord.setMeetCount(record.getMeetCount()); List<Integer> studentIds = cacheList.stream().map(StudyRecord::getStudentId).collect(Collectors.toList()); if (!CollectionUtils.isEmpty(studentIds)) { //数据库中已经存在的学生数据 QueryWrapper<StudyRecord> wrapper = new QueryWrapper<>(); wrapper.in("student_id", studentIds); List<StudyRecord> studyRecords = studyRecordMapper.selectList(wrapper); for (StudyRecord record : studyRecords) { for (StudyRecord cacheRecord : cacheList) { if (record.getStudentId().equals(cacheRecord.getStudentId())) { cacheRecord.setId(record.getId()); cacheRecord.setStudyTime(record.getStudyTime() + cacheRecord.getStudyTime()); cacheRecord.setMeetCount(record.getMeetCount()); } } } studyRecordService.saveOrUpdateBatch(cacheList); } studyRecordService.saveOrUpdateBatch(cacheList); caffeineCache.invalidate(CaffeineConstant.STUDY_RECORD); } caffeineCache.invalidate(CaffeineConstant.STUDY_RECORD); log.info("结束存学习时长"); } } src/main/java/com/ycl/jxkg/service/impl/ExamServiceImpl.java
@@ -597,11 +597,11 @@ @Override public Result getMarkPaperInfo(Integer examId, Integer userId) { User student = userMapper.getUserById(userId); //如果已经阅过卷了,查成绩表 Result<ExamPaperMarkVO> paperMarkVO1 = checkHasJudge(examId, userId); Result<ExamPaperMarkVO> paperMarkVO1 = checkHasJudge(examId, student); if (paperMarkVO1 != null) return paperMarkVO1; User student = userMapper.getUserById(userId); ExamVO exam = examMapper.getById(examId); //学生答题表 ExamSubmitTemp userExam = new LambdaQueryChainWrapper<>(examSubmitTempMapper) @@ -643,11 +643,12 @@ } //检查是否阅卷 private Result<ExamPaperMarkVO> checkHasJudge(Integer examId, Integer userId) { ExamPaperScore examPaperScore = examPaperScoreMapper.getByExamIdUserId(examId, userId); private Result<ExamPaperMarkVO> checkHasJudge(Integer examId, User student) { ExamPaperScore examPaperScore = examPaperScoreMapper.getByExamIdUserId(examId, student.getId()); if (examPaperScore != null) { ExamPaperMarkVO paperMarkVO = new ExamPaperMarkVO(); BeanUtils.copyProperties(examPaperScore, paperMarkVO); paperMarkVO.setUserName(student.getRealName()); paperMarkVO.setTotalScore(examPaperScore.getTotalScore() + ""); paperMarkVO.setScore(examPaperScore.getScore() + ""); if (!StringUtils.isEmpty(examPaperScore.getPaperContent())) { @@ -841,7 +842,7 @@ paperMarkVO.setTitleItems(JSON.parseArray(userExam.getExamSubmit(), PaperFixQuestionVO.class)); } else { //缺考,学生没有做题信息 paperMarkVO.setExamId(exam.getExamPaperId()); paperMarkVO.setExamId(exam.getId()); paperMarkVO.setUserId(student.getId()); paperMarkVO.setScore(BigDecimal.ZERO + ""); paperMarkVO.setDoTime(0); src/main/resources/application.yml
@@ -1,7 +1,7 @@ server: servlet: session: timeout: 7200 timeout: 18000 port: 8000 undertow: io-threads: 16