From b30fb8afd3cd6228bda9b182dc412bb3c8daf69c Mon Sep 17 00:00:00 2001
From: admin <weikou2014>
Date: 星期四, 17 十月 2024 16:28:48 +0800
Subject: [PATCH] CMQ转为Rabbitmq
---
src/main/java/com/yeshi/buwan/controller/parser/ConfigParser.java | 278 +++++++++++++++++++++++++++++++++++++++++++++++++------
1 files changed, 248 insertions(+), 30 deletions(-)
diff --git a/src/main/java/com/yeshi/buwan/controller/parser/ConfigParser.java b/src/main/java/com/yeshi/buwan/controller/parser/ConfigParser.java
index 2bfb4e6..6e79f62 100644
--- a/src/main/java/com/yeshi/buwan/controller/parser/ConfigParser.java
+++ b/src/main/java/com/yeshi/buwan/controller/parser/ConfigParser.java
@@ -1,59 +1,268 @@
package com.yeshi.buwan.controller.parser;
-import java.io.PrintWriter;
-import java.util.Map;
+import com.google.gson.Gson;
+import com.google.gson.GsonBuilder;
+import com.google.gson.annotations.Expose;
+import com.google.gson.reflect.TypeToken;
+import com.yeshi.buwan.domain.recommend.FloatAD;
+import com.yeshi.buwan.domain.system.DetailSystem;
+import com.yeshi.buwan.dto.config.ADShieldIPConfig;
+import com.yeshi.buwan.dto.log.BaseLog;
+import com.yeshi.buwan.log.LogHelper;
+import com.yeshi.buwan.service.imp.DetailSystemConfigService;
+import com.yeshi.buwan.service.imp.SystemService;
+import com.yeshi.buwan.service.inter.ad.FloatADService;
+import com.yeshi.buwan.service.inter.system.SystemConfigService;
+import com.yeshi.buwan.service.inter.user.UserDPContentWatchStatisticService;
+import com.yeshi.buwan.service.manager.APPManager;
+import com.yeshi.buwan.service.manager.IPManager;
+import com.yeshi.buwan.util.IPUtil;
+import com.yeshi.buwan.util.JsonUtil;
+import com.yeshi.buwan.util.StringUtil;
+import com.yeshi.buwan.util.log.LoggerUtil;
+import com.yeshi.buwan.util.log.UserActiveLogFactory;
+import com.yeshi.buwan.vo.AcceptData;
+import com.yeshi.buwan.vo.ad.AdConfigTypeVO;
+import net.sf.json.JSONArray;
+import net.sf.json.JSONObject;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.stereotype.Controller;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
-
-import com.yeshi.buwan.domain.DetailSystem;
-import com.yeshi.buwan.service.imp.SystemService;
-import com.yeshi.buwan.vo.AcceptData;
-import org.springframework.stereotype.Controller;
-
-import com.google.gson.Gson;
-import com.yeshi.buwan.service.imp.ConfigService;
-import com.yeshi.buwan.util.JsonUtil;
-
-import net.sf.json.JSONObject;
+import java.io.PrintWriter;
+import java.lang.reflect.Type;
+import java.math.BigDecimal;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
@Controller
public class ConfigParser {
+
+
+ Logger logger = LoggerFactory.getLogger(ConfigParser.class);
@Resource
- private ConfigService configService;
+ private DetailSystemConfigService configService;
@Resource
private SystemService systemService;
- public void getConfig(AcceptData acceptData, HttpServletRequest request, PrintWriter out) {
- String channel = request.getParameter("Channel");
- DetailSystem detailSystem = systemService.getDetailSystemByPackage(acceptData.getPackageName());
- String version = request.getParameter("Version");
- Map<String, String> map = configService.getConfigAsMap(detailSystem, acceptData.getVersion());
- String splash = map.get("ad_splash_config");
+ @Resource
+ private FloatADService floatADService;
+
+ @Resource
+ private IPManager ipManager;
+
+ @Resource
+ private SystemConfigService systemConfigService;
+
+ @Resource
+ private UserDPContentWatchStatisticService userDPContentWatchStatisticService;
+
+ @Resource
+ private APPManager appManager;
+
+
+ public ADConfig getAdShowType(String key, String channel, int version, Map<String, String> map) {
+ String splash = map.get(key);
JSONObject jsonObject = JSONObject.fromObject(splash);
- ADConfig splashAD = null;
- if (jsonObject.optJSONObject(channel) == null) {
+ if (jsonObject == null || jsonObject.isEmpty())
+ return null;
+ ADConfig adConfig = null;
+ channel = channel.toLowerCase();
+ if (jsonObject == null || jsonObject.optJSONObject(channel) == null) {
// 榛樿涓哄簲鐢ㄥ疂
channel = "qq";
}
- String splashAdType = "";
- splashAD = new Gson().fromJson(jsonObject.optJSONObject(channel).toString(), ADConfig.class);
- if (Integer.parseInt(version) >= splashAD.getVersion()) {
- splashAdType = "";
- } else {
- splashAdType = splashAD.getType();
+ JSONObject channelAd = jsonObject.optJSONObject(channel);
+ adConfig = new Gson().fromJson(channelAd.toString(), ADConfig.class);
+ if (version >= adConfig.getVersion()) {
+ adConfig = null;
+ }
+ //鏍煎紡濡備笅:
+ //{"typeProperties":{"csj":{"weight":1,"pid":"123123"},"gdt":{"weight":1,"pid":"123123"}}}
+ if (adConfig != null && channelAd.optJSONObject("typeProbability") != null) {
+ JSONObject properties = channelAd.optJSONObject("typeProbability");
+
+ BigDecimal total = new BigDecimal(0);
+ for (Iterator<String> its = properties.keys(); its.hasNext(); ) {
+ String k = its.next();
+ total = total.add(new BigDecimal(properties.optJSONObject(k).optString("weight")));
+ }
+ BigDecimal random = total.multiply(new BigDecimal(Math.random()));
+ total = new BigDecimal(0);
+ for (Iterator<String> its = properties.keys(); its.hasNext(); ) {
+ String k = its.next();
+ total = total.add(new BigDecimal(properties.optJSONObject(k).optString("weight")));
+ if (random.compareTo(total) < 0) {
+ adConfig.setPid(properties.optJSONObject(k).optString("pid"));
+ adConfig.setType(k);
+ break;
+ }
+ }
+
}
- JSONObject data = new JSONObject();
+
+ return adConfig;
+ }
+
+
+ // 鑾峰彇骞垮憡閰嶇疆淇℃伅
+ private void loadAdConfig(AcceptData acceptData, Map<String, String> map, String ip, boolean isDPUser,JSONObject data) {
+ Gson gson = new GsonBuilder().excludeFieldsWithoutExposeAnnotation().create();
+ Map<String, Boolean> shieldMap = new HashMap<>();
+ // 鑾峰彇鍖哄煙灞忚斀淇℃伅
+ String shieldInfo = map.get("ad_shield_province_rules");
+ if (!StringUtil.isNullOrEmpty(shieldInfo)) {
+ JSONObject json = JSONObject.fromObject(shieldInfo);
+ //鑾峰彇娓犻亾闇�瑕佸睆钄界殑鍩庡競
+ JSONObject shieldProvinceRules = json.optJSONObject(acceptData.getChannel().toLowerCase());
+ if (shieldProvinceRules != null) {
+ IPUtil.IPInfo ipInfo = null;
+ try {
+ ipInfo = ipManager.getIPInfo(ip);
+ } catch (Exception e) {
+ e.printStackTrace();
+ logger.error("IP鍦板潃浣嶇疆淇℃伅鑾峰彇澶辫触锛�" + ip);
+ }
+ if (ipInfo != null) {
+ //鑾峰彇鏄惁闇�瑕佸睆钄藉紑灞�
+ for (AdConfigTypeVO adType : AdConfigTypeVO.values()) {
+ JSONArray splashProvinces = shieldProvinceRules.optJSONArray(adType.getSettingKey());
+ if (splashProvinces != null) {
+ for (int i = 0; i < splashProvinces.size(); i++) {
+ String p = splashProvinces.optString(i);
+ if (p.equalsIgnoreCase(ipInfo.getProvince())) {
+ shieldMap.put(adType.getSettingKey(), true);
+ break;
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ JSONObject adNew = new JSONObject();
JSONObject ad = new JSONObject();
- ad.put("splash", splashAdType);
+ for (AdConfigTypeVO adType: AdConfigTypeVO.values()){
+ ADConfig adConfig = getAdShowType(adType.getDbKey(), acceptData.getChannel(), acceptData.getVersion(), map);
+ if (shieldMap.get(adType.getSettingKey())!=null&&shieldMap.get(adType.getSettingKey())) {
+ //灞忚斀骞垮憡
+ adConfig = null;
+ }
+ ad.put(adType.getVoKey(), adConfig == null ? "" : adConfig.getType());
+ adNew.put(adType.getVoKey(), gson.toJson(adConfig));
+ }
+
+ //骞垮憡ID
+ if (!StringUtil.isNullOrEmpty(map.get("gdt_app_id"))) {
+ adNew.put("gdtAppId", map.get("gdt_app_id"));
+ }
+
+ if (!StringUtil.isNullOrEmpty(map.get("csj_app_id"))) {
+ adNew.put("csjAppId", map.get("csj_app_id"));
+ }
+
data.put("ad", ad);
+ data.put("adNew", adNew);
+ }
+
+
+ public void getConfig(AcceptData acceptData, HttpServletRequest request, PrintWriter out) {
+ LoggerUtil.getUserActiveLogger().info(UserActiveLogFactory.createAppSplash(new BaseLog(acceptData, "")));
+ DetailSystem detailSystem = systemService.getDetailSystemByPackage(acceptData.getPackageName());
+ Map<String, String> map = configService.getConfigAsMap(acceptData.getChildDetailSystem(), acceptData.getVersion());
+ JSONObject data = new JSONObject();
+
+
+ String ip = IPUtil.getRemotIP(request);
+ //浼氬憳閾炬帴
+ String vipLink = map.get("vip_link");
+ data.put("vipLink", vipLink);
+
+ //鏄惁涓哄唴瀹归槄璇荤敤鎴�
+ boolean isDPUser = false;
+ try {
+ isDPUser = userDPContentWatchStatisticService.isDPUser(acceptData);
+ } catch (Exception e) {
+
+ }
+ // 鍔犺浇骞垮憡閰嶇疆
+ loadAdConfig(acceptData,map,ip,isDPUser,data);
+
+ //PPTV鍏嶅箍鍛婃潈鐩婃椂闀�,鏆傛椂璁剧疆涓�3灏忔椂
+ data.put("pptvNoAdRewardHour", 3);
+ //璁剧疆缃戦〉鍔犻�熷煙鍚�
+ data.put("webSpeedUpHost", map.get("web_speed_up_host"));
+ //鎴戠殑椤甸潰banner
+ data.put("minePageBanner", map.get("mine_page_banner"));
+ //鎾斁椤靛璺冲崗璁櫧鍚嶅崟
+ data.put("jumpAppProtocolPrefix", map.get("player_out_jump_protocol_prefix"));
+ //鑾峰彇璐拱璁板綍閾炬帴
+ data.put("buyRecordUrl", systemConfigService.getConfigValueByKeyCache("buyRecordUrl"));
+
+ //鑱旂郴鎴戜滑
+ data.put("contactUsLink", map.get("contact_us_link"));
+ //娉ㄩ攢
+ data.put("unRegisterLink", map.get("unregister_link"));
+
+ //鍏充簬鎴戜滑閾炬帴
+ data.put("aboutUsLink", map.get("about_us_link"));
+ //鍙嶉閾炬帴
+ data.put("feedBackLink", map.get("feed_back_link"));
+ //甯姪閾炬帴
+ data.put("helpLink", map.get("help_link"));
+ //搴旂敤閾炬帴
+ data.put("appLink", map.get("app_link"));
+
+ //鏄惁姝e湪涓婄嚎
+
+ boolean onLine = false;
+ try {
+ onLine = appManager.isOnline(acceptData.getDetailSystem().getId(), acceptData.getVersion(), acceptData.getChannel());
+ } catch (Exception e) {
+ }
+ data.put("onLining", onLine);
+ String aidao = map.get("ai_dao_mode");
+ if ("1".equalsIgnoreCase((aidao + "").trim())) {
+ data.put("aiDaoMode", true);
+ } else {
+ data.put("aiDaoMode", false);
+ }
+
+ out.print(JsonUtil.loadTrueJson(data.toString()));
+ }
+
+
+ /**
+ * 鑾峰彇棣栭〉閰嶇疆淇℃伅
+ *
+ * @param acceptData
+ * @param request
+ * @param out
+ */
+ public void getHomeConfig(AcceptData acceptData, HttpServletRequest request, PrintWriter out) {
+ LoggerUtil.getUserActiveLogger().info(UserActiveLogFactory.createAppMainPage(new BaseLog(acceptData, "")));
+ List<FloatAD> adList = floatADService.listShowAD(1, 1);
+ Gson gson = new GsonBuilder().excludeFieldsWithoutExposeAnnotation().create();
+ JSONObject data = new JSONObject();
+ if (adList != null && adList.size() > 0) {
+ FloatAD ad = adList.get(0);
+ data.put("floatAD", gson.toJson(ad));
+ }
+
out.print(JsonUtil.loadTrueJson(data.toString()));
}
class ADConfig {
int version;
+ @Expose
String type;
+ @Expose
+ String pid;
public int getVersion() {
return version;
@@ -71,6 +280,15 @@
this.type = type;
}
+ public String getPid() {
+ return pid;
+ }
+
+ public void setPid(String pid) {
+ this.pid = pid;
+ }
+
+
}
}
--
Gitblit v1.8.0