添加班级课程批量新增功能
parent
c0c7085f0c
commit
e3a1821e32
|
|
@ -10,6 +10,7 @@ import com.jjb.saas.framework.auth.utils.AuthContext;
|
||||||
import com.zcloud.edu.api.study.ClassCurriculumServiceI;
|
import com.zcloud.edu.api.study.ClassCurriculumServiceI;
|
||||||
import com.zcloud.edu.dto.clientobject.study.ClassCurriculumCO;
|
import com.zcloud.edu.dto.clientobject.study.ClassCurriculumCO;
|
||||||
import com.zcloud.edu.dto.study.ClassCurriculumAddCmd;
|
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.ClassCurriculumPageQry;
|
||||||
import com.zcloud.edu.dto.study.ClassCurriculumUpdateCmd;
|
import com.zcloud.edu.dto.study.ClassCurriculumUpdateCmd;
|
||||||
import io.swagger.annotations.Api;
|
import io.swagger.annotations.Api;
|
||||||
|
|
@ -41,6 +42,12 @@ public class ClassCurriculumController {
|
||||||
return classCurriculumService.add(cmdList);
|
return classCurriculumService.add(cmdList);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ApiOperation("批量新增")
|
||||||
|
@PostMapping("/saveBatch")
|
||||||
|
public Response batchAdd(@Validated @RequestBody ClassCurriculumBatchAddCmd cmd) {
|
||||||
|
return classCurriculumService.batchAdd(cmd);
|
||||||
|
}
|
||||||
|
|
||||||
@ApiOperation("分页")
|
@ApiOperation("分页")
|
||||||
@PostMapping("/list")
|
@PostMapping("/list")
|
||||||
public PageResponse<ClassCurriculumCO> page(@RequestBody ClassCurriculumPageQry qry) {
|
public PageResponse<ClassCurriculumCO> page(@RequestBody ClassCurriculumPageQry qry) {
|
||||||
|
|
|
||||||
|
|
@ -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.ClassCurriculumChapterE;
|
||||||
import com.zcloud.edu.domain.model.study.ClassCurriculumE;
|
import com.zcloud.edu.domain.model.study.ClassCurriculumE;
|
||||||
import com.zcloud.edu.dto.study.ClassCurriculumAddCmd;
|
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.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 lombok.AllArgsConstructor;
|
||||||
import org.springframework.beans.BeanUtils;
|
import org.springframework.beans.BeanUtils;
|
||||||
import org.springframework.stereotype.Component;
|
import org.springframework.stereotype.Component;
|
||||||
|
|
@ -29,6 +34,8 @@ import java.util.List;
|
||||||
public class ClassCurriculumAddExe {
|
public class ClassCurriculumAddExe {
|
||||||
private final ClassCurriculumGateway classCurriculumGateway;
|
private final ClassCurriculumGateway classCurriculumGateway;
|
||||||
private final ClassCurriculumChapterGateway classCurriculumChapterGateway;
|
private final ClassCurriculumChapterGateway classCurriculumChapterGateway;
|
||||||
|
private final CurriculumRepository curriculumRepository;
|
||||||
|
private final CurriculumChapterRepository curriculumChapterRepository;
|
||||||
|
|
||||||
@Transactional(rollbackFor = Exception.class)
|
@Transactional(rollbackFor = Exception.class)
|
||||||
public boolean execute(List<ClassCurriculumAddCmd> cmdList) {
|
public boolean execute(List<ClassCurriculumAddCmd> cmdList) {
|
||||||
|
|
@ -75,5 +82,21 @@ public class ClassCurriculumAddExe {
|
||||||
}
|
}
|
||||||
return true;
|
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);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -10,6 +10,7 @@ import com.zcloud.edu.command.study.ClassCurriculumRemoveExe;
|
||||||
import com.zcloud.edu.command.study.ClassCurriculumUpdateExe;
|
import com.zcloud.edu.command.study.ClassCurriculumUpdateExe;
|
||||||
import com.zcloud.edu.dto.clientobject.study.ClassCurriculumCO;
|
import com.zcloud.edu.dto.clientobject.study.ClassCurriculumCO;
|
||||||
import com.zcloud.edu.dto.study.ClassCurriculumAddCmd;
|
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.ClassCurriculumPageQry;
|
||||||
import com.zcloud.edu.dto.study.ClassCurriculumUpdateCmd;
|
import com.zcloud.edu.dto.study.ClassCurriculumUpdateCmd;
|
||||||
import lombok.AllArgsConstructor;
|
import lombok.AllArgsConstructor;
|
||||||
|
|
@ -63,5 +64,11 @@ public class ClassCurriculumServiceImpl implements ClassCurriculumServiceI {
|
||||||
public SingleResponse<ClassCurriculumCO> getInfoById(Long id) {
|
public SingleResponse<ClassCurriculumCO> getInfoById(Long id) {
|
||||||
return classCurriculumQueryExe.executeGetInfoById(id);
|
return classCurriculumQueryExe.executeGetInfoById(id);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Response batchAdd(ClassCurriculumBatchAddCmd cmd) {
|
||||||
|
classCurriculumAddExe.executeBatchAdd(cmd);
|
||||||
|
return Response.buildSuccess();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -5,6 +5,7 @@ import com.alibaba.cola.dto.Response;
|
||||||
import com.alibaba.cola.dto.SingleResponse;
|
import com.alibaba.cola.dto.SingleResponse;
|
||||||
import com.zcloud.edu.dto.clientobject.study.ClassCurriculumCO;
|
import com.zcloud.edu.dto.clientobject.study.ClassCurriculumCO;
|
||||||
import com.zcloud.edu.dto.study.ClassCurriculumAddCmd;
|
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.ClassCurriculumPageQry;
|
||||||
import com.zcloud.edu.dto.study.ClassCurriculumUpdateCmd;
|
import com.zcloud.edu.dto.study.ClassCurriculumUpdateCmd;
|
||||||
|
|
||||||
|
|
@ -28,5 +29,7 @@ public interface ClassCurriculumServiceI {
|
||||||
void removeBatch(Long[] ids);
|
void removeBatch(Long[] ids);
|
||||||
|
|
||||||
SingleResponse<ClassCurriculumCO> getInfoById(Long id);
|
SingleResponse<ClassCurriculumCO> getInfoById(Long id);
|
||||||
|
|
||||||
|
Response batchAdd(ClassCurriculumBatchAddCmd cmd);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -23,7 +23,7 @@ public class ClassCurriculumChapterCO extends ClientObject {
|
||||||
private Long id;
|
private Long id;
|
||||||
//业务主键id
|
//业务主键id
|
||||||
@ApiModelProperty(value = "业务主键id")
|
@ApiModelProperty(value = "业务主键id")
|
||||||
private String curriculumChapterId;
|
private String classCurriculumChapterId;
|
||||||
//班级id
|
//班级id
|
||||||
@ApiModelProperty(value = "班级id")
|
@ApiModelProperty(value = "班级id")
|
||||||
private String classId;
|
private String classId;
|
||||||
|
|
|
||||||
|
|
@ -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;
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
@ -17,7 +17,7 @@ public class ClassCurriculumChapterE extends BaseE {
|
||||||
//主键
|
//主键
|
||||||
private Long id;
|
private Long id;
|
||||||
//业务主键id
|
//业务主键id
|
||||||
private String curriculumChapterId;
|
private String classCurriculumChapterId;
|
||||||
//班级id
|
//班级id
|
||||||
private String classId;
|
private String classId;
|
||||||
//企业ID
|
//企业ID
|
||||||
|
|
@ -34,6 +34,11 @@ public class ClassCurriculumChapterE extends BaseE {
|
||||||
private String parentId;
|
private String parentId;
|
||||||
//子集
|
//子集
|
||||||
private List<ClassCurriculumChapterE> curriculumChapterAddCmdList;
|
private List<ClassCurriculumChapterE> curriculumChapterAddCmdList;
|
||||||
|
|
||||||
|
|
||||||
|
//课程id(批量新增使用)
|
||||||
|
private String curriculumId;
|
||||||
|
|
||||||
//删除标识true false
|
//删除标识true false
|
||||||
private String deleteEnum;
|
private String deleteEnum;
|
||||||
//备注
|
//备注
|
||||||
|
|
|
||||||
|
|
@ -8,7 +8,9 @@ import lombok.Data;
|
||||||
import java.math.BigDecimal;
|
import java.math.BigDecimal;
|
||||||
import java.time.LocalDateTime;
|
import java.time.LocalDateTime;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
import java.util.HashMap;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* web-domain
|
* web-domain
|
||||||
|
|
@ -63,16 +65,16 @@ public class ClassCurriculumE extends BaseE {
|
||||||
for (ClassCurriculumE cur : curList){
|
for (ClassCurriculumE cur : curList){
|
||||||
cur.setClassCurriculumId(Tools.get32UUID());
|
cur.setClassCurriculumId(Tools.get32UUID());
|
||||||
for (ClassCurriculumChapterE chapter : cur.getCurriculumChapterAddCmdList()){
|
for (ClassCurriculumChapterE chapter : cur.getCurriculumChapterAddCmdList()){
|
||||||
chapter.setCurriculumChapterId(Tools.get32UUID());
|
chapter.setClassCurriculumChapterId(Tools.get32UUID());
|
||||||
chapter.setClassId(cur.getClassId());
|
chapter.setClassId(cur.getClassId());
|
||||||
chapter.setClassCurriculumId(cur.getClassCurriculumId());
|
chapter.setClassCurriculumId(cur.getClassCurriculumId());
|
||||||
chapter.setParentId("0");
|
chapter.setParentId("0");
|
||||||
if (chapter.getCurriculumChapterAddCmdList() != null && chapter.getCurriculumChapterAddCmdList().size() > 0){
|
if (chapter.getCurriculumChapterAddCmdList() != null && chapter.getCurriculumChapterAddCmdList().size() > 0){
|
||||||
for (ClassCurriculumChapterE childChapter : chapter.getCurriculumChapterAddCmdList()){
|
for (ClassCurriculumChapterE childChapter : chapter.getCurriculumChapterAddCmdList()){
|
||||||
childChapter.setCurriculumChapterId(Tools.get32UUID());
|
childChapter.setClassCurriculumChapterId(Tools.get32UUID());
|
||||||
childChapter.setClassId(cur.getClassId());
|
childChapter.setClassId(cur.getClassId());
|
||||||
childChapter.setClassCurriculumId(cur.getClassCurriculumId());
|
childChapter.setClassCurriculumId(cur.getClassCurriculumId());
|
||||||
childChapter.setParentId(chapter.getCurriculumChapterId());
|
childChapter.setParentId(chapter.getClassCurriculumChapterId());
|
||||||
}
|
}
|
||||||
classCurriculumChapterEList.addAll(chapter.getCurriculumChapterAddCmdList());
|
classCurriculumChapterEList.addAll(chapter.getCurriculumChapterAddCmdList());
|
||||||
}
|
}
|
||||||
|
|
@ -81,5 +83,20 @@ public class ClassCurriculumE extends BaseE {
|
||||||
}
|
}
|
||||||
return classCurriculumChapterEList;
|
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());
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -23,7 +23,7 @@ import java.math.BigDecimal;
|
||||||
public class ClassCurriculumChapterDO extends BaseDO {
|
public class ClassCurriculumChapterDO extends BaseDO {
|
||||||
//业务主键id
|
//业务主键id
|
||||||
@ApiModelProperty(value = "业务主键id")
|
@ApiModelProperty(value = "业务主键id")
|
||||||
private String curriculumChapterId;
|
private String classCurriculumChapterId;
|
||||||
//班级id
|
//班级id
|
||||||
@ApiModelProperty(value = "班级id")
|
@ApiModelProperty(value = "班级id")
|
||||||
private String classId;
|
private String classId;
|
||||||
|
|
|
||||||
|
|
@ -57,5 +57,14 @@ public class CurriculumChapterRepositoryImpl extends BaseRepositoryImpl<Curricul
|
||||||
queryWrapper.eq("curriculum_id", curriculumId);
|
queryWrapper.eq("curriculum_id", curriculumId);
|
||||||
curriculumChapterMapper.delete(queryWrapper);
|
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);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -56,5 +56,14 @@ public class CurriculumRepositoryImpl extends BaseRepositoryImpl<CurriculumMappe
|
||||||
public CurriculumDO getInfoById(Long id) {
|
public CurriculumDO getInfoById(Long id) {
|
||||||
return curriculumMapper.getInfoById(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);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -21,5 +21,7 @@ public interface CurriculumChapterRepository extends BaseRepository<CurriculumCh
|
||||||
List<CurriculumChapterDO> getListByCurriculumId(String curriculumId);
|
List<CurriculumChapterDO> getListByCurriculumId(String curriculumId);
|
||||||
|
|
||||||
void deleteByCurriculumId(String curriculumId);
|
void deleteByCurriculumId(String curriculumId);
|
||||||
|
|
||||||
|
List<CurriculumChapterDO> listByCurriculumIds(List<String> curriculumIds);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -22,5 +22,7 @@ public interface CurriculumRepository extends BaseRepository<CurriculumDO> {
|
||||||
boolean updateState(@NotNull(message = "id不能为空") List<Long> id, @NotNull(message = "课程状态不能为空") Integer sellFlag);
|
boolean updateState(@NotNull(message = "id不能为空") List<Long> id, @NotNull(message = "课程状态不能为空") Integer sellFlag);
|
||||||
|
|
||||||
CurriculumDO getInfoById(Long id);
|
CurriculumDO getInfoById(Long id);
|
||||||
|
|
||||||
|
List<CurriculumDO> listByCurriculumIds(List<String> curriculumIds);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue