删除课程删除阿里云视频

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,"删除课程失败");
    }
}
相关推荐
Nturmoils4 分钟前
分页别写太顺手,LIMIT 背后还有排序和边界
数据库·后端
是多巴胺不是尼古丁7 分钟前
期末java复习--string
java·开发语言·python
神奇小汤圆8 分钟前
国产版“Codex”初体验,智谱ZCode很强啊!
后端
站大爷IP9 分钟前
Python里的“赋值”到底是什么意思?
后端
Survivor00113 分钟前
高并发系统流量治理的底层算法
java·开发语言
凡人叶枫16 分钟前
Effective C++ 条款35:考虑 virtual 函数以外的其他选择
java·c++·spring
garmin Chen23 分钟前
从 Transformer 到 Agent:大模型技术全景解析
java·人工智能·python·深度学习·transformer
愚公移码29 分钟前
蓝凌EKP18产品:流程引擎技术篇之流程核心概念模型
java·人工智能·流程引擎·蓝凌
Full Stack Developme36 分钟前
Apache Tika 教程
java·开发语言·python·apache
鹅城剑仙40 分钟前
Spring Boot 微服务架构设计与最佳实践
spring boot·后端·微服务