package com.persagy.dmp.file.client;

import com.persagy.dmp.common.model.response.CommonResult;
import com.persagy.dmp.file.model.FileInfo;
import com.persagy.dmp.file.model.FileRequestData;
import com.persagy.dmp.file.model.UploadMes;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.*;

import java.util.List;

/**
 * 文件管理Client
 * @author Charlie Yu
 * @date 2021-05-15
 */
@FeignClient(name = "dmp-file", configuration = FileFeignConfig.class,path = "/file/",url = "${persagy.bdtp.file.service:}")
public interface FileManageClient {

    /**
     * 新增文件信息
     * @param fileInfo 文件信息
     * @return 文件信息
     */
    @PostMapping("insert")
    CommonResult<FileInfo> insert(@RequestBody FileInfo fileInfo);

    /**
     * 修改文件信息
     * @param fileInfo 文件信息
     * @return 文件信息
     */
    @PostMapping("update")
    CommonResult<FileInfo> update(@RequestBody FileInfo fileInfo);

    /**
     * 删除文件信息
     * @param id 文件信息
     * @return 文件信息
     */
    @PostMapping("delete")
    CommonResult<String> delete(@RequestBody String id);

    /**
     * 查询文件信息
     * @param id 文件信息
     * @return 文件信息
     */
    @PostMapping("load")
    CommonResult<FileInfo> load(@RequestBody String id);
    /**
     * 查询文件信息
     * @param id 文件信息
     * @return 文件信息
     */
    @PostMapping("queryByFileMd5")
    CommonResult<List<FileInfo>> queryByFileMd5(@RequestBody String id);

    /***
     * Description: 获取断点续传上传信息
     * @param requestData : 请求参数
     * @return : com.persagy.dmp.common.model.response.CommonResult<com.persagy.dmp.file.model.UploadMes>
     * @author : lijie
     * @date :2021/11/9 10:18
     * Update By lijie 2021/11/9 10:18
     */
    @PostMapping("/initChunkUpload")
    CommonResult<UploadMes> initChunkUpload(@RequestParam("groupCode") String groupCode,
                                             @RequestParam("projectId") String projectId,
                                             @RequestParam("appId") String appId,
                                             @RequestParam("userId") String userId,
                                             @RequestBody FileRequestData requestData);

    /***
     * Description: 合并断点续传上传文件
     * @param requestData : 请求参数
     * @return : com.persagy.dmp.common.model.response.CommonResult<com.persagy.dmp.file.model.UploadMes>
     * @author : lijie
     * @date :2021/11/9 10:18
     * Update By lijie 2021/11/9 10:18
     */
    @PostMapping("/composeFile")
    CommonResult<UploadMes> composeFile(@RequestParam("groupCode") String groupCode,
                                        @RequestParam("projectId") String projectId,
                                        @RequestParam("appId") String appId,
                                        @RequestParam("userId") String userId,
                                        @RequestBody FileRequestData requestData);



    /***
     * Description: 获取文件上传信息
     * @param requestData : 请求参数
     * @return : com.persagy.dmp.common.model.response.CommonResult<com.persagy.dmp.file.model.UploadMes>  
     * @author : lijie
     * @date :2021/11/9 10:18
     * Update By lijie 2021/11/9 10:18
     */
    @PostMapping("/initSingleUpload")
    CommonResult<UploadMes> initSingleUpload(@RequestParam("groupCode") String groupCode,
                                             @RequestParam("projectId") String projectId,
                                             @RequestParam("appId") String appId,
                                             @RequestParam("userId") String userId,
                                             @RequestBody FileRequestData requestData);

    /***
     * Description: 获取文件下载信息
     * @param requestData : 请求信息
     * @return : com.persagy.dmp.common.model.response.CommonResult<com.persagy.dmp.file.model.FileInfo>
     * @author : lijie
     * @date :2021/11/9 10:17
     * Update By lijie 2021/11/9 10:17
     */
    @PostMapping("/initFileDownload")
    CommonResult<FileInfo> initFileDownload(@RequestBody FileRequestData requestData);

}
