/*
|
* 【机场1】从 dock2 原类 com.ard.web.controller.sample.media.MediaController 复制/独立适配(DJI Dock 1 / M30)。
|
* 与 dock2 原类同服务共存;本文件内的适配差异以「// 机场1:」内联注释标出。
|
*/
|
package com.ard.web.controller.sample.dock1.media;
|
|
import com.ard.sample.common.model.ResponseResult;
|
import com.ard.sample.component.mqtt.model.MapKeyConst;
|
import com.ard.sample.media.model.FileUploadDTO;
|
import com.ard.sample.media.service.IMediaService;
|
import com.fasterxml.jackson.core.JsonProcessingException;
|
import io.swagger.annotations.Api;
|
import io.swagger.annotations.ApiOperation;
|
import lombok.extern.slf4j.Slf4j;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.web.bind.annotation.*;
|
|
import java.util.List;
|
import java.util.Map;
|
import java.util.concurrent.ConcurrentHashMap;
|
import com.ard.web.controller.sample.media.MediaController;
|
|
/**
|
* @author sean/workspaces
|
* @version 0.2
|
* @date 2021/12/7
|
*/
|
@Api(tags = "媒体库管理")
|
@Slf4j
|
@RestController
|
@RequestMapping("/dock1/media")
|
public class Dock1MediaController {
|
|
@Autowired
|
private IMediaService mediaService;
|
|
/**
|
* Check if the file has been uploaded by the fingerprint.
|
* @param file
|
* @return
|
*/
|
@ApiOperation("检查文件是否已上传")
|
@PostMapping("/fast-upload")
|
public ResponseResult fastUpload( @RequestBody FileUploadDTO file) {
|
|
boolean isExist = mediaService.fastUpload(file.getFingerprint());
|
|
return isExist ? ResponseResult.success() : ResponseResult.error(file.getFingerprint() + "don't exist.");
|
}
|
|
/**
|
* When the file is uploaded to the storage server by pilot,
|
* the basic information of the file is reported through this interface.
|
* @param file
|
* @return
|
*/
|
@ApiOperation("上报文件基本信息")
|
@PostMapping("/upload-callback")
|
public ResponseResult<String> uploadCallback(@RequestBody FileUploadDTO file) {
|
mediaService.saveMediaFile(file);
|
return ResponseResult.success(file.getObjectKey());
|
|
}
|
|
/**
|
* 根据工作区 ID 和微小指纹的集合查询此工作区中已存在的文件。
|
* @param tinyFingerprints There is only one tiny_fingerprint parameter in the body.
|
* But it is not recommended to use Map to receive the parameter.
|
* @return
|
*/
|
@ApiOperation("查询已存在的文件")
|
@PostMapping("/files/tiny-fingerprints")
|
public ResponseResult<Map<String, List<String>>> uploadCallback(
|
@RequestBody Map<String, List<String>> tinyFingerprints){
|
|
List<String> existingList = mediaService.getExistTinyFingerprints(tinyFingerprints.get(MapKeyConst.TINY_FINGERPRINTS));
|
return ResponseResult.success(new ConcurrentHashMap<>(Map.of(MapKeyConst.TINY_FINGERPRINTS, existingList)));
|
}
|
|
}
|