服务调用

This commit is contained in:
2025-12-19 15:52:48 +08:00
parent 5f2301e16c
commit 428b8ce28e
30 changed files with 380 additions and 59 deletions

View File

@@ -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);
}
}

View File

@@ -20,7 +20,9 @@ urban-lifeline:
security:
aes:
secret-key: 1234567890qwer
# AES-256 密钥Base64编码必须与所有服务保持一致
# 警告:这是开发环境密钥,生产环境请使用密钥管理系统
secret-key: MTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTI=
# ================== Spring ==================
spring: