From 3e8596ee4b0eb0f96cbcb70df333392ca5cb0713 Mon Sep 17 00:00:00 2001 From: YunaiV Date: Sat, 3 May 2025 16:51:17 +0800 Subject: [PATCH] feat:【AI 大模型】增加知识库的删除功能 --- yudao-module-ai/yudao-module-ai-biz/src/main/java/cn/iocoder/yudao/module/ai/controller/admin/knowledge/AiKnowledgeController.java | 9 +++++++++ yudao-module-ai/yudao-module-ai-biz/src/main/java/cn/iocoder/yudao/module/ai/dal/mysql/knowledge/AiKnowledgeDocumentMapper.java | 4 ++++ yudao-module-ai/yudao-module-ai-biz/src/main/java/cn/iocoder/yudao/module/ai/service/knowledge/AiKnowledgeDocumentService.java | 15 +++++++++++++++ yudao-module-ai/yudao-module-ai-biz/src/main/java/cn/iocoder/yudao/module/ai/service/knowledge/AiKnowledgeDocumentServiceImpl.java | 20 ++++++++++++++++++++ yudao-module-ai/yudao-module-ai-biz/src/main/java/cn/iocoder/yudao/module/ai/service/knowledge/AiKnowledgeServiceImpl.java | 18 +++++++++++++++--- 5 files changed, 63 insertions(+), 3 deletions(-) diff --git a/yudao-module-ai/yudao-module-ai-biz/src/main/java/cn/iocoder/yudao/module/ai/controller/admin/knowledge/AiKnowledgeController.java b/yudao-module-ai/yudao-module-ai-biz/src/main/java/cn/iocoder/yudao/module/ai/controller/admin/knowledge/AiKnowledgeController.java index c6e31f0..b9daa95 100644 --- a/yudao-module-ai/yudao-module-ai-biz/src/main/java/cn/iocoder/yudao/module/ai/controller/admin/knowledge/AiKnowledgeController.java +++ b/yudao-module-ai/yudao-module-ai-biz/src/main/java/cn/iocoder/yudao/module/ai/controller/admin/knowledge/AiKnowledgeController.java @@ -63,6 +63,15 @@ public class AiKnowledgeController { knowledgeService.updateKnowledge(updateReqVO); return success(true); } + + @DeleteMapping("/delete") + @Operation(summary = "删除知识库") + @Parameter(name = "id", description = "编号", required = true, example = "1024") + @PreAuthorize("@ss.hasPermission('ai:knowledge:delete')") + public CommonResult deleteKnowledge(@RequestParam("id") Long id) { + knowledgeService.deleteKnowledge(id); + return success(true); + } @GetMapping("/simple-list") @Operation(summary = "获得知识库的精简列表") diff --git a/yudao-module-ai/yudao-module-ai-biz/src/main/java/cn/iocoder/yudao/module/ai/dal/mysql/knowledge/AiKnowledgeDocumentMapper.java b/yudao-module-ai/yudao-module-ai-biz/src/main/java/cn/iocoder/yudao/module/ai/dal/mysql/knowledge/AiKnowledgeDocumentMapper.java index 11a76cc..55f04bb 100644 --- a/yudao-module-ai/yudao-module-ai-biz/src/main/java/cn/iocoder/yudao/module/ai/dal/mysql/knowledge/AiKnowledgeDocumentMapper.java +++ b/yudao-module-ai/yudao-module-ai-biz/src/main/java/cn/iocoder/yudao/module/ai/dal/mysql/knowledge/AiKnowledgeDocumentMapper.java @@ -36,4 +36,8 @@ public interface AiKnowledgeDocumentMapper extends BaseMapperX selectListByKnowledgeId(Long knowledgeId) { + return selectList(AiKnowledgeDocumentDO::getKnowledgeId, knowledgeId); + } + } diff --git a/yudao-module-ai/yudao-module-ai-biz/src/main/java/cn/iocoder/yudao/module/ai/service/knowledge/AiKnowledgeDocumentService.java b/yudao-module-ai/yudao-module-ai-biz/src/main/java/cn/iocoder/yudao/module/ai/service/knowledge/AiKnowledgeDocumentService.java index 8ff137b..3ffd47a 100644 --- a/yudao-module-ai/yudao-module-ai-biz/src/main/java/cn/iocoder/yudao/module/ai/service/knowledge/AiKnowledgeDocumentService.java +++ b/yudao-module-ai/yudao-module-ai-biz/src/main/java/cn/iocoder/yudao/module/ai/service/knowledge/AiKnowledgeDocumentService.java @@ -82,6 +82,13 @@ public interface AiKnowledgeDocumentService { void deleteKnowledgeDocument(Long id); /** + * 根据知识库编号,批量删除文档 + * + * @param knowledgeId 知识库编号 + */ + void deleteKnowledgeDocumentByKnowledgeId(Long knowledgeId); + + /** * 校验文档是否存在 * * @param id 文档编号 @@ -106,6 +113,14 @@ public interface AiKnowledgeDocumentService { List getKnowledgeDocumentList(Collection ids); /** + * 根据知识库编号获取文档列表 + * + * @param knowledgeId 知识库编号 + * @return 文档列表 + */ + List getKnowledgeDocumentListByKnowledgeId(Long knowledgeId); + + /** * 获取文档 Map * * @param ids 文档编号列表 diff --git a/yudao-module-ai/yudao-module-ai-biz/src/main/java/cn/iocoder/yudao/module/ai/service/knowledge/AiKnowledgeDocumentServiceImpl.java b/yudao-module-ai/yudao-module-ai-biz/src/main/java/cn/iocoder/yudao/module/ai/service/knowledge/AiKnowledgeDocumentServiceImpl.java index 2d78f94..c03d35f 100644 --- a/yudao-module-ai/yudao-module-ai-biz/src/main/java/cn/iocoder/yudao/module/ai/service/knowledge/AiKnowledgeDocumentServiceImpl.java +++ b/yudao-module-ai/yudao-module-ai-biz/src/main/java/cn/iocoder/yudao/module/ai/service/knowledge/AiKnowledgeDocumentServiceImpl.java @@ -211,4 +211,24 @@ public class AiKnowledgeDocumentServiceImpl implements AiKnowledgeDocumentServic return knowledgeDocumentMapper.selectBatchIds(ids); } + @Override + public List getKnowledgeDocumentListByKnowledgeId(Long knowledgeId) { + return knowledgeDocumentMapper.selectListByKnowledgeId(knowledgeId); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void deleteKnowledgeDocumentByKnowledgeId(Long knowledgeId) { + // 1. 获取该知识库下的所有文档 + List documents = knowledgeDocumentMapper.selectListByKnowledgeId(knowledgeId); + if (CollUtil.isEmpty(documents)) { + return; + } + + // 2. 逐个删除文档及其对应的段落 + for (AiKnowledgeDocumentDO document : documents) { + deleteKnowledgeDocument(document.getId()); + } + } + } diff --git a/yudao-module-ai/yudao-module-ai-biz/src/main/java/cn/iocoder/yudao/module/ai/service/knowledge/AiKnowledgeServiceImpl.java b/yudao-module-ai/yudao-module-ai-biz/src/main/java/cn/iocoder/yudao/module/ai/service/knowledge/AiKnowledgeServiceImpl.java index 3a4f60c..75b9943 100644 --- a/yudao-module-ai/yudao-module-ai-biz/src/main/java/cn/iocoder/yudao/module/ai/service/knowledge/AiKnowledgeServiceImpl.java +++ b/yudao-module-ai/yudao-module-ai-biz/src/main/java/cn/iocoder/yudao/module/ai/service/knowledge/AiKnowledgeServiceImpl.java @@ -12,6 +12,7 @@ import cn.iocoder.yudao.module.ai.service.model.AiModelService; import jakarta.annotation.Resource; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; import java.util.List; @@ -34,6 +35,8 @@ public class AiKnowledgeServiceImpl implements AiKnowledgeService { private AiModelService modelService; @Resource private AiKnowledgeSegmentService knowledgeSegmentService; + @Resource + private AiKnowledgeDocumentService knowledgeDocumentService; @Override public Long createKnowledge(AiKnowledgeSaveReqVO createReqVO) { @@ -66,8 +69,17 @@ public class AiKnowledgeServiceImpl implements AiKnowledgeService { } @Override + @Transactional(rollbackFor = Exception.class) public void deleteKnowledge(Long id) { + // 1. 校验存在 + validateKnowledgeExists(id); + + // 2. 删除知识库下的所有文档及段落 + knowledgeDocumentService.deleteKnowledgeDocumentByKnowledgeId(id); + // 3. 删除知识库 + // 特殊:知识库需要最后删除,不然相关的配置会找不到 + knowledgeMapper.deleteById(id); } @Override @@ -77,11 +89,11 @@ public class AiKnowledgeServiceImpl implements AiKnowledgeService { @Override public AiKnowledgeDO validateKnowledgeExists(Long id) { - AiKnowledgeDO knowledgeBase = knowledgeMapper.selectById(id); - if (knowledgeBase == null) { + AiKnowledgeDO knowledge = knowledgeMapper.selectById(id); + if (knowledge == null) { throw exception(KNOWLEDGE_NOT_EXISTS); } - return knowledgeBase; + return knowledge; } @Override -- libgit2 0.21.4