diff --git a/main/manager-api/pom.xml b/main/manager-api/pom.xml index b2ef83c8..07657986 100644 --- a/main/manager-api/pom.xml +++ b/main/manager-api/pom.xml @@ -272,6 +272,16 @@ org.springframework.boot spring-boot-maven-plugin + + org.apache.maven.plugins + maven-compiler-plugin + + full + + -Xlint:deprecation,unchecked + + + org.apache.maven.plugins maven-surefire-plugin diff --git a/main/manager-api/src/main/java/xiaozhi/common/interceptor/DataFilterInterceptor.java b/main/manager-api/src/main/java/xiaozhi/common/interceptor/DataFilterInterceptor.java index 0457686b..c64d774c 100644 --- a/main/manager-api/src/main/java/xiaozhi/common/interceptor/DataFilterInterceptor.java +++ b/main/manager-api/src/main/java/xiaozhi/common/interceptor/DataFilterInterceptor.java @@ -67,7 +67,7 @@ public class DataFilterInterceptor implements InnerInterceptor { private String getSelect(String buildSql, DataScope scope) { try { Select select = (Select) CCJSqlParserUtil.parse(buildSql); - PlainSelect plainSelect = (PlainSelect) select.getSelectBody(); + PlainSelect plainSelect = select.getPlainSelect(); Expression expression = plainSelect.getWhere(); if (expression == null) { @@ -82,4 +82,4 @@ public class DataFilterInterceptor implements InnerInterceptor { return buildSql; } } -} \ No newline at end of file +} diff --git a/main/manager-api/src/main/java/xiaozhi/common/service/impl/BaseServiceImpl.java b/main/manager-api/src/main/java/xiaozhi/common/service/impl/BaseServiceImpl.java index 30e610e1..f213a0ec 100644 --- a/main/manager-api/src/main/java/xiaozhi/common/service/impl/BaseServiceImpl.java +++ b/main/manager-api/src/main/java/xiaozhi/common/service/impl/BaseServiceImpl.java @@ -81,8 +81,8 @@ public abstract class BaseServiceImpl, T> implements Bas // 处理排序字段 if (orderField instanceof String) { orderFields.add((String) orderField); - } else if (orderField instanceof List) { - orderFields.addAll((List) orderField); + } else if (orderField instanceof List fields) { + fields.forEach(field -> orderFields.add(String.class.cast(field))); } // 有排序字段则排序 @@ -142,11 +142,12 @@ public abstract class BaseServiceImpl, T> implements Bas return SqlHelper.retBool(result); } - protected Class currentMapperClass() { - return (Class) ReflectionKit.getSuperClassGenericType(this.getClass(), BaseServiceImpl.class, 0); + protected Class currentMapperClass() { + return ReflectionKit.getSuperClassGenericType(this.getClass(), BaseServiceImpl.class, 0); } @Override + @SuppressWarnings("unchecked") public Class currentModelClass() { return (Class) ReflectionKit.getSuperClassGenericType(this.getClass(), BaseServiceImpl.class, 1); } @@ -226,6 +227,6 @@ public abstract class BaseServiceImpl, T> implements Bas @Override public boolean deleteBatchIds(Collection idList) { - return SqlHelper.retBool(baseDao.deleteBatchIds(idList)); + return SqlHelper.retBool(baseDao.deleteByIds(idList)); } } diff --git a/main/manager-api/src/main/java/xiaozhi/common/service/impl/CrudServiceImpl.java b/main/manager-api/src/main/java/xiaozhi/common/service/impl/CrudServiceImpl.java index 9a1bf39e..e3886e7c 100644 --- a/main/manager-api/src/main/java/xiaozhi/common/service/impl/CrudServiceImpl.java +++ b/main/manager-api/src/main/java/xiaozhi/common/service/impl/CrudServiceImpl.java @@ -24,6 +24,7 @@ import xiaozhi.common.utils.ConvertUtils; public abstract class CrudServiceImpl, T, D> extends BaseServiceImpl implements CrudService { + @SuppressWarnings("unchecked") protected Class currentDtoClass() { return (Class) ReflectionKit.getSuperClassGenericType(getClass(), CrudServiceImpl.class, 2); } @@ -70,6 +71,6 @@ public abstract class CrudServiceImpl, T, D> extends Bas @Override public void delete(Serializable[] ids) { - baseDao.deleteBatchIds(Arrays.asList(ids)); + baseDao.deleteByIds(Arrays.asList(ids)); } -} \ No newline at end of file +} diff --git a/main/manager-api/src/main/java/xiaozhi/common/utils/SensitiveDataUtils.java b/main/manager-api/src/main/java/xiaozhi/common/utils/SensitiveDataUtils.java index 4d5715cc..0f4aa099 100644 --- a/main/manager-api/src/main/java/xiaozhi/common/utils/SensitiveDataUtils.java +++ b/main/manager-api/src/main/java/xiaozhi/common/utils/SensitiveDataUtils.java @@ -75,11 +75,11 @@ public class SensitiveDataUtils { Object value = jsonObject.get(key); if (SENSITIVE_FIELDS.contains(key.toLowerCase()) && value instanceof String) { - result.put(key, maskMiddle((String) value)); + result.set(key, maskMiddle((String) value)); } else if (value instanceof JSONObject) { - result.put(key, maskSensitiveFields((JSONObject) value)); + result.set(key, maskSensitiveFields((JSONObject) value)); } else { - result.put(key, value); + result.set(key, value); } } @@ -162,4 +162,4 @@ public class SensitiveDataUtils { } } } -} \ No newline at end of file +} diff --git a/main/manager-api/src/main/java/xiaozhi/common/xss/SqlFilter.java b/main/manager-api/src/main/java/xiaozhi/common/xss/SqlFilter.java index 2bf4ab92..81f5534a 100644 --- a/main/manager-api/src/main/java/xiaozhi/common/xss/SqlFilter.java +++ b/main/manager-api/src/main/java/xiaozhi/common/xss/SqlFilter.java @@ -22,10 +22,10 @@ public class SqlFilter { return null; } // 去掉'|"|;|\字符 - str = StringUtils.replace(str, "'", ""); - str = StringUtils.replace(str, "\"", ""); - str = StringUtils.replace(str, ";", ""); - str = StringUtils.replace(str, "\\", ""); + str = str.replace("'", ""); + str = str.replace("\"", ""); + str = str.replace(";", ""); + str = str.replace("\\", ""); // 转换成小写 str = str.toLowerCase(); diff --git a/main/manager-api/src/main/java/xiaozhi/modules/agent/dto/AgentDTO.java b/main/manager-api/src/main/java/xiaozhi/modules/agent/dto/AgentDTO.java index 77028f2a..693e1caf 100644 --- a/main/manager-api/src/main/java/xiaozhi/modules/agent/dto/AgentDTO.java +++ b/main/manager-api/src/main/java/xiaozhi/modules/agent/dto/AgentDTO.java @@ -39,7 +39,7 @@ public class AgentDTO { private String systemPrompt; @Schema(description = "总结记忆", example = "构建可生长的动态记忆网络,在有限空间内保留关键信息的同时,智能维护信息演变轨迹\n" + - "根据对话记录,总结user的重要信息,以便在未来的对话中提供更个性化的服务", required = false) + "根据对话记录,总结user的重要信息,以便在未来的对话中提供更个性化的服务", requiredMode = Schema.RequiredMode.NOT_REQUIRED) private String summaryMemory; @Schema(description = "最后连接时间", example = "2024-03-20 10:00:00") @@ -50,4 +50,4 @@ public class AgentDTO { @Schema(description = "标签列表") private List tags; -} \ No newline at end of file +} diff --git a/main/manager-api/src/main/java/xiaozhi/modules/agent/dto/AgentMemoryDTO.java b/main/manager-api/src/main/java/xiaozhi/modules/agent/dto/AgentMemoryDTO.java index ed210c60..61e61a32 100644 --- a/main/manager-api/src/main/java/xiaozhi/modules/agent/dto/AgentMemoryDTO.java +++ b/main/manager-api/src/main/java/xiaozhi/modules/agent/dto/AgentMemoryDTO.java @@ -14,6 +14,6 @@ public class AgentMemoryDTO implements Serializable { private static final long serialVersionUID = 1L; @Schema(description = "总结记忆", example = "构建可生长的动态记忆网络,在有限空间内保留关键信息的同时,智能维护信息演变轨迹\n" + - "根据对话记录,总结user的重要信息,以便在未来的对话中提供更个性化的服务", required = false) + "根据对话记录,总结user的重要信息,以便在未来的对话中提供更个性化的服务", requiredMode = Schema.RequiredMode.NOT_REQUIRED) private String summaryMemory; -} \ No newline at end of file +} diff --git a/main/manager-api/src/main/java/xiaozhi/modules/agent/dto/AgentUpdateDTO.java b/main/manager-api/src/main/java/xiaozhi/modules/agent/dto/AgentUpdateDTO.java index 7c939630..5859c4fb 100644 --- a/main/manager-api/src/main/java/xiaozhi/modules/agent/dto/AgentUpdateDTO.java +++ b/main/manager-api/src/main/java/xiaozhi/modules/agent/dto/AgentUpdateDTO.java @@ -39,10 +39,10 @@ public class AgentUpdateDTO implements Serializable { @Schema(description = "小模型标识", example = "slm_model_02", nullable = true) private String slmModelId; - @Schema(description = "VLLM模型标识", example = "vllm_model_02", required = false) + @Schema(description = "VLLM模型标识", example = "vllm_model_02", requiredMode = Schema.RequiredMode.NOT_REQUIRED) private String vllmModelId; - @Schema(description = "语音合成模型标识", example = "tts_model_02", required = false) + @Schema(description = "语音合成模型标识", example = "tts_model_02", requiredMode = Schema.RequiredMode.NOT_REQUIRED) private String ttsModelId; @Schema(description = "音色标识", example = "voice_02", nullable = true) diff --git a/main/manager-api/src/main/java/xiaozhi/modules/agent/entity/AgentEntity.java b/main/manager-api/src/main/java/xiaozhi/modules/agent/entity/AgentEntity.java index ce752b01..f9a390a5 100644 --- a/main/manager-api/src/main/java/xiaozhi/modules/agent/entity/AgentEntity.java +++ b/main/manager-api/src/main/java/xiaozhi/modules/agent/entity/AgentEntity.java @@ -74,7 +74,7 @@ public class AgentEntity { private String systemPrompt; @Schema(description = "总结记忆", example = "构建可生长的动态记忆网络,在有限空间内保留关键信息的同时,智能维护信息演变轨迹\n" + - "根据对话记录,总结user的重要信息,以便在未来的对话中提供更个性化的服务", required = false) + "根据对话记录,总结user的重要信息,以便在未来的对话中提供更个性化的服务", requiredMode = Schema.RequiredMode.NOT_REQUIRED) private String summaryMemory; @Schema(description = "语言编码") @@ -97,4 +97,4 @@ public class AgentEntity { @Schema(description = "更新时间") private Date updatedAt; -} \ No newline at end of file +} diff --git a/main/manager-api/src/main/java/xiaozhi/modules/agent/service/impl/AgentTagServiceImpl.java b/main/manager-api/src/main/java/xiaozhi/modules/agent/service/impl/AgentTagServiceImpl.java index 2bcee73a..51886484 100644 --- a/main/manager-api/src/main/java/xiaozhi/modules/agent/service/impl/AgentTagServiceImpl.java +++ b/main/manager-api/src/main/java/xiaozhi/modules/agent/service/impl/AgentTagServiceImpl.java @@ -133,7 +133,7 @@ public class AgentTagServiceImpl extends BaseServiceImpl tagIdEntities = baseDao.selectBatchIds(tagIds); + List tagIdEntities = baseDao.selectByIds(tagIds); for (AgentTagEntity tag : tagIdEntities) { if (tag != null && (currentTagNames.contains(tag.getTagName()) || newTagNames.contains(tag.getTagName()))) { diff --git a/main/manager-api/src/main/java/xiaozhi/modules/device/service/impl/OtaServiceImpl.java b/main/manager-api/src/main/java/xiaozhi/modules/device/service/impl/OtaServiceImpl.java index 5e22265f..a743c5eb 100644 --- a/main/manager-api/src/main/java/xiaozhi/modules/device/service/impl/OtaServiceImpl.java +++ b/main/manager-api/src/main/java/xiaozhi/modules/device/service/impl/OtaServiceImpl.java @@ -56,7 +56,7 @@ public class OtaServiceImpl extends BaseServiceImpl implement @Override public void delete(String[] ids) { - baseDao.deleteBatchIds(Arrays.asList(ids)); + baseDao.deleteByIds(Arrays.asList(ids)); } @Override @@ -82,4 +82,4 @@ public class OtaServiceImpl extends BaseServiceImpl implement .last("LIMIT 1"); return baseDao.selectOne(wrapper); } -} \ No newline at end of file +} diff --git a/main/manager-api/src/main/java/xiaozhi/modules/llm/service/impl/OpenAIStyleLLMServiceImpl.java b/main/manager-api/src/main/java/xiaozhi/modules/llm/service/impl/OpenAIStyleLLMServiceImpl.java index 005d2adf..04f9bf0c 100644 --- a/main/manager-api/src/main/java/xiaozhi/modules/llm/service/impl/OpenAIStyleLLMServiceImpl.java +++ b/main/manager-api/src/main/java/xiaozhi/modules/llm/service/impl/OpenAIStyleLLMServiceImpl.java @@ -116,13 +116,11 @@ public class OpenAIStyleLLMServiceImpl implements LLMService { Map requestBody = new HashMap<>(); requestBody.put("model", model != null ? model : "gpt-3.5-turbo"); - Map[] messages = new Map[1]; Map message = new HashMap<>(); message.put("role", "user"); message.put("content", prompt); - messages[0] = message; - requestBody.put("messages", messages); + requestBody.put("messages", List.of(message)); requestBody.put("temperature", temperature != null ? temperature : 0.7); requestBody.put("max_tokens", maxTokens != null ? maxTokens : 2000); @@ -212,13 +210,11 @@ public class OpenAIStyleLLMServiceImpl implements LLMService { Map requestBody = new HashMap<>(); requestBody.put("model", model != null ? model : "gpt-3.5-turbo"); - Map[] messages = new Map[1]; Map message = new HashMap<>(); message.put("role", "user"); message.put("content", prompt); - messages[0] = message; - requestBody.put("messages", messages); + requestBody.put("messages", List.of(message)); requestBody.put("temperature", 0.2); requestBody.put("max_tokens", 2000); @@ -368,13 +364,11 @@ public class OpenAIStyleLLMServiceImpl implements LLMService { Map requestBody = new HashMap<>(); requestBody.put("model", model != null ? model : "gpt-3.5-turbo"); - Map[] messages = new Map[1]; Map message = new HashMap<>(); message.put("role", "user"); message.put("content", prompt); - messages[0] = message; - requestBody.put("messages", messages); + requestBody.put("messages", List.of(message)); requestBody.put("temperature", 0.3); requestBody.put("max_tokens", 50); @@ -422,4 +416,4 @@ public class OpenAIStyleLLMServiceImpl implements LLMService { return null; } -} \ No newline at end of file +} 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 3f6cd4c8..a0be4913 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 @@ -362,14 +362,14 @@ public class ModelConfigServiceImpl extends BaseServiceImpl ids) { - if (modelProviderDao.deleteBatchIds(ids) == 0) { + if (modelProviderDao.deleteByIds(ids) == 0) { throw new RenException(ErrorCode.DELETE_DATA_FAILED); } } diff --git a/main/manager-api/src/main/java/xiaozhi/modules/sys/dto/SysUserDTO.java b/main/manager-api/src/main/java/xiaozhi/modules/sys/dto/SysUserDTO.java index ff066341..ef5f71b4 100644 --- a/main/manager-api/src/main/java/xiaozhi/modules/sys/dto/SysUserDTO.java +++ b/main/manager-api/src/main/java/xiaozhi/modules/sys/dto/SysUserDTO.java @@ -31,7 +31,7 @@ public class SysUserDTO implements Serializable { @NotNull(message = "{id.require}", groups = UpdateGroup.class) private Long id; - @Schema(description = "用户名", required = true) + @Schema(description = "用户名", requiredMode = Schema.RequiredMode.REQUIRED) @NotBlank(message = "{sysuser.username.require}", groups = DefaultGroup.class) private String username; @@ -40,14 +40,14 @@ public class SysUserDTO implements Serializable { @NotBlank(message = "{sysuser.password.require}", groups = AddGroup.class) private String password; - @Schema(description = "姓名", required = true) + @Schema(description = "姓名", requiredMode = Schema.RequiredMode.REQUIRED) @NotBlank(message = "{sysuser.realname.require}", groups = DefaultGroup.class) private String realName; @Schema(description = "头像") private String headUrl; - @Schema(description = "性别 0:男 1:女 2:保密", required = true) + @Schema(description = "性别 0:男 1:女 2:保密", requiredMode = Schema.RequiredMode.REQUIRED) @Range(min = 0, max = 2, message = "{sysuser.gender.range}", groups = DefaultGroup.class) private Integer gender; @@ -58,11 +58,11 @@ public class SysUserDTO implements Serializable { @Schema(description = "手机号") private String mobile; - @Schema(description = "部门ID", required = true) + @Schema(description = "部门ID", requiredMode = Schema.RequiredMode.REQUIRED) @NotNull(message = "{sysuser.deptId.require}", groups = DefaultGroup.class) private Long deptId; - @Schema(description = "状态 0:停用 1:正常", required = true) + @Schema(description = "状态 0:停用 1:正常", requiredMode = Schema.RequiredMode.REQUIRED) @Range(min = 0, max = 1, message = "{sysuser.status.range}", groups = DefaultGroup.class) private Integer status; @@ -84,4 +84,4 @@ public class SysUserDTO implements Serializable { @Schema(description = "部门名称") private String deptName; -} \ No newline at end of file +} 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 0449061b..1e3e2513 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 @@ -138,7 +138,7 @@ public class SysDictDataServiceImpl extends BaseServiceImpl sysUserEntities = sysUserDao.selectBatchIds(userIds); + List sysUserEntities = sysUserDao.selectByIds(userIds); // 把List转成Map,Map Map userNameMap = sysUserEntities.stream().collect(Collectors.toMap(SysUserEntity::getId, SysUserEntity::getUsername, (existing, replacement) -> existing)); @@ -185,4 +185,4 @@ public class SysDictDataServiceImpl extends BaseServiceImpl sysUserEntities = sysUserDao.selectBatchIds(userIds); + List sysUserEntities = sysUserDao.selectByIds(userIds); // 把List转成Map,Map Map userNameMap = sysUserEntities.stream().collect(Collectors.toMap(SysUserEntity::getId, SysUserEntity::getUsername, (existing, replacement) -> existing)); @@ -151,4 +151,4 @@ public class SysDictTypeServiceImpl extends BaseServiceImpl @Override @Transactional(rollbackFor = Exception.class) public void delete(String[] ids) { - baseDao.deleteBatchIds(Arrays.asList(ids)); + baseDao.deleteByIds(Arrays.asList(ids)); } @Override 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 456239ab..34ed3d8a 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 @@ -127,7 +127,7 @@ public class VoiceCloneServiceImpl extends BaseServiceImpl ids = List.of(1L, 2L); + service.baseDao = mapper; + when(mapper.deleteByIds(ids)).thenReturn(2).thenReturn(0); + + assertTrue(service.deleteBatchIds(ids)); + assertFalse(service.deleteBatchIds(ids)); + + verify(mapper, times(2)).deleteByIds(ids); + } + @Test void activeTransactionSynchronizationUsesTransactionAwareCommitAndLifecycle() { SqlSessionFactory sqlSessionFactory = mock(SqlSessionFactory.class);