diff --git a/pom.xml b/pom.xml index 8578e82..1f2444c 100644 --- a/pom.xml +++ b/pom.xml @@ -61,6 +61,7 @@ <admin.url>http://localhost:8080</admin.url> <receiver.host>172.31.30.1,172.31.22.39,172.31.22.38,172.31.4.0,172.31.3.123,172.31.16.68,172.31.30.154,172.31.26.177</receiver.host> <receiver.port>8080</receiver.port> + <trackingio.url>http://52.80.113.103:8002</trackingio.url> <mail.host>smtp.exmail.qq.com</mail.host> @@ -73,7 +74,7 @@ <report.url>http://172.31.1.122:9010</report.url> <presto.driver>com.facebook.presto.jdbc.PrestoDriver</presto.driver> - <presto.url>jdbc:presto://172.31.21.99:18889/hive/default</presto.url> + <presto.url>jdbc:presto://172.31.11.248:18889/hive/default</presto.url> <presto.username>root</presto.username> <profile.table>kudu.default.profile_</profile.table> diff --git a/src/main/java/com/reyun/service/impl/ComplicatedEventsServiceImpl.java b/src/main/java/com/reyun/service/impl/ComplicatedEventsServiceImpl.java index d0e4c68..f27da74 100644 --- a/src/main/java/com/reyun/service/impl/ComplicatedEventsServiceImpl.java +++ b/src/main/java/com/reyun/service/impl/ComplicatedEventsServiceImpl.java @@ -1,5 +1,6 @@ package com.reyun.service.impl; +import com.fasterxml.jackson.databind.ObjectMapper; import com.google.common.base.Function; import com.google.common.collect.Lists; import com.google.common.collect.Maps; @@ -243,6 +244,7 @@ public class ComplicatedEventsServiceImpl implements ComplicateEventsService{ //关闭线程池 pool.shutdown(); } + System.out.println(result); return result; } @@ -298,22 +300,46 @@ public class ComplicatedEventsServiceImpl implements ComplicateEventsService{ //处理数据 JSONObject responseObject = JSONObject.fromObject(responseJson); + if (!responseObject.containsKey("val")) { + return result; + } JSONArray responseValueArray = responseObject.getJSONArray("val"); - //cid,campaignid数据转换 - /*Map<String, Campaign> campaignMap = new HashMap<>(); - Map<String, Channel> channelMap = new HashMap<>();*/ if (!CollectionUtils.isEmpty(responseValueArray)) { - /*//group by _cid - if (groupArray.toString().contains(FIELD_CID)) { - channelMap = channelService.findChannelMapWithDefault(appId, accountId); + //cid,campaignid数据转换 + Map<String, String> campaignMap = new HashMap<>(); + Map<String, String> channelMap = new HashMap<>(); + + //group by _cid or group by _campaignid + if (groupArray.toString().contains(FIELD_CID) || groupArray.toString().contains(FIELD_CAMPAIGN_ID)) { + Account account = accountRepository.findOne(accountId); + App app = appRepository.findOne(appId); + String url = Constant.trackingUrl + "/api/"+ app.getId() +"/channel/findchannelcamp4io?appkey=" + app.getAppkey() + "&email=" + account.getEmail(); + String response = HttpClientUtil.doHttpGetRequest(url, "io"); + if (!StringUtil.isEmpty(response)) { + try { + JSONObject ob = JSONObject.fromObject(response); + JSONObject content = ob.getJSONObject("content"); + if (groupArray.toString().contains(FIELD_CID)) { + JSONObject channelObject = content.getJSONObject("channel"); + ObjectMapper mapper = new ObjectMapper(); + channelMap = mapper.readValue(channelObject.toString(), Map.class); + } + if (groupArray.toString().contains(FIELD_CAMPAIGN_ID)) { + JSONObject campObject = content.getJSONObject("campaign"); + ObjectMapper mapper = new ObjectMapper(); + campaignMap = mapper.readValue(campObject.toString(), Map.class); + } + + } catch (Exception e) { + logger.error("fail to get channel or campaign name"); + } + + } + } - //group by _campaignid - if (groupArray.toString().contains(FIELD_CAMPAIGN_ID)) { - campaignMap = campaignService.findCampaignMapWithDefault(appId, accountId); - }*/ //翻译处理 for (Object valElement : responseValueArray) { @@ -322,13 +348,13 @@ public class ComplicatedEventsServiceImpl implements ComplicateEventsService{ val.put("ds", "合计"); //翻译推广活动或者渠道 - /*if (val.containsKey(FIELD_CID)) { - val.put(FIELD_CID, channelMap.containsKey(val.getString(FIELD_CID)) ? channelMap.get(val.getString(FIELD_CID)).getName() : val.getString(FIELD_CID)); + if (val.containsKey(FIELD_CID)) { + val.put(FIELD_CID, channelMap.containsKey(val.getString(FIELD_CID)) ? channelMap.get(val.getString(FIELD_CID)) : val.getString(FIELD_CID)); } if (val.containsKey(FIELD_CAMPAIGN_ID)) { - val.put(FIELD_CAMPAIGN_ID, campaignMap.containsKey(val.getString(FIELD_CAMPAIGN_ID)) ? campaignMap.get(val.getString(FIELD_CAMPAIGN_ID)).getName() : val.getString(FIELD_CAMPAIGN_ID)); - }*/ + val.put(FIELD_CAMPAIGN_ID, campaignMap.containsKey(val.getString(FIELD_CAMPAIGN_ID)) ? campaignMap.get(val.getString(FIELD_CAMPAIGN_ID)) : val.getString(FIELD_CAMPAIGN_ID)); + } result.add(val); } @@ -963,23 +989,54 @@ public class ComplicatedEventsServiceImpl implements ComplicateEventsService{ try { JSONObject responseObject = JSONObject.fromObject(responseJson); + if (!responseObject.containsKey("val")) { + resultMap.put("val", valueResult); + resultMap.put("columnkey", columnKeyList); + resultMap.put("name", nameList); + resultMap.put("key", keyList); + resultMap.put("groupfield", groupList); + resultMap.put("selectfield", selectFieldList); + resultMap.put("format", selectList); + + return resultMap; + } JSONArray responseValueArray = responseObject.getJSONArray("val"); //val if (!CollectionUtils.isEmpty(responseValueArray)) { //cid,campaignid数据转换 - /*Map<String, Campaign> campaignMap = new HashMap<>(); - Map<String, Channel> channelMap = new HashMap<>(); + Map<String, String> campaignMap = new HashMap<>(); + Map<String, String> channelMap = new HashMap<>(); + + //group by _cid or group by _campaignid + if (groupArray.toString().contains(FIELD_CID) || groupArray.toString().contains(FIELD_CAMPAIGN_ID)) { + Account account = accountRepository.findOne(accountId); + String url = Constant.trackingUrl + "/api/"+ app.getId() +"/channel/findchannelcamp4io?appkey=" + app.getAppkey() + "&email=" + account.getEmail(); + String response = HttpClientUtil.doHttpGetRequest(url, "io"); + if (!StringUtil.isEmpty(response)) { + try { + JSONObject ob = JSONObject.fromObject(response); + JSONObject content = ob.getJSONObject("content"); + if (groupArray.toString().contains(FIELD_CID)) { + JSONObject channelObject = content.getJSONObject("channel"); + ObjectMapper mapper = new ObjectMapper(); + channelMap = mapper.readValue(channelObject.toString(), Map.class); + } + if (groupArray.toString().contains(FIELD_CAMPAIGN_ID)) { + JSONObject campObject = content.getJSONObject("campaign"); + ObjectMapper mapper = new ObjectMapper(); + campaignMap = mapper.readValue(campObject.toString(), Map.class); + } + + } catch (Exception e) { + logger.error("fail to get channel or campaign name"); + } + + } - //group by _cid - if (groupArray.toString().contains(FIELD_CID)) { - channelMap = channelService.findChannelMapWithDefault(app.getId(), accountId); } - //group by _campaignid - if (groupArray.toString().contains(FIELD_CAMPAIGN_ID)) { - campaignMap = campaignService.findCampaignMapWithDefault(app.getId(), accountId); - }*/ + //1,处理日期合并(给每个日期的第一行加标注,firstDateRow标示第一行,rowNum标示相同日期行数) String firstValueDate = ""; @@ -1022,15 +1079,15 @@ public class ComplicatedEventsServiceImpl implements ComplicateEventsService{ } //2翻译推广活动或者渠道 - /*if (val.containsKey(FIELD_CID)) { + if (val.containsKey(FIELD_CID)) { String cid = val.getString(FIELD_CID); - val.put(FIELD_CID, channelMap.containsKey(cid) ? channelMap.get(cid).getName() : cid); + val.put(FIELD_CID, channelMap.containsKey(cid) ? channelMap.get(cid) : cid); } if (val.containsKey(FIELD_CAMPAIGN_ID)) { String campaignId = val.getString(FIELD_CAMPAIGN_ID); - val.put(FIELD_CAMPAIGN_ID, campaignMap.containsKey(campaignId) ? campaignMap.get(campaignId).getName() : campaignId); - }*/ + val.put(FIELD_CAMPAIGN_ID, campaignMap.containsKey(campaignId) ? campaignMap.get(campaignId) : campaignId); + } //添加到val中 @@ -1111,7 +1168,6 @@ public class ComplicatedEventsServiceImpl implements ComplicateEventsService{ resultMap.put("key", keyList); resultMap.put("groupfield", groupList); resultMap.put("selectfield", selectFieldList); -// resultMap.put("totalval", totalValueList); resultMap.put("format", selectList); return resultMap; diff --git a/src/main/java/com/reyun/service/impl/EventServiceImpl.java b/src/main/java/com/reyun/service/impl/EventServiceImpl.java index c1e1424..75fb0b5 100644 --- a/src/main/java/com/reyun/service/impl/EventServiceImpl.java +++ b/src/main/java/com/reyun/service/impl/EventServiceImpl.java @@ -1,5 +1,8 @@ package com.reyun.service.impl; +import com.fasterxml.jackson.core.JsonParseException; +import com.fasterxml.jackson.databind.JsonMappingException; +import com.fasterxml.jackson.databind.ObjectMapper; import com.google.common.base.Function; import com.google.common.collect.ImmutableMap; import com.google.common.collect.Lists; @@ -7,11 +10,11 @@ import com.google.common.collect.Maps; import com.reyun.model.*; import com.reyun.repository.*; import com.reyun.service.*; -import com.reyun.util.EventRedisUtil; -import com.reyun.util.ValidateUtil; +import com.reyun.util.*; import org.apache.commons.collections.CollectionUtils; import org.json.JSONArray; import org.json.JSONException; +import org.json.JSONObject; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; @@ -19,6 +22,7 @@ import org.springframework.stereotype.Service; import org.springframework.util.StringUtils; import javax.annotation.Nullable; +import java.io.IOException; import java.math.BigInteger; import java.util.*; @@ -939,7 +943,23 @@ public class EventServiceImpl implements EventService { List<String> valueList = new ArrayList<>(set); - result.put("value", valueList); + String values = String.join(",", set); + String url = Constant.trackingUrl + "/api/"+ appId +"/event/find/valuespecail?attrName=" + attrName + "&values=" + values; + String response = HttpClientUtil.doHttpGetRequest(url, "io"); + if (!StringUtil.isEmpty(response)) { + try { + JSONObject ob = new JSONObject(response); + JSONObject content = ob.getJSONObject("content"); + ObjectMapper mapper = new ObjectMapper(); + result = mapper.readValue(content.toString(), Map.class); + + } catch (Exception e) { + result.put("value", valueList); + } + + } else { + result.put("value", valueList); + } } } else { diff --git a/src/main/java/com/reyun/service/impl/VirtualEventImpl.java b/src/main/java/com/reyun/service/impl/VirtualEventImpl.java index 9239f8f..b82a187 100644 --- a/src/main/java/com/reyun/service/impl/VirtualEventImpl.java +++ b/src/main/java/com/reyun/service/impl/VirtualEventImpl.java @@ -19,6 +19,7 @@ import com.reyun.service.ConfigParamService; import com.reyun.service.EventService; import com.reyun.service.VirtualEventService; import com.reyun.util.PinYinUtil; +import com.reyun.util.StringUtil; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.util.CollectionUtils; @@ -177,6 +178,9 @@ public class VirtualEventImpl implements VirtualEventService { } private String parseEventList(String events, Long appId) { + if (StringUtil.isEmpty(events)) { + return ""; + } String[] eventList = events.split(","); List<String> eventArrayList = Lists.newArrayList(eventList); diff --git a/src/main/java/com/reyun/util/Constant.java b/src/main/java/com/reyun/util/Constant.java index 105df80..cdc54cc 100644 --- a/src/main/java/com/reyun/util/Constant.java +++ b/src/main/java/com/reyun/util/Constant.java @@ -34,6 +34,7 @@ public class Constant { public static String accountCheckUrl = commonBundle.getString("account.check.url"); public static String reportUrl = commonBundle.getString("report.url"); public static String adminUrl = commonBundle.getString("admin.url"); + public static String trackingUrl = commonBundle.getString("trackingio.url"); public static String iscache = commonBundle.getString("iscache"); public static String receiverHost = commonBundle.getString("receiver.host"); public static String receiverPort = commonBundle.getString("receiver.port"); diff --git a/src/main/resources/common.properties b/src/main/resources/common.properties index 3ac1de0..46fbc33 100644 --- a/src/main/resources/common.properties +++ b/src/main/resources/common.properties @@ -8,4 +8,5 @@ receiver.port=${receiver.port} report.url=${report.url} awsneed=${awsneed} iscache=${iscache} -admin.url=${admin.url} \ No newline at end of file +admin.url=${admin.url} +trackingio.url=${trackingio.url} \ No newline at end of file