From 5f19b9b0d0dafc846c939942f966f28f549f8ad0 Mon Sep 17 00:00:00 2001 From: DaGou12138 <991623169@qq.com> Date: Mon, 19 Jan 2026 15:19:48 +0800 Subject: [PATCH 1/3] =?UTF-8?q?=E4=BC=98=E5=8C=96=E5=AD=97=E5=85=B8?= =?UTF-8?q?=E6=8E=A5=E5=8F=A3=E3=80=81=E6=A8=A1=E5=9E=8B=E6=8E=A5=E5=8F=A3?= =?UTF-8?q?=E9=83=A8=E5=88=86=E4=B8=9A=E5=8A=A1=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/impl/ModelConfigServiceImpl.java | 13 +++++----- .../impl/ModelProviderServiceImpl.java | 9 +------ .../modules/sys/dao/SysDictDataDao.java | 6 +++++ .../service/impl/SysDictDataServiceImpl.java | 26 +++++++++++-------- .../resources/mapper/sys/SysDictDataDao.xml | 19 ++++++++++++++ 5 files changed, 47 insertions(+), 26 deletions(-) diff --git a/main/manager-api/src/main/java/xiaozhi/modules/model/service/impl/ModelConfigServiceImpl.java b/main/manager-api/src/main/java/xiaozhi/modules/model/service/impl/ModelConfigServiceImpl.java index 8b4c3817..24bdb751 100644 --- a/main/manager-api/src/main/java/xiaozhi/modules/model/service/impl/ModelConfigServiceImpl.java +++ b/main/manager-api/src/main/java/xiaozhi/modules/model/service/impl/ModelConfigServiceImpl.java @@ -56,7 +56,7 @@ public class ModelConfigServiceImpl extends BaseServiceImpl() .eq("model_type", modelType) .eq("is_enabled", 1) - .like(StringUtils.isNotBlank(modelName), "model_name", "%" + modelName + "%") + .like(StringUtils.isNotBlank(modelName), "model_name", modelName) .select("id", "model_name")); return ConvertUtils.sourceToTarget(entities, ModelBasicInfoDTO.class); } @@ -67,14 +67,14 @@ public class ModelConfigServiceImpl extends BaseServiceImpl() .eq("model_type", "llm") .eq("is_enabled", 1) - .like(StringUtils.isNotBlank(modelName), "model_name", "%" + modelName + "%") + .like(StringUtils.isNotBlank(modelName), "model_name", modelName) .select("id", "model_name", "config_json")); return entities.stream().map(item -> { LlmModelBasicInfoDTO dto = new LlmModelBasicInfoDTO(); dto.setId(item.getId()); dto.setModelName(item.getModelName()); - String type = item.getConfigJson().get("type").toString(); + String type = item.getConfigJson().getOrDefault("type", "").toString(); dto.setType(type); return dto; }).toList(); @@ -91,14 +91,13 @@ public class ModelConfigServiceImpl extends BaseServiceImpl pageInfo = new Page<>(curPage, pageSize); // 添加排序规则:先按is_enabled降序,再按sort升序 - pageInfo.addOrder(OrderItem.desc("is_enabled")); - pageInfo.addOrder(OrderItem.asc("sort")); + pageInfo.addOrder(OrderItem.desc("is_enabled"), OrderItem.asc("sort")); IPage modelConfigEntityIPage = modelConfigDao.selectPage( pageInfo, new QueryWrapper() .eq("model_type", modelType) - .like(StringUtils.isNotBlank(modelName), "model_name", "%" + modelName + "%")); + .like(StringUtils.isNotBlank(modelName), "model_name", modelName)); return getPageData(modelConfigEntityIPage, ModelConfigDTO.class); } @@ -489,7 +488,7 @@ public class ModelConfigServiceImpl extends BaseServiceImpl intentConfigs = modelConfigDao.selectList( new QueryWrapper() .eq("model_type", "Intent") - .like("config_json", "%" + modelId + "%")); + .like("config_json", modelId)); if (!intentConfigs.isEmpty()) { throw new RenException(ErrorCode.LLM_REFERENCED_BY_INTENT); } diff --git a/main/manager-api/src/main/java/xiaozhi/modules/model/service/impl/ModelProviderServiceImpl.java b/main/manager-api/src/main/java/xiaozhi/modules/model/service/impl/ModelProviderServiceImpl.java index 8b8f8672..049387c3 100644 --- a/main/manager-api/src/main/java/xiaozhi/modules/model/service/impl/ModelProviderServiceImpl.java +++ b/main/manager-api/src/main/java/xiaozhi/modules/model/service/impl/ModelProviderServiceImpl.java @@ -124,12 +124,6 @@ public class ModelProviderServiceImpl extends BaseServiceImpl { * @return 字典类型编码 */ String getTypeByTypeId(Long dictTypeId); + + /** + * 根据字典数据ID集合获取字典类型编码集合 + */ + List getDictTypesByIdList(@Param("dictDataIdList") List dictDataIdList); } diff --git a/main/manager-api/src/main/java/xiaozhi/modules/sys/service/impl/SysDictDataServiceImpl.java b/main/manager-api/src/main/java/xiaozhi/modules/sys/service/impl/SysDictDataServiceImpl.java index a2adb150..0449061b 100644 --- a/main/manager-api/src/main/java/xiaozhi/modules/sys/service/impl/SysDictDataServiceImpl.java +++ b/main/manager-api/src/main/java/xiaozhi/modules/sys/service/impl/SysDictDataServiceImpl.java @@ -1,9 +1,6 @@ package xiaozhi.modules.sys.service.impl; -import java.util.List; -import java.util.Map; -import java.util.Objects; -import java.util.Set; +import java.util.*; import java.util.stream.Collectors; import java.util.stream.Stream; @@ -23,6 +20,7 @@ import xiaozhi.common.redis.RedisKeys; import xiaozhi.common.redis.RedisUtils; import xiaozhi.common.service.impl.BaseServiceImpl; import xiaozhi.common.utils.ConvertUtils; +import xiaozhi.common.utils.ToolUtil; import xiaozhi.modules.sys.dao.SysDictDataDao; import xiaozhi.modules.sys.dao.SysUserDao; import xiaozhi.modules.sys.dto.SysDictDataDTO; @@ -104,13 +102,19 @@ public class SysDictDataServiceImpl extends BaseServiceImpl idList = Arrays.asList(ids); + if (ToolUtil.isNotEmpty(idList)) { + //批量删除redis字典 + List redisKeyList = new ArrayList<>(); + //批量获取字典类型 + List dictTypeList = Optional.ofNullable(baseDao.getDictTypesByIdList(idList)).orElseGet(ArrayList::new); + dictTypeList.forEach(dictType -> redisKeyList.add(RedisKeys.getDictDataByTypeKey(dictType))); + if (ToolUtil.isNotEmpty(redisKeyList)) { + //清除缓存 + redisUtils.delete(redisKeyList); + } + //批量删除字典数据 + deleteBatchIds(Arrays.asList(ids)); } } diff --git a/main/manager-api/src/main/resources/mapper/sys/SysDictDataDao.xml b/main/manager-api/src/main/resources/mapper/sys/SysDictDataDao.xml index 39848831..7d685c18 100644 --- a/main/manager-api/src/main/resources/mapper/sys/SysDictDataDao.xml +++ b/main/manager-api/src/main/resources/mapper/sys/SysDictDataDao.xml @@ -15,4 +15,23 @@ FROM sys_dict_type WHERE id = #{dictTypeId} + + \ No newline at end of file From 29440406486213e4628f1fcd09835f0752db7e85 Mon Sep 17 00:00:00 2001 From: DaGou12138 <991623169@qq.com> Date: Mon, 19 Jan 2026 17:19:45 +0800 Subject: [PATCH 2/3] =?UTF-8?q?=E4=BC=98=E5=8C=96=E9=9F=B3=E8=89=B2?= =?UTF-8?q?=E8=B5=84=E6=BA=90=E7=9B=B8=E5=85=B3=E4=B8=9A=E5=8A=A1=E9=80=BB?= =?UTF-8?q?=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/impl/TimbreServiceImpl.java | 11 ++----- .../service/impl/VoiceCloneServiceImpl.java | 29 ++++++++++++------- 2 files changed, 21 insertions(+), 19 deletions(-) diff --git a/main/manager-api/src/main/java/xiaozhi/modules/timbre/service/impl/TimbreServiceImpl.java b/main/manager-api/src/main/java/xiaozhi/modules/timbre/service/impl/TimbreServiceImpl.java index 9d6ca5c4..a1f018a8 100644 --- a/main/manager-api/src/main/java/xiaozhi/modules/timbre/service/impl/TimbreServiceImpl.java +++ b/main/manager-api/src/main/java/xiaozhi/modules/timbre/service/impl/TimbreServiceImpl.java @@ -1,10 +1,6 @@ package xiaozhi.modules.timbre.service.impl; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.HashMap; -import java.util.List; -import java.util.Map; +import java.util.*; import java.util.stream.Collectors; import org.apache.commons.lang3.StringUtils; @@ -128,10 +124,7 @@ public class TimbreServiceImpl extends BaseServiceImpl if (StringUtils.isNotBlank(voiceName)) { queryWrapper.like("name", voiceName); } - List timbreEntities = timbreDao.selectList(queryWrapper); - if (timbreEntities == null) { - timbreEntities = new ArrayList<>(); - } + List timbreEntities = Optional.ofNullable(timbreDao.selectList(queryWrapper)).orElseGet(ArrayList::new); List voiceDTOs = timbreEntities.stream() .map(entity -> { VoiceDTO dto = new VoiceDTO(entity.getId(), entity.getName()); 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 3550c48b..46d97e30 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 @@ -4,12 +4,8 @@ import java.net.URI; import java.net.http.HttpClient; import java.net.http.HttpRequest; import java.net.http.HttpResponse; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.Base64; -import java.util.HashMap; -import java.util.List; -import java.util.Map; +import java.util.*; +import java.util.stream.Collectors; import org.apache.commons.lang3.StringUtils; import org.springframework.stereotype.Service; @@ -30,8 +26,11 @@ import xiaozhi.common.page.PageData; import xiaozhi.common.service.impl.BaseServiceImpl; import xiaozhi.common.utils.ConvertUtils; import xiaozhi.common.utils.DateUtils; +import xiaozhi.common.utils.ToolUtil; import xiaozhi.modules.model.entity.ModelConfigEntity; import xiaozhi.modules.model.service.ModelConfigService; +import xiaozhi.modules.sys.dao.SysUserDao; +import xiaozhi.modules.sys.entity.SysUserEntity; import xiaozhi.modules.sys.service.SysUserService; import xiaozhi.modules.voiceclone.dao.VoiceCloneDao; import xiaozhi.modules.voiceclone.dto.VoiceCloneDTO; @@ -47,6 +46,7 @@ public class VoiceCloneServiceImpl extends BaseServiceImpl batchInsertList = new ArrayList<>(); // 遍历选择的音色ID,为每个音色ID创建一条记录 int index = 0; - String namePrefix = DateUtils.format(new java.util.Date(), "MMddHHmm"); + String namePrefix = DateUtils.format(new Date(), "MMddHHmm"); for (String voiceId : dto.getVoiceIds()) { index++; VoiceCloneEntity entity = new VoiceCloneEntity(); @@ -115,8 +117,10 @@ public class VoiceCloneServiceImpl extends BaseServiceImpl dtoList = new ArrayList<>(entityList.size()); + // 获取用户名称ID集合 + List userIdList = entityList.stream().map(VoiceCloneEntity::getUserId).collect(Collectors.toList()); + List userList = sysUserDao.selectList(new QueryWrapper().in("id", userIdList)); + Map userMap = userList.stream().collect(Collectors.toMap(SysUserEntity::getId, SysUserEntity::getUsername)); + // 转换每个实体为DTO for (VoiceCloneEntity entity : entityList) { VoiceCloneResponseDTO dto = ConvertUtils.sourceToTarget(entity, VoiceCloneResponseDTO.class); @@ -198,7 +207,7 @@ public class VoiceCloneServiceImpl extends BaseServiceImpl Date: Mon, 19 Jan 2026 17:55:38 +0800 Subject: [PATCH 3/3] =?UTF-8?q?=E4=BC=98=E5=8C=96=E9=9F=B3=E8=89=B2?= =?UTF-8?q?=E8=B5=84=E6=BA=90=E7=9B=B8=E5=85=B3=E4=B8=9A=E5=8A=A1=E9=80=BB?= =?UTF-8?q?=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../modules/voiceclone/service/impl/VoiceCloneServiceImpl.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 46d97e30..5185b8e3 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 @@ -192,7 +192,7 @@ public class VoiceCloneServiceImpl extends BaseServiceImpl dtoList = new ArrayList<>(entityList.size()); // 获取用户名称ID集合 - List userIdList = entityList.stream().map(VoiceCloneEntity::getUserId).collect(Collectors.toList()); + Set userIdList = entityList.stream().map(VoiceCloneEntity::getUserId).collect(Collectors.toSet()); List userList = sysUserDao.selectList(new QueryWrapper().in("id", userIdList)); Map userMap = userList.stream().collect(Collectors.toMap(SysUserEntity::getId, SysUserEntity::getUsername));