Authored by linlong

update

... ... @@ -39,5 +39,5 @@ public interface IUnionLogsDAO {
List<UnionLogs> queryByDeviceId(ActivateDeviceIdReqBO activateDeviceIdReqBO);
List<ActivateDeviceIdRspBO> selectListByHour(ActivateDeviceIdReqBO activateDeviceIdReqBO);
List<UnionLogs> selectListByHour(ActivateDeviceIdReqBO activateDeviceIdReqBO);
}
... ...
... ... @@ -188,9 +188,9 @@
</if>
limit 1
</select>
<select id="selectListByHour" resultMap="ActivateMap"
<select id="selectListByHour" resultMap="BaseResultMap"
parameterType="com.yoho.service.model.union.request.ActivateDeviceIdReqBO">
select union_type,union_name,count(idfa) as idfa_count,count(imei) as imei_count
select <include refid="Base_Column_List"/>
from union_logs
where union_type = #{unionType}
<if test="activateHourBegin != null and activateHourBegin>0">
... ...
... ... @@ -7,6 +7,7 @@ package com.yoho.unions.server.service.impl;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.google.common.collect.Lists;
import com.google.common.collect.Maps;
import com.netflix.config.DynamicIntProperty;
import com.netflix.config.DynamicPropertyFactory;
import com.yoho.core.common.utils.MD5;
... ... @@ -48,6 +49,7 @@ import javax.annotation.Resource;
import java.net.URLDecoder;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.LinkedBlockingQueue;
import java.util.concurrent.ThreadPoolExecutor;
... ... @@ -799,29 +801,66 @@ public class UnionServiceImpl implements IUnionService,ApplicationEventPublisher
public PageActivateDeviceIdRspBO queryActivateHour(ActivateDeviceIdReqBO activateDeviceIdReqBO) {
log.info("enter queryActivateHour. param activateDeviceIdReqBO={}", activateDeviceIdReqBO);
//(1).查询出各渠道激活的设备id数
List<ActivateDeviceIdRspBO> activateDeviceIdRspList = Lists.newArrayList();
int beginTime = DateUtils.getTodayZero();
//1.初始化map,用于存放24个小时的激活idfa和imei
Map<Integer,List<Integer>> countMap = Maps.newHashMap();
for(int i=0;i<24;i++){
activateDeviceIdReqBO.setActivateHourBegin(beginTime);
activateDeviceIdReqBO.setActivateHourEnd(beginTime+3600);
activateDeviceIdRspList.addAll(unionLogsDAO.selectListByHour(activateDeviceIdReqBO));
beginTime +=3600;
List<Integer> countList = Lists.newArrayList();
countList.add(0);
countList.add(0);
countMap.put(i,countList);
}
String searchDay = DateUtils.int2DateStr(activateDeviceIdReqBO.getActivateTimeEnd(),"yyyy/MM/dd");
int beginTime = DateUtils.getTimesmorning(searchDay);
int endTime = beginTime+3600*24-1;
activateDeviceIdReqBO.setActivateHourBegin(beginTime);
activateDeviceIdReqBO.setActivateHourEnd(endTime);
List<UnionLogs> unionLogs = unionLogsDAO.selectListByHour(activateDeviceIdReqBO);
for(int i=0;i<unionLogs.size();i++){
UnionLogs unionLog = unionLogs.get(i);
String createTime = DateUtils.int2DateStr(unionLog.getCreateTime(),"yyyy-MM-dd HH:mm:ss");
//遍历一天的记录,统计每小时的激活数
int key = Integer.parseInt(createTime.substring(11,13));
List<Integer> countList = countMap.get(key);
if(StringUtils.isNotEmpty(unionLog.getIdfa())){
countList.set(0,countList.get(0)+1);
}
if (StringUtils.isNotEmpty(unionLog.getImei())){
countList.set(1,countList.get(1)+1);
}
}
List<ActivateDeviceIdRspBO> activateDeviceIdRspList = Lists.newArrayList();
for(int i=0;i<24;i++){
ActivateDeviceIdRspBO bo = activateDeviceIdRspList.get(i);
ActivateDeviceIdRspBO bo = new ActivateDeviceIdRspBO();
String hour = i<10?"0"+i+":00--"+"0"+i+":59":i+":00--"+i+":59";
bo.setHour(hour);
List<Integer> countList = countMap.get(i);
bo.setIdfaCount(countList.get(0));
bo.setImeiCount(countList.get(1));
activateDeviceIdRspList.add(bo);
}
//(1).查询出各渠道激活的设备id数
// List<ActivateDeviceIdRspBO> activateDeviceIdRspList = Lists.newArrayList();
//
// int beginTime = DateUtils.getTodayZero();
// for(int i=0;i<24;i++){
// activateDeviceIdReqBO.setActivateHourBegin(beginTime);
// activateDeviceIdReqBO.setActivateHourEnd(beginTime+3600);
// activateDeviceIdRspList.addAll(unionLogsDAO.selectListByHour(activateDeviceIdReqBO));
// beginTime +=3600;
// }
// for(int i=0;i<24;i++){
// ActivateDeviceIdRspBO bo = activateDeviceIdRspList.get(i);
// String hour = i<10?"0"+i+":00--"+"0"+i+":59":i+":00--"+i+":59";
// bo.setHour(hour);
// }
PageActivateDeviceIdRspBO pageActivateDeviceIdRspBO = new PageActivateDeviceIdRspBO();
pageActivateDeviceIdRspBO.setList(activateDeviceIdRspList);
//不需要分页了
// pageActivateDeviceIdRspBO.setTotal(total);
// pageActivateDeviceIdRspBO.setPage(activateDeviceIdReqBO.getPage());
return pageActivateDeviceIdRspBO;
}
... ...
... ... @@ -39,12 +39,19 @@
});
function getId() {
var params = {};
var params = getParam("searchForm");
params["unionType"] = unionType;
return params;
}
});
function getParam(table) {
var paramsArray = $("#"+table+"").serializeArray();
var params = {};
for (var i = 0; i < paramsArray.length; i++) {
params[paramsArray[i].name] = paramsArray[i].value;
}
return params;
}
</script>
\ No newline at end of file
... ...
... ... @@ -343,14 +343,21 @@
function showActivateHour(id) {
unionType = id;
var div = $("<div>").appendTo($(window.self.document.body));
var params = getParam("searchForm");
params['unionType'] = $(this).attr("dataId");
window.self.$(div).myDialog({
modal : true,
collapsible : true,
cache : false,
title : "每小时点击量",
title : "每小时激活量",
width: 600,
height: 600,
href: contextPath + "/admin/activateHour.html?unionType="+id,
href: contextPath + "/admin/activateHour.html",
queryParams: {
unionType: id,
activateTimeEnd:params['activateTimeEnd']
},
buttons : [{
id : "closeBtn",
text : "关闭",
... ...