|
|
@@ -1,6 +1,8 @@
|
|
|
package cn.com.ctop.job.adq.data.service.impl;
|
|
|
|
|
|
+import cn.com.ctop.job.adq.data.entity.AdqCreativeReportDaily;
|
|
|
import cn.com.ctop.job.adq.data.entity.AdqCreativeReportHour;
|
|
|
+import cn.com.ctop.job.adq.data.entity.AdqErrorLog;
|
|
|
import cn.com.ctop.job.adq.data.mapper.AdqReportMapper;
|
|
|
import cn.com.ctop.job.adq.data.service.IAdqReportService;
|
|
|
import cn.com.ctop.job.adq.data.utils.Check;
|
|
|
@@ -26,63 +28,78 @@ public class AdqReportServiceImpl implements IAdqReportService {
|
|
|
private AdqReportMapper adqReportMapper;
|
|
|
|
|
|
@Override
|
|
|
- public void getAdqCreativeHour(Long advertiserId, String accessToken, String startDate, String endDate, Integer page) {
|
|
|
- Map<String, Object> paramsMap = new HashMap<>();
|
|
|
- paramsMap.put("access_token", accessToken);
|
|
|
- long timestamp = Instant.now().getEpochSecond();
|
|
|
- paramsMap.put("timestamp", String.valueOf(timestamp));
|
|
|
- paramsMap.put("nonce", RandomStringGenerator.generateRandomString(32));
|
|
|
- paramsMap.put("page", page);
|
|
|
- paramsMap.put("page_size", 1000);
|
|
|
- paramsMap.put("account_id", advertiserId);
|
|
|
- paramsMap.put("level", "REPORT_LEVEL_DYNAMIC_CREATIVE");
|
|
|
- JSONObject date_range = new JSONObject();
|
|
|
- date_range.put("start_date", startDate);
|
|
|
- date_range.put("end_date", endDate);
|
|
|
- paramsMap.put("date_range", date_range);
|
|
|
- JSONArray group_by = new JSONArray();
|
|
|
- group_by.add("hour");
|
|
|
- group_by.add("adgroup_id");
|
|
|
- group_by.add("dynamic_creative_id");
|
|
|
- paramsMap.put("group_by", group_by);
|
|
|
- JSONArray fieldsList = FieldsConfig.getFieldsList();
|
|
|
- paramsMap.put("fields", fieldsList);
|
|
|
- Integer totalNumber = 0;
|
|
|
- List<AdqCreativeReportHour> hourList = new ArrayList<>();
|
|
|
- String s = HttpUtils.httpGet("https://api.e.qq.com/v3.0/hourly_reports/get", paramsMap, null);
|
|
|
- JSONObject jsonObject = JSONObject.parseObject(s);
|
|
|
- if (!Check.isNull(jsonObject)) {
|
|
|
- Integer code = jsonObject.getInteger("code");
|
|
|
- if (code == 0) {
|
|
|
- JSONObject data = jsonObject.getJSONObject("data");
|
|
|
- if (!Check.isNull(data)) {
|
|
|
- JSONObject pageInfo = data.getJSONObject("page_info");
|
|
|
- if (!Check.isNull(pageInfo)) {
|
|
|
- totalNumber = pageInfo.getInteger("total_number");
|
|
|
- }
|
|
|
+ public void getAdqCreativeHour(Long advertiserId, String accessToken, String startDate, String endDate, Integer page, Integer isLog) {
|
|
|
+ try {
|
|
|
+
|
|
|
|
|
|
- JSONArray list = data.getJSONArray("list");
|
|
|
- if (!Check.isNull(list)) {
|
|
|
- for (int i = 0; i < list.size(); i++) {
|
|
|
- JSONObject dataJson = list.getJSONObject(i);
|
|
|
- AdqCreativeReportHour hourReport = JSONObject.parseObject(dataJson.toJSONString(), AdqCreativeReportHour.class);
|
|
|
- hourReport.setAdvertiserId(advertiserId);
|
|
|
- hourReport.setStatTimeDay(Long.valueOf(startDate.replace("-", "")));
|
|
|
- hourList.add(hourReport);
|
|
|
+ Map<String, Object> paramsMap = new HashMap<>();
|
|
|
+ paramsMap.put("access_token", accessToken);
|
|
|
+ long timestamp = Instant.now().getEpochSecond();
|
|
|
+ paramsMap.put("timestamp", String.valueOf(timestamp));
|
|
|
+ paramsMap.put("nonce", RandomStringGenerator.generateRandomString(32));
|
|
|
+ paramsMap.put("page", page);
|
|
|
+ paramsMap.put("page_size", 1000);
|
|
|
+ paramsMap.put("account_id", advertiserId);
|
|
|
+ paramsMap.put("level", "REPORT_LEVEL_DYNAMIC_CREATIVE");
|
|
|
+ JSONObject date_range = new JSONObject();
|
|
|
+ date_range.put("start_date", startDate);
|
|
|
+ date_range.put("end_date", endDate);
|
|
|
+ paramsMap.put("date_range", date_range);
|
|
|
+ JSONArray group_by = new JSONArray();
|
|
|
+ group_by.add("hour");
|
|
|
+ group_by.add("adgroup_id");
|
|
|
+ group_by.add("dynamic_creative_id");
|
|
|
+ paramsMap.put("group_by", group_by);
|
|
|
+ JSONArray fieldsList = FieldsConfig.getFieldsList();
|
|
|
+ paramsMap.put("fields", fieldsList);
|
|
|
+ Integer totalNumber = 0;
|
|
|
+ List<AdqCreativeReportHour> hourList = new ArrayList<>();
|
|
|
+ String s = HttpUtils.httpGet("https://api.e.qq.com/v3.0/hourly_reports/get", paramsMap, null);
|
|
|
+ JSONObject jsonObject = JSONObject.parseObject(s);
|
|
|
+ if (!Check.isNull(jsonObject)) {
|
|
|
+ Integer code = jsonObject.getInteger("code");
|
|
|
+ if (code == 0) {
|
|
|
+ JSONObject data = jsonObject.getJSONObject("data");
|
|
|
+ if (!Check.isNull(data)) {
|
|
|
+ JSONObject pageInfo = data.getJSONObject("page_info");
|
|
|
+ if (!Check.isNull(pageInfo)) {
|
|
|
+ totalNumber = pageInfo.getInteger("total_number");
|
|
|
+ }
|
|
|
+ JSONArray list = data.getJSONArray("list");
|
|
|
+ if (!Check.isNull(list)) {
|
|
|
+ for (int i = 0; i < list.size(); i++) {
|
|
|
+ JSONObject dataJson = list.getJSONObject(i);
|
|
|
+ AdqCreativeReportHour hourReport = JSONObject.parseObject(dataJson.toJSONString(), AdqCreativeReportHour.class);
|
|
|
+ hourReport.setAdvertiserId(advertiserId);
|
|
|
+ hourReport.setStatTimeDay(Long.valueOf(startDate.replace("-", "")));
|
|
|
+ hourList.add(hourReport);
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
+ } else {
|
|
|
+ log.error("请求创意时报失败,account_id:{},返回信息:{}", advertiserId, jsonObject);
|
|
|
+ if (isLog == 1) {
|
|
|
+ AdqErrorLog errorInfo = new AdqErrorLog();
|
|
|
+ errorInfo.setAdvertiserId(advertiserId);
|
|
|
+ errorInfo.setStartDate(startDate);
|
|
|
+ errorInfo.setEndDate(endDate);
|
|
|
+ errorInfo.setDataDimension("creative");
|
|
|
+ errorInfo.setDataType("hour");
|
|
|
+ adqReportMapper.replaceErrorInfo(errorInfo);
|
|
|
+ }
|
|
|
+ return;
|
|
|
}
|
|
|
+ }
|
|
|
+ if (!Check.isNull(hourList)) {
|
|
|
+ adqReportMapper.addsHourList(hourList);
|
|
|
+ }
|
|
|
+ if (totalNumber >= 1000) {
|
|
|
+ getAdqCreativeHour(advertiserId, accessToken, startDate, endDate, page + 1, isLog);
|
|
|
} else {
|
|
|
- log.error("请求创意时报失败,account_id:{},返回信息:{}", advertiserId, jsonObject);
|
|
|
+ log.error("请求创意时报完成,account_id:{},日期:{}", advertiserId, startDate);
|
|
|
}
|
|
|
- }
|
|
|
- if (!Check.isNull(hourList)) {
|
|
|
- adqReportMapper.addsHourList(hourList);
|
|
|
- }
|
|
|
- if (totalNumber >= 1000) {
|
|
|
- getAdqCreativeHour(advertiserId, accessToken, startDate, endDate, page + 1);
|
|
|
- } else {
|
|
|
- log.error("请求创意时报完成,account_id:{},日期:{}", advertiserId, startDate);
|
|
|
+ } catch (Exception e) {
|
|
|
+ e.printStackTrace();
|
|
|
}
|
|
|
|
|
|
}
|
|
|
@@ -91,4 +108,82 @@ public class AdqReportServiceImpl implements IAdqReportService {
|
|
|
public List<JSONObject> getAccountList() {
|
|
|
return adqReportMapper.getAccountList();
|
|
|
}
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public void getAdqCreativeDaily(Long advertiserId, String accessToken, String startDate, String endDate, Integer page, Integer isLog) {
|
|
|
+ try {
|
|
|
+ Map<String, Object> paramsMap = new HashMap<>();
|
|
|
+ paramsMap.put("access_token", accessToken);
|
|
|
+ long timestamp = Instant.now().getEpochSecond();
|
|
|
+ paramsMap.put("timestamp", String.valueOf(timestamp));
|
|
|
+ paramsMap.put("nonce", RandomStringGenerator.generateRandomString(32));
|
|
|
+ paramsMap.put("page", page);
|
|
|
+ paramsMap.put("page_size", 1000);
|
|
|
+ paramsMap.put("account_id", advertiserId);
|
|
|
+ paramsMap.put("level", "REPORT_LEVEL_DYNAMIC_CREATIVE");
|
|
|
+ JSONObject date_range = new JSONObject();
|
|
|
+ date_range.put("start_date", startDate);
|
|
|
+ date_range.put("end_date", endDate);
|
|
|
+ paramsMap.put("date_range", date_range);
|
|
|
+ JSONArray group_by = new JSONArray();
|
|
|
+ group_by.add("adgroup_id");
|
|
|
+ group_by.add("dynamic_creative_id");
|
|
|
+ paramsMap.put("group_by", group_by);
|
|
|
+ JSONArray fieldsList = FieldsConfig.getFieldsList();
|
|
|
+ paramsMap.put("fields", fieldsList);
|
|
|
+ Integer totalNumber = 0;
|
|
|
+ List<AdqCreativeReportDaily> dailies = new ArrayList<>();
|
|
|
+ String s = HttpUtils.httpGet("https://api.e.qq.com/v3.0/hourly_reports/get", paramsMap, null);
|
|
|
+ JSONObject jsonObject = JSONObject.parseObject(s);
|
|
|
+ if (!Check.isNull(jsonObject)) {
|
|
|
+ Integer code = jsonObject.getInteger("code");
|
|
|
+ if (code == 0) {
|
|
|
+ JSONObject data = jsonObject.getJSONObject("data");
|
|
|
+ if (!Check.isNull(data)) {
|
|
|
+ JSONObject pageInfo = data.getJSONObject("page_info");
|
|
|
+ if (!Check.isNull(pageInfo)) {
|
|
|
+ totalNumber = pageInfo.getInteger("total_number");
|
|
|
+ }
|
|
|
+ JSONArray list = data.getJSONArray("list");
|
|
|
+ if (!Check.isNull(list)) {
|
|
|
+ for (int i = 0; i < list.size(); i++) {
|
|
|
+ JSONObject dataJson = list.getJSONObject(i);
|
|
|
+ AdqCreativeReportDaily hourReport = JSONObject.parseObject(dataJson.toJSONString(), AdqCreativeReportDaily.class);
|
|
|
+ hourReport.setAdvertiserId(advertiserId);
|
|
|
+ hourReport.setStatTimeDay(Long.valueOf(startDate.replace("-", "")));
|
|
|
+ dailies.add(hourReport);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ log.error("请求创意日报失败,account_id:{},返回信息:{}", advertiserId, jsonObject);
|
|
|
+ if (isLog == 1) {
|
|
|
+ AdqErrorLog errorInfo = new AdqErrorLog();
|
|
|
+ errorInfo.setAdvertiserId(advertiserId);
|
|
|
+ errorInfo.setStartDate(startDate);
|
|
|
+ errorInfo.setEndDate(endDate);
|
|
|
+ errorInfo.setDataDimension("creative");
|
|
|
+ errorInfo.setDataType("daily");
|
|
|
+ adqReportMapper.replaceErrorInfo(errorInfo);
|
|
|
+ }
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if (!Check.isNull(dailies)) {
|
|
|
+ adqReportMapper.addsDaily(dailies);
|
|
|
+ }
|
|
|
+ if (totalNumber >= 1000) {
|
|
|
+ getAdqCreativeDaily(advertiserId, accessToken, startDate, endDate, page + 1, isLog);
|
|
|
+ } else {
|
|
|
+ log.error("请求创意日报完成,account_id:{},日期:{}", advertiserId, startDate);
|
|
|
+ }
|
|
|
+ } catch (Exception e) {
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public List<JSONObject> getErrorLogs() {
|
|
|
+ return adqReportMapper.getErrorLogs();
|
|
|
+ }
|
|
|
}
|