Skip to main content

一、后端实现

1、web层

定义删除api方法:CourseAdminController.java

@ApiOperation(value = "根据ID删除课程")
@DeleteMapping("{id}")
public R removeById(
@ApiParam(name = "id", value = "课程ID", required = true)
@PathVariable String id){

boolean result = courseService.removeCourseById(id);
if(result){
return R.ok();
}else{
return R.error().message("删除失败");
}
}

2、service层

如果用户确定删除,则首先删除video记录,然后删除chapter记录,最后删除Course记录

2.1、在VideoService中定义根据courseId删除video业务方法

接口

boolean removeByCourseId(String courseId);

实现

@Override
public boolean removeByCourseId(String courseId) {
QueryWrapper<Video> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("course_id", courseId);
Integer count = baseMapper.delete(queryWrapper);
return null != count && count > 0;
}

*2.2、*在ChapterService中定义根据courseId删除chapter业务方法

接口

boolean removeByCourseId(String courseId);

实现

@Override
public boolean removeByCourseId(String courseId) {
QueryWrapper<Chapter> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("course_id", courseId);
Integer count = baseMapper.delete(queryWrapper);
return null != count && count > 0;
}

*2.3、*删除当前course记录

接口:CourseService.java

boolean removeCourseById(String id);

实现:CourseServiceImpl.java

@Override
public boolean removeCourseById(String id) {

//根据id删除所有视频
videoService.removeByCourseId(id);

//根据id删除所有章节
chapterService.removeByCourseId(id);

Integer result = baseMapper.deleteById(id);
return null != result && result > 0;
}

二、前端实现

1、定义api

course.js中添加删除方法

removeById(id) {
return request({
url: `${api_name}/${id}`,
method: 'delete'
})
}

2、修改删除按钮

src/api/edu/course.js 删除按钮注册click事件

<el-button type="text" size="mini" icon="el-icon-delete" @click="removeDataById(scope.row.id)">删除</el-button>

3、编写删除方法

removeDataById(id) {
// debugger
this.$confirm('此操作将永久删除该课程,以及该课程下的章节和视频,是否继续?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(() => {
return course.removeById(id)
}).then(() => {
this.fetchData()
this.$message({
type: 'success',
message: '删除成功!'
})
}).catch((response) => { // 失败
if (response === 'cancel') {
this.$message({
type: 'info',
message: '已取消删除'
})
}
})
}