Sfoglia il codice sorgente

修改头条图片素材消耗数据获取逻辑

syh 4 anni fa
parent
commit
a74e8c6a7f

+ 5 - 7
module-job-bytedance/src/main/java/cn/com/ctop/job/bytedance/handler/BytedanceDailyMaterialReportJob.java

@@ -2,15 +2,11 @@ package cn.com.ctop.job.bytedance.handler;
 
 import cn.com.ctop.common.module.entity.CtopOauthToken;
 import cn.com.ctop.common.module.service.ICtopOauthTokenService;
-import cn.com.ctop.common.module.utils.CtopAdConstant;
-import cn.com.ctop.toutiao.modules.material.service.IByteDanceAdvertiserDataService;
 import cn.com.ctop.toutiao.modules.report.service.IBytedanceReportService;
 import com.xxl.job.core.biz.model.ReturnT;
 import com.xxl.job.core.handler.annotation.XxlJob;
 import com.xxl.job.core.log.XxlJobLogger;
 import org.jeecg.common.util.DateUtils;
-import org.quartz.JobExecutionContext;
-import org.quartz.JobExecutionException;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
 
@@ -57,6 +53,11 @@ public class BytedanceDailyMaterialReportJob {
                         XxlJobLogger.log("账户"+token.getAccountId() + "素材报表数据任务开始,任务时间:" + date + "~" + date);
                         bytedanceReportService.bytedanceMaterialReport(token, date, date);
                         XxlJobLogger.log("账户"+token.getAccountId() + "素材报表数据任务完成,任务时间:" + date + "~" + date);
+
+                        //获取头条素材报表两天前的数据
+                        bytedanceReportService.bytedanceVideoMaterialReport(token, date2, date2);
+                        //获取头条素材报表数据
+                        bytedanceReportService.bytedanceVideoMaterialReport(token, date, date);
                     } catch (Exception e) {
                         e.printStackTrace();
                     } finally {
@@ -66,7 +67,4 @@ public class BytedanceDailyMaterialReportJob {
         });
         return ReturnT.SUCCESS;
     }
-
-
-
 }

+ 2 - 0
module-toutiao/src/main/java/cn/com/ctop/toutiao/modules/report/mapper/BytedanceReportMaterialDailyMapper.java

@@ -37,4 +37,6 @@ public interface BytedanceReportMaterialDailyMapper extends BaseMapper<Bytedance
                                          @Param("code")String code,
                                          @Param("startIndex")Integer startIndex,
                                          @Param("pageSize")Integer pageSize);
+
+    void replaceImageBatch(@Param("infos")List<BytedanceReportMaterialDaily> bytedanceReportImageDailyList);
 }

+ 202 - 8
module-toutiao/src/main/java/cn/com/ctop/toutiao/modules/report/mapper/xml/BytedanceReportMaterialDailyMapper.xml

@@ -382,14 +382,208 @@
             )
         </foreach>
     </insert>
-
-
-
-
-
-
-
-
+    <insert id="replaceImageBatch">
+        REPLACE INTO ctop_bytedance_report_image_daily
+        (
+        account_id,
+        stat_datetime,
+        click,
+        cost,
+        active,
+        download_finish,
+        download_start,
+        install_finish,
+        register,
+        pay_count,
+        in_app_uv,
+        in_app_detail_uv,
+        in_app_cart,
+        in_app_order,
+        in_app_pay,
+        phone,
+        form,
+        map_search,
+        button,
+        view_material,
+        qq,
+        lottery,
+        vote,
+        redirect,
+        shopping,
+        consult,
+        wechat,
+        phone_confirm,
+        phone_connect,
+        consult_effective,
+        total_play,
+        valid_play,
+        wifi_play,
+        play_duration_sum,
+        play25_feed_break,
+        play50_feed_break,
+        play75_feed_break,
+        play100_feed_break,
+        advanced_creative_phone_click,
+        advanced_creative_counsel_click,
+        advanced_creative_form_click,
+        share_material,
+        comment_material,
+        follow,
+        home_visited,
+        ies_challenge_click,
+        ies_music_click,
+        next_day_open,
+        next_day_open_rate,
+        next_day_open_cost,
+        image_mode,
+        material_id,
+        inventory,
+        active_pay_amount,
+        valid_play_cost,
+        advanced_creative_coupon_addition,
+        convert_material,
+        active_pay_cost,
+        download,
+        cpa,
+        cpc,
+        location_click,
+        play_over_rate,
+        ctr,
+        cpm,
+        wifi_play_rate,
+        like_material,
+        active_pay_rate,
+        active_cost,
+        game_addiction_cost,
+        game_addiction,
+        active_rate,
+        play_duration_10s,
+        phone_effective,
+        game_addiction_rate,
+        active_register_rate,
+        average_video_play,
+        download_finish_cost,
+        play_duration_3s,
+        active_register_cost,
+        show_material,
+        convert_rate,
+        download_finish_rate,
+        install_finish_rate,
+        coupon,
+        coupon_single_page,
+        play_over,
+        download_start_cost,
+        message,
+        play_duration,
+        valid_play_rate,
+        average_play_time_per_play,
+        convert_cost,
+        convert_show_rate,
+        install_finish_cost,
+        download_start_rate
+        )
+        VALUES
+        <foreach collection="infos" item="info" separator=",">
+            (
+            #{info.accountId},
+            #{info.statDatetime},
+            #{info.click},
+            #{info.cost},
+            #{info.active},
+            #{info.downloadFinish},
+            #{info.downloadStart},
+            #{info.installFinish},
+            #{info.register},
+            #{info.payCount},
+            #{info.inAppUv},
+            #{info.inAppDetailUv},
+            #{info.inAppCart},
+            #{info.inAppOrder},
+            #{info.inAppPay},
+            #{info.phone},
+            #{info.form},
+            #{info.mapSearch},
+            #{info.button},
+            #{info.viewMaterial},
+            #{info.qq},
+            #{info.lottery},
+            #{info.vote},
+            #{info.redirect},
+            #{info.shopping},
+            #{info.consult},
+            #{info.wechat},
+            #{info.phoneConfirm},
+            #{info.phoneConnect},
+            #{info.consultEffective},
+            #{info.totalPlay},
+            #{info.validPlay},
+            #{info.wifiPlay},
+            #{info.playDurationSum},
+            #{info.play25FeedBreak},
+            #{info.play50FeedBreak},
+            #{info.play75FeedBreak},
+            #{info.play100FeedBreak},
+            #{info.advancedCreativePhoneClick},
+            #{info.advancedCreativeCounselClick},
+            #{info.advancedCreativeFormClick},
+            #{info.shareMaterial},
+            #{info.commentMaterial},
+            #{info.follow},
+            #{info.homeVisited},
+            #{info.iesChallengeClick},
+            #{info.iesMusicClick},
+            #{info.nextDayOpen},
+            #{info.nextDayOpenRate},
+            #{info.nextDayOpenCost},
+            #{info.imageMode},
+            #{info.materialId},
+            #{info.inventory},
+            #{info.activePayAmount},
+            #{info.validPlayCost},
+            #{info.advancedCreativeCouponAddition},
+            #{info.convertMaterial},
+            #{info.activePayCost},
+            #{info.download},
+            #{info.cpa},
+            #{info.cpc},
+            #{info.locationClick},
+            #{info.playOverRate},
+            #{info.ctr},
+            #{info.cpm},
+            #{info.wifiPlayRate},
+            #{info.likeMaterial},
+            #{info.activePayRate},
+            #{info.activeCost},
+            #{info.gameAddictionCost},
+            #{info.gameAddiction},
+            #{info.activeRate},
+            #{info.playDuration_10s},
+            #{info.phoneEffective},
+            #{info.gameAddictionRate},
+            #{info.activeRegisterRate},
+            #{info.averageVideoPlay},
+            #{info.downloadFinishCost},
+            #{info.playDuration_3s},
+            #{info.activeRegisterCost},
+            #{info.showMaterial},
+            #{info.convertRate},
+            #{info.downloadFinishRate},
+            #{info.installFinishRate},
+            #{info.coupon},
+            #{info.couponSinglePage},
+            #{info.playOver},
+            #{info.downloadStartCost},
+            #{info.message},
+            #{info.playDuration},
+            #{info.validPlayRate},
+            #{info.averagePlayTimePerPlay},
+            #{info.convertCost},
+            #{info.convertShowRate},
+            #{info.installFinishCost},
+            #{info.downloadStartRate}
+            )
+        </foreach>
+    </insert>
 
 
 </mapper>

+ 12 - 6
module-toutiao/src/main/java/cn/com/ctop/toutiao/modules/report/service/impl/BytedanceReportServiceImpl.java

@@ -812,6 +812,7 @@ public class BytedanceReportServiceImpl implements IBytedanceReportService {
                 }
 
                 List<BytedanceReportMaterialDaily> bytedanceReportMaterialDailyList = new ArrayList<>();
+                List<BytedanceReportMaterialDaily> bytedanceReportImageDailyList = new ArrayList<>();
                 for (int i = 0; i < jsonArrayay.size(); i++) {
                     BytedanceReportMaterialDaily daily = new BytedanceReportMaterialDaily();
                     daily.setAccountId(accountId);
@@ -822,7 +823,6 @@ public class BytedanceReportServiceImpl implements IBytedanceReportService {
                         daily.setMaterialId(dimensions.getLong("material_id"));
                         daily.setInventory(dimensions.getString("inventory"));
                         daily.setStatDatetime(dimensions.getDate("stat_datetime") == null ? null : DateUtils.formatDate(dimensions.getDate("stat_datetime"), "yyyy-MM-dd"));
-
                         JSONObject metrics = detailJson.getJSONObject("metrics");
                         daily.setActivePayAmount(metrics.getInteger("active_pay_amount"));
                         daily.setValidPlayCost(metrics.getBigDecimal("valid_play_cost"));
@@ -915,13 +915,19 @@ public class BytedanceReportServiceImpl implements IBytedanceReportService {
                         daily.setInAppUv(metrics.getInteger("in_app_uv"));
                         daily.setRegister(metrics.getInteger("register"));
                         daily.setConvertCost(metrics.getBigDecimal("convert_cost"));
-//                        if(){
-//
-//                        }
-                        bytedanceReportMaterialDailyList.add(daily);
+                        if(!daily.getImageMode().equals("CREATIVE_IMAGE_MODE_VIDEO")||!daily.getImageMode().equals("CREATIVE_IMAGE_MODE_VIDEO_VERTICAL")||!daily.getImageMode().equals("CREATIVE_IMAGE_MODE_UNION_SPLASH_VIDEO")||!daily.getImageMode().equals("MATERIAL_IMAGE_MODE_TITLE")){
+                            bytedanceReportImageDailyList.add(daily);
+                        }else{
+                            bytedanceReportMaterialDailyList.add(daily);
+                        }
                     }
                 }
-                bytedanceReportMaterialDailyMapper.replaceIntoBatch(bytedanceReportMaterialDailyList);
+                if(!bytedanceReportMaterialDailyList.isEmpty()){
+                    bytedanceReportMaterialDailyMapper.replaceIntoBatch(bytedanceReportMaterialDailyList);
+                }
+                if(!bytedanceReportImageDailyList.isEmpty()){
+                    bytedanceReportMaterialDailyMapper.replaceImageBatch(bytedanceReportImageDailyList);
+                }
                 if (currentPage >= totalPage) {
                     log.info("头条素材报表当前accountId为:{}  {}~{},接口数据拉取成功" , accountId, startDate,endDate);
                     return 1;