소스 검색

Merge remote-tracking branch 'origin/master'

songyh 3 년 전
부모
커밋
a02daf85f3
37개의 변경된 파일885개의 추가작업 그리고 332개의 파일을 삭제
  1. 1 1
      jeecg-boot-module-system/src/main/java/org/jeecg/config/Elasticsearch/ElasticsearchConfig.java
  2. 37 17
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/controller/MaterialInfoController.java
  3. 29 13
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/controller/MaterialTagController.java
  4. 74 45
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/controller/TestController.java
  5. 5 9
      jeecg-boot-module-system/src/test/java/org/jeecg/SampleTest.java
  6. 8 0
      module-common/src/main/java/cn/com/ctop/common/module/entity/RuleDataTargetKuaishou.java
  7. 4 11
      module-common/src/main/java/cn/com/ctop/common/module/entity/RuleDateUnitKuaishou.java
  8. 4 0
      module-common/src/main/java/cn/com/ctop/common/module/mapper/RuleDataTargetKuaishouMapper.java
  9. 4 1
      module-common/src/main/java/cn/com/ctop/common/module/mapper/RuleDateUnitKuaishouMapper.java
  10. 63 0
      module-common/src/main/java/cn/com/ctop/common/module/mapper/xml/RuleDataTargetKuaishouMapper.xml
  11. 57 0
      module-common/src/main/java/cn/com/ctop/common/module/mapper/xml/RuleDateUnitKuaishouMapper.xml
  12. 3 0
      module-common/src/main/java/cn/com/ctop/common/module/service/IRuleDataTargetKuaishouService.java
  13. 3 0
      module-common/src/main/java/cn/com/ctop/common/module/service/IRuleDataUnitKuaishouService.java
  14. 9 0
      module-common/src/main/java/cn/com/ctop/common/module/service/impl/RuleDataTargetKuaishouServiceImpl.java
  15. 12 1
      module-common/src/main/java/cn/com/ctop/common/module/service/impl/RuleDataUnitKuaishouServiceImpl.java
  16. 0 37
      module-job-bytedance/src/main/java/cn/com/ctop/job/bytedance/handler/SynchronousAccountTransactionDetailsJob.java
  17. 10 1
      module-job-kuaishou/src/main/java/cn/com/ctop/job/kuaishou/handler/KuaishouGroupJob.java
  18. 1 0
      module-job-kuaishou/src/main/java/cn/com/ctop/job/kuaishou/handler/KuaishouNowDateCreativeJob.java
  19. 4 6
      module-job-kuaishou/src/main/java/cn/com/ctop/job/kuaishou/handler/KuaishouNowDateGroupJob.java
  20. 5 4
      module-job-kuaishou/src/main/java/cn/com/ctop/job/kuaishou/handler/RuleKuaiShouDataTargetCleanJob.java
  21. 6 1
      module-job-kuaishou/src/main/java/cn/com/ctop/job/kuaishou/handler/RuleKuaiShouDataUnitCleanJob.java
  22. 45 0
      module-job-kuaishou/src/main/java/cn/com/ctop/job/kuaishou/handler/SynchronousAccountTransactionJob.java
  23. 5 15
      module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/ai/service/impl/KuaiShouCreateServiceImpl.java
  24. 4 0
      module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/batch/service/impl/KuaishouInterfaceServiceImpl.java
  25. 20 22
      module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/report/mapper/xml/NewMonitorMapper.xml
  26. 11 7
      module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/report/service/IRuleKuaiShouPlanService.java
  27. 26 18
      module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/report/service/impl/RuleKuaiShouPlanServiceImpl.java
  28. 45 8
      module-toutiao/src/main/java/cn/com/ctop/toutiao/modules/agent/controller/AgentManagementController.java
  29. 33 0
      module-toutiao/src/main/java/cn/com/ctop/toutiao/modules/agent/entity/TransactionDay.java
  30. 16 0
      module-toutiao/src/main/java/cn/com/ctop/toutiao/modules/agent/mapper/CtopAccountTransactionDayMapper.java
  31. 3 2
      module-toutiao/src/main/java/cn/com/ctop/toutiao/modules/agent/mapper/CtopAccountTransactionDetailsMapper.java
  32. 13 2
      module-toutiao/src/main/java/cn/com/ctop/toutiao/modules/agent/mapper/CtopAgentAccountMapper.java
  33. 30 0
      module-toutiao/src/main/java/cn/com/ctop/toutiao/modules/agent/mapper/xml/CtopAccountTransactionDayMapper.xml
  34. 4 3
      module-toutiao/src/main/java/cn/com/ctop/toutiao/modules/agent/mapper/xml/CtopAccountTransactionDetailsMapper.xml
  35. 31 4
      module-toutiao/src/main/java/cn/com/ctop/toutiao/modules/agent/mapper/xml/CtopAgentAccountMapper.xml
  36. 9 3
      module-toutiao/src/main/java/cn/com/ctop/toutiao/modules/agent/service/AgentManagementService.java
  37. 251 101
      module-toutiao/src/main/java/cn/com/ctop/toutiao/modules/agent/service/impl/AgentManagementServiceImpl.java

+ 1 - 1
jeecg-boot-module-system/src/main/java/org/jeecg/config/Elasticsearch/ElasticsearchConfig.java

@@ -18,7 +18,7 @@ import java.util.ArrayList;
  * @author: zzy
  * @date: 2021-07-12
  */
-@Configuration
+// @Configuration
 public class ElasticsearchConfig {
     @Value("${elasticsearch.address}")
     private String address;

+ 37 - 17
jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/controller/MaterialInfoController.java

@@ -1,3 +1,4 @@
+/*
 package org.jeecg.modules.ctop.controller;
 
 import cn.com.ctop.common.module.annotation.AutoLog;
@@ -35,13 +36,15 @@ import java.util.*;
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
 
+*/
 /**
  * 素材信息
  *
  * @author jeecg-boot
  * @version V1.0
  * @date 2019-10-11
- */
+ *//*
+
 @Slf4j
 @Api(tags = "素材信息")
 @RestController
@@ -423,12 +426,14 @@ public class MaterialInfoController {
     }
 
 
-    /**
+    */
+/**
      * 添加
      *
      * @param materialInfo
      * @return
-     */
+     *//*
+
     @AutoLog(value = "素材信息-添加")
     @ApiOperation(value = "素材信息-添加", notes = "素材信息-添加")
     @PostMapping(value = "/add")
@@ -445,12 +450,14 @@ public class MaterialInfoController {
     }
 
 
-    /**
+    */
+/**
      * 批量修改产品
      *
      * @param jsonObject
      * @return
-     */
+     *//*
+
     @PostMapping(value = "/batchEdit")
     public Result<MaterialInfo> batchEdit(@RequestBody JSONObject jsonObject) {
         Result<MaterialInfo> result = new Result<>();
@@ -473,12 +480,14 @@ public class MaterialInfoController {
         return result;
     }
 
-    /**
+    */
+/**
      * 头条素材信息编辑
      *
      * @param materialInfo
      * @return
-     */
+     *//*
+
     @PutMapping(value = "/bytedance/edit")
     public Result<MaterialInfo> bytedanceEdit(@RequestBody MaterialInfo materialInfo) {
         Result<MaterialInfo> result = new Result<>();
@@ -634,12 +643,14 @@ public class MaterialInfoController {
 
     }
 
-    /**
+    */
+/**
      * 头条素材信息编辑 -- 批量通过审核
      *
      * @param materialInfo
      * @return
-     */
+     *//*
+
     @PutMapping(value = "/bytedance/batchedit")
     public Result<MaterialInfo> bytedanceBatchEdit(@RequestBody MaterialInfo materialInfo) {
         Result<MaterialInfo> result = new Result<>();
@@ -659,12 +670,14 @@ public class MaterialInfoController {
 
     }
 
-    /**
+    */
+/**
      * 通过id删除
      *
      * @param id
      * @return
-     */
+     *//*
+
     @AutoLog(value = "素材信息-通过id删除")
     @ApiOperation(value = "素材信息-通过id删除", notes = "素材信息-通过id删除")
     @DeleteMapping(value = "/delete")
@@ -689,12 +702,14 @@ public class MaterialInfoController {
         return Result.ok("删除成功!");
     }
 
-    /**
+    */
+/**
      * 批量删除
      *
      * @param ids
      * @return
-     */
+     *//*
+
     @AutoLog(value = "素材信息-批量删除")
     @ApiOperation(value = "素材信息-批量删除", notes = "素材信息-批量删除")
     @DeleteMapping(value = "/deleteBatch")
@@ -709,12 +724,14 @@ public class MaterialInfoController {
         return result;
     }
 
-    /**
+    */
+/**
      * 通过id查询
      *
      * @param id
      * @return
-     */
+     *//*
+
     @AutoLog(value = "素材信息-通过id查询")
     @ApiOperation(value = "素材信息-通过id查询", notes = "素材信息-通过id查询")
     @GetMapping(value = "/queryById")
@@ -874,9 +891,11 @@ public class MaterialInfoController {
         return result;
     }
 
-    /**
+    */
+/**
      * adlab 新加查询素材库接口
-     */
+     *//*
+
     @PostMapping(value = "/listByAccountIds")
     public Result<IPage<MaterialInfo>> listByAccountIds(@RequestBody JSONObject requestBody) {
 
@@ -898,3 +917,4 @@ public class MaterialInfoController {
     }
 
 }
+*/

+ 29 - 13
jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/controller/MaterialTagController.java

@@ -1,3 +1,4 @@
+/*
 package org.jeecg.modules.ctop.controller;
 
 import cn.com.ctop.common.module.annotation.AutoLog;
@@ -17,13 +18,15 @@ import org.springframework.web.bind.annotation.*;
 import javax.servlet.http.HttpServletRequest;
 import java.util.Arrays;
 
+*/
 /**
  * 素材归属标
  *
  * @author jeecg-boot
  * @version V1.0
  * @date 2019-11-23
- */
+ *//*
+
 @Slf4j
 @Api(tags = "素材归属标")
 @RestController
@@ -32,7 +35,8 @@ public class MaterialTagController {
     @Autowired
     private IMaterialTagService materialTagService;
 
-    /**
+    */
+/**
      * 分页列表查询
      *
      * @param materialTag
@@ -40,7 +44,8 @@ public class MaterialTagController {
      * @param pageSize
      * @param req
      * @return
-     */
+     *//*
+
     @AutoLog(value = "素材归属标-分页列表查询")
     @ApiOperation(value = "素材归属标-分页列表查询", notes = "素材归属标-分页列表查询")
     @GetMapping(value = "/list")
@@ -57,12 +62,14 @@ public class MaterialTagController {
         return result;
     }
 
-    /**
+    */
+/**
      * 添加
      *
      * @param materialTag
      * @return
-     */
+     *//*
+
     @AutoLog(value = "素材归属标-添加")
     @ApiOperation(value = "素材归属标-添加", notes = "素材归属标-添加")
     @PostMapping(value = "/add")
@@ -78,12 +85,14 @@ public class MaterialTagController {
         return result;
     }
 
-    /**
+    */
+/**
      * 编辑
      *
      * @param materialTag
      * @return
-     */
+     *//*
+
     @AutoLog(value = "素材归属标-编辑")
     @ApiOperation(value = "素材归属标-编辑", notes = "素材归属标-编辑")
     @PutMapping(value = "/edit")
@@ -102,12 +111,14 @@ public class MaterialTagController {
         return result;
     }
 
-    /**
+    */
+/**
      * 通过id删除
      *
      * @param id
      * @return
-     */
+     *//*
+
     @AutoLog(value = "素材归属标-通过id删除")
     @ApiOperation(value = "素材归属标-通过id删除", notes = "素材归属标-通过id删除")
     @DeleteMapping(value = "/delete")
@@ -121,12 +132,14 @@ public class MaterialTagController {
         return Result.ok("删除成功!");
     }
 
-    /**
+    */
+/**
      * 批量删除
      *
      * @param ids
      * @return
-     */
+     *//*
+
     @AutoLog(value = "素材归属标-批量删除")
     @ApiOperation(value = "素材归属标-批量删除", notes = "素材归属标-批量删除")
     @DeleteMapping(value = "/deleteBatch")
@@ -141,12 +154,14 @@ public class MaterialTagController {
         return result;
     }
 
-    /**
+    */
+/**
      * 通过id查询
      *
      * @param id
      * @return
-     */
+     *//*
+
     @AutoLog(value = "素材归属标-通过id查询")
     @ApiOperation(value = "素材归属标-通过id查询", notes = "素材归属标-通过id查询")
     @GetMapping(value = "/queryById")
@@ -162,3 +177,4 @@ public class MaterialTagController {
         return result;
     }
 }
+*/

파일 크기가 너무 크기때문에 변경 상태를 표시하지 않습니다.
+ 74 - 45
jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/controller/TestController.java


+ 5 - 9
jeecg-boot-module-system/src/test/java/org/jeecg/SampleTest.java

@@ -21,6 +21,7 @@ import cn.com.ctop.kuaishou.modules.material.service.IEtlKuaishouVideoInfoServic
 import cn.com.ctop.kuaishou.modules.report.mapper.EtlKuaishouAccountMaterialReportDailyMapper;
 import cn.com.ctop.kuaishou.modules.report.service.IKuaishouAudienceReportDailyService;
 import cn.com.ctop.kuaishou.modules.report.service.IKuaishouReportDailyImageService;
+import cn.com.ctop.kuaishou.modules.report.service.IRuleKuaiShouPlanService;
 import cn.com.ctop.oa.modules.service.IWechatNoListService;
 import cn.com.ctop.toutiao.modules.link.service.IETLReportBytedanceVideoService;
 import cn.com.ctop.toutiao.modules.material.service.IByteDanceAdvertiserDataService;
@@ -96,19 +97,14 @@ public class SampleTest {
     private IKuaiShouDimensionStrategyService dimensionStrategyService;
     @Autowired
     private IKuaiShouDimensionVariableService dimensionVariableService;
+    @Autowired
+    IRuleKuaiShouPlanService ruleKuaiShouPlanService;
 
 
     @Test
     public void loadKuaishouCookie() throws ParseException {
-      //  JSONArray dimensionVariableList = kuaiShouDimensionVariableService.getDimensionVariableList(1L);
-        JSONArray array = new JSONArray();
-        array.add(1);
-        array.add(2);
-        array.add(3);
-        // dimensionStrategyService.create(1L, array);
-        JSONArray dimensionVariableList = dimensionVariableService.getDimensionVariableList(8L); // 获取变量排列组合
-
-        System.err.println(dimensionVariableList);
+        CtopOauthToken oauthToken = tokenService.getTokenByAccountId(10571378L);
+        ruleKuaiShouPlanService.cleanRuleDataTarget(10571378L, oauthToken.getAccessToken(), 1);
     }
 
 

+ 8 - 0
module-common/src/main/java/cn/com/ctop/common/module/entity/RuleDataTargetKuaishou.java

@@ -4,6 +4,8 @@ import com.baomidou.mybatisplus.annotation.TableName;
 
 import lombok.Data;
 
+import java.math.BigDecimal;
+
 /**
  * 快手预警指标数据
  */
@@ -59,5 +61,11 @@ public class RuleDataTargetKuaishou {
 	private Integer network;
 
 	private java.util.Date createTime;
+	private java.util.Date updateTime;
+
+	private BigDecimal cpaBid;
+	private Integer ocpxActionType;
+	private Integer deepConversionType;
+	private BigDecimal deepConversionBid;
 
 }

+ 4 - 11
module-common/src/main/java/cn/com/ctop/common/module/entity/RuleDateUnitKuaishou.java

@@ -72,11 +72,7 @@ public class RuleDateUnitKuaishou {
     /**
      * 深度转化目标出价
      */
-    private BigDecimal deepConversionBid;
-    /**
-     * 深度转化目标 3: 付费,7: 次日留存,10: 完件, 11: 授信 ,0:无
-     */
-    private Integer deepConversionType;
+
     /**
      * 安卓版本  3:不限, 4: 4.x+, 5: 5.x+, 6: 6.x+, 7: 7.x+;
      */
@@ -85,17 +81,14 @@ public class RuleDateUnitKuaishou {
      * 优化目标
      * 2:行为数;180:激活数;53:表单数;190: 付费;191:首日ROI;324:唤起应用;348:有效线索;383: 授信;384: 完件;394:订单提交;;396:注册
      */
-    private Integer ocpxActionType;
-    /**
-     * 付费单价
-     */
+
+
     private BigDecimal payCost;
     /**
      * 出价
      */
-    private BigDecimal cpaBid;
-
     private Integer status;
 
     private java.util.Date createTime;
+    private java.util.Date updateTime;
 }

+ 4 - 0
module-common/src/main/java/cn/com/ctop/common/module/mapper/RuleDataTargetKuaishouMapper.java

@@ -2,10 +2,14 @@ package cn.com.ctop.common.module.mapper;
 
 import cn.com.ctop.common.module.entity.RuleDataTargetKuaishou;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
 
 /**
  * 快手预警指标数据
  */
 public interface RuleDataTargetKuaishouMapper extends BaseMapper<RuleDataTargetKuaishou> {
 
+    void replaceBatch(@Param("add") List<RuleDataTargetKuaishou> batch);
 }

+ 4 - 1
module-common/src/main/java/cn/com/ctop/common/module/mapper/RuleDateUnitKuaishouMapper.java

@@ -1,12 +1,15 @@
 package cn.com.ctop.common.module.mapper;
 
 import cn.com.ctop.common.module.entity.RuleDateUnitKuaishou;
-
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
 
 /**
  * 预警快手计划数据清洗
  */
 public interface RuleDateUnitKuaishouMapper extends BaseMapper<RuleDateUnitKuaishou> {
 
+    void replaceBatch(@Param("add") List<RuleDateUnitKuaishou> batch);
 }

+ 63 - 0
module-common/src/main/java/cn/com/ctop/common/module/mapper/xml/RuleDataTargetKuaishouMapper.xml

@@ -2,4 +2,67 @@
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="cn.com.ctop.common.module.mapper.RuleDataTargetKuaishouMapper">
 
+    <insert id="replaceBatch">
+        replace into ctop_rule_data_target_kuaishou(
+        id,
+        account_id,
+        plan_id,
+        unit_id,
+        scene_id,
+        region,
+        gender,
+        device_brand,
+        device_price,
+        filter_converted_level,
+        is_open,
+        schedule_time,
+        status,
+        platform_os,
+        app_store,
+        population,
+        exclude_population,
+        ages_range,
+        business_interest,
+        network,
+        create_time,
+        update_time,
+        deep_conversion_bid,
+        deep_conversion_type,
+        cpa_bid,
+        ocpx_action_type
+        )
+        values
+        <foreach collection="add" item="add" separator=",">
+            (
+            #{add.id},
+            #{add.accountId},
+            #{add.planId},
+            #{add.unitId},
+            #{add.sceneId},
+            #{add.region},
+            #{add.gender},
+            #{add.deviceBrand},
+            #{add.devicePrice},
+            #{add.filterConvertedLevel},
+            #{add.isOpen},
+            #{add.scheduleTime},
+            #{add.status},
+            #{add.platformOs},
+            #{add.appStore},
+            #{add.population},
+            #{add.excludePopulation},
+            #{add.agesRange},
+            #{add.businessInterest},
+            #{add.network},
+            #{add.createTime},
+            #{add.updateTime},
+            #{add.deepConversionBid},
+            #{add.deepConversionType},
+            #{add.cpaBid},
+            #{add.ocpxActionType}
+            )
+        </foreach>
+
+
+    </insert>
 </mapper>

+ 57 - 0
module-common/src/main/java/cn/com/ctop/common/module/mapper/xml/RuleDateUnitKuaishouMapper.xml

@@ -0,0 +1,57 @@
+<?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.common.module.mapper.RuleDateUnitKuaishouMapper">
+
+    <insert id="replaceBatch">
+        replace into ctop_rule_data_unit_kuaishou(
+        id,
+        account_id,
+        plan_id,
+        unit_id,
+        unit_name,
+        charge,
+        convert_num,
+        convert_cost,
+        activation,
+        activation_cost,
+        event_register,
+        register_cost,
+        form_count,
+        form_cost,
+        event_pay,
+        pay_cost,
+        android_osv,
+        status,
+        create_time,
+        update_time
+
+        )
+        values
+        <foreach collection="add" item="add" separator=",">
+            (
+            #{add.id},
+            #{add.accountId},
+            #{add.planId},
+            #{add.unitId},
+            #{add.unitName},
+            #{add.charge},
+            #{add.convertNum},
+            #{add.convertCost},
+            #{add.activation},
+            #{add.activationCost},
+            #{add.eventRegister},
+            #{add.registerCost},
+            #{add.formCount},
+            #{add.formCost},
+            #{add.eventPay},
+            #{add.payCost},
+            #{add.androidOsv},
+            #{add.status},
+            #{add.createTime},
+            #{add.updateTime}
+            )
+        </foreach>
+
+
+    </insert>
+</mapper>

+ 3 - 0
module-common/src/main/java/cn/com/ctop/common/module/service/IRuleDataTargetKuaishouService.java

@@ -3,9 +3,12 @@ package cn.com.ctop.common.module.service;
 import cn.com.ctop.common.module.entity.RuleDataTargetKuaishou;
 import com.baomidou.mybatisplus.extension.service.IService;
 
+import java.util.List;
+
 /**
  * 快手预警指标数据
  */
 public interface IRuleDataTargetKuaishouService extends IService<RuleDataTargetKuaishou> {
 
+    void replaceBatch(List<RuleDataTargetKuaishou> batch);
 }

+ 3 - 0
module-common/src/main/java/cn/com/ctop/common/module/service/IRuleDataUnitKuaishouService.java

@@ -3,9 +3,12 @@ package cn.com.ctop.common.module.service;
 import cn.com.ctop.common.module.entity.RuleDateUnitKuaishou;
 import com.baomidou.mybatisplus.extension.service.IService;
 
+import java.util.List;
+
 /**
  *  组维度数据清洗
  */
 public interface IRuleDataUnitKuaishouService extends IService<RuleDateUnitKuaishou> {
 
+    void replaceBatch(List<RuleDateUnitKuaishou> batch);
 }

+ 9 - 0
module-common/src/main/java/cn/com/ctop/common/module/service/impl/RuleDataTargetKuaishouServiceImpl.java

@@ -4,12 +4,21 @@ import cn.com.ctop.common.module.entity.RuleDataTargetKuaishou;
 import cn.com.ctop.common.module.mapper.RuleDataTargetKuaishouMapper;
 import cn.com.ctop.common.module.service.IRuleDataTargetKuaishouService;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
+import java.util.List;
+
 /**
  * 快手预警指标数据
  */
 @Service
 public class RuleDataTargetKuaishouServiceImpl extends ServiceImpl<RuleDataTargetKuaishouMapper, RuleDataTargetKuaishou> implements IRuleDataTargetKuaishouService {
+    @Autowired
+    private RuleDataTargetKuaishouMapper ruleDataTargetKuaishouMapper;
 
+    @Override
+    public void replaceBatch(List<RuleDataTargetKuaishou> batch) {
+        ruleDataTargetKuaishouMapper.replaceBatch(batch);
+    }
 }

+ 12 - 1
module-common/src/main/java/cn/com/ctop/common/module/service/impl/RuleDataUnitKuaishouServiceImpl.java

@@ -4,15 +4,26 @@ import cn.com.ctop.common.module.entity.RuleDateUnitKuaishou;
 import cn.com.ctop.common.module.mapper.RuleDateUnitKuaishouMapper;
 import cn.com.ctop.common.module.service.IRuleDataUnitKuaishouService;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
+import java.util.List;
+
 /**
  * 组维度数据清洗
+ *
  * @author jeecg-boot
- * @date   2020-12-04
  * @version V1.0
+ * @date 2020-12-04
  */
 @Service
 public class RuleDataUnitKuaishouServiceImpl extends ServiceImpl<RuleDateUnitKuaishouMapper, RuleDateUnitKuaishou> implements IRuleDataUnitKuaishouService {
 
+    @Autowired
+    private RuleDateUnitKuaishouMapper ruleDateUnitKuaishouMapper;
+
+    @Override
+    public void replaceBatch(List<RuleDateUnitKuaishou> batch) {
+        ruleDateUnitKuaishouMapper.replaceBatch(batch);
+    }
 }

+ 0 - 37
module-job-bytedance/src/main/java/cn/com/ctop/job/bytedance/handler/SynchronousAccountTransactionDetailsJob.java

@@ -1,37 +0,0 @@
-package cn.com.ctop.job.bytedance.handler;
-
-import cn.com.ctop.toutiao.modules.agent.service.AgentManagementService;
-import com.xxl.job.core.handler.annotation.XxlJob;
-import lombok.extern.slf4j.Slf4j;
-import org.springframework.stereotype.Component;
-
-import javax.annotation.Resource;
-
-@Component
-@Slf4j
-public class SynchronousAccountTransactionDetailsJob {
-
-    @Resource
-    AgentManagementService agentManagementService;
-
-    /**
-     * 同步账号交易流水
-     *
-     * @param
-     * @return
-     * @throws
-     * @author ZZY
-     */
-    @XxlJob("synchronousAccountTransactionDetails")
-    public void execute() throws Exception {
-        try {
-            //同步账号信息
-            agentManagementService.synchronousAccount();
-            //同步每个账号交易流水
-            agentManagementService.synchronousAccountTransactionDetails();
-        } catch (Exception e) {
-            log.info("同步完成");
-        }
-
-    }
-}

+ 10 - 1
module-job-kuaishou/src/main/java/cn/com/ctop/job/kuaishou/handler/KuaishouGroupJob.java

@@ -5,9 +5,12 @@ import cn.com.ctop.common.module.service.ICtopOauthTokenService;
 import cn.com.ctop.kuaishou.modules.batch.service.IKuaishouInterfaceService;
 import com.xxl.job.core.context.XxlJobHelper;
 import com.xxl.job.core.handler.annotation.XxlJob;
+import org.jeecg.common.util.DateUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
 
+import java.text.SimpleDateFormat;
+import java.util.Date;
 import java.util.List;
 import java.util.concurrent.ExecutorService;
 import java.util.concurrent.Executors;
@@ -23,12 +26,18 @@ public class KuaishouGroupJob {
 
     /**
      * 快手广告组物料
+     *
      * @throws Exception
      */
     @XxlJob("kuaishouGroup")
     public void execute() throws Exception {
+        Date endDate = new Date();
+        String anotherDay = DateUtils.getAnotherDay("yyyy-MM-dd", DateUtils.formatDate(endDate), -1);
+        SimpleDateFormat sim = new SimpleDateFormat("yyyy-MM-dd");
+        Date parse = sim.parse(anotherDay);
         List<CtopOauthToken> tokens = tokenService.selectKuaiShouToken();
-        tokens.forEach(token -> executorService.submit(() -> kuaishouInterfaceService.getGroupList(token, null, null)));
+        tokens.forEach(token -> executorService.submit(() -> kuaishouInterfaceService.getGroupList(token, parse, parse)));
         XxlJobHelper.log("快手物料数据同步完成");
     }
+
 }

+ 1 - 0
module-job-kuaishou/src/main/java/cn/com/ctop/job/kuaishou/handler/KuaishouNowDateCreativeJob.java

@@ -9,6 +9,7 @@ import org.jeecg.common.util.DateUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
 
+import java.text.ParseException;
 import java.text.SimpleDateFormat;
 import java.util.Date;
 import java.util.List;

+ 4 - 6
module-job-kuaishou/src/main/java/cn/com/ctop/job/kuaishou/handler/KuaishouNowDateGroupJob.java

@@ -22,7 +22,7 @@ public class KuaishouNowDateGroupJob {
     @Autowired
     private IKuaishouInterfaceService kuaishouInterfaceService;
 
-    static ExecutorService executorService = Executors.newFixedThreadPool(5);
+    static ExecutorService executorService = Executors.newFixedThreadPool(8);
 
     /**
      * 快手当日广告组物料数据
@@ -31,12 +31,10 @@ public class KuaishouNowDateGroupJob {
     @XxlJob("kuaishouNowDateGroup")
     public void execute() throws Exception {
         //1:查询当日数据
-        Date endDate = new Date();
-        String anotherDay = DateUtils.getAnotherDay("yyyy-MM-dd", DateUtils.formatDate(endDate), -1);
-        SimpleDateFormat sim = new SimpleDateFormat("yyyy-MM-dd");
-        Date startDate = sim.parse(anotherDay);
+        Date nowDate = new Date();
+
         List<CtopOauthToken> tokens = tokenService.selectKuaiShouToken();
-        tokens.forEach(token -> executorService.submit(() -> kuaishouInterfaceService.getGroupList(token, startDate, endDate)));
+        tokens.forEach(token -> executorService.submit(() -> kuaishouInterfaceService.getGroupList(token, nowDate, nowDate)));
         XxlJobHelper.log("快手物料数据同步完成");
     }
 

+ 5 - 4
module-job-kuaishou/src/main/java/cn/com/ctop/job/kuaishou/handler/RuleKuaiShouDataTargetCleanJob.java

@@ -27,17 +27,18 @@ public class RuleKuaiShouDataTargetCleanJob {
 
     /**
      * 快手规则引擎定向数据
+     *
      * @throws Exception
      */
     @XxlJob("ruleKuaiShouDataTargetCleanJob")
     public void execute() throws Exception {
         XxlJobHelper.log("规则预警定向维度数据开始清洗");
         List<CtopOauthToken> tokens = oauthTokenService.queryKsValidRuleAccountsToken();
-        tokens.forEach(token -> executorService.submit(() ->{
-            Map<String,Object>params = new HashMap<>();
-            params.put("account_id",token.getAccountId());
+        tokens.forEach(token -> executorService.submit(() -> {
+            Map<String, Object> params = new HashMap<>();
+            params.put("account_id", token.getAccountId());
             ruleDataTargetKuaishouService.removeByMap(params);
-            ruleKuaiShouPlanService.cleanRuleDataTarget(token.getAccountId(), 1);
+            ruleKuaiShouPlanService.cleanRuleDataTarget(token.getAccountId(), token.getAccessToken(), 1);
         }));
     }
 

+ 6 - 1
module-job-kuaishou/src/main/java/cn/com/ctop/job/kuaishou/handler/RuleKuaiShouDataUnitCleanJob.java

@@ -39,8 +39,13 @@ public class RuleKuaiShouDataUnitCleanJob {
             Map<String,Object>params = new HashMap<>();
             params.put("account_id",token.getAccountId());
             ruleDataUnitKuaishouService.removeByMap(params);
-            ruleKuaiShouPlanService.cleanRuleDataUnit(token.getAccountId(), DateUtils.date2Str(), DateUtils.date2Str(), 1);
+            ruleKuaiShouPlanService.cleanRuleDataUnit(token.getAccountId(),token.getAccessToken(), DateUtils.date2Str(), DateUtils.date2Str(), 1);
         }));
     }
 
+    public static void main(String[] args) {
+        System.err.println(DateUtils.date2Str());
+        System.err.println(DateUtils.date2Str());
+    }
+
 }

+ 45 - 0
module-job-kuaishou/src/main/java/cn/com/ctop/job/kuaishou/handler/SynchronousAccountTransactionJob.java

@@ -0,0 +1,45 @@
+package cn.com.ctop.job.kuaishou.handler;
+
+import cn.com.ctop.kuaishou.modules.report.service.NewMonitorService;
+import cn.com.ctop.toutiao.modules.agent.service.AgentManagementService;
+import com.xxl.job.core.handler.annotation.XxlJob;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Component;
+
+import javax.annotation.Resource;
+import java.text.SimpleDateFormat;
+import java.util.Calendar;
+import java.util.Date;
+
+@Component
+@Slf4j
+public class SynchronousAccountTransactionJob {
+
+    @Resource
+    AgentManagementService  agentManagementService;
+
+    /**
+     * 同步头条账户交易流水
+     *
+     * @param
+     * @return
+     * @throws
+     * @author ZZY
+     */
+    @XxlJob("synchronousAccountTransaction")
+    public void execute() throws Exception {
+        SimpleDateFormat sd = new SimpleDateFormat("yyyy-MM-dd");
+        Calendar ca = Calendar.getInstance();//得到一个Calendar的实例
+        ca.setTime(new Date()); //设置时间为当前时间
+        ca.add(Calendar.DAY_OF_MONTH, -1);  //设置为前一天
+        String date = sd.format(ca.getTime());
+        try {
+            agentManagementService.synchronousAccount();
+            agentManagementService.synchronousAccountTransactionDay(date,date);
+            agentManagementService.synchronousAccountTransactionDetails(date,date);
+        } catch (Exception e) {
+            log.info("同步完成");
+        }
+
+    }
+}

+ 5 - 15
module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/ai/service/impl/KuaiShouCreateServiceImpl.java

@@ -3,22 +3,12 @@ package cn.com.ctop.kuaishou.modules.ai.service.impl;
 import cn.com.ctop.common.module.entity.CtopOauthToken;
 import cn.com.ctop.common.module.entity.MaterialCutFrame;
 import cn.com.ctop.common.module.service.IMaterialCutFrameService;
-import cn.com.ctop.common.module.utils.Check;
-import cn.com.ctop.common.module.utils.HttpUtils;
-import cn.com.ctop.common.module.utils.HttpUtils2;
-import cn.com.ctop.common.module.utils.KuaishouInterfaceConstant;
-import cn.com.ctop.common.module.utils.PropertiesUtils;
+import cn.com.ctop.common.module.utils.*;
 import cn.com.ctop.kuaishou.modules.ai.service.IKuaiShouCreateService;
 import cn.com.ctop.kuaishou.modules.ai.service.IKuaishouLandpagePackageService;
 import cn.com.ctop.kuaishou.modules.batch.entity.KuaiShouGroup;
 import cn.com.ctop.kuaishou.modules.batch.entity.KuaiShouImageGet;
-import cn.com.ctop.kuaishou.modules.batch.entity.KuaiShouVideoGet;
-import cn.com.ctop.kuaishou.modules.batch.service.IKuaiShouGroupService;
-import cn.com.ctop.kuaishou.modules.batch.service.IKuaiShouGroupTemplateService;
-import cn.com.ctop.kuaishou.modules.batch.service.IKuaiShouImageGetService;
-import cn.com.ctop.kuaishou.modules.batch.service.IKuaiShouMaterialUploadService;
-import cn.com.ctop.kuaishou.modules.batch.service.IKuaiShouVideoGetService;
-import cn.com.ctop.kuaishou.modules.batch.service.IKuaishouInterfaceService;
+import cn.com.ctop.kuaishou.modules.batch.service.*;
 import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
@@ -285,9 +275,9 @@ public class KuaiShouCreateServiceImpl implements IKuaiShouCreateService {
                 if (!Check.isNull(creativeJson.getLong("photo_id"))) {
                     createJson.put("photo_id", creativeJson.getLong("photo_id"));  // 视频ID
                 }
-                KuaiShouVideoGet video = videoGetService.getVideoByPhotoId(creativeJson.getLong("photo_id"));
-                if (!Check.isNull(video)) {
-                    createJson.put("creative_material_type", video.getMaterialType());  // 素材类型
+                //        KuaiShouVideoGet video = videoGetService.getVideoByPhotoId(creativeJson.getLong("photo_id"));
+                if (!Check.isNull(creativeJson.getInteger("creative_material_type"))) {
+                    createJson.put("creative_material_type", creativeJson.getInteger("creative_material_type"));  // 素材类型
                 }
                 if (!Check.isNull(creativeJson.getString("action_bar_text"))) {
                     createJson.put("action_bar_text", creativeJson.getString("action_bar_text"));  // 行动号召按钮文案

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

@@ -1188,6 +1188,9 @@ public class KuaishouInterfaceServiceImpl implements IKuaishouInterfaceService {
     }
 
 
+    @Autowired
+    IRuleKuaiShouPlanService ruleKuaiShouPlanService;
+
     private void getGroupListByPage(CtopOauthToken token, Date startDate, Date endDate, int page) {
         String url = PropertiesUtils.getConfig("kuaishou_api_url") + KuaishouInterfaceConstant.GROUP_LIST;
         JSONObject param = new JSONObject();
@@ -1218,6 +1221,7 @@ public class KuaishouInterfaceServiceImpl implements IKuaishouInterfaceService {
             return;
         }
         addGroup(token.getAccountId(), details);
+     //   ruleKuaiShouPlanService.insertTarget(token.getAccountId(), details);
         getGroupListByPage(token, startDate, endDate, page + 1);
     }
 

+ 20 - 22
module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/report/mapper/xml/NewMonitorMapper.xml

@@ -1,7 +1,7 @@
 <?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.report.mapper.NewMonitorMapper">
-    <resultMap id="BaseResultMap" type="cn.com.ctop.kuaishou.modules.report.mapper.NewMonitorMapper">
+    <resultMap id="BaseResultMap" type="cn.com.ctop.kuaishou.modules.report.entity.NewMonitorInfo">
         <id  column="id"  property="user_id" />
         <result column="realname" property="user_name"/>
         <result column="leader_id" property="parent_id"/>
@@ -9,7 +9,6 @@
                     select="cn.com.ctop.kuaishou.modules.report.mapper.NewMonitorMapper.getOperator" column="id">
         </collection>
     </resultMap>
-
     <select id="getOperator" resultMap="BaseResultMap"  parameterType="String">
         SELECT id,realname,leader_id
         FROM sys_user
@@ -17,21 +16,21 @@
     </select>
 
     <select id="getAllAccountId" resultType="Long">
-        SELECT DISTINCT t.account_id  as 'accountId' from ctop_user_allocation t
+        SELECT DISTINCT t.account_id  as 'accountId' from ctop_user_allocation t where  account_status=0
     </select>
     <select id="getKuaiShouGroup" resultType="Map">
-    SELECT t1.account_id as 'accountId',t1.auth_name as 'accountName',t1.user_name as 'userName',t.unit_id as 'unitId',t.group_create_time as 'groupCreatTime',DATE_FORMAT(DATE_ADD(t.group_create_time,INTERVAL 7 DAY),'%Y-%m-%d') as 'afterTime'
-     from ctop_user_allocation t1 LEFT JOIN  ctop_kuaishou_group t on t1.account_id=t.account_id and t.account_id=#{accountId}
-     <where>
-         <choose>
-             <when test="date!= null and date!=''">
-                 and  t.group_create_time &gt;= DATE_SUB(#{date},INTERVAL 7 DAY)
-             </when>
-             <otherwise>
-                 t.group_create_time &gt;= DATE_FORMAT(DATE_SUB(NOW(),INTERVAL 1 YEAR),'%Y-%m-%d')
-             </otherwise>
-         </choose>
-     </where>
+        SELECT t1.account_id as 'accountId',t1.auth_name as 'accountName',t1.user_name as 'userName',t.unit_id as 'unitId',t.group_create_time as 'groupCreatTime',DATE_FORMAT(DATE_ADD(t.group_create_time,INTERVAL 7 DAY),'%Y-%m-%d') as 'afterTime'
+        from ctop_user_allocation t1 LEFT JOIN  ctop_kuaishou_group t on t1.account_id=t.account_id and t.account_id=#{accountId}
+        <where>
+            <choose>
+                <when test="date!= null and date!=''">
+                    and  t.group_create_time &gt;= DATE_SUB(#{date},INTERVAL 7 DAY)
+                </when>
+                <otherwise>
+                    t.group_create_time &gt;= DATE_FORMAT(DATE_SUB(NOW(),INTERVAL 1 YEAR),'%Y-%m-%d')
+                </otherwise>
+            </choose>
+        </where>
     </select>
 
     <select id="getKuaiShouCampaign" resultType="Map">
@@ -107,13 +106,13 @@
 
     <select id="getKuaiShouGroupMessage" resultType="com.alibaba.fastjson.JSONObject">
         select account_id as 'accountId',account_name as 'authName',MAX(create_time) as 'maxCreateTime',COUNT(IF(effective ='1', TRUE, NULL))  as 'valid',count(effective) as 'new',operating_name as 'userName','' as 'projectName'
-         from ctop_new_monitor_group  where ( create_time between #{startDate}  and #{endDate})
+        from ctop_new_monitor_group  where ( create_time between #{startDate}  and #{endDate})
         and account_id in
         <foreach item="item" collection="array" separator="," open="(" close=")" index="">
-               #{item}
+            #{item}
         </foreach>
         GROUP BY account_id
-
+        order by account_id desc
     </select>
 
 
@@ -125,7 +124,7 @@
             #{item}
         </foreach>
         GROUP BY account_id
-
+        order by account_id desc
     </select>
 
     <select id="getKuaiShouGroupSum" resultType="com.alibaba.fastjson.JSONObject">
@@ -147,8 +146,8 @@
     </select>
 
     <select id="getKuaiShouGroupMessageGroup" resultType="com.alibaba.fastjson.JSONObject" >
-    SELECT DATE_FORMAT(t.create_time,'%Y-%m-%d') as 'statDate',COUNT(t.effective) as 'new',COUNT(IF(t.effective ='1', TRUE, NULL))  as 'valid' from ctop_new_monitor_group t
-     where  (create_time between #{startDate}  and #{endDate}) and t.account_id in
+        SELECT DATE_FORMAT(t.create_time,'%Y-%m-%d') as 'statDate',COUNT(t.effective) as 'new',COUNT(IF(t.effective ='1', TRUE, NULL))  as 'valid' from ctop_new_monitor_group t
+        where  (create_time between #{startDate}  and #{endDate}) and t.account_id in
         <foreach item="item" collection="array" separator="," open="(" close=")" index="">
             #{item}
         </foreach>
@@ -179,5 +178,4 @@
     </select>
 
 
-
 </mapper>

+ 11 - 7
module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/report/service/IRuleKuaiShouPlanService.java

@@ -1,26 +1,30 @@
 package cn.com.ctop.kuaishou.modules.report.service;
 
 import cn.com.ctop.common.module.entity.RuleDatePlanKuaishou;
+import com.alibaba.fastjson.JSONArray;
 import com.baomidou.mybatisplus.extension.service.IService;
 
 /**
- *  快手规则引擎数据清洗;计划、组、定向
+ * 快手规则引擎数据清洗;计划、组、定向
  */
 public interface IRuleKuaiShouPlanService extends IService<RuleDatePlanKuaishou> {
 
     /**
-     *  计划
+     * 计划
      */
-    void cleanRuleDataPlan(Long accountId,int page);
+    void cleanRuleDataPlan(Long accountId, int page);
 
     /**
-     *  
+     * 组
      */
-    void cleanRuleDataUnit(Long accountId,String startDate, String endDate,int page);
+    void cleanRuleDataUnit(Long accountId, String accessToken,String startDate, String endDate, int page);
 
     /**
-     *  定向
+     * 定向
      */
-    void cleanRuleDataTarget(Long accountId,int page);
+    void cleanRuleDataTarget(Long accountId,String accessToken, int page);
+
+
+    void insertTarget(Long accountId, JSONArray details);
 
 }

+ 26 - 18
module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/report/service/impl/RuleKuaiShouPlanServiceImpl.java

@@ -20,15 +20,13 @@ import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.xxl.job.core.context.XxlJobHelper;
+import org.jeecg.common.util.DateUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
 import java.math.BigDecimal;
 import java.math.RoundingMode;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
 
 @Service
 public class RuleKuaiShouPlanServiceImpl extends ServiceImpl<RuleDatePlanKuaishouMapper, RuleDatePlanKuaishou> implements IRuleKuaiShouPlanService {
@@ -82,7 +80,7 @@ public class RuleKuaiShouPlanServiceImpl extends ServiceImpl<RuleDatePlanKuaisho
     }
 
     @Override
-    public void cleanRuleDataUnit(Long accountId, String startDate, String endDate, int page) {
+    public void cleanRuleDataUnit(Long accountId, String accessToken, String startDate, String endDate, int page) {
         JSONObject param = new JSONObject();
         param.put("advertiser_id", accountId);
         param.put("page_size", 500);
@@ -91,7 +89,7 @@ public class RuleKuaiShouPlanServiceImpl extends ServiceImpl<RuleDatePlanKuaisho
         param.put("end_date", endDate);
 
         Map<String, String> headers = new HashMap<>();
-        headers.put("Access-Token", oauthTokenService.getTokenByAccountId(accountId).getAccessToken());
+        headers.put("Access-Token", accessToken);
         headers.put("Content-Type", "application/json");
 
         String result = HttpUtils.kuaiShouhttpPostRequest("https://ad.e.kuaishou.com/rest/openapi/v1/report/unit_report", param.toJSONString(), headers);
@@ -110,18 +108,21 @@ public class RuleKuaiShouPlanServiceImpl extends ServiceImpl<RuleDatePlanKuaisho
             return;
         }
         this.insertUnit(accountId, details);
-        cleanRuleDataUnit(accountId, startDate, endDate, page + 1);
+        cleanRuleDataUnit(accountId, accessToken, startDate, endDate, page + 1);
     }
 
     @Override
-    public void cleanRuleDataTarget(Long accountId, int page) {
+    public void cleanRuleDataTarget(Long accountId, String accessToken, int page) {
         JSONObject param = new JSONObject();
         param.put("advertiser_id", accountId);
         param.put("page_size", 500);
         param.put("page", page);
+        String nowDate = DateUtils.getNowDate("yyyy-MM-dd");
+        param.put("start_date", nowDate);
+        param.put("end_date", nowDate);
 
         Map<String, String> headers = new HashMap<>();
-        headers.put("Access-Token", oauthTokenService.getTokenByAccountId(accountId).getAccessToken());
+        headers.put("Access-Token", accessToken);
         headers.put("Content-Type", "application/json");
 
         String result = HttpUtils.kuaiShouhttpPostRequest("https://ad.e.kuaishou.com/rest/openapi/v1/ad_unit/list", param.toJSONString(), headers);
@@ -141,7 +142,7 @@ public class RuleKuaiShouPlanServiceImpl extends ServiceImpl<RuleDatePlanKuaisho
         }
 
         this.insertTarget(accountId, details);
-        cleanRuleDataTarget(accountId, page + 1);
+        cleanRuleDataTarget(accountId, accessToken, page + 1);
     }
 
     private void insertPlan(Long accountId, JSONArray details) {
@@ -186,10 +187,6 @@ public class RuleKuaiShouPlanServiceImpl extends ServiceImpl<RuleDatePlanKuaisho
                     unit.setUnitId(unitDetail.getLong("unit_id"));
                     unit.setUnitName(unitDetail.getString("unit_name"));
                     unit.setCharge(unitDetail.getBigDecimal("charge"));
-                    unit.setDeepConversionBid(new BigDecimal(group.getDeepConversionBid()).divide(new BigDecimal("1000")));
-                    unit.setDeepConversionType(group.getDeepConversionType());
-                    unit.setOcpxActionType(group.getOcpxActionType());
-                    unit.setCpaBid(new BigDecimal(group.getCpaBid()).divide(new BigDecimal("1000"), 2, RoundingMode.HALF_UP));
                     //未知优化目标数据存空
                     if (group.getOcpxActionType() != 0) {
                         unit.setConvertNum(handleConvertNum(group.getOcpxActionType(), unitDetail));
@@ -197,17 +194,20 @@ public class RuleKuaiShouPlanServiceImpl extends ServiceImpl<RuleDatePlanKuaisho
                             unit.setConvertCost(unitDetail.getBigDecimal("charge").divide(BigDecimal.valueOf(unit.getConvertNum()), 2, RoundingMode.HALF_UP));
                         }
                     }
+                    unit.setCreateTime(new Date());
+                    unit.setStatus(1);
                     batch.add(unit);
                 }
             }
 
         });
         if (!batch.isEmpty()) {
-            unitKuaishouService.saveOrUpdateBatch(batch);
+            unitKuaishouService.replaceBatch(batch);
         }
     }
 
-    private void insertTarget(Long accountId, JSONArray details) {
+    @Override
+    public void insertTarget(Long accountId, JSONArray details) {
         List<RuleDataTargetKuaishou> batch = new ArrayList<>();
         details.forEach(detail -> {
             JSONObject unitDetail = (JSONObject) detail;
@@ -261,13 +261,21 @@ public class RuleKuaiShouPlanServiceImpl extends ServiceImpl<RuleDatePlanKuaisho
 
                 Integer isOpen = unitDetail.getJSONObject("target").getJSONObject("intelli_extend").getInteger("is_open");
                 target.setIsOpen(isOpen == null ? 0 : isOpen);
-                target.setScheduleTime(unitDetail.getString("schedule_time") == null ? "" : unitDetail.getString("schedule_time"));
 
+                target.setDeepConversionBid(new BigDecimal(unitDetail.getLong("deep_conversion_bid")).divide(new BigDecimal("1000")));
+                target.setDeepConversionType(unitDetail.getInteger("deep_conversion_type"));
+                target.setOcpxActionType(unitDetail.getInteger("ocpx_action_type"));
+                target.setCpaBid(new BigDecimal(unitDetail.getLong("cpa_bid")).divide(new BigDecimal("1000"), 2, RoundingMode.HALF_UP));
+                target.setScheduleTime(unitDetail.getString("schedule_time") == null ? "" : unitDetail.getString("schedule_time"));
+                target.setCreateTime(new Date());
+                target.setUpdateTime(new Date());
+                target.setStatus(1);
                 batch.add(target);
             }
         });
         if (!batch.isEmpty()) {
-            targetKuaishouService.saveOrUpdateBatch(batch);
+            // targetKuaishouService.saveOrUpdateBatch(batch);
+            targetKuaishouService.replaceBatch(batch);
         }
     }
 

+ 45 - 8
module-toutiao/src/main/java/cn/com/ctop/toutiao/modules/agent/controller/AgentManagementController.java

@@ -1,17 +1,15 @@
 package cn.com.ctop.toutiao.modules.agent.controller;
 
+
 import cn.com.ctop.toutiao.modules.agent.service.AgentManagementService;
-import com.alibaba.fastjson.JSONObject;
 import lombok.extern.slf4j.Slf4j;
+import org.apache.ibatis.annotations.Param;
 import org.jeecg.common.api.vo.Result;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
 
-import java.util.ArrayList;
-
-import java.util.List;
-import java.util.stream.Collectors;
+import java.text.ParseException;
 
 @RestController
 @RequestMapping("/agent")
@@ -21,10 +19,49 @@ public class AgentManagementController {
     @Autowired
     AgentManagementService agentManagementService;
 
+
     @RequestMapping("/queryAccountTransactionDetails")
-    public void  getList(){
-        Result recharge = agentManagementService.synchronousAccountTransactionDetails();
-        log.info("123");
+    public void getList(@Param("starDate") String startDate, @Param("endDate") String endDate) {
+        Result recharge = agentManagementService.synchronousAccountTransactionDetails(startDate, endDate);
 
     }
+
+    @RequestMapping("/synchronousAccount")
+    public void synchronousAccount() {
+        Result recharge = agentManagementService.synchronousAccount();
+    }
+
+
+    @RequestMapping("/synchronousAccountTransactionDay")
+    public void synchronousAccountTransactionDay(@Param("starDate") String startDate, @Param("endDate") String endDate) {
+        Result recharge = agentManagementService.synchronousAccountTransactionDay(startDate, endDate);
+    }
+
+
+    @RequestMapping("/synchronous")
+    public void synchronous() throws ParseException {
+        String date1 = "2021-05-01";
+        String date2 = "2021-05-31";
+        String date3 = "2021-06-01";
+        String date4 = "2021-06-30";
+        String date5 = "2021-07-01";
+        String date6 = "2021-07-31";
+        String date7 = "2021-08-01";
+        String date8 = "2021-08-31";
+        agentManagementService.synchronousAccount();
+        //5月份
+        agentManagementService.synchronousAccountTransactionDetails(date1, date2);
+        agentManagementService.synchronousAccountTransactionDay(date1, date2);
+        //6月份
+        agentManagementService.synchronousAccountTransactionDetails(date3, date4);
+        agentManagementService.synchronousAccountTransactionDay(date3, date4);
+        //7月份
+        agentManagementService.synchronousAccountTransactionDetails(date5, date6);
+        agentManagementService.synchronousAccountTransactionDay(date5, date6);
+        //8月份
+        agentManagementService.synchronousAccountTransactionDetails(date7, date8);
+        agentManagementService.synchronousAccountTransactionDay(date7, date8);
+    }
+
+
 }

+ 33 - 0
module-toutiao/src/main/java/cn/com/ctop/toutiao/modules/agent/entity/TransactionDay.java

@@ -0,0 +1,33 @@
+package cn.com.ctop.toutiao.modules.agent.entity;
+
+import lombok.Data;
+
+@Data
+public class TransactionDay {
+    //
+    private String id;
+    //广告主ID
+    private String advertiserId;
+    //日期
+    private String date;
+    //日终结余(单位元)
+    private String balance;
+    //现金支出(单位元)
+    private String cashCost;
+    //总支出(单位元)
+    private String cost;
+    //冻结(单位元)
+    private String frozen;
+    //总存入(单位元)
+    private String income;
+    //赠款支出(单位元)
+    private String rewardCost;
+    //共享钱包支出(单位元)
+    private String sharedWalletCost;
+    //总转入(单位元)
+    private String transferIn;
+    //总转出(单位元)
+    private String transferOut;
+    //创建时间
+    private String createTime;
+}

+ 16 - 0
module-toutiao/src/main/java/cn/com/ctop/toutiao/modules/agent/mapper/CtopAccountTransactionDayMapper.java

@@ -0,0 +1,16 @@
+package cn.com.ctop.toutiao.modules.agent.mapper;
+
+import cn.com.ctop.toutiao.modules.agent.entity.TransactionDay;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+@Mapper
+public interface CtopAccountTransactionDayMapper {
+
+    List<String> getAdvertiserIdByDate(@Param("date") String date, @Param("advertiserId") String advertiserId);
+
+    void saveAccountTransactionDay(@Param("list") List<TransactionDay> list, @Param("date") String date);
+
+}

+ 3 - 2
module-toutiao/src/main/java/cn/com/ctop/toutiao/modules/agent/mapper/CtopAccountTransactionDetailsMapper.java

@@ -9,7 +9,8 @@ import java.util.List;
 @Mapper
 public interface CtopAccountTransactionDetailsMapper {
     //保存交易记录
-    public void saveAccountTransactionDetails(@Param("list") List<TransactionDetails> list, @Param("date")String date);
+    public void saveAccountTransactionDetails(@Param("list") List<TransactionDetails> list, @Param("date") String date);
+
     //根据日期查询当日所有交易订单号
-    public List<String> getTransactionSeq( @Param("date")String date);
+    public List<String> getTransactionSeq(@Param("date") String date);
 }

+ 13 - 2
module-toutiao/src/main/java/cn/com/ctop/toutiao/modules/agent/mapper/CtopAgentAccountMapper.java

@@ -1,5 +1,6 @@
 package cn.com.ctop.toutiao.modules.agent.mapper;
 
+import cn.com.ctop.common.module.entity.CtopOauthToken;
 import org.apache.ibatis.annotations.Mapper;
 import org.apache.ibatis.annotations.Param;
 
@@ -9,8 +10,18 @@ import java.util.List;
 public interface CtopAgentAccountMapper {
     //获取所有账户
     public List<String> getAllAccountId();
+
     //根据账户id修改账户状态
-    public void updateAccountState(@Param("list")List<String> list,@Param("state")int state);
+    public void updateAccountState(@Param("list") List<String> list, @Param("state") int state);
+
     //批量插入新增数据
-    public void insertAccountData(@Param("list") List<String> list,@Param("agent_id")String agent_id,@Param("create_time")String create_time);
+    public void insertAccountData(@Param("list") List<String> list, @Param("agent_id") String agent_id, @Param("create_time") String create_time);
+
+    /**
+     * 根据accountId查询
+     *
+     * @param accountId
+     * @return
+     */
+    CtopOauthToken selectByAccountId(Long accountId);
 }

+ 30 - 0
module-toutiao/src/main/java/cn/com/ctop/toutiao/modules/agent/mapper/xml/CtopAccountTransactionDayMapper.xml

@@ -0,0 +1,30 @@
+<?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.agent.mapper.CtopAccountTransactionDayMapper">
+    <!-- 批量插入新增数据-->
+    <insert id="saveAccountTransactionDay">
+        insert into ctop_account_transaction_day (advertiser_id,date,balance,cash_cost,cost,frozen,income,reward_cost,
+        shared_wallet_cost,transfer_in,transfer_out,create_time) values
+        <foreach collection="list" item="item" index="index" separator=",">
+            (
+            #{item.advertiserId},
+            #{item.date},
+            #{item.balance},
+            #{item.cashCost},
+            #{item.cost},
+            #{item.frozen},
+            #{item.income},
+            #{item.rewardCost},
+            #{item.sharedWalletCost},
+            #{item.transferIn},
+            #{item.transferOut},
+            #{date}
+            )
+        </foreach>
+    </insert>
+
+    <select id="getAdvertiserIdByDate" parameterType="String" resultType="String">
+        select t.advertiser_id from ctop_account_transaction_day t where t.date=#{date} and t.advertiser_id=#{advertiserId}
+    </select>
+
+</mapper>

+ 4 - 3
module-toutiao/src/main/java/cn/com/ctop/toutiao/modules/agent/mapper/xml/CtopAccountTransactionDetailsMapper.xml

@@ -1,9 +1,10 @@
 <?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.agent.mapper.CtopAccountTransactionDetailsMapper">
-   <!-- 批量插入新增数据-->
+    <!-- 批量插入新增数据-->
     <insert id="saveAccountTransactionDetails">
-        insert  into ctop_account_transaction_details (advertiser_id,transaction_type,data_time,amount,cash,grant_amount,return_goods,transaction_seq,
+        insert into ctop_account_transaction_details
+        (advertiser_id,transaction_type,data_time,amount,cash,grant_amount,return_goods,transaction_seq,
         remitter,payee,dealbase,create_time) values
         <foreach collection="list" item="item" index="index" separator=",">
             (
@@ -24,7 +25,7 @@
     </insert>
 
     <select id="getTransactionSeq" parameterType="String" resultType="String">
-        select t.transaction_seq from ctop_account_transaction_details t where t.create_time=#{date}
+        select t.transaction_seq from ctop_account_transaction_details t
     </select>
 
 </mapper>

+ 31 - 4
module-toutiao/src/main/java/cn/com/ctop/toutiao/modules/agent/mapper/xml/CtopAgentAccountMapper.xml

@@ -1,20 +1,38 @@
 <?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.agent.mapper.CtopAgentAccountMapper">
+    <resultMap id="BaseResultMap" type="cn.com.ctop.common.module.entity.CtopOauthToken">
+        <result column="id" property="id" jdbcType="BIGINT"/>
+        <result column="media_id" property="mediaId" jdbcType="VARCHAR"/>
+        <result column="advertiser_id" property="advertiserId" jdbcType="VARCHAR"/>
+        <result column="account_id" property="accountId" jdbcType="BIGINT"/>
+        <result column="access_token" property="accessToken" jdbcType="VARCHAR"/>
+        <result column="refresh_token" property="refreshToken" jdbcType="VARCHAR"/>
+        <result column="access_token_expires_in" property="accessTokenExpiresIn" jdbcType="TIMESTAMP"/>
+        <result column="refresh_token_expires_in" property="refreshTokenExpiresIn" jdbcType="TIMESTAMP"/>
+        <result column="agent_type" property="agentType" jdbcType="INTEGER"/>
+        <result column="app_id" property="appId" jdbcType="BIGINT"/>
+        <result column="create_time" property="createTime" jdbcType="TIMESTAMP"/>
+        <result column="update_time" property="updateTime" jdbcType="TIMESTAMP"/>
+    </resultMap>
+
+    <sql id="Base_Column_List">
+        id,media_id,advertiser_id,account_id,access_token,refresh_token,access_token_expires_in,refresh_token_expires_in,agent_type,app_id,create_time,update_time
+   </sql>
     <!--获取所有账户-->
     <select id="getAllAccountId" resultType="String">
         select account_id from ctop_agent_account where state=0
     </select>
-   <!-- 根据账户id修改账户状态-->
+    <!-- 根据账户id修改账户状态-->
     <update id="updateAccountState">
         update ctop_agent_account set state=#{state} where account_id in
-        <foreach item="item" index="index" collection="list" open="("  close=")" separator=",">
+        <foreach item="item" index="index" collection="list" open="(" close=")" separator=",">
             #{item}
         </foreach>
     </update>
-   <!-- 批量插入新增数据-->
+    <!-- 批量插入新增数据-->
     <insert id="insertAccountData">
-        insert  into ctop_agent_account (account_id,agent_id,state,create_time) values
+        insert into ctop_agent_account (account_id,agent_id,state,create_time) values
         <foreach collection="list" item="item" index="index" separator=",">
             (
             #{item},
@@ -25,4 +43,13 @@
         </foreach>
     </insert>
 
+    <select id="selectByAccountId" resultMap="BaseResultMap">
+        select
+        <include refid="Base_Column_List"/>
+        from ctop_oauth_token
+        where account_id = #{accountId}
+        order by create_time desc
+        limit 1
+    </select>
+
 </mapper>

+ 9 - 3
module-toutiao/src/main/java/cn/com/ctop/toutiao/modules/agent/service/AgentManagementService.java

@@ -8,15 +8,21 @@ public interface AgentManagementService {
     public String getToken();
 
     //查询代理商下账户
-    public  JSONObject selectAgentAdvertiser(int pageNum,int pageSize);
+    public  JSONObject selectAgentAdvertiser(int pageNum, int pageSize,String account);
 
 
     //查询账号流水
-    public JSONObject queryAccountTransactionDetails(String AccountId,String transaction_type, int pageNum, int pageSize);
+    public JSONObject queryAccountTransactionDetails(String AccountId, String transaction_type, int pageNum, int pageSize, String startDate, String endDate);
+
+    //查询账号流水
+    public JSONObject queryAccountTransactionDay(String AccountId, int pageNum, int pageSize, String startDate, String endDate);
 
     //同步代理商账户入库
     public Result synchronousAccount();
 
     //同步账户交易流水
-    public Result synchronousAccountTransactionDetails();
+    public Result synchronousAccountTransactionDetails(String startDate, String endDate);
+
+    //同步账户日流水
+    public Result synchronousAccountTransactionDay(String startDate, String endDate);
 }

+ 251 - 101
module-toutiao/src/main/java/cn/com/ctop/toutiao/modules/agent/service/impl/AgentManagementServiceImpl.java

@@ -1,8 +1,9 @@
 package cn.com.ctop.toutiao.modules.agent.service.impl;
 
 import cn.com.ctop.common.module.entity.CtopOauthToken;
-import cn.com.ctop.common.module.mapper.CtopOauthTokenMapper;
+import cn.com.ctop.toutiao.modules.agent.entity.TransactionDay;
 import cn.com.ctop.toutiao.modules.agent.entity.TransactionDetails;
+import cn.com.ctop.toutiao.modules.agent.mapper.CtopAccountTransactionDayMapper;
 import cn.com.ctop.toutiao.modules.agent.mapper.CtopAccountTransactionDetailsMapper;
 import cn.com.ctop.toutiao.modules.agent.mapper.CtopAgentAccountMapper;
 import cn.com.ctop.toutiao.modules.agent.service.AgentManagementService;
@@ -42,17 +43,21 @@ public class AgentManagementServiceImpl implements AgentManagementService {
     private final String OPEN_API_URL_PREFIX = "https://ad.oceanengine.com/open_api/2/";
     private final String ACCOUNT_LIST_URL = "agent/advertiser/select/";
     private final String ACCOUNT_TRANSACTION_DETAILS_URL = "advertiser/fund/transaction/get/";
+    private final String ACCOUNT_TRANSACTION_DAY_URL = "advertiser/fund/daily_stat/";
     private final String ADVERTISER_ID = "73970348172";
     private final String RECHARGE = "RECHARGE";
     private final String TRANSFER = "TRANSFER";
-    @Resource
-    CtopOauthTokenMapper ctopOauthTokenMapper;
 
     @Resource
     CtopAgentAccountMapper ctopAgentAccountMapper;
     @Resource
     CtopAccountTransactionDetailsMapper ctopAccountTransactionDetailsMapper;
 
+    @Resource
+    CtopAccountTransactionDayMapper ctopAccountTransactionDayMapper;
+
+    private String accountList = "1651537304110087;1640370875427848;73970348172";
+
     /**
      * 同步代理商下账号
      *
@@ -67,43 +72,50 @@ public class AgentManagementServiceImpl implements AgentManagementService {
         List<String> dataList = new ArrayList();
         Result result = new Result();
         try {
-            //分页查询第一页数据
-            JSONObject agentAccountList = selectAgentAdvertiser(1, 2000);
-            JSONObject data = (JSONObject) agentAccountList.get("data");
-            //dataList.addAll((List) data.get("list"));
-            if (data.size() > 0) {
-                JSONObject page_info = (JSONObject) data.get("page_info");
-                int total_page = (int) page_info.get("total_page");
-                //查询其他页数据
-                for (int i = 0; i < total_page; i++) {
-                    JSONObject agenttList = selectAgentAdvertiser(i + 1, 2000);
-                    JSONObject agentData = (JSONObject) agenttList.get("data");
-                    List<Long> list = (List<Long>) agentData.get("list");
-                    list.stream().forEach(str -> {
-                        dataList.add(str.toString());
-                    });
+            if (accountList != null) {
+                String[] split = accountList.split(";");
+                for (String account : split) {
+                    //分页查询第一页数据
+                    JSONObject agentAccountList = selectAgentAdvertiser(1, 2000, account);
+                    JSONObject data = (JSONObject) agentAccountList.get("data");
+                    //dataList.addAll((List) data.get("list"));
+                    if (data.size() > 0) {
+                        JSONObject page_info = (JSONObject) data.get("page_info");
+                        int total_page = (int) page_info.get("total_page");
+                        //查询其他页数据
+                        for (int i = 0; i < total_page; i++) {
+                            JSONObject agenttList = selectAgentAdvertiser(i + 1, 2000, account);
+                            JSONObject agentData = (JSONObject) agenttList.get("data");
+                            List<Long> list = (List<Long>) agentData.get("list");
+                            list.stream().forEach(str -> {
+                                dataList.add(str.toString());
+                            });
+
+                        }
+                        log.info("拉取" + account + "下账户数量:{}", dataList.size());
+                        //查询数据库已存在id
+                        List<String> accountIdList = ctopAgentAccountMapper.getAllAccountId();
+                        if (!accountIdList.isEmpty()) {
+                            //筛选巨量引擎剔除的用户
+                            List<String> removeList = accountIdList.stream().filter(item -> !dataList.contains(item)).collect(toList());
+                            //筛选巨量引擎新增的用户
+                            List<String> addList = dataList.stream().filter(item -> !accountIdList.contains(item)).collect(toList());
+                            //修改剔除的用户状态
+                            if (!removeList.isEmpty()) {
+                                ctopAgentAccountMapper.updateAccountState(removeList, 1);
+                            }
+                            //保存新增的用户
+                            if (!addList.isEmpty()) {
+                                ctopAgentAccountMapper.insertAccountData(addList, ADVERTISER_ID, df.format(new Date()));
+                            }
+                        } else {
+                            ctopAgentAccountMapper.insertAccountData(dataList, ADVERTISER_ID, df.format(new Date()));
+                        }
 
-                }
-                //查询数据库已存在id
-                List<String> accountIdList = ctopAgentAccountMapper.getAllAccountId();
-                if (!accountIdList.isEmpty()) {
-                    //筛选巨量引擎剔除的用户
-                    List<String> removeList = accountIdList.stream().filter(item -> !dataList.contains(item)).collect(toList());
-                    //筛选巨量引擎新增的用户
-                    List<String> addList = dataList.stream().filter(item -> !accountIdList.contains(item)).collect(toList());
-                    //修改剔除的用户状态
-                    if (!removeList.isEmpty()) {
-                        ctopAgentAccountMapper.updateAccountState(removeList, 1);
-                    }
-                    //保存新增的用户
-                    if (!addList.isEmpty()) {
-                        ctopAgentAccountMapper.insertAccountData(addList, ADVERTISER_ID, df.format(new Date()));
                     }
-                } else {
-                    ctopAgentAccountMapper.insertAccountData(dataList, ADVERTISER_ID, df.format(new Date()));
                 }
-
             }
+
             result.setSuccess(true);
             result.setMessage("success");
             return result;
@@ -121,8 +133,9 @@ public class AgentManagementServiceImpl implements AgentManagementService {
      * @create: 2021-07-15
      */
     @Override
-    public Result synchronousAccountTransactionDetails() {
+    public Result synchronousAccountTransactionDetails(String startDate, String endDate) {
         log.info("开始同步账号交易流水");
+        Result result = new Result();
         SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd");//设置日期格式
         List<TransactionDetails> transactionDetailsList = new ArrayList<>();
         try {
@@ -132,70 +145,88 @@ public class AgentManagementServiceImpl implements AgentManagementService {
                 accountIdList.stream().forEach(str -> {
                     if (!str.isEmpty()) {
                         //查询账号下充值的交易流水
-                        JSONObject jsonObject = queryAccountTransactionDetails(str, RECHARGE, 1, 1000);
+                        JSONObject jsonObject = queryAccountTransactionDetails(str, RECHARGE, 1, 1000, startDate, endDate);
+                        int code = (int) jsonObject.get("code");
+                        if (code != 0) {
+                            result.setMessage((String) jsonObject.get("message"));
+                            log.info((String) jsonObject.get("message"));
+                            return;
+                        }
                         JSONObject data = (JSONObject) jsonObject.get("data");
-                        List<Object> dataList = (List<Object>) data.get("list");
-                        if (!dataList.isEmpty()) {
-                            //充值类存在记录
-                            //保存第一页数据
-                            dataList.stream().forEach(ob -> {
-                                TransactionDetails transactionDetails = JSONObject.toJavaObject((JSON) ob, TransactionDetails.class);
-                                //订单号不存在
-                                if (transactionSeqList.isEmpty() || !transactionSeqList.contains(transactionDetails.getTransaction_seq())) {
-                                    transactionDetailsList.add(transactionDetails);
-                                }
+                        if (data != null) {
+                            List<Object> dataList = (List<Object>) data.get("list");
+                            if (dataList != null && !dataList.isEmpty()) {
+                                //充值类存在记录
+                                //保存第一页数据
+                                dataList.stream().forEach(ob -> {
+                                    TransactionDetails transactionDetails = JSONObject.toJavaObject((JSON) ob, TransactionDetails.class);
+                                    //订单号不存在
+                                    if (transactionSeqList.isEmpty() || !transactionSeqList.contains(transactionDetails.getTransaction_seq())) {
+                                        transactionDetailsList.add(transactionDetails);
+                                    }
 
-                            });
-                            JSONObject page_info = (JSONObject) data.get("page_info");
-                            int total_page = (int) page_info.get("total_page");
-                            //查询其他页数据
-                            if (total_page > 1) {
-                                for (int i = 2; i <= total_page; i++) {
-                                    JSONObject jo = queryAccountTransactionDetails(str, RECHARGE, i, 1000);
-                                    JSONObject accountData = (JSONObject) jo.get("data");
-                                    List<Object> rechargeList = (List<Object>) accountData.get("list");
-                                    rechargeList.stream().forEach(transactionDetails -> {
-                                        TransactionDetails transactionDetailsOther = JSONObject.toJavaObject((JSON) transactionDetails, TransactionDetails.class);
-                                        //订单号不存在
-                                        if (transactionSeqList.isEmpty() || !transactionSeqList.contains(transactionDetailsOther.getTransaction_seq())) {
-                                            transactionDetailsList.add(transactionDetailsOther);
-                                        }
-                                    });
+                                });
+                                JSONObject page_info = (JSONObject) data.get("page_info");
+                                int total_page = (int) page_info.get("total_page");
+                                //查询其他页数据
+                                if (total_page > 1) {
+                                    for (int i = 2; i <= total_page; i++) {
+                                        JSONObject jo = queryAccountTransactionDetails(str, RECHARGE, i, 1000, startDate, endDate);
+                                        JSONObject accountData = (JSONObject) jo.get("data");
+                                        List<Object> rechargeList = (List<Object>) accountData.get("list");
+                                        rechargeList.stream().forEach(transactionDetails -> {
+                                            TransactionDetails transactionDetailsOther = JSONObject.toJavaObject((JSON) transactionDetails, TransactionDetails.class);
+                                            //订单号不存在
+                                            if (transactionSeqList.isEmpty() || !transactionSeqList.contains(transactionDetailsOther.getTransaction_seq())) {
+                                                transactionDetailsList.add(transactionDetailsOther);
+                                            }
+                                        });
+                                    }
                                 }
                             }
                         }
+
                         //查询账号下转账的交易流水
-                        JSONObject transferJsonObject = queryAccountTransactionDetails(str, TRANSFER, 1, 1000);
+                        JSONObject transferJsonObject = queryAccountTransactionDetails(str, TRANSFER, 1, 1000, startDate, endDate);
                         JSONObject transferData = (JSONObject) transferJsonObject.get("data");
-                        List<Object> transferDataList = (List<Object>) transferData.get("list");
-                        if (!transferDataList.isEmpty()) {
-                            //转账类存在记录
-                            //保存第一页数据
-                            transferDataList.stream().forEach(ob -> {
-                                TransactionDetails transactionDetails = JSONObject.toJavaObject((JSON) ob, TransactionDetails.class);
-                                //订单号不存在
-                                if (transactionSeqList.isEmpty() || !transactionSeqList.contains(transactionDetails.getTransaction_seq())) {
-                                    transactionDetailsList.add(transactionDetails);
-                                }
-                            });
-                            JSONObject transferPageInfo = (JSONObject) transferData.get("page_info");
-                            int transferTotalPage = (int) transferPageInfo.get("total_page");
-                            //查询其他页数据
-                            if (transferTotalPage > 1) {
-                                for (int i = 2; i <= transferTotalPage; i++) {
-                                    JSONObject jo = queryAccountTransactionDetails(str, TRANSFER, i, 1000);
-                                    JSONObject accountData = (JSONObject) jo.get("data");
-                                    List<Object> rechargeList = (List<Object>) accountData.get("list");
-                                    rechargeList.stream().forEach(transactionDetails -> {
-                                        TransactionDetails transactionDetailsOther = JSONObject.toJavaObject((JSON) transactionDetails, TransactionDetails.class);
-                                        //订单号不存在
-                                        if (transactionSeqList.isEmpty() || !transactionSeqList.contains(transactionDetailsOther.getTransaction_seq())) {
-                                            transactionDetailsList.add(transactionDetailsOther);
-                                        }
-                                    });
+                        int code1 = (int) jsonObject.get("code");
+                        if (code1 != 0) {
+                            result.setMessage((String) jsonObject.get("message"));
+                            log.info((String) jsonObject.get("message"));
+                            return;
+                        }
+                        if (transferData != null) {
+                            List<Object> transferDataList = (List<Object>) transferData.get("list");
+                            if (!transferDataList.isEmpty()) {
+                                //转账类存在记录
+                                //保存第一页数据
+                                transferDataList.stream().forEach(ob -> {
+                                    TransactionDetails transactionDetails = JSONObject.toJavaObject((JSON) ob, TransactionDetails.class);
+                                    //订单号不存在
+                                    if (transactionSeqList.isEmpty() || !transactionSeqList.contains(transactionDetails.getTransaction_seq())) {
+                                        transactionDetailsList.add(transactionDetails);
+                                    }
+                                });
+                                JSONObject transferPageInfo = (JSONObject) transferData.get("page_info");
+                                int transferTotalPage = (int) transferPageInfo.get("total_page");
+                                //查询其他页数据
+                                if (transferTotalPage > 1) {
+                                    for (int i = 2; i <= transferTotalPage; i++) {
+                                        JSONObject jo = queryAccountTransactionDetails(str, TRANSFER, i, 1000, startDate, endDate);
+                                        JSONObject accountData = (JSONObject) jo.get("data");
+                                        List<Object> rechargeList = (List<Object>) accountData.get("list");
+                                        rechargeList.stream().forEach(transactionDetails -> {
+                                            TransactionDetails transactionDetailsOther = JSONObject.toJavaObject((JSON) transactionDetails, TransactionDetails.class);
+                                            //订单号不存在
+                                            if (transactionSeqList.isEmpty() || !transactionSeqList.contains(transactionDetailsOther.getTransaction_seq())) {
+                                                transactionDetailsList.add(transactionDetailsOther);
+                                            }
+                                        });
+                                    }
                                 }
                             }
                         }
+
                     }
                 });
             }
@@ -204,17 +235,111 @@ public class AgentManagementServiceImpl implements AgentManagementService {
                 ctopAccountTransactionDetailsMapper.saveAccountTransactionDetails(transactionDetailsList, df.format(new Date()));
                 log.info("新增交易记录:{}条", transactionDetailsList.size());
             }
+            result.setSuccess(true);
+            result.setMessage("success");
         } catch (Exception e) {
             e.printStackTrace();
+            result.setSuccess(false);
+            result.setMessage("error");
             log.info("同步失败:{}", e.toString());
         }
 
 
-        return null;
+        return result;
     }
 
     /**
-     * 查询账号流水
+     * 同步账户日流水
+     *
+     * @author zzy
+     * @create: 2021-07-15
+     */
+    @Override
+    public Result synchronousAccountTransactionDay(String startDate, String endDate) {
+        log.info("开始同步账号日流水");
+        Result result = new Result();
+        SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd");//设置日期格式
+        Calendar ca = Calendar.getInstance();
+        ca.setTime(new Date());
+        ca.add(Calendar.DATE, -1);
+        List<TransactionDay> transactionDetailsList = new ArrayList<>();
+        try {
+            List<String> accountIdList = ctopAgentAccountMapper.getAllAccountId();
+            if (!accountIdList.isEmpty()) {
+                accountIdList.stream().forEach(str -> {
+                    if (!str.isEmpty()) {
+                        //查询账号下充值的交易流水
+                        JSONObject jsonObject = queryAccountTransactionDay(str, 1, 1000, startDate, endDate);
+                        JSONObject data = null;
+                        int code = 1;
+                        if (jsonObject != null) {
+                            data = (JSONObject) jsonObject.get("data");
+                            code = (int) jsonObject.get("code");
+                        } else {
+                            log.info("返回数据jsonObject为null:");
+                        }
+                        if (code != 0) {
+                            result.setMessage((String) jsonObject.get("message"));
+                            log.info("返回数据:" + jsonObject.toJSONString() + ":" + str);
+                        }
+                        if (data != null) {
+                            List<Object> dataList = (List<Object>) data.get("list");
+                            if (dataList != null && !dataList.isEmpty()) {
+                                //充值类存在记录
+                                //保存第一页数据
+                                dataList.stream().forEach(ob -> {
+                                    TransactionDay transactionDay = JSONObject.toJavaObject((JSON) ob, TransactionDay.class);
+                                    List<String> advertiserIdList = ctopAccountTransactionDayMapper.getAdvertiserIdByDate(transactionDay.getDate(), transactionDay.getAdvertiserId());
+                                    //订单号不存在
+                                    if (advertiserIdList.isEmpty() || advertiserIdList.size() <= 0) {
+                                        transactionDetailsList.add(transactionDay);
+                                    }
+
+                                });
+                                JSONObject page_info = (JSONObject) data.get("page_info");
+                                int total_page = (int) page_info.get("total_page");
+                                //查询其他页数据
+                                if (total_page > 1) {
+                                    for (int i = 2; i <= total_page; i++) {
+                                        JSONObject jo = queryAccountTransactionDay(str, i, 1000, startDate, endDate);
+                                        JSONObject accountData = (JSONObject) jo.get("data");
+                                        List<Object> rechargeList = (List<Object>) accountData.get("list");
+                                        rechargeList.stream().forEach(obj -> {
+                                            TransactionDay transactionDay = JSONObject.toJavaObject((JSON) obj, TransactionDay.class);
+                                            List<String> advertiserIdList = ctopAccountTransactionDayMapper.getAdvertiserIdByDate(transactionDay.getDate(), transactionDay.getAdvertiserId());
+
+                                            //订单号不存在
+                                            if (advertiserIdList.isEmpty() || advertiserIdList.size() <= 0) {
+                                                transactionDetailsList.add(transactionDay);
+                                            }
+                                        });
+                                    }
+                                }
+                            }
+                        }
+                    }
+                });
+            }
+            //保存数据
+            if (!transactionDetailsList.isEmpty()) {
+                ctopAccountTransactionDayMapper.saveAccountTransactionDay(transactionDetailsList, df.format(new Date()));
+                log.info("新增日流水记录:{}条", transactionDetailsList.size());
+            }
+            result.setSuccess(true);
+            result.setMessage("success");
+        } catch (Exception e) {
+            e.printStackTrace();
+            result.setSuccess(false);
+            result.setMessage("error");
+            log.info("同步失败:{}", e.toString());
+        }
+
+
+        return result;
+    }
+
+    /**
+     * 查询账号流水明细
      *
      * @return
      * @author zzy
@@ -222,7 +347,31 @@ public class AgentManagementServiceImpl implements AgentManagementService {
      * @create: 2021-07-14
      */
     @Override
-    public JSONObject queryAccountTransactionDetails(String AccountId, String transaction_type, int pageNum, int pageSize) {
+    public JSONObject queryAccountTransactionDetails(String AccountId, String transaction_type, int pageNum, int pageSize, String startDate, String endDate) {
+        // 请求参数
+        Map data = new HashMap() {
+            {
+                put("advertiser_id", AccountId);
+                put("start_date", startDate);
+                put("end_date", endDate);
+                put("transaction_type", transaction_type);
+                put("page", pageNum);
+                put("page_size", pageSize);
+            }
+        };
+        return sendHttpRequest(data, ACCOUNT_TRANSACTION_DETAILS_URL);
+    }
+
+    /**
+     * 查询账号日流水
+     *
+     * @return
+     * @author zzy
+     * @Param AccountId 账户id       pageNum 当前页    pageSize 每页显示数量
+     * @create: 2021-07-14
+     */
+    @Override
+    public JSONObject queryAccountTransactionDay(String AccountId, int pageNum, int pageSize, String startDate, String endDate) {
         SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd");//设置日期格式
         Calendar ca = Calendar.getInstance();
         ca.setTime(new Date());
@@ -231,14 +380,15 @@ public class AgentManagementServiceImpl implements AgentManagementService {
         Map data = new HashMap() {
             {
                 put("advertiser_id", AccountId);
-                put("start_date", df.format(ca.getTime()));
-                put("end_date", df.format(ca.getTime()));
-                put("transaction_type", transaction_type);
+                put("start_date", startDate);
+                put("end_date", endDate);
                 put("page", pageNum);
                 put("page_size", pageSize);
             }
         };
-        return sendHttpRequest(data, ACCOUNT_TRANSACTION_DETAILS_URL);
+        return sendHttpRequest(data, ACCOUNT_TRANSACTION_DAY_URL);
+
+
     }
 
 
@@ -250,7 +400,7 @@ public class AgentManagementServiceImpl implements AgentManagementService {
      */
     @Override
     public String getToken() {
-        CtopOauthToken ctopOauthToken = ctopOauthTokenMapper.selectByAccountId(Long.parseLong(ADVERTISER_ID));
+        CtopOauthToken ctopOauthToken = ctopAgentAccountMapper.selectByAccountId(Long.parseLong(ADVERTISER_ID));
         if (ctopOauthToken != null) {
             return ctopOauthToken.getAccessToken();
         } else {
@@ -268,11 +418,11 @@ public class AgentManagementServiceImpl implements AgentManagementService {
      * @create: 2021-07-14
      */
     @Override
-    public JSONObject selectAgentAdvertiser(int pageNum, int pageSize) {
+    public JSONObject selectAgentAdvertiser(int pageNum, int pageSize, String account) {
         // 请求参数
         Map data = new HashMap() {
             {
-                put("advertiser_id", ADVERTISER_ID);
+                put("advertiser_id", account);
                 put("page", pageNum);
                 put("page_size", pageSize);
             }