package com.deloitte.system.controller; import com.common.annotation.NoToken; import com.common.annotation.RequestLimit; import com.common.core.beans.Result; import com.common.core.enums.ResultCodeEnum; import com.common.core.exception.BizException; import com.common.core.utils.IdUtils; import com.deloitte.system.request.FileRequest; import com.deloitte.system.service.FileService; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import org.springframework.web.context.request.RequestContextHolder; import org.springframework.web.context.request.ServletRequestAttributes; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.validation.Valid; import java.io.IOException; import java.util.List; /** * @ClassName FileController * @Author holfeng * @Date 11:23 27/01/2022 * @Version 1.0 **/ @RestController @RequestMapping("/file") @Slf4j public class FileController { @Autowired private FileService fileService; @Autowired private IdUtils idWorker; @RequestLimit(size = 30) @PostMapping("/upload") public Result upload(@RequestBody @Valid FileRequest fileRequest) { String txId = idWorker.nextId(); String key=fileService.upload(txId,fileRequest); Result res = Result.resp(ResultCodeEnum.RT_SUCCESS); res.setObject(key); res.setTxId(txId); return res; } @RequestLimit(size = 500) @PostMapping("/batchupload") public Result> batchUpload(@RequestBody @Valid List fileList) { String txId = idWorker.nextId(); List keys=fileService.batchUpload(txId,fileList); Result> res = Result.resp(ResultCodeEnum.RT_SUCCESS); res.setObject(keys); res.setTxId(txId); return res; } @GetMapping("/preview") @NoToken public void preview(@RequestParam("key") String key){ HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest(); HttpServletResponse response = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getResponse(); fileService.preview(request,response,key); } @GetMapping("/download") @NoToken public void download(@RequestParam("key") String key){ HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest(); HttpServletResponse response = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getResponse(); fileService.download(request,response,key); } @RequestLimit(size = 30) @PostMapping("/convert") @NoToken public void convert(){ HttpServletResponse response = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getResponse(); HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest(); fileService.convert(request,response); } @GetMapping("/convert") @NoToken public void convertget(@RequestParam("from") String from) { HttpServletResponse response = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getResponse(); try { response.sendRedirect(from); } catch (IOException e) { throw new BizException(ResultCodeEnum.AWS_RT_ERROR); } } @PostMapping("/delete") public Result deleteFile(@RequestBody List keys){ fileService.deleteFile(keys); return Result.resp(ResultCodeEnum.RT_SUCCESS); } }