소스 검색

新增知识库删除

chenjun 4 달 전
부모
커밋
843bb24bd7

+ 8 - 0
ais_knowledge/knowledge/pom.xml

@@ -17,6 +17,8 @@
 	<properties>
 		<java.version>1.8</java.version>
 		<spring-cloud.version>2024.0.0</spring-cloud.version>
+		<maven.compiler.source>8</maven.compiler.source>
+		<maven.compiler.target>8</maven.compiler.target>
 	</properties>
 	<dependencies>
 		<dependency>
@@ -28,6 +30,12 @@
 			<artifactId>mybatis-plus-boot-starter</artifactId>
 			<version>3.5.3.2</version>
 		</dependency>
+		<!-- Spring Cloud Starter OpenFeign -->
+		<dependency>
+			<groupId>org.springframework.cloud</groupId>
+			<artifactId>spring-cloud-starter-openfeign</artifactId>
+			<version>3.1.5</version>
+		</dependency>
 		<dependency>
 			<groupId>org.postgresql</groupId>
 			<artifactId>postgresql</artifactId>

+ 2 - 0
ais_knowledge/knowledge/src/main/java/com/zjugis/ai/knowledge/KnowledgeApplication.java

@@ -2,8 +2,10 @@ package com.zjugis.ai.knowledge;
 
 import org.springframework.boot.SpringApplication;
 import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.cloud.openfeign.EnableFeignClients;
 
 @SpringBootApplication
+@EnableFeignClients
 public class KnowledgeApplication {
 
 	public static void main(String[] args) {

+ 6 - 0
ais_knowledge/knowledge/src/main/java/com/zjugis/ai/knowledge/controller/KnowledgeFileController.java

@@ -46,4 +46,10 @@ public class KnowledgeFileController {
         knowledgeFileService.updateKnowledgeDocument(reqVO);
         return success(true);
     }
+
+    @GetMapping("/delete")
+    public CommonResult<Boolean> deleteKnowledgeDocument(@RequestParam("id") Long id) {
+        knowledgeFileService.deleteKnowledgeDocument(id);
+        return success(true);
+    }
 }

+ 2 - 0
ais_knowledge/knowledge/src/main/java/com/zjugis/ai/knowledge/controller/vo/KnowledgeFilePageReqVO.java

@@ -12,4 +12,6 @@ import lombok.Data;
 public class KnowledgeFilePageReqVO extends PageParam {
 
     private String name;
+
+    private Long parentId;
 }

+ 6 - 1
ais_knowledge/knowledge/src/main/java/com/zjugis/ai/knowledge/dal/mapper/KnowledgeFileMapper.java

@@ -18,7 +18,12 @@ public interface KnowledgeFileMapper extends BaseMapperX<KnowledgeFileDO>{
     default List<KnowledgeFileDO> selectList(KnowledgeFilePageReqVO reqVO) {
         return selectList(new LambdaQueryWrapperX<KnowledgeFileDO>()
                 .likeIfPresent(KnowledgeFileDO::getName, reqVO.getName())
-                .orderByDesc(KnowledgeFileDO::getSort)
+                .eqIfPresent(KnowledgeFileDO::getParentId, reqVO.getParentId())
+                .orderByAsc(KnowledgeFileDO::getSort)
                 .orderByDesc(KnowledgeFileDO::getId));
     }
+
+    default Long selectCountByParentId(Long parentId) {
+        return selectCount(KnowledgeFileDO::getParentId, parentId);
+    }
 }

+ 9 - 7
ais_knowledge/knowledge/src/main/java/com/zjugis/ai/knowledge/retrofit/docs/UploadDocsService.java

@@ -1,15 +1,14 @@
 package com.zjugis.ai.knowledge.retrofit.docs;
 
 import com.github.lianjiatech.retrofit.spring.boot.core.RetrofitClient;
-import com.zjugis.ai.knowledge.retrofit.docs.vo.UploadDocsRespVO;
+import com.zjugis.ai.knowledge.retrofit.docs.params.DeleteDocsReqVO;
+import com.zjugis.ai.knowledge.retrofit.docs.vo.DocsRespVO;
 import okhttp3.MultipartBody;
 import okhttp3.RequestBody;
-import retrofit2.http.FormUrlEncoded;
-import retrofit2.http.Multipart;
-import retrofit2.http.POST;
-import retrofit2.http.Part;
+import retrofit2.http.*;
 
 import java.util.List;
+import java.util.Map;
 
 /**
  * @Author 陈俊
@@ -21,6 +20,9 @@ public interface UploadDocsService {
 
     @Multipart
     @POST("/knowledge_base/upload_docs")
-    UploadDocsRespVO upload(@Part("knowledge_base_name") RequestBody knowledgeBaseName,
-                            @Part List<MultipartBody.Part> files);
+    DocsRespVO upload(@Part("knowledge_base_name") RequestBody knowledgeBaseName,
+                      @Part List<MultipartBody.Part> files);
+
+    @POST("/knowledge_base/delete_docs")
+    DocsRespVO delete(@Body Map<String,Object> reqVO);
 }

+ 20 - 0
ais_knowledge/knowledge/src/main/java/com/zjugis/ai/knowledge/retrofit/docs/UploadDocsService2.java

@@ -0,0 +1,20 @@
+package com.zjugis.ai.knowledge.retrofit.docs;
+
+import com.zjugis.ai.knowledge.retrofit.docs.params.DeleteDocsReqVO;
+import com.zjugis.ai.knowledge.retrofit.docs.vo.DocsRespVO;
+import org.springframework.cloud.openfeign.FeignClient;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+
+/**
+ * @Author 陈俊
+ * @Date 2025/2/21 10:43
+ * @Version 1.0
+ */
+@FeignClient(name = "knowledgeBaseClient",url = "${retrofit-url.ai-url}")
+public interface UploadDocsService2 {
+
+
+    @PostMapping("/knowledge_base/delete_docs")
+    DocsRespVO delete(@RequestBody DeleteDocsReqVO reqVO);
+}

+ 18 - 0
ais_knowledge/knowledge/src/main/java/com/zjugis/ai/knowledge/retrofit/docs/params/DeleteDocsReqVO.java

@@ -0,0 +1,18 @@
+package com.zjugis.ai.knowledge.retrofit.docs.params;
+
+import lombok.Data;
+
+import java.util.List;
+
+/**
+ * @Author 陈俊
+ * @Date 2025/2/21 10:31
+ * @Version 1.0
+ */
+@Data
+public class DeleteDocsReqVO {
+
+    private String knowledge_base_name;
+
+    private List<String> file_names;
+}

+ 1 - 1
ais_knowledge/knowledge/src/main/java/com/zjugis/ai/knowledge/retrofit/docs/vo/UploadDocsRespVO.java → ais_knowledge/knowledge/src/main/java/com/zjugis/ai/knowledge/retrofit/docs/vo/DocsRespVO.java

@@ -10,7 +10,7 @@ import java.util.Map;
  * @Version 1.0
  */
 @Data
-public class UploadDocsRespVO {
+public class DocsRespVO {
 
     private Integer code;
 

+ 2 - 0
ais_knowledge/knowledge/src/main/java/com/zjugis/ai/knowledge/service/KnowledgeFileService.java

@@ -19,4 +19,6 @@ public interface KnowledgeFileService {
     List<KnowledgeFileDO> getKnowledgeDocumentPage(KnowledgeFilePageReqVO pageReqVO);
 
     void updateKnowledgeDocument(KnowledgeFileUpdateReqVO reqVO);
+
+    void deleteKnowledgeDocument(Long id);
 }

+ 36 - 12
ais_knowledge/knowledge/src/main/java/com/zjugis/ai/knowledge/service/KnowledgeFileServiceImpl.java

@@ -2,15 +2,15 @@ package com.zjugis.ai.knowledge.service;
 
 import cn.hutool.core.io.IoUtil;
 import com.zjugis.ai.knowledge.common.exception.ErrorCode;
-import com.zjugis.ai.knowledge.common.pojo.PageResult;
 import com.zjugis.ai.knowledge.controller.vo.KnowledgeFileCreateReqVO;
 import com.zjugis.ai.knowledge.controller.vo.KnowledgeFilePageReqVO;
 import com.zjugis.ai.knowledge.controller.vo.KnowledgeFileUpdateReqVO;
 import com.zjugis.ai.knowledge.dal.dataobject.KnowledgeFileDO;
 import com.zjugis.ai.knowledge.dal.mapper.KnowledgeFileMapper;
 import com.zjugis.ai.knowledge.retrofit.docs.UploadDocsService;
-import com.zjugis.ai.knowledge.retrofit.docs.params.UploadDocsReqVO;
-import com.zjugis.ai.knowledge.retrofit.docs.vo.UploadDocsRespVO;
+import com.zjugis.ai.knowledge.retrofit.docs.UploadDocsService2;
+import com.zjugis.ai.knowledge.retrofit.docs.params.DeleteDocsReqVO;
+import com.zjugis.ai.knowledge.retrofit.docs.vo.DocsRespVO;
 import com.zjugis.ai.knowledge.util.files.FileTypeUtils;
 import com.zjugis.ai.knowledge.util.object.BeanUtils;
 import lombok.SneakyThrows;
@@ -21,10 +21,9 @@ import org.springframework.stereotype.Service;
 import org.springframework.web.multipart.MultipartFile;
 
 import javax.annotation.Resource;
-import java.io.IOException;
 import java.util.ArrayList;
+import java.util.Arrays;
 import java.util.List;
-import java.util.stream.Collectors;
 
 import static com.zjugis.ai.knowledge.common.exception.util.ServiceExceptionUtil.exception;
 
@@ -34,33 +33,36 @@ import static com.zjugis.ai.knowledge.common.exception.util.ServiceExceptionUtil
  * @Version 1.0
  */
 @Service
-public class KnowledgeFileServiceImpl implements KnowledgeFileService{
+public class KnowledgeFileServiceImpl implements KnowledgeFileService {
 
+    private final String BASE_NAME = "policy";
     @Resource
     private KnowledgeFileMapper knowledgeFileMapper;
     @Resource
     private UploadDocsService uploadDocsService;
+    @Resource
+    private UploadDocsService2 uploadDocsService2;
 
     @Override
     @SneakyThrows
-    public Long createKnowledgeDocument(KnowledgeFileCreateReqVO createReqVO){
+    public Long createKnowledgeDocument(KnowledgeFileCreateReqVO createReqVO) {
         KnowledgeFileDO fileDO = BeanUtils.toBean(createReqVO, KnowledgeFileDO.class);
         MultipartFile file = createReqVO.getFile();
-        if (file !=null){
+        if (file != null) {
             byte[] content = IoUtil.readBytes(file.getInputStream());
             fileDO.setSize(content.length);
             String type = FileTypeUtils.getMineType(content, file.getOriginalFilename());
             fileDO.setType(type);
             // 准备文本参数
             RequestBody knowledgeBaseName =
-                    RequestBody.create(MediaType.parse("text/plain"), "temp");
+                    RequestBody.create(MediaType.parse("text/plain"), BASE_NAME);
             // 准备文件列表
             RequestBody fileRQ = RequestBody.create(MediaType.parse(type), content);
             MultipartBody.Part part = MultipartBody.Part.createFormData("picture", file.getName(), fileRQ);
-            List<MultipartBody.Part> parts=new ArrayList<>();
+            List<MultipartBody.Part> parts = new ArrayList<>();
             parts.add(part);
-            UploadDocsRespVO respVO = uploadDocsService.upload(knowledgeBaseName, parts);
-            if(respVO.getCode()!=200){
+            DocsRespVO respVO = uploadDocsService.upload(knowledgeBaseName, parts);
+            if (respVO.getCode() != 200) {
                 throw exception(new ErrorCode(respVO.getCode(), respVO.getMsg()));
             }
         }
@@ -78,4 +80,26 @@ public class KnowledgeFileServiceImpl implements KnowledgeFileService{
         KnowledgeFileDO fileDO = BeanUtils.toBean(reqVO, KnowledgeFileDO.class);
         knowledgeFileMapper.updateById(fileDO);
     }
+
+    @Override
+    public void deleteKnowledgeDocument(Long id) {
+        // 校验是否还有子知识库
+        if (knowledgeFileMapper.selectCountByParentId(id) > 0) {
+            throw exception(new ErrorCode(10011, "存在子文件或文件目录,无法删除"));
+        }
+        KnowledgeFileDO knowledgeFileDO = knowledgeFileMapper.selectById(id);
+        if(knowledgeFileDO.getType()!=null){
+            DeleteDocsReqVO reqVO = new DeleteDocsReqVO();
+            reqVO.setKnowledge_base_name(BASE_NAME);
+            reqVO.setFile_names(Arrays.asList(knowledgeFileDO.getName()));
+            DocsRespVO respVO = uploadDocsService2.delete(reqVO);
+            if (respVO.getCode() != 200) {
+                throw exception(new ErrorCode(respVO.getCode(), respVO.getMsg()));
+            }
+        }
+        // 标记删除
+        knowledgeFileMapper.deleteById(id);
+
+
+    }
 }

+ 8 - 0
ais_knowledge/knowledge/src/main/resources/application.yaml

@@ -92,3 +92,11 @@ zjugis:
 retrofit-url:
   ai-url: http://ac.zjugis.com:8511/
 
+feign:
+  client:
+    config:
+      default:
+        loggerLevel: full
+logging:
+  level:
+    com.zjugis.ai.knowledge.retrofit.docs: DEBUG