浏览代码

Merge branch 'V1.1.1'

syh 4 年之前
父节点
当前提交
74b581941f
共有 19 个文件被更改,包括 475 次插入177 次删除
  1. 41 0
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/controller/TestController.java
  2. 37 13
      jeecg-boot-module-system/src/test/java/org/jeecg/SampleTest.java
  3. 2 0
      module-common/src/main/java/cn/com/ctop/common/module/mapper/UserAllocationMapper.java
  4. 12 0
      module-common/src/main/java/cn/com/ctop/common/module/mapper/xml/UserAllocationMapper.xml
  5. 2 0
      module-common/src/main/java/cn/com/ctop/common/module/service/IUserAllocationService.java
  6. 5 2
      module-common/src/main/java/cn/com/ctop/common/module/service/impl/UserAllocationServiceImpl.java
  7. 1 1
      module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/ai/service/IAiKuaishouNewCreateCampaign.java
  8. 2 2
      module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/ai/service/impl/AiKuaishouNewCreateCampaignServiceImpl.java
  9. 1 1
      module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/batch/service/IKuaishouVideoRelateCreativesService.java
  10. 5 2
      module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/batch/service/impl/KuaishouVideoRelateCreativesServiceImpl.java
  11. 56 0
      module-toutiao/src/main/java/cn/com/ctop/toutiao/modules/report/entity/BytedanceAccountReportTaskRecord.java
  12. 14 0
      module-toutiao/src/main/java/cn/com/ctop/toutiao/modules/report/mapper/BytedanceAccountReportTaskRecordMapper.java
  13. 5 0
      module-toutiao/src/main/java/cn/com/ctop/toutiao/modules/report/mapper/xml/BytedanceAccountReportTaskRecordMapper.xml
  14. 17 0
      module-toutiao/src/main/java/cn/com/ctop/toutiao/modules/report/service/IBytedanceAccountReportTaskRecordService.java
  15. 3 0
      module-toutiao/src/main/java/cn/com/ctop/toutiao/modules/report/service/IBytedanceReportService.java
  16. 3 0
      module-toutiao/src/main/java/cn/com/ctop/toutiao/modules/report/service/IReportService.java
  17. 32 0
      module-toutiao/src/main/java/cn/com/ctop/toutiao/modules/report/service/impl/BytedanceAccountReportTaskRecordServiceImpl.java
  18. 172 155
      module-toutiao/src/main/java/cn/com/ctop/toutiao/modules/report/service/impl/BytedanceReportServiceImpl.java
  19. 65 1
      module-toutiao/src/main/java/cn/com/ctop/toutiao/modules/report/service/impl/ReportServiceImpl.java

+ 41 - 0
jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/controller/TestController.java

@@ -14,6 +14,8 @@ import cn.com.ctop.kuaishou.modules.graphql.service.IKuaishouWebInterfaceService
 import cn.com.ctop.kuaishou.modules.report.service.IKuaiShouDailyAgentService;
 import cn.com.ctop.toutiao.modules.material.service.IByteDanceAdvertiserDataService;
 import cn.com.ctop.toutiao.modules.material.service.IBytedanceEffectVideoInfoService;
+import cn.com.ctop.toutiao.modules.report.entity.BytedanceAccountReportTaskRecord;
+import cn.com.ctop.toutiao.modules.report.mapper.BytedanceReportMaterialDailyMapper;
 import cn.com.ctop.toutiao.modules.report.service.*;
 import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
@@ -29,11 +31,13 @@ import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
 
+import javax.annotation.Resource;
 import java.io.IOException;
 import java.io.InputStream;
 import java.text.ParseException;
 import java.text.SimpleDateFormat;
 import java.util.*;
+import java.util.concurrent.CountDownLatch;
 import java.util.concurrent.ExecutorService;
 import java.util.concurrent.Executors;
 
@@ -94,6 +98,43 @@ public class TestController {
     private IKuaiShouDailyAgentService dailyAgentService;
     @Autowired
     private IKuaishouTemplateService templateService;
+    @Autowired
+    private IBytedanceAccountReportTaskRecordService reportTaskRecordService;
+    @Resource
+    private BytedanceReportMaterialDailyMapper bytedanceReportMaterialDailyMapper;
+
+    @GetMapping("/getBytedanceMatReport")
+    public Map<String,Object>getData(){
+        List<BytedanceAccountReportTaskRecord>  records = reportTaskRecordService.listByParams(100,"ACCOUNT_DAILY");
+        executorService = Executors.newFixedThreadPool(1);
+        CountDownLatch countDownLatch = new CountDownLatch(records.size());
+        records.forEach(record -> executorService.submit(() -> {
+            try {
+//                reportService.getAdvertiserReport(record, CtopAdConstant.BYTEDANCE_REPORT_TYPE_DAILY);
+//                log.info("账户数据获取完成:account:{},时间:{}-{}",record.getAccountId(),record.getStartDate(),record.getEndDate());
+                bytedanceReportService.bytedanceMaterialReportV2(record);
+                log.info("素材数据获取完成:account:{},时间:{}-{}",record.getAccountId(),record.getStartDate(),record.getEndDate());
+            } catch (Exception e) {
+
+            } finally {
+                countDownLatch.countDown();
+            }
+        }));
+        try {
+            countDownLatch.await();
+        } catch (InterruptedException e) {
+            e.printStackTrace();
+        }
+        System.out.println("数据获取完成");
+        bytedanceReportMaterialDailyMapper.updateImageReportCode();
+        bytedanceReportMaterialDailyMapper.updateImageReportProjectId();
+        bytedanceReportMaterialDailyMapper.updateImageReportProjectName();
+        bytedanceReportMaterialDailyMapper.updateImageReportPlaneId();
+        bytedanceReportMaterialDailyMapper.updateImageReportPlaneName();
+        Map<String,Object> result =  new HashMap<>();
+        ResultMapUtils.setResultMap(new HashMap<>(),StatusCode.COMMON_SUCCESS);
+        return result;
+    }
 
 
     @GetMapping(value = "/updateTemplate")

+ 37 - 13
jeecg-boot-module-system/src/test/java/org/jeecg/SampleTest.java

@@ -21,6 +21,8 @@ import cn.com.ctop.oa.modules.service.IWechatCheckinDataService;
 import cn.com.ctop.oa.modules.service.IWechatNoListService;
 import cn.com.ctop.oa.modules.service.IWechatUserListService;
 import cn.com.ctop.toutiao.modules.material.service.IByteDanceAdvertiserDataService;
+import cn.com.ctop.toutiao.modules.report.entity.BytedanceAccountReportTaskRecord;
+import cn.com.ctop.toutiao.modules.report.mapper.BytedanceReportMaterialDailyMapper;
 import cn.com.ctop.toutiao.modules.report.service.*;
 import com.alibaba.fastjson.JSONArray;
 import lombok.extern.slf4j.Slf4j;
@@ -28,11 +30,13 @@ import org.apache.catalina.User;
 import org.jeecg.common.util.DateUtils;
 import org.junit.Test;
 import org.junit.runner.RunWith;
+import org.openqa.selenium.By;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.boot.test.context.SpringBootTest;
 import org.springframework.test.context.ActiveProfiles;
 import org.springframework.test.context.junit4.SpringRunner;
 
+import javax.annotation.Resource;
 import java.text.ParseException;
 import java.text.SimpleDateFormat;
 import java.util.Date;
@@ -388,16 +392,35 @@ public class SampleTest {
     @Autowired
     private IRuleKuaiShouPlanService ruleKuaiShouPlanService;
 
+    @Autowired
+    private IBytedanceAccountReportTaskRecordService reportTaskRecordService;
     @Test
     public void execute() {
-        List<UserAllocation>  allocations = allocationService.getByMediaId("3");
+        List<UserAllocation>  allocations = allocationService.listByMediaId("3",0);
         for (UserAllocation allocation:allocations) {
-            CtopOauthToken token = tokenService.getTokenByAccountId(allocation.getAccountId());
-//            load12Data(token);
-            load12AccountData(token);
+            BytedanceAccountReportTaskRecord reportTaskRecord1 = new BytedanceAccountReportTaskRecord(allocation.getAccountId(),"2020-10-01","2020-10-31");
+            reportTaskRecordService.save(reportTaskRecord1);
+            BytedanceAccountReportTaskRecord reportTaskRecord2 = new BytedanceAccountReportTaskRecord(allocation.getAccountId(),"2020-11-01","2020-11-30");
+            reportTaskRecordService.save(reportTaskRecord2);
+            BytedanceAccountReportTaskRecord reportTaskRecord3 = new BytedanceAccountReportTaskRecord(allocation.getAccountId(),"2020-12-01","2020-12-31");
+            reportTaskRecordService.save(reportTaskRecord3);
         }
     }
 
+    @Test
+    public void loadBDAccoutData() {
+        CtopOauthToken token2 = tokenService.getTokenByAccountId(1674206482908163L);
+        bytedanceReportService.bytedanceMaterialReport(token2, "2020-10-14", "2020-10-14");
+        bytedanceReportMaterialDailyMapper.updateImageReportCode();
+        bytedanceReportMaterialDailyMapper.updateImageReportProjectId();
+        bytedanceReportMaterialDailyMapper.updateImageReportProjectName();
+        bytedanceReportMaterialDailyMapper.updateImageReportPlaneId();
+        bytedanceReportMaterialDailyMapper.updateImageReportPlaneName();
+    }
+
+    @Resource
+    private BytedanceReportMaterialDailyMapper bytedanceReportMaterialDailyMapper;
+
     private void load12AccountData(CtopOauthToken token) {
         reportService.getAdvertiserReport(token, DateUtils.parseDate("2020-10-01", "yyyy-MM-dd"), DateUtils.parseDate("2020-10-31", "yyyy-MM-dd"), CtopAdConstant.BYTEDANCE_REPORT_TYPE_DAILY);
         reportService.getAdvertiserReport(token, DateUtils.parseDate("2020-11-01", "yyyy-MM-dd"), DateUtils.parseDate("2020-11-30", "yyyy-MM-dd"), CtopAdConstant.BYTEDANCE_REPORT_TYPE_DAILY);
@@ -405,13 +428,10 @@ public class SampleTest {
     }
 
     private void load12Data(CtopOauthToken token) {
-//        bytedanceReportService.bytedanceMaterialReport(token, "2020-10-01", "2020-10-05");
-//        bytedanceReportService.bytedanceMaterialReport(token, "2020-10-06", "2020-10-10");
-//        bytedanceReportService.bytedanceMaterialReport(token, "2020-10-11", "2020-10-15");
-//        bytedanceReportService.bytedanceMaterialReport(token, "2020-10-16", "2020-10-20");
-//        bytedanceReportService.bytedanceMaterialReport(token, "2020-10-21", "2020-10-25");
-//        bytedanceReportService.bytedanceMaterialReport(token, "2020-10-26", "2020-10-31");
-        bytedanceReportService.bytedanceMaterialReport(token, "2020-10-03", "2020-10-04");
+        bytedanceReportService.bytedanceMaterialReport(token, "2020-10-11", "2020-10-13");
+        bytedanceReportService.bytedanceMaterialReport(token, "2020-10-14", "2020-10-16");
+        bytedanceReportService.bytedanceMaterialReport(token, "2020-10-17", "2020-10-19");
+        bytedanceReportService.bytedanceMaterialReport(token, "2020-10-20", "2020-10-21");
     }
 
     @Autowired
@@ -481,11 +501,15 @@ public class SampleTest {
 //        if (null == accountTargetTemplates || accountTargetTemplates.isEmpty()) {
 //            return;
 //        }
+
+        AiKuaishouAccountTargetTemplate accountTargetTemplate0 = aiKuaishouAccountTargetTemplateService.getById(1);
+        aiKuaishouNewCreateCampaign.kuaishouAiAddNewMaterialCreativity(accountTargetTemplate0,50);
+
         AiKuaishouAccountTargetTemplate accountTargetTemplate1 = aiKuaishouAccountTargetTemplateService.getById(30002);
-        aiKuaishouNewCreateCampaign.kuaishouAiAddNewMaterialCreativity(accountTargetTemplate1);
+        aiKuaishouNewCreateCampaign.kuaishouAiAddNewMaterialCreativity(accountTargetTemplate1,50);
 
         AiKuaishouAccountTargetTemplate accountTargetTemplate2 = aiKuaishouAccountTargetTemplateService.getById(30001);
-        aiKuaishouNewCreateCampaign.kuaishouAiAddNewMaterialCreativity(accountTargetTemplate2);
+        aiKuaishouNewCreateCampaign.kuaishouAiAddNewMaterialCreativity(accountTargetTemplate2,50);
     }
 
     @Test

+ 2 - 0
module-common/src/main/java/cn/com/ctop/common/module/mapper/UserAllocationMapper.java

@@ -40,4 +40,6 @@ public interface UserAllocationMapper extends BaseMapper<UserAllocation> {
     List<Long>  queryAccountsByDeleteComment();
 
     String getCompanyNameByUserId(@Param("planId") String planId);
+
+    List<UserAllocation> listByMediaId(@Param("mediaId")String mediaId, @Param("accountStatus")Integer accountStatus);
 }

+ 12 - 0
module-common/src/main/java/cn/com/ctop/common/module/mapper/xml/UserAllocationMapper.xml

@@ -124,6 +124,18 @@
     <select id="getCompanyNameByUserId" resultType="java.lang.String">
         select company_name from user_company where user_id = #{planId} limit 1
     </select>
+    <select id="listByMediaId" resultType="cn.com.ctop.common.module.entity.UserAllocation">
+        select a.* from ctop_user_allocation a
+        left join ctop_project p on p.id = a.project_id
+        where
+            1=1
+            <if test="null!=accountStatus">
+                and a.account_status = #{accountStatus}
+            </if>
+        <if test="null!=mediaId">
+            and p.media_id = #{mediaId}
+        </if>
+    </select>
 
 
 </mapper>

+ 2 - 0
module-common/src/main/java/cn/com/ctop/common/module/service/IUserAllocationService.java

@@ -26,6 +26,8 @@ public interface IUserAllocationService extends IService<UserAllocation> {
 
     List<UserAllocation> getByMediaId(String mediaId);
 
+    List<UserAllocation> listByMediaId(String mediaId, int accountStatus);
+
     String getAdvertiserIdByAccountId(Long accountId);
 
     List<JSONObject> getAccountListByProject(Long projectId);

+ 5 - 2
module-common/src/main/java/cn/com/ctop/common/module/service/impl/UserAllocationServiceImpl.java

@@ -92,12 +92,15 @@ public class UserAllocationServiceImpl extends ServiceImpl<UserAllocationMapper,
         if ("".equals(mediaId)) {
             queryWrapper.eq("media_id", mediaId);
         }
-        queryWrapper.eq("account_status",0);
-        queryWrapper.orderByDesc("id");
         return this.list(queryWrapper);
     }
 
     @Override
+    public List<UserAllocation> listByMediaId(String mediaId,int accountStatus) {
+        return userAllocationMapper.listByMediaId(mediaId,accountStatus);
+    }
+
+    @Override
     public String getAdvertiserIdByAccountId(Long accountId) {
         return userAllocationMapper.queryAdvertiserId(accountId);
     }

+ 1 - 1
module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/ai/service/IAiKuaishouNewCreateCampaign.java

@@ -7,5 +7,5 @@ public interface IAiKuaishouNewCreateCampaign {
 
     void kuaishouAiAdsHotMaterialCreativity(AiKuaishouAccountTargetTemplate targetTemplate);
 
-    void kuaishouAiAddNewMaterialCreativity(AiKuaishouAccountTargetTemplate targetTemplate);
+    void kuaishouAiAddNewMaterialCreativity(AiKuaishouAccountTargetTemplate targetTemplate,Integer matNum);
 }

+ 2 - 2
module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/ai/service/impl/AiKuaishouNewCreateCampaignServiceImpl.java

@@ -226,7 +226,7 @@ public class AiKuaishouNewCreateCampaignServiceImpl implements IAiKuaishouNewCre
     @Autowired
     private IKuaishouVideoRelateCreativesService relateCreativesService;
     @Override
-    public void kuaishouAiAddNewMaterialCreativity(AiKuaishouAccountTargetTemplate targetTemplate) {
+    public void kuaishouAiAddNewMaterialCreativity(AiKuaishouAccountTargetTemplate targetTemplate,Integer matNum) {
         Long accountId = targetTemplate.getAccountId();
         CtopOauthToken token = tokenService.getOauthTokenByAccountId(accountId.toString());
         if(null == token){
@@ -236,7 +236,7 @@ public class AiKuaishouNewCreateCampaignServiceImpl implements IAiKuaishouNewCre
         kuaishouInterfaceService.getVideoList(token, DateUtils.date2Str(),DateUtils.date2Str());
 
         //获取创意关联数为0的素材
-        List<KuaishouVideoRelateCreatives> kuaishouVideoRelateCreatives = relateCreativesService.listByParams(accountId);
+        List<KuaishouVideoRelateCreatives> kuaishouVideoRelateCreatives = relateCreativesService.listByParams(accountId,matNum);
         if(null == kuaishouVideoRelateCreatives||kuaishouVideoRelateCreatives.isEmpty()){
             log.info("账户:{}, 不存在未创建创意素材",accountId);
             return;

+ 1 - 1
module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/batch/service/IKuaishouVideoRelateCreativesService.java

@@ -23,7 +23,7 @@ public interface IKuaishouVideoRelateCreativesService extends IService<KuaishouV
 
     List<JSONObject> getVideoListByMap(Map<String, Object> requestMap);
 
-    List<KuaishouVideoRelateCreatives> listByParams(Long accountId);
+    List<KuaishouVideoRelateCreatives> listByParams(Long accountId,Integer matNum);
 
     List<JSONObject> getVideoZeroListByMap(Map<String, Object> requestMap);
 

+ 5 - 2
module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/batch/service/impl/KuaishouVideoRelateCreativesServiceImpl.java

@@ -150,14 +150,17 @@ public class KuaishouVideoRelateCreativesServiceImpl extends ServiceImpl<Kuaisho
     }
 
     @Override
-    public List<KuaishouVideoRelateCreatives> listByParams(Long accountId) {
+    public List<KuaishouVideoRelateCreatives> listByParams(Long accountId,Integer matNum) {
         QueryWrapper<KuaishouVideoRelateCreatives> queryWrapper = new QueryWrapper<>();
         if(null!=accountId&&accountId!=0){
             queryWrapper.eq("account_id",accountId);
         }
+        if(null == matNum||matNum == 0){
+            matNum = 10;
+        }
         queryWrapper.eq("creative_count",0);
         queryWrapper.orderByDesc("stat_date");
-        queryWrapper.last("limit 10");
+        queryWrapper.last("limit "+matNum);
         return this.list(queryWrapper);
     }
 

+ 56 - 0
module-toutiao/src/main/java/cn/com/ctop/toutiao/modules/report/entity/BytedanceAccountReportTaskRecord.java

@@ -0,0 +1,56 @@
+package cn.com.ctop.toutiao.modules.report.entity;
+
+import java.io.Serializable;
+import java.util.Date;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.annotation.TableField;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import org.springframework.format.annotation.DateTimeFormat;
+import org.jeecgframework.poi.excel.annotation.Excel;
+
+/**
+ * 头条账户报表任务执行记录信息
+ * @author jeecg-boot
+ * @date   2021-01-20
+ * @version V1.0
+ */
+@Data
+@TableName("ctop_bytedance_account_report_task_record")
+@EqualsAndHashCode(callSuper = false)
+public class BytedanceAccountReportTaskRecord {
+
+	/**id*/
+	@TableId(type = IdType.AUTO)
+	private Long id;
+	/**accountId*/
+	private Long accountId;
+	/**startDate*/
+	private String startDate;
+	/**endDate*/
+	private String endDate;
+	/**status*/
+	private Integer status;
+	/**createTime*/
+	private Date createTime;
+	/**updateTime*/
+	private Date updateTime;
+	private String type;
+
+	public BytedanceAccountReportTaskRecord(Long accountId, String startDate, String endDate) {
+		this.accountId=accountId;
+		this.startDate = startDate;
+		this.endDate = endDate;
+		this.status = 1;
+		this.type = "ACCOUNT_DAILY";
+		Date now = new Date();
+		this.createTime = now;
+		this.updateTime = now;
+	}
+}

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

@@ -0,0 +1,14 @@
+package cn.com.ctop.toutiao.modules.report.mapper;
+
+import cn.com.ctop.toutiao.modules.report.entity.BytedanceAccountReportTaskRecord;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * 头条账户报表任务执行记录信息
+ * @author: jeecg-boot
+ * @date:   2021-01-20
+ * @cersion: V1.0
+ */
+public interface BytedanceAccountReportTaskRecordMapper extends BaseMapper<BytedanceAccountReportTaskRecord> {
+
+}

+ 5 - 0
module-toutiao/src/main/java/cn/com/ctop/toutiao/modules/report/mapper/xml/BytedanceAccountReportTaskRecordMapper.xml

@@ -0,0 +1,5 @@
+<?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.toutiao.modules.report.mapper.BytedanceAccountReportTaskRecordMapper">
+
+</mapper>

+ 17 - 0
module-toutiao/src/main/java/cn/com/ctop/toutiao/modules/report/service/IBytedanceAccountReportTaskRecordService.java

@@ -0,0 +1,17 @@
+package cn.com.ctop.toutiao.modules.report.service;
+
+import cn.com.ctop.toutiao.modules.report.entity.BytedanceAccountReportTaskRecord;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+import java.util.List;
+
+/**
+ * @Description: 头条账户报表任务执行记录信息
+ * @Author: jeecg-boot
+ * @Date:   2021-01-20
+ * @Version: V1.0
+ */
+public interface IBytedanceAccountReportTaskRecordService extends IService<BytedanceAccountReportTaskRecord> {
+
+    List<BytedanceAccountReportTaskRecord> listByParams(Integer status, String reportType);
+}

+ 3 - 0
module-toutiao/src/main/java/cn/com/ctop/toutiao/modules/report/service/IBytedanceReportService.java

@@ -1,6 +1,7 @@
 package cn.com.ctop.toutiao.modules.report.service;
 
 import cn.com.ctop.common.module.entity.CtopOauthToken;
+import cn.com.ctop.toutiao.modules.report.entity.BytedanceAccountReportTaskRecord;
 import cn.com.ctop.toutiao.modules.report.entity.BytedanceReportMaterialRetry;
 import com.alibaba.fastjson.JSONObject;
 
@@ -38,4 +39,6 @@ public interface IBytedanceReportService {
     List<BytedanceReportMaterialRetry> getRetryList();
 
     int bytedanceVideoMaterialReport(CtopOauthToken token, String startDate, String endDate);
+
+    void bytedanceMaterialReportV2(BytedanceAccountReportTaskRecord record);
 }

+ 3 - 0
module-toutiao/src/main/java/cn/com/ctop/toutiao/modules/report/service/IReportService.java

@@ -1,6 +1,7 @@
 package cn.com.ctop.toutiao.modules.report.service;
 
 import cn.com.ctop.common.module.entity.CtopOauthToken;
+import cn.com.ctop.toutiao.modules.report.entity.BytedanceAccountReportTaskRecord;
 import com.alibaba.fastjson.JSONObject;
 
 import java.util.Date;
@@ -25,4 +26,6 @@ public interface IReportService {
     void getMaterialReportByPage(CtopOauthToken token, String startDate, String endDate, Integer pageNum);
 
     void loadBytedanceHistoryData(CtopOauthToken token);
+
+    void getAdvertiserReport(BytedanceAccountReportTaskRecord record, String bytedanceReportTypeDaily);
 }

+ 32 - 0
module-toutiao/src/main/java/cn/com/ctop/toutiao/modules/report/service/impl/BytedanceAccountReportTaskRecordServiceImpl.java

@@ -0,0 +1,32 @@
+package cn.com.ctop.toutiao.modules.report.service.impl;
+
+import cn.com.ctop.toutiao.modules.report.entity.BytedanceAccountReportTaskRecord;
+import cn.com.ctop.toutiao.modules.report.mapper.BytedanceAccountReportTaskRecordMapper;
+import cn.com.ctop.toutiao.modules.report.service.IBytedanceAccountReportTaskRecordService;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+/**
+ * 头条账户报表任务执行记录信息
+ * @author jeecg-boot
+ * @date   2021-01-20
+ * @version V1.0
+ */
+@Service
+public class BytedanceAccountReportTaskRecordServiceImpl extends ServiceImpl<BytedanceAccountReportTaskRecordMapper, BytedanceAccountReportTaskRecord> implements IBytedanceAccountReportTaskRecordService {
+
+    @Override
+    public List<BytedanceAccountReportTaskRecord> listByParams(Integer status, String reportType) {
+        QueryWrapper<BytedanceAccountReportTaskRecord> queryWrapper = new QueryWrapper<>();
+        if(null!=status){
+            queryWrapper.eq("status",status);
+        }
+        if(null!=reportType&&!"".equals(reportType)){
+            queryWrapper.eq("type",reportType);
+        }
+        return this.list(queryWrapper);
+    }
+}

文件差异内容过多而无法显示
+ 172 - 155
module-toutiao/src/main/java/cn/com/ctop/toutiao/modules/report/service/impl/BytedanceReportServiceImpl.java


+ 65 - 1
module-toutiao/src/main/java/cn/com/ctop/toutiao/modules/report/service/impl/ReportServiceImpl.java

@@ -28,6 +28,7 @@ import org.springframework.beans.factory.annotation.Value;
 import org.springframework.context.annotation.Primary;
 import org.springframework.stereotype.Service;
 
+import javax.annotation.Resource;
 import java.text.SimpleDateFormat;
 import java.util.ArrayList;
 import java.util.Date;
@@ -62,7 +63,7 @@ public class ReportServiceImpl implements IReportService {
     private IBytedanceCreativeDailyReportService creativeDailyReportService;
     @Autowired
     private IBytedanceCreativeHourlyReportService creativeHourlyReportService;
-    @Autowired
+    @Resource
     private BytedanceReportMaterialDailyMapper materialDailyMapper;
     @Autowired
     private IBytedanceReportService bytedanceReportService;
@@ -474,6 +475,58 @@ public class ReportServiceImpl implements IReportService {
         }
     }
 
+    @Override
+    public void getAdvertiserReport(BytedanceAccountReportTaskRecord record, String bytedanceReportTypeDaily) {
+        CtopOauthToken token  = tokenService.getTokenByAccountId(record.getAccountId());
+        if(null==token){
+            return;
+        }
+        var conditions = getTaskReportDTO(token, record.getStartDate(), record.getEndDate(), bytedanceReportTypeDaily);
+        getAdvertiserReportByPageV2(token, conditions,record);
+    }
+
+    @Autowired
+    private IBytedanceAccountReportTaskRecordService recordService;
+
+    private void getAdvertiserReportByPageV2(CtopOauthToken token, ByteDanceAdvertiserReportDTO conditions,BytedanceAccountReportTaskRecord record) {
+        SerializeConfig config = new SerializeConfig();
+        config.propertyNamingStrategy = PropertyNamingStrategy.SnakeCase;
+        JSONObject jsonObject = JSONObject.parseObject(JSON.toJSONString(conditions, config));
+        JSONObject getObject = getAdvertiserStat(token, jsonObject);
+        System.out.println(getObject);
+        if(null == getObject){
+            XxlJobHelper.log("头条广告主数据获取异常");
+            return;
+        }
+        Integer code = getObject.getInteger("code");
+        String message = getObject.getString("message");
+        if (null == code || code != 0) {
+            XxlJobHelper.log("头条广告主数据获取异常:{}", message);
+            return;
+        }
+        JSONArray dataArray = getObject.getJSONObject("data").getJSONArray("list");
+        if (null == dataArray || dataArray.isEmpty()) {
+            record.setStatus(100);
+            record.setUpdateTime(new Date());
+            recordService.updateById(record);
+            return;
+        }
+
+        for (int i = 0; i < dataArray.size(); i++) {
+            JSONObject data = dataArray.getJSONObject(i);
+            if (null != conditions.getTimeGranularity() && conditions.getTimeGranularity().equals(CtopAdConstant.BYTEDANCE_REPORT_TYPE_HOURLY)) {
+                BytedanceAdvertiserHourlyReport hourlyReport = new BytedanceAdvertiserHourlyReport(data);
+                advertiserHourlyReportService.saveOrUpdate(hourlyReport);
+            } else {
+                BytedanceAdvertiserDailyReport dailyReport = new BytedanceAdvertiserDailyReport(data);
+                advertiserDailyReportService.saveOrUpdate(dailyReport);
+            }
+        }
+        record.setStatus(100);
+        record.setUpdateTime(new Date());
+        recordService.updateById(record);
+    }
+
     private ByteDanceAdvertiserReportDTO getReportDTO(CtopOauthToken token, Date startDate, Date endDate, String bytedanceReportTypePl) {
         var conditions = new ByteDanceAdvertiserReportDTO();
         conditions.setAdvertiserId(token.getAccountId());
@@ -484,6 +537,17 @@ public class ReportServiceImpl implements IReportService {
         return conditions;
     }
 
+    private ByteDanceAdvertiserReportDTO getTaskReportDTO(CtopOauthToken token, String startDate, String endDate, String bytedanceReportTypePl) {
+        var conditions = new ByteDanceAdvertiserReportDTO();
+        conditions.setAdvertiserId(token.getAccountId());
+        conditions.setStartDate(startDate);
+        conditions.setEndDate(endDate);
+        conditions.setPageSize(1000);
+        conditions.setPage(1);
+        conditions.setTimeGranularity(bytedanceReportTypePl);
+        return conditions;
+    }
+
 
     private void getCreativeReportByPage(CtopOauthToken token, ByteDanceAdvertiserReportDTO conditions, int page) {
         conditions.setPage(page);