فهرست منبع

Merge remote-tracking branch 'origin/master'

# Conflicts:
#	job-kuaishou/src/main/java/cn/com/ctop/job/kuaishou/data/service/IAdUnitReportService.java
#	job-kuaishou/src/main/java/cn/com/ctop/job/kuaishou/data/service/impl/AdUnitReportServiceImpl.java
yumeng 10 ماه پیش
والد
کامیت
140dbe25c1
14فایلهای تغییر یافته به همراه592 افزوده شده و 49 حذف شده
  1. 13 4
      job-kuaishou/src/main/java/cn/com/ctop/job/kuaishou/controller/KuaishouController.java
  2. 3 0
      job-kuaishou/src/main/java/cn/com/ctop/job/kuaishou/data/constant/KuaishouConstant.java
  3. 2 0
      job-kuaishou/src/main/java/cn/com/ctop/job/kuaishou/data/entity/KuaishouAccountReportDaily.java
  4. 2 0
      job-kuaishou/src/main/java/cn/com/ctop/job/kuaishou/data/entity/KuaishouAccountReportHourly.java
  5. 292 0
      job-kuaishou/src/main/java/cn/com/ctop/job/kuaishou/data/entity/KuaishouAgentAccountList.java
  6. 3 0
      job-kuaishou/src/main/java/cn/com/ctop/job/kuaishou/data/mapper/AdUnitReportMapper.java
  7. 97 0
      job-kuaishou/src/main/java/cn/com/ctop/job/kuaishou/data/mapper/xml/AdUnitReportMapper.xml
  8. 3 1
      job-kuaishou/src/main/java/cn/com/ctop/job/kuaishou/data/mapper/xml/KuaishouAccountReportDailyMapper.xml
  9. 3 2
      job-kuaishou/src/main/java/cn/com/ctop/job/kuaishou/data/mapper/xml/KuaishouAccountReportHourlyMapper.xml
  10. 2 4
      job-kuaishou/src/main/java/cn/com/ctop/job/kuaishou/data/service/IWarningOperationService.java
  11. 139 17
      job-kuaishou/src/main/java/cn/com/ctop/job/kuaishou/data/service/impl/AdUnitReportServiceImpl.java
  12. 22 20
      job-kuaishou/src/main/java/cn/com/ctop/job/kuaishou/data/service/impl/WarningOperationServiceImpl.java
  13. 1 1
      job-kuaishou/src/main/java/cn/com/ctop/job/kuaishou/data/utils/DateUtils.java
  14. 10 0
      job-kuaishou/src/main/java/cn/com/ctop/job/kuaishou/handler/AdUnitReportJob.java

+ 13 - 4
job-kuaishou/src/main/java/cn/com/ctop/job/kuaishou/controller/KuaishouController.java

@@ -207,7 +207,10 @@ public class KuaishouController {
 //        String date = DateUtils.getAnotherDay("yyyy-MM-dd", nowDate, -4);
 //        String date = DateUtils.getAnotherDay("yyyy-MM-dd", nowDate, -4);
 //        for (String s : list) {
 //        for (String s : list) {
 //            unitReportDailyService2.getUnitReportDaily(accountId, token, s, s, 1);
 //            unitReportDailyService2.getUnitReportDaily(accountId, token, s, s, 1);
-        adUnitReportService.getAgentReport();
+//        adUnitReportService.getAgentReport();
+        kuaishouAccountReportHourlyService
+                .getAdvertiserReportHour(accountId, token, "2024-07-11", "2024-07-11", 1);
+//        videoListService.getVideoList(accountId, token, null, null, 1);
 //            campaignReportDailyService.getCampaignReportDaily(accountId, token, s, s, 1);
 //            campaignReportDailyService.getCampaignReportDaily(accountId, token, s, s, 1);
 //        }
 //        }
 
 
@@ -251,7 +254,7 @@ public class KuaishouController {
 
 
         List<Long> accountIds = tokenService.getAllAccountIds();
         List<Long> accountIds = tokenService.getAllAccountIds();
 
 
-        for (String date : dates) {
+//        for (String date : dates) {
             for (Long accountId : accountIds) {
             for (Long accountId : accountIds) {
                 String token = tokenService.getByAccountId(accountId);
                 String token = tokenService.getByAccountId(accountId);
                 hourlyExecutorService.submit(
                 hourlyExecutorService.submit(
@@ -261,10 +264,10 @@ public class KuaishouController {
                             public void run() {
                             public void run() {
                                 Thread.sleep(500);
                                 Thread.sleep(500);
                                 kuaishouAccountReportHourlyService
                                 kuaishouAccountReportHourlyService
-                                        .getAdvertiserReportHour(accountId, token, date, date, 1);
+                                        .getAdvertiserReportHour(accountId, token, "2024-07-11", "2024-07-11", 1);
                             }
                             }
                         });
                         });
-            }
+//            }
         }
         }
     }
     }
 
 
@@ -306,4 +309,10 @@ public class KuaishouController {
         tokens.forEach(token -> accountWarningService.kuaiShouAccountWarning(token.getLong("accountId"), todayInt, yesterdayInt));
         tokens.forEach(token -> accountWarningService.kuaiShouAccountWarning(token.getLong("accountId"), todayInt, yesterdayInt));
     }
     }
 
 
+    @GetMapping(value = "testE")
+    public void testE(Long accountId) throws Exception {
+        adUnitReportService.getAgentAccountList();
+    }
+
+
 }
 }

+ 3 - 0
job-kuaishou/src/main/java/cn/com/ctop/job/kuaishou/data/constant/KuaishouConstant.java

@@ -54,5 +54,8 @@ public class KuaishouConstant {
     //直播间报表
     //直播间报表
     public static final String LIVE_USER_REPORT = "/rest/openapi/gw/dsp/v1/report/live_user_report";
     public static final String LIVE_USER_REPORT = "/rest/openapi/gw/dsp/v1/report/live_user_report";
 
 
+    //代理商获取广告主列表接口
+    public static final String AGENT_ACCOUNT_LIST = "/rest/openapi/gw/agent/v1/account/list";
+
 
 
 }
 }

+ 2 - 0
job-kuaishou/src/main/java/cn/com/ctop/job/kuaishou/data/entity/KuaishouAccountReportDaily.java

@@ -447,6 +447,7 @@ public class KuaishouAccountReportDaily {
   private BigDecimal conversionComponentRate;
   private BigDecimal conversionComponentRate;
   private Long adLandingPageImpression;
   private Long adLandingPageImpression;
   private Long adAppDownloadHalfImpression;
   private Long adAppDownloadHalfImpression;
+  private Long eventDrawCreditLine;
 
 
 
 
 
 
@@ -698,6 +699,7 @@ public class KuaishouAccountReportDaily {
     reportDaily.setConversionComponentRate(returnJson.getBigDecimal("conversion_component_rate"));
     reportDaily.setConversionComponentRate(returnJson.getBigDecimal("conversion_component_rate"));
     reportDaily.setAdLandingPageImpression(returnJson.getLong("ad_landing_page_impression"));
     reportDaily.setAdLandingPageImpression(returnJson.getLong("ad_landing_page_impression"));
     reportDaily.setAdAppDownloadHalfImpression(returnJson.getLong("ad_app_download_half_impression"));
     reportDaily.setAdAppDownloadHalfImpression(returnJson.getLong("ad_app_download_half_impression"));
+    reportDaily.setEventDrawCreditLine(returnJson.getLong("event_draw_credit_line"));
 
 
     return reportDaily;
     return reportDaily;
 
 

+ 2 - 0
job-kuaishou/src/main/java/cn/com/ctop/job/kuaishou/data/entity/KuaishouAccountReportHourly.java

@@ -553,6 +553,7 @@ public class KuaishouAccountReportHourly {
 
 
 
 
 
 
+  private Long eventDrawCreditLine;
   private Long adPhotoPlayed10s;
   private Long adPhotoPlayed10s;
   private Long adPhotoPlayed2s;
   private Long adPhotoPlayed2s;
   private Long adPhotoPlayed75percent;
   private Long adPhotoPlayed75percent;
@@ -912,6 +913,7 @@ public class KuaishouAccountReportHourly {
     reportHourly.setConversionComponentRate(returnJson.getBigDecimal("conversion_component_rate"));
     reportHourly.setConversionComponentRate(returnJson.getBigDecimal("conversion_component_rate"));
     reportHourly.setAdLandingPageImpression(returnJson.getLong("ad_landing_page_impression"));
     reportHourly.setAdLandingPageImpression(returnJson.getLong("ad_landing_page_impression"));
     reportHourly.setAdAppDownloadHalfImpression(returnJson.getLong("ad_app_download_half_impression"));
     reportHourly.setAdAppDownloadHalfImpression(returnJson.getLong("ad_app_download_half_impression"));
+    reportHourly.setEventDrawCreditLine(returnJson.getLong("event_draw_credit_line"));
 
 
     return reportHourly;
     return reportHourly;
 
 

+ 292 - 0
job-kuaishou/src/main/java/cn/com/ctop/job/kuaishou/data/entity/KuaishouAgentAccountList.java

@@ -0,0 +1,292 @@
+package cn.com.ctop.job.kuaishou.data.entity;
+
+import cn.com.ctop.job.kuaishou.data.utils.Check;
+import cn.com.ctop.job.kuaishou.data.utils.DateUtils;
+import com.alibaba.fastjson.JSONObject;
+import lombok.Data;
+
+/**
+ * 代理商-广告主列对象 kuaishou_agent_account_list
+ *
+ * @author ruoyi
+ * @date 2024-07-25
+ */
+@Data
+public class KuaishouAgentAccountList {
+
+    /**
+     * 主键ID
+     */
+    private Long id;
+
+    /**
+     * 代理商ID
+     */
+    private Long agentId;
+    /**
+     * 快手ID
+     */
+    private Long userId;
+
+    /**
+     * 广告主ID
+     */
+    private Long accountId;
+
+    /**
+     * 快手昵称
+     */
+    private String accountName;
+
+    /**
+     * 账户类型
+     */
+    private String ucType;
+
+    /**
+     * 付款类型
+     */
+    private String paymentType;
+
+    /**
+     * 创建时间
+     */
+    private String createTime;
+
+    private String statDate;
+
+    /**
+     * 现金余额
+     */
+    private Long balance;
+
+    /**
+     * 信用账户余额
+     */
+    private Long creditBalance;
+
+    /**
+     * 预留账户余额
+     */
+    private Long extendedBalance;
+
+    /**
+     * 后返余额
+     */
+    private Long rebate;
+
+    /**
+     * 前返余额
+     */
+    private Long preRebate;
+
+    /**
+     * 框返余额
+     */
+    private Long contractRebate;
+
+    /**
+     * 激励余额
+     */
+    private Long directRebate;
+
+    /**
+     * 总余额
+     */
+    private Long totalBalance;
+
+    /**
+     * 账户最低余额
+     */
+    private Long loLimit;
+
+    /**
+     * 单次转账金额
+     */
+    private Long singleOut;
+
+    /**
+     * 自动转账状态 1-ture,0-false
+     */
+    private String autoOut;
+
+    /**
+     * 余额不足提醒 1-ture,0-false
+     */
+    private String balanceOut;
+
+    /**
+     * 产品名称
+     */
+    private String productName;
+
+    /**
+     * 首日消耗日期
+     */
+    private String firstCostDay;
+
+    /**
+     * 一级行业
+     */
+    private String industry;
+
+    /**
+     * 二级行业
+     */
+    private String secondIndustry;
+
+    /**
+     * $column.columnComment
+     */
+    private Long kuaibiBalance;
+
+    /**
+     * $column.columnComment
+     */
+    private Long pushBalance;
+
+    /**
+     * 1-ture,0-false
+     */
+    private String recharged;
+
+    /**
+     * 企业名称
+     */
+    private String corporationName;
+
+    /**
+     * 审核状态	1-审核中,2-审核通过,3-审核拒绝,0-待提交
+     */
+    private Integer reviewStatus;
+    /**
+     * 审核详情
+     */
+    private String reviewDetail;
+
+    /**
+     * 冻结状态
+     */
+    private Integer forzenStatus;
+
+    /**
+     * 转账状态  1-ture,0-false
+     */
+    private String transferAccountStatus;
+
+    private Long appId;
+
+    /**
+     * 创建来源
+     */
+    private Integer createSource;
+
+    /**
+     * 账号认证状态	0-无状态,1-待认证,2-认证中,3-认证通过,4-认证失败,5-认证失效
+     */
+    private Integer authenticationStatus;
+
+    /**
+     * 账号认证状态详情
+     */
+    private String authenticationDetail;
+
+    /**
+     * 合同签约状态	0-无效,1-签约中,2-已签约,3-已终止,4-已过期,5-已撤销,6-已拒签,7-已删除,8-提前终止
+     */
+    private Integer contractReviewStatus;
+
+    /**
+     * 合同签约状态详情
+     */
+    private String contractReviewDetail;
+
+    /**
+     * 用户审核状态	0-未送审,1-待审核,2-审核通过,3-审核拒绝,4-封禁
+     */
+    private Integer userReviewStatus;
+
+    /**
+     * 用户审核状态详情
+     */
+    private String userReviewDetail;
+
+    /**
+     * 是否为复制账户 1-ture,0-false
+     */
+    private String copyAccount;
+
+    public KuaishouAgentAccountList() {
+    }
+
+    public KuaishouAgentAccountList(JSONObject json, Long agentId) {
+        this.appId = json.getLong("app_id");
+        this.agentId = agentId;
+        this.userId = json.getLong("user_id");
+        this.accountId = json.getLong("account_id");
+        this.accountName = json.getString("account_name");
+        this.ucType = json.getString("uc_type");
+        this.paymentType = json.getString("payment_type");
+        this.balance = json.getLong("balance");
+        this.createTime = DateUtils.tempToDate(json.getLong("create_time"), "yyyy-MM-dd HH:mm:ss");
+        this.statDate = DateUtils.tempToDate(json.getLong("create_time"), "yyyy-MM-dd");
+        this.creditBalance = json.getLong("credit_balance");
+        this.extendedBalance = json.getLong("extended_balance");
+        this.rebate = json.getLong("rebate");
+        this.preRebate = json.getLong("pre_rebate");
+        this.contractRebate = json.getLong("contract_rebate");
+        this.directRebate = json.getLong("direct_rebate");
+        this.totalBalance = json.getLong("total_balance");
+        this.loLimit = json.getLong("lo_limit");
+        this.singleOut = json.getLong("single_out");
+        Boolean auto_out = json.getBoolean("auto_out");
+        if (!Check.isNull(auto_out)) {
+            this.autoOut = auto_out ? "1" : "0";
+        }
+        Boolean balance_out = json.getBoolean("balance_out");
+        if (!Check.isNull(balance_out)) {
+            this.balanceOut = balance_out ? "1" : "0";
+        }
+        this.productName = json.getString("product_name");
+        this.firstCostDay = json.getString("first_cost_day");
+        this.industry = json.getString("industry");
+        this.secondIndustry = json.getString("second_industry");
+        this.kuaibiBalance = json.getLong("kuaibi_balance");
+        this.pushBalance = json.getLong("push_balance");
+        Boolean recharged = json.getBoolean("recharged");
+        if (!Check.isNull(recharged)) {
+            this.recharged = recharged ? "1" : "0";
+        }
+        this.corporationName = json.getString("corporation_name");
+        this.reviewStatus = json.getInteger("review_status");
+        this.reviewDetail = json.getString("review_detail");
+        this.forzenStatus = json.getInteger("forzen_status");
+        Boolean transfer_account_status = json.getBoolean("transfer_account_status");
+        if (!Check.isNull(transfer_account_status)) {
+            this.transferAccountStatus = transfer_account_status ? "1" : "0";
+        }
+        this.createSource = json.getInteger("create_source");
+        JSONObject info = json.getJSONObject("child_review_status_info");
+        if (!Check.isNull(info)) {
+            JSONObject contractReviewInfo = info.getJSONObject("contract_review_info");
+            if (!Check.isNull(contractReviewInfo)) {
+                this.contractReviewStatus = contractReviewInfo.getInteger("contract_review_status");
+                this.contractReviewDetail = contractReviewInfo.getString("contract_review_detail");
+            }
+            JSONObject authenticationReviewInfo = info.getJSONObject("authentication_review_info");
+            if (!Check.isNull(authenticationReviewInfo)) {
+                this.authenticationStatus = authenticationReviewInfo.getInteger("authentication_status");
+                this.authenticationDetail = authenticationReviewInfo.getString("authentication_detail");
+            }
+            JSONObject userReviewInfo = info.getJSONObject("user_review_info");
+            if (!Check.isNull(userReviewInfo)) {
+                this.userReviewStatus = userReviewInfo.getInteger("review_status");
+                this.userReviewDetail = userReviewInfo.getString("review_detail");
+            }
+        }
+        Boolean copy_account = json.getBoolean("copy_account");
+        if (!Check.isNull(copy_account)) {
+            this.copyAccount = copy_account ? "1" : "0";
+        }
+    }
+}

+ 3 - 0
job-kuaishou/src/main/java/cn/com/ctop/job/kuaishou/data/mapper/AdUnitReportMapper.java

@@ -2,6 +2,7 @@ package cn.com.ctop.job.kuaishou.data.mapper;
 
 
 import cn.com.ctop.job.kuaishou.data.entity.KuaiShouDailyAgent;
 import cn.com.ctop.job.kuaishou.data.entity.KuaiShouDailyAgent;
 import cn.com.ctop.job.kuaishou.data.entity.KuaishouAdUnitList;
 import cn.com.ctop.job.kuaishou.data.entity.KuaishouAdUnitList;
+import cn.com.ctop.job.kuaishou.data.entity.KuaishouAgentAccountList;
 import cn.com.ctop.job.kuaishou.data.entity.KuaishouCampaignList;
 import cn.com.ctop.job.kuaishou.data.entity.KuaishouCampaignList;
 import cn.com.ctop.job.kuaishou.data.entity.MediaSendAlarmRecord;
 import cn.com.ctop.job.kuaishou.data.entity.MediaSendAlarmRecord;
 import com.alibaba.fastjson.JSONObject;
 import com.alibaba.fastjson.JSONObject;
@@ -32,4 +33,6 @@ public interface AdUnitReportMapper {
     void insertSendRecord(MediaSendAlarmRecord record);
     void insertSendRecord(MediaSendAlarmRecord record);
 
 
     void deleteByMap(Map<String, Object> deleteMap);
     void deleteByMap(Map<String, Object> deleteMap);
+
+    void replaceBatchKuaishouAgentAccountList(@Param("addList") List<KuaishouAgentAccountList> agentList);
 }
 }

+ 97 - 0
job-kuaishou/src/main/java/cn/com/ctop/job/kuaishou/data/mapper/xml/AdUnitReportMapper.xml

@@ -308,4 +308,101 @@
         where account_id = #{accountId}
         where account_id = #{accountId}
           AND unit_id#{unitId}
           AND unit_id#{unitId}
     </delete>
     </delete>
+
+
+
+    <!-- 插入 代理商-广告主列表-->
+    <insert id="replaceBatchKuaishouAgentAccountList">
+        replace into `jeecg-boot`.kuaishou_agent_account_list(
+        agent_id,
+        user_id,
+        account_id,
+        account_name,
+        create_time,
+        stat_date,
+        uc_type,
+        payment_type,
+        balance,
+        credit_balance,
+        extended_balance,
+        rebate,
+        pre_rebate,
+        contract_rebate,
+        direct_rebate,
+        total_balance,
+        lo_limit,
+        single_out,
+        auto_out,
+        balance_out,
+        product_name,
+        first_cost_day,
+        industry,
+        second_industry,
+        kuaibi_balance,
+        push_balance,
+        recharged,
+        app_id,
+        corporation_name,
+        review_detail,
+        review_status,
+        forzen_status,
+        transfer_account_status,
+        create_source,
+        authentication_status,
+        authentication_detail,
+        contract_review_status,
+        contract_review_detail,
+        user_review_status,
+        user_review_detail,
+        copy_account
+
+        )
+        values
+        <foreach collection="addList" item="add" separator=",">
+            (
+            #{add.agentId},
+            #{add.userId},
+            #{add.accountId},
+            #{add.accountName},
+            #{add.createTime},
+            #{add.statDate},
+            #{add.ucType},
+            #{add.paymentType},
+            #{add.balance},
+            #{add.creditBalance},
+            #{add.extendedBalance},
+            #{add.rebate},
+            #{add.preRebate},
+            #{add.contractRebate},
+            #{add.directRebate},
+            #{add.totalBalance},
+            #{add.loLimit},
+            #{add.singleOut},
+            #{add.autoOut},
+            #{add.balanceOut},
+            #{add.productName},
+            #{add.firstCostDay},
+            #{add.industry},
+            #{add.secondIndustry},
+            #{add.kuaibiBalance},
+            #{add.pushBalance},
+            #{add.recharged},
+            #{add.appId},
+            #{add.corporationName},
+            #{add.reviewDetail},
+            #{add.reviewStatus},
+            #{add.forzenStatus},
+            #{add.transferAccountStatus},
+            #{add.createSource},
+            #{add.authenticationStatus},
+            #{add.authenticationDetail},
+            #{add.contractReviewStatus},
+            #{add.contractReviewDetail},
+            #{add.userReviewStatus},
+            #{add.userReviewDetail},
+            #{add.copyAccount}
+
+            )
+        </foreach>
+    </insert>
 </mapper>
 </mapper>

+ 3 - 1
job-kuaishou/src/main/java/cn/com/ctop/job/kuaishou/data/mapper/xml/KuaishouAccountReportDailyMapper.xml

@@ -243,6 +243,7 @@
         ,`conversion_component_rate`
         ,`conversion_component_rate`
         ,`ad_landing_page_impression`
         ,`ad_landing_page_impression`
         ,`ad_app_download_half_impression`
         ,`ad_app_download_half_impression`
+        ,`event_draw_credit_line`
         )
         )
         values
         values
         <foreach collection="addList" item="add" separator=",">
         <foreach collection="addList" item="add" separator=",">
@@ -486,7 +487,8 @@
             #{add.conversionComponentClick},
             #{add.conversionComponentClick},
             #{add.conversionComponentRate},
             #{add.conversionComponentRate},
             #{add.adLandingPageImpression},
             #{add.adLandingPageImpression},
-            #{add.adAppDownloadHalfImpression}
+            #{add.adAppDownloadHalfImpression},
+            #{add.eventDrawCreditLine}
 
 
 
 
             )
             )

+ 3 - 2
job-kuaishou/src/main/java/cn/com/ctop/job/kuaishou/data/mapper/xml/KuaishouAccountReportHourlyMapper.xml

@@ -245,6 +245,7 @@
         ,`conversion_component_rate`
         ,`conversion_component_rate`
         ,`ad_landing_page_impression`
         ,`ad_landing_page_impression`
         ,`ad_app_download_half_impression`
         ,`ad_app_download_half_impression`
+        ,`event_draw_credit_line`
 
 
         )
         )
         values
         values
@@ -490,8 +491,8 @@
             #{add.conversionComponentClick},
             #{add.conversionComponentClick},
             #{add.conversionComponentRate},
             #{add.conversionComponentRate},
             #{add.adLandingPageImpression},
             #{add.adLandingPageImpression},
-            #{add.adAppDownloadHalfImpression}
-
+            #{add.adAppDownloadHalfImpression},
+            #{add.eventDrawCreditLine}
 
 
 
 
 
 

+ 2 - 4
job-kuaishou/src/main/java/cn/com/ctop/job/kuaishou/data/service/IWarningOperationService.java

@@ -1,7 +1,5 @@
 package cn.com.ctop.job.kuaishou.data.service;
 package cn.com.ctop.job.kuaishou.data.service;
 
 
-import com.alibaba.fastjson.JSONObject;
-
 public interface IWarningOperationService {
 public interface IWarningOperationService {
     /**
     /**
      * 快手 出价方式 预警 && 操作
      * 快手 出价方式 预警 && 操作
@@ -12,7 +10,7 @@ public interface IWarningOperationService {
      * @param unitId
      * @param unitId
      * @param unit_name
      * @param unit_name
      */
      */
-    void kuaiShouWarningOperation(Long projectId, String projectName, Long advertiserId, Long unitId, String unit_name);
+    void kuaiShouWarningOperation(Long projectId, String projectName, Long advertiserId, Long unitId, String unit_name, String msg);
 
 
 
 
     /**
     /**
@@ -25,5 +23,5 @@ public interface IWarningOperationService {
      * @param unit_name
      * @param unit_name
      */
      */
 
 
-    void kuaiShouBidWarningOperation(Long projectId, String projectName, Long advertiserId, Long unitId, String unit_name);
+    void kuaiShouBidWarningOperation(Long projectId, String projectName, Long advertiserId, Long unitId, String unit_name, String msg);
 }
 }

+ 139 - 17
job-kuaishou/src/main/java/cn/com/ctop/job/kuaishou/data/service/impl/AdUnitReportServiceImpl.java

@@ -6,6 +6,7 @@ import cn.com.ctop.job.kuaishou.data.entity.KuaishouAccountAdSceneReportDaily;
 import cn.com.ctop.job.kuaishou.data.entity.KuaishouAdUnitList;
 import cn.com.ctop.job.kuaishou.data.entity.KuaishouAdUnitList;
 import cn.com.ctop.job.kuaishou.data.entity.KuaishouAdvertiserFundDailyFlows;
 import cn.com.ctop.job.kuaishou.data.entity.KuaishouAdvertiserFundDailyFlows;
 import cn.com.ctop.job.kuaishou.data.entity.KuaishouAdvertiserFundGet;
 import cn.com.ctop.job.kuaishou.data.entity.KuaishouAdvertiserFundGet;
+import cn.com.ctop.job.kuaishou.data.entity.KuaishouAgentAccountList;
 import cn.com.ctop.job.kuaishou.data.entity.KuaishouAudienceReportDaily;
 import cn.com.ctop.job.kuaishou.data.entity.KuaishouAudienceReportDaily;
 import cn.com.ctop.job.kuaishou.data.entity.KuaishouCampaignList;
 import cn.com.ctop.job.kuaishou.data.entity.KuaishouCampaignList;
 import cn.com.ctop.job.kuaishou.data.entity.OauthAgentToken;
 import cn.com.ctop.job.kuaishou.data.entity.OauthAgentToken;
@@ -136,7 +137,7 @@ public class AdUnitReportServiceImpl implements IAdUnitReportService {
             toGet = false;
             toGet = false;
         }
         }
         if (toGet) {
         if (toGet) {
-            getAdUnitReport(advertiserId, null, accessToken, startDate, endDate, page + 1);
+            getAdUnitReport(advertiserId, unitId, accessToken, startDate, endDate, page + 1);
         } else {
         } else {
             log.info("快手广告组数据获取完成:accountId:{}", advertiserId);
             log.info("快手广告组数据获取完成:accountId:{}", advertiserId);
         }
         }
@@ -196,7 +197,11 @@ public class AdUnitReportServiceImpl implements IAdUnitReportService {
         if (Check.isNull(project) || Check.isNull(details)) {
         if (Check.isNull(project) || Check.isNull(details)) {
             return;
             return;
         }
         }
-
+        Map<String, String> textMap = new HashMap<>();
+        List<JSONObject> lists = tokenMapper.getKuaishouOcpxTypeList();
+        for (JSONObject da : lists) {
+            textMap.put(da.getString("ocpxActionType"), da.getString("ocpxActionName"));
+        }
         // 最高出价
         // 最高出价
         Long maxBid = project.getLong("maxBid");
         Long maxBid = project.getLong("maxBid");
 
 
@@ -208,24 +213,34 @@ public class AdUnitReportServiceImpl implements IAdUnitReportService {
         }
         }
 
 
         //转化目标map
         //转化目标map
-        Map<Integer, Long> ocpxMap = new HashMap<>();
+        Map<Integer, String> ocpxMap = new HashMap<>();
         String ocpxTypeStr = project.getString("ocpxActionType");
         String ocpxTypeStr = project.getString("ocpxActionType");
         if (!Check.isNull(ocpxTypeStr)) {
         if (!Check.isNull(ocpxTypeStr)) {
             JSONArray ocpxArr = JSONArray.parseArray(ocpxTypeStr);
             JSONArray ocpxArr = JSONArray.parseArray(ocpxTypeStr);
+            StringBuffer nameStr = new StringBuffer();
             for (int i = 0; i < ocpxArr.size(); i++) {
             for (int i = 0; i < ocpxArr.size(); i++) {
                 JSONObject obj = ocpxArr.getJSONObject(i);
                 JSONObject obj = ocpxArr.getJSONObject(i);
-                ocpxMap.put(obj.getInteger("ocpxCode"), obj.getLong("maxValue"));
+                ocpxMap.put(obj.getInteger("ocpxCode"), obj.getString("maxValue"));
+                nameStr.append(textMap.get(obj.getString("ocpxCode"))).append(" ");
+            }
+            if (ocpxArr.size() > 0) {
+                ocpxMap.put(199999, nameStr.toString());
             }
             }
         }
         }
 
 
         //深度转化目标map
         //深度转化目标map
-        Map<Integer, Long> deepMap = new HashMap<>();
+        Map<Integer, String> deepMap = new HashMap<>();
         String deepTypeStr = project.getString("deepConversionType");
         String deepTypeStr = project.getString("deepConversionType");
         if (!Check.isNull(deepTypeStr)) {
         if (!Check.isNull(deepTypeStr)) {
             JSONArray deepArr = JSONArray.parseArray(deepTypeStr);
             JSONArray deepArr = JSONArray.parseArray(deepTypeStr);
+            StringBuffer nameStr = new StringBuffer();
             for (int i = 0; i < deepArr.size(); i++) {
             for (int i = 0; i < deepArr.size(); i++) {
                 JSONObject obj = deepArr.getJSONObject(i);
                 JSONObject obj = deepArr.getJSONObject(i);
-                deepMap.put(obj.getInteger("deepCode"), obj.getLong("deepValue"));
+                deepMap.put(obj.getInteger("deepCode"), obj.getString("deepValue"));
+                nameStr.append(textMap.get(obj.getString("deepCode"))).append(" ");
+            }
+            if (deepArr.size() > 0) {
+                deepMap.put(199999, nameStr.toString());
             }
             }
         }
         }
         List<KuaishouAdUnitList> ksAdUnitList = new ArrayList<>();
         List<KuaishouAdUnitList> ksAdUnitList = new ArrayList<>();
@@ -258,51 +273,78 @@ public class AdUnitReportServiceImpl implements IAdUnitReportService {
                     Boolean typeFalg = true;
                     Boolean typeFalg = true;
                     Boolean bidFalg = true;
                     Boolean bidFalg = true;
 
 
+                    StringBuffer msgType = new StringBuffer();
+                    StringBuffer msgBid = new StringBuffer();
                     //优化目标
                     //优化目标
                     if (!bidList.isEmpty()) {
                     if (!bidList.isEmpty()) {
                         if (!bidList.contains(bidType)) {
                         if (!bidList.contains(bidType)) {
                             //项目不包含该优化目标,则关停
                             //项目不包含该优化目标,则关停
                             typeFalg = false;
                             typeFalg = false;
+                            msgType.append("已设优化:").append(bidTypeStr).append("<br/>").append(",目标优化:").append(bidType);
                         } else if (bidType == 2 && bid > maxBid) {
                         } else if (bidType == 2 && bid > maxBid) {
                             //若优化目标为2点击数,并且广告组出价大于项目设置最大出价,则关停
                             //若优化目标为2点击数,并且广告组出价大于项目设置最大出价,则关停
                             bidFalg = false;
                             bidFalg = false;
+                            msgBid.append("目标优化为点击数,且组出价:").append(bid / 1000).append("大于项目最大出价:").append(maxBid / 1000);
                         }
                         }
                     }
                     }
                     //转化目标
                     //转化目标
                     if (!Check.isNull(ocpxActionType) && ocpxActionType != 0) {
                     if (!Check.isNull(ocpxActionType) && ocpxActionType != 0) {
+                        String ocpxStr = ocpxActionType.toString();
+                        String octypeName = Check.isNull(textMap.get(ocpxStr)) ? ocpxStr : textMap.get(ocpxStr);
                         //!=0是设置过转化目标
                         //!=0是设置过转化目标
                         if (!Check.isNullMap(ocpxMap)) {
                         if (!Check.isNullMap(ocpxMap)) {
-                            Long ocpxBid = ocpxMap.get(ocpxActionType);
+                            String ocpxBid = ocpxMap.get(ocpxActionType);
                             if (Check.isNull(ocpxBid)) {
                             if (Check.isNull(ocpxBid)) {
-                                if (ocpxActionType == 2 && dayBudget != 0 && dayBudget <= 500 * 1000) {
-                                    // 转化目标为2行为数,并且预算小于等于500且不是不限,则允许启动
-                                    typeFalg = true;
+                                if (ocpxActionType == 2) {
+                                    if (dayBudget == 0 || dayBudget > 500 * 1000) {
+                                        // 转化目标为2行为数,并且预算大于500 或者不限,则关停
+                                        msgType.append("目标转化是行为数,");
+                                        if (dayBudget == 0) {
+                                            msgType.append("且组单日预算设置为不限!");
+                                        } else {
+                                            msgType.append("且组单日预算:").append(dayBudget / 1000).append("大于500!");
+                                        }
+                                    }
                                 } else {
                                 } else {
                                     //通过key未获取值,说明不包含该目标,进行关停
                                     //通过key未获取值,说明不包含该目标,进行关停
                                     typeFalg = false;
                                     typeFalg = false;
+                                    msgType.append("已设转化:").append(ocpxMap.get(199999)).append("<br/>").append("目标转化:").append(octypeName);
                                 }
                                 }
                             } else {
                             } else {
-                                if (cpaBid > ocpxBid) {
+                                if (cpaBid > Long.valueOf(ocpxBid)) {
                                     //组转化出价 大于 项目设置最大转化出价,则关停
                                     //组转化出价 大于 项目设置最大转化出价,则关停
                                     bidFalg = false;
                                     bidFalg = false;
+                                    msgBid.append("[").append(octypeName).append("]最高出价:").append(Long.valueOf(ocpxBid) / 1000).append("<br/>");
+                                    msgBid.append("目标出价:").append(cpaBid / 1000);
                                 }
                                 }
                             }
                             }
                         } else if (ocpxActionType == 2 && (dayBudget == 0 || dayBudget > 500 * 1000)) {
                         } else if (ocpxActionType == 2 && (dayBudget == 0 || dayBudget > 500 * 1000)) {
                             // 转化目标为2行为数,并且预算大于500 或者不限,则关停
                             // 转化目标为2行为数,并且预算大于500 或者不限,则关停
                             typeFalg = false;
                             typeFalg = false;
+                            msgType.append("目标转化是行为数,");
+                            if (dayBudget == 0) {
+                                msgType.append("且组单日预算设置为不限!");
+                            } else {
+                                msgType.append("且组单日预算:").append(dayBudget / 1000).append("大于500!");
+                            }
                         }
                         }
                     }
                     }
 
 
-                    //转化目标
+                    //深度转化目标
                     if (!Check.isNull(deepConversionType) && deepConversionType != 0 && !deepMap.isEmpty()) {
                     if (!Check.isNull(deepConversionType) && deepConversionType != 0 && !deepMap.isEmpty()) {
-                        Long deepBid = deepMap.get(deepConversionType);
+                        String deepStr = deepConversionType.toString();
+                        String depTypeName = Check.isNull(textMap.get(deepStr)) ? deepStr : textMap.get(deepStr);
+                        String deepBid = deepMap.get(deepConversionType);
                         if (Check.isNull(deepBid)) {
                         if (Check.isNull(deepBid)) {
                             //通过key未获取值,说明不包含该目标,进行关停
                             //通过key未获取值,说明不包含该目标,进行关停
                             typeFalg = false;
                             typeFalg = false;
+                            msgType.append("已设深度:").append(deepMap.get(199999)).append("<br/>").append("目标深度:").append(depTypeName);
                         } else {
                         } else {
-                            if (deepConversionBid > deepBid) {
+                            if (deepConversionBid > Long.valueOf(deepBid)) {
                                 //组深度转化出价 大于 项目设置最大转化出价,则关停
                                 //组深度转化出价 大于 项目设置最大转化出价,则关停
                                 bidFalg = false;
                                 bidFalg = false;
+                                msgBid.append("[").append(depTypeName).append("]最高深度出价:").append(Long.valueOf(deepBid) / 1000).append("<br/>");
+                                msgBid.append("目标深度出价:").append(deepConversionBid / 1000);
                             }
                             }
                         }
                         }
                     }
                     }
@@ -311,7 +353,7 @@ public class AdUnitReportServiceImpl implements IAdUnitReportService {
                         executorBidTypeService.submit(new Runnable() {
                         executorBidTypeService.submit(new Runnable() {
                             @Override
                             @Override
                             public void run() {
                             public void run() {
-                                warningOperationService.kuaiShouWarningOperation(project.getLong("projectId"), project.getString("projectName"), accountId, unitId, unitName);
+                                warningOperationService.kuaiShouWarningOperation(project.getLong("projectId"), project.getString("projectName"), accountId, unitId, unitName, msgType.toString());
                             }
                             }
                         });
                         });
                     }
                     }
@@ -319,7 +361,7 @@ public class AdUnitReportServiceImpl implements IAdUnitReportService {
                         executorMaxBidService.submit(new Runnable() {
                         executorMaxBidService.submit(new Runnable() {
                             @Override
                             @Override
                             public void run() {
                             public void run() {
-                                warningOperationService.kuaiShouBidWarningOperation(project.getLong("projectId"), project.getString("projectName"), accountId, unitId, unitName);
+                                warningOperationService.kuaiShouBidWarningOperation(project.getLong("projectId"), project.getString("projectName"), accountId, unitId, unitName, msgBid.toString());
                             }
                             }
                         });
                         });
                     }
                     }
@@ -364,7 +406,7 @@ public class AdUnitReportServiceImpl implements IAdUnitReportService {
                         deleteMap.put("unitId", unitId);
                         deleteMap.put("unitId", unitId);
                         adUnitReportMapper.deleteByMap(deleteMap);
                         adUnitReportMapper.deleteByMap(deleteMap);
                     } else {
                     } else {
-                        getAdUnitReport(acccountId, null, token, null, null, 1);
+                        getAdUnitReport(acccountId, unitId, token, null, null, 1);
                     }
                     }
                 } else {
                 } else {
                     log.error("=》=》=》AdUnitReportServiceImpl.updateUnitStatus修改广告组状态失败,advertiserId:{},unitId:{},返回信息:{}", acccountId, unitId, resultJson);
                     log.error("=》=》=》AdUnitReportServiceImpl.updateUnitStatus修改广告组状态失败,advertiserId:{},unitId:{},返回信息:{}", acccountId, unitId, resultJson);
@@ -798,5 +840,85 @@ public class AdUnitReportServiceImpl implements IAdUnitReportService {
         return fundDailyFlowsMapper.getAllAccounts();
         return fundDailyFlowsMapper.getAllAccounts();
     }
     }
 
 
+    /**
+     * 快手-代理商数据
+     */
+    @Override
+    public void getAgentAccountList() {
+        List<Long> appList = new ArrayList<>();
+        appList.add(27L);
+        appList.add(165893351L);
+        for (int i = 0; i < appList.size(); i++) {
+            Long appId = appList.get(i);
+            OauthAgentToken agentToken = agentTokenMapper.getTokenByAppId(appId);
+            getAgentAccountList(agentToken.getAccessToken(), agentToken.getAgentId(), 1);
+        }
+
+    }
+
+
+    /**
+     * 代理商获取广告主列表
+     */
+    private void getAgentAccountList(String token, Long agentId, int page) {
+        try {
+            log.info("=====代理商获取广告主列表====page--{}===《《《《《", page);
+            Map<String, String> headers = new HashMap<String, String>();
+            headers.put("Content-Type", " application/json");
+            headers.put("Access-Token", token);
+            JSONObject param = new JSONObject();
+            param.put("select_type", 0);
+            param.put("select_value", null);
+            param.put("agent_id", agentId);
+            param.put("page_size", 1000);
+            param.put("page", page);
+
+            String result = HttpUtils.httpPostRequest(postUrl + KuaishouConstant.AGENT_ACCOUNT_LIST, param, headers);
+            JSONObject resultJson = JSONObject.parseObject(result);
+            if (Check.isNull(resultJson)) {
+                log.info("代理商获取广告主列表返回为空");
+                return;
+            }
+            Integer code = resultJson.getInteger("code");
+            if (code != 0) {
+                log.error("代理商获取广告主列表code错误,返回:{}", resultJson);
+                return;
+            }
+            JSONObject data = resultJson.getJSONObject("data");
+            if (Check.isNull(data)) {
+                log.error("代理商获取广告主列表data节点为空");
+                return;
+            }
+            JSONArray details = data.getJSONArray("details");
+            if (Check.isNull(details)) {
+                log.error("代理商获取广告主列表details节点为空");
+                return;
+            }
+
+            List<KuaishouAgentAccountList> agentList = new ArrayList<>();
+            for (int i = 0; i < details.size(); i++) {
+                JSONObject detailJson = details.getJSONObject(i);
+                if (!Check.isNull(detailJson)) {
+                    KuaishouAgentAccountList agent = new KuaishouAgentAccountList(detailJson, agentId);
+                    agentList.add(agent);
+                }
+            }
+            if (!Check.isNull(agentList)) {
+                adUnitReportMapper.replaceBatchKuaishouAgentAccountList(agentList);
+            }
+            //是否有下一页
+            Boolean toGet = true;
+            if (details.size() < 1000) {
+                toGet = false;
+            }
+            if (toGet) {
+                getAgentAccountList(token, agentId, page + 1);
+            } else {
+                log.info("代理商获取广告主列表完成========");
+            }
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
 
 
+    }
 }
 }

+ 22 - 20
job-kuaishou/src/main/java/cn/com/ctop/job/kuaishou/data/service/impl/WarningOperationServiceImpl.java

@@ -40,10 +40,10 @@ public class WarningOperationServiceImpl implements IWarningOperationService {
      */
      */
 
 
     @Override
     @Override
-    public void kuaiShouWarningOperation(Long projectId, String projectName, Long accountId, Long unitId, String unit_name) {
+    public void kuaiShouWarningOperation(Long projectId, String projectName, Long accountId, Long unitId, String unit_name, String msg) {
         String token = tokenService.getByAccountId(accountId);
         String token = tokenService.getByAccountId(accountId);
-//        unitReportService.updateUnitStatus(token, accountId, unitId, 2);
-        String text = getKuaiShouBidTypeMessage(projectName, accountId, unitId, unit_name);
+        unitReportService.updateUnitStatus(token, accountId, unitId, 2);
+        String text = getKuaiShouBidTypeMessage(projectName + "(" + projectId + ")", accountId, unitId, unit_name, msg);
         //日志记录
         //日志记录
         MediaSendAlarmRecord record = new MediaSendAlarmRecord(accountId, "2", text, unitId);
         MediaSendAlarmRecord record = new MediaSendAlarmRecord(accountId, "2", text, unitId);
         adUnitReportMapper.insertSendRecord(record);
         adUnitReportMapper.insertSendRecord(record);
@@ -52,15 +52,16 @@ public class WarningOperationServiceImpl implements IWarningOperationService {
         corpWexinUtils.sendMessage(wexinIds, text);
         corpWexinUtils.sendMessage(wexinIds, text);
     }
     }
 
 
-    private String getKuaiShouBidTypeMessage(String projectName, Long advertiserId, Long unitId, String unit_name) {
+    private String getKuaiShouBidTypeMessage(String projectName, Long advertiserId, Long unitId, String unit_name, String msg) {
         StringBuilder text = new StringBuilder();
         StringBuilder text = new StringBuilder();
         text.append("出价方式错误预警").append("<br/>")
         text.append("出价方式错误预警").append("<br/>")
-                .append("您的项目:").append(projectName + ",").append("<br/>")
-                .append("下的账户:").append(advertiserId + ",").append("<br/>")
-                .append("广告组id为:").append(unitId).append("<br/>")
-                .append("广告组名称为:").append(unit_name).append("<br/>")
-                .append("出价方式设置错误。").append("<br/>")
-                .append("系统已执行暂停此组操作,请您及时查看!");
+                .append("您本地的项目:").append(projectName).append("<br/>")
+                .append("下的账户:").append(advertiserId).append("<br/>")
+                .append("广告组id:").append(unitId).append("<br/>")
+                .append("广告组名称:").append(unit_name).append("<br/>")
+                .append("预警说明:").append("<br/>")
+                .append(msg).append("<br/>")
+                .append("系统已暂停该广告组,请您及时查看并处理!");
         return text.toString();
         return text.toString();
     }
     }
 
 
@@ -76,11 +77,11 @@ public class WarningOperationServiceImpl implements IWarningOperationService {
      */
      */
 
 
     @Override
     @Override
-    public void kuaiShouBidWarningOperation(Long projectId, String projectName, Long accountId, Long unitId, String unit_name) {
+    public void kuaiShouBidWarningOperation(Long projectId, String projectName, Long accountId, Long unitId, String unit_name, String msg) {
         String token = tokenService.getByAccountId(accountId);
         String token = tokenService.getByAccountId(accountId);
-//        unitReportService.updateUnitStatus(token, accountId, unitId, 2);
+        unitReportService.updateUnitStatus(token, accountId, unitId, 2);
         //日志记录
         //日志记录
-        String text = getKuaiShouBidMessage(projectName, accountId, unitId, unit_name);
+        String text = getKuaiShouBidMessage(projectName + "(" + projectId + ")", accountId, unitId, unit_name, msg);
         MediaSendAlarmRecord record = new MediaSendAlarmRecord(accountId, "2", text, unitId);
         MediaSendAlarmRecord record = new MediaSendAlarmRecord(accountId, "2", text, unitId);
         adUnitReportMapper.insertSendRecord(record);
         adUnitReportMapper.insertSendRecord(record);
 
 
@@ -88,15 +89,16 @@ public class WarningOperationServiceImpl implements IWarningOperationService {
         corpWexinUtils.sendMessage(wexinIds, text);
         corpWexinUtils.sendMessage(wexinIds, text);
     }
     }
 
 
-    private String getKuaiShouBidMessage(String projectName, Long advertiserId, Long unitId, String unit_name) {
+    private String getKuaiShouBidMessage(String projectName, Long advertiserId, Long unitId, String unit_name, String msg) {
         StringBuilder text = new StringBuilder();
         StringBuilder text = new StringBuilder();
         text.append("出价过高预警").append("<br/>")
         text.append("出价过高预警").append("<br/>")
-                .append("您的项目:").append(projectName + ",").append("<br/>")
-                .append("下的账户:").append(advertiserId + ",").append("<br/>")
-                .append("广告组id为:").append(unitId).append("<br/>")
-                .append("广告组名称为:").append(unit_name).append("<br/>")
-                .append("出价设置过高。").append("<br/>")
-                .append("系统已执行暂停此组操作,请您及时查看!");
+                .append("您本地的项目:").append(projectName).append("<br/>")
+                .append("下的账户:").append(advertiserId).append("<br/>")
+                .append("广告组id:").append(unitId).append("<br/>")
+                .append("广告组名称:").append(unit_name).append("<br/>")
+                .append("预警说明:").append("<br/>")
+                .append(msg).append("<br/>")
+                .append("系统已暂停该广告组,请您及时查看并处理!");
         return text.toString();
         return text.toString();
     }
     }
 }
 }

+ 1 - 1
job-kuaishou/src/main/java/cn/com/ctop/job/kuaishou/data/utils/DateUtils.java

@@ -115,6 +115,6 @@ public class DateUtils {
 
 
     public static void main(String[] args) {
     public static void main(String[] args) {
 
 
-        System.out.println(tempToDate(1704858060000L,"yyyy-MMdd"));
+        System.out.println(tempToDate(1721873285120L,"yyyy-MM-dd HH:mm:ss"));
     }
     }
 }
 }

+ 10 - 0
job-kuaishou/src/main/java/cn/com/ctop/job/kuaishou/handler/AdUnitReportJob.java

@@ -144,6 +144,16 @@ public class AdUnitReportJob {
         adUnitReportService.getAgentReport();
         adUnitReportService.getAgentReport();
     }
     }
 
 
+    /**
+     * 代理商t-1数据获取
+     *
+     * @throws
+     */
+    @XxlJob("kuaiShouAgentAccountListJob")
+    public void kuaiShouAgentAccountListJob() throws Exception {
+        adUnitReportService.getAgentAccountList();
+    }
+
 
 
     /**
     /**
      * 快手-账户日报-adScene(按广告场景)
      * 快手-账户日报-adScene(按广告场景)