优化
Some checks failed
Build and Deploy / deploy (push) Has been cancelled

This commit is contained in:
2026-04-26 23:49:40 +08:00
parent 0a4c73d39d
commit e4b0ed3d74

View File

@@ -39,9 +39,12 @@ import cn.iocoder.yudao.module.tik.voice.vo.AppTikVoiceTtsReqVO;
import cn.iocoder.yudao.module.tik.voice.vo.AppTikVoiceTtsRespVO;
import lombok.extern.slf4j.Slf4j;
import org.springframework.data.redis.core.StringRedisTemplate;
import cn.hutool.extra.spring.SpringUtil;
import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.transaction.support.TransactionSynchronization;
import org.springframework.transaction.support.TransactionSynchronizationManager;
import org.springframework.validation.annotation.Validated;
import jakarta.annotation.Resource;
@@ -325,9 +328,15 @@ public class TikUserVoiceServiceImpl implements TikUserVoiceService {
throw exception(VOICE_FILE_NOT_EXISTS);
}
// 4. 异步执行识别
// 4. 事务提交后再异步执行识别,避免异步线程读不到未提交的数据
String fileAccessUrl = fileApi.presignGetUrl(fileDO.getUrl(), PRESIGN_URL_EXPIRATION_SECONDS);
asyncTranscribeVoice(id, fileAccessUrl);
TransactionSynchronizationManager.registerSynchronization(new TransactionSynchronization() {
@Override
public void afterCommit() {
log.info("[transcribeVoice][voiceId={}] 事务已提交,触发异步识别", id);
getSelf().asyncTranscribeVoice(id, fileAccessUrl);
}
});
}
@Override
@@ -970,5 +979,12 @@ public class TikUserVoiceServiceImpl implements TikUserVoiceService {
return "您好,欢迎体验专属音色。";
}
/**
* 通过 Spring 代理获取自身,确保 @Async 注解生效
*/
private TikUserVoiceServiceImpl getSelf() {
return SpringUtil.getBean(getClass());
}
}