package com.dji.sample.media.controller; import com.dji.sample.common.model.CustomClaim; import com.dji.sample.common.model.PaginationData; import com.dji.sample.common.model.ResponseResult; import com.dji.sample.media.model.FileUploadDTO; import com.dji.sample.media.model.MediaFileDTO; import com.dji.sample.media.model.MediaFileEntity; import com.dji.sample.media.model.MediaFileQueryParam; import com.dji.sample.media.service.IFileService; import com.drew.imaging.ImageProcessingException; import org.apache.ibatis.annotations.Update; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.awt.*; import java.io.IOException; import java.net.URL; import java.util.List; import static com.dji.sample.component.AuthInterceptor.TOKEN_CLAIM; /** * @author sean * @version 0.2 * @date 2021/12/9 */ @RestController @RequestMapping("${url.media.prefix}${url.media.version}/files") public class FileController { @Autowired private IFileService fileService; /** * Get information about all the media files in this workspace based on the workspace id. * 根据工作空间id获取有关此工作空间中所有媒体文件的信息。 * * @param workspaceId * @return */ @GetMapping("/{workspace_id}/files") public ResponseResult> getFilesList(@RequestParam(defaultValue = "1") Long page, @RequestParam(name = "page_size", defaultValue = "10") Long pageSize, @PathVariable(name = "workspace_id") String workspaceId, MediaFileQueryParam mediaFileQueryParam) { PaginationData filesList = fileService.getMediaFilesPaginationByWorkspaceId(workspaceId, page, pageSize, mediaFileQueryParam); return ResponseResult.success(filesList); } @GetMapping("/{workspace_id}/listAdded") public ResponseResult listIsadd(@RequestParam String dkbh, @PathVariable(name = "workspace_id") String workspaceId) { List entityList = fileService.listByIsadd(dkbh, workspaceId); return ResponseResult.success(entityList); } @PutMapping("/examine") public ResponseResult examineData(@RequestParam String fileId) { return fileService.updateExamByFileId(fileId); } @GetMapping("/getMediaInfo") public ResponseResult mediaInfo(@RequestParam String fileName) { return ResponseResult.success(fileService.mediaInfo(fileName)); } @GetMapping("/{workspace_id}/files/{job_id}") public ResponseResult findFilesList(@PathVariable(name = "workspace_id") String workspaceId, @PathVariable(name = "job_id") String jobId) { return ResponseResult.success(fileService.listMediaFileEntity(workspaceId, jobId)); } @GetMapping("dataShow/{workspace_id}") public ResponseResult getMeidaData(@PathVariable(name = "workspace_id") String workspaceId, @RequestParam Integer page, @RequestParam(name = "page_size", defaultValue = "10") Integer pageSize, @RequestParam(name = "photoStart", required = false) Long updateStart, @RequestParam(name = "photoEnd", required = false) Long updateEnd, @RequestParam(name = "updateStart", required = false) Long photoStart, @RequestParam(name = "updateEnd", required = false) Long photoEnd, @RequestParam(name = "jobName", required = false) String jobName) { return ResponseResult.success(fileService.MediaQuery(page, pageSize, updateStart, updateEnd, photoStart, photoEnd, jobName,workspaceId)); } @PostMapping("/{workspace_id}/updateFile") public ResponseResult updateFile(HttpServletRequest request, @PathVariable(name = "workspace_id") String workspaceId, @RequestBody MediaFileEntity mediaFileEntity) { CustomClaim claims = (CustomClaim) request.getAttribute(TOKEN_CLAIM); mediaFileEntity.setUserId(claims.getId()); return ResponseResult.success(fileService.updateMediaFile(workspaceId, mediaFileEntity)); } @DeleteMapping("/{workspace_id}/deleteFile") public ResponseResult deleteFile(@PathVariable(name = "workspace_id") String workspaceId, @RequestParam String fileId) { //根据fileId删除图片 int count = fileService.deleteMedia(workspaceId, fileId); if (count == 0) { return ResponseResult.error("删除失败"); } return ResponseResult.success(); } /** * Query the download address of the file according to the media file id, * and redirect to this address directly for download. * * @param workspaceId * @param fileId * @param response */ @GetMapping("/{workspace_id}/file/{file_id}/url") public void getFileUrl(@PathVariable(name = "workspace_id") String workspaceId, @PathVariable(name = "file_id") String fileId, HttpServletResponse response) { try { URL url = fileService.getObjectUrl(workspaceId, fileId); response.sendRedirect(url.toString()); } catch (IOException e) { e.printStackTrace(); } } }