From 28cf328a098334b51a3e9d2d56f983fb8c862211 Mon Sep 17 00:00:00 2001
From: yujian <yujian@163.com>
Date: 星期六, 23 五月 2020 09:54:38 +0800
Subject: [PATCH] 足迹、收藏订单兼容新需求

---
 fanli/src/main/java/com/yeshi/fanli/dao/ElasticBaseDao.java |   74 ++++++++++++++++++++++--------------
 1 files changed, 45 insertions(+), 29 deletions(-)

diff --git a/fanli/src/main/java/com/yeshi/fanli/dao/ElasticBaseDao.java b/fanli/src/main/java/com/yeshi/fanli/dao/ElasticBaseDao.java
index 5c149e7..d5e227c 100644
--- a/fanli/src/main/java/com/yeshi/fanli/dao/ElasticBaseDao.java
+++ b/fanli/src/main/java/com/yeshi/fanli/dao/ElasticBaseDao.java
@@ -5,7 +5,8 @@
 import java.util.List;
 import java.util.concurrent.TimeUnit;
 
-import org.apache.http.HttpHost;
+import javax.annotation.Resource;
+
 import org.elasticsearch.action.delete.DeleteRequest;
 import org.elasticsearch.action.get.GetRequest;
 import org.elasticsearch.action.get.GetResponse;
@@ -14,8 +15,6 @@
 import org.elasticsearch.action.search.SearchResponse;
 import org.elasticsearch.action.update.UpdateRequest;
 import org.elasticsearch.client.RequestOptions;
-import org.elasticsearch.client.RestClient;
-import org.elasticsearch.client.RestHighLevelClient;
 import org.elasticsearch.common.unit.TimeValue;
 import org.elasticsearch.common.xcontent.XContentType;
 import org.elasticsearch.index.query.QueryBuilders;
@@ -24,22 +23,36 @@
 import org.elasticsearch.search.builder.SearchSourceBuilder;
 import org.springframework.stereotype.Repository;
 import org.yeshi.utils.JsonUtil;
+import org.yeshi.utils.elasticsearch.Document;
 
 import com.google.gson.Gson;
 import com.google.gson.GsonBuilder;
+import com.yeshi.fanli.service.manger.ElasticManger;
+
+
 
 @Repository
 public abstract class ElasticBaseDao<T> {
-	// 鍦板潃
-	private static String host = "192.168.1.200";
-	// 绔彛
-	private static Integer port = 9200;
-	// 鏁版嵁搴撳悕绉�
-	public static String index = "order";
 
-	// 鍒濆鍖朼pi瀹㈡埛绔�
-	public static RestHighLevelClient client = new RestHighLevelClient(
-			RestClient.builder(new HttpHost(host, port, "http")));
+	@Resource 
+	protected  ElasticManger elasticManger;
+	
+	
+	/**
+	 * 鑾峰彇index
+	 * @param bean
+	 * @return
+	 */
+	public String getDocument(Class<?> entityClass) {
+		if (entityClass.isAnnotationPresent(Document.class)) {
+	        Document doc = (Document)entityClass.getAnnotation(Document.class);
+	        return doc.indexName();
+		}
+		String name = entityClass.getName();
+		return name.substring(name.lastIndexOf(".") + 1, name.length());
+	}
+
+    
 	
 	/**
 	 * 鎻掑叆鏁版嵁
@@ -48,12 +61,13 @@
 	 * @return
 	 */
 	public void save(T bean) {
+		String document = getDocument(bean.getClass());
 		String json = JsonUtil.getSimpleGson().toJson(bean);
-		IndexRequest request = new IndexRequest(index);
+		IndexRequest request = new IndexRequest(document);
 		request.source(json, XContentType.JSON);
 		// 鍚屾鎵ц
 		try {
-			client.index(request, RequestOptions.DEFAULT);
+			elasticManger.getClient().index(request, RequestOptions.DEFAULT);
 		} catch (IOException e) {
 			e.printStackTrace();
 		}
@@ -66,12 +80,14 @@
 	 * @return
 	 */
 	public void save(T bean, String id) {
+		String document = getDocument(bean.getClass());
+		
 		String json = JsonUtil.getSimpleGson().toJson(bean);
-		IndexRequest request = new IndexRequest(index).id(id);
+		IndexRequest request = new IndexRequest(document).id(id);
 		request.source(json, XContentType.JSON);
 		// 鍚屾鎵ц
 		try {
-			client.index(request, RequestOptions.DEFAULT);
+			elasticManger.getClient().index(request, RequestOptions.DEFAULT);
 		} catch (IOException e) {
 			e.printStackTrace();
 		}
@@ -83,11 +99,13 @@
 	 * @param bean
 	 */
 	public void update(String id, T bean) {
-		UpdateRequest request = new UpdateRequest(index, id);
+		String document = getDocument(bean.getClass());
+		
+		UpdateRequest request = new UpdateRequest(document, id);
 		String json = new GsonBuilder().create().toJson(bean);
 		request.doc(json, XContentType.JSON);
 		try {
-			client.update(request, RequestOptions.DEFAULT);
+			elasticManger.getClient().update(request, RequestOptions.DEFAULT);
 		} catch (Exception e) {
 			e.printStackTrace();
 		}
@@ -99,10 +117,11 @@
 	 * 
 	 * @param Document id
 	 */
-	public void delete(String id) {
-		DeleteRequest request = new DeleteRequest(index, id);
+	public void delete(String id, Class<T> entityClass) {
+		String document = getDocument(entityClass);
+		DeleteRequest request = new DeleteRequest(document, id);
 		try {
-			client.delete(request, RequestOptions.DEFAULT);
+			elasticManger.getClient().delete(request, RequestOptions.DEFAULT);
 		} catch (IOException e) {
 			e.printStackTrace();
 		}
@@ -115,9 +134,10 @@
 	 * @return
 	 */
 	public T get(String id, Class<T> entityClass) {
-		GetRequest request = new GetRequest(index, id);
+		String document = getDocument(entityClass);
+		GetRequest request = new GetRequest(document, id);
 		try {
-			GetResponse getResponse = client.get(request, RequestOptions.DEFAULT);
+			GetResponse getResponse = elasticManger.getClient().get(request, RequestOptions.DEFAULT);
 			if (getResponse.isExists()) {
 			    String content = getResponse.getSourceAsString();        
 			    return new Gson().fromJson(content, entityClass);
@@ -138,6 +158,7 @@
 	 * @return
 	 */
 	public List<T> query(String document, String key, int start, int count, Class<T> entityClass) {
+		String index = getDocument(entityClass);
 		List<T> list = new ArrayList<>();
 		SearchSourceBuilder sourceBuilder = new SearchSourceBuilder();
 		sourceBuilder.query(QueryBuilders.termQuery(document, key));
@@ -149,7 +170,7 @@
 		searchRequest.indices(index);
 		searchRequest.source(sourceBuilder);
 		try {
-			SearchResponse searchResponse = client.search(searchRequest, RequestOptions.DEFAULT);
+			SearchResponse searchResponse = elasticManger.getClient().search(searchRequest, RequestOptions.DEFAULT);
 			SearchHits hits = searchResponse.getHits();
 			SearchHit[] searchHits = hits.getHits();
 			
@@ -163,10 +184,5 @@
 		}
 		return list;
 	}
-	
-	
-	
-	
-	
 	
 }

--
Gitblit v1.8.0