From e3a1821e32a2579b558d5dd863480267ce71042f Mon Sep 17 00:00:00 2001 From: zhangyue Date: Sat, 24 Jan 2026 14:37:07 +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=E6=89=B9=E9=87=8F=E6=96=B0=E5=A2=9E=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../web/study/ClassCurriculumController.java | 7 ++++ .../command/study/ClassCurriculumAddExe.java | 23 ++++++++++++ .../study/ClassCurriculumServiceImpl.java | 7 ++++ .../api/study/ClassCurriculumServiceI.java | 3 ++ .../study/ClassCurriculumChapterCO.java | 2 +- .../dto/study/ClassCurriculumBatchAddCmd.java | 36 +++++++++++++++++++ .../model/study/ClassCurriculumChapterE.java | 7 +++- .../domain/model/study/ClassCurriculumE.java | 23 ++++++++++-- .../study/ClassCurriculumChapterDO.java | 2 +- .../CurriculumChapterRepositoryImpl.java | 9 +++++ .../resource/CurriculumRepositoryImpl.java | 9 +++++ .../resource/CurriculumChapterRepository.java | 2 ++ .../resource/CurriculumRepository.java | 2 ++ 13 files changed, 126 insertions(+), 6 deletions(-) create mode 100644 web-client/src/main/java/com/zcloud/edu/dto/study/ClassCurriculumBatchAddCmd.java diff --git a/web-adapter/src/main/java/com/zcloud/edu/web/study/ClassCurriculumController.java b/web-adapter/src/main/java/com/zcloud/edu/web/study/ClassCurriculumController.java index eb38715..b38e221 100644 --- a/web-adapter/src/main/java/com/zcloud/edu/web/study/ClassCurriculumController.java +++ b/web-adapter/src/main/java/com/zcloud/edu/web/study/ClassCurriculumController.java @@ -10,6 +10,7 @@ import com.jjb.saas.framework.auth.utils.AuthContext; import com.zcloud.edu.api.study.ClassCurriculumServiceI; import com.zcloud.edu.dto.clientobject.study.ClassCurriculumCO; import com.zcloud.edu.dto.study.ClassCurriculumAddCmd; +import com.zcloud.edu.dto.study.ClassCurriculumBatchAddCmd; import com.zcloud.edu.dto.study.ClassCurriculumPageQry; import com.zcloud.edu.dto.study.ClassCurriculumUpdateCmd; import io.swagger.annotations.Api; @@ -41,6 +42,12 @@ public class ClassCurriculumController { return classCurriculumService.add(cmdList); } + @ApiOperation("批量新增") + @PostMapping("/saveBatch") + public Response batchAdd(@Validated @RequestBody ClassCurriculumBatchAddCmd cmd) { + return classCurriculumService.batchAdd(cmd); + } + @ApiOperation("分页") @PostMapping("/list") public PageResponse page(@RequestBody ClassCurriculumPageQry qry) { 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 8d31ace..2368e4b 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 @@ -7,7 +7,12 @@ import com.zcloud.edu.domain.gateway.study.ClassCurriculumGateway; import com.zcloud.edu.domain.model.study.ClassCurriculumChapterE; import com.zcloud.edu.domain.model.study.ClassCurriculumE; import com.zcloud.edu.dto.study.ClassCurriculumAddCmd; +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.repository.resource.CurriculumChapterRepository; +import com.zcloud.edu.persistence.repository.resource.CurriculumRepository; import lombok.AllArgsConstructor; import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Component; @@ -29,6 +34,8 @@ import java.util.List; public class ClassCurriculumAddExe { private final ClassCurriculumGateway classCurriculumGateway; private final ClassCurriculumChapterGateway classCurriculumChapterGateway; + private final CurriculumRepository curriculumRepository; + private final CurriculumChapterRepository curriculumChapterRepository; @Transactional(rollbackFor = Exception.class) public boolean execute(List cmdList) { @@ -75,5 +82,21 @@ public class ClassCurriculumAddExe { } return true; } + + @Transactional(rollbackFor = Exception.class) + public void executeBatchAdd(ClassCurriculumBatchAddCmd cmd) { + List curList = curriculumRepository.listByCurriculumIds(cmd.getCurriculumIds()); + List chapterList = curriculumChapterRepository.listByCurriculumIds(cmd.getCurriculumIds()); + List curEList = BeanUtil.copyToList(curList, ClassCurriculumE.class); + List chapterEList = BeanUtil.copyToList(chapterList, ClassCurriculumChapterE.class); + ClassCurriculumE classCurriculumE = new ClassCurriculumE(); + classCurriculumE.initBatchAdd(curEList, chapterEList, cmd.getClassId()); + try { + classCurriculumGateway.batchAdd(curEList); + classCurriculumChapterGateway.batchAdd(chapterEList); + } catch (Exception e) { + throw new RuntimeException(e); + } + } } diff --git a/web-app/src/main/java/com/zcloud/edu/service/study/ClassCurriculumServiceImpl.java b/web-app/src/main/java/com/zcloud/edu/service/study/ClassCurriculumServiceImpl.java index eb5106c..c6d7b69 100644 --- a/web-app/src/main/java/com/zcloud/edu/service/study/ClassCurriculumServiceImpl.java +++ b/web-app/src/main/java/com/zcloud/edu/service/study/ClassCurriculumServiceImpl.java @@ -10,6 +10,7 @@ import com.zcloud.edu.command.study.ClassCurriculumRemoveExe; import com.zcloud.edu.command.study.ClassCurriculumUpdateExe; import com.zcloud.edu.dto.clientobject.study.ClassCurriculumCO; import com.zcloud.edu.dto.study.ClassCurriculumAddCmd; +import com.zcloud.edu.dto.study.ClassCurriculumBatchAddCmd; import com.zcloud.edu.dto.study.ClassCurriculumPageQry; import com.zcloud.edu.dto.study.ClassCurriculumUpdateCmd; import lombok.AllArgsConstructor; @@ -63,5 +64,11 @@ public class ClassCurriculumServiceImpl implements ClassCurriculumServiceI { public SingleResponse getInfoById(Long id) { return classCurriculumQueryExe.executeGetInfoById(id); } + + @Override + public Response batchAdd(ClassCurriculumBatchAddCmd cmd) { + classCurriculumAddExe.executeBatchAdd(cmd); + return Response.buildSuccess(); + } } diff --git a/web-client/src/main/java/com/zcloud/edu/api/study/ClassCurriculumServiceI.java b/web-client/src/main/java/com/zcloud/edu/api/study/ClassCurriculumServiceI.java index d64ebf4..647271a 100644 --- a/web-client/src/main/java/com/zcloud/edu/api/study/ClassCurriculumServiceI.java +++ b/web-client/src/main/java/com/zcloud/edu/api/study/ClassCurriculumServiceI.java @@ -5,6 +5,7 @@ import com.alibaba.cola.dto.Response; import com.alibaba.cola.dto.SingleResponse; import com.zcloud.edu.dto.clientobject.study.ClassCurriculumCO; import com.zcloud.edu.dto.study.ClassCurriculumAddCmd; +import com.zcloud.edu.dto.study.ClassCurriculumBatchAddCmd; import com.zcloud.edu.dto.study.ClassCurriculumPageQry; import com.zcloud.edu.dto.study.ClassCurriculumUpdateCmd; @@ -28,5 +29,7 @@ public interface ClassCurriculumServiceI { void removeBatch(Long[] ids); SingleResponse getInfoById(Long id); + + Response batchAdd(ClassCurriculumBatchAddCmd cmd); } diff --git a/web-client/src/main/java/com/zcloud/edu/dto/clientobject/study/ClassCurriculumChapterCO.java b/web-client/src/main/java/com/zcloud/edu/dto/clientobject/study/ClassCurriculumChapterCO.java index 96d1115..9bd7833 100644 --- a/web-client/src/main/java/com/zcloud/edu/dto/clientobject/study/ClassCurriculumChapterCO.java +++ b/web-client/src/main/java/com/zcloud/edu/dto/clientobject/study/ClassCurriculumChapterCO.java @@ -23,7 +23,7 @@ public class ClassCurriculumChapterCO extends ClientObject { private Long id; //业务主键id @ApiModelProperty(value = "业务主键id") - private String curriculumChapterId; + private String classCurriculumChapterId; //班级id @ApiModelProperty(value = "班级id") private String classId; diff --git a/web-client/src/main/java/com/zcloud/edu/dto/study/ClassCurriculumBatchAddCmd.java b/web-client/src/main/java/com/zcloud/edu/dto/study/ClassCurriculumBatchAddCmd.java new file mode 100644 index 0000000..9f6cb02 --- /dev/null +++ b/web-client/src/main/java/com/zcloud/edu/dto/study/ClassCurriculumBatchAddCmd.java @@ -0,0 +1,36 @@ +package com.zcloud.edu.dto.study; + +import com.alibaba.cola.dto.Command; +import io.swagger.annotations.ApiModelProperty; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.NoArgsConstructor; + +import javax.validation.constraints.NotEmpty; +import javax.validation.constraints.NotNull; +import java.util.List; + +/** + * web-client + * + * @Author zhangyue + * @Date 2026-01-16 09:54:32 + */ +@EqualsAndHashCode(callSuper = true) +@Data +@NoArgsConstructor +@AllArgsConstructor +public class ClassCurriculumBatchAddCmd extends Command { + + @ApiModelProperty(value = "课程id", name = "curriculumId", required = true) + @NotEmpty(message = "课程id不能为空") + private List curriculumIds; + + @ApiModelProperty(value = "班级id", name = "classId", required = true) + @NotEmpty(message = "班级id不能为空") + private String classId; + + +} + diff --git a/web-domain/src/main/java/com/zcloud/edu/domain/model/study/ClassCurriculumChapterE.java b/web-domain/src/main/java/com/zcloud/edu/domain/model/study/ClassCurriculumChapterE.java index 82cd9c5..5113b5e 100644 --- a/web-domain/src/main/java/com/zcloud/edu/domain/model/study/ClassCurriculumChapterE.java +++ b/web-domain/src/main/java/com/zcloud/edu/domain/model/study/ClassCurriculumChapterE.java @@ -17,7 +17,7 @@ public class ClassCurriculumChapterE extends BaseE { //主键 private Long id; //业务主键id - private String curriculumChapterId; + private String classCurriculumChapterId; //班级id private String classId; //企业ID @@ -34,6 +34,11 @@ public class ClassCurriculumChapterE extends BaseE { private String parentId; //子集 private List curriculumChapterAddCmdList; + + + //课程id(批量新增使用) + private String curriculumId; + //删除标识true false private String deleteEnum; //备注 diff --git a/web-domain/src/main/java/com/zcloud/edu/domain/model/study/ClassCurriculumE.java b/web-domain/src/main/java/com/zcloud/edu/domain/model/study/ClassCurriculumE.java index fa91b18..e97b8e0 100644 --- a/web-domain/src/main/java/com/zcloud/edu/domain/model/study/ClassCurriculumE.java +++ b/web-domain/src/main/java/com/zcloud/edu/domain/model/study/ClassCurriculumE.java @@ -8,7 +8,9 @@ import lombok.Data; import java.math.BigDecimal; import java.time.LocalDateTime; import java.util.ArrayList; +import java.util.HashMap; import java.util.List; +import java.util.Map; /** * web-domain @@ -63,16 +65,16 @@ public class ClassCurriculumE extends BaseE { for (ClassCurriculumE cur : curList){ cur.setClassCurriculumId(Tools.get32UUID()); for (ClassCurriculumChapterE chapter : cur.getCurriculumChapterAddCmdList()){ - chapter.setCurriculumChapterId(Tools.get32UUID()); + chapter.setClassCurriculumChapterId(Tools.get32UUID()); chapter.setClassId(cur.getClassId()); chapter.setClassCurriculumId(cur.getClassCurriculumId()); chapter.setParentId("0"); if (chapter.getCurriculumChapterAddCmdList() != null && chapter.getCurriculumChapterAddCmdList().size() > 0){ for (ClassCurriculumChapterE childChapter : chapter.getCurriculumChapterAddCmdList()){ - childChapter.setCurriculumChapterId(Tools.get32UUID()); + childChapter.setClassCurriculumChapterId(Tools.get32UUID()); childChapter.setClassId(cur.getClassId()); childChapter.setClassCurriculumId(cur.getClassCurriculumId()); - childChapter.setParentId(chapter.getCurriculumChapterId()); + childChapter.setParentId(chapter.getClassCurriculumChapterId()); } classCurriculumChapterEList.addAll(chapter.getCurriculumChapterAddCmdList()); } @@ -81,5 +83,20 @@ public class ClassCurriculumE extends BaseE { } return classCurriculumChapterEList; } + + public void initBatchAdd(List curList, List chapterList, String classId){ + Map map = new HashMap(); + for (ClassCurriculumE cur : curList){ + cur.setClassCurriculumId(Tools.get32UUID()); + cur.setClassId(classId); + map.put(cur.getCurriculumId(), cur.getClassCurriculumId()); + } + chapterList.stream().forEach(chapter -> { + chapter.setClassCurriculumId(map.get(chapter.getCurriculumId())); + chapter.setClassId(classId); + chapter.setClassCurriculumChapterId(Tools.get32UUID()); + }); + } + } diff --git a/web-infrastructure/src/main/java/com/zcloud/edu/persistence/dataobject/study/ClassCurriculumChapterDO.java b/web-infrastructure/src/main/java/com/zcloud/edu/persistence/dataobject/study/ClassCurriculumChapterDO.java index 00725f5..8002ef3 100644 --- a/web-infrastructure/src/main/java/com/zcloud/edu/persistence/dataobject/study/ClassCurriculumChapterDO.java +++ b/web-infrastructure/src/main/java/com/zcloud/edu/persistence/dataobject/study/ClassCurriculumChapterDO.java @@ -23,7 +23,7 @@ import java.math.BigDecimal; public class ClassCurriculumChapterDO extends BaseDO { //业务主键id @ApiModelProperty(value = "业务主键id") - private String curriculumChapterId; + private String classCurriculumChapterId; //班级id @ApiModelProperty(value = "班级id") private String classId; diff --git a/web-infrastructure/src/main/java/com/zcloud/edu/persistence/repository/impl/resource/CurriculumChapterRepositoryImpl.java b/web-infrastructure/src/main/java/com/zcloud/edu/persistence/repository/impl/resource/CurriculumChapterRepositoryImpl.java index 7476510..98b62b3 100644 --- a/web-infrastructure/src/main/java/com/zcloud/edu/persistence/repository/impl/resource/CurriculumChapterRepositoryImpl.java +++ b/web-infrastructure/src/main/java/com/zcloud/edu/persistence/repository/impl/resource/CurriculumChapterRepositoryImpl.java @@ -57,5 +57,14 @@ public class CurriculumChapterRepositoryImpl extends BaseRepositoryImpl listByCurriculumIds(List curriculumIds) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.in("curriculum_id", curriculumIds); + queryWrapper.eq("delete_enum", "FALSE"); + + return curriculumChapterMapper.selectList(queryWrapper); + } } diff --git a/web-infrastructure/src/main/java/com/zcloud/edu/persistence/repository/impl/resource/CurriculumRepositoryImpl.java b/web-infrastructure/src/main/java/com/zcloud/edu/persistence/repository/impl/resource/CurriculumRepositoryImpl.java index 3e17fbb..ad6e54c 100644 --- a/web-infrastructure/src/main/java/com/zcloud/edu/persistence/repository/impl/resource/CurriculumRepositoryImpl.java +++ b/web-infrastructure/src/main/java/com/zcloud/edu/persistence/repository/impl/resource/CurriculumRepositoryImpl.java @@ -56,5 +56,14 @@ public class CurriculumRepositoryImpl extends BaseRepositoryImpl listByCurriculumIds(List curriculumIds) { + + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.in("curriculum_id", curriculumIds); + queryWrapper.eq("delete_enum", "FALSE"); + return curriculumMapper.selectList(queryWrapper); + } } diff --git a/web-infrastructure/src/main/java/com/zcloud/edu/persistence/repository/resource/CurriculumChapterRepository.java b/web-infrastructure/src/main/java/com/zcloud/edu/persistence/repository/resource/CurriculumChapterRepository.java index 913e4ab..1310aef 100644 --- a/web-infrastructure/src/main/java/com/zcloud/edu/persistence/repository/resource/CurriculumChapterRepository.java +++ b/web-infrastructure/src/main/java/com/zcloud/edu/persistence/repository/resource/CurriculumChapterRepository.java @@ -21,5 +21,7 @@ public interface CurriculumChapterRepository extends BaseRepository getListByCurriculumId(String curriculumId); void deleteByCurriculumId(String curriculumId); + + List listByCurriculumIds(List curriculumIds); } diff --git a/web-infrastructure/src/main/java/com/zcloud/edu/persistence/repository/resource/CurriculumRepository.java b/web-infrastructure/src/main/java/com/zcloud/edu/persistence/repository/resource/CurriculumRepository.java index 901fa1c..74e0e15 100644 --- a/web-infrastructure/src/main/java/com/zcloud/edu/persistence/repository/resource/CurriculumRepository.java +++ b/web-infrastructure/src/main/java/com/zcloud/edu/persistence/repository/resource/CurriculumRepository.java @@ -22,5 +22,7 @@ public interface CurriculumRepository extends BaseRepository { boolean updateState(@NotNull(message = "id不能为空") List id, @NotNull(message = "课程状态不能为空") Integer sellFlag); CurriculumDO getInfoById(Long id); + + List listByCurriculumIds(List curriculumIds); }