Commit 3e8596ee4b0eb0f96cbcb70df333392ca5cb0713

Authored by YunaiV
1 parent e11ee654

feat:【AI 大模型】增加知识库的删除功能

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 { @@ -63,6 +63,15 @@ public class AiKnowledgeController {
63 knowledgeService.updateKnowledge(updateReqVO); 63 knowledgeService.updateKnowledge(updateReqVO);
64 return success(true); 64 return success(true);
65 } 65 }
  66 +
  67 + @DeleteMapping("/delete")
  68 + @Operation(summary = "删除知识库")
  69 + @Parameter(name = "id", description = "编号", required = true, example = "1024")
  70 + @PreAuthorize("@ss.hasPermission('ai:knowledge:delete')")
  71 + public CommonResult<Boolean> deleteKnowledge(@RequestParam("id") Long id) {
  72 + knowledgeService.deleteKnowledge(id);
  73 + return success(true);
  74 + }
66 75
67 @GetMapping("/simple-list") 76 @GetMapping("/simple-list")
68 @Operation(summary = "获得知识库的精简列表") 77 @Operation(summary = "获得知识库的精简列表")
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&lt;AiKnowledgeDocume @@ -36,4 +36,8 @@ public interface AiKnowledgeDocumentMapper extends BaseMapperX&lt;AiKnowledgeDocume
36 return selectList(AiKnowledgeDocumentDO::getStatus, status); 36 return selectList(AiKnowledgeDocumentDO::getStatus, status);
37 } 37 }
38 38
  39 + default List<AiKnowledgeDocumentDO> selectListByKnowledgeId(Long knowledgeId) {
  40 + return selectList(AiKnowledgeDocumentDO::getKnowledgeId, knowledgeId);
  41 + }
  42 +
39 } 43 }
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 { @@ -82,6 +82,13 @@ public interface AiKnowledgeDocumentService {
82 void deleteKnowledgeDocument(Long id); 82 void deleteKnowledgeDocument(Long id);
83 83
84 /** 84 /**
  85 + * 根据知识库编号,批量删除文档
  86 + *
  87 + * @param knowledgeId 知识库编号
  88 + */
  89 + void deleteKnowledgeDocumentByKnowledgeId(Long knowledgeId);
  90 +
  91 + /**
85 * 校验文档是否存在 92 * 校验文档是否存在
86 * 93 *
87 * @param id 文档编号 94 * @param id 文档编号
@@ -106,6 +113,14 @@ public interface AiKnowledgeDocumentService { @@ -106,6 +113,14 @@ public interface AiKnowledgeDocumentService {
106 List<AiKnowledgeDocumentDO> getKnowledgeDocumentList(Collection<Long> ids); 113 List<AiKnowledgeDocumentDO> getKnowledgeDocumentList(Collection<Long> ids);
107 114
108 /** 115 /**
  116 + * 根据知识库编号获取文档列表
  117 + *
  118 + * @param knowledgeId 知识库编号
  119 + * @return 文档列表
  120 + */
  121 + List<AiKnowledgeDocumentDO> getKnowledgeDocumentListByKnowledgeId(Long knowledgeId);
  122 +
  123 + /**
109 * 获取文档 Map 124 * 获取文档 Map
110 * 125 *
111 * @param ids 文档编号列表 126 * @param ids 文档编号列表
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 @@ -211,4 +211,24 @@ public class AiKnowledgeDocumentServiceImpl implements AiKnowledgeDocumentServic
211 return knowledgeDocumentMapper.selectBatchIds(ids); 211 return knowledgeDocumentMapper.selectBatchIds(ids);
212 } 212 }
213 213
  214 + @Override
  215 + public List<AiKnowledgeDocumentDO> getKnowledgeDocumentListByKnowledgeId(Long knowledgeId) {
  216 + return knowledgeDocumentMapper.selectListByKnowledgeId(knowledgeId);
  217 + }
  218 +
  219 + @Override
  220 + @Transactional(rollbackFor = Exception.class)
  221 + public void deleteKnowledgeDocumentByKnowledgeId(Long knowledgeId) {
  222 + // 1. 获取该知识库下的所有文档
  223 + List<AiKnowledgeDocumentDO> documents = knowledgeDocumentMapper.selectListByKnowledgeId(knowledgeId);
  224 + if (CollUtil.isEmpty(documents)) {
  225 + return;
  226 + }
  227 +
  228 + // 2. 逐个删除文档及其对应的段落
  229 + for (AiKnowledgeDocumentDO document : documents) {
  230 + deleteKnowledgeDocument(document.getId());
  231 + }
  232 + }
  233 +
214 } 234 }
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; @@ -12,6 +12,7 @@ import cn.iocoder.yudao.module.ai.service.model.AiModelService;
12 import jakarta.annotation.Resource; 12 import jakarta.annotation.Resource;
13 import lombok.extern.slf4j.Slf4j; 13 import lombok.extern.slf4j.Slf4j;
14 import org.springframework.stereotype.Service; 14 import org.springframework.stereotype.Service;
  15 +import org.springframework.transaction.annotation.Transactional;
15 16
16 import java.util.List; 17 import java.util.List;
17 18
@@ -34,6 +35,8 @@ public class AiKnowledgeServiceImpl implements AiKnowledgeService { @@ -34,6 +35,8 @@ public class AiKnowledgeServiceImpl implements AiKnowledgeService {
34 private AiModelService modelService; 35 private AiModelService modelService;
35 @Resource 36 @Resource
36 private AiKnowledgeSegmentService knowledgeSegmentService; 37 private AiKnowledgeSegmentService knowledgeSegmentService;
  38 + @Resource
  39 + private AiKnowledgeDocumentService knowledgeDocumentService;
37 40
38 @Override 41 @Override
39 public Long createKnowledge(AiKnowledgeSaveReqVO createReqVO) { 42 public Long createKnowledge(AiKnowledgeSaveReqVO createReqVO) {
@@ -66,8 +69,17 @@ public class AiKnowledgeServiceImpl implements AiKnowledgeService { @@ -66,8 +69,17 @@ public class AiKnowledgeServiceImpl implements AiKnowledgeService {
66 } 69 }
67 70
68 @Override 71 @Override
  72 + @Transactional(rollbackFor = Exception.class)
69 public void deleteKnowledge(Long id) { 73 public void deleteKnowledge(Long id) {
  74 + // 1. 校验存在
  75 + validateKnowledgeExists(id);
  76 +
  77 + // 2. 删除知识库下的所有文档及段落
  78 + knowledgeDocumentService.deleteKnowledgeDocumentByKnowledgeId(id);
70 79
  80 + // 3. 删除知识库
  81 + // 特殊:知识库需要最后删除,不然相关的配置会找不到
  82 + knowledgeMapper.deleteById(id);
71 } 83 }
72 84
73 @Override 85 @Override
@@ -77,11 +89,11 @@ public class AiKnowledgeServiceImpl implements AiKnowledgeService { @@ -77,11 +89,11 @@ public class AiKnowledgeServiceImpl implements AiKnowledgeService {
77 89
78 @Override 90 @Override
79 public AiKnowledgeDO validateKnowledgeExists(Long id) { 91 public AiKnowledgeDO validateKnowledgeExists(Long id) {
80 - AiKnowledgeDO knowledgeBase = knowledgeMapper.selectById(id);  
81 - if (knowledgeBase == null) { 92 + AiKnowledgeDO knowledge = knowledgeMapper.selectById(id);
  93 + if (knowledge == null) {
82 throw exception(KNOWLEDGE_NOT_EXISTS); 94 throw exception(KNOWLEDGE_NOT_EXISTS);
83 } 95 }
84 - return knowledgeBase; 96 + return knowledge;
85 } 97 }
86 98
87 @Override 99 @Override