添加班级课程批量新增功能

dev
zhangyue 2026-01-24 14:37:07 +08:00
parent c0c7085f0c
commit e3a1821e32
13 changed files with 126 additions and 6 deletions

View File

@ -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<ClassCurriculumCO> page(@RequestBody ClassCurriculumPageQry qry) {

View File

@ -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<ClassCurriculumAddCmd> cmdList) {
@ -75,5 +82,21 @@ public class ClassCurriculumAddExe {
}
return true;
}
@Transactional(rollbackFor = Exception.class)
public void executeBatchAdd(ClassCurriculumBatchAddCmd cmd) {
List<CurriculumDO> curList = curriculumRepository.listByCurriculumIds(cmd.getCurriculumIds());
List<CurriculumChapterDO> chapterList = curriculumChapterRepository.listByCurriculumIds(cmd.getCurriculumIds());
List<ClassCurriculumE> curEList = BeanUtil.copyToList(curList, ClassCurriculumE.class);
List<ClassCurriculumChapterE> 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);
}
}
}

View File

@ -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<ClassCurriculumCO> getInfoById(Long id) {
return classCurriculumQueryExe.executeGetInfoById(id);
}
@Override
public Response batchAdd(ClassCurriculumBatchAddCmd cmd) {
classCurriculumAddExe.executeBatchAdd(cmd);
return Response.buildSuccess();
}
}

View File

@ -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<ClassCurriculumCO> getInfoById(Long id);
Response batchAdd(ClassCurriculumBatchAddCmd cmd);
}

View File

@ -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;

View File

@ -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<String> curriculumIds;
@ApiModelProperty(value = "班级id", name = "classId", required = true)
@NotEmpty(message = "班级id不能为空")
private String classId;
}

View File

@ -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<ClassCurriculumChapterE> curriculumChapterAddCmdList;
//课程id(批量新增使用)
private String curriculumId;
//删除标识true false
private String deleteEnum;
//备注

View File

@ -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<ClassCurriculumE> curList, List<ClassCurriculumChapterE> chapterList, String classId){
Map<String, String> map = new HashMap<String, String>();
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());
});
}
}

View File

@ -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;

View File

@ -57,5 +57,14 @@ public class CurriculumChapterRepositoryImpl extends BaseRepositoryImpl<Curricul
queryWrapper.eq("curriculum_id", curriculumId);
curriculumChapterMapper.delete(queryWrapper);
}
@Override
public List<CurriculumChapterDO> listByCurriculumIds(List<String> curriculumIds) {
QueryWrapper<CurriculumChapterDO> queryWrapper = new QueryWrapper<>();
queryWrapper.in("curriculum_id", curriculumIds);
queryWrapper.eq("delete_enum", "FALSE");
return curriculumChapterMapper.selectList(queryWrapper);
}
}

View File

@ -56,5 +56,14 @@ public class CurriculumRepositoryImpl extends BaseRepositoryImpl<CurriculumMappe
public CurriculumDO getInfoById(Long id) {
return curriculumMapper.getInfoById(id);
}
@Override
public List<CurriculumDO> listByCurriculumIds(List<String> curriculumIds) {
QueryWrapper<CurriculumDO> queryWrapper = new QueryWrapper<>();
queryWrapper.in("curriculum_id", curriculumIds);
queryWrapper.eq("delete_enum", "FALSE");
return curriculumMapper.selectList(queryWrapper);
}
}

View File

@ -21,5 +21,7 @@ public interface CurriculumChapterRepository extends BaseRepository<CurriculumCh
List<CurriculumChapterDO> getListByCurriculumId(String curriculumId);
void deleteByCurriculumId(String curriculumId);
List<CurriculumChapterDO> listByCurriculumIds(List<String> curriculumIds);
}

View File

@ -22,5 +22,7 @@ public interface CurriculumRepository extends BaseRepository<CurriculumDO> {
boolean updateState(@NotNull(message = "id不能为空") List<Long> id, @NotNull(message = "课程状态不能为空") Integer sellFlag);
CurriculumDO getInfoById(Long id);
List<CurriculumDO> listByCurriculumIds(List<String> curriculumIds);
}