删除课程删除阿里云视频

1、功能需求

一个小节对应一个视频,一个课程有多个视频,删除课程时需要删除多个视频。

2、在VideoAdminController实现删除多个视频的接口service-vod

java 复制代码
@ApiOperation(value = "删除多个视频")
@DeleteMapping("deleteMoreVideo")
public R deleteMoreVideo(@RequestParam("videoIdList") List<String> videoIdList){
    try {
        //1创建初始化对象", "
        DefaultAcsClient client = AliyunVodSDKUtils.initVodClient("你自己的阿里云keyid", "你自己的阿里云keysecret");
        //2创建删除视频的请求
        DeleteVideoRequest request = new DeleteVideoRequest();
        //3向请求中设置视频id,支持传入多个视频ID,多个用逗号分隔
        //videoIdList修改成11,22,33
        String videoIds = StringUtils.join(videoIdList.toArray(),",");
        request.setVideoIds(videoIds);
        //4调用初始化对象方法
        client.getAcsResponse(request);
        return R.ok();
    } catch (ClientException e) {
        return R.error();
    }
}

3、在service_edu中的com/atguigu/eduservice/client/ VodClient中新增接口方法

java 复制代码
@DeleteMapping("/eduvod/video/deleteMoreVideo")
public R deleteMoreVideo(@RequestParam("videoIdList") List<String> videoIdList);

4、在EduCourseServiceImpl调用接口实现

java 复制代码
@Autowired
private VodClient vodClient;
//删除课程(以及相关信息)
@Override
public void deleteCourse(String courseId) {
    //1根据课程id删除小节
    //删除小节前删除视频
    //1.1根据课程id查询该课程所有的视频
    QueryWrapper<EduVideo> wrapperVideoId = new QueryWrapper<>();
    wrapperVideoId.eq("course_id",courseId);
    List<EduVideo> list = videoService.list(wrapperVideoId);
    //1.2封装需要删除的视频id
    List<String> videoIds = new ArrayList<>();
    for (int i = 0; i <list.size() ; i++) {
        //1.3从小节信息里获取视频id
        EduVideo eduVideo = list.get(i);
        String videoSourceId = eduVideo.getVideoSourceId();
        //1.4判断后存入集合
        if(!StringUtils.isEmpty(videoSourceId)){
            videoIds.add(videoSourceId);
        }
    }
    //1.5判断后,调用接口删除多个视频
    if(videoIds.size()>0){
        vodClient.deleteMoreVideo(videoIds);
    }

    QueryWrapper<EduVideo> wrapperVideo = new QueryWrapper<>();
    wrapperVideo.eq("course_id",courseId);
    videoService.remove(wrapperVideo);
    //2根据课程id删除章节
    QueryWrapper<EduChapter> wrapperChapter = new QueryWrapper<>();
    wrapperChapter.eq("course_id",courseId);
    chapterService.remove(wrapperChapter);
    //3根据课程id删除描述
    courseDescriptionService.removeById(courseId);
    //4根据课程id删除课程
    int delete = baseMapper.deleteById(courseId);
    if(delete==0){
        throw  new GuliException(20001,"删除课程失败");
    }
}
相关推荐
weixin_4723394617 分钟前
高效处理大体积Excel文件的Java技术方案解析
java·开发语言·excel
小毛驴8501 小时前
Linux 后台启动java jar 程序 nohup java -jar
java·linux·jar
DKPT1 小时前
Java桥接模式实现方式与测试方法
java·笔记·学习·设计模式·桥接模式
好奇的菜鸟3 小时前
如何在IntelliJ IDEA中设置数据库连接全局共享
java·数据库·intellij-idea
tan180°3 小时前
MySQL表的操作(3)
linux·数据库·c++·vscode·后端·mysql
DuelCode4 小时前
Windows VMWare Centos Docker部署Springboot 应用实现文件上传返回文件http链接
java·spring boot·mysql·nginx·docker·centos·mybatis
优创学社24 小时前
基于springboot的社区生鲜团购系统
java·spring boot·后端
why技术4 小时前
Stack Overflow,轰然倒下!
前端·人工智能·后端
幽络源小助理4 小时前
SpringBoot基于Mysql的商业辅助决策系统设计与实现
java·vue.js·spring boot·后端·mysql·spring
猴哥源码4 小时前
基于Java+springboot 的车险理赔信息管理系统
java·spring boot