From 6fdcc0c26dd33e87a024a69ed635d9aedb59cad6 Mon Sep 17 00:00:00 2001
From: admin <weikou2014>
Date: 星期二, 07 一月 2020 12:02:50 +0800
Subject: [PATCH] 订单搜索引擎增量更新

---
 fanli/src/main/java/com/yeshi/fanli/service/impl/config/ConfigServiceImpl.java |   76 ++++++++++++++++++++++++++++++++++++-
 1 files changed, 73 insertions(+), 3 deletions(-)

diff --git a/fanli/src/main/java/com/yeshi/fanli/service/impl/config/ConfigServiceImpl.java b/fanli/src/main/java/com/yeshi/fanli/service/impl/config/ConfigServiceImpl.java
index b2b7b79..75fb82d 100644
--- a/fanli/src/main/java/com/yeshi/fanli/service/impl/config/ConfigServiceImpl.java
+++ b/fanli/src/main/java/com/yeshi/fanli/service/impl/config/ConfigServiceImpl.java
@@ -1,5 +1,6 @@
 package com.yeshi.fanli.service.impl.config;
 
+import java.util.ArrayList;
 import java.util.Date;
 import java.util.List;
 
@@ -7,6 +8,7 @@
 
 import org.springframework.cache.annotation.CacheEvict;
 import org.springframework.cache.annotation.Cacheable;
+import org.springframework.scheduling.annotation.Async;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 import org.yeshi.utils.entity.ProxyIP;
@@ -19,6 +21,7 @@
 import com.yeshi.fanli.service.inter.config.ConfigService;
 import com.yeshi.fanli.util.Constant;
 import com.yeshi.fanli.util.StringUtil;
+import com.yeshi.fanli.util.dataoke.DaTaoKeApiUtil;
 
 import net.sf.json.JSONArray;
 
@@ -61,7 +64,24 @@
 
 	@Cacheable(value = "config", key = "#p0+'Str'")
 	public String get(String key) {
-		List<Config> list = configMapper.listByKey(key);
+		List<Config> list = configMapper.listByKey(key, null, null);
+		if (list.size() == 0) {
+			return null;
+		}
+		String value = list.get(0).getValue();
+		return value;
+	}
+
+	@Cacheable(value = "config", key = "'getByVersion'+'-'+#key+'-'+#platform+'-'+#version ")
+	public String getByVersion(String key, String platform, int version) {
+		Integer minAndroidVersion = null;
+		Integer minIosVersion = null;
+		if ("android".equalsIgnoreCase(platform)) {
+			minAndroidVersion = version;
+		} else
+			minIosVersion = version;
+
+		List<Config> list = configMapper.listByKey(key, minAndroidVersion, minIosVersion);
 		if (list.size() == 0) {
 			return null;
 		}
@@ -71,7 +91,7 @@
 
 	@Cacheable(value = "config", key = "#p0")
 	public Config getConfig(String key) {
-		List<Config> list = configMapper.listByKey(key);
+		List<Config> list = configMapper.listByKey(key, null, null);
 		if (list.size() == 0) {
 			return null;
 		}
@@ -186,10 +206,60 @@
 
 	@Override
 	public void save(Config config) {
-		List<Config> list = configMapper.listByKey(config.getKey());
+		List<Config> list = configMapper.listByKey(config.getKey(), null, null);
 		if (list == null || list.size() == 0) {
 			configMapper.insertSelective(config);
 		}
 	}
 
+	@Cacheable(value = "config", key = "'getSearchDiscoveryKeys'")
+	@Override
+	public String getSearchDiscoveryKeys() {
+		List<Config> list = configMapper.listByKey("search_discovery_keys", null, null);
+		if (list == null || list.size() == 0)
+			return null;
+
+		Config config = list.get(0);
+		if (config == null)
+			return null;
+
+		// 鏇存柊
+		updateSearchDiscoveryKeys(config);
+
+		String value = config.getValue();
+		return value;
+	}
+
+	/**
+	 * 鏇存柊鎼滅储鍙戠幇璇�
+	 * 
+	 * @param config
+	 */
+	@Async
+	private void updateSearchDiscoveryKeys(Config config) {
+		long currentTime = java.lang.System.currentTimeMillis();
+
+		String createtime = config.getCreatetime();
+		if (!StringUtil.isNullOrEmpty(createtime)) {
+			long diff = currentTime - Long.parseLong(createtime);
+			if (diff < 1000 * 60 * 60)
+				return; // 瓒呰繃涓�涓皬鏃舵洿鏂�
+		}
+
+		String hotWords = DaTaoKeApiUtil.getHotWords();
+		if (StringUtil.isNullOrEmpty(hotWords))
+			return;
+		JSONArray array = JSONArray.fromObject(hotWords);
+		String reg = "^([\u4E00-\uFA29]|[\uE7C7-\uE7F3]|[a-zA-Z0-9_-]){1,20}$";
+		List<String> list = new ArrayList<>();
+		for (int i = 0; i < array.size(); i++) {
+			String key = array.optString(i);
+			if (key.matches(reg)) {
+				list.add(key);
+			}
+		}
+		config.setValue(new Gson().toJson(list));
+		config.setCreatetime(currentTime + "");
+		configMapper.updateByPrimaryKeySelective(config);
+	}
 }

--
Gitblit v1.8.0