录音管理功能联调
This commit is contained in:
@@ -3,6 +3,7 @@ package com.rj.service.impl;
|
||||
import com.rj.entity.AudioManagement;
|
||||
import com.rj.service.IFileUploadService;
|
||||
import com.rj.service.IAudioManagementService;
|
||||
import com.rj.service.MinIOService;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.beans.factory.annotation.Value;
|
||||
@@ -32,6 +33,9 @@ public class FileUploadServiceImpl implements IFileUploadService {
|
||||
@Autowired
|
||||
private IAudioManagementService audioManagementService;
|
||||
|
||||
@Autowired
|
||||
private MinIOService minIOService;
|
||||
|
||||
@Value("${app.audio.upload.path:uploads/audio}")
|
||||
private String uploadPath;
|
||||
|
||||
@@ -74,31 +78,39 @@ public class FileUploadServiceImpl implements IFileUploadService {
|
||||
return result;
|
||||
}
|
||||
|
||||
// 创建上传目录
|
||||
Path uploadDir = Paths.get(uploadPath);
|
||||
if (!Files.exists(uploadDir)) {
|
||||
Files.createDirectories(uploadDir);
|
||||
// 直接上传到MinIO,不保存到本地
|
||||
log.info("开始上传文件到MinIO...");
|
||||
String fileUrl = minIOService.uploadFile(file);
|
||||
log.info("文件上传成功,URL: {}", fileUrl);
|
||||
|
||||
// 获取录音记录并更新
|
||||
AudioManagement audio = audioManagementService.getById(audioId);
|
||||
if (audio != null) {
|
||||
// 更新录音记录的文件信息
|
||||
String fileExtension = getFileExtension(originalFilename);
|
||||
|
||||
audio.setAudioFileUrl(fileUrl);
|
||||
audio.setAudioFileSize(file.getSize());
|
||||
audio.setAudioFileOriginalName(originalFilename);
|
||||
audio.setAudioFileExtension(fileExtension);
|
||||
audio.setUploadTime(java.time.LocalDateTime.now());
|
||||
audio.setUpdateTime(java.time.LocalDateTime.now());
|
||||
|
||||
// 保存更新
|
||||
audioManagementService.updateById(audio);
|
||||
|
||||
log.info("录音记录更新成功:audioId={}", audioId);
|
||||
} else {
|
||||
log.warn("未找到对应的录音记录:audioId={}", audioId);
|
||||
}
|
||||
|
||||
// 生成文件名
|
||||
String fileExtension = getFileExtension(originalFilename);
|
||||
String fileName = audioId+"_"+UUID.randomUUID() + "." + fileExtension;
|
||||
Path filePath = uploadDir.resolve(fileName);
|
||||
|
||||
// 保存文件
|
||||
Files.copy(file.getInputStream(), filePath);
|
||||
|
||||
// 生成访问URL
|
||||
String fileUrl = accessUrl + fileName;
|
||||
|
||||
result.put("success", true);
|
||||
result.put("message", "文件上传成功");
|
||||
result.put("fileName", fileName);
|
||||
result.put("fileUrl", fileUrl);
|
||||
result.put("fileSize", file.getSize());
|
||||
result.put("originalName", originalFilename);
|
||||
|
||||
log.info("音频文件上传成功:audioId={}, fileName={}, size={}", audioId, fileName, file.getSize());
|
||||
log.info("音频文件上传成功:audioId={}, minioUrl={}, size={}", audioId, fileUrl, file.getSize());
|
||||
|
||||
} catch (Exception e) {
|
||||
log.error("音频文件上传失败:audioId={}, error={}", audioId, e.getMessage(), e);
|
||||
@@ -240,6 +252,55 @@ public class FileUploadServiceImpl implements IFileUploadService {
|
||||
return files != null && files.length > 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Map<String, Object> uploadAudioFileToMinIO(MultipartFile file, String audioId) throws IOException {
|
||||
Map<String, Object> result = new HashMap<>();
|
||||
|
||||
try {
|
||||
// 验证文件
|
||||
if (file == null || file.isEmpty()) {
|
||||
result.put("success", false);
|
||||
result.put("message", "文件不能为空");
|
||||
return result;
|
||||
}
|
||||
|
||||
// 验证文件大小
|
||||
long maxSize = parseFileSize(maxFileSize);
|
||||
if (file.getSize() > maxSize) {
|
||||
result.put("success", false);
|
||||
result.put("message", "文件大小超过限制,最大允许 " + maxFileSize);
|
||||
return result;
|
||||
}
|
||||
|
||||
// 验证文件格式
|
||||
String originalFilename = file.getOriginalFilename();
|
||||
if (!isValidAudioFormat(originalFilename)) {
|
||||
result.put("success", false);
|
||||
result.put("message", "不支持的音频格式,支持的格式:" + String.join(", ", SUPPORTED_AUDIO_FORMATS));
|
||||
return result;
|
||||
}
|
||||
|
||||
// 使用MinIO上传文件
|
||||
String minioUrl = minIOService.uploadFile(file);
|
||||
|
||||
result.put("success", true);
|
||||
result.put("message", "文件上传到MinIO成功");
|
||||
result.put("fileUrl", minioUrl);
|
||||
result.put("fileSize", file.getSize());
|
||||
result.put("originalName", originalFilename);
|
||||
result.put("audioId", audioId);
|
||||
|
||||
log.info("音频文件上传到MinIO成功:audioId={}, minioUrl={}, size={}", audioId, minioUrl, file.getSize());
|
||||
|
||||
} catch (Exception e) {
|
||||
log.error("音频文件上传到MinIO失败:audioId={}, error={}", audioId, e.getMessage(), e);
|
||||
result.put("success", false);
|
||||
result.put("message", "文件上传到MinIO失败:" + e.getMessage());
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
/**
|
||||
* 验证音频文件格式
|
||||
*/
|
||||
|
||||
Reference in New Issue
Block a user