服务调用
This commit is contained in:
@@ -0,0 +1,118 @@
|
||||
package org.xyzh.file.controller;
|
||||
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.http.HttpHeaders;
|
||||
import org.springframework.http.MediaType;
|
||||
import org.springframework.http.ResponseEntity;
|
||||
import org.springframework.web.bind.annotation.DeleteMapping;
|
||||
import org.springframework.web.bind.annotation.GetMapping;
|
||||
import org.springframework.web.bind.annotation.PathVariable;
|
||||
import org.springframework.web.bind.annotation.PostMapping;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RequestParam;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
import org.springframework.web.multipart.MultipartFile;
|
||||
import org.xyzh.api.file.dto.TbSysFileDTO;
|
||||
import org.xyzh.api.file.service.FileService;
|
||||
import org.xyzh.common.core.domain.ResultDomain;
|
||||
|
||||
import io.swagger.v3.oas.annotations.Operation;
|
||||
import io.swagger.v3.oas.annotations.tags.Tag;
|
||||
|
||||
/**
|
||||
* @description 文件管理控制器
|
||||
* @filename FileController.java
|
||||
* @author yslg
|
||||
* @copyright xyzh
|
||||
* @since 2025-12-19
|
||||
*/
|
||||
@Tag(name = "文件管理")
|
||||
@RestController
|
||||
@RequestMapping("/file")
|
||||
public class FileController {
|
||||
|
||||
@Autowired
|
||||
private FileService fileService;
|
||||
|
||||
// ========================= 文件上传 =========================
|
||||
|
||||
@Operation(summary = "上传文件")
|
||||
@PostMapping("/upload")
|
||||
public ResultDomain<TbSysFileDTO> uploadFile(
|
||||
@RequestParam("file") MultipartFile file,
|
||||
@RequestParam(value = "module", required = false) String module,
|
||||
@RequestParam(value = "businessId", required = false) String businessId) {
|
||||
return fileService.uploadFile(file, module, businessId);
|
||||
}
|
||||
|
||||
@Operation(summary = "批量上传文件")
|
||||
@PostMapping("/upload/batch")
|
||||
public ResultDomain<TbSysFileDTO> batchUploadFiles(
|
||||
@RequestParam("files") MultipartFile[] files,
|
||||
@RequestParam(value = "module", required = false) String module,
|
||||
@RequestParam(value = "businessId", required = false) String businessId,
|
||||
@RequestParam(value = "uploader", required = false) String uploader) {
|
||||
return fileService.batchUploadFiles(files, module, businessId, uploader);
|
||||
}
|
||||
|
||||
@Operation(summary = "上传临时文件")
|
||||
@PostMapping("/upload/temp")
|
||||
public ResultDomain<TbSysFileDTO> saveTempFile(
|
||||
@RequestParam("file") MultipartFile file,
|
||||
@RequestParam(value = "module", required = false) String module,
|
||||
@RequestParam(value = "businessId", required = false) String businessId) {
|
||||
return fileService.saveTempFile(file, module, businessId);
|
||||
}
|
||||
|
||||
@Operation(summary = "上传新版本文件")
|
||||
@PostMapping("/upload/version")
|
||||
public ResultDomain<TbSysFileDTO> uploadFileVersion(
|
||||
@RequestParam("file") MultipartFile file,
|
||||
@RequestParam(value = "module", required = false) String module,
|
||||
@RequestParam(value = "businessId", required = false) String businessId,
|
||||
@RequestParam("fileRootId") String fileRootId) {
|
||||
return fileService.uploadFileVersion(file, module, businessId, fileRootId);
|
||||
}
|
||||
|
||||
// ========================= 文件查询 =========================
|
||||
|
||||
@Operation(summary = "获取文件信息")
|
||||
@GetMapping("/{fileId}")
|
||||
public ResultDomain<TbSysFileDTO> getFileById(@PathVariable String fileId) {
|
||||
return fileService.getFileById(fileId);
|
||||
}
|
||||
|
||||
// ========================= 文件下载 =========================
|
||||
|
||||
@Operation(summary = "下载文件")
|
||||
@GetMapping("/download/{fileId}")
|
||||
public ResponseEntity<byte[]> downloadFile(@PathVariable String fileId) {
|
||||
ResultDomain<byte[]> result = fileService.downloadFile(fileId);
|
||||
if (!result.getSuccess() || result.getData() == null) {
|
||||
return ResponseEntity.notFound().build();
|
||||
}
|
||||
|
||||
ResultDomain<TbSysFileDTO> fileInfo = fileService.getFileById(fileId);
|
||||
String filename = fileInfo.getData() != null ? fileInfo.getData().getName() : "download";
|
||||
|
||||
return ResponseEntity.ok()
|
||||
.header(HttpHeaders.CONTENT_DISPOSITION, "attachment; filename=\"" + filename + "\"")
|
||||
.contentType(MediaType.APPLICATION_OCTET_STREAM)
|
||||
.body(result.getData());
|
||||
}
|
||||
|
||||
// ========================= 文件删除 =========================
|
||||
|
||||
@Operation(summary = "删除文件")
|
||||
@DeleteMapping("/{fileId}")
|
||||
public ResultDomain<Boolean> deleteFile(@PathVariable String fileId) {
|
||||
return fileService.deleteFile(fileId);
|
||||
}
|
||||
|
||||
@Operation(summary = "批量删除文件")
|
||||
@DeleteMapping("/batch")
|
||||
public ResultDomain<TbSysFileDTO> batchDeleteFiles(@RequestParam("fileIds") String[] fileIds) {
|
||||
return fileService.batchDeleteFiles(fileIds);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -20,7 +20,9 @@ urban-lifeline:
|
||||
|
||||
security:
|
||||
aes:
|
||||
secret-key: 1234567890qwer
|
||||
# AES-256 密钥(Base64编码,必须与所有服务保持一致)
|
||||
# 警告:这是开发环境密钥,生产环境请使用密钥管理系统
|
||||
secret-key: MTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTI=
|
||||
|
||||
# ================== Spring ==================
|
||||
spring:
|
||||
|
||||
Reference in New Issue
Block a user