VodDictServiceImpl.java 5.12 KB
package com.subsidy.service.impl;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.subsidy.common.configure.VODConfig;
import com.subsidy.common.exception.HttpException;
import com.subsidy.dto.content.GetContendVodsDTO;
import com.subsidy.mapper.VodDictMapper;
import com.subsidy.model.VodDictDO;
import com.subsidy.service.VodDictService;
import com.subsidy.util.ConstantUtils;
import com.subsidy.util.Signature;
import com.subsidy.vo.vod.GetContendVodsVO;
import com.subsidy.vo.vod.SignatureVO;
import com.tencentcloudapi.common.Credential;
import com.tencentcloudapi.common.exception.TencentCloudSDKException;
import com.tencentcloudapi.common.profile.ClientProfile;
import com.tencentcloudapi.common.profile.HttpProfile;
import com.tencentcloudapi.vod.v20180717.VodClient;
import com.tencentcloudapi.vod.v20180717.models.DeleteMediaRequest;
import com.tencentcloudapi.vod.v20180717.models.MediaProcessTaskInput;
import com.tencentcloudapi.vod.v20180717.models.ProcessMediaRequest;
import com.tencentcloudapi.vod.v20180717.models.TranscodeTaskInput;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.Random;

/**
 * <p>
 * 视频表 服务实现类
 * </p>
 *
 * @author DengMin
 * @since 2021-10-11
 */
@Service
public class VodDictServiceImpl extends ServiceImpl<VodDictMapper, VodDictDO> implements VodDictService {

    @Autowired
    private VODConfig vodConfig;


    public SignatureVO signature() {
        SignatureVO signatureVO = new SignatureVO();

        Signature signature = new Signature();
        signature.setSecretId(vodConfig.getSecretId());
        signature.setSecretKey(vodConfig.getSecretKey());
        signature.setCurrentTime(System.currentTimeMillis());
        signature.setRandom(new Random().nextInt(Integer.MAX_VALUE));
        signature.setSignValidDuration(3600 * 24 * 2);
        signature.setClassId(vodConfig.getClassId());
        String sign = "";
        try {
            sign = signature.getUploadSignature();
            signatureVO.setSign(sign);
        } catch (Exception ex) {
            ex.printStackTrace();
        }
        return signatureVO;
    }

    public IPage<GetContendVodsVO> getContendVods(GetContendVodsDTO getContendVodsDTO) {
        Page pager = new Page(getContendVodsDTO.getPageNum(), getContendVodsDTO.getPageSize());
        return this.baseMapper.getContendVods(pager, getContendVodsDTO.getVodName(), getContendVodsDTO.getContentId());
    }

    public String deleteVod(VodDictDO vodDictDO) {
        VodDictDO vodDictDO1 = this.baseMapper.selectById(vodDictDO.getId());
        this.baseMapper.deleteById(vodDictDO.getId());
        try {

            //删除原视频
            Credential cred = new Credential(vodConfig.getSecretId(), vodConfig.getSecretKey());

            HttpProfile httpProfile = new HttpProfile();
            httpProfile.setEndpoint("vod.tencentcloudapi.com");

            ClientProfile clientProfile = new ClientProfile();
            clientProfile.setHttpProfile(httpProfile);

            VodClient client = new VodClient(cred, "", clientProfile);

            // 实例化一个请求对象,每个接口都会对应一个request对象
            DeleteMediaRequest req = new DeleteMediaRequest();
            req.setFileId(vodDictDO1.getVodCode());
            // 返回的resp是一个DeleteMediaResponse的实例,与请求对象对应
            client.DeleteMedia(req);
        } catch (TencentCloudSDKException e) {
        }

        return ConstantUtils.DELETE_SUCCESS;
    }

    public String addVod(VodDictDO vodDictDO) {
        this.baseMapper.insert(vodDictDO);
        //上传后直接转码
        Credential cred = new Credential(vodConfig.getSecretId(), vodConfig.getSecretKey());

        HttpProfile httpProfile = new HttpProfile();
        httpProfile.setEndpoint("vod.tencentcloudapi.com");

        ClientProfile clientProfile = new ClientProfile();
        clientProfile.setHttpProfile(httpProfile);

        VodClient client = new VodClient(cred, "", clientProfile);

        ProcessMediaRequest processMediaRequest = new ProcessMediaRequest();
        MediaProcessTaskInput mediaProcessTaskInput1 = new MediaProcessTaskInput();
        TranscodeTaskInput[] transcodeTaskInputs1 = new TranscodeTaskInput[1];
        TranscodeTaskInput transcodeTaskInput1 = new TranscodeTaskInput();
        transcodeTaskInput1.setDefinition(ConstantUtils.TEMPLATE_VOD);
        transcodeTaskInputs1[0] = transcodeTaskInput1;
        mediaProcessTaskInput1.setTranscodeTaskSet(transcodeTaskInputs1);
        processMediaRequest.setMediaProcessTask(mediaProcessTaskInput1);
        processMediaRequest.setFileId(vodDictDO.getVodCode());

        try {
            client.ProcessMedia(processMediaRequest);
        } catch (Exception ex) {
            throw new HttpException(50001);
        }

        return ConstantUtils.ADD_SUCCESS;
    }

    public String updateVod(VodDictDO vodDictDO) {
        this.baseMapper.updateById(vodDictDO);
        return ConstantUtils.SET_SUCCESS;
    }


}