package com.infynova.udi.manager;

import com.infynova.udi.common.api.ResponseData;
import com.infynova.udi.common.entity.UploadResultVo;
import com.infynova.udi.common.exception.SaasException;
import com.infynova.udi.dto.UdiMatchTaskFileDto;
import com.infynova.udi.dto.file.OSSBatchIdReqVo;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.CollectionUtils;
import org.springframework.stereotype.Component;
import org.springframework.web.multipart.MultipartFile;

import javax.annotation.Resource;
import java.util.*;


@Slf4j
@Component
public class OssManager {

    @Resource
    private OSSServiceClient oSSServiceClient;

    protected <T> T handleResponse(ResponseData<T> resp){
        if (resp.isSuccess()) {
            return resp.getData();
        } else {
            throw new SaasException("服务调用失败:错误码=" + resp.getCode() + ",原因=" + resp.getMsg());
        }
    }

    public UploadResultVo upload(MultipartFile multipartFile) {
        ResponseData<UploadResultVo> result = oSSServiceClient.upload(multipartFile);
        return handleResponse(result);
    }

    public String getUrlById(Long id){
        ResponseData<String> responseData = oSSServiceClient.getUrlById(id);
        return responseData.getData();
    }

    public List<UdiMatchTaskFileDto> queryBatchById(List<Long> ids){
        OSSBatchIdReqVo ossBatchId = new OSSBatchIdReqVo();
        ossBatchId.setIds(ids);
        ResponseData<List<UploadResultVo>> responseData = oSSServiceClient.queryBatchById(ossBatchId);
        if(responseData.isSuccess() && CollectionUtils.isNotEmpty(responseData.getData())){
            List<UploadResultVo> data = responseData.getData();
            List<UdiMatchTaskFileDto> resultList = new ArrayList<>(data.size());
            for (UploadResultVo datum : data) {
                resultList.add(UdiMatchTaskFileDto.builder().fileId(datum.getId()).fileName(datum.getFileName()).filePath(datum.getFilePath()).build());
            }
            return resultList;
        }else{
            return null;
        }
    }



}