package com.platform.modules.qk.service;

import com.aliyuncs.AcsRequest;
import com.aliyuncs.AcsResponse;
import com.aliyuncs.vod.model.v20170321.*;
import com.baomidou.mybatisplus.plugins.Page;
import com.baomidou.mybatisplus.service.IService;
import com.platform.common.utils.PageUtils;
import com.platform.modules.qk.entity.EditProjectEntity;
import com.platform.modules.qk.entity.EditProjectMaterialEntity;
import com.platform.modules.qk.entity.EditProjectWatermarkEntity;
import com.platform.plugs.live.responseEntity.TranscodeTask;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
 * @author: ktan
 * Created: 2019/2/18
 */
public interface VideoService extends IService<EditProjectMaterialEntity> {

    public PageUtils queryPage(Map<String, Object> params);

    public List<HashMap> queryList(Map<String, Object> params);

    public List<HashMap> queryWatermarkList(Map<String, Object> params);

    public Integer deleteWatermarkByProjectId(String projectId);

    public Integer insertWatermark(EditProjectWatermarkEntity vo);
    public void save(EditProjectMaterialEntity video);

    public void insertProject(EditProjectEntity evo);
    public void updateProjectByProjectId(EditProjectEntity evo);
    public EditProjectEntity findProjectByProjectId(String projectId);
    public List<EditProjectEntity> queryProjectByMap(Map<String, Object> map);
    public List<HashMap> queryProjectListByMap(Map<String, Object> map);
    public Page<Map> queryProjectPageByMap(Map<String, Object> map);

    public void produceMediaComplete(String videoId);
    public void deleteProjectByProjectIds(List<String> listId);

    GetVideoInfoResponse getVideoInfo(GetVideoInfoRequest request);

    UpdateVideoInfoResponse updateVideoInfo(UpdateVideoInfoRequest request);

    DeleteVideoResponse deleteVideo(DeleteVideoRequest request);

    GetVideoListResponse getVideoList(GetVideoListRequest request);

    GetVideoPlayAuthResponse getVideoPlayAuth(GetVideoPlayAuthRequest request);


    AddEditingProjectResponse addEditProject(AddEditingProjectRequest request);

    UpdateEditingProjectResponse updateEditingProject(UpdateEditingProjectRequest request);

    GetEditingProjectResponse getEditingProject(GetEditingProjectRequest request);

    DeleteEditingProjectResponse deleteEditingProject(DeleteEditingProjectRequest request);

    SearchEditingProjectResponse searchEditingProject(SearchEditingProjectRequest request);

    SetEditingProjectMaterialsResponse setEditingProjectMaterials(SetEditingProjectMaterialsRequest request);

    AddWatermarkResponse setAddWatermarkRequest(AddWatermarkRequest request);
    <T extends AcsResponse> T  request(AcsRequest<T> request);


    GetEditingProjectMaterialsResponse getEditingProjectMaterials(GetEditingProjectMaterialsRequest request);

    ProduceEditingProjectVideoResponse produceEditingProjectVideo(ProduceEditingProjectVideoRequest request);




    ProduceEditingProjectVideoResponse produceEditProject(ProduceEditingProjectVideoRequest request);
    ProduceEditingProjectVideoResponse clipVideo(String videoId, Float duration);
}
