yumeng 4 gadi atpakaļ
vecāks
revīzija
01c80359fe

+ 2 - 0
module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/batch/mapper/KuaiShouReportDailyMaterialMapper.java

@@ -27,4 +27,6 @@ public interface KuaiShouReportDailyMaterialMapper extends BaseMapper<KuaiShouRe
     List<KuaiShouReportDailyMaterialVo> getPhotoListByDate(@Param("statDate") String statDate);
 
     List<KuaiShouVideoGetVo> getVideoList(Map<String, Object> requestMap);
+
+    void batchReplace(@Param("addList") List<KuaiShouReportDailyMaterial> addList);
 }

+ 133 - 0
module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/batch/mapper/xml/KuaiShouReportDailyMaterialMapper.xml

@@ -1,6 +1,139 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="cn.com.ctop.kuaishou.modules.batch.mapper.KuaiShouReportDailyMaterialMapper">
+    <insert id="batchReplace">
+        replace into ctop_kuaishou_report_daily_material(
+        account_id,
+        photo_id,
+        channel_type,
+        signature,
+        image_token,
+        cover_url,
+        photo_url,
+        creative_material_type_string,
+        ad_scene,
+        charge,
+        photo_show,
+        aclick,
+        bclick,
+        photo_share,
+        photo_comment,
+        photo_like,
+        follow,
+        cancel_follow,
+        report,
+        block,
+        negative,
+        download_started,
+        download_completed,
+        activation,
+        submit,
+        stat_date,
+        photo_click,
+        photo_click_ratio,
+        action_ratio,
+        impression_1k_cost,
+        photo_click_cost,
+        action_cost,
+        event_pay_first_day,
+        event_pay_purchase_amount_first_day,
+        event_pay_first_day_roi,
+        event_pay,
+        event_pay_purchase_amount,
+        event_pay_roi,
+        event_register,
+        event_register_cost,
+        event_register_ratio,
+        event_jin_jian_app,
+        event_jin_jian_app_cost,
+        event_credit_grant_app,
+        event_credit_grant_app_cost,
+        event_credit_grant_app_ratio,
+        event_order_paid,
+        event_order_paid_purchase_amount,
+        event_jin_jian_landing_page,
+        event_jin_jian_landing_page_cost,
+        event_credit_grant_landing_page,
+        event_credit_grant_landing_page_cost,
+        event_credit_grant_landing_ratio,
+        event_next_day_stay_cost,
+        event_next_day_stay_ratio,
+        form_action_ratio,
+        event_order_paid_cost,
+        event_next_day_stay,
+        form_cost,
+        form_count,
+        play_3s_ratio
+        )
+        values
+        <foreach collection="addList" item="material" separator=",">
+            (
+            #{material.accountId},
+            #{material.photoId},
+            #{material.channelType},
+            #{material.signature},
+            #{material.imageToken},
+            #{material.coverUrl},
+            #{material.photoUrl},
+            #{material.creativeMaterialTypeString},
+            #{material.adScene},
+            #{material.charge},
+            #{material.photoShow},
+            #{material.aclick},
+            #{material.bclick},
+            #{material.photoShare},
+            #{material.photoComment},
+            #{material.photoLike},
+            #{material.follow},
+            #{material.cancelFollow},
+            #{material.report},
+            #{material.block},
+            #{material.negative},
+            #{material.downloadStarted},
+            #{material.downloadCompleted},
+            #{material.activation},
+            #{material.submit},
+            #{material.statDate},
+            #{material.photoClick},
+            #{material.photoClickRatio},
+            #{material.actionRatio},
+            #{material.impression1kCost},
+            #{material.photoClickCost},
+            #{material.actionCost},
+            #{material.eventPayFirstDay},
+            #{material.eventPayPurchaseAmountFirstDay},
+            #{material.eventPayFirstDayRoi},
+            #{material.eventPay},
+            #{material.eventPayPurchaseAmount},
+            #{material.eventPayRoi},
+            #{material.eventRegister},
+            #{material.eventRegisterCost},
+            #{material.eventRegisterRatio},
+            #{material.eventJinJianApp},
+            #{material.eventJinJianAppCost},
+            #{material.eventCreditGrantApp},
+            #{material.eventCreditGrantAppCost},
+            #{material.eventCreditGrantAppRatio},
+            #{material.eventOrderPaid},
+            #{material.eventOrderPaidPurchaseAmount},
+            #{material.eventJinJianLandingPage},
+            #{material.eventJinJianLandingPageCost},
+            #{material.eventCreditGrantLandingPage},
+            #{material.eventCreditGrantLandingPageCost},
+            #{material.eventCreditGrantLandingRatio},
+            #{material.eventNextDayStayCost},
+            #{material.eventNextDayStayRatio},
+            #{material.formActionRatio},
+            #{material.eventOrderPaidCost},
+            #{material.eventNextDayStay},
+            #{material.formCost},
+            #{material.formCount},
+            #{material.play3sRatio}
+            )
+        </foreach>
+
+    </insert>
+
 
     <insert id="loadMaterialDailyReport">
 		LOAD DATA local INFILE  #{localPath}

+ 4 - 0
module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/batch/service/IKuaiShouReportDailyMaterialService.java

@@ -16,4 +16,8 @@ import java.util.Map;
 public interface IKuaiShouReportDailyMaterialService extends IService<KuaiShouReportDailyMaterial> {
 
     List<KuaiShouVideoGetVo> getVideoList(Map<String, Object> requestMap);
+
+
+    void getMaterialReportByAccountIdAndStatDate(Long accountId, String token, String startDate, String endDate, Integer page);
+
 }

+ 72 - 0
module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/batch/service/impl/KuaiShouReportDailyMaterialServiceImpl.java

@@ -1,13 +1,21 @@
 package cn.com.ctop.kuaishou.modules.batch.service.impl;
 
+import cn.com.ctop.common.module.utils.Check;
+import cn.com.ctop.common.module.utils.HttpUtils;
 import cn.com.ctop.kuaishou.modules.batch.entity.vo.KuaiShouVideoGetVo;
 import cn.com.ctop.kuaishou.modules.batch.mapper.KuaiShouReportDailyMaterialMapper;
 import cn.com.ctop.kuaishou.modules.batch.service.IKuaiShouReportDailyMaterialService;
 import cn.com.ctop.kuaishou.modules.report.entity.KuaiShouReportDailyMaterial;
+import cn.com.ctop.kuaishou.modules.report.entity.VideoGetvo;
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
+import java.util.ArrayList;
+import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 
@@ -18,6 +26,7 @@ import java.util.Map;
  * @version V1.0
  * @date 2020-09-09
  */
+@Slf4j
 @Service
 public class KuaiShouReportDailyMaterialServiceImpl extends ServiceImpl<KuaiShouReportDailyMaterialMapper, KuaiShouReportDailyMaterial> implements IKuaiShouReportDailyMaterialService {
     @Autowired
@@ -27,4 +36,67 @@ public class KuaiShouReportDailyMaterialServiceImpl extends ServiceImpl<KuaiShou
     public List<KuaiShouVideoGetVo> getVideoList(Map<String, Object> requestMap) {
         return dailyMaterialMapper.getVideoList(requestMap);
     }
+
+    /**
+     * 获取素材数据
+     *
+     * @param accountId
+     * @param startDate
+     * @param endDate
+     */
+    @Override
+    public void getMaterialReportByAccountIdAndStatDate(Long accountId, String token, String startDate, String endDate, Integer page) {
+        String url = "https://ad.e.kuaishou.com/rest/openapi/v1/report/material_report";
+        Map<String, String> headers = new HashMap<>();
+        headers.put("Content-Type", "application/json");
+        headers.put("Access-Token", token);
+        Map<String, Object> param = new HashMap<>();
+        param.put("start_date", startDate);
+        param.put("end_date", endDate);
+        param.put("advertiser_id", accountId);
+        param.put("temporal_granularity", "DAILY");
+        param.put("view_type", 5);
+        param.put("page_size", 1000);
+        param.put("page", page);
+
+        String result = HttpUtils.httpPostRequest(url, param, headers);
+        System.err.println(result);
+        JSONObject resultJson = JSONObject.parseObject(result);
+        if (Check.isNull(resultJson)) {
+            return;
+        }
+
+        Integer total_count = resultJson.getInteger("total_count");
+        if (total_count == 0) {
+            return;
+        }
+        JSONArray details = resultJson.getJSONArray("details");
+        if (Check.isNull(details)) {
+            return;
+        }
+
+        List<KuaiShouReportDailyMaterial> addList = new ArrayList<>();
+        long l1 = System.currentTimeMillis();
+        for (int i = 0; i < details.size(); i++) {
+            JSONObject detailJson = details.getJSONObject(i);
+            detailJson.put("photo_like", detailJson.getInteger("like"));
+            detailJson.put("photo_share", detailJson.getInteger("share"));
+            detailJson.put("photo_comment", detailJson.getInteger("comment"));
+            KuaiShouReportDailyMaterial material = JSONObject.toJavaObject(detailJson, KuaiShouReportDailyMaterial.class);
+            VideoGetvo videoGetvo = dailyMaterialMapper.getVideoGetByPhotoId(material.getPhotoId());
+            if (!Check.isNull(videoGetvo)) {
+                material.setChannelType(videoGetvo.getChannelType());
+                material.setSignature(videoGetvo.getSignature());
+            }
+            material.setAccountId(accountId);
+            addList.add(material);
+        }
+        System.err.println("数据组装时间:" + (System.currentTimeMillis() - l1));
+
+        long l2 = System.currentTimeMillis();
+        dailyMaterialMapper.batchReplace(addList);
+        System.err.println("数据入库时间:" + (System.currentTimeMillis() - l2));
+        getMaterialReportByAccountIdAndStatDate(accountId, token, startDate, endDate, page + 1);
+
+    }
 }