admin
2020-10-15 1eac0e8d2e70dd5a6271793616748209c7dfa916
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
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<String, String> 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<String, String> 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<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;
        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;
        }
 
    }
 
}