章节模块
这里进行的是课程中的章节以及小节的处理
列表展示功能,剩下的功能可以自己添加
前言
在课程的基础上,我们有的思路跟课程是一样的。
提示:以下是本篇文章正文内容,下面案例可供参考
一、思路分析
在每一个课程中,有若干个的章节,每一个章节中又有多个的小节信息
因此我们在章节模块的时候呢,还是两级分类的方法进行处理
二、使用步骤
1.创建封装的Vo对象
VideoVo
package com.djr.eduservice.entity.vo;
import lombok.Data;
/**
* @Program: 小节封装返回类
* @Description
* @Author: 涛涛 * ^ *
* @Create: 2021-02-03 14:32
**/
@Data
public class VideoVo {
private String id;
private String title;
}
ChapterVo
package com.djr.eduservice.entity.vo;
import lombok.Data;
import java.util.List;
/**
* @Program: 章节返回封装类
* @Description
* @Author: 涛涛 * ^ *
* @Create: 2021-02-03 14:31
**/
@Data
public class ChapterVo {
private String id;
private String title;
private List<?> videoVos;
}
2.service层的方法的编写
EduChapterService
package com.djr.eduservice.service;
import com.djr.eduservice.entity.EduChapter;
import com.baomidou.mybatisplus.extension.service.IService;
import com.djr.eduservice.entity.vo.ChapterVo;
import java.util.List;
/**
* <p>
* 课程 服务类
* </p>
*
* @author taotao
* @since 2021-02-01
*/
public interface EduChapterService extends IService<EduChapter> {
List<ChapterVo> getTreeList(String courseId);
}
3.seivice Impl实现
package com.djr.eduservice.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.djr.eduservice.entity.EduChapter;
import com.djr.eduservice.entity.EduVideo;
import com.djr.eduservice.entity.vo.ChapterVo;
import com.djr.eduservice.entity.vo.VideoVo;
import com.djr.eduservice.mapper.EduChapterMapper;
import com.djr.eduservice.service.EduChapterService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.djr.eduservice.service.EduVideoService;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.List;
/**
* <p>
* 课程 服务实现类
* </p>
*
* @author taotao
* @since 2021-02-01
*/
@Service
public class EduChapterServiceImpl extends ServiceImpl<EduChapterMapper, EduChapter> implements EduChapterService {
@Autowired
EduVideoService eduVideoService;
/**
* 递归方式获取全部的章节信息
* 获取顶级父类
*
* @return 集合
*/
@Override
public List<ChapterVo> getTreeList(String courseId) {
//根据课程ID查询课程中的所有的章节
QueryWrapper<EduChapter> chapterwapper = new QueryWrapper<>();
chapterwapper.eq("course_id", courseId);
chapterwapper.orderByAsc("sort","title");
List<EduChapter> subjectList = baseMapper.selectList(chapterwapper);
//根据课程ID查询课程中的所有的小节
QueryWrapper<EduVideo> videoWapper = new QueryWrapper<>();
videoWapper.eq("course_id", courseId);
List<EduVideo> eduVideos = eduVideoService.list(videoWapper);
//遍历查询章节list集合进行封装
List<ChapterVo> chapterVos = new ArrayList<>();
for (EduChapter eduChapter : subjectList) {
ChapterVo chapterVo = new ChapterVo();
BeanUtils.copyProperties(eduChapter, chapterVo);
chapterVos.add(chapterVo);
//遍历查询小节list集合进行封装
List<VideoVo> videoVos = new ArrayList<>();
for (EduVideo eduVideo : eduVideos) {
if (eduVideo.getChapterId().equals(eduChapter.getId())) {
VideoVo vo = new VideoVo();
BeanUtils.copyProperties(eduVideo, vo);
videoVos.add(vo);
}
}
//将小节的集合放到章节集合属性
chapterVo.setVideoVos(videoVos);
}
return chapterVos;
}
}
4.controller的调用
package com.djr.eduservice.controller;
import com.djr.commonutils.R;
import com.djr.eduservice.entity.vo.ChapterVo;
import com.djr.eduservice.service.EduChapterService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.List;
/**
* <p>
* 课程 前端控制器--章节模块
* </p>
*
* @author taotao
* @since 2021-02-01
*/
@RestController
@RequestMapping("/eduservice/edu-chapter")
@Api(description = "章节模块")
@CrossOrigin
public class EduChapterController {
@Autowired
private EduChapterService eduChapterService;
@ApiOperation(value = "递归方式获取全部的章节信息")
@GetMapping("{courseId}")
public R getAllChapter(
@ApiParam(name = "courseId", value = "课程ID")
@PathVariable String courseId) {
List<ChapterVo> chapterVos = eduChapterService.getTreeList(courseId);
return R.ok()
.data("items", chapterVos)
.data("total", chapterVos.size());
}
}