package com.gkhy.exam.framework.job; import cn.hutool.core.util.ObjectUtil; import com.gkhy.exam.common.constant.CacheConstant; import com.gkhy.exam.common.enums.ResourceTypeEnum; import com.gkhy.exam.common.utils.RedisUtils; import com.gkhy.exam.system.domain.ExResource; import com.gkhy.exam.system.domain.ExStudentStudy; import com.gkhy.exam.system.mapper.ExResourceMapper; import com.gkhy.exam.system.mapper.ExStudentStudyMapper; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import java.math.BigDecimal; import java.util.Set; /** * 学习进度job */ @Component public class UserStudyJob { @Autowired private ExResourceMapper resourceMapper; @Autowired private ExStudentStudyMapper studentStudyMapper; @Autowired private RedisUtils redisUtils; public void progress(){ Set keys = redisUtils.keys(CacheConstant.STUDY_PROCESS_KEY + "*"); if(ObjectUtil.isNotEmpty(keys)){ for(String key:keys){ ExStudentStudy studentStudy = (ExStudentStudy) redisUtils.get(key); ExResource resource=resourceMapper.selectById(studentStudy.getResourceId()); if(ResourceTypeEnum.VIDEO.getCode().equals(resource.getResourceType())||ResourceTypeEnum.AUDIO.getCode().equals(resource.getResourceType())){ studentStudy.setProgress(new BigDecimal(studentStudy.getCurrentDuration()).divide(new BigDecimal(resource.getResourceLength()),BigDecimal.ROUND_CEILING).multiply(BigDecimal.valueOf(100))); }else{ studentStudy.setProgress(BigDecimal.valueOf(studentStudy.getCurrentPage()).divide(BigDecimal.valueOf(resource.getDocPage()).multiply(BigDecimal.valueOf(100)))); } studentStudyMapper.updateById(studentStudy); redisUtils.del(key); } } } }