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 extends Serializable> 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);