From 651a15c78f668bef3859d9ed1bb7ad0b669d3600 Mon Sep 17 00:00:00 2001
From: admin <weikou2014>
Date: 星期五, 03 七月 2020 17:52:07 +0800
Subject: [PATCH] 多APP优化

---
 fanli/src/main/java/com/yeshi/fanli/service/impl/config/ConfigServiceImpl.java |  385 +++++++++++++++++++++++++++++++++++++++---------------
 1 files changed, 275 insertions(+), 110 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 a413b42..aa3ad81 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,150 +1,315 @@
 package com.yeshi.fanli.service.impl.config;
 
-import java.io.Serializable;
+import java.util.ArrayList;
+import java.util.Arrays;
 import java.util.Date;
 import java.util.List;
 
 import javax.annotation.Resource;
 
+import com.yeshi.fanli.entity.SystemEnum;
+import com.yeshi.fanli.util.ThreadUtil;
 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.system.ConfigKeyEnum;
 import com.yeshi.fanli.entity.xcx.XCXSettingConfig;
+import com.yeshi.fanli.log.LogHelper;
 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;
+    @Resource
+    private ConfigMapper configMapper;
 
-	@Cacheable(value = "config")
-	public List<Config> getAllList() {
-		return configDao.list("from Config");
-	}
 
-	@CacheEvict(value = "config", allEntries = true)
-	@Transactional
-	public void update(List<Config> list) {
-		for (Config config : list) {
-			config.setCreatetime(new Date().getTime() + "");
-			configDao.update(config);
-		}
-	}
+    @Override
+    @Cacheable(value = "config")
+    public List<Config> getAllList(SystemEnum system) {
+        return configMapper.listAll(system);
+    }
 
-	public void update(Config config) {
-		config.setCreatetime(new Date().getTime() + "");
-		configDao.update(config);
-	}
+    @Override
+    public List<Config> listObjects(String key, int page, SystemEnum system) {
+        int start = (page - 1) * Constant.PAGE_SIZE;
+        return configMapper.listSearchByName(key, start, Constant.PAGE_SIZE, system);
+    }
 
-	@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 });
-		if (list.size() == 0) {
-			return null;
-		}
-		String value = list.get(0).getValue();
-		return value;
-	}
+    @Override
+    public int getCount(String key, SystemEnum system) {
+        return (int) configMapper.countSearchByName(key, system);
+    }
 
-	@Cacheable(value = "config", key = "#p0")
-	public Config getConfig(String key) {
-		List<Config> list = configDao.list("from Config c where c.key=? ", new Serializable[] { key });
-		if (list.size() == 0) {
-			return null;
-		}
-		return list.get(0);
-	}
+    @CacheEvict(value = "config", allEntries = true)
+    @Transactional
+    public void update(List<Config> list) {
+        for (Config config : list) {
+            if (config.getValue() == null) {
+                config.setValue("");
+            }
+            config.setCreatetime(new Date().getTime() + "");
+            configMapper.updateByPrimaryKeySelective(config);
+        }
+    }
 
-	@Override
-	public boolean xcxShow(String appId, Integer version) {
-		if (version == null)
-			return false;
+    @CacheEvict(value = "config", allEntries = true)
+    public void update(Config config) {
+        if (config.getValue() == null)
+            config.setValue("");
 
-		String value = get("xcx_setting");
-		if (StringUtil.isNullOrEmpty(value))
-			return false;
-		JSONArray array = JSONArray.fromObject(value);
-		for (int i = 0; i < array.size(); i++) {
-			XCXSettingConfig config = new Gson().fromJson(array.optJSONObject(i).toString(), XCXSettingConfig.class);
-			if (config.getAppId().equalsIgnoreCase(appId)) {
-				if (version > config.getVersion())
-					return config.isShow();
-				else
-					return true;
-			}
-		}
-		return false;
-	}
+        config.setCreatetime(new Date().getTime() + "");
+        configMapper.updateByPrimaryKeySelective(config);
+    }
 
-	@Override
-	public XCXSettingConfig getXCXInfoByGhId(String ghId) {
-		String value = get("xcx_setting");
-		JSONArray array = JSONArray.fromObject(value);
-		for (int i = 0; i < array.size(); i++) {
-			XCXSettingConfig config = new Gson().fromJson(array.optJSONObject(i).toString(), XCXSettingConfig.class);
-			if (config.getGhId().equalsIgnoreCase(ghId)) {
-				return config;
-			}
-		}
-		return null;
-	}
+    @Override
+    @Cacheable(value = "config", key = "'getValue-'+#key+'-'+#system")
+    public String getValue(String key, SystemEnum system) {
+        List<Config> list = configMapper.listByKey(key, null, null,system);
+        if (list.size() == 0) {
+            return null;
+        }
+        String value = list.get(0).getValue();
+        return value;
+    }
 
-	@Override
-	public String getH5Host() {
-		String value = get("h5_url");
-		return value.trim();
-	}
+    @Cacheable(value = "config", key = "'getByVersion'+'-'+#key+'-'+#platform+'-'+#version+'-'+#system ")
+    public String getByVersion(String key, String platform, int version, SystemEnum system) {
+        Integer minAndroidVersion = null;
+        Integer minIosVersion = null;
+        if ("android".equalsIgnoreCase(platform)) {
+            minAndroidVersion = version;
+        } else
+            minIosVersion = version;
 
-	@Cacheable(value = "config", key = "'iosOnLining'+#version")
-	@Override
-	public boolean iosOnLining(int version) {
-		String value = get("ios_onling_version");
-		if (StringUtil.isNullOrEmpty(value))
-			return false;
-		return version >= Integer.parseInt(value);
-	}
+        List<Config> list = configMapper.listByKey(key, minAndroidVersion, minIosVersion,system);
+        if (list.size() == 0) {
+            return null;
+        }
+        String value = list.get(0).getValue();
+        return value;
+    }
 
-	@Cacheable(value = "config", key = "'isConvertTaoBaoLinkInServer'")
-	@Override
-	public boolean isConvertTaoBaoLinkInServer() {
-		String value = get("convert_taobao_link_in_server");
-		if (StringUtil.isNullOrEmpty(value))
-			return false;
-		if ("1".equalsIgnoreCase(value.trim()))
-			return true;
-		else
-			return false;
-	}
+    @Cacheable(value = "config", key = "'getConfig-'+ #key+'-'+#system")
+    public Config getConfig(String key, SystemEnum system) {
+        List<Config> list = configMapper.listByKey(key, null, null,system);
+        if (list.size() == 0) {
+            return null;
+        }
+        return list.get(0);
+    }
 
-	@Cacheable(value = "config", key = "'getAppHomeFloatImg'")
-	@Override
-	public AppHomeFloatImg getAppHomeFloatImg() {
-		String value = get("app_float_img");
-		if (!StringUtil.isNullOrEmpty(value)) {
-			Gson gson = new Gson();
-			AppHomeFloatImg appHomeFloatImg = gson.fromJson(value, AppHomeFloatImg.class);
-			if (appHomeFloatImg.getShow())
-				return appHomeFloatImg;
-		}
+    @Override
+    public boolean xcxShow(String appId, Integer version,SystemEnum system) {
+        if (version == null)
+            return false;
 
-		return null;
-	}
+        String value = getValue(ConfigKeyEnum.xcxSetting.getKey(),system);
+        if (StringUtil.isNullOrEmpty(value))
+            return false;
+        JSONArray array = JSONArray.fromObject(value);
+        for (int i = 0; i < array.size(); i++) {
+            XCXSettingConfig config = new Gson().fromJson(array.optJSONObject(i).toString(), XCXSettingConfig.class);
+            if (config.getAppId().equalsIgnoreCase(appId)) {
+                if (version > config.getVersion())
+                    return config.isShow();
+                else
+                    return true;
+            }
+        }
+        return false;
+    }
 
-	@Cacheable(value = "config", key = "'getHomeWEEXUrl'")
-	@Override
-	public String getHomeWEEXUrl() {
-		String value = get("home_weex_url");
-		return value;
-	}
+    @Override
+    public XCXSettingConfig getXCXInfoByGhId(String ghId,SystemEnum system) {
+        String value = getValue(ConfigKeyEnum.xcxSetting.getKey(),system);
+        JSONArray array = JSONArray.fromObject(value);
+        for (int i = 0; i < array.size(); i++) {
+            XCXSettingConfig config = new Gson().fromJson(array.optJSONObject(i).toString(), XCXSettingConfig.class);
+            if (config.getGhId().equalsIgnoreCase(ghId)) {
+                return config;
+            }
+        }
+        return null;
+    }
 
+    @Override
+    public String getH5Host(SystemEnum system) {
+        String value = getValue(ConfigKeyEnum.h5Url.getKey(),system);
+        String[] sts = value.split(",");
+        value = sts[(int) (sts.length * Math.random())];
+        return value.trim();
+    }
+
+    @Cacheable(value = "config", key = "'iosOnLining'+#version+'-'+#system")
+    @Override
+    public boolean iosOnLining(int version, SystemEnum system) {
+        String value = getValue(ConfigKeyEnum.iosOnlingVersion.getKey(),system);
+        if (StringUtil.isNullOrEmpty(value))
+            return false;
+        return version >= Integer.parseInt(value);
+    }
+
+    @Cacheable(value = "config", key = "'isConvertTaoBaoLinkInServer-'+#system")
+    @Override
+    public boolean isConvertTaoBaoLinkInServer( SystemEnum system) {
+        String value = getValue(ConfigKeyEnum.convertTaoBaoLinkInServer.getKey(),system);
+        if (StringUtil.isNullOrEmpty(value))
+            return false;
+        if ("1".equalsIgnoreCase(value.trim()))
+            return true;
+        else
+            return false;
+    }
+
+    @Cacheable(value = "config", key = "'getAppHomeFloatImg-'+#system")
+    @Override
+    public AppHomeFloatImg getAppHomeFloatImg( SystemEnum system) {
+        String value = getValue(ConfigKeyEnum.appFloatImg.getKey(),system);
+        if (!StringUtil.isNullOrEmpty(value)) {
+            Gson gson = new Gson();
+            AppHomeFloatImg appHomeFloatImg = gson.fromJson(value, AppHomeFloatImg.class);
+            if (appHomeFloatImg.getShow())
+                return appHomeFloatImg;
+        }
+
+        return null;
+    }
+
+
+
+    @Cacheable(value = "config", key = "'isRobotCloudOpen'+'-'+#key+'-'+#platform+'-'+#version+'-'+#system")
+    @Override
+    public boolean isRobotCloudOpen(String key, String platform, String version, SystemEnum system) {
+        String value = getByVersion(key, platform, Integer.parseInt(version),system);
+        if (StringUtil.isNullOrEmpty(value))
+            return false;
+        if ("1".equalsIgnoreCase(value.trim())) {
+            return true;
+        } else {
+            return false;
+        }
+    }
+
+
+    @Cacheable(value = "config", key = "'getTestUsers'")
+    @Override
+    public List<String> getTestUsers( SystemEnum system) {
+        String value = getValue(ConfigKeyEnum.testUserArray.getKey(),system);
+        if (StringUtil.isNullOrEmpty(value))
+            return null;
+        try {
+            return Arrays.asList(value.split(","));
+        } catch (Exception e) {
+            LogHelper.errorDetailInfo(e);
+        }
+        return null;
+    }
+
+
+    @Override
+    public Config getConfig(long id) {
+        return configMapper.selectByPrimaryKey(id);
+    }
+
+    @Override
+    public ProxyIP getTaoBaoProxyIP( SystemEnum system) {
+        String value = getValue(ConfigKeyEnum.taobaoProxyIP.getKey(),system);
+        try {
+            String[] sts = value.split(":");
+            return new ProxyIP(sts[0], Integer.parseInt(sts[1]));
+        } catch (Exception e) {
+        }
+        return null;
+    }
+
+    @Override
+    public String getAppHomeFloatNotifyImg( SystemEnum system) {
+        return getValue(ConfigKeyEnum.homeFloatNotifyImg.getKey(),system);
+    }
+
+    @Override
+    public void save(Config config) {
+        List<Config> list = configMapper.listByKey(config.getKey(), null, null,config.getSystem());
+        if (list == null || list.size() == 0) {
+            configMapper.insertSelective(config);
+        }
+    }
+
+    @Cacheable(value = "config", key = "'getSearchDiscoveryKeys'")
+    @Override
+    public String getSearchDiscoveryKeys( SystemEnum system) {
+        List<Config> list = configMapper.listByKey(ConfigKeyEnum.searchDiscoveryKeys.getKey(), null, null,system);
+        if (list == null || list.size() == 0)
+            return null;
+
+        Config config = list.get(0);
+        if (config == null)
+            return null;
+
+        ThreadUtil.run(new Runnable() {
+            @Override
+            public void run() {
+                // 鏇存柊
+                updateSearchDiscoveryKeys(config);
+            }
+        });
+        String value = config.getValue();
+        return value;
+    }
+
+    /**
+     * 鏇存柊鎼滅储鍙戠幇璇�
+     *
+     * @param config
+     */
+    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);
+    }
+
+
+    @Override
+    public Config getConfigBykeyNoCache(String key, SystemEnum system) {
+        List<Config> list = configMapper.listByKey(key, null, null,system);
+        if (list.size() == 0) {
+            return null;
+        }
+        return list.get(0);
+    }
 }

--
Gitblit v1.8.0