package com.example.fms.controller; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.example.fms.common.model.dto.FMSDeleteFileDTO; import com.example.fms.common.utils.Response; import com.example.fms.domain.SystemFile; import com.example.fms.service.FileMangerService; import com.example.fms.service.SystemFileService; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.tags.Tag; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.core.io.InputStreamResource; import org.springframework.http.HttpHeaders; import org.springframework.http.MediaType; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; import java.io.ByteArrayInputStream; import java.util.List; /** * @Author xiexiang * @Date 2023/6/6 */ @Tag(name = "操作模块") @Slf4j @RestController @RequiredArgsConstructor @RequestMapping("/fileManager") public class FileMangerController { private final FileMangerService fileManagerService; private final SystemFileService systemFileService; @PostMapping("/uploadSystemFile") @Operation(summary = "上传文件") public String upload(@RequestBody List files, Integer sourceId) { List insertIds = fileManagerService.add(files, sourceId); return Response.success(insertIds); } @PostMapping("/uploadSystemFile1") @Operation(summary = "上传文件") public String upload(MultipartFile file, Integer sourceId) { System.out.println(file +"------------"+sourceId); return Response.success(); } @GetMapping("/downloadSystemFile") @Operation(summary = "取出文件") public ResponseEntity download(Integer fileId) throws Exception { byte[] fileData = fileManagerService.download(fileId); SystemFile systemFile = systemFileService.getById(fileId); String fileName = systemFile.getFileName(); return ResponseEntity.ok().contentLength(fileData.length) .header(HttpHeaders.CONTENT_DISPOSITION, "attachment; filename=\"" + fileName + "\"") .contentType(MediaType.parseMediaType("application/octet-stream")) .body(new InputStreamResource(new ByteArrayInputStream(fileData))); } @PostMapping("/getFileData") @Operation(summary = "获取文件信息") public List getFileData(@RequestBody List fileIds){ LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); queryWrapper.in(SystemFile::getId, fileIds); List systemFiles = systemFileService.list(queryWrapper); return systemFiles; } @PostMapping("/deleteSystemFile") @Operation(summary = "删除文件") public String delete(@RequestBody FMSDeleteFileDTO fMSDeleteFileDTO){ fileManagerService.delete(fMSDeleteFileDTO.getIds(), fMSDeleteFileDTO.getType()); return Response.success("删除系统文件成功"); } }