|
@@ -58,6 +58,11 @@ public class BytedanceCdpProjectServiceImpl implements IBytedanceCdpProjectServi
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
@Override
|
|
@Override
|
|
|
|
|
+ public List<Long> queryPageAdvertiserIds() {
|
|
|
|
|
+ return bytedanceCdpProjectMapper.queryPageAdvertiserIds();
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ @Override
|
|
|
public boolean delErrApps(String type) {
|
|
public boolean delErrApps(String type) {
|
|
|
return bytedanceCdpProjectMapper.delErrApps(type);
|
|
return bytedanceCdpProjectMapper.delErrApps(type);
|
|
|
}
|
|
}
|
|
@@ -412,6 +417,90 @@ public class BytedanceCdpProjectServiceImpl implements IBytedanceCdpProjectServi
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+ @Override
|
|
|
|
|
+ public void getAdqWechatPages(Long advertiserId) {
|
|
|
|
|
+ try {
|
|
|
|
|
+ String accessToken = tokenMapper.onlyGetADQToken(advertiserId);
|
|
|
|
|
+ if (Check.isNull(accessToken)) {
|
|
|
|
|
+ log.error("账户({})accessToken is null", advertiserId);
|
|
|
|
|
+ return;
|
|
|
|
|
+ }
|
|
|
|
|
+ this.getAdqWechatPagesVo(advertiserId, accessToken, 1, true, 1);
|
|
|
|
|
+ } catch (Exception e) {
|
|
|
|
|
+ e.printStackTrace();
|
|
|
|
|
+ log.error("账户({})获取原生落地页异常", e.getMessage());
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+ private void getAdqWechatPagesVo(Long accountId, String accessToken, Integer page, Boolean isDeleted, int count) throws Exception {
|
|
|
|
|
+ boolean nextPage = false;
|
|
|
|
|
+ JSONObject returnJson = new JSONObject();
|
|
|
|
|
+ Map<String, Object> param = new HashMap<>();
|
|
|
|
|
+ long timestamp = Instant.now().getEpochSecond();
|
|
|
|
|
+ param.put("timestamp", String.valueOf(timestamp));
|
|
|
|
|
+ param.put("nonce", RandomStringGenerator.generateRandomString(32));
|
|
|
|
|
+ param.put("access_token", accessToken);
|
|
|
|
|
+ param.put("account_id", accountId);
|
|
|
|
|
+ param.put("page", page);
|
|
|
|
|
+ param.put("page_size", 100);
|
|
|
|
|
+ JSONArray filtering = new JSONArray();
|
|
|
|
|
+ JSONObject greObj = new JSONObject();
|
|
|
|
|
+ greObj.put("field", "page_type");
|
|
|
|
|
+ greObj.put("operator", "EQUALS");
|
|
|
|
|
+ greObj.put("values", "PAGE_TYPE_WECHAT_CANVAS");
|
|
|
|
|
+ param.put("filtering", filtering);
|
|
|
|
|
+ String result = HttpUtils.httpGet("https://api.e.qq.com/v3.0/wechat_pages/get", param, new HashMap<>());
|
|
|
|
|
+ JSONObject obj = JSONObject.parseObject(result);
|
|
|
|
|
+ if (!Check.isNull(obj)) {
|
|
|
|
|
+ if (0 == obj.getInteger("code")) {
|
|
|
|
|
+ JSONObject data = obj.getJSONObject("data");
|
|
|
|
|
+ if (!Check.isNull(data)) {
|
|
|
|
|
+ JSONObject pageInfo = data.getJSONObject("page_info");
|
|
|
|
|
+ Integer totalPage = pageInfo.getInteger("total_page");
|
|
|
|
|
+ if (totalPage != 0 && totalPage > pageInfo.getInteger("page")) {
|
|
|
|
|
+ nextPage = true;
|
|
|
|
|
+ }
|
|
|
|
|
+ JSONArray array = data.getJSONArray("list");
|
|
|
|
|
+ for (int i = 0; i < array.size(); i++) {
|
|
|
|
|
+ JSONObject object = array.getJSONObject(i);
|
|
|
|
|
+ getPageAppId(object);
|
|
|
|
|
+ }
|
|
|
|
|
+ if (!Check.isNull(array))
|
|
|
|
|
+ if (bytedanceCdpProjectMapper.replaceAdqDynamicPages(array, accountId) > 0)
|
|
|
|
|
+ log.info("---账户({})广点通落地页更新成功", accountId);
|
|
|
|
|
+ }
|
|
|
|
|
+ } else {
|
|
|
|
|
+ if (count <= 4) {
|
|
|
|
|
+ Thread.sleep(500);
|
|
|
|
|
+ getAdqWechatPagesVo(accountId, accessToken, page, isDeleted, count + 1);
|
|
|
|
|
+ } else {
|
|
|
|
|
+ log.error("账户({})获取动态创意失败,入参:{}\n,结果:{}", accountId, JSONObject.toJSONString(param), obj);
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ if (nextPage) {
|
|
|
|
|
+ getAdqWechatPagesVo(accountId, accessToken, page + 1, isDeleted, 1);
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ private void getPageAppId(JSONObject object) {
|
|
|
|
|
+ JSONArray pageElementsSpecList = object.getJSONArray("page_elements_spec_list");
|
|
|
|
|
+ if (!Check.isNull(pageElementsSpecList)) {
|
|
|
|
|
+ for (int i = 0; i < pageElementsSpecList.size(); i++) {
|
|
|
|
|
+ JSONObject obj = pageElementsSpecList.getJSONObject(i);
|
|
|
|
|
+ JSONObject buttonSpec = obj.getJSONObject("button_spec");
|
|
|
|
|
+ if (buttonSpec != null) {
|
|
|
|
|
+ JSONObject miniProgramSpec = buttonSpec.getJSONObject("mini_program_spec");
|
|
|
|
|
+ if (!Check.isNull(miniProgramSpec)) {
|
|
|
|
|
+ object.put("mini_program_id", miniProgramSpec.getString("mini_program_id"));
|
|
|
|
|
+ object.put("mini_program_path", miniProgramSpec.getString("mini_program_path"));
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
private void getAppId(JSONObject object) {
|
|
private void getAppId(JSONObject object) {
|
|
|
JSONObject creativeComponents = object.getJSONObject("creative_components");
|
|
JSONObject creativeComponents = object.getJSONObject("creative_components");
|
|
|
if (!Check.isNull(creativeComponents)) {
|
|
if (!Check.isNull(creativeComponents)) {
|