Bläddra i källkod

计算任务学习进度

yangfeng 1 år sedan
förälder
incheckning
5ebd68cb0d

+ 2 - 1
web/src/main/java/com/ynfy/buss/course/usercoursecatalog/entity/vo/CatalogTimeVO.java

@@ -1,6 +1,7 @@
 package com.ynfy.buss.course.usercoursecatalog.entity.vo;
 
 import com.fasterxml.jackson.annotation.JsonFormat;
+import com.ynfy.buss.course.coursecatalog.entity.CourseCatalog;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 import org.springframework.format.annotation.DateTimeFormat;
@@ -15,7 +16,7 @@ import java.util.Date;
 public class CatalogTimeVO implements Serializable {
     private static final long serialVersionUID = 1L;
 
-    private String courseCatalogId;
+    private CourseCatalog courseCatalog;
 
     /**
      * /**

+ 20 - 11
web/src/main/java/com/ynfy/buss/course/usercoursecatalog/service/impl/UserCourseCatalogServiceImpl.java

@@ -2,8 +2,10 @@ package com.ynfy.buss.course.usercoursecatalog.service.impl;
 
 import cn.hutool.core.date.DateUnit;
 import cn.hutool.core.date.DateUtil;
+import cn.hutool.core.util.NumberUtil;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ynfy.buss.course.coursecatalog.entity.CourseCatalog;
 import com.ynfy.buss.course.usercoursecatalog.entity.UserCourseCatalog;
 import com.ynfy.buss.course.usercoursecatalog.entity.vo.CatalogTimeVO;
 import com.ynfy.buss.course.usercoursecatalog.mapper.UserCourseCatalogMapper;
@@ -33,23 +35,30 @@ public class UserCourseCatalogServiceImpl extends ServiceImpl<UserCourseCatalogM
     @Override
     @Transactional(rollbackFor = Exception.class)
     public synchronized void calcStudyTime(CatalogTimeVO catalogTimeVO) {
-        if (StringUtils.isBlank(catalogTimeVO.getCourseCatalogId()) || Objects.isNull(catalogTimeVO.getStartLearnTime())
-                || Objects.isNull(catalogTimeVO.getEndLearnTime())) {
+        if (Objects.isNull(catalogTimeVO.getCourseCatalog()) || StringUtils.isBlank(catalogTimeVO.getCourseCatalog().getId())
+                || Objects.isNull(catalogTimeVO.getStartLearnTime()) || Objects.isNull(catalogTimeVO.getEndLearnTime())) {
             return;
         }
         if (DateUtil.compare(catalogTimeVO.getEndLearnTime(), catalogTimeVO.getStartLearnTime()) > 0) {
             LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
-
-            UserCourseCatalog courseCatalog = findUserCatalog(sysUser.getId(), catalogTimeVO.getCourseCatalogId());
-            if (Objects.isNull(courseCatalog)) {
-                courseCatalog = new UserCourseCatalog();
+            CourseCatalog courseCatalog = catalogTimeVO.getCourseCatalog();
+            UserCourseCatalog userCourseCatalog = findUserCatalog(sysUser.getId(), courseCatalog.getId());
+            if (Objects.isNull(userCourseCatalog)) {
+                userCourseCatalog = new UserCourseCatalog();
             }
-            courseCatalog.setUserId(sysUser.getId());
-            courseCatalog.setCourseCatalogId(catalogTimeVO.getCourseCatalogId());
+            userCourseCatalog.setUserId(sysUser.getId());
+            userCourseCatalog.setCourseCatalogId(courseCatalog.getId());
             long between = DateUtil.between(catalogTimeVO.getStartLearnTime(), catalogTimeVO.getEndLearnTime(), DateUnit.SECOND);
-            courseCatalog.setTotalLearnTime(Integer.parseInt(String.valueOf(((!Objects.isNull(courseCatalog.getTotalLearnTime())
-                    ? courseCatalog.getTotalLearnTime() : 0) + between))));
-            saveOrUpdate(courseCatalog);
+            userCourseCatalog.setTotalLearnTime(Integer.parseInt(String.valueOf(((!Objects.isNull(userCourseCatalog.getTotalLearnTime())
+                    ? userCourseCatalog.getTotalLearnTime() : 0) + between))));
+            //如果有必须时长的话则以其分母,如果没有的话取总时长
+            Long number = !Objects.isNull(courseCatalog.getMustLearnTime()) ? courseCatalog.getMustLearnTime() : courseCatalog.getVideoHour();
+            if (!Objects.isNull(number) && number.intValue() > 0) {
+                //计算学习进度
+                userCourseCatalog.setLearnProcess(NumberUtil.div(userCourseCatalog.getTotalLearnTime(), number).doubleValue());
+            }
+
+            saveOrUpdate(userCourseCatalog);
         }
     }