阿里云删除视频

一 后端接口

文档:服务端SDK->Java SDK->媒资管理

https://help.aliyun.com/document_detail/61065.html?spm=a2c4g.11186623.6.831.654b3815cIxvma#h2--div-id-deletevideo-div-7

vod微服务中添加service方法

1 创建工具类

service_vod中创建AliyunVodSDKUtils.java

/**
* @className: AliyunVodSDKUtils
* @description: 阿里云视频工具类
* @date: 2020/12/13
* @author: cakin
*/
public class AliyunVodSDKUtils {
    /**
     * client初始化
     *
     * @param accessKeyId     accessKeyId
     * @param accessKeySecret accessKeySecret
     * @return DefaultAcsClient 客户端
     */
    public static DefaultAcsClient initVodClient(String accessKeyId, String accessKeySecret) {
        String regionId = "cn-shanghai";  // 点播服务接入区域
        DefaultProfile profile = DefaultProfile.getProfile(regionId, accessKeyId, accessKeySecret);
        DefaultAcsClient client = new DefaultAcsClient(profile);
        return client;
    }
}

2 Service

接口

/**
* 功能描述:删除视频
*
* @author cakin
* @date 2020/12/13
* @param videoId 视频id
*/
void removeVideo(String videoId) throws ClientException;

实现

/**
* 功能描述:删除视频
*
* @param videoId 视频id
* @author cakin
* @date 2020/12/13
*/
@Override
public void removeVideo(String videoId) throws ClientException {
    DefaultAcsClient client = AliyunVodSDKUtils.initVodClient(
            vodProperties.getKeyid(),
            vodProperties.getKeysecret());
    DeleteVideoRequest request = new DeleteVideoRequest();
    request.setVideoIds(videoId);
    client.getAcsResponse(request);
}

3 控制器

/**
* 功能描述:删除视频
*
* @author cakin
* @date 2020/12/13
* @param vodId 视频id
* @return R 返回给前端的数据
*/
@DeleteMapping("remove/{vodId}")
public R removeVideo(
        @ApiParam(name = "vodId", value = "阿里云视频id", required = true)
        @PathVariable String vodId) {
    log.warn("service-vod MediaController:videoSourceId= " + vodId);
    try {
        videoService.removeVideo(vodId);
        return R.ok().message("视频删除成功");
    } catch (Exception e) {
        log.error(ExceptionUtils.getMessage(e));
        throw new GuliException(ResultCodeEnum.VIDEO_DELETE_ALIYUN_ERROR);
    }
}

二 前端

1 定义api

  // 删除视频
  removeByVodId(id) {
    return request({
      baseURL: 'http://127.0.0.1:8130',
      url: `/admin/vod/media/remove/${id}`,
      method: 'delete'
    })
  }

2 组件方法

          :before-remove="handleBeforeRemove"
          :on-remove="handleOnRemove"

import vodApi from '@/api/vod'
    // 删除视频
    handleOnRemove(file, fileList) {
      if (!this.video.videoSourceId) {
        return
      }

      vodApi.removeByVodId(this.video.videoSourceId).then(response => {
        this.video.videoSourceId = ''
        this.video.videoOriginalName = ''
        // 删除视频的同时更新video数据信息
        videoApi.updateById(this.video)
        this.$message.success(response.message)
      })
    },

三 删除video的同时删除视频

1 创建feign接口

@Service
@FeignClient(value = "service-vod", fallback = VodMediaServiceFallBack.class)
public interface VodMediaService {


    /**
     * 功能描述:根据 vodId 删除视频
     *
     * @author cakin
     * @date 2020/12/13
     * @param vodId 视频id
     * @return R 返回给前端的数据
     */
    @DeleteMapping("/admin/vod/media/remove/{vodId}")
    R removeVideo(@PathVariable("vodId") String vodId);
}

2 创建容错类

@Service
@Slf4j
public class VodMediaServiceFallBack implements VodMediaService {
    /**
     * 功能描述:容错保护
     *
     * @author cakin
     * @date 2020/12/13
     * @param vodId 视频id
     * @return R 返回给前端的数据
     */
    @Override
    public R removeVideo(String vodId) {
        log.info("熔断保护");
        return R.error();
    }
}

3 service层中调用feign接口

接口

/**
* 功能描述:根据id删除视频
*
* @author cakin
* @date 2020/12/13
* @param id 视频id
*/
void removeMediaVideoById(String id);

实现

/**
* 功能描述:根据id删除视频
*
* @param id 视频id
* @author cakin
* @date 2020/12/13
*/
@Override
public void removeMediaVideoById(String id) {
    log.warn("VideoServiceImpl:video id = " + id);
    // 根据videoid找到视频id
    Video video = baseMapper.selectById(id);
    String videoSourceId = video.getVideoSourceId();
    log.warn("VideoServiceImpl:videoSourceId= " + videoSourceId);
    vodMediaService.removeVideo(videoSourceId);
}

4 控制器

/**
* 功能描述:根据ID删除课时
*
* @param id 课时id
* @return R 返回给前端的数据
* @author cakin
* @date 2020/12/8
*/
@ApiOperation("根据ID删除课时")
@DeleteMapping("remove/{id}")
public R removeById(@ApiParam(value = "课时ID", required = true) @PathVariable String id) {
    log.warn("VideoController:video id = " + id);
    // 删除视频
    videoService.removeMediaVideoById(id);
    boolean result = videoService.removeById(id);
    if (result) {
        return R.ok().message("删除成功");
    } else {
        return R.error().message("数据不存在");
    }
}

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值