diff --git a/main/manager-api/src/main/java/xiaozhi/modules/agent/service/AgentPluginMappingService.java b/main/manager-api/src/main/java/xiaozhi/modules/agent/service/AgentPluginMappingService.java index 79d97d2e..8f742ba1 100644 --- a/main/manager-api/src/main/java/xiaozhi/modules/agent/service/AgentPluginMappingService.java +++ b/main/manager-api/src/main/java/xiaozhi/modules/agent/service/AgentPluginMappingService.java @@ -26,4 +26,11 @@ public interface AgentPluginMappingService extends IService * @param agentId */ void deleteByAgentId(String agentId); + + /** + * 根据知识库ID删除插件映射记录 + * + * @param knowledgeBaseId 知识库ID + */ + void deleteByKnowledgeBaseId(String knowledgeBaseId); } diff --git a/main/manager-api/src/main/java/xiaozhi/modules/agent/service/impl/AgentPluginMappingServiceImpl.java b/main/manager-api/src/main/java/xiaozhi/modules/agent/service/impl/AgentPluginMappingServiceImpl.java index fe197fbc..baf38d71 100644 --- a/main/manager-api/src/main/java/xiaozhi/modules/agent/service/impl/AgentPluginMappingServiceImpl.java +++ b/main/manager-api/src/main/java/xiaozhi/modules/agent/service/impl/AgentPluginMappingServiceImpl.java @@ -6,12 +6,14 @@ import java.util.List; import java.util.Map; import org.apache.commons.lang3.StringUtils; +import org.springframework.context.annotation.Lazy; import org.springframework.stereotype.Service; import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; import xiaozhi.common.utils.JsonUtils; import xiaozhi.modules.agent.dao.AgentPluginMappingMapper; import xiaozhi.modules.agent.entity.AgentPluginMapping; @@ -27,9 +29,11 @@ import xiaozhi.modules.model.service.ModelConfigService; */ @Service @RequiredArgsConstructor +@Slf4j public class AgentPluginMappingServiceImpl extends ServiceImpl implements AgentPluginMappingService { private final AgentPluginMappingMapper agentPluginMappingMapper; + @Lazy private final KnowledgeBaseService knowledgeBaseService; private final ModelConfigService modelConfigService; @@ -102,4 +106,19 @@ public class AgentPluginMappingServiceImpl extends ServiceImpl updateWrapper = new UpdateWrapper<>(); + updateWrapper.eq("plugin_id", knowledgeBaseId); + int deletedCount = agentPluginMappingMapper.delete(updateWrapper); + + if (deletedCount > 0) { + log.info("已删除 {} 条与知识库ID '{}' 相关的插件映射记录", deletedCount, knowledgeBaseId); + } + } + } diff --git a/main/manager-api/src/main/java/xiaozhi/modules/knowledge/service/impl/KnowledgeBaseServiceImpl.java b/main/manager-api/src/main/java/xiaozhi/modules/knowledge/service/impl/KnowledgeBaseServiceImpl.java index b56923de..14420254 100644 --- a/main/manager-api/src/main/java/xiaozhi/modules/knowledge/service/impl/KnowledgeBaseServiceImpl.java +++ b/main/manager-api/src/main/java/xiaozhi/modules/knowledge/service/impl/KnowledgeBaseServiceImpl.java @@ -314,6 +314,8 @@ public class KnowledgeBaseServiceImpl extends BaseServiceImpl 0 ? "成功" : "失败"); } diff --git a/main/manager-api/src/main/resources/db/changelog/202511131016.sql b/main/manager-api/src/main/resources/db/changelog/202511131016.sql new file mode 100644 index 00000000..b56a6763 --- /dev/null +++ b/main/manager-api/src/main/resources/db/changelog/202511131016.sql @@ -0,0 +1,13 @@ +-- 当删除知识库记录时,自动删除相关的插件映射记录 + +-- 先删除可能存在的同名触发器(如果存在) +DROP TRIGGER IF EXISTS trigger_delete_plugin_mapping_on_knowledgebase_delete; + +-- 创建新的触发器 +CREATE TRIGGER trigger_delete_plugin_mapping_on_knowledgebase_delete +AFTER DELETE ON ai_rag_dataset +FOR EACH ROW +BEGIN + -- 删除与该知识库ID相关的插件映射记录 + DELETE FROM ai_agent_plugin_mapping WHERE plugin_id = OLD.id; +END; diff --git a/main/manager-api/src/main/resources/db/changelog/db.changelog-master.yaml b/main/manager-api/src/main/resources/db/changelog/db.changelog-master.yaml index 326d6f57..0aee00a1 100755 --- a/main/manager-api/src/main/resources/db/changelog/db.changelog-master.yaml +++ b/main/manager-api/src/main/resources/db/changelog/db.changelog-master.yaml @@ -415,4 +415,11 @@ databaseChangeLog: changes: - sqlFile: encoding: utf8 - path: classpath:db/changelog/202510251150.sql \ No newline at end of file + path: classpath:db/changelog/202510251150.sql + - changeSet: + id: 202511131016 + author: rainv123 + changes: + - sqlFile: + encoding: utf8 + path: classpath:db/changelog/202511131016.sql