实现班级内课程查询功能
parent
1e03229ac4
commit
7290042ed8
|
|
@ -9,10 +9,7 @@ import com.jjb.saas.framework.auth.model.SSOUser;
|
|||
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 com.zcloud.edu.dto.study.*;
|
||||
import io.swagger.annotations.Api;
|
||||
import io.swagger.annotations.ApiOperation;
|
||||
import lombok.AllArgsConstructor;
|
||||
|
|
@ -56,8 +53,8 @@ public class ClassCurriculumController {
|
|||
|
||||
@ApiOperation("所有数据")
|
||||
@GetMapping("/listAll")
|
||||
public MultiResponse<ClassCurriculumCO> listAll() {
|
||||
return MultiResponse.of(new ArrayList<ClassCurriculumCO>());
|
||||
public MultiResponse<ClassCurriculumCO> listAll(@RequestBody ClassCurriculumQry qry) {
|
||||
return classCurriculumService.listAll(qry);
|
||||
}
|
||||
|
||||
@ApiOperation("详情")
|
||||
|
|
|
|||
|
|
@ -1,5 +1,6 @@
|
|||
package com.zcloud.edu.command.query.study;
|
||||
|
||||
import com.alibaba.cola.dto.MultiResponse;
|
||||
import com.alibaba.cola.dto.PageResponse;
|
||||
import com.alibaba.cola.dto.SingleResponse;
|
||||
import com.zcloud.edu.command.convertor.study.ClassCurriculumChapterCoConvertor;
|
||||
|
|
@ -8,6 +9,7 @@ import com.zcloud.edu.domain.gateway.study.ClassCurriculumChapterGateway;
|
|||
import com.zcloud.edu.dto.clientobject.study.ClassCurriculumCO;
|
||||
import com.zcloud.edu.dto.clientobject.study.ClassCurriculumChapterCO;
|
||||
import com.zcloud.edu.dto.study.ClassCurriculumPageQry;
|
||||
import com.zcloud.edu.dto.study.ClassCurriculumQry;
|
||||
import com.zcloud.edu.persistence.dataobject.study.ClassCurriculumChapterDO;
|
||||
import com.zcloud.edu.persistence.dataobject.study.ClassCurriculumDO;
|
||||
import com.zcloud.edu.persistence.repository.study.ClassCurriculumChapterRepository;
|
||||
|
|
@ -21,6 +23,7 @@ import org.springframework.util.ObjectUtils;
|
|||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
|
||||
/**
|
||||
|
|
@ -62,10 +65,26 @@ public class ClassCurriculumQueryExe {
|
|||
BeanUtils.copyProperties(classCurriculumDO, classCurriculumCO);
|
||||
List<ClassCurriculumChapterCO> classCurriculumChapterCOList = classCurriculumChapterCoConvertor.converDOsToCOs(classCurriculumChapterDOList);
|
||||
long videoCount = classCurriculumChapterCOList.stream().filter(bean -> !ObjectUtils.isEmpty(bean.getVideoCoursewareId())).count();
|
||||
Tools.buildEntityTree(classCurriculumChapterCOList, "curriculumChapterId", "parentId", "childCurriculumChapterCOList", "0");
|
||||
Tools.buildEntityTree(classCurriculumChapterCOList, "classCurriculumChapterId", "parentId", "childCurriculumChapterCOList", "0");
|
||||
classCurriculumCO.setCurriculumChapterCOList(classCurriculumChapterCOList);
|
||||
classCurriculumCO.setVideoCount(videoCount);
|
||||
return SingleResponse.of(classCurriculumCO);
|
||||
}
|
||||
|
||||
public MultiResponse<ClassCurriculumCO> executeListAll(ClassCurriculumQry qry) {
|
||||
Map<String, Object> params = PageQueryHelper.toHashMap(qry);
|
||||
List<ClassCurriculumDO> curList = classCurriculumRepository.listAll(params);
|
||||
List<String> classCurriculumIds = curList.stream().map(ClassCurriculumDO::getClassCurriculumId).collect(Collectors.toList());
|
||||
List<ClassCurriculumChapterDO> chapterList = classCurriculumChapterRepository.listByClassCurriculumIds(classCurriculumIds);
|
||||
List<ClassCurriculumChapterCO> chapterCoList = classCurriculumChapterCoConvertor.converDOsToCOs(chapterList);
|
||||
Tools.buildEntityTree(chapterCoList, "classCurriculumChapterId", "parentId", "childCurriculumChapterCOList", "0");
|
||||
|
||||
Map<String, List<ClassCurriculumChapterCO>> chapterMap = chapterCoList.stream().collect(Collectors.groupingBy(ClassCurriculumChapterCO::getClassCurriculumId));
|
||||
List<ClassCurriculumCO> curriculumList = classCurriculumCoConvertor.converDOsToCOs(curList);
|
||||
curriculumList.stream().forEach(bean -> {
|
||||
bean.setCurriculumChapterCOList(chapterMap.get(bean.getClassCurriculumId()));
|
||||
});
|
||||
return MultiResponse.of(curriculumList);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -1,5 +1,6 @@
|
|||
package com.zcloud.edu.service.study;
|
||||
|
||||
import com.alibaba.cola.dto.MultiResponse;
|
||||
import com.alibaba.cola.dto.PageResponse;
|
||||
import com.alibaba.cola.dto.Response;
|
||||
import com.alibaba.cola.dto.SingleResponse;
|
||||
|
|
@ -9,10 +10,7 @@ import com.zcloud.edu.command.study.ClassCurriculumAddExe;
|
|||
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 com.zcloud.edu.dto.study.*;
|
||||
import lombok.AllArgsConstructor;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
|
|
@ -70,5 +68,10 @@ public class ClassCurriculumServiceImpl implements ClassCurriculumServiceI {
|
|||
classCurriculumAddExe.executeBatchAdd(cmd);
|
||||
return Response.buildSuccess();
|
||||
}
|
||||
|
||||
@Override
|
||||
public MultiResponse<ClassCurriculumCO> listAll(ClassCurriculumQry qry) {
|
||||
return classCurriculumQueryExe.executeListAll(qry);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -1,14 +1,13 @@
|
|||
package com.zcloud.edu.api.study;
|
||||
|
||||
import com.alibaba.cola.dto.MultiResponse;
|
||||
import com.alibaba.cola.dto.PageResponse;
|
||||
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;
|
||||
import com.zcloud.edu.dto.study.*;
|
||||
|
||||
import java.nio.channels.MulticastChannel;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
|
|
@ -31,5 +30,9 @@ public interface ClassCurriculumServiceI {
|
|||
SingleResponse<ClassCurriculumCO> getInfoById(Long id);
|
||||
|
||||
Response batchAdd(ClassCurriculumBatchAddCmd cmd);
|
||||
|
||||
MultiResponse<ClassCurriculumCO> listAll(ClassCurriculumQry qry);
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -44,6 +44,9 @@ public class ClassCurriculumCO extends ClientObject {
|
|||
@ApiModelProperty(value = "章节目录")
|
||||
private List<ClassCurriculumChapterCO> curriculumChapterCOList;
|
||||
|
||||
//目录级别 1-一级目录 2-二级目录
|
||||
@ApiModelProperty(value = "目录级别 1-一级目录 2-二级目录")
|
||||
private Integer catalogueLevel;
|
||||
|
||||
@ApiModelProperty(value = "所属单位id")
|
||||
@TableField(exist = false)
|
||||
|
|
|
|||
|
|
@ -43,6 +43,11 @@ public class ClassCurriculumAddCmd extends Command {
|
|||
@NotNull(message = "课程总时长不能为空")
|
||||
private double videoTotalTime;
|
||||
|
||||
//目录级别 1-一级目录 2-二级目录
|
||||
@ApiModelProperty(value = "目录级别 1-一级目录 2-二级目录")
|
||||
@NotNull(message = "课程总时长不能为空")
|
||||
private Integer catalogueLevel;
|
||||
|
||||
|
||||
@ApiModelProperty(value = "课程目录", name = "curriculumChapterAddCmdList", required = true)
|
||||
@NotNull(message = "课程目录")
|
||||
|
|
|
|||
|
|
@ -0,0 +1,29 @@
|
|||
package com.zcloud.edu.dto.study;
|
||||
|
||||
import com.alibaba.cola.dto.PageQuery;
|
||||
import lombok.Data;
|
||||
|
||||
|
||||
/**
|
||||
* web-client
|
||||
*
|
||||
* @Author zhangyue
|
||||
* @Date 2026-01-16 09:54:33
|
||||
*/
|
||||
@Data
|
||||
public class ClassCurriculumQry {
|
||||
|
||||
/**
|
||||
* 查询条件操作前缀,支持以下几种数据库查询操作:
|
||||
* - `like`: 模糊匹配查询,对应SQL的LIKE操作符
|
||||
* - `eq`: 等值查询,对应SQL的=操作符
|
||||
* - `gt`: 大于比较查询
|
||||
* - `lt`: 小于比较查询
|
||||
* - `ge`: 大于等于比较查询
|
||||
* - `le`: 小于等于比较查询
|
||||
* - `ne`: 不等比较查询,对应SQL的!=操作符
|
||||
*/
|
||||
private String likeClassCurriculumId;
|
||||
private String eqClassId;
|
||||
}
|
||||
|
||||
|
|
@ -3,8 +3,10 @@ package com.zcloud.edu.domain.model.study;
|
|||
import com.google.type.Decimal;
|
||||
import com.jjb.saas.framework.domain.model.BaseE;
|
||||
import com.zcloud.gbscommon.utils.Tools;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
|
||||
import javax.validation.constraints.NotNull;
|
||||
import java.math.BigDecimal;
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.ArrayList;
|
||||
|
|
@ -42,7 +44,7 @@ public class ClassCurriculumE extends BaseE {
|
|||
|
||||
private List<ClassCurriculumChapterE> curriculumChapterAddCmdList;
|
||||
|
||||
|
||||
private Integer catalogueLevel;
|
||||
//租户id
|
||||
private Long tenantId;
|
||||
//单位id
|
||||
|
|
|
|||
|
|
@ -9,6 +9,7 @@ import lombok.Data;
|
|||
import lombok.EqualsAndHashCode;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
import javax.validation.constraints.NotNull;
|
||||
import java.math.BigDecimal;
|
||||
import java.util.List;
|
||||
|
||||
|
|
@ -39,6 +40,9 @@ public class ClassCurriculumDO extends BaseDO {
|
|||
@ApiModelProperty(value = "课程总时长")
|
||||
private BigDecimal videoTotalTime;
|
||||
|
||||
//目录级别 1-一级目录 2-二级目录
|
||||
@ApiModelProperty(value = "目录级别 1-一级目录 2-二级目录")
|
||||
private Integer catalogueLevel;
|
||||
@ApiModelProperty(value = "所属单位id")
|
||||
@TableField(exist = false)
|
||||
private long corpinfoId;
|
||||
|
|
@ -63,5 +67,6 @@ public class ClassCurriculumDO extends BaseDO {
|
|||
@TableField(exist = false)
|
||||
private String coverPath;
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -16,5 +16,7 @@ import java.util.List;
|
|||
public interface ClassCurriculumChapterMapper extends BaseMapper<ClassCurriculumChapterDO> {
|
||||
List<ClassCurriculumChapterDO> listByClassCurriculumId(String classCurriculumId);
|
||||
|
||||
List<ClassCurriculumChapterDO> listByClassCurriculumIds(List<String> classCurriculumIds);
|
||||
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -61,5 +61,14 @@ public class ClassCurriculumChapterRepositoryImpl extends BaseRepositoryImpl<Cla
|
|||
updateWrapper.set("delete_enum", "TRUE");
|
||||
return classCurriculumChapterMapper.delete(updateWrapper);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<ClassCurriculumChapterDO> listByClassCurriculumIds(List<String> classCurriculumIds) {
|
||||
QueryWrapper<ClassCurriculumChapterDO> queryWrapper = new QueryWrapper<>();
|
||||
queryWrapper.in("class_curriculum_id", classCurriculumIds);
|
||||
queryWrapper.eq("delete_enum", "FALSE");
|
||||
return classCurriculumChapterMapper.selectList(queryWrapper);
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -14,6 +14,7 @@ import com.zcloud.gbscommon.utils.Query;
|
|||
import lombok.RequiredArgsConstructor;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
|
|
@ -66,5 +67,14 @@ public class ClassCurriculumRepositoryImpl extends BaseRepositoryImpl<ClassCurri
|
|||
updateWrapper.eq("delete_enum", "FALSE");
|
||||
return classCurriculumMapper.delete(updateWrapper);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<ClassCurriculumDO> listAll(Map<String, Object> params) {
|
||||
QueryWrapper<ClassCurriculumDO> queryWrapper = new QueryWrapper<>();
|
||||
queryWrapper = PageQueryHelper.createPageQueryWrapper(queryWrapper, params);
|
||||
queryWrapper.orderByDesc("create_time");
|
||||
queryWrapper.eq("delete_enum", "FALSE");
|
||||
return classCurriculumMapper.selectList(queryWrapper);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -21,5 +21,7 @@ public interface ClassCurriculumChapterRepository extends BaseRepository<ClassCu
|
|||
Integer deleteByCurriculumId(String classCurriculumId);
|
||||
|
||||
Integer deleteByClassId(String classId);
|
||||
|
||||
List<ClassCurriculumChapterDO> listByClassCurriculumIds(List<String> classCurriculumIds);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -4,6 +4,7 @@ import com.alibaba.cola.dto.PageResponse;
|
|||
import com.jjb.saas.framework.repository.repo.BaseRepository;
|
||||
import com.zcloud.edu.persistence.dataobject.study.ClassCurriculumDO;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
|
|
@ -22,5 +23,7 @@ public interface ClassCurriculumRepository extends BaseRepository<ClassCurriculu
|
|||
ClassCurriculumDO getInfoById(long id);
|
||||
|
||||
Integer deleteByClassId(String classId);
|
||||
|
||||
List<ClassCurriculumDO> listAll(Map<String, Object> params);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -29,5 +29,36 @@
|
|||
c.parent_id,
|
||||
c.sort
|
||||
</select>
|
||||
|
||||
<select id="listByClassCurriculumIds" resultType="com.zcloud.edu.persistence.dataobject.study.ClassCurriculumChapterDO">
|
||||
SELECT
|
||||
c.id,
|
||||
c.curriculum_chapter_id,
|
||||
c.class_id,
|
||||
c.corpinfo_id,
|
||||
c.class_curriculum_id,
|
||||
c.name,
|
||||
c.video_courseware_id,
|
||||
c.sort,
|
||||
c.parent_id,
|
||||
v.courseware_name,
|
||||
v.video_files,
|
||||
v.courseware_introduce,
|
||||
v.video_time,
|
||||
v.screenshot_url
|
||||
FROM
|
||||
class_curriculum_chapter c
|
||||
left join video_courseware v on v.video_courseware_id = c.video_courseware_id
|
||||
<where>
|
||||
AND c.delete_enum = 'FALSE'
|
||||
AND c.class_curriculum_id in
|
||||
<foreach item="item" index="index" collection="classCurriculumIds" open="(" separator="," close=")">
|
||||
#{item}
|
||||
</foreach>
|
||||
</where>
|
||||
ORDER BY
|
||||
c.parent_id,
|
||||
c.sort
|
||||
</select>
|
||||
</mapper>
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue