package com.yeshi.buwan.controller.parser; import java.io.PrintWriter; import java.util.List; import java.util.Map; import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; import com.google.gson.GsonBuilder; import com.yeshi.buwan.domain.Config; import com.yeshi.buwan.domain.DetailSystem; import com.yeshi.buwan.domain.recommend.FloatAD; import com.yeshi.buwan.log.LogHelper; import com.yeshi.buwan.service.imp.SystemService; import com.yeshi.buwan.service.inter.ad.FloatADService; import com.yeshi.buwan.util.IPUtil; import com.yeshi.buwan.util.StringUtil; import com.yeshi.buwan.vo.AcceptData; import org.slf4j.Logger; import org.slf4j.LoggerFactory; 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; @Controller public class ConfigParser { Logger logger = LoggerFactory.getLogger(ConfigParser.class); @Resource private ConfigService configService; @Resource private SystemService systemService; @Resource private FloatADService floatADService; public String getAdShowType(String key, String channel, int version, Map map) { String splash = map.get(key); JSONObject jsonObject = JSONObject.fromObject(splash); ADConfig splashAD = null; channel = channel.toLowerCase(); if (jsonObject.optJSONObject(channel) == null) { // 默认为应用宝 channel = "qq"; } String adType = ""; splashAD = new Gson().fromJson(jsonObject.optJSONObject(channel).toString(), ADConfig.class); if (version >= splashAD.getVersion()) { adType = ""; } else { adType = splashAD.getType(); } return adType; } public void getConfig(AcceptData acceptData, HttpServletRequest request, PrintWriter out) { DetailSystem detailSystem = systemService.getDetailSystemByPackage(acceptData.getPackageName()); Map map = configService.getConfigAsMap(detailSystem, acceptData.getVersion()); JSONObject data = new JSONObject(); JSONObject ad = new JSONObject(); String ip = IPUtil.getRemotIP(request); String splash = getAdShowType("ad_splash_config", acceptData.getChannel(), acceptData.getVersion(), map); //开屏的地区屏蔽规则 String shieldProvince = map.get("shield_province"); if (!StringUtil.isNullOrEmpty(shieldProvince)) { JSONObject json = JSONObject.fromObject(shieldProvince); //获取渠道需要屏蔽的城市 String province = json.optString(acceptData.getChannel().toLowerCase()); if (!StringUtil.isNullOrEmpty(splash) && !StringUtil.isNullOrEmpty(province)) { String pro = IPUtil.getIPProvince(ip); LogHelper.print("城市屏蔽:" + ip + ":" + pro); if (pro != null && pro.contains(province)) {//屏蔽IP splash = ""; LogHelper.print("城市屏蔽:" + pro); } } } //开屏 ad.put("splash", splash); //视频前贴 ad.put("videoPlayPre", getAdShowType("ad_play_video_pre", acceptData.getChannel(), acceptData.getVersion(), map)); //APP退出 ad.put("exitApp", getAdShowType("ad_exit_app", acceptData.getChannel(), acceptData.getVersion(), map)); //全屏广告控制 ad.put("videoDetailFullVideo", getAdShowType("ad_video_detail_full_video", acceptData.getChannel(), acceptData.getVersion(), map)); data.put("ad", ad); out.print(JsonUtil.loadTrueJson(data.toString())); } /** * 获取首页配置信息 * * @param acceptData * @param request * @param out */ public void getHomeConfig(AcceptData acceptData, HttpServletRequest request, PrintWriter out) { DetailSystem detailSystem = systemService.getDetailSystemByPackage(acceptData.getPackageName()); List 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; String type; public int getVersion() { return version; } public void setVersion(int version) { this.version = version; } public String getType() { return type; } public void setType(String type) { this.type = type; } } }