提交 72ed75c1 authored 作者: malei's avatar malei

feat(DataLog): DistrictAnalysis

1.访客属性 2.新老访客 References: N/A
上级 ed811b67
package com.zrqx.statistics.bg.controller;
import com.zrqx.statistics.commons.form.QueryVisitorLoyaltyForm;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
......@@ -77,9 +78,21 @@ public class DataLogController {
return CallBack.success(service.getDistrictAnalysis(form));
}
@ApiOperation("客属性")
@ApiOperation("访客属性")
@PostMapping("/visitor/attr")
public CallBack<JSONObject> getVisitorAttr(QueryVisitorAttrForm form) {
return CallBack.success(service.getVisitorAttr(form));
}
@ApiOperation("新老访客")
@PostMapping("/visitor/summary")
public CallBack<JSONObject> getVisitorSummary(QueryVisitorAttrForm form) {
return CallBack.success(service.getVisitorSummary(form));
}
@ApiOperation("忠诚度")
@PostMapping("/visitor/loyalty")
public CallBack<JSONObject> getLoyalty(QueryVisitorLoyaltyForm form) {
return CallBack.success(service.getLoyalty(form));
}
}
......@@ -8,6 +8,7 @@ import com.zrqx.statistics.commons.form.QueryTrendForm;
import com.zrqx.statistics.commons.form.QueryDistrictAnalysisForm;
import com.zrqx.statistics.commons.form.QuerySourceForm;
import com.zrqx.statistics.commons.form.QueryVisitorAttrForm;
import com.zrqx.statistics.commons.form.QueryVisitorLoyaltyForm;
import com.zrqx.statistics.commons.model.DataLog;
import com.zrqx.core.service.BaseService;
......@@ -89,4 +90,28 @@ public interface DataLogService extends BaseService<DataLog, String> {
*/
JSONObject loadSource(QuerySourceForm form);
/**
* 获取新老访客的摘要
* @param form
* @return
*/
JSONObject getVisitorSummary(QueryVisitorAttrForm form);
/**
* 访客忠诚度
* @param form
* @return
*/
JSONObject getLoyalty(QueryVisitorLoyaltyForm form);
/**
* 访客忠诚度-聚合结果
* @param form
* @return
*/
JSONObject getLoyaltyPolymerization(QueryVisitorLoyaltyForm form);
}
......@@ -2,13 +2,20 @@ package com.zrqx.statistics.bg.service;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.*;
import com.zrqx.core.enums.statistics.CharacterEnums;
import com.zrqx.statistics.commons.form.QueryDistrictAnalysisForm;
import com.zrqx.statistics.commons.form.QueryVisitorAttrForm;
import com.zrqx.statistics.commons.form.QueryVisitorLoyaltyForm;
import com.zrqx.statistics.commons.model.DataLog;
import com.zrqx.core.enums.statistics.QueryTimeUnitEnum;
import com.zrqx.core.mapper.BaseMapper;
import com.zrqx.core.service.BaseServiceImpl;
import com.zrqx.statistics.commons.form.BaiduLogQueryForm;
import com.zrqx.statistics.utils.baidu.config.BaiduConfig;
import com.zrqx.statistics.utils.baidu.config.ParamStringConfig;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
......@@ -543,6 +550,80 @@ public class DataLogServiceImpl extends BaseServiceImpl<DataLog, String> impleme
return objBody;
}
@Override
public JSONObject getVisitorSummary(QueryVisitorAttrForm form) {
BaiduStatisticsBody body = new BaiduStatisticsBody(
form.getStart_date(),
form.getEnd_date(),
FuncEnum.NEW_OLD_VISITOR.getSupportParams(),
FuncEnum.NEW_OLD_VISITOR.getFuncName()
);
JSONObject objBody = null;
try {
byte[] res = HttpUtils.post(BaiduConfig.API_URL, this.generateHttpRequestParam(body), CHARSET);
String s = new String(res);
JSONObject obj = JSON.parseObject(s);
objBody = obj.getJSONObject("body");
} catch (Exception e) {
log.error("获取访客属性失败", e);
}
return objBody;
}
@Override
public JSONObject getLoyalty(QueryVisitorLoyaltyForm form) {
BaiduStatisticsBody body = new BaiduStatisticsBody(
form.getStart_date(),
form.getEnd_date(),
FuncEnum.VISITOR_LOYALTY.getSupportParams(),
FuncEnum.VISITOR_LOYALTY.getFuncName(),
form.getCharacter()
);
JSONObject objBody = null;
try {
byte[] res = HttpUtils.post(BaiduConfig.API_URL, this.generateHttpRequestParam(body), CHARSET);
String s = new String(res);
JSONObject obj = JSON.parseObject(s);
objBody = obj.getJSONObject("body");
} catch (Exception e) {
log.error("获取访客属性失败", e);
}
return objBody;
}
@Override
public JSONObject getLoyaltyPolymerization(QueryVisitorLoyaltyForm form) {
Map<String, String> character = CharacterEnums.getAllEnumMap();
JSONObject result = new JSONObject();
//获取四个图表数据,组装成一个返回
character.entrySet().forEach(ch -> {
BaiduStatisticsBody body = new BaiduStatisticsBody(
form.getStart_date(),
form.getEnd_date(),
FuncEnum.VISITOR_LOYALTY.getSupportParams(),
FuncEnum.VISITOR_LOYALTY.getFuncName(),
ch.getKey()
);
JSONObject objBody = null;
try {
byte[] res = HttpUtils.post(BaiduConfig.API_URL, this.generateHttpRequestParam(body), CHARSET);
String s = new String(res);
JSONObject obj = JSON.parseObject(s);
objBody = obj.getJSONObject("body");
} catch (Exception e) {
log.error("获取访客属性失败", e);
}
});
return null;
}
private String generateHttpRequestParam(BaiduStatisticsBody body) {
BaiduStatisticsHeader header = new BaiduStatisticsHeader();
......
......@@ -7,7 +7,6 @@ import lombok.Data;
/**
* 查询地域分析Form
* Created by ml on 2019/11/13.
*/
@Data
@ApiModel(value = "查询地域分析Form")
......
......@@ -5,7 +5,6 @@ import lombok.Data;
/**
* 查询游客属性
* Created by ml on 2019/11/14.
*/
@Data
public class QueryVisitorAttrForm {
......
package com.zrqx.statistics.commons.form;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* 访客忠诚度
*/
@Data
public class QueryVisitorLoyaltyForm {
@ApiModelProperty("开始时间, 字符串格式: 20191114")
private String start_date;
@ApiModelProperty("结束时间")
private String end_date;
@ApiModelProperty("地域")
private String area;
@ApiModelProperty("游客;全部:all,新游客:new,老访客:old")
private String visitor;
@ApiModelProperty("character_pages:访问页数, character_depth:访问深度, character_time:访问时长, character_lasttime:上次访问时间")
private String character;
}
......@@ -110,6 +110,19 @@ public enum FuncEnum {
*/
SOURCE_MAP("source/all/f", new String[]{
}),
/**
* 新老访客
* pv_count,visitor_count,ip_count,bounce_ratio,avg_visit_time
*/
NEW_OLD_VISITOR("visit/type/getVisitorSummary", new String[]{
ParamStringConfig.LIU_LAN_LIANG_PV,
ParamStringConfig.FANG_WEN_SHU_UV,
ParamStringConfig.IP_SHU,
ParamStringConfig.TIAO_CHU_LV,
ParamStringConfig.PING_JUN_FANG_WEN_SHI_CHANG
}),
VISITOR_LOYALTY("visit/character/fBar", new String[]{}),
;
// 状态码
private final String funcName;
......
......@@ -28,6 +28,7 @@ public class BaiduStatisticsBody {
public String end_date;
public String metrics;
public String method;
public String character;
public BaiduStatisticsBody() {
this.site_id = BaiduConfig.SITEID;
......@@ -63,4 +64,19 @@ public class BaiduStatisticsBody {
this.method = method;
}
/**
* @param start_date 开始时间
* @param end_date 结束时间
* @param metrics 查询项OR指标
* @param method 方法名
* @param character 查询标签页
*/
public BaiduStatisticsBody(String start_date, String end_date, String[] metrics, String method, String character) {
this.site_id = BaiduConfig.SITEID;
this.start_date = start_date;
this.end_date = end_date;
this.metrics = getStringFromArray(metrics);
this.method = method;
this.character = character;
}
}
package com.zrqx.core.enums.statistics;
import java.util.HashMap;
import java.util.Map;
/**
* 图形枚举
*/
public enum CharacterEnums {
CHARACTER_PAGES("character_pages", "访问页数"),
CHARACTER_DEPTH("character_depth", "访问深度"),
CHARACTER_TIME("character_time", "访问时长"),
CHARACTER_LASTTIME("character_lasttime", "上次访问时间");
private String code;
private String name;
CharacterEnums(String code, String name) {
this.code = code;
this.name = name;
}
public String getCode() {
return code;
}
public String getName() {
return name;
}
public static Map<String, String> getAllEnumMap() {
Map<String, String> resultMap = new HashMap<>();
for (CharacterEnums v : values()) {
resultMap.put(v.code, v.name);
}
return resultMap;
}
}
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论