Kevin's blog Kevin's blog
首页
  • Java基础
  • Java高级
  • MySQL
  • JDBC
  • Java 8新特性
  • 原生Servlet
  • 延迟队列
  • 分布式事务
  • ActiveMQ
  • Elasticsearch
  • Stream API
  • Redis 实战(黑马程序员)
  • Redis 课程(尚硅谷)
  • Redis数据类型和常用命令
  • 版本控制
  • Spring Framework
  • Spring MVC Framework
  • MyBatis Framework
  • MyBatis Plus Framework
  • Spring Boot Framework
  • 韩顺平 Spring Boot Framework
  • 在线教育
  • 谷粒商城 - 分布式基础 高级 集群
  • 谷粒商城 - 详细开发文档
  • docker基础
  • docker-compose容器编排
  • docker swarm集群管理
  • Vue2基础
  • 前端文章

    • JavaScript
  • 学习笔记

    • 《JavaScript教程》
    • 《JavaScript高级程序设计》
    • 《ES6 教程》
    • 《Vue》
    • 《React》
    • 《TypeScript 从零实现 axios》
    • 《Git》
    • TypeScript
    • JS设计模式总结
  • HTML
  • CSS
  • 技术文档
  • GitHub技巧
  • Nodejs
  • 博客搭建
  • 学习
  • 面试
  • 心情杂货
  • 实用技巧
  • 友情链接
关于
收藏
  • 分类
  • 标签
  • 归档
GitHub (opens new window)

Kevin

Java系统笔记
首页
  • Java基础
  • Java高级
  • MySQL
  • JDBC
  • Java 8新特性
  • 原生Servlet
  • 延迟队列
  • 分布式事务
  • ActiveMQ
  • Elasticsearch
  • Stream API
  • Redis 实战(黑马程序员)
  • Redis 课程(尚硅谷)
  • Redis数据类型和常用命令
  • 版本控制
  • Spring Framework
  • Spring MVC Framework
  • MyBatis Framework
  • MyBatis Plus Framework
  • Spring Boot Framework
  • 韩顺平 Spring Boot Framework
  • 在线教育
  • 谷粒商城 - 分布式基础 高级 集群
  • 谷粒商城 - 详细开发文档
  • docker基础
  • docker-compose容器编排
  • docker swarm集群管理
  • Vue2基础
  • 前端文章

    • JavaScript
  • 学习笔记

    • 《JavaScript教程》
    • 《JavaScript高级程序设计》
    • 《ES6 教程》
    • 《Vue》
    • 《React》
    • 《TypeScript 从零实现 axios》
    • 《Git》
    • TypeScript
    • JS设计模式总结
  • HTML
  • CSS
  • 技术文档
  • GitHub技巧
  • Nodejs
  • 博客搭建
  • 学习
  • 面试
  • 心情杂货
  • 实用技巧
  • 友情链接
关于
收藏
  • 分类
  • 标签
  • 归档
GitHub (opens new window)
  • 项目 在线教育

    • 项目简介

    • Mybatis Plus入门

    • 课程中心微服务搭建

    • 前后端分离相关知识

    • 后台管理系统前端页面的搭建

    • 整合阿里云OSS文件上传

    • 使用POI实现Excel导入导出

    • 整合POI实现课程类目管理

    • 课程基本信息管理

    • 课程章节信息管理

    • 课程课时管理

    • 使用阿里云视频点播

    • 媒资管理

    • spring cloud服务发现和服务调用

      • 服务发现-搭建Eureka服务
      • 服务调用-Feign
      • 完善删除课程业务
      • 整合ECharts实现统计分析

      • 服务端渲染NUXT

      • 整合阿里云播放器

      • 微服务安全

      • 整合微信登录

      • spring cloud zuul 微服务网关在项目中的应用

      • 总结

    • 项目 谷粒商城

    • 项目 谷粒商城详细开发文档

    • Project
    • 项目 在线教育
    • spring cloud服务发现和服务调用
    zhihuanwang
    2023-09-25
    目录

    完善删除课程业务

    需求

    删除课程的同时删除云端视频

    # 一、vod服务

    # 1、业务

    业务接口:VideoService.java

    void removeVideoList(List<String> videoIdList);
    
    1

    业务实现:VideoServiceImpl.java

    @Override
    public void removeVideoList(List<String> videoIdList) {
        try {
            //初始化
            DefaultAcsClient client = AliyunVodSDKUtils.initVodClient(
                ConstantPropertiesUtil.ACCESS_KEY_ID,
                ConstantPropertiesUtil.ACCESS_KEY_SECRET);
    
            //创建请求对象
            //一次只能批量删20个
            String str = org.apache.commons.lang.StringUtils.join(videoIdList.toArray(), ",");
            DeleteVideoRequest request = new DeleteVideoRequest();
            request.setVideoIds(str);
    
            //获取响应
            DeleteVideoResponse response = client.getAcsResponse(request);
    
            System.out.print("RequestId = " + response.getRequestId() + "\n");
    
        } catch (ClientException e) {
            throw new GuliException(20001, "视频删除失败");
        }
    }
    
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23

    # 2、web层接口

    controller:VideoAdminController.java

    /**
         * 批量删除视频
         * @param videoIdList
         * @return
         */
    @DeleteMapping("delete-batch")
    public R removeVideoList(
        @ApiParam(name = "videoIdList", value = "云端视频id", required = true)
        @RequestParam("videoIdList") List videoIdList){
    
        videoService.removeVideoList(videoIdList);
        return R.ok().message("视频删除成功");
    }
    
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13

    # 3、Swagger测试

    输入多个id,每个一行

    img

    # 二、edu服务

    # 1、client

    VodClient.java

    @DeleteMapping(value = "/admin/vod/video/delete-batch")
    public R removeVideoList(@RequestParam("videoIdList") List videoIdList);
    
    1
    2

    # 2、业务

    VideoServiceImpl.java

    @Override
    public boolean removeByCourseId(String courseId) {
    
        //根据课程id查询所有视频列表
        QueryWrapper<Video> queryWrapper = new QueryWrapper<>();
        queryWrapper.eq("course_id", courseId);
        queryWrapper.select("video_source_id");
        List<Video> videoList = baseMapper.selectList(queryWrapper);
    
        //得到所有视频列表的云端原始视频id
        List<String> videoSourceIdList = new ArrayList<>();
        for (int i = 0; i < videoList.size(); i++) {
            Video video = videoList.get(i);
            String videoSourceId = video.getVideoSourceId();
            if(!StringUtils.isEmpty(videoSourceId)){
                videoSourceIdList.add(videoSourceId);
            }
        }
    
        //调用vod服务删除远程视频
        if(videoSourceIdList.size() > 0){
            vodClient.removeVideoList(videoSourceIdList);
        }
    
        //删除video表示的记录
        QueryWrapper<Video> queryWrapper2 = new QueryWrapper<>();
        queryWrapper2.eq("course_id", courseId);
        Integer count = baseMapper.delete(queryWrapper2);
        return null != count && count > 0;
    }
    
    
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31

    CourseServiceImpl.java

    @Override
    public boolean removeCourseById(String id) {
    
        //根据id删除所有视频
        videoService.removeByCourseId(id);
    
        //根据id删除所有章节
        chapterService.removeByCourseId(id);
    
        //根据id删除所有课程详情
        courseDescriptionService.removeById(id);
    
        //删除封面 TODO 独立完成
    
        Integer result = baseMapper.deleteById(id);
        return null != result && result > 0;
    }
    
    
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    编辑 (opens new window)
    上次更新: 2024/06/15, 15:12:25
    服务调用-Feign
    用户中心微服务

    ← 服务调用-Feign 用户中心微服务→

    最近更新
    01
    04.Spring Boot 韩顺平
    10-12
    02
    day14
    08-29
    03
    day09
    08-29
    更多文章>
    Theme by Vdoing | Copyright © 2019-2025 Evan Xu | MIT License
    • 跟随系统
    • 浅色模式
    • 深色模式
    • 阅读模式