Browse Source

feat (1.0) 增加录音文件转码兼容。

main
hwrdt 3 weeks ago
parent
commit
acc5f386f9
  1. 29
      src/main/java/com/threecloud/dataserviceyy/service/VaaSyncService.java
  2. 2
      src/main/java/com/threecloud/dataserviceyy/util/OssFileService.java

29
src/main/java/com/threecloud/dataserviceyy/service/VaaSyncService.java

@ -193,12 +193,13 @@ public class VaaSyncService {
vaaHttpUtil.httpDown(fileUrl, localPath, authToken); vaaHttpUtil.httpDown(fileUrl, localPath, authToken);
logger.info("【重新同步】录音下载完成: {}", fileName); logger.info("【重新同步】录音下载完成: {}", fileName);
// 8. 上传OSS(路径与原记录一致,覆盖同名文件,业务表无需更新) // 8. 上传OSS(复用原OSS文件名覆盖,业务表无需更新)
String ossFileName = extractOssFileName(record.getRecordingFilePath(), fileName);
String ossPath = "voice/" + cityCode + "/" + new SimpleDateFormat("yyyy-MM-dd").format(callStartTime) + "/"; String ossPath = "voice/" + cityCode + "/" + new SimpleDateFormat("yyyy-MM-dd").format(callStartTime) + "/";
OssFileResponse ossResponse = uploadRecording(localFile.toFile(), fileName, ossPath); OssFileResponse ossResponse = uploadRecording(localFile.toFile(), ossFileName, ossPath);
String previewUrl = ossResponse.getFileUrl(); String previewUrl = ossResponse.getFileUrl();
if (previewUrl == null || previewUrl.trim().isEmpty()) { if (previewUrl == null || previewUrl.trim().isEmpty()) {
throw new IllegalStateException("OSS上传成功但未返回文件地址: " + fileName); throw new IllegalStateException("OSS上传成功但未返回文件地址: " + ossFileName);
} }
ossFilePath = previewUrl; ossFilePath = previewUrl;
@ -261,6 +262,28 @@ public class VaaSyncService {
return callRecordId; return callRecordId;
} }
/**
* 从原录音的 OSS 地址中提取 OSS 文件名URL 最后一段用于重新同步时覆盖原文件
* 若地址为空或无法提取则回退为录音盒原始文件名
*/
private String extractOssFileName(String recordingFilePath, String fallback) {
if (StringUtils.hasText(recordingFilePath)) {
String path = recordingFilePath;
int queryIdx = path.indexOf('?');
if (queryIdx >= 0) {
path = path.substring(0, queryIdx);
}
int slashIdx = path.lastIndexOf('/');
if (slashIdx >= 0 && slashIdx < path.length() - 1) {
String name = path.substring(slashIdx + 1);
if (StringUtils.hasText(name)) {
return name;
}
}
}
return fallback;
}
/** /**
* 保存重新同步操作记录到 mid_voice_resync_log * 保存重新同步操作记录到 mid_voice_resync_log
*/ */

2
src/main/java/com/threecloud/dataserviceyy/util/OssFileService.java

@ -89,6 +89,8 @@ public class OssFileService {
MultiValueMap<String, Object> body = new LinkedMultiValueMap<>(); MultiValueMap<String, Object> body = new LinkedMultiValueMap<>();
body.add("file", resource); body.add("file", resource);
body.add("path", path); body.add("path", path);
// 指定最终文件名,OSS 服务端按此名字落盘;同名文件覆盖
body.add("fileName", fileName);
HttpEntity<MultiValueMap<String, Object>> requestEntity = new HttpEntity<>(body, headers); HttpEntity<MultiValueMap<String, Object>> requestEntity = new HttpEntity<>(body, headers);

Loading…
Cancel
Save