From 8c04d27e5cebb7e654c208533e9567c4df2c8acc Mon Sep 17 00:00:00 2001
From: yujian <yujian@163.com>
Date: 星期四, 12 十二月 2019 14:21:44 +0800
Subject: [PATCH] 券时间限制

---
 fanli/src/main/java/com/yeshi/fanli/service/impl/config/ConfigServiceImpl.java |  149 ++++++++++++++++++++++++++++++++++++-------------
 1 files changed, 109 insertions(+), 40 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 fc00d36..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,73 +1,50 @@
 package com.yeshi.fanli.service.impl.config;
 
-import java.io.Serializable;
+import java.util.ArrayList;
 import java.util.Date;
 import java.util.List;
 
 import javax.annotation.Resource;
 
-import net.sf.json.JSONArray;
-
 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;
 
 import com.google.gson.Gson;
-import com.yeshi.fanli.dao.config.ConfigDao;
+import com.yeshi.fanli.dao.mybatis.ConfigMapper;
 import com.yeshi.fanli.entity.common.Config;
 import com.yeshi.fanli.entity.config.AppHomeFloatImg;
 import com.yeshi.fanli.entity.xcx.XCXSettingConfig;
 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;
 
 @Service
 public class ConfigServiceImpl implements ConfigService {
 
 	@Resource
-	private ConfigDao configDao;
+	private ConfigMapper configMapper;
 
 	@Cacheable(value = "config")
 	public List<Config> getAllList() {
-		return configDao.list("from Config");
+		return configMapper.listAll();
 	}
 
 	@Override
 	public List<Config> listObjects(String key, int page) {
 		int start = (page - 1) * Constant.PAGE_SIZE;
-		StringBuffer hqlBuf = new StringBuffer("from Config pr where 1=1 ");
-
-		if (key != null && !"".equals(key.trim())) {
-			hqlBuf.append(" and (pr.name like ? )");
-		}
-
-		hqlBuf.append(" order by pr.id desc ");
-		String hql = hqlBuf.toString();
-		if (hql.contains("pr.name")) {
-			return configDao.list(hqlBuf.toString(), start, Constant.PAGE_SIZE, new Serializable[] { "%" + key + "%" });
-		} else {
-			return configDao.list(hqlBuf.toString(), start, Constant.PAGE_SIZE, new Serializable[] {});
-		}
-
+		return configMapper.listSearchByName(key, start, Constant.PAGE_SIZE);
 	}
 
 	@Override
-	public int getCount(String key, int page) {
-
-		StringBuffer hqlBuf = new StringBuffer("select count(*) from Config pr where 1=1 ");
-
-		if (key != null && !"".equals(key.trim())) {
-			hqlBuf.append(" and (pr.name like ? )");
-		}
-
-		String hql = hqlBuf.toString();
-
-		if (hql.contains("pr.name")) {
-			return (int) configDao.getCount(hqlBuf.toString(), new Serializable[] { "%" + key + "%" });
-		} else {
-			return (int) configDao.getCount(hqlBuf.toString(), new Serializable[] {});
-		}
+	public int getCount(String key) {
+		return (int) configMapper.countSearchByName(key);
 	}
 
 	@CacheEvict(value = "config", allEntries = true)
@@ -75,19 +52,36 @@
 	public void update(List<Config> list) {
 		for (Config config : list) {
 			config.setCreatetime(new Date().getTime() + "");
-			configDao.update(config);
+			configMapper.updateByPrimaryKeySelective(config);
 		}
 	}
 
 	@CacheEvict(value = "config", allEntries = true)
 	public void update(Config config) {
 		config.setCreatetime(new Date().getTime() + "");
-		configDao.update(config);
+		configMapper.updateByPrimaryKeySelective(config);
 	}
 
 	@Cacheable(value = "config", key = "#p0+'Str'")
 	public String get(String key) {
-		List<Config> list = configDao.list("from Config c where c.key=? ", new Serializable[] { 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;
 		}
@@ -97,7 +91,7 @@
 
 	@Cacheable(value = "config", key = "#p0")
 	public Config getConfig(String key) {
-		List<Config> list = configDao.list("from Config c where c.key=? ", new Serializable[] { key });
+		List<Config> list = configMapper.listByKey(key, null, null);
 		if (list.size() == 0) {
 			return null;
 		}
@@ -190,7 +184,82 @@
 
 	@Override
 	public Config getConfig(long id) {
-		return configDao.find(Config.class, id);
+		return configMapper.selectByPrimaryKey(id);
 	}
 
+	@Override
+	public ProxyIP getTaoBaoProxyIP() {
+		String value = get("taobao_proxy_ip");
+		try {
+			String[] sts = value.split(":");
+			return new ProxyIP(sts[0], Integer.parseInt(sts[1]));
+		} catch (Exception e) {
+		}
+		return null;
+	}
+
+	@Override
+	public String getAppHomeFloatNotifyImg() {
+
+		return get("home_float_notify_img");
+	}
+
+	@Override
+	public void save(Config config) {
+		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