diff --git a/web-app/src/main/java/com/zcloud/edu/command/resource/CurriculumAddExe.java b/web-app/src/main/java/com/zcloud/edu/command/resource/CurriculumAddExe.java index 272ff5f..15b0d5c 100644 --- a/web-app/src/main/java/com/zcloud/edu/command/resource/CurriculumAddExe.java +++ b/web-app/src/main/java/com/zcloud/edu/command/resource/CurriculumAddExe.java @@ -10,7 +10,9 @@ import com.zcloud.edu.domain.model.resource.CurriculumChapterE; import com.zcloud.edu.domain.model.resource.CurriculumE; import com.zcloud.edu.dto.resource.CurriculumAddCmd; import com.zcloud.edu.dto.resource.CurriculumChapterAddCmd; +import com.zcloud.edu.persistence.dataobject.QuestionDO; import com.zcloud.edu.persistence.repository.resource.CurriculumChapterRepository; +import com.zcloud.edu.persistence.repository.resource.CurriculumRepository; import com.zcloud.edu.persistence.repository.resource.QuestionRepository; import com.zcloud.edu.persistence.repository.resource.VideoCoursewareRepository; import lombok.AllArgsConstructor; @@ -18,6 +20,7 @@ import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Component; import org.springframework.transaction.annotation.Transactional; +import java.math.BigDecimal; import java.util.ArrayList; import java.util.List; import java.util.stream.Collectors; @@ -33,6 +36,7 @@ import java.util.stream.Collectors; @AllArgsConstructor public class CurriculumAddExe { private final CurriculumGateway curriculumGateway; + private final CurriculumRepository curriculumRepository; private final CurriculumChapterGateway curriculumChapterGateway; private final CurriculumChapterCoConvertor curriculumChapterCoConvertor; private final CurriculumChapterRepository curriculumChapterRepository; @@ -42,17 +46,7 @@ public class CurriculumAddExe { @Transactional(rollbackFor = Exception.class) public boolean execute(CurriculumAddCmd cmd) { - CurriculumE curriculumE = new CurriculumE(); - BeanUtils.copyProperties(cmd, curriculumE); - boolean res = false; - try { - res = curriculumGateway.add(curriculumE); - } catch (Exception e) { - throw new RuntimeException(e); - } - if (!res) { - throw new BizException("课程保存失败"); - } + List videoCoursewareIds =new ArrayList<>(); //判断课程习题数量大于5 if(CatalogueLevelEnum.FIRST_LEVEL.getCode().equals(cmd.getCatalogueLevel())){ @@ -64,7 +58,6 @@ public class CurriculumAddExe { //二级目录 List curriculumChapterAddCmdList = cmd.getCurriculumChapterAddCmdList(); //curriculumChapterAddCmdList过滤掉"0".equals(curriculumChapterAddCmd.getParentId()) 的数据,拿到videoCoursewareIds -// curriculumChapterAddCmdList.stream() //curriculumChapterAddCmdList中curriculumChapterAddCmdList.get().getCurriculumChapterAddCmdList() 下所有的getVideoCoursewareId List finalVideoCoursewareIds = videoCoursewareIds; curriculumChapterAddCmdList.forEach(info->{ @@ -80,8 +73,28 @@ public class CurriculumAddExe { if(videoCoursewareCount<5){ throw new BizException("课程习题数量不能小于5"); } + CurriculumE curriculumE = new CurriculumE(); + BeanUtils.copyProperties(cmd, curriculumE); + + BigDecimal videoTotalTime = videoCoursewareRepository.getVideoTotalTime(videoCoursewareIds); + //videoCoursewareCount中所有videoTime相加,去掉空值 + //获取总时长 + curriculumE.setVideoTotalTime(videoTotalTime); + + + boolean res = false; + try { + res = curriculumGateway.add(curriculumE); + } catch (Exception e) { + throw new RuntimeException(e); + } + if (!res) { + throw new BizException("课程保存失败"); + } + //处理课程章节 List curriculumChapterAddCmdList = cmd.getCurriculumChapterAddCmdList(); + List videoCoursewareIds1 = videoCoursewareIds; curriculumChapterAddCmdList.forEach(curriculumChapterAddCmd -> { CurriculumChapterE curriculumChapterE = new CurriculumChapterE(); BeanUtils.copyProperties(curriculumChapterAddCmd, curriculumChapterE); diff --git a/web-app/src/main/java/com/zcloud/edu/command/resource/CurriculumUpdateExe.java b/web-app/src/main/java/com/zcloud/edu/command/resource/CurriculumUpdateExe.java index 570ea2b..b4746b1 100644 --- a/web-app/src/main/java/com/zcloud/edu/command/resource/CurriculumUpdateExe.java +++ b/web-app/src/main/java/com/zcloud/edu/command/resource/CurriculumUpdateExe.java @@ -1,5 +1,6 @@ package com.zcloud.edu.command.resource; +import cn.hutool.core.collection.CollUtil; import com.alibaba.cola.exception.BizException; import com.zcloud.edu.command.convertor.resource.CurriculumChapterCoConvertor; import com.zcloud.edu.domain.enums.CatalogueLevelEnum; @@ -12,16 +13,17 @@ import com.zcloud.edu.dto.resource.CurriculumChapterAddCmd; import com.zcloud.edu.dto.resource.CurriculumUpdateCmd; import com.zcloud.edu.dto.resource.CurriculumUpdateStateCmd; import com.zcloud.edu.persistence.dataobject.CurriculumDO; -import com.zcloud.edu.persistence.repository.resource.CorpInfoRepository; -import com.zcloud.edu.persistence.repository.resource.CurriculumChapterRepository; -import com.zcloud.edu.persistence.repository.resource.CurriculumRepository; +import com.zcloud.edu.persistence.repository.resource.*; import com.zcloud.edu.persistence.repository.study.ClassCurriculumRepository; import lombok.AllArgsConstructor; import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Component; import org.springframework.transaction.annotation.Transactional; +import java.math.BigDecimal; +import java.util.ArrayList; import java.util.List; +import java.util.stream.Collectors; /** @@ -40,6 +42,8 @@ public class CurriculumUpdateExe { private final CurriculumChapterGateway curriculumChapterGateway; private final CorpInfoRepository corpInfoRepository; private final ClassCurriculumRepository classCurriculumRepository; + private final QuestionRepository questionRepository; + private final VideoCoursewareRepository videoCoursewareRepository; @Transactional(rollbackFor = Exception.class) public void execute(CurriculumUpdateCmd curriculumUpdateCmd) { @@ -62,9 +66,38 @@ public class CurriculumUpdateExe { if(count>0){ throw new BizException("该课程已绑定班级,不能编辑"); } - + List videoCoursewareIds =new ArrayList<>(); + //判断课程习题数量大于5 + if(CatalogueLevelEnum.FIRST_LEVEL.getCode().equals(curriculumUpdateCmd.getCatalogueLevel())){ + //一级目录 + videoCoursewareIds = curriculumUpdateCmd.getCurriculumChapterAddCmdList().stream() + .filter(curriculumChapterAddCmd -> curriculumChapterAddCmd.getVideoCoursewareId() != null) + .map(CurriculumChapterAddCmd::getVideoCoursewareId).collect(Collectors.toList()); + }else{ + //二级目录 + List curriculumChapterAddCmdList = curriculumUpdateCmd.getCurriculumChapterAddCmdList(); + //curriculumChapterAddCmdList过滤掉"0".equals(curriculumChapterAddCmd.getParentId()) 的数据,拿到videoCoursewareIds + //curriculumChapterAddCmdList中curriculumChapterAddCmdList.get().getCurriculumChapterAddCmdList() 下所有的getVideoCoursewareId + List finalVideoCoursewareIds = videoCoursewareIds; + curriculumChapterAddCmdList.forEach(info->{ + List collect = info.getCurriculumChapterAddCmdList().stream().filter(curriculumChapterAddCmd -> curriculumChapterAddCmd.getVideoCoursewareId() != null) + .map(CurriculumChapterAddCmd::getVideoCoursewareId).collect(Collectors.toList()); + finalVideoCoursewareIds.addAll(collect); + }); + } + if(CollUtil.isEmpty(videoCoursewareIds)){ + throw new BizException("请选择课程"); + } + Long videoCoursewareCount = questionRepository.getCountByVideoCoursewareList(videoCoursewareIds); + if(videoCoursewareCount<5){ + throw new BizException("课程习题数量不能小于5"); + } CurriculumE curriculumE = new CurriculumE(); BeanUtils.copyProperties(curriculumUpdateCmd, curriculumE); + BigDecimal videoTotalTime = videoCoursewareRepository.getVideoTotalTime(videoCoursewareIds); + curriculumE.setVideoTotalTime(videoTotalTime); + + boolean res = curriculumGateway.update(curriculumE); if (!res) { throw new BizException("修改失败"); @@ -87,7 +120,6 @@ public class CurriculumUpdateExe { } }); - } public void editState(CurriculumUpdateStateCmd cmd) { diff --git a/web-app/src/main/java/com/zcloud/edu/command/study/ClassAddExe.java b/web-app/src/main/java/com/zcloud/edu/command/study/ClassAddExe.java index 127fc86..1080cfa 100644 --- a/web-app/src/main/java/com/zcloud/edu/command/study/ClassAddExe.java +++ b/web-app/src/main/java/com/zcloud/edu/command/study/ClassAddExe.java @@ -3,7 +3,6 @@ package com.zcloud.edu.command.study; import com.alibaba.cola.exception.BizException; import com.jjb.saas.framework.auth.model.SSOUser; import com.jjb.saas.framework.auth.utils.AuthContext; -import com.sun.org.apache.xml.internal.security.Init; import com.zcloud.edu.domain.gateway.study.ClassGateway; import com.zcloud.edu.domain.model.study.ClassE; import com.zcloud.edu.dto.study.ClassAddCmd; diff --git a/web-client/src/main/java/com/zcloud/edu/dto/clientobject/resource/VideoCoursewareCO.java b/web-client/src/main/java/com/zcloud/edu/dto/clientobject/resource/VideoCoursewareCO.java index 4ceeb55..b018269 100644 --- a/web-client/src/main/java/com/zcloud/edu/dto/clientobject/resource/VideoCoursewareCO.java +++ b/web-client/src/main/java/com/zcloud/edu/dto/clientobject/resource/VideoCoursewareCO.java @@ -4,6 +4,8 @@ import com.alibaba.cola.dto.ClientObject; import io.swagger.annotations.ApiModelProperty; import lombok.Data; +import java.math.BigDecimal; + /** * web-client @@ -42,7 +44,7 @@ public class VideoCoursewareCO extends ClientObject { private Integer state; //课件时长(视频时间)-秒 @ApiModelProperty(value = "课件时长(视频时间)-秒") - private Integer videoTime; + private BigDecimal videoTime; @ApiModelProperty(value = "课件截图url") private String screenshotUrl; diff --git a/web-client/src/main/java/com/zcloud/edu/dto/resource/VideoCoursewareAddCmd.java b/web-client/src/main/java/com/zcloud/edu/dto/resource/VideoCoursewareAddCmd.java index 7e9696a..93a3051 100644 --- a/web-client/src/main/java/com/zcloud/edu/dto/resource/VideoCoursewareAddCmd.java +++ b/web-client/src/main/java/com/zcloud/edu/dto/resource/VideoCoursewareAddCmd.java @@ -9,6 +9,7 @@ import lombok.NoArgsConstructor; import javax.validation.constraints.NotEmpty; import javax.validation.constraints.NotNull; +import java.math.BigDecimal; /** * web-client @@ -49,7 +50,7 @@ public class VideoCoursewareAddCmd extends Command { @ApiModelProperty(value = "课件时长(视频时间)-秒", name = "videoTime", required = true) @NotNull(message = "课件时长(视频时间)-秒不能为空") - private Integer videoTime; + private BigDecimal videoTime; @ApiModelProperty(value = "课件截图url") private String screenshotUrl; diff --git a/web-client/src/main/java/com/zcloud/edu/dto/resource/VideoCoursewareUpdateCmd.java b/web-client/src/main/java/com/zcloud/edu/dto/resource/VideoCoursewareUpdateCmd.java index 403e353..d9518be 100644 --- a/web-client/src/main/java/com/zcloud/edu/dto/resource/VideoCoursewareUpdateCmd.java +++ b/web-client/src/main/java/com/zcloud/edu/dto/resource/VideoCoursewareUpdateCmd.java @@ -9,6 +9,7 @@ import lombok.NoArgsConstructor; import javax.validation.constraints.NotEmpty; import javax.validation.constraints.NotNull; +import java.math.BigDecimal; /** * web-client @@ -48,7 +49,7 @@ public class VideoCoursewareUpdateCmd extends Command { private Integer state; @ApiModelProperty(value = "课件时长(视频时间)-秒", name = "videoTime", required = true) @NotNull(message = "课件时长(视频时间)-秒不能为空") - private Integer videoTime; + private BigDecimal videoTime; @ApiModelProperty(value = "课件截图url") private String screenshotUrl; } diff --git a/web-domain/src/main/java/com/zcloud/edu/domain/model/resource/CurriculumE.java b/web-domain/src/main/java/com/zcloud/edu/domain/model/resource/CurriculumE.java index 90118fd..25786c1 100644 --- a/web-domain/src/main/java/com/zcloud/edu/domain/model/resource/CurriculumE.java +++ b/web-domain/src/main/java/com/zcloud/edu/domain/model/resource/CurriculumE.java @@ -4,6 +4,7 @@ import com.jjb.saas.framework.domain.model.BaseE; import io.swagger.annotations.ApiModelProperty; import lombok.Data; +import java.math.BigDecimal; import java.time.LocalDateTime; /** @@ -67,6 +68,6 @@ public class CurriculumE extends BaseE { private Integer chapterCount; //总视频时长 @ApiModelProperty(value = "总视频时长") - private Integer videoTime; + private BigDecimal videoTotalTime; } diff --git a/web-domain/src/main/java/com/zcloud/edu/domain/model/resource/VideoCoursewareE.java b/web-domain/src/main/java/com/zcloud/edu/domain/model/resource/VideoCoursewareE.java index 1b73689..fcfa720 100644 --- a/web-domain/src/main/java/com/zcloud/edu/domain/model/resource/VideoCoursewareE.java +++ b/web-domain/src/main/java/com/zcloud/edu/domain/model/resource/VideoCoursewareE.java @@ -3,6 +3,8 @@ package com.zcloud.edu.domain.model.resource; import com.jjb.saas.framework.domain.model.BaseE; import lombok.Data; +import java.math.BigDecimal; + /** * web-domain * @@ -30,7 +32,7 @@ public class VideoCoursewareE extends BaseE { //课件状态 0未启用, 1-启用 private Integer state; //课件时长(视频时间)-秒 - private Integer videoTime; + private BigDecimal videoTime; //课件截图 private String screenshotUrl; diff --git a/web-infrastructure/src/main/java/com/zcloud/edu/persistence/dataobject/CurriculumDO.java b/web-infrastructure/src/main/java/com/zcloud/edu/persistence/dataobject/CurriculumDO.java index 0c687eb..c16eb8b 100644 --- a/web-infrastructure/src/main/java/com/zcloud/edu/persistence/dataobject/CurriculumDO.java +++ b/web-infrastructure/src/main/java/com/zcloud/edu/persistence/dataobject/CurriculumDO.java @@ -60,8 +60,7 @@ public class CurriculumDO extends BaseDO { private Integer chapterCount; //总视频时长 @ApiModelProperty(value = "总视频时长") - @TableField(exist = false) - private Integer videoTime; + private BigDecimal videoTotalTime; public CurriculumDO(String curriculumId) { diff --git a/web-infrastructure/src/main/java/com/zcloud/edu/persistence/dataobject/VideoCoursewareDO.java b/web-infrastructure/src/main/java/com/zcloud/edu/persistence/dataobject/VideoCoursewareDO.java index ab0eb2f..7105534 100644 --- a/web-infrastructure/src/main/java/com/zcloud/edu/persistence/dataobject/VideoCoursewareDO.java +++ b/web-infrastructure/src/main/java/com/zcloud/edu/persistence/dataobject/VideoCoursewareDO.java @@ -8,6 +8,8 @@ import lombok.Data; import lombok.EqualsAndHashCode; import lombok.NoArgsConstructor; +import java.math.BigDecimal; + /** * web-infrastructure * @@ -45,7 +47,7 @@ public class VideoCoursewareDO extends BaseDO { private Integer state; //课件时长(视频时间)-秒 @ApiModelProperty(value = "课件时长(视频时间)-秒") - private Integer videoTime; + private BigDecimal videoTime; @ApiModelProperty(value = "课件截图url") private String screenshotUrl; @ApiModelProperty(value = "企业名称") diff --git a/web-infrastructure/src/main/java/com/zcloud/edu/persistence/repository/impl/resource/VideoCoursewareRepositoryImpl.java b/web-infrastructure/src/main/java/com/zcloud/edu/persistence/repository/impl/resource/VideoCoursewareRepositoryImpl.java index 8db82ec..e6f6d31 100644 --- a/web-infrastructure/src/main/java/com/zcloud/edu/persistence/repository/impl/resource/VideoCoursewareRepositoryImpl.java +++ b/web-infrastructure/src/main/java/com/zcloud/edu/persistence/repository/impl/resource/VideoCoursewareRepositoryImpl.java @@ -13,6 +13,7 @@ import com.jjb.saas.framework.repository.repo.impl.BaseRepositoryImpl; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; +import java.math.BigDecimal; import java.util.Map; import java.util.List; @@ -65,5 +66,14 @@ public class VideoCoursewareRepositoryImpl extends BaseRepositoryImpl videoCoursewareIds) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.in("video_courseware_id", videoCoursewareIds); + List videoCoursewareDOList = list(queryWrapper); + BigDecimal videoTotalTime = videoCoursewareDOList.stream().map(VideoCoursewareDO::getVideoTime).reduce(BigDecimal.ZERO, BigDecimal::add).setScale(1, BigDecimal.ROUND_HALF_UP); + return videoTotalTime; + } } diff --git a/web-infrastructure/src/main/java/com/zcloud/edu/persistence/repository/resource/VideoCoursewareRepository.java b/web-infrastructure/src/main/java/com/zcloud/edu/persistence/repository/resource/VideoCoursewareRepository.java index a9a796e..46bb5d0 100644 --- a/web-infrastructure/src/main/java/com/zcloud/edu/persistence/repository/resource/VideoCoursewareRepository.java +++ b/web-infrastructure/src/main/java/com/zcloud/edu/persistence/repository/resource/VideoCoursewareRepository.java @@ -5,6 +5,7 @@ import com.alibaba.cola.dto.SingleResponse; import com.alibaba.cola.dto.PageResponse; import com.jjb.saas.framework.repository.repo.BaseRepository; +import java.math.BigDecimal; import java.util.Map; import java.util.List; @@ -27,5 +28,7 @@ public interface VideoCoursewareRepository extends BaseRepository getInfoById(Long id); Long getListByTraingId(String trainingTypeId); + + BigDecimal getVideoTotalTime(List videoCoursewareIds); } diff --git a/web-infrastructure/src/main/resources/mapper/CurriculumMapper.xml b/web-infrastructure/src/main/resources/mapper/CurriculumMapper.xml index 6fc0316..a67438f 100644 --- a/web-infrastructure/src/main/resources/mapper/CurriculumMapper.xml +++ b/web-infrastructure/src/main/resources/mapper/CurriculumMapper.xml @@ -8,8 +8,8 @@ select c.*, corp.corp_name as corpName, tt.name as trainingTypeName, - count(cc.id) as chapterCount, - sum(vc.video_time) as videoTime + count(cc.id) as chapterCount + from curriculum c left join corp_info corp on c.corpinfo_id = corp.id left join training_type tt on c.training_type_id = tt.training_type_id and tt.delete_enum = 'FALSE'