Ver Fonte

fix 学习定时sql

he2802 há 3 anos atrás
pai
commit
f85c6475a1

+ 15 - 6
zhongzheng-system/src/main/java/com/zhongzheng/modules/user/service/impl/UserStudyRecordServiceImpl.java

@@ -9,6 +9,7 @@ import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
 import com.baomidou.mybatisplus.core.toolkit.StringUtils;
 import com.microsoft.schemas.office.visio.x2012.main.SectionType;
+import com.zhongzheng.common.core.redis.RedisCache;
 import com.zhongzheng.common.utils.DateUtils;
 import com.zhongzheng.modules.bank.domain.Exam;
 import com.zhongzheng.modules.course.bo.CourseQueryBo;
@@ -57,6 +58,7 @@ import org.springframework.transaction.annotation.Transactional;
 
 import java.math.BigDecimal;
 import java.util.*;
+import java.util.concurrent.TimeUnit;
 import java.util.stream.Collectors;
 
 /**
@@ -121,7 +123,8 @@ public class UserStudyRecordServiceImpl extends ServiceImpl<UserStudyRecordMappe
     private IUserBankRecordService iUserBankRecordService;
     @Autowired
     private IUserExamGoodsService iUserExamGoodsService;
-
+    @Autowired
+    private  RedisCache redisCache;
     @Override
     public UserStudyRecordVo queryById(Long recordId) {
         UserStudyRecord db = this.baseMapper.selectById(recordId);
@@ -257,6 +260,14 @@ public class UserStudyRecordServiceImpl extends ServiceImpl<UserStudyRecordMappe
     @Override
     @Transactional(rollbackFor = Exception.class)
     public Integer insertByAddBo(UserStudyRecordAddBo bo) {
+        String key = "STUDY_Record_"+bo.getUserId();
+        Long value = redisCache.getCacheObject(key);
+        if(value!=null&&(Validator.isEmpty(bo.getStatus())||bo.getStatus()!=1)){
+            //非学完状态则防重复提交处理
+            return 1;
+        }
+        redisCache.setCacheObject(key,1L,5, TimeUnit.SECONDS);//5秒
+
         CourseSectionVo courseSectionVo =iCourseSectionService.queryById(bo.getSectionId());
         if(courseSectionVo.getSectionType()==2&&Validator.isNotEmpty(bo.getPhoto())){  //直播有拍照即学完
             bo.setStatus(1);
@@ -604,24 +615,22 @@ public class UserStudyRecordServiceImpl extends ServiceImpl<UserStudyRecordMappe
                     periodId = userPeriodStatusAddBo.getId();*/
                 } else if (userPeriodStatus.getStatus() == 3) {                //待重修
                     userPeriodStatus.setPeriodStatus(1);
-                    userPeriodStatus.setCreateTime(DateUtils.getNowTime());
                     userPeriodStatus.setUpdateTime(DateUtils.getNowTime());
                     if(Validator.isEmpty(userPeriodStatus.getRecordStartTime())){ //待重修第一次学习进来
                         userPeriodStatus.setRecordStartTime(entity.getStartTime());
                     }
-                    if (entity.getStatus() != null && entity.getStatus() == 1) {  //待重修看完
+                    if (Validator.isNotEmpty(entity.getStatus())&& entity.getStatus() == 1) {  //待重修看完
                         userPeriodStatus.setRecordEndTime(entity.getEndTime());
                         userPeriodStatus.setStatus(2);
                     }
                     iUserPeriodStatusService.updateById(userPeriodStatus);
                     periodId = userPeriodStatus.getId();
                 }
-                if (userPeriodStatus.getStatus() == 2) {//待审核
+                else if (userPeriodStatus.getStatus() == 2) {//待审核
                     //有学习记录完整播放且为待审添加结束时间
                     userPeriodStatus.setPeriodStatus(1);
-                    userPeriodStatus.setCreateTime(DateUtils.getNowTime());
                     userPeriodStatus.setUpdateTime(DateUtils.getNowTime());
-                    if (entity.getStatus() != null && entity.getStatus() == 1) {
+                    if (Validator.isNotEmpty(entity.getStatus()) && entity.getStatus() == 1) {
                         userPeriodStatus.setRecordEndTime(entity.getEndTime());
                         userPeriodStatus.setStatus(2);
                     }