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