yumeng 1 год назад
Родитель
Сommit
2c177eb308

+ 28 - 0
job-bytedance/src/main/java/cn/com/ctop/job/bytedance/controller/BytedanceController.java

@@ -6,6 +6,7 @@ import cn.com.ctop.job.bytedance.data.service.*;
 import cn.com.ctop.job.bytedance.data.utils.Check;
 import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
+import com.google.common.collect.Lists;
 import io.swagger.annotations.Api;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -54,6 +55,33 @@ public class BytedanceController {
     private IBytedanceMaterialReportService bytedanceMaterialReportService;
 
 
+    @GetMapping("/agentData")
+    public void agentData() {
+        List<JSONObject> adminAdvertiserList = adminAdvertiserListService.getAdminAdvertiserList();
+        for (JSONObject adminAdvertiserJson : adminAdvertiserList) {
+            Long adminAdvertiserId = adminAdvertiserJson.getLong("adminAdvertiserId");
+            String accessToken = adminAdvertiserJson.getString("accessToken");
+            List<Long> infos = adminAdvertiserListService.getAgentAdvertiserList(adminAdvertiserId);
+            if (Check.isNull(infos)) {
+                log.info("没有需要获取代理商信息的账户id,adminAdvertiserId:{}", adminAdvertiserId);
+                continue;
+            }
+            List<List<Long>> advertiserList = Lists.partition(infos, 50);
+            for (List<Long> longs : advertiserList) {
+                dailyRetrExecutorService.submit(new Runnable() {
+                    @Override
+                    public void run() {
+                        if (!Check.isNull(accessToken)) {
+                            adminAdvertiserListService.getAgentInfo(adminAdvertiserId, accessToken, longs);
+
+                        }
+                    }
+                });
+            }
+        }
+    }
+
+
     @GetMapping("/accountReport")
     public void getChannel() {
 

+ 312 - 0
job-bytedance/src/main/java/cn/com/ctop/job/bytedance/data/entity/BytedanceAgentAdvertiserList.java

@@ -0,0 +1,312 @@
+package cn.com.ctop.job.bytedance.data.entity;
+
+import java.util.Date;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import org.apache.commons.lang3.builder.ToStringBuilder;
+import org.apache.commons.lang3.builder.ToStringStyle;
+
+
+/**
+ * 【请填写功能名称】对象 bytedance_agent_advertiser_list
+ *
+ * @author ruoyi
+ * @date 2025-08-28
+ */
+public class BytedanceAgentAdvertiserList {
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 管家账户ID
+     */
+    private Long adminAdvertiserId;
+
+    /**
+     * 广告主公司ID
+     */
+    private Long advCompanyId;
+
+    /**
+     * 广告主公司名称
+     */
+    private String advCompanyName;
+
+    /**
+     * 广告主ID
+     */
+    private Long advertiserId;
+
+    /**
+     * 广告主名称
+     */
+    private String advertiserName;
+
+    /**
+     * 广告主账户状态
+     */
+    private String advertiserStatus;
+
+    /**
+     * 对公认证过期时间
+     */
+    private String authExpireDate;
+
+    /**
+     * 联系人姓名
+     */
+    private String contactName;
+
+    /**
+     * 直客销售名称
+     */
+    private String customerSaleName;
+
+    /**
+     * 一代代理商公司ID
+     */
+    private Long firstAgentCompanyId;
+
+    /**
+     * 一代代理商公司名称
+     */
+    private String firstAgentCompanyName;
+
+    /**
+     * 一级代理商账户ID
+     */
+    private Long firstAgentId;
+    private String firstAgentName;
+
+    /**
+     * 一级行业名称
+     */
+    private String firstIndustryName;
+
+    /**
+     * 二级行业名称
+     */
+    private String secondIndustryName;
+
+    /**
+     * 销售ID
+     */
+    private Long saleId;
+
+    /**
+     * 销售名称
+     */
+    private String saleName;
+
+    /**
+     * 账户报备类型
+     */
+    private String selfOperationTag;
+    private String createTime;
+
+    /**
+     * 创建时间
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    private Date createAt;
+
+    /**
+     * 修改时间
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    private Date updateAt;
+
+    public Long getAdminAdvertiserId() {
+        return adminAdvertiserId;
+    }
+
+    public void setAdminAdvertiserId(Long adminAdvertiserId) {
+        this.adminAdvertiserId = adminAdvertiserId;
+    }
+
+    public Long getAdvCompanyId() {
+        return advCompanyId;
+    }
+
+    public void setAdvCompanyId(Long advCompanyId) {
+        this.advCompanyId = advCompanyId;
+    }
+
+    public String getAdvCompanyName() {
+        return advCompanyName;
+    }
+
+    public void setAdvCompanyName(String advCompanyName) {
+        this.advCompanyName = advCompanyName;
+    }
+
+    public Long getAdvertiserId() {
+        return advertiserId;
+    }
+
+    public void setAdvertiserId(Long advertiserId) {
+        this.advertiserId = advertiserId;
+    }
+
+    public String getAdvertiserName() {
+        return advertiserName;
+    }
+
+    public void setAdvertiserName(String advertiserName) {
+        this.advertiserName = advertiserName;
+    }
+
+    public String getAdvertiserStatus() {
+        return advertiserStatus;
+    }
+
+    public void setAdvertiserStatus(String advertiserStatus) {
+        this.advertiserStatus = advertiserStatus;
+    }
+
+    public String getAuthExpireDate() {
+        return authExpireDate;
+    }
+
+    public void setAuthExpireDate(String authExpireDate) {
+        this.authExpireDate = authExpireDate;
+    }
+
+    public String getContactName() {
+        return contactName;
+    }
+
+    public void setContactName(String contactName) {
+        this.contactName = contactName;
+    }
+
+    public String getCustomerSaleName() {
+        return customerSaleName;
+    }
+
+    public void setCustomerSaleName(String customerSaleName) {
+        this.customerSaleName = customerSaleName;
+    }
+
+    public Long getFirstAgentCompanyId() {
+        return firstAgentCompanyId;
+    }
+
+    public void setFirstAgentCompanyId(Long firstAgentCompanyId) {
+        this.firstAgentCompanyId = firstAgentCompanyId;
+    }
+
+    public String getFirstAgentCompanyName() {
+        return firstAgentCompanyName;
+    }
+
+    public void setFirstAgentCompanyName(String firstAgentCompanyName) {
+        this.firstAgentCompanyName = firstAgentCompanyName;
+    }
+
+    public Long getFirstAgentId() {
+        return firstAgentId;
+    }
+
+    public void setFirstAgentId(Long firstAgentId) {
+        this.firstAgentId = firstAgentId;
+    }
+
+    public String getFirstAgentName() {
+        return firstAgentName;
+    }
+
+    public void setFirstAgentName(String firstAgentName) {
+        this.firstAgentName = firstAgentName;
+    }
+
+    public String getFirstIndustryName() {
+        return firstIndustryName;
+    }
+
+    public void setFirstIndustryName(String firstIndustryName) {
+        this.firstIndustryName = firstIndustryName;
+    }
+
+    public String getSecondIndustryName() {
+        return secondIndustryName;
+    }
+
+    public void setSecondIndustryName(String secondIndustryName) {
+        this.secondIndustryName = secondIndustryName;
+    }
+
+    public Long getSaleId() {
+        return saleId;
+    }
+
+    public void setSaleId(Long saleId) {
+        this.saleId = saleId;
+    }
+
+    public String getSaleName() {
+        return saleName;
+    }
+
+    public void setSaleName(String saleName) {
+        this.saleName = saleName;
+    }
+
+    public String getSelfOperationTag() {
+        return selfOperationTag;
+    }
+
+    public void setSelfOperationTag(String selfOperationTag) {
+        this.selfOperationTag = selfOperationTag;
+    }
+
+    public String getCreateTime() {
+        return createTime;
+    }
+
+    public void setCreateTime(String createTime) {
+        this.createTime = createTime;
+    }
+
+    public Date getCreateAt() {
+        return createAt;
+    }
+
+    public void setCreateAt(Date createAt) {
+        this.createAt = createAt;
+    }
+
+    public Date getUpdateAt() {
+        return updateAt;
+    }
+
+    public void setUpdateAt(Date updateAt) {
+        this.updateAt = updateAt;
+    }
+
+    @Override
+    public String toString() {
+        return "BytedanceAgentAdvertiserList{" +
+                "adminAdvertiserId=" + adminAdvertiserId +
+                ", advCompanyId=" + advCompanyId +
+                ", advCompanyName='" + advCompanyName + '\'' +
+                ", advertiserId=" + advertiserId +
+                ", advertiserName='" + advertiserName + '\'' +
+                ", advertiserStatus='" + advertiserStatus + '\'' +
+                ", authExpireDate='" + authExpireDate + '\'' +
+                ", contactName='" + contactName + '\'' +
+                ", customerSaleName='" + customerSaleName + '\'' +
+                ", firstAgentCompanyId=" + firstAgentCompanyId +
+                ", firstAgentCompanyName='" + firstAgentCompanyName + '\'' +
+                ", firstAgentId=" + firstAgentId +
+                ", firstAgentName='" + firstAgentName + '\'' +
+                ", firstIndustryName='" + firstIndustryName + '\'' +
+                ", secondIndustryName='" + secondIndustryName + '\'' +
+                ", saleId=" + saleId +
+                ", saleName='" + saleName + '\'' +
+                ", selfOperationTag='" + selfOperationTag + '\'' +
+                ", createTime='" + createTime + '\'' +
+                ", createAt=" + createAt +
+                ", updateAt=" + updateAt +
+                '}';
+    }
+}

+ 7 - 0
job-bytedance/src/main/java/cn/com/ctop/job/bytedance/data/mapper/AdminAdvertiserListMapper.java

@@ -1,6 +1,7 @@
 package cn.com.ctop.job.bytedance.data.mapper;
 
 import cn.com.ctop.job.bytedance.data.entity.BytedanceAdvertiserList;
+import cn.com.ctop.job.bytedance.data.entity.BytedanceAgentAdvertiserList;
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.dynamic.datasource.annotation.DS;
 import org.apache.ibatis.annotations.Param;
@@ -16,4 +17,10 @@ public interface AdminAdvertiserListMapper {
 
     @DS("selectdb")
     List<JSONObject> getAdvertiserInfosByAdminIds();
+
+    List<Long> getAgentAdvertiserList(@Param("adminAdvertiserId") Long adminAdvertiserId);
+
+    List<JSONObject> getAdminAdvertiserList();
+
+    void addAgentList(@Param("adds") List<BytedanceAgentAdvertiserList> adds);
 }

+ 62 - 0
job-bytedance/src/main/java/cn/com/ctop/job/bytedance/data/mapper/xml/AdminAdvertiserListMapper.xml

@@ -22,6 +22,54 @@
         on duplicate key update
         advertiser_name= VALUES(advertiser_name)
     </insert>
+    <insert id="addAgentList">
+        replace into deepthink.bytedance_agent_advertiser_list(
+        admin_advertiser_id,
+        adv_company_id,
+        adv_company_name,
+        advertiser_id,
+        advertiser_name,
+        advertiser_status,
+        auth_expire_date,
+        contact_name,
+        create_time,
+        customer_sale_name,
+        first_agent_company_id,
+        first_agent_company_name,
+        first_agent_id,
+        first_agent_name,
+        first_industry_name,
+        second_industry_name,
+        sale_id,
+        sale_name,
+        self_operation_tag
+        )
+        values
+        <foreach collection="adds" item="add" separator=",">
+            (
+            #{add.adminAdvertiserId},
+            #{add.advCompanyId},
+            #{add.advCompanyName},
+            #{add.advertiserId},
+            #{add.advertiserName},
+            #{add.advertiserStatus},
+            #{add.authExpireDate},
+            #{add.contactName},
+            #{add.createTime},
+            #{add.customerSaleName},
+            #{add.firstAgentCompanyId},
+            #{add.firstAgentCompanyName},
+            #{add.firstAgentId},
+            #{add.firstAgentName},
+            #{add.firstIndustryName},
+            #{add.secondIndustryName},
+            #{add.saleId},
+            #{add.saleName},
+            #{add.selfOperationTag}
+            )
+        </foreach>
+
+    </insert>
     <update id="batchUpdateAdvertiserName">
         <foreach collection="infos" item="info" separator=";">
             UPDATE deepthink.advertiser_bind_info
@@ -52,4 +100,18 @@
         WHERE t.advertiserId IS NOT NULL
 
     </select>
+    <select id="getAgentAdvertiserList" resultType="java.lang.Long">
+        select t1.advertiser_id
+        from deepthink.bytedance_advertiser_list t1
+                 left join deepthink.bytedance_agent_advertiser_list t2
+                           on t1.advertiser_id = t2.advertiser_id
+
+        where t1.admin_advertiser_id = #{adminAdvertiserId}
+          and t2.advertiser_id is null
+    </select>
+    <select id="getAdminAdvertiserList" resultType="com.alibaba.fastjson.JSONObject">
+        select admin_advertiser_id as 'adminAdvertiserId',access_token as 'accessToken'
+        from deepthink.bytedance_auth_list
+        group by admin_advertiser_id
+    </select>
 </mapper>

+ 6 - 0
job-bytedance/src/main/java/cn/com/ctop/job/bytedance/data/service/IAdminAdvertiserListService.java

@@ -14,4 +14,10 @@ public interface IAdminAdvertiserListService {
     void batchUpdateAdvertiserName(List<JSONObject> infos);
 
     List<JSONObject> getAdvertiserInfosByAdminIds();
+
+    List<Long> getAgentAdvertiserList(Long adminAdvertiserId);
+
+    List<JSONObject> getAdminAdvertiserList();
+
+    void getAgentInfo(Long adminAdvertiserId, String accessToken, List<Long> longs);
 }

+ 50 - 0
job-bytedance/src/main/java/cn/com/ctop/job/bytedance/data/service/impl/AdminAdvertiserListServiceImpl.java

@@ -1,6 +1,7 @@
 package cn.com.ctop.job.bytedance.data.service.impl;
 
 import cn.com.ctop.job.bytedance.data.entity.BytedanceAdvertiserList;
+import cn.com.ctop.job.bytedance.data.entity.BytedanceAgentAdvertiserList;
 import cn.com.ctop.job.bytedance.data.mapper.AdminAdvertiserListMapper;
 import cn.com.ctop.job.bytedance.data.service.IAdminAdvertiserListService;
 import cn.com.ctop.job.bytedance.data.utils.Check;
@@ -118,6 +119,55 @@ public class AdminAdvertiserListServiceImpl implements IAdminAdvertiserListServi
         return adminAdvertiserListMapper.getAdvertiserInfosByAdminIds();
     }
 
+    @Override
+    public List<Long> getAgentAdvertiserList(Long adminAdvertiserId) {
+        return adminAdvertiserListMapper.getAgentAdvertiserList(adminAdvertiserId);
+    }
+
+    @Override
+    public List<JSONObject> getAdminAdvertiserList() {
+        return adminAdvertiserListMapper.getAdminAdvertiserList();
+    }
+
+    @Override
+    public void getAgentInfo(Long adminAdvertiserId, String accessToken, List<Long> longs) {
+
+        String url = "https://api.oceanengine.com/open_api/2/agent/advertiser_info/query/";
+        Map<String, Object> paramsMap = new HashMap<>();
+        paramsMap.put("account_ids", longs);
+        Map<String, String> headers = new HashMap<>();
+        headers.put("Access-Token", accessToken);
+        headers.put("Content-Type", "application/json");
+
+        String s = HttpUtils.httpGet(url, paramsMap, headers);
+        JSONObject jsonObject = JSONObject.parseObject(s);
+        List<BytedanceAgentAdvertiserList> adds = new ArrayList<>();
+        if (!Check.isNull(jsonObject)) {
+            Integer code = jsonObject.getInteger("code");
+            if (code == 0) {
+                JSONObject data = jsonObject.getJSONObject("data");
+                if (!Check.isNull(data)) {
+                    JSONArray accountDetailList = data.getJSONArray("account_detail_list");
+                    if (!Check.isNull(accountDetailList)) {
+                        for (int i = 0; i < accountDetailList.size(); i++) {
+                            JSONObject accountDetail = accountDetailList.getJSONObject(i);
+                            BytedanceAgentAdvertiserList javaObject = JSONObject.toJavaObject(accountDetail, BytedanceAgentAdvertiserList.class);
+                            javaObject.setAdminAdvertiserId(adminAdvertiserId);
+                            adds.add(javaObject);
+                        }
+
+                    }
+                }
+            }
+
+        }
+        if (!Check.isNull(adds)) {
+            adminAdvertiserListMapper.addAgentList(adds);
+        }
+
+
+    }
+
     // 分页结果包装类
     static class PageResult {
         private final int pageNumber;

+ 31 - 0
job-bytedance/src/main/java/cn/com/ctop/job/bytedance/handler/AdminAdvertiserListJob.java

@@ -4,11 +4,13 @@ package cn.com.ctop.job.bytedance.handler;
 import cn.com.ctop.job.bytedance.data.service.IAdminAdvertiserListService;
 import cn.com.ctop.job.bytedance.data.utils.Check;
 import com.alibaba.fastjson.JSONObject;
+import com.google.common.collect.Lists;
 import com.xxl.job.core.context.XxlJobHelper;
 import com.xxl.job.core.handler.annotation.XxlJob;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
+import org.springframework.web.bind.annotation.GetMapping;
 
 import java.util.List;
 import java.util.concurrent.ExecutorService;
@@ -26,6 +28,35 @@ public class AdminAdvertiserListJob {
     @Autowired
     private IAdminAdvertiserListService adminAdvertiserListService;
     private static ExecutorService adminService = Executors.newFixedThreadPool(2);
+    private static ExecutorService agentExecutorService = Executors.newFixedThreadPool(5);
+
+
+    @XxlJob("agentData")
+    public void agentData() {
+        List<JSONObject> adminAdvertiserList = adminAdvertiserListService.getAdminAdvertiserList();
+        for (JSONObject adminAdvertiserJson : adminAdvertiserList) {
+            Long adminAdvertiserId = adminAdvertiserJson.getLong("adminAdvertiserId");
+            String accessToken = adminAdvertiserJson.getString("accessToken");
+            List<Long> infos = adminAdvertiserListService.getAgentAdvertiserList(adminAdvertiserId);
+            if (Check.isNull(infos)) {
+                log.info("没有需要获取代理商信息的账户id,adminAdvertiserId:{}", adminAdvertiserId);
+                continue;
+            }
+            List<List<Long>> advertiserList = Lists.partition(infos, 50);
+            for (List<Long> longs : advertiserList) {
+                agentExecutorService.submit(new Runnable() {
+                    @Override
+                    public void run() {
+                        if (!Check.isNull(accessToken)) {
+                            adminAdvertiserListService.getAgentInfo(adminAdvertiserId, accessToken, longs);
+
+                        }
+                    }
+                });
+            }
+        }
+    }
+
 
     @XxlJob("getAdminAdvertiserList")
     public void getAdminAdvertiserList() throws Exception {