From 008456d7cd19f48144bf82261cb811017afb7603 Mon Sep 17 00:00:00 2001 From: rainv123 <2148537152@qq.com> Date: Fri, 17 Oct 2025 11:31:13 +0800 Subject: [PATCH] =?UTF-8?q?update:=E6=96=B0=E5=A2=9E=E9=9F=B3=E8=89=B2?= =?UTF-8?q?=E8=B5=84=E6=BA=90=E6=97=B6=E5=88=A4=E6=96=AD=E5=A3=B0=E9=9F=B3?= =?UTF-8?q?id=E6=98=AF=E5=90=A6=E5=B7=B2=E7=BB=8F=E5=AD=98=E5=9C=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/xiaozhi/common/exception/ErrorCode.java | 1 + .../main/java/xiaozhi/common/utils/MessageUtils.java | 8 ++++---- .../controller/VoiceResourceController.java | 2 ++ .../service/impl/VoiceCloneServiceImpl.java | 11 +++++++++++ .../src/main/resources/i18n/messages_en_US.properties | 3 ++- .../src/main/resources/i18n/messages_zh_CN.properties | 1 + .../src/main/resources/i18n/messages_zh_TW.properties | 3 ++- 7 files changed, 23 insertions(+), 6 deletions(-) diff --git a/main/manager-api/src/main/java/xiaozhi/common/exception/ErrorCode.java b/main/manager-api/src/main/java/xiaozhi/common/exception/ErrorCode.java index c8cc784a..aca6b5d0 100644 --- a/main/manager-api/src/main/java/xiaozhi/common/exception/ErrorCode.java +++ b/main/manager-api/src/main/java/xiaozhi/common/exception/ErrorCode.java @@ -196,4 +196,5 @@ public interface ErrorCode { int VOICE_CLONE_RESPONSE_FORMAT_ERROR = 10156; // 响应格式错误 int VOICE_CLONE_REQUEST_FAILED = 10157; // 请求失败 int VOICE_CLONE_PREFIX = 10158; // 复刻音色前缀 + int VOICE_ID_ALREADY_EXISTS = 10159; // 音色ID已存在 } diff --git a/main/manager-api/src/main/java/xiaozhi/common/utils/MessageUtils.java b/main/manager-api/src/main/java/xiaozhi/common/utils/MessageUtils.java index c346bf3d..abcc2cb3 100644 --- a/main/manager-api/src/main/java/xiaozhi/common/utils/MessageUtils.java +++ b/main/manager-api/src/main/java/xiaozhi/common/utils/MessageUtils.java @@ -11,15 +11,15 @@ import org.springframework.context.i18n.LocaleContextHolder; public class MessageUtils { private static MessageSource messageSource; - static { - messageSource = (MessageSource) SpringContextUtils.getBean("messageSource"); - } - public static String getMessage(int code) { return getMessage(code, new String[0]); } public static String getMessage(int code, String... params) { + if (messageSource == null) { + // 延迟初始化,确保Spring上下文已完全初始化 + messageSource = (MessageSource) SpringContextUtils.getBean("messageSource"); + } return messageSource.getMessage(code + "", params, LocaleContextHolder.getLocale()); } } diff --git a/main/manager-api/src/main/java/xiaozhi/modules/voiceclone/controller/VoiceResourceController.java b/main/manager-api/src/main/java/xiaozhi/modules/voiceclone/controller/VoiceResourceController.java index eff10c18..a4cfa479 100644 --- a/main/manager-api/src/main/java/xiaozhi/modules/voiceclone/controller/VoiceResourceController.java +++ b/main/manager-api/src/main/java/xiaozhi/modules/voiceclone/controller/VoiceResourceController.java @@ -80,6 +80,8 @@ public class VoiceResourceController { try { voiceCloneService.save(dto); return new Result(); + } catch (xiaozhi.common.exception.RenException e) { + return new Result().error(e.getCode(), e.getMsg()); } catch (RuntimeException e) { return new Result().error(ErrorCode.ADD_DATA_FAILED, e.getMessage()); } diff --git a/main/manager-api/src/main/java/xiaozhi/modules/voiceclone/service/impl/VoiceCloneServiceImpl.java b/main/manager-api/src/main/java/xiaozhi/modules/voiceclone/service/impl/VoiceCloneServiceImpl.java index 9ce6abb9..0b1f38b5 100644 --- a/main/manager-api/src/main/java/xiaozhi/modules/voiceclone/service/impl/VoiceCloneServiceImpl.java +++ b/main/manager-api/src/main/java/xiaozhi/modules/voiceclone/service/impl/VoiceCloneServiceImpl.java @@ -74,6 +74,17 @@ public class VoiceCloneServiceImpl extends BaseServiceImpl wrapper = new QueryWrapper<>(); + wrapper.eq("voice_id", voiceId); + wrapper.eq("model_id", dto.getModelId()); + Long count = baseDao.selectCount(wrapper); + if (count > 0) { + throw new RenException(ErrorCode.VOICE_ID_ALREADY_EXISTS, "音色ID " + voiceId + " 已存在"); + } + } + // 遍历选择的音色ID,为每个音色ID创建一条记录 int index = 0; String namePrefix = DateUtils.format(new java.util.Date(), "MMddHHmm"); diff --git a/main/manager-api/src/main/resources/i18n/messages_en_US.properties b/main/manager-api/src/main/resources/i18n/messages_en_US.properties index ffc7a2cb..a052320a 100644 --- a/main/manager-api/src/main/resources/i18n/messages_en_US.properties +++ b/main/manager-api/src/main/resources/i18n/messages_en_US.properties @@ -164,4 +164,5 @@ 10155=Huoshan Engine configuration missing 10156=Response format error, missing BaseResp field 10157=Request failed -10158=Clone Voice: \ No newline at end of file +10158=Clone Voice: +10159=Voice ID already exists \ No newline at end of file diff --git a/main/manager-api/src/main/resources/i18n/messages_zh_CN.properties b/main/manager-api/src/main/resources/i18n/messages_zh_CN.properties index 902e2a50..65afe8b0 100644 --- a/main/manager-api/src/main/resources/i18n/messages_zh_CN.properties +++ b/main/manager-api/src/main/resources/i18n/messages_zh_CN.properties @@ -165,3 +165,4 @@ 10156=\u54CD\u5E94\u683C\u5F0F\u9519\u8BEF\uFF0C\u7F3A\u5C11BaseResp\u5B57\u6BB5 10157=\u8BF7\u6C42\u5931\u8D25 10158=\u514b\u9686\u8272\u97f3: +10159=\u97F3\u8272ID\u5DF2\u5B58\u5728 diff --git a/main/manager-api/src/main/resources/i18n/messages_zh_TW.properties b/main/manager-api/src/main/resources/i18n/messages_zh_TW.properties index 22a753b5..4182f677 100644 --- a/main/manager-api/src/main/resources/i18n/messages_zh_TW.properties +++ b/main/manager-api/src/main/resources/i18n/messages_zh_TW.properties @@ -164,4 +164,5 @@ 10155=\u706B\u5C71\u5F15\u64CE\u7F3A\u5C11appid\u6216access_token 10156=\u97FF\u61C9\u683C\u5F0F\u932F\u8AA4\uFF0C\u7F3A\u5C11BaseResp\u5B57\u6BB5 10157=\u8ACB\u6C42\u5931\u6557 -10158=\u514b\u9686\u8a9e\u97f3: \ No newline at end of file +10158=\u514b\u9686\u8a9e\u97f3: +10159=\u97F3\u8272ID\u5DF2\u5B58\u5728 \ No newline at end of file