删除课程删除阿里云视频

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,"删除课程失败");
    }
}
相关推荐
寻星探路3 小时前
【深度长文】万字攻克网络原理:从 HTTP 报文解构到 HTTPS 终极加密逻辑
java·开发语言·网络·python·http·ai·https
想用offer打牌4 小时前
MCP (Model Context Protocol) 技术理解 - 第二篇
后端·aigc·mcp
曹牧5 小时前
Spring Boot:如何测试Java Controller中的POST请求?
java·开发语言
KYGALYX5 小时前
服务异步通信
开发语言·后端·微服务·ruby
掘了5 小时前
「2025 年终总结」在所有失去的人中,我最怀念我自己
前端·后端·年终总结
爬山算法6 小时前
Hibernate(90)如何在故障注入测试中使用Hibernate?
java·后端·hibernate
kfyty7256 小时前
集成 spring-ai 2.x 实践中遇到的一些问题及解决方案
java·人工智能·spring-ai
猫头虎6 小时前
如何排查并解决项目启动时报错Error encountered while processing: java.io.IOException: closed 的问题
java·开发语言·jvm·spring boot·python·开源·maven
李少兄6 小时前
在 IntelliJ IDEA 中修改 Git 远程仓库地址
java·git·intellij-idea