完成在小程序端的功能
This commit is contained in:
@@ -8,6 +8,7 @@ import com.rj.dto.AsrResponse;
|
||||
import com.rj.entity.AudioManagementSegments;
|
||||
import com.rj.service.IAudioManagementSegmentsService;
|
||||
import com.rj.service.ITtsRequestLogService;
|
||||
import com.rj.tenant.TenantContextHolder;
|
||||
import io.swagger.v3.oas.annotations.Operation;
|
||||
import io.swagger.v3.oas.annotations.Parameter;
|
||||
import io.swagger.v3.oas.annotations.tags.Tag;
|
||||
@@ -236,7 +237,7 @@ public class AudioManagementSegmentsController {
|
||||
LambdaUpdateWrapper<AudioManagementSegments> updateWrapper = new LambdaUpdateWrapper<>();
|
||||
updateWrapper.eq(AudioManagementSegments::getId, id);
|
||||
|
||||
boolean success = audioManagementSegmentsService.update(updateEntity, updateWrapper);
|
||||
boolean success = audioManagementSegmentsService.updateNoTenant(updateEntity, updateWrapper);
|
||||
|
||||
if (!success) {
|
||||
result.put("success", false);
|
||||
@@ -263,15 +264,29 @@ public class AudioManagementSegmentsController {
|
||||
}
|
||||
|
||||
// TODO 2: 启用异步线程处理转文本
|
||||
// 获取租户ID:优先从segment对象获取,如果没有则从当前线程的租户上下文获取
|
||||
final String tenantId = segment.getTenantId() != null
|
||||
? segment.getTenantId()
|
||||
: TenantContextHolder.getTenantId();
|
||||
final String finalPresignedUrl = presignedUrl;
|
||||
final String segmentId = id;
|
||||
final String audioFileName = segment.getAudioFileOriginalName();
|
||||
|
||||
CompletableFuture.runAsync(() -> {
|
||||
try {
|
||||
log.info("开始异步转文本处理,ID: {}", segmentId);
|
||||
// 在异步线程中设置租户上下文
|
||||
if (tenantId != null && !tenantId.trim().isEmpty()) {
|
||||
TenantContextHolder.setTenantId(tenantId);
|
||||
log.info("异步线程中设置租户ID: {}, segmentId: {}", tenantId, segmentId);
|
||||
} else {
|
||||
log.warn("租户ID为空,segmentId: {}", segmentId);
|
||||
}
|
||||
|
||||
log.info("开始异步转文本处理,ID: {}, tenantId: {}", segmentId, tenantId);
|
||||
|
||||
AsrRequest asrRequest = new AsrRequest();
|
||||
asrRequest.setAudioUrl(finalPresignedUrl);
|
||||
asrRequest.setAudioName(segment.getAudioFileOriginalName());
|
||||
asrRequest.setAudioName(audioFileName);
|
||||
asrRequest.setModel("paraformer-v2"); // 使用默认模型
|
||||
asrRequest.setFormat("wav"); // 默认格式
|
||||
asrRequest.setSampleRate(16000); // 默认采样率
|
||||
@@ -290,19 +305,26 @@ public class AudioManagementSegmentsController {
|
||||
|
||||
LambdaUpdateWrapper<AudioManagementSegments> textUpdateWrapper = new LambdaUpdateWrapper<>();
|
||||
textUpdateWrapper.eq(AudioManagementSegments::getId, segmentId);
|
||||
|
||||
|
||||
// 使用正常的update方法,因为已经设置了租户上下文
|
||||
boolean updateSuccess = audioManagementSegmentsService.update(textUpdateEntity, textUpdateWrapper);
|
||||
|
||||
|
||||
if (updateSuccess) {
|
||||
log.info("转文本结果保存成功,ID: {}, 文本长度: {}", segmentId, asrResponse.getText().length());
|
||||
log.info("转文本结果保存成功,ID: {}, tenantId: {}, 文本长度: {}", segmentId, tenantId, asrResponse.getText().length());
|
||||
} else {
|
||||
log.error("转文本结果保存失败,ID: {}", segmentId);
|
||||
log.error("转文本结果保存失败,ID: {}, tenantId: {}", segmentId, tenantId);
|
||||
}
|
||||
} else {
|
||||
String errorMsg = asrResponse != null ? asrResponse.getMessage() : "ASR响应为空";
|
||||
log.error("转文本失败,ID: {}, error: {}", segmentId, errorMsg);
|
||||
log.error("转文本失败,ID: {}, tenantId: {}, error: {}", segmentId, tenantId, errorMsg);
|
||||
}
|
||||
} catch (Exception e) {
|
||||
log.error("异步转文本处理异常,ID: {}, error: {}", segmentId, e.getMessage(), e);
|
||||
log.error("异步转文本处理异常,ID: {}, tenantId: {}, error: {}", segmentId, tenantId, e.getMessage(), e);
|
||||
} finally {
|
||||
// 清理租户上下文,防止线程复用导致租户串用
|
||||
TenantContextHolder.clear();
|
||||
log.debug("清理异步线程租户上下文,segmentId: {}", segmentId);
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
Reference in New Issue
Block a user