| | |
| | | |
| | | import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; |
| | | import com.github.benmanes.caffeine.cache.Cache; |
| | | import com.ycl.jxkg.constants.CaffeineConstant; |
| | | import com.ycl.jxkg.domain.entity.StudyRecord; |
| | | import com.ycl.jxkg.mapper.StudyRecordMapper; |
| | | import com.ycl.jxkg.service.StudyRecordService; |
| | |
| | | private final StudyRecordMapper studyRecordMapper; |
| | | private final StudyRecordService studyRecordService; |
| | | |
| | | @Scheduled(fixedRate = 1200000) // 20分钟执行一次 |
| | | @Scheduled(fixedRate = 1200000) // 2分钟执行一次 |
| | | private void updateStudyRecord() { |
| | | log.info("开始存学习时长"); |
| | | List<StudyRecord> cacheList = new ArrayList<>(); |
| | | // 取出所有缓存项 |
| | | // 取出所有学习记录缓存项 |
| | | ConcurrentMap<String, Object> map = caffeineCache.asMap(); |
| | | for (Map.Entry<String, Object> entry : map.entrySet()) { |
| | | String key = entry.getKey(); |
| | | if (key.startsWith("STUDENT_")) { |
| | | StudyRecord studyRecord = (StudyRecord) entry.getValue(); |
| | | cacheList.add(studyRecord); |
| | | } |
| | | Map<String,StudyRecord> studyMap = (Map<String, StudyRecord>) map.get(CaffeineConstant.STUDY_RECORD); |
| | | 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)) { |
| | | //数据库中已经存在的学生数据 |
| | |
| | | } |
| | | studyRecordService.saveOrUpdateBatch(cacheList); |
| | | } |
| | | caffeineCache.invalidateAll(map.keySet()); |
| | | caffeineCache.invalidate(CaffeineConstant.STUDY_RECORD); |
| | | log.info("结束存学习时长"); |
| | | } |
| | | } |