Pārlūkot izejas kodu

完成是否允许全文搜索相关功能,增加是否允许转存

wukai 1 gadu atpakaļ
vecāks
revīzija
724bb9d38c

+ 32 - 0
doc-admin/src/test/java/com/test/DirTest.java

@@ -0,0 +1,32 @@
+package com.test;
+
+import com.doc.RuoYiApplication;
+import com.doc.biz.service.IDocDirService;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.test.context.junit4.SpringRunner;
+
+import javax.annotation.Resource;
+import java.io.FileNotFoundException;
+
+/**
+ * DirText$
+ *
+ * @author wukai
+ * @date 2023/11/30 16:08
+ */
+@RunWith(SpringRunner.class)
+@SpringBootTest(classes = RuoYiApplication.class, webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
+public class DirTest {
+    @Resource
+    IDocDirService dirService;
+
+    @Test
+    public void test() throws FileNotFoundException {
+        System.err.println(dirService.hasRole(26L,"l0300"));
+        System.err.println(dirService.hasRole(29L,"l0300"));
+        System.err.println(dirService.hasRole(65l,"l0300"));
+        System.err.println(dirService.hasRole(43L,"fdsfds"));
+    }
+}

+ 4 - 0
doc-biz/src/main/java/com/doc/biz/domain/DocInfo.java

@@ -74,6 +74,10 @@ public class DocInfo extends BaseEntity {
     @TableField(exist = false)
     private String isFiled;
 
+    @ApiModelProperty("是否允许转存")
+    @TableField(exist = false)
+    private Boolean unloading;
+
     @ApiModelProperty("归档时间")
     @JsonFormat(pattern = "yyyy-MM-dd hh:mm:ss")
     @TableField(exist = false)

+ 9 - 0
doc-biz/src/main/java/com/doc/biz/service/IDocDirService.java

@@ -22,6 +22,15 @@ public interface IDocDirService {
     public DocDir selectDocDirByDirId(Long dirId);
 
     /**
+     * 查询目录是否有某个权限
+     *
+     * @param dirId     文档目录管理主键
+     * @param roleCode 权限编码
+     * @return 文档目录管理
+     */
+    Boolean hasRole(Long dirId, String roleCode);
+
+    /**
      * 验证访问码
      *
      * @param dirId      文档目录管理主键

+ 28 - 0
doc-biz/src/main/java/com/doc/biz/service/impl/DocDirServiceImpl.java

@@ -1,9 +1,12 @@
 package com.doc.biz.service.impl;
 
+import com.alibaba.fastjson2.JSONObject;
 import com.doc.biz.domain.DocDir;
+import com.doc.biz.domain.DocDirLevel;
 import com.doc.biz.domain.DocFavorite;
 import com.doc.biz.domain.DocSpace;
 import com.doc.biz.mapper.DocDirMapper;
+import com.doc.biz.service.IDocDirLevelService;
 import com.doc.biz.service.IDocDirService;
 import com.doc.biz.service.IDocFavoriteService;
 import com.doc.biz.service.IDocSpaceService;
@@ -32,6 +35,8 @@ public class DocDirServiceImpl implements IDocDirService {
     private IDocSpaceService docSpaceService;
     @Resource
     private IDocFavoriteService favoriteService;
+    @Resource
+    private IDocDirLevelService levelService;
 
     /**
      * 查询文档目录管理
@@ -45,6 +50,29 @@ public class DocDirServiceImpl implements IDocDirService {
     }
 
     /**
+     * 查询目录是否有某个权限
+     *
+     * @param dirId    文档目录管理主键
+     * @param roleCode 权限编码
+     * @return 文档目录管理
+     */
+    @Override
+    public Boolean hasRole(Long dirId, String roleCode) {
+        DocDir dir = selectDocDirByDirId(dirId);
+        String yes = "Y";
+        if (yes.equals(dir.getIsEncrypt())) {
+            DocDirLevel level = levelService.selectDocDirLevelByLevelCode(dir.getEncryptLevel());
+            JSONObject obj = JSONObject.parse(level.getLevelRoles());
+            if (obj.getInteger(roleCode) == null || obj.getInteger(roleCode) != 1) {
+                //只有权限为选中状态才有滴
+                return false;
+            }
+        }
+        //如果不是加密目录,肯定是所有权限都有滴
+        return true;
+    }
+
+    /**
      * 验证访问码
      *
      * @param dirId      文档目录管理主键

+ 13 - 6
doc-biz/src/main/java/com/doc/biz/service/impl/DocInfoServiceImpl.java

@@ -3,10 +3,7 @@ package com.doc.biz.service.impl;
 import com.doc.biz.domain.DocFavorite;
 import com.doc.biz.domain.DocInfo;
 import com.doc.biz.mapper.DocInfoMapper;
-import com.doc.biz.service.IDocFavoriteService;
-import com.doc.biz.service.IDocInfoService;
-import com.doc.biz.service.IDocSpaceService;
-import com.doc.biz.service.IElasticSearchService;
+import com.doc.biz.service.*;
 import com.doc.biz.vo.DocumentVO;
 import com.doc.common.utils.DateUtils;
 import com.doc.common.utils.SecurityUtils;
@@ -33,6 +30,8 @@ public class DocInfoServiceImpl implements IDocInfoService {
     private IDocSpaceService spaceService;
     @Resource
     private IDocFavoriteService favoriteService;
+    @Resource
+    private IDocDirService dirService;
 
 
     /**
@@ -43,7 +42,11 @@ public class DocInfoServiceImpl implements IDocInfoService {
      */
     @Override
     public DocInfo selectDocInfoByDocId(Long docId) {
-        return docInfoMapper.selectDocInfoByDocId(docId);
+        DocInfo info = docInfoMapper.selectDocInfoByDocId(docId);
+        String unloading = "l0400";
+        //是否允许转存
+        info.setUnloading(dirService.hasRole(info.getDirId(), unloading));
+        return info;
     }
 
     /**
@@ -137,7 +140,11 @@ public class DocInfoServiceImpl implements IDocInfoService {
         checkDuplicateNames(docInfo);
 
         int i = docInfoMapper.insertDocInfo(docInfo);
-        elasticSearchService.save(docInfo);
+        String allowSearch = "l0300";
+        if (dirService.hasRole(docInfo.getDirId(), allowSearch)) {
+            //只有允许全文搜索的才会存入ES库,否则不存入
+            elasticSearchService.save(docInfo);
+        }
         //改变空间容量
         spaceService.updateUsedCap(docInfo.getSpaceId());
         return i;