瀏覽代碼

微小广告位收入 封面广告

huangpingkang 1 年之前
父節點
當前提交
160d7a4cc7
共有 1 個文件被更改,包括 78 次插入0 次删除
  1. 78 0
      job-adq/src/main/java/cn/com/ctop/job/adq/data/service/impl/AdqAdIncomeServiceImpl.java

+ 78 - 0
job-adq/src/main/java/cn/com/ctop/job/adq/data/service/impl/AdqAdIncomeServiceImpl.java

@@ -41,6 +41,7 @@ public class AdqAdIncomeServiceImpl implements IAdqAdIncomeService {
     }
 
     public void getAdqAdIncome(String startDt, String endDt, String appId, Long appletId, Integer page, Integer isLog, Long errId, Integer isSend) {
+        getAdqAdIncomeCover(startDt, endDt, appId, appletId, page, isLog, errId, isSend);
         try {
             String url = "https://api.weixin.qq.com/publisher/stat";
             Object tokenObj = redis2Template_db5.opsForValue().get("wechat-applet-access-token-key-" + appletId);
@@ -113,6 +114,83 @@ public class AdqAdIncomeServiceImpl implements IAdqAdIncomeService {
         }
     }
 
+    private void getAdqAdIncomeCover(String startDt, String endDt, String appId, Long appletId, Integer page, Integer isLog, Long errId, Integer isSend) {
+        try {
+            String url = "https://api.weixin.qq.com/publisher/stat";
+            Object tokenObj = redis2Template_db5.opsForValue().get("wechat-applet-access-token-key-" + appletId);
+            if (tokenObj == null) {
+                log.error("微小广告封面广告数据拉取获取token为空 [{}] {}~{} {}", appId, startDt, endDt, appletId);
+                return;
+            }
+            int pageSize = 90;
+            Map<String, Object> paramsMap = new HashMap<>();
+            paramsMap.put("access_token", tokenObj.toString());
+            paramsMap.put("action", "publisher_adpos_general");
+            paramsMap.put("ad_slot", "SLOT_ID_WEAPP_COVER");
+            paramsMap.put("page", page);
+            paramsMap.put("page_size", pageSize);
+            paramsMap.put("start_date", startDt);
+            paramsMap.put("end_date", endDt);
+            String s = HttpUtils.httpGet(url, paramsMap, null);
+            JSONObject jsonObject = JSONObject.parseObject(s);
+            List<AdqPublisherAdunitGeneral> reports = new ArrayList<>();
+            int totalPage = 1;
+            if (!Check.isNull(jsonObject)) {
+                Integer code = jsonObject.getInteger("ret");
+                JSONObject baseResp = jsonObject.getJSONObject("base_resp");
+                if (baseResp != null) {
+                    code = baseResp.getInteger("ret");
+                }
+                if (code == 2009) {
+                    return; //无效的流量主
+                }
+                if (code == 0) {
+                    JSONArray list = jsonObject.getJSONArray("list");
+                    Integer totalNum = jsonObject.getInteger("total_num");
+                    totalPage = (int) Math.ceil(totalNum * 1.0 / pageSize);
+                    if (!Check.isNull(list)) {
+                        for (int i = 0; i < list.size(); i++) {
+                            JSONObject dataJson = list.getJSONObject(i);
+                            dataJson.put("ad_unit_id", "SLOT_ID_WEAPP_COVER");
+                            dataJson.put("ad_unit_name", "封面广告");
+                            AdqPublisherAdunitGeneral report = JSONObject.parseObject(dataJson.toJSONString(), AdqPublisherAdunitGeneral.class);
+                            report.setAppId(appId);
+                            report.setStatDate(Integer.valueOf(report.getDate().replace("-", "")));
+                            //System.out.println(report);
+                            reports.add(report);
+                        }
+                    }
+
+                } else {
+                    log.error("微小广告封面广告数据拉取失败,app_id:{} {}~{},返回信息:{}", appId, startDt, endDt, jsonObject);
+                    insertErrorLog(isLog, System.currentTimeMillis(), "adq_ma_ad_income", startDt, endDt,
+                            jsonObject.fluentPut("app_id", appId).fluentPut("applet_id", appletId).toJSONString());
+                }
+            } else {
+                log.error("微小广告封面广告数据拉取失败,app_id:{} {}~{},返回为空。", appId, startDt, endDt);
+                insertErrorLog(isLog, System.currentTimeMillis(), "adq_ma_ad_income", startDt, endDt,
+                        new JSONObject().fluentPut("app_id", appId).fluentPut("applet_id", appletId).fluentPut("msg", "返回为空").toJSONString());
+            }
+            if (!Check.isNull(reports)) {
+                adqAdIncomeMapper.insertAdqAdIncome(reports);
+            }
+
+            if (totalPage > page) {
+                getAdqAdIncome(startDt, endDt, appId, appletId, page + 1, isLog, errId, isSend);
+            } else {
+                log.info("微小广告封面广告数据拉取完成,app_id:{} {}~{} page:{}。", appId, startDt, endDt,page);
+                if (errId != null) {
+                    adqErrorLogMapper.deleteInfoByErrorId(errId);
+                }
+                if (isSend != null && isSend == 1) {
+                    AlertUtils.sendMessage(System.currentTimeMillis(), startDt, endDt, 3, "daily", 1, "adq_ma_ad_income");
+                }
+            }
+        } catch (Exception e) {
+            log.error("微小广告封面广告数据拉取失败,app_id:{} {}~{}。", appId, startDt, endDt, e);
+        }
+    }
+
     private void insertErrorLog(Integer isLog, Long advertiserId, String dataDimension, String startDate, String endDate, String msg) {
         if (isLog != null && isLog == 1) {
             AdqErrorLog errorInfo = new AdqErrorLog();