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 63 knowledgeService.updateKnowledge(updateReqVO);
64 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 76 @GetMapping("/simple-list")
68 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 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 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 94 * @param id 文档编号
... ... @@ -106,6 +113,14 @@ public interface AiKnowledgeDocumentService {
106 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 124 * 获取文档 Map
110 125 *
111 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 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 12 import jakarta.annotation.Resource;
13 13 import lombok.extern.slf4j.Slf4j;
14 14 import org.springframework.stereotype.Service;
  15 +import org.springframework.transaction.annotation.Transactional;
15 16  
16 17 import java.util.List;
17 18  
... ... @@ -34,6 +35,8 @@ public class AiKnowledgeServiceImpl implements AiKnowledgeService {
34 35 private AiModelService modelService;
35 36 @Resource
36 37 private AiKnowledgeSegmentService knowledgeSegmentService;
  38 + @Resource
  39 + private AiKnowledgeDocumentService knowledgeDocumentService;
37 40  
38 41 @Override
39 42 public Long createKnowledge(AiKnowledgeSaveReqVO createReqVO) {
... ... @@ -66,8 +69,17 @@ public class AiKnowledgeServiceImpl implements AiKnowledgeService {
66 69 }
67 70  
68 71 @Override
  72 + @Transactional(rollbackFor = Exception.class)
69 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 85 @Override
... ... @@ -77,11 +89,11 @@ public class AiKnowledgeServiceImpl implements AiKnowledgeService {
77 89  
78 90 @Override
79 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 94 throw exception(KNOWLEDGE_NOT_EXISTS);
83 95 }
84   - return knowledgeBase;
  96 + return knowledge;
85 97 }
86 98  
87 99 @Override
... ...