业务处理

SubjectAdminController

@Api(description="课程分类管理")
@CrossOrigin //跨域
@RestController
@RequestMapping("/eduservice/subject")
public class SubjectAdminController {@Autowiredprivate SubjectService subjectService;//添加课程分类@ApiOperation(value = "Excel批量导入")@PostMapping("addSubject")public R addSubject(MultipartFile file) {//1 获取上传的excel文件 MultipartFile//返回错误提示信息subjectService.importSubjectData(file,subjectService);//判断返回集合是否为空return R.ok();}
}

创建和Excel对应的实体类

import com.alibaba.excel.annotation.ExcelProperty;
import lombok.Data;@Data
public class ExcelSubjectData {@ExcelProperty(index = 0)private int oneSubjectName;@ExcelProperty(index = 1)private String twoSubjectName;
}

SubjectService

(1)接口

void batchImport(MultipartFile file);

2)实现类

//添加课程分类
//poi读取excel内容
@Override
public void importSubjectData(MultipartFile file,EduSubjectService subjectService) {try {//1 获取文件输入流InputStream inputStream = file.getInputStream();// 这里 需要指定读用哪个class去读,然后读取第一个sheet 文件流会自动关闭EasyExcel.read(inputStream, ExcelSubjectData.class, new SubjectExcelListener(subjectService)).sheet().doRead();}catch(Exception e) {e.printStackTrace();throw new Exception(20002,"添加课程分类失败");}
}

创建读取Excel监听器

import com.alibaba.excel.context.AnalysisContext;
import com.alibaba.excel.event.AnalysisEventListener;import java.util.ArrayList;
import java.util.List;
import java.util.Map;public class SubjectExcelListener extends AnalysisEventListener<ExcelSubjectData> {public EduSubjectService subjectService;public SubjectExcelListener() {}//创建有参数构造,传递subjectService用于操作数据库public SubjectExcelListener(EduSubjectService subjectService) {this.subjectService = subjectService;}//一行一行去读取excle内容@Overridepublic void invoke(ExcelSubjectData user, AnalysisContext analysisContext) {if(user == null) {throw new Exception(20001,"添加失败");}//添加一级分类EduSubject existOneSubject = this.existOneSubject(subjectService,user.getOneSubjectName());if(existOneSubject == null) {//没有相同的existOneSubject = new EduSubject();existOneSubject.setTitle(user.getOneSubjectName());existOneSubject.setParentId("0");subjectService.save(existOneSubject);}//获取一级分类id值String pid = existOneSubject.getId();//添加二级分类EduSubject existTwoSubject = this.existTwoSubject(subjectService,user.getTwoSubjectName(), pid);if(existTwoSubject == null) {existTwoSubject = new EduSubject();existTwoSubject.setTitle(user.getTwoSubjectName());existTwoSubject.setParentId(pid);subjectService.save(existTwoSubject);}}//读取excel表头信息@Overridepublic void invokeHeadMap(Map<Integer, String> headMap, AnalysisContext context) {System.out.println("表头信息:"+headMap);}//读取完成后执行@Overridepublic void doAfterAllAnalysed(AnalysisContext analysisContext) {}//判断一级分类是否重复private EduSubject existTwoSubject(EduSubjectService subjectService,String name,String pid) {QueryWrapper<EduSubject> wrapper = new QueryWrapper<>();wrapper.eq("title",name);wrapper.eq("parent_id",pid);EduSubject eduSubject = subjectService.getOne(wrapper);return eduSubject;}//判断一级分类是否重复private EduSubject existOneSubject(EduSubjectService subjectService,String name) {QueryWrapper<EduSubject> wrapper = new QueryWrapper<>();wrapper.eq("title",name);wrapper.eq("parent_id","0");EduSubject eduSubject = subjectService.getOne(wrapper);return eduSubject;}
}

课程分类管理-添加课程分类相关推荐

  1. 谷粒学院——Day07【课程发布-添加课程信息】

    课程分类管理[添加分类前端] 一.配置路由 1. 添加路由 在 src/router/index.js 中添加路由: {// 地址输入path: '/subject',component: Layou ...

  2. 课程发布-添加课程信息

    一.需求 01-课程发布表单-步骤导航 二.配置路由 1.添加路由 // 课程管理 {path: '/edu/course',component: Layout,redirect: '/edu/cou ...

  3. 课程管理---添加课程分类 --后端

    先用代码生成器生成 subject 的代码层 创建方法然后再 service 和impl中实现 读取文件 添加监听器

  4. Day206.课程分类【导入功能】前端实现、 课程分类列表【显示功能】、课程管理【模块需求、添加课程功能】 -谷粒学院

    谷粒学院 [课程分类]-导入前端实现 一.配置路由 1.添加路由 src/router/index.js //课程分类{path: 'subject',component: Layout,redire ...

  5. 学成在线--16.添加课程计划

    文章目录 一.需求分析 二.API接口 三.后端 1.Dao 2.Service 3.Controller 4.测试 四.前端 1.页面原型说明 1)添加按钮 2)视图部分 3)在数据模型中添加如下变 ...

  6. 谷粒学院(十)课程管理模块 | 课程大纲列表 | 二级联动 | 富文本编辑器

    一.课程添加分析 发布流程图 数据表对应 课程相关表的关系 二.课程管理–添加课程后端 1.使用代码生成器生成相关课程相关的代码 CodeGenerator类中生成 2.细节问题 (1)创建vo实体类 ...

  7. 课程分类管理(树形一级二级分类),添加课程分类

    //课程分类列表方法 //一级分类 @Data public class OneSubject { private String id; private String title;//一个一级分类中有 ...

  8. 硅谷课堂 06_整合腾讯云对象存储和课程分类管理

    硅谷课堂第六天-整合腾讯云对象存储和课程分类管理 文章目录 硅谷课堂第六天-整合腾讯云对象存储和课程分类管理 一.讲师管理模块整合腾讯云对象存储 1.腾讯云对象存储介绍 1.1.开通"对象存 ...

  9. 硅谷课堂第五课-腾讯云对象存储和课程分类管理

    硅谷课堂第六天-整合腾讯云对象存储和课程分类管理 文章目录 硅谷课堂第六天-整合腾讯云对象存储和课程分类管理 一.讲师管理模块整合腾讯云对象存储 1.腾讯云对象存储介绍 1.1.开通"对象存 ...

最新文章

  1. 通俗易懂的Go协程的引入及GMP模型简介
  2. 代码设置LinearLayout的高度
  3. JetBrains 2018 中国开发者生态报告:Java 最流行
  4. php函数find的用法,c语言find函数的用法详解
  5. python索引 切片_python_索引_切片
  6. 7种从头开始免费学习编程的方法
  7. 《BOOST程序库完全开发指南》 第11章 函数与回调
  8. 到底什么成就了今天的人工智能?(上)
  9. MVC与MVVM的区别
  10. CanFestival应用
  11. Python接口自动化之接口依赖
  12. SQL Server商业智能功能– SQL Server数据工具–商业智能
  13. Python生成高斯白噪声white noise
  14. 计算机控制电机启动接线图,电机控制线路图大全,赶紧收藏
  15. 异地恋?我做了一个恋爱积分器
  16. 微信php echo换行,微信小程序文字显示换行问题
  17. Word中批注的使用方法
  18. natapp搭建外网服务器
  19. 垂钓之王hd_它的专业人士指南,以阻止网络钓鱼
  20. golang 微信支付介绍

热门文章

  1. mysql四种事务隔离级别
  2. JQuery validate表單驗證
  3. JavaScript_process01
  4. 无法解决 equal to 运算中 Chinese_PRC_CI_AS 和 SQL_Latin1_General_CP1_CI_AS 之间的排序规则冲突。...
  5. 【JDK源码】java.util.concurrent.atomic包常用类详解
  6. 弹性盒模型--新版与旧版比较(1)
  7. Linux中的一个命令行计算器bc简介
  8. php 单例模式 单态模式
  9. 12C 对表分区维护的增强
  10. 陶哲轩实分析习题9.1.1