Procházet zdrojové kódy

拉取小程序,广点通创意 2

ZHAOXIAN před 1 rokem
rodič
revize
9507153472

+ 4 - 4
job-bytedance/src/main/java/cn/com/ctop/job/bytedance/data/mapper/BytedanceCdpProjectMapper.java

@@ -14,7 +14,7 @@ import java.util.List;
  */
 public interface BytedanceCdpProjectMapper {
 
-    void replaceBytedanceCdpProjectList(@Param("projectList") List<BytedanceCdpProject> projectList);
+    int replaceBytedanceCdpProjectList(@Param("projectList") List<BytedanceCdpProject> projectList);
 
     void insertErrorAdvertiserId(@Param("advertiserId") Long advertiserId, @Param("type") String type);
 
@@ -24,13 +24,13 @@ public interface BytedanceCdpProjectMapper {
 
     List<Long> queryAdvertiserIds(@Param("db") String db, @Param("date") String date);
 
-    void replaceBytedanceByteAppInfo(@Param("list") JSONArray list, @Param("advertiserId") Long advertiserId);
+    int replaceBytedanceByteAppInfo(@Param("list") JSONArray list, @Param("advertiserId") Long advertiserId);
 
-    void replaceBytedanceWxAppInfo(@Param("list") JSONArray list, @Param("advertiserId") Long advertiserId);
+    int replaceBytedanceWxAppInfo(@Param("list") JSONArray list, @Param("advertiserId") Long advertiserId);
 
     List<Long> queryMediaAdverIds(@Param("date") String date, @Param("mediaType") String mediaType);
 
-    void replaceAdqDynamicCreateives(@Param("list") JSONArray list, @Param("advertiserId") Long advertiserId);
+    int replaceAdqDynamicCreateives(@Param("list") JSONArray list, @Param("advertiserId") Long advertiserId);
 
     List<Long> queryADQAdverIds(String date);
 

+ 4 - 2
job-bytedance/src/main/java/cn/com/ctop/job/bytedance/data/mapper/xml/BytedanceCdpProjectListMapper.xml

@@ -149,7 +149,8 @@
         advertiser_id,
         adgroup_id,
         dynamic_creative_id,
-        mini_program_id
+        mini_program_id,
+        page_type
         )
         values
         <foreach collection="list" item="item" separator=",">
@@ -157,7 +158,8 @@
             #{advertiserId},
             #{item.adgroup_id},
             #{item.dynamic_creative_id},
-            #{item.mini_program_id}
+            #{item.mini_program_id},
+            #{item.page_type}
             )
         </foreach>
     </insert>

+ 72 - 67
job-bytedance/src/main/java/cn/com/ctop/job/bytedance/data/service/impl/BytedanceCdpProjectServiceImpl.java

@@ -59,7 +59,7 @@ public class BytedanceCdpProjectServiceImpl implements IBytedanceCdpProjectServi
     @Override
     public void getProjectList(Long advertiserId, String date) {
         this.getProjectListVo(advertiserId, null, date, 1, 1);
-        this.getProjectListVo(advertiserId, "del", date, 1, 1);
+//        this.getProjectListVo(advertiserId, "del", date, 1, 1);
     }
 
     private void getProjectListVo(Long advertiserId, String type, String date, Integer page, int count) {
@@ -78,36 +78,37 @@ public class BytedanceCdpProjectServiceImpl implements IBytedanceCdpProjectServi
                 filtering.put("status_first", "PROJECT_STATUS_DELETE");
             }
             filtering.put("project_modify_time", date);
-
             params.put("filtering", filtering);
             params.put("page", page);
             params.put("page_size", 100);//最大100
             String url = "https://api.oceanengine.com/open_api/v3.0/project/list/";
             String results = HttpUtils.httpGet(url, params, HttpUtils.postMHeaders(accessToken));
             JSONObject obj = JSONObject.parseObject(results);
-            Integer code = obj.getInteger("code");
-            if (code == 0) {
-                log.info("---账户({})获取项目成功", advertiserId);
-                JSONObject data = obj.getJSONObject("data");
-                Integer totalPage = data.getJSONObject("page_info").getInteger("total_page");
-                if (totalPage != 0 && totalPage > data.getJSONObject("page_info").getInteger("page")) {
-                    nextPage = true;
-                }
-                List<BytedanceCdpProject> projectList = new ArrayList<>();
-                JSONArray array = data.getJSONArray("list");
-                for (int i = 0; i < array.size(); i++) {
-                    BytedanceCdpProject advertiserToolsSite = new BytedanceCdpProject(array.getJSONObject(i));
-                    projectList.add(advertiserToolsSite);
-                }
-                if (!Check.isNull(projectList))
-                    bytedanceCdpProjectMapper.replaceBytedanceCdpProjectList(projectList);
-            } else {
-                //40100请求超频
-                if (40100 == code && count <= 3) {
-                    Thread.sleep(500);
-                    getProjectListVo(advertiserId, type, date, page, count + 1);
+            if (!Check.isNull(obj)) {
+                Integer code = obj.getInteger("code");
+                if (code == 0) {
+                    JSONObject data = obj.getJSONObject("data");
+                    Integer totalPage = data.getJSONObject("page_info").getInteger("total_page");
+                    if (totalPage != 0 && totalPage > data.getJSONObject("page_info").getInteger("page")) {
+                        nextPage = true;
+                    }
+                    List<BytedanceCdpProject> projectList = new ArrayList<>();
+                    JSONArray array = data.getJSONArray("list");
+                    for (int i = 0; i < array.size(); i++) {
+                        BytedanceCdpProject advertiserToolsSite = new BytedanceCdpProject(array.getJSONObject(i));
+                        projectList.add(advertiserToolsSite);
+                    }
+                    if (!Check.isNull(projectList))
+                        if (bytedanceCdpProjectMapper.replaceBytedanceCdpProjectList(projectList) > 0)
+                            log.info("---账户({})项目信息更新成功", advertiserId);
+                } else {
+                    //40100请求超频
+                    if (40100 == code && count <= 5) {
+                        Thread.sleep(800);
+                        getProjectListVo(advertiserId, type, date, page, count + 1);
+                    }
+                    log.error("获取项目列表失败(url:{}),入参:{}\n结果:{}", url, JSONObject.toJSONString(params), obj);
                 }
-                log.error("获取项目列表失败(url:{}),入参:{}\n结果:{}", url, JSONObject.toJSONString(params), obj);
             }
             if (nextPage) {
                 getProjectListVo(advertiserId, type, date, page + 1, 1);
@@ -145,26 +146,27 @@ public class BytedanceCdpProjectServiceImpl implements IBytedanceCdpProjectServi
             //获取微信小程序列表
             String url = "https://api.oceanengine.com/open_api/v3.0/tools/micro_app/list/";
             JSONObject obj = Okhttp3Utils.bytedanceGetRequest(accessToken, url, params);
-            Integer code = obj.getInteger("code");
-            if (code == 0) {
-                log.info("---账户({})获取抖小信息成功", advertiserId);
-                JSONObject data = obj.getJSONObject("data");
-                Integer totalPage = data.getJSONObject("page_info").getInteger("total_page");
-                if (totalPage != 0 && totalPage > data.getJSONObject("page_info").getInteger("page")) {
-                    nextPage = true;
-                }
-                JSONArray list = data.getJSONArray("list");
-                if (!Check.isNull(list)) {
-                    bytedanceCdpProjectMapper.replaceBytedanceByteAppInfo(list, advertiserId);
-                }
-            } else {
-                //40110请求超频
-                if (40110 == code && count <= 3) {
-                    Thread.sleep(500);
-                    getByteAppInfoVo(advertiserId, searchType, page, count + 1);
+            if (!Check.isNull(obj)) {
+                Integer code = obj.getInteger("code");
+                if (code == 0) {
+                    JSONObject data = obj.getJSONObject("data");
+                    Integer totalPage = data.getJSONObject("page_info").getInteger("total_page");
+                    if (totalPage != 0 && totalPage > data.getJSONObject("page_info").getInteger("page")) {
+                        nextPage = true;
+                    }
+                    JSONArray list = data.getJSONArray("list");
+                    if (!Check.isNull(list))
+                        if (bytedanceCdpProjectMapper.replaceBytedanceByteAppInfo(list, advertiserId) > 0)
+                            log.info("---账户({})抖小信息更新成功", advertiserId);
+                } else {
+                    //40110请求超频
+                    if (40110 == code && count <= 3) {
+                        Thread.sleep(700);
+                        getByteAppInfoVo(advertiserId, searchType, page, count + 1);
+                    }
+                    log.error("账户({})获取抖小列表失败,入参:{}\n结果:{}", advertiserId, JSONObject.toJSONString(params), obj);
+                    bytedanceCdpProjectMapper.insertErrorAdvertiserId(advertiserId, "tt");
                 }
-                log.error("账户({})获取抖小列表失败,入参:{}\n结果:{}", advertiserId, JSONObject.toJSONString(params), obj);
-                bytedanceCdpProjectMapper.insertErrorAdvertiserId(advertiserId, "tt");
             }
             if (nextPage) {
                 getByteAppInfoVo(advertiserId, searchType, page + 1, 1);
@@ -204,26 +206,27 @@ public class BytedanceCdpProjectServiceImpl implements IBytedanceCdpProjectServi
             //获取微信小程序列表
             String url = "https://api.oceanengine.com/open_api/v3.0/tools/wechat_applet/list/";
             JSONObject obj = Okhttp3Utils.bytedanceGetRequest(accessToken, url, params);
-            Integer code = obj.getInteger("code");
-            if (code == 0) {
-                log.info("---账户({})获取微小信息成功", advertiserId);
-                JSONObject data = obj.getJSONObject("data");
-                Integer totalPage = data.getJSONObject("page_info").getInteger("total_page");
-                if (totalPage != 0 && totalPage > data.getJSONObject("page_info").getInteger("page")) {
-                    nextPage = true;
-                }
-                JSONArray list = data.getJSONArray("list");
-                if (!Check.isNull(list)) {
-                    bytedanceCdpProjectMapper.replaceBytedanceWxAppInfo(list, advertiserId);
-                }
-            } else {
-                //40110请求超频
-                if (40110 == code && count <= 3) {
-                    Thread.sleep(500);
-                    getWxAppInfoVo(advertiserId, searchType, page, count + 1);
+            if (!Check.isNull(obj)) {
+                Integer code = obj.getInteger("code");
+                if (code == 0) {
+                    JSONObject data = obj.getJSONObject("data");
+                    Integer totalPage = data.getJSONObject("page_info").getInteger("total_page");
+                    if (totalPage != 0 && totalPage > data.getJSONObject("page_info").getInteger("page")) {
+                        nextPage = true;
+                    }
+                    JSONArray list = data.getJSONArray("list");
+                    if (!Check.isNull(list))
+                        if (bytedanceCdpProjectMapper.replaceBytedanceWxAppInfo(list, advertiserId) > 0)
+                            log.info("---账户({})微小更新信息成功", advertiserId);
+                } else {
+                    //40110请求超频
+                    if (40110 == code && count <= 3) {
+                        Thread.sleep(600);
+                        getWxAppInfoVo(advertiserId, searchType, page, count + 1);
+                    }
+                    log.error("账户({})获取微小列表失败,入参:{}\n结果:{}", advertiserId, JSONObject.toJSONString(params), obj);
+                    bytedanceCdpProjectMapper.insertErrorAdvertiserId(advertiserId, "wx");
                 }
-                log.error("账户({})获取微小列表失败,入参:{}\n结果:{}", advertiserId, JSONObject.toJSONString(params), obj);
-                bytedanceCdpProjectMapper.insertErrorAdvertiserId(advertiserId, "wx");
             }
             if (nextPage) {
                 getWxAppInfoVo(advertiserId, searchType, page + 1, 1);
@@ -300,7 +303,6 @@ public class BytedanceCdpProjectServiceImpl implements IBytedanceCdpProjectServi
         JSONObject obj = JSONObject.parseObject(result);
         if (!Check.isNull(obj)) {
             if (0 == obj.getInteger("code")) {
-                log.info("---账户({})获取动态创意成功", accountId);
                 JSONObject data = obj.getJSONObject("data");
                 if (!Check.isNull(data)) {
                     JSONObject pageInfo = data.getJSONObject("page_info");
@@ -313,12 +315,12 @@ public class BytedanceCdpProjectServiceImpl implements IBytedanceCdpProjectServi
                         JSONObject object = array.getJSONObject(i);
                         getAppId(object);
                     }
-                    if (!Check.isNull(array)) {
-                        bytedanceCdpProjectMapper.replaceAdqDynamicCreateives(array, accountId);
-                    }
+                    if (!Check.isNull(array))
+                        if (bytedanceCdpProjectMapper.replaceAdqDynamicCreateives(array, accountId) > 0)
+                            log.info("---账户({})广点通创意更新成功", accountId);
                 }
             } else {
-                if (count <= 3) {
+                if (count <= 4) {
                     Thread.sleep(500);
                     rebackadqCreativesVo(accountId, accessToken, date, page, isDeleted, count + 1);
                 }
@@ -339,6 +341,7 @@ public class BytedanceCdpProjectServiceImpl implements IBytedanceCdpProjectServi
                 if (!Check.isNull(value)) {
                     JSONObject jumpInfo = value.getJSONObject("jump_info");
                     if (!Check.isNull(jumpInfo)) {
+                        object.put("page_type", jumpInfo.getString("page_type"));
                         JSONObject pageSpec = jumpInfo.getJSONObject("page_spec");
                         if (!Check.isNull(pageSpec)) {
                             JSONObject wechatMiniProgramSpec = pageSpec.getJSONObject("wechat_mini_program_spec");
@@ -356,6 +359,7 @@ public class BytedanceCdpProjectServiceImpl implements IBytedanceCdpProjectServi
             if (!Check.isNull(jumpInfo)) {
                 JSONObject value = jumpInfo.getJSONObject(0).getJSONObject("value");
                 if (!Check.isNull(value)) {
+                    object.put("page_type", value.getString("page_type"));
                     JSONObject pageSpec = value.getJSONObject("page_spec");
                     if (!Check.isNull(pageSpec)) {
                         JSONObject wechatMiniProgramSpec = pageSpec.getJSONObject("wechat_mini_program_spec");
@@ -372,6 +376,7 @@ public class BytedanceCdpProjectServiceImpl implements IBytedanceCdpProjectServi
             if (!Check.isNull(mainJumpInfo)) {
                 JSONObject value = mainJumpInfo.getJSONObject(0).getJSONObject("value");
                 if (!Check.isNull(value)) {
+                    object.put("page_type", value.getString("page_type"));
                     JSONObject pageSpec = value.getJSONObject("page_spec");
                     if (!Check.isNull(pageSpec)) {
                         JSONObject wechatMiniProgramSpec = pageSpec.getJSONObject("wechat_mini_program_spec");

+ 17 - 14
job-bytedance/src/main/java/cn/com/ctop/job/bytedance/handler/BytedanceCdpProjectJob.java

@@ -39,18 +39,14 @@ public class BytedanceCdpProjectJob {
         List<Long> ttList = cdpProjectService.getAllAdverIdList("tt");
         if (!Check.isNull(ttList)) {
             if (cdpProjectService.delErrApps("tt"))
-                log.info("[getAll] 移除抖小失败记录");
-            ttList.forEach(id -> allttService.submit(() -> {
-                cdpProjectService.getByteAppInfo(id);
-            }));
+                log.info("[getAll] ---移除抖小失败记录");
+            ttList.forEach(id -> allttService.submit(() -> cdpProjectService.getByteAppInfo(id)));
         }
         List<Long> wxlist = cdpProjectService.getAllAdverIdList("wx");
         if (!Check.isNull(wxlist)) {
             if (cdpProjectService.delErrApps("wx"))
-                log.info("[getAll] 移除微小失败记录");
-            wxlist.forEach(id -> allwxService.submit(() -> {
-                cdpProjectService.getWxAppInfo(id);
-            }));
+                log.info("[getAll] ---移除微小失败记录");
+            wxlist.forEach(id -> allwxService.submit(() -> cdpProjectService.getWxAppInfo(id)));
         }
     }
 
@@ -77,13 +73,15 @@ public class BytedanceCdpProjectJob {
         try {
             //拉取昨天数据
             String yesterday = DateUtils.getNowAddDate("yyyy-MM-dd", -1);
-            String yesterday2 = DateUtils.getNowAddDate("yyyy-MM-dd", -2);
             List<Long> adIds = cdpProjectService.queryAdvertiserIds("bytedance_advertiser_report_daily", DateUtils.getYYMMDDTime(yesterday));
             if (!Check.isNull(adIds)) {
-                adIds.forEach(id -> projectExecutorService.submit(() -> {
-                    cdpProjectService.getProjectList(id, yesterday);
-                    cdpProjectService.getProjectList(id, yesterday2);
-                }));
+                adIds.forEach(id -> projectExecutorService.submit(() -> cdpProjectService.getProjectList(id, yesterday)));
+            }
+            //拉取前天数据
+            String yesterday2 = DateUtils.getNowAddDate("yyyy-MM-dd", -2);
+            List<Long> adIds2 = cdpProjectService.queryAdvertiserIds("bytedance_advertiser_report_daily", DateUtils.getYYMMDDTime(yesterday2));
+            if (!Check.isNull(adIds2)) {
+                adIds2.forEach(id -> projectExecutorService.submit(() -> cdpProjectService.getProjectList(id, yesterday2)));
             }
         } catch (Exception e) {
             e.printStackTrace();
@@ -159,10 +157,15 @@ public class BytedanceCdpProjectJob {
             if (!Check.isNull(ids)) {
                 ids.forEach(id -> createiveAppsExecutorService.submit(() -> cdpProjectService.getAdqCreatives(id, yesterday)));
             }
+            //拉取前天数据
+            String yesterday2 = DateUtils.getNowAddDate("yyyy-MM-dd", -2);
+            List<Long> ids2 = cdpProjectService.queryAdvertiserIds("adq_advertiser_report_daily", DateUtils.getYYMMDDTime(yesterday2));
+            if (!Check.isNull(ids2)) {
+                ids2.forEach(id -> createiveAppsExecutorService.submit(() -> cdpProjectService.getAdqCreatives(id, yesterday2)));
+            }
         } catch (Exception e) {
             e.printStackTrace();
             log.error("[yesDynamicCreateives]" + e.getMessage());
         }
     }
-
 }