From c7584948cb01407c9db17dc082acc91bed11a97e Mon Sep 17 00:00:00 2001
From: 354798ggg <1074825718@qq.com>
Date: 星期三, 31 五月 2023 14:02:11 +0800
Subject: [PATCH] 文档检索调整

---
 src/main/java/com/product/lucene/config/CmnConst.java                 |   35 ++++++++
 src/main/java/com/product/lucene/service/SearchTermService.java       |   72 ++++++++++++++++++
 src/main/java/com/product/lucene/config/SystemCode.java               |   33 ++++++++
 src/main/java/com/product/lucene/controller/SearchTermController.java |   88 ++++++++++++++++++++++
 4 files changed, 228 insertions(+), 0 deletions(-)

diff --git a/src/main/java/com/product/lucene/config/CmnConst.java b/src/main/java/com/product/lucene/config/CmnConst.java
new file mode 100644
index 0000000..7998f28
--- /dev/null
+++ b/src/main/java/com/product/lucene/config/CmnConst.java
@@ -0,0 +1,35 @@
+package com.product.lucene.config;
+
+public class CmnConst {
+
+	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 TABLE_NAME="table_name";
+	public static final String ATTACHMENT_UUID="attachment_uuid";
+	public static final String FILE_NAME="file_name";
+	public static final String FILE_CONTENT="file_content";
+	public static final String ORG_FIELDS="org_fileds";
+	public static final String USER_FIELDS="user_fileds";
+	public static final String TIME_FIELD="time_field";
+	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 SEARCH_KEY="search_key";
+	public static final String SEARCH_KEYWORD="search_keyword";
+	public static final String SEARCH_HISTORY="search_history";
+	public static final String SEARCH_CONTENT="search_content";
+	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 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 HIGHLIGHT_BEFORE="<span style='color:red'>";
+	public static final String HIGHLIGHT_AFTER="</span>";
+}
diff --git a/src/main/java/com/product/lucene/config/SystemCode.java b/src/main/java/com/product/lucene/config/SystemCode.java
new file mode 100644
index 0000000..6310e43
--- /dev/null
+++ b/src/main/java/com/product/lucene/config/SystemCode.java
@@ -0,0 +1,33 @@
+package com.product.lucene.config;
+
+import com.product.common.enums.IEnum;
+import com.product.common.enums.ModuleEnum;
+
+public enum SystemCode implements IEnum {
+	
+	ADD_SEARCH_CONTENT_EXIST("鏂板甯哥敤璇嶆潯宸插瓨鍦�", ModuleEnum.LUCENE.getValue() + "001"),
+	DELETE_SEARCH_CENTENT_FAIL("鍒犻櫎鎼滅储璇嶆潯澶辫触", ModuleEnum.LUCENE.getValue() + "002"),
+	ADD_SEARCH_CENTENT_FAIL("鍒犻櫎鎼滅储璇嶆潯澶辫触", ModuleEnum.LUCENE.getValue() + "003"),
+	LIST_SEARCH_CENTENT_FAIL("鍒犻櫎鎼滅储璇嶆潯澶辫触", ModuleEnum.LUCENE.getValue() + "004"),
+	;
+	
+	
+	private String text;
+	private String value;
+
+	private SystemCode(String text, String value) {
+		this.text = text;
+		this.value = value;
+	}
+
+	@Override
+	public String getText() {
+		return text;
+	}
+
+	@Override
+	public String getValue() {
+		return value;
+	}
+
+}
diff --git a/src/main/java/com/product/lucene/controller/SearchTermController.java b/src/main/java/com/product/lucene/controller/SearchTermController.java
new file mode 100644
index 0000000..691b764
--- /dev/null
+++ b/src/main/java/com/product/lucene/controller/SearchTermController.java
@@ -0,0 +1,88 @@
+package com.product.lucene.controller;
+
+import javax.servlet.http.HttpServletRequest;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import com.product.core.controller.support.AbstractBaseController;
+import com.product.core.entity.FieldSetEntity;
+import com.product.core.exception.BaseException;
+import com.product.lucene.config.CmnConst;
+import com.product.lucene.config.SystemCode;
+import com.product.lucene.service.SearchTermService;
+import com.product.module.sys.version.ApiVersion;
+import com.product.util.BaseUtil;
+import com.product.util.ResultInfo;
+
+
+@RequestMapping("/api/search-term")
+@RestController
+public class SearchTermController extends AbstractBaseController{
+
+	@Autowired
+	SearchTermService searchTermService;
+	
+	/**
+	 * 	鑾峰彇妫�绱㈣瘝鏉★紙甯哥敤璇嶆潯鍜屽巻鍙茶褰曪級
+	 * @param request
+	 */
+	@RequestMapping("/list/{version}")
+	@ApiVersion(1)
+    public String listSearchTerm(HttpServletRequest request) {
+		try {
+            searchTermService.listSearchTerm();
+            return ResultInfo.success(searchTermService.listSearchTerm());
+        } catch (BaseException e) {
+        	e.printStackTrace();
+        	return this.error(e.getCode(), e.getMessage());
+        } catch (Exception e) {
+            e.printStackTrace();
+            return this.error(SystemCode.LIST_SEARCH_CENTENT_FAIL.getValue(), SystemCode.LIST_SEARCH_CENTENT_FAIL.getText());
+        }
+    }
+	
+	/**
+	 * 	鏂板妫�绱㈣瘝鏉★紙甯哥敤璇嶆潯锛�
+	 * @param request
+	 */
+	@RequestMapping("/add/{version}")
+	@ApiVersion(1)
+    public String addSearchTerm(HttpServletRequest request) {
+		try {
+            FieldSetEntity fse = BaseUtil.getFieldSetEntity(request, CmnConst.PRODUCT_SYS_DOCUMENT_SEARCH_CONTENT);
+            return OK_Add(searchTermService.addSearchTerm(fse.getString(CmnConst.SEARCH_CONTENT), fse.getString(CmnConst.CONTENT_TYPE)));
+        } catch (BaseException e) {
+        	e.printStackTrace();
+        	return this.error(e.getCode(), e.getMessage());
+        } catch (Exception e) {
+            e.printStackTrace();
+            return this.error(SystemCode.ADD_SEARCH_CENTENT_FAIL.getValue(), SystemCode.ADD_SEARCH_CENTENT_FAIL.getText());
+        }
+    }
+	
+	/**
+	 * 	鍒犻櫎妫�绱㈣瘝鏉★紙甯哥敤璇嶆潯鍜屽巻鍙茶褰曪級
+	 * @param request
+	 */
+	@RequestMapping("/delete/{version}")
+	@ApiVersion(1)
+    public String deleteSearchTerm(HttpServletRequest request) {
+		try {
+            FieldSetEntity fse = BaseUtil.getFieldSetEntity(request, CmnConst.PRODUCT_SYS_DOCUMENT_SEARCH_CONTENT);
+            searchTermService.deleteSearchTerm(fse.getUUID());
+            boolean succ = searchTermService.deleteSearchTerm(fse.getUUID());
+            if (succ) {
+				return OK();
+			}
+            throw new BaseException(SystemCode.DELETE_SEARCH_CENTENT_FAIL.getValue(), SystemCode.DELETE_SEARCH_CENTENT_FAIL.getText());
+        } catch (BaseException e) {
+        	e.printStackTrace();
+        	return this.error(e.getCode(), e.getMessage());
+        } catch (Exception e) {
+            e.printStackTrace();
+            return this.error(SystemCode.DELETE_SEARCH_CENTENT_FAIL.getValue(), SystemCode.DELETE_SEARCH_CENTENT_FAIL.getText());
+        }
+    }
+}
diff --git a/src/main/java/com/product/lucene/service/SearchTermService.java b/src/main/java/com/product/lucene/service/SearchTermService.java
new file mode 100644
index 0000000..9f990a3
--- /dev/null
+++ b/src/main/java/com/product/lucene/service/SearchTermService.java
@@ -0,0 +1,72 @@
+package com.product.lucene.service;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import com.product.core.config.CoreConst;
+import com.product.core.dao.BaseDao;
+import com.product.core.entity.FieldSetEntity;
+import com.product.core.exception.BaseException;
+import com.product.core.service.support.AbstractBaseService;
+import com.product.core.spring.context.SpringMVCContextHolder;
+import com.product.lucene.config.CmnConst;
+import com.product.lucene.config.SystemCode;
+import com.product.util.BaseUtil;
+
+import cn.hutool.json.JSONObject;
+
+@Component
+public class SearchTermService extends AbstractBaseService{
+
+	
+	@Autowired
+	BaseDao baseDao;
+	
+	/**
+	 * 	鑾峰彇鎵�鏈夋悳绱㈣瘝鏉�
+	 * @return
+	 */
+	public JSONObject listSearchTerm() {
+		JSONObject jsonReturn = new JSONObject();
+		jsonReturn.set(CmnConst.SEARCH_KEYWORD, BaseUtil.dataTableEntityToJson(baseDao.listTable(CmnConst.PRODUCT_SYS_DOCUMENT_SEARCH_CONTENT, "created_by=? AND content_type=0", new Object[] {SpringMVCContextHolder.getCurrentUserId()})));
+		jsonReturn.set(CmnConst.SEARCH_HISTORY, BaseUtil.dataTableEntityToJson(baseDao.listTable(CmnConst.PRODUCT_SYS_DOCUMENT_SEARCH_CONTENT, "created_by=? AND content_type=1", new Object[] {SpringMVCContextHolder.getCurrentUserId()})));
+		return jsonReturn;
+	}
+	
+	/**
+	 * 	鏂板甯哥敤鎼滅储璇嶆潯
+	 * @param searchContent
+	 * @param contentType
+	 * @return
+	 */
+	public String addSearchTerm(String searchContent, String contentType) {
+		
+		//鏌ヨ鏁版嵁鏄惁瀛樺湪
+		FieldSetEntity fseExist = baseDao.getFieldSetEntityByFilter(CmnConst.PRODUCT_SYS_DOCUMENT_SEARCH_CONTENT,
+				"created_by=? AND search_content=? AND content_type=?", new Object[] {SpringMVCContextHolder.getCurrentUserId(), searchContent, contentType}, false);
+		
+		if ("0".equals(contentType) && fseExist!=null) {
+			throw new BaseException(SystemCode.ADD_SEARCH_CONTENT_EXIST.getValue(), SystemCode.ADD_SEARCH_CONTENT_EXIST.getText());
+		}
+		//鏂板
+		FieldSetEntity fseAddInfo = new FieldSetEntity();
+		fseAddInfo.setTableName(CmnConst.PRODUCT_SYS_DOCUMENT_SEARCH_CONTENT);
+		if (fseExist!=null) {
+			fseAddInfo.setValue(CoreConst.UUID, fseExist.getUUID());
+		}
+		fseAddInfo.setValue(CmnConst.SEARCH_CONTENT, searchContent);
+		fseAddInfo.setValue(CmnConst.CONTENT_TYPE, contentType);
+		BaseUtil.createCreatorAndCreationTime(fseAddInfo);
+		baseDao.saveFieldSetEntity(fseAddInfo);
+		return  fseAddInfo.getUUID();
+	}
+	
+	/**
+	 * 	鍒犻櫎鍗曚釜鎼滅储璇嶆潯
+	 * @param uuid
+	 * @return
+	 */
+	public boolean deleteSearchTerm(String uuid) {
+		return baseDao.delete(CmnConst.PRODUCT_SYS_DOCUMENT_SEARCH_CONTENT, "uuid=?", new Object[] {uuid});
+	}
+}

--
Gitblit v1.9.2