课程增加字段
parent
8c316c711b
commit
38ba8dbe41
|
|
@ -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<String> videoCoursewareIds =new ArrayList<>();
|
||||
//判断课程习题数量大于5
|
||||
if(CatalogueLevelEnum.FIRST_LEVEL.getCode().equals(cmd.getCatalogueLevel())){
|
||||
|
|
@ -64,7 +58,6 @@ public class CurriculumAddExe {
|
|||
//二级目录
|
||||
List<CurriculumChapterAddCmd> curriculumChapterAddCmdList = cmd.getCurriculumChapterAddCmdList();
|
||||
//curriculumChapterAddCmdList过滤掉"0".equals(curriculumChapterAddCmd.getParentId()) 的数据,拿到videoCoursewareIds
|
||||
// curriculumChapterAddCmdList.stream()
|
||||
//curriculumChapterAddCmdList中curriculumChapterAddCmdList.get().getCurriculumChapterAddCmdList() 下所有的getVideoCoursewareId
|
||||
List<String> 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<CurriculumChapterAddCmd> curriculumChapterAddCmdList = cmd.getCurriculumChapterAddCmdList();
|
||||
List<String> videoCoursewareIds1 = videoCoursewareIds;
|
||||
curriculumChapterAddCmdList.forEach(curriculumChapterAddCmd -> {
|
||||
CurriculumChapterE curriculumChapterE = new CurriculumChapterE();
|
||||
BeanUtils.copyProperties(curriculumChapterAddCmd, curriculumChapterE);
|
||||
|
|
|
|||
|
|
@ -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<String> 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<CurriculumChapterAddCmd> curriculumChapterAddCmdList = curriculumUpdateCmd.getCurriculumChapterAddCmdList();
|
||||
//curriculumChapterAddCmdList过滤掉"0".equals(curriculumChapterAddCmd.getParentId()) 的数据,拿到videoCoursewareIds
|
||||
//curriculumChapterAddCmdList中curriculumChapterAddCmdList.get().getCurriculumChapterAddCmdList() 下所有的getVideoCoursewareId
|
||||
List<String> finalVideoCoursewareIds = videoCoursewareIds;
|
||||
curriculumChapterAddCmdList.forEach(info->{
|
||||
List<String> 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) {
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
||||
|
|
|
|||
|
|
@ -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) {
|
||||
|
|
|
|||
|
|
@ -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 = "企业名称")
|
||||
|
|
|
|||
|
|
@ -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<VideoCours
|
|||
queryWrapper.eq("training_type_id", trainingTypeId);
|
||||
return videoCoursewareMapper.selectCount(queryWrapper);
|
||||
}
|
||||
|
||||
@Override
|
||||
public BigDecimal getVideoTotalTime(List<String> videoCoursewareIds) {
|
||||
QueryWrapper<VideoCoursewareDO> queryWrapper = new QueryWrapper<>();
|
||||
queryWrapper.in("video_courseware_id", videoCoursewareIds);
|
||||
List<VideoCoursewareDO> videoCoursewareDOList = list(queryWrapper);
|
||||
BigDecimal videoTotalTime = videoCoursewareDOList.stream().map(VideoCoursewareDO::getVideoTime).reduce(BigDecimal.ZERO, BigDecimal::add).setScale(1, BigDecimal.ROUND_HALF_UP);
|
||||
return videoTotalTime;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -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<VideoCoursewar
|
|||
SingleResponse<VideoCoursewareDO> getInfoById(Long id);
|
||||
|
||||
Long getListByTraingId(String trainingTypeId);
|
||||
|
||||
BigDecimal getVideoTotalTime(List<String> videoCoursewareIds);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -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'
|
||||
|
|
|
|||
Loading…
Reference in New Issue