删除课程删除阿里云视频

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,"删除课程失败");
    }
}
相关推荐
IKUN家族8 小时前
Spring MVC(一)
java·spring·mvc
老马识途2.010 小时前
关于跨域问题的总结
java·前端
都叫我大帅哥10 小时前
Java日期时间三十年战争:从Date考古到LocalDateTime革命,以及数据库与前端的那点事儿
java
Muscleheng10 小时前
SpringBoot 集成 DeepSeek 实现 RAG 文档问答
java·spring boot·ai·springai
2501_9364156911 小时前
可变参数&综合练习&斗地主游戏
java·windows·游戏
颜酱12 小时前
07 | 把字段与指标同步到 Qdrant(生成阶段)
前端·人工智能·后端
Larcher12 小时前
从“加载模型”界面到端侧推理:拆解一个 React + WebGPU 大模型 Demo
javascript·后端
极客先躯12 小时前
高级java每日一道面试题-2026年05月03日-实战篇[Docker]-如何实现容器化环境的数据加密?
java·运维·docker·容器·金融·加解密·高级面试
xqqxqxxq13 小时前
Java Socket 多人聊天室(私聊+群聊)技术笔记(V4版本)
java·网络·笔记
Larcher13 小时前
从状态快照到惰性初始化:读懂 React useState 的三个关键场景
javascript·人工智能·后端