2课程分类管理模块
二课程分类管理模块
1具体功能
-
腾讯云存储服务
-
分类的树形展示(一级,二级分类)(1课程分类列表展示)
-
通过excel的读写来管理课程分类(2课程分类导入;3课程分类导出)
2具体知识点
2.1腾讯云存储服务
-
开通COS服务(阿里云就是oos,其他几乎一样)
-
创建Bucket
-
创建API秘钥
-
引入依赖
-
配置application.properties
-
#不同的服务器,地址不同 tencent.cos.file.region=ap-beijing tencent.cos.file.secretid=你的id tencent.cos.file.secretkey=你的key #bucket可以在控制台创建,也可以使用java代码创建 tencent.cos.file.bucketname=你的bucketName
-
-
使用官方api
2.2数据库相关字端
-
subject表
-
id:课程Id
-
title:课程名字
-
parent_id:课程父id,如果是一级分类就为0,二级分类就是父一级分类的id
-
-
course表
- id
- teacher_id
- subject_id:所属二级分类
- subject_parent_id:所属一级分类
-
course_description
- id
- course_id:和上面一一对应
- decsription:类型为text
2.3EasyExcel
-
引入相关依赖
-
实体类(设置表头)
-
@Data public class DemoData { //设置excel表头名称 //index=0表示是第一列 @ExcelProperty(value = "学生编号",index = 0) private Integer sno; @ExcelProperty(value = "学生姓名",index = 1) private String sname; }
-
-
写操作
-
public class TestWrite { public static void main(String[] args) { //设置文件名称和路径 String fileName = "C:\\fao\\programXiangMu\\txunguigu\\qita\\test.xlsx"; //调用方法 EasyExcel.write(fileName,User.class) .sheet("写操作") .doWrite(data()); } //循环设置要添加的数据,最终封装到list集合中 private static List<User> data() { List<User> list = new ArrayList<User>(); for (int i = 0; i < 10; i++) { User data = new User(); data.setId(i); data.setName("lucy"+i); list.add(data); } return list; } }
-
-
读操作
-
读比写多一个监听器
-
public class ExcelListener extends AnalysisEventListener<User> { //一行一行读取excel内容,把每行内容封装到user对象 // 从excel第二行开始读取 @Override public void invoke(User user, AnalysisContext analysisContext) { System.out.println(user); } //读取表头内容 @Override public void invokeHeadMap(Map<Integer, String> headMap, AnalysisContext context) { System.out.println("表头:"+headMap); } @Override public void doAfterAllAnalysed(AnalysisContext analysisContext) { } } -
public class TestRead { public static void main(String[] args) { //设置文件名称和路径 String fileName = "C:\\fao\\programXiangMu\\txunguigu\\qita\\test.xlsx"; //调用方法进行读操作 EasyExcel.read(fileName,User.class,new ExcelListener()).sheet().doRead(); } }
-
2.3课程分类功能一:课程分类列表
-
//课程分类列表 //懒加载,每次查询一层数据 //不用懒加载就是把所有二级目录全部查出来 @Override public List<Subject> selectSubjectList(Long id) { //SELECT * FROM SUBJECT WHERE parent_id=0 QueryWrapper<Subject> wrapper = new QueryWrapper<>(); wrapper.eq("parent_id",id); List<Subject> subjectList = baseMapper.selectList(wrapper); //subjectList遍历,得到每个subject对象,判断是否有下一层数据,有hasChildren=true for (Subject subject:subjectList) { //获取subject的id值 Long subjectId = subject.getId(); //查询 boolean isChild = this.isChildren(subjectId); //封装到对象里面 subject.setHasChildren(isChild); } return subjectList; } //判断是否有下一层数据 private boolean isChildren(Long subjectId) { QueryWrapper<Subject> wrapper = new QueryWrapper<>(); wrapper.eq("parent_id",subjectId); Integer count = baseMapper.selectCount(wrapper); // 1>0 true 0>0 false return count>0; } -
前端:使用使用树形组件
2.4课程分类功能二:课程分类导出/下载
-
//课程分类导出 @ApiOperation("课程分类导出") @GetMapping("exportData") public void exportData(HttpServletResponse response) { subjectService.exportData(response); } -
//课程分类导出 @Override public void exportData(HttpServletResponse response) { try { //1设置下载信息 response.setContentType("application/vnd.ms-excel"); response.setCharacterEncoding("utf-8"); // 这里URLEncoder.encode可以防止中文乱码 当然和easyexcel没有关系 String fileName = URLEncoder.encode("课程分类", "UTF-8"); response.setHeader("Content-disposition", "attachment;filename="+ fileName + ".xlsx"); //2查询课程分类表所有数据 List<Subject> subjectList = baseMapper.selectList(null); //3封装数据 //List<Subject> --- List<SubjectEeVo> List<SubjectEeVo> subjectEeVoList = new ArrayList<>(); for (Subject subject: subjectList) { SubjectEeVo subjectEeVo = new SubjectEeVo(); // subjectEeVo.setId(subject.getId()); // subjectEeVo.setParentId(subject.getParentId()); BeanUtils.copyProperties(subject,subjectEeVo); subjectEeVoList.add(subjectEeVo); } //4EasyExcel写操作 EasyExcel.write(response.getOutputStream(), SubjectEeVo.class) .sheet("课程分类") .doWrite(subjectEeVoList); }catch(Exception e) { throw new GgktException(20001,"导出失败"); } } -
前端
-
exportData() { window.open("http://localhost:8301/admin/vod/subject/exportData") }
2.5课程分类功能三:课程分类导入/上传
-
//课程分类导入 @ApiOperation("课程分类导入") @PostMapping("importData") public Result importData(MultipartFile file) { subjectService.importData(file); return Result.ok(null); } -
//课程分类导入 //就一步,直接调用EasyExcel读操作 @Override public void importData(MultipartFile file) { try { EasyExcel.read(file.getInputStream(), SubjectEeVo.class, subjectListener).sheet().doRead(); } catch (IOException e) { throw new GgktException(20001,"导入失败"); } }

浙公网安备 33010602011771号