Ver código fonte

处理es相关

wukai 1 ano atrás
pai
commit
d1fc10901f

+ 0 - 0
doc-admin/src/main/resources/file/new.txt


+ 5 - 5
doc-biz/pom.xml

@@ -46,11 +46,11 @@
             <!--                </exclusion>-->
             <!--            </exclusions>-->
         </dependency>
-        <dependency>
-            <groupId>org.elasticsearch</groupId>
-            <artifactId>elasticsearch</artifactId>
-            <version>8.6.2</version>
-        </dependency>
+<!--        <dependency>-->
+<!--            <groupId>org.elasticsearch</groupId>-->
+<!--            <artifactId>elasticsearch</artifactId>-->
+<!--            <version>7.17.3</version>-->
+<!--        </dependency>-->
         <!-- 集成elasticsearch end -->
 
     </dependencies>

+ 7 - 37
doc-biz/src/main/java/com/doc/biz/controller/DocInfoController.java

@@ -3,7 +3,6 @@ package com.doc.biz.controller;
 import com.doc.biz.domain.DocDir;
 import com.doc.biz.domain.DocInfo;
 import com.doc.biz.domain.DocSpace;
-import com.doc.biz.domain.EsDocInfo;
 import com.doc.biz.service.IDocDirService;
 import com.doc.biz.service.IDocInfoService;
 import com.doc.biz.service.IEsDocInfoService;
@@ -16,7 +15,6 @@ import com.doc.common.core.controller.BaseController;
 import com.doc.common.core.domain.AjaxResult;
 import com.doc.common.core.page.TableDataInfo;
 import com.doc.common.enums.BusinessType;
-import com.doc.common.utils.FileContentUtils;
 import com.doc.common.utils.SecurityUtils;
 import com.doc.common.utils.bean.BeanUtils;
 import com.doc.common.utils.file.FileUtils;
@@ -36,7 +34,6 @@ import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
-import java.util.function.Function;
 
 /**
  * 文件基本信息表Controller
@@ -54,11 +51,11 @@ public class DocInfoController extends BaseController {
     @Resource
     private IMongoService mongoService;
     @Resource
-    private IEsDocInfoService esDocInfoService;
+    private IDocDirService dirService;
     @Resource
     private EsConfig esConfig;
     @Resource
-    private IDocDirService dirService;
+    private IEsDocInfoService esDocInfoService;
 
     /**
      * 文件上传
@@ -115,9 +112,6 @@ public class DocInfoController extends BaseController {
         docInfo.setFileType(vo.getSuffix());
         docInfo.setCreateBy(SecurityUtils.getUsername());
         docInfoService.insertDocInfo(docInfo);
-
-        DocumentVO documentVO = mongoService.downloadFile(vo.getFileId());
-        insertEs(documentVO.getData(), docInfo.getFileType(), docInfo.getDocId(), spaceId);
     }
 
     /**
@@ -126,7 +120,7 @@ public class DocInfoController extends BaseController {
     @ApiOperation("新建文件")
     @GetMapping("/create")
     @ApiImplicitParams({
-            @ApiImplicitParam(name = "type", value = "文件类型 \"word\":word文档 \"excel\":excel文件 \"ppt\".ppt文件", required = true),
+            @ApiImplicitParam(name = "type", value = "文件类型 \"word\":word文档 \"excel\":excel文件 \"ppt\":ppt文件  \"txt\":文本文件", required = true),
             @ApiImplicitParam(name = "spaceId", value = "空间ID", required = true),
             @ApiImplicitParam(name = "dirId", value = "目录ID", required = true)
     })
@@ -147,6 +141,10 @@ public class DocInfoController extends BaseController {
                     file = ResourceUtils.getFile("classpath:file/new.pptx");
                     fileName = "新建ppt文档.pptx";
                     break;
+                case "txt":
+                    file = ResourceUtils.getFile("classpath:file/new.txt");
+                    fileName = "新建文本文档.txt";
+                    break;
             }
 
             FileInputStream is = new FileInputStream(file);
@@ -320,7 +318,6 @@ public class DocInfoController extends BaseController {
     @Log(title = "文件基本信息表", businessType = BusinessType.UPDATE)
     @PutMapping
     public AjaxResult edit(@RequestBody DocInfo docInfo) {
-        //TODO 文件内容修改的ES处理
         docInfo.setUpdateBy(SecurityUtils.getUsername());
         return toAjax(docInfoService.updateDocInfo(docInfo));
     }
@@ -351,31 +348,4 @@ public class DocInfoController extends BaseController {
     }
 
 
-    /**
-     * 文件内容入es库
-     *
-     * @param data    二进制文件内容
-     * @param ext     扩展名
-     * @param docId   文档ID
-     * @param spaceId 空间ID
-     */
-    private void insertEs(byte[] data, String ext, Long docId, Long spaceId) {
-        //组装ES索引名
-        String indexName = "docs_" + spaceId;
-
-        Map<String, Function<byte[], String>> handlerMap = new HashMap<>(16);
-        handlerMap.put(".docx", FileContentUtils::getContentDocx);
-        handlerMap.put(".doc", FileContentUtils::getContentDoc);
-        handlerMap.put(".wps", FileContentUtils::getContentWps);
-        handlerMap.put(".txt", FileContentUtils::getContentTxt);
-
-        Function<byte[], String> handler = handlerMap.get(ext);
-        if (handler != null) {
-            String content = handler.apply(data);
-            System.err.println(content);
-            EsDocInfo esDocInfo = new EsDocInfo(docId, content);
-            esConfig.setIndexName(indexName);
-            esDocInfoService.save(esDocInfo);
-        }
-    }
 }

+ 25 - 0
doc-biz/src/main/java/com/doc/biz/service/IElasticSearchService.java

@@ -0,0 +1,25 @@
+package com.doc.biz.service;
+
+import com.doc.biz.domain.DocInfo;
+
+/**
+ * ES操作接口
+ *
+ * @author wukai
+ * @date 2023-08-15
+ */
+public interface IElasticSearchService {
+    /**
+     * 文件内容入es库
+     *
+     * @param info 文档信息
+     */
+    void save(DocInfo info);
+
+    /**
+     * 通过ID删除ES内容
+     *
+     * @param info 文档信息
+     */
+    void delete(DocInfo info);
+}

+ 16 - 2
doc-biz/src/main/java/com/doc/biz/service/impl/DocInfoServiceImpl.java

@@ -3,7 +3,9 @@ package com.doc.biz.service.impl;
 import com.doc.biz.domain.DocInfo;
 import com.doc.biz.mapper.DocInfoMapper;
 import com.doc.biz.service.IDocInfoService;
+import com.doc.biz.service.IElasticSearchService;
 import com.doc.common.utils.DateUtils;
+import com.doc.common.utils.StringUtils;
 import org.springframework.stereotype.Service;
 
 import javax.annotation.Resource;
@@ -19,6 +21,8 @@ import java.util.List;
 public class DocInfoServiceImpl implements IDocInfoService {
     @Resource
     private DocInfoMapper docInfoMapper;
+    @Resource
+    private IElasticSearchService elasticSearchService;
 
     /**
      * 查询文件基本信息表
@@ -51,7 +55,11 @@ public class DocInfoServiceImpl implements IDocInfoService {
     @Override
     public int insertDocInfo(DocInfo docInfo) {
         docInfo.setCreateTime(DateUtils.getNowDate());
-        return docInfoMapper.insertDocInfo(docInfo);
+        int i = docInfoMapper.insertDocInfo(docInfo);
+
+        elasticSearchService.save(docInfo);
+
+        return i;
     }
 
     /**
@@ -63,7 +71,13 @@ public class DocInfoServiceImpl implements IDocInfoService {
     @Override
     public int updateDocInfo(DocInfo docInfo) {
         docInfo.setUpdateTime(DateUtils.getNowDate());
-        return docInfoMapper.updateDocInfo(docInfo);
+        int i = docInfoMapper.updateDocInfo(docInfo);
+
+        if (StringUtils.isNotEmpty(docInfo.getFileId())) {
+            elasticSearchService.save(docInfo);
+        }
+
+        return i;
     }
 
     /**

+ 74 - 0
doc-biz/src/main/java/com/doc/biz/service/impl/ElasticSearchServiceImpl.java

@@ -0,0 +1,74 @@
+package com.doc.biz.service.impl;
+
+import com.doc.biz.domain.DocInfo;
+import com.doc.biz.domain.EsDocInfo;
+import com.doc.biz.mapper.DocInfoMapper;
+import com.doc.biz.service.IElasticSearchService;
+import com.doc.biz.service.IEsDocInfoService;
+import com.doc.biz.service.IMongoService;
+import com.doc.biz.vo.DocumentVO;
+import com.doc.common.config.EsConfig;
+import com.doc.common.utils.FileContentUtils;
+import org.springframework.stereotype.Service;
+
+import javax.annotation.Resource;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.function.Function;
+
+/**
+ * ElasticSearch 索引接口
+ *
+ * @author wukai
+ * @date 2023-08-15
+ */
+@Service
+public class ElasticSearchServiceImpl implements IElasticSearchService {
+    @Resource
+    private IEsDocInfoService esDocInfoService;
+    @Resource
+    private EsConfig esConfig;
+    @Resource
+    private IMongoService mongoService;
+
+    /**
+     * 文件内容入es库
+     *
+     * @param info 文档信息
+     */
+    @Override
+    public void save(DocInfo info) {
+        Map<String, Function<byte[], String>> handlerMap = new HashMap<>(16);
+        handlerMap.put(".docx", FileContentUtils::getContentDocx);
+        handlerMap.put(".doc", FileContentUtils::getContentDoc);
+        handlerMap.put(".wps", FileContentUtils::getContentWps);
+        handlerMap.put(".txt", FileContentUtils::getContentTxt);
+
+        Function<byte[], String> handler = handlerMap.get(info.getFileType());
+        if (handler != null) {
+            //组装ES索引名
+            String indexName = "docs_" + info.getSpaceId();
+            //获取文件
+            DocumentVO vo = mongoService.downloadFile(info.getFileId());
+            String content = handler.apply(vo.getData());
+            EsDocInfo esDocInfo = new EsDocInfo(info.getDocId(), content);
+
+            esConfig.setIndexName(indexName);
+            esDocInfoService.save(esDocInfo);
+        }
+    }
+
+    /**
+     * 通过ID删除ES内容
+     *
+     * @param info 文档信息
+     */
+    @Override
+    public void delete(DocInfo info) {
+        //组装ES索引名
+        String indexName = "docs_" + info.getSpaceId();
+
+        esConfig.setIndexName(indexName);
+        esDocInfoService.deleteById(info.getDocId());
+    }
+}