From 63317d726c29876a84013f63009a1a46e8fd65d3 Mon Sep 17 00:00:00 2001 From: zhangyue Date: Sat, 7 Mar 2026 09:59:48 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E7=8F=AD=E7=BA=A7=E8=AF=BE?= =?UTF-8?q?=E7=A8=8B=E9=87=8D=E5=A4=8D=E6=A3=80=E6=9F=A5=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../template/class_paper_answer.docx | Bin 0 -> 14395 bytes .../command/study/ClassCurriculumAddExe.java | 34 ++++++++++++++++-- .../study/ClassCurriculumRepository.java | 2 ++ 3 files changed, 34 insertions(+), 2 deletions(-) create mode 100644 start/src/main/resources/templates/template/class_paper_answer.docx diff --git a/start/src/main/resources/templates/template/class_paper_answer.docx b/start/src/main/resources/templates/template/class_paper_answer.docx new file mode 100644 index 0000000000000000000000000000000000000000..09d1b0f534ef0c80b417367058299266491ec5dc GIT binary patch literal 14395 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 AL;wH) literal 0 HcmV?d00001 diff --git a/web-app/src/main/java/com/zcloud/edu/command/study/ClassCurriculumAddExe.java b/web-app/src/main/java/com/zcloud/edu/command/study/ClassCurriculumAddExe.java index 2368e4b..6882b89 100644 --- a/web-app/src/main/java/com/zcloud/edu/command/study/ClassCurriculumAddExe.java +++ b/web-app/src/main/java/com/zcloud/edu/command/study/ClassCurriculumAddExe.java @@ -11,16 +11,18 @@ import com.zcloud.edu.dto.study.ClassCurriculumBatchAddCmd; import com.zcloud.edu.dto.study.ClassCurriculumChapterAddCmd; import com.zcloud.edu.persistence.dataobject.CurriculumChapterDO; import com.zcloud.edu.persistence.dataobject.CurriculumDO; +import com.zcloud.edu.persistence.dataobject.study.ClassCurriculumDO; import com.zcloud.edu.persistence.repository.resource.CurriculumChapterRepository; import com.zcloud.edu.persistence.repository.resource.CurriculumRepository; +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.*; +import java.util.stream.Collectors; /** @@ -36,13 +38,30 @@ public class ClassCurriculumAddExe { private final ClassCurriculumChapterGateway classCurriculumChapterGateway; private final CurriculumRepository curriculumRepository; private final CurriculumChapterRepository curriculumChapterRepository; + private final ClassCurriculumRepository classCurriculumRepository; @Transactional(rollbackFor = Exception.class) public boolean execute(List cmdList) { ClassCurriculumE classCurriculumE = new ClassCurriculumE(); // cmdList 转 Elist List classCurriculumEList = new ArrayList<>(); + Map params = new HashMap<>(); + String curIds = cmdList.stream() + .map(ClassCurriculumAddCmd::getCurriculumId) + .filter(Objects::nonNull) + .collect(Collectors.joining(",")); + params.put("inCurriculumId", curIds); + params.put("classId", cmdList.get(0).getClassId()); + List classCurriculumList = classCurriculumRepository.listAll(params); + if (classCurriculumList != null && classCurriculumList.size() > 0){ + String name = classCurriculumList.stream() + .map(ClassCurriculumDO::getCurriculumName) + .filter(Objects::nonNull) + .collect(Collectors.joining(",")); + throw new BizException( "课程已存在:" + name); + } for (ClassCurriculumAddCmd curCmd : cmdList){ + ClassCurriculumE curriculum = new ClassCurriculumE(); BeanUtils.copyProperties(curCmd, curriculum); BigDecimal decimal = BigDecimal.valueOf(curCmd.getVideoTotalTime()); @@ -85,6 +104,17 @@ public class ClassCurriculumAddExe { @Transactional(rollbackFor = Exception.class) public void executeBatchAdd(ClassCurriculumBatchAddCmd cmd) { + Map params = new HashMap<>(); + params.put("inCurriculumId", cmd.getCurriculumIds()); + params.put("classId", cmd.getClassId()); + List classCurriculumList = classCurriculumRepository.listAll(params); + if (classCurriculumList != null && classCurriculumList.size() > 0){ + String name = classCurriculumList.stream() + .map(ClassCurriculumDO::getCurriculumName) + .filter(Objects::nonNull) + .collect(Collectors.joining(",")); + throw new BizException( "课程已存在:" + name); + } List curList = curriculumRepository.listByCurriculumIds(cmd.getCurriculumIds()); List chapterList = curriculumChapterRepository.listByCurriculumIds(cmd.getCurriculumIds()); List curEList = BeanUtil.copyToList(curList, ClassCurriculumE.class); diff --git a/web-infrastructure/src/main/java/com/zcloud/edu/persistence/repository/study/ClassCurriculumRepository.java b/web-infrastructure/src/main/java/com/zcloud/edu/persistence/repository/study/ClassCurriculumRepository.java index 797e54c..039481f 100644 --- a/web-infrastructure/src/main/java/com/zcloud/edu/persistence/repository/study/ClassCurriculumRepository.java +++ b/web-infrastructure/src/main/java/com/zcloud/edu/persistence/repository/study/ClassCurriculumRepository.java @@ -25,5 +25,7 @@ public interface ClassCurriculumRepository extends BaseRepository listAll(Map params); + + }