From 7b35e72c742333924e785d64ee01f6485fe05546 Mon Sep 17 00:00:00 2001
From: 354798ggg <1074825718@qq.com>
Date: 星期四, 01 六月 2023 14:41:36 +0800
Subject: [PATCH] 文档检索逻辑优化和文档管理权限处理
---
src/main/java/com/product/lucene/config/CmnConst.java | 8 +++
src/main/java/com/product/lucene/service/LuceneService.java | 60 +++++++++++++++++++++++------
2 files changed, 54 insertions(+), 14 deletions(-)
diff --git a/src/main/java/com/product/lucene/config/CmnConst.java b/src/main/java/com/product/lucene/config/CmnConst.java
index 7998f28..3bf84cb 100644
--- a/src/main/java/com/product/lucene/config/CmnConst.java
+++ b/src/main/java/com/product/lucene/config/CmnConst.java
@@ -5,6 +5,8 @@
public static final String PRODUCT_SYS_DOCUMENT_SEARCH_CONTENT = "product_sys_document_search_content";
public static final String PRODUCT_SYS_DOCUMENT_SEARCH = "product_sys_document_search";
public static final String PRODUCT_SYS_ATTACHMENTS="product_sys_attachments";
+ public static final String PRODUCT_OA_DIRECTORY_RIGHTS="product_oa_directory_rights";
+ public static final String PRODUCT_SYS_FUNCTION_BUTTONS="product_sys_function_buttons";
public static final String TABLE_NAME="table_name";
public static final String ATTACHMENT_UUID="attachment_uuid";
@@ -16,6 +18,9 @@
public static final String TITLE_FIELD="title_field";
public static final String ATTACHMENT_DATA_FIELD="attachment_data_field";
public static final String ATTACHMENT_DATA_TABLE="attachment_data_table";
+ public static final String DIRECTORY_UUID="directory_uuid";
+ public static final String FUNCTION_BUTTON_UUID="function_button_uuid";
+ public static final String STORAGE_UUID="storage_uuid";
public static final String SEARCH_KEY="search_key";
public static final String SEARCH_KEYWORD="search_keyword";
@@ -24,11 +29,12 @@
public static final String CONTENT_TYPE="content_type";
public static final String TITLE="title";
- public static final String IS_PERSSION="is_perssion";
+ public static final String IS_PERSSION="is_perssion"; //0:鏁版嵁鏉冮檺涓嶅 1锛氬師鏁版嵁涓嶅瓨鍦� 2锛氳烦杞寜閽湭閰嶇疆
public static final String SERVICE_UUID="service_uuid";
public static final String DATE_TIME="date_time";
public static final String TOTALCOUNT="totalCount";
public static final String DATA="data";
+ public static final String SKIPBUTTON="skipButton";
public static final String HIGHLIGHT_BEFORE="<span style='color:red'>";
public static final String HIGHLIGHT_AFTER="</span>";
diff --git a/src/main/java/com/product/lucene/service/LuceneService.java b/src/main/java/com/product/lucene/service/LuceneService.java
index 4a788ea..fc77c7b 100644
--- a/src/main/java/com/product/lucene/service/LuceneService.java
+++ b/src/main/java/com/product/lucene/service/LuceneService.java
@@ -6,6 +6,7 @@
import com.product.core.dao.BaseDao;
import com.product.core.entity.FieldSetEntity;
import com.product.core.permission.PermissionService;
+import com.product.core.spring.context.SpringMVCContextHolder;
import com.product.lucene.config.CmnConst;
import com.product.lucene.util.FileUtils;
import com.product.util.BaseUtil;
@@ -169,22 +170,40 @@
/**
* 鑾峰彇鏂囨。妫�绱㈤厤缃俊鎭紙鏉冮檺锛屽姛鑳藉悕绉帮紝璺宠浆鎸夐挳锛�
- * @param json
- * @param function_uuid
- * @param service_uuid
+ *
+ * @param json 妫�绱㈡枃浠跺搴斾俊鎭�
+ * @param function_uuid 鎵�灞炲姛鑳経UID
+ * @param service_uuid 闄勪欢UUID
*/
public void getConfig(JSONObject json, String function_uuid, String uuid) {
- FieldSetEntity fseConfig=baseDao.getFieldSetEntityByFilter(CmnConst.PRODUCT_SYS_DOCUMENT_SEARCH, "function_uuid=?", new Object[] {function_uuid}, false);
+ StringBuilder searchConfigSql = new StringBuilder();
+ searchConfigSql.append("SELECT ")
+ .append(" A.uuid,A.function_uuid,A.function_button_uuid,A.table_name,")
+ .append(" A.attachment_file,A.org_fields,A.user_fields,title_field,time_field,")
+ .append(" B.function_name,C.button_name")
+ .append(" FROM product_sys_document_search A")
+ .append(" LEFT JOIN product_sys_functions B ON A.function_uuid = B.uuid")
+ .append(" LEFT JOIN product_sys_function_buttons C ON A.function_button_uuid = C.uuid")
+ .append(" WHERE function_uuid=?");
+
+ //鑾峰彇鏂囨。妫�绱㈤厤缃�
+ FieldSetEntity fseConfig = baseDao.getFieldSetBySQL(searchConfigSql.toString(), new Object[] {function_uuid}, false);
if (fseConfig!=null) {
- FieldSetEntity fseFunction=baseDao.getFieldSetEntity(CoreConst.PRODUCT_SYS_FUNCTIONS, function_uuid, false);
+ //鑾峰彇璺宠浆鎸夐挳 骞� 鍒ゆ柇璺宠浆鏉冮檺
+ String buttonName = fseConfig.getString(CoreConst.BUTTON_NAME);
+ if (BaseUtil.strIsNull(buttonName)) {
+ json.put(CmnConst.IS_PERSSION, 2);
+ }else {
+ json.put(CmnConst.SKIPBUTTON, fseConfig.getString(CoreConst.BUTTON_NAME));
+ }
//鑾峰彇鏉冮檺杩囨护瀛楁
String org_fields=fseConfig.getString(CmnConst.ORG_FIELDS);
String user_fields=fseConfig.getString(CmnConst.USER_FIELDS);
- //鑾峰彇闄勪欢淇℃伅
+ //鑾峰彇闄勪欢淇℃伅锛岀粨鍚堟暟鎹潈闄愬瓧娈碉紝鐢熸垚鍘熸暟鎹殑杩囨护SQL
FieldSetEntity fseAttachment=baseDao.getFieldSetEntity(CmnConst.PRODUCT_SYS_ATTACHMENTS, uuid, false);
baseDao.loadPromptData(fseAttachment);
if (fseAttachment!=null) {
@@ -206,30 +225,45 @@
}
}
-
//鑾峰彇鍘熸暟鎹�
FieldSetEntity fseService=baseDao.getFieldSetEntityByFilter(fseAttachment.getString(CmnConst.ATTACHMENT_DATA_TABLE), filter.toString(), new Object[] {uuid}, false);
- if (fseService==null) {//鏉冮檺杩囨护鏃犲師鏁版嵁
+ if (fseService==null) {
+ //鑾峰彇鏃犳潈闄愯繃婊ょ殑鍘熸暟鎹�
FieldSetEntity fseService2=baseDao.getFieldSetEntityByFilter(fseAttachment.getString(CmnConst.ATTACHMENT_DATA_TABLE), fseAttachment.getString(CmnConst.ATTACHMENT_DATA_FIELD)+"=?", new Object[] {uuid}, false);
if (fseService2==null) {
-// json.put("date_time", fseService2.getString(fseConfig.getString("time_field")));
- json.put(CmnConst.TITLE, "鏃犵浉鍏充笟鍔℃暟鎹�");
- json.put(CoreConst.FUNCTION_NAME, fseFunction.getString(CoreConst.FUNCTION_NAME));
+ json.put(CmnConst.TITLE, "涓氬姟鏁版嵁涓嶅瓨鍦�");
json.put(CmnConst.IS_PERSSION, 1);
}else {
json.put(CmnConst.SERVICE_UUID, fseService2.getString(CoreConst.UUID));
json.put(CmnConst.DATE_TIME, fseService2.getString(fseConfig.getString(CmnConst.TIME_FIELD)));
json.put(CmnConst.TITLE, fseService2.getString(fseConfig.getString(CmnConst.TITLE_FIELD)));
- json.put(CoreConst.FUNCTION_NAME, fseFunction.getString(CoreConst.FUNCTION_NAME));
json.put(CmnConst.IS_PERSSION, 0);
}
}else {
+
+ //鍒ゆ柇鏄惁涓烘枃妗g鐞嗗姛鑳斤紝骞跺鐞嗗崟浣嶆枃妗e拰涓汉鏂囨。鏉冮檺
+ if("e4fa2c88-88a4-4ef4-9020-ebbe0440b4cf".equals(function_uuid)) {
+ if(!SpringMVCContextHolder.getCurrentUserId().equals(fseService.getString(CoreConst.CREATED_BY))) {
+ json.put(CmnConst.IS_PERSSION, 0);
+ }
+ }else if ("01513ff6-c758-4384-b861-e58dfe146fdd".equals(function_uuid)) {
+ //鑾峰彇鍗曚綅鏂囨。鎵�灞炵洰褰曟潈闄�
+ FieldSetEntity fseDirectRight = baseDao.getFieldSetByFilter(CmnConst.PRODUCT_OA_DIRECTORY_RIGHTS, "directory_uuid=?", new Object[] {fseService.getString(CmnConst.DIRECTORY_UUID)}, false);
+ if (fseDirectRight == null) {
+ json.put(CmnConst.IS_PERSSION, 0);
+ }else {
+ boolean succ= BaseUtil.multipleTypeConcat(fseDirectRight.getString(CmnConst.STORAGE_UUID), SpringMVCContextHolder.getCurrentUserId());
+ if (!succ) {
+ json.put(CmnConst.IS_PERSSION, 0);
+ }
+ }
+ }
json.put(CmnConst.SERVICE_UUID, fseService.getString(CoreConst.UUID));
json.put(CmnConst.DATE_TIME, fseService.getString(fseConfig.getString(CmnConst.TIME_FIELD)));
json.put(CmnConst.TITLE, fseService.getString(fseConfig.getString(CmnConst.TITLE_FIELD)));
- json.put(CoreConst.FUNCTION_NAME, fseFunction.getString(CoreConst.FUNCTION_NAME));
}
+ json.put(CoreConst.FUNCTION_NAME, fseConfig.getString(CoreConst.FUNCTION_NAME));
json.put(CoreConst.CREATED_BY, fseAttachment.getString(CoreConst.CREATED_BY));
}
}
--
Gitblit v1.9.2