频繁调用finishCheck100进度更新

This commit is contained in:
Wangxxz
2024-11-18 15:43:01 +08:00
parent fc94e4aedd
commit ec00f55606

View File

@@ -2,10 +2,14 @@ package com.xboe.school.study.dao;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.util.List; import java.util.List;
import java.util.concurrent.TimeUnit;
import com.xboe.api.ThirdApi; import com.xboe.api.ThirdApi;
import com.xboe.constants.CacheName;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.stereotype.Repository; import org.springframework.stereotype.Repository;
import com.xboe.core.orm.BaseDao; import com.xboe.core.orm.BaseDao;
@@ -26,6 +30,9 @@ public class StudyCourseDao extends BaseDao<StudyCourse> {
@Autowired @Autowired
StudyCourseItemDao scItemDao; StudyCourseItemDao scItemDao;
@Autowired
StringRedisTemplate redisTemplate;
@Resource @Resource
private ThirdApi thirdApi; private ThirdApi thirdApi;
@@ -36,6 +43,11 @@ public class StudyCourseDao extends BaseDao<StudyCourse> {
* @param total * @param total
*/ */
public void finishCheck(String studyId,String courseId,Integer total,String token){ public void finishCheck(String studyId,String courseId,Integer total,String token){
if(StringUtils.isNotEmpty(redisTemplate.opsForValue().get(studyId))){
return ;
}
log.info("------1.完成情况检查---------------studyId = " + studyId + " , courseId = " + courseId + " , total = " + total ); log.info("------1.完成情况检查---------------studyId = " + studyId + " , courseId = " + courseId + " , total = " + total );
LocalDateTime now=LocalDateTime.now(); LocalDateTime now=LocalDateTime.now();
//已完成的内容 //已完成的内容
@@ -50,7 +62,9 @@ public class StudyCourseDao extends BaseDao<StudyCourse> {
} }
log.info("------3.完成情况检查---------------studyId = " + studyId + " , courseId = " + courseId + " , total = " + total ); log.info("------3.完成情况检查---------------studyId = " + studyId + " , courseId = " + courseId + " , total = " + total );
//以下注意float类型是否等于100对应 //以下注意float类型是否等于100对应
float percent=n*100/total; float percent=n*100/total;
if(n>=total) { if(n>=total) {
//自主报名的课程,代表学习完成 //自主报名的课程,代表学习完成
super.updateMultiFieldById(studyId, super.updateMultiFieldById(studyId,
@@ -58,11 +72,13 @@ public class StudyCourseDao extends BaseDao<StudyCourse> {
UpdateBuilder.create("lastTime",now), UpdateBuilder.create("lastTime",now),
UpdateBuilder.create("finishTime",now), UpdateBuilder.create("finishTime",now),
UpdateBuilder.create("status",StudyCourse.STATUS_FINISH)); UpdateBuilder.create("status",StudyCourse.STATUS_FINISH));
redisTemplate.opsForValue().set(studyId, "100", 24, TimeUnit.HOURS);
}else { }else {
super.updateMultiFieldById(studyId, super.updateMultiFieldById(studyId,
UpdateBuilder.create("progress",percent), UpdateBuilder.create("progress",percent),
UpdateBuilder.create("lastTime",LocalDateTime.now()), UpdateBuilder.create("lastTime",LocalDateTime.now()),
UpdateBuilder.create("status",StudyCourse.STATUS_STUDYING)); UpdateBuilder.create("status",StudyCourse.STATUS_STUDYING));
redisTemplate.opsForValue().set(studyId, String.valueOf(percent), 10, TimeUnit.SECONDS);
} }
List<StudyCourse> allUserList = thirdApi.getStudyCourseList(studyId ,courseId, token); List<StudyCourse> allUserList = thirdApi.getStudyCourseList(studyId ,courseId, token);