课程分类管理-添加课程分类
业务处理
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;}
}
课程分类管理-添加课程分类相关推荐
- 谷粒学院——Day07【课程发布-添加课程信息】
课程分类管理[添加分类前端] 一.配置路由 1. 添加路由 在 src/router/index.js 中添加路由: {// 地址输入path: '/subject',component: Layou ...
- 课程发布-添加课程信息
一.需求 01-课程发布表单-步骤导航 二.配置路由 1.添加路由 // 课程管理 {path: '/edu/course',component: Layout,redirect: '/edu/cou ...
- 课程管理---添加课程分类 --后端
先用代码生成器生成 subject 的代码层 创建方法然后再 service 和impl中实现 读取文件 添加监听器
- Day206.课程分类【导入功能】前端实现、 课程分类列表【显示功能】、课程管理【模块需求、添加课程功能】 -谷粒学院
谷粒学院 [课程分类]-导入前端实现 一.配置路由 1.添加路由 src/router/index.js //课程分类{path: 'subject',component: Layout,redire ...
- 学成在线--16.添加课程计划
文章目录 一.需求分析 二.API接口 三.后端 1.Dao 2.Service 3.Controller 4.测试 四.前端 1.页面原型说明 1)添加按钮 2)视图部分 3)在数据模型中添加如下变 ...
- 谷粒学院(十)课程管理模块 | 课程大纲列表 | 二级联动 | 富文本编辑器
一.课程添加分析 发布流程图 数据表对应 课程相关表的关系 二.课程管理–添加课程后端 1.使用代码生成器生成相关课程相关的代码 CodeGenerator类中生成 2.细节问题 (1)创建vo实体类 ...
- 课程分类管理(树形一级二级分类),添加课程分类
//课程分类列表方法 //一级分类 @Data public class OneSubject { private String id; private String title;//一个一级分类中有 ...
- 硅谷课堂 06_整合腾讯云对象存储和课程分类管理
硅谷课堂第六天-整合腾讯云对象存储和课程分类管理 文章目录 硅谷课堂第六天-整合腾讯云对象存储和课程分类管理 一.讲师管理模块整合腾讯云对象存储 1.腾讯云对象存储介绍 1.1.开通"对象存 ...
- 硅谷课堂第五课-腾讯云对象存储和课程分类管理
硅谷课堂第六天-整合腾讯云对象存储和课程分类管理 文章目录 硅谷课堂第六天-整合腾讯云对象存储和课程分类管理 一.讲师管理模块整合腾讯云对象存储 1.腾讯云对象存储介绍 1.1.开通"对象存 ...
最新文章
- 通俗易懂的Go协程的引入及GMP模型简介
- 代码设置LinearLayout的高度
- JetBrains 2018 中国开发者生态报告:Java 最流行
- php函数find的用法,c语言find函数的用法详解
- python索引 切片_python_索引_切片
- 7种从头开始免费学习编程的方法
- 《BOOST程序库完全开发指南》 第11章 函数与回调
- 到底什么成就了今天的人工智能?(上)
- MVC与MVVM的区别
- CanFestival应用
- Python接口自动化之接口依赖
- SQL Server商业智能功能– SQL Server数据工具–商业智能
- Python生成高斯白噪声white noise
- 计算机控制电机启动接线图,电机控制线路图大全,赶紧收藏
- 异地恋?我做了一个恋爱积分器
- 微信php echo换行,微信小程序文字显示换行问题
- Word中批注的使用方法
- natapp搭建外网服务器
- 垂钓之王hd_它的专业人士指南,以阻止网络钓鱼
- golang 微信支付介绍
热门文章
- mysql四种事务隔离级别
- JQuery validate表單驗證
- JavaScript_process01
- 无法解决 equal to 运算中 Chinese_PRC_CI_AS 和 SQL_Latin1_General_CP1_CI_AS 之间的排序规则冲突。...
- 【JDK源码】java.util.concurrent.atomic包常用类详解
- 弹性盒模型--新版与旧版比较(1)
- Linux中的一个命令行计算器bc简介
- php 单例模式 单态模式
- 12C 对表分区维护的增强
- 陶哲轩实分析习题9.1.1