Browse Source

adq刷新管家账户

yumeng 1 year ago
parent
commit
ffd55a0ac0

+ 25 - 8
job-adq/src/main/java/cn/com/ctop/job/adq/controller/AdqController.java

@@ -1,5 +1,6 @@
 package cn.com.ctop.job.adq.controller;
 
+import cn.com.ctop.job.adq.data.service.IAdqAdminAdvertiserListService;
 import cn.com.ctop.job.adq.data.service.IAdqReportService;
 import cn.com.ctop.job.adq.data.service.IAdqRetryReportService;
 import cn.com.ctop.job.adq.data.utils.Check;
@@ -29,27 +30,35 @@ import java.util.concurrent.Executors;
 @Api(tags = "adq")
 @Slf4j
 public class AdqController {
-    private static ExecutorService dailyExecutorService = Executors.newFixedThreadPool(3);
+    private static ExecutorService dailyExecutorService = Executors.newFixedThreadPool(5);
     @Autowired
     private IAdqReportService adqReportService;
     @Autowired
     private IAdqRetryReportService retryReportService;
+    @Autowired
+    private IAdqAdminAdvertiserListService adminAdvertiserListService;
 
     @GetMapping("/testCreativeHour")
     public JSONObject testRefreshToken(String date) {
         List<JSONObject> list = adqReportService.getAccountList();
+        List<String> days = DateUtils.getDays("2025-02-15", "2025-03-13");
+
         for (int i = 0; i < list.size(); i++) {
             JSONObject jsonObject = list.get(i);
 
             Long advertiserId = jsonObject.getLong("advertiserId");
             String accessToken = jsonObject.getString("accessToken");
-            dailyExecutorService.submit(new Runnable() {
-                @Override
-                public void run() {
-                    adqReportService.getAdqCreativeHour(advertiserId, accessToken, date, date, 1, 1);
-                    adqReportService.getAdqCreativeDaily(advertiserId, accessToken, date, date, 1, 1);
-                }
-            });
+            for (int j = 0; j < days.size(); j++) {
+                String s = days.get(j);
+                dailyExecutorService.submit(new Runnable() {
+                    @Override
+                    public void run() {
+                        adqReportService.getAdqCreativeHour(advertiserId, accessToken, s, s, 1, 1);
+                    }
+                });
+            }
+
+
         }
         return null;
     }
@@ -82,5 +91,13 @@ public class AdqController {
         return null;
     }
 
+    @GetMapping("/getList")
+    public JSONObject getList() {
+
+        adminAdvertiserListService.getAdminAdvertiserList(54431317L, "0aa32eb213924af9d6ef1335423ab605", null);
+
+        return null;
+    }
+
 
 }

+ 102 - 0
job-adq/src/main/java/cn/com/ctop/job/adq/data/entity/AdqAdvertiserList.java

@@ -0,0 +1,102 @@
+package cn.com.ctop.job.adq.data.entity;
+
+
+/**
+ * 【请填写功能名称】对象 adq_advertiser_list
+ *
+ * @author ruoyi
+ * @date 2025-03-03
+ */
+public class AdqAdvertiserList {
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 管家账户ID
+     */
+    private Long adminAdvertiserId;
+
+    /**
+     * 广告主ID
+     */
+    private Long advertiserId;
+
+    /**
+     * 广告主名称
+     */
+    private String advertiserName;
+
+    /**
+     * 公司
+     */
+    private String corporationName;
+
+    /**
+     * 1 是 2 否
+     */
+    private Integer isAdx;
+
+    /**
+     * 1 是 2 否
+     */
+    private Integer isMp;
+
+    public Long getAdminAdvertiserId() {
+        return adminAdvertiserId;
+    }
+
+    public void setAdminAdvertiserId(Long adminAdvertiserId) {
+        this.adminAdvertiserId = adminAdvertiserId;
+    }
+
+    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 getCorporationName() {
+        return corporationName;
+    }
+
+    public void setCorporationName(String corporationName) {
+        this.corporationName = corporationName;
+    }
+
+    public Integer getIsAdx() {
+        return isAdx;
+    }
+
+    public void setIsAdx(Integer isAdx) {
+        this.isAdx = isAdx;
+    }
+
+    public Integer getIsMp() {
+        return isMp;
+    }
+
+    public void setIsMp(Integer isMp) {
+        this.isMp = isMp;
+    }
+
+    @Override
+    public String toString() {
+        return "AdqAdvertiserList{" +
+                "adminAdvertiserId=" + adminAdvertiserId +
+                ", advertiserId=" + advertiserId +
+                ", advertiserName='" + advertiserName + '\'' +
+                ", corporationName='" + corporationName + '\'' +
+                ", isAdx=" + isAdx +
+                ", isMp=" + isMp +
+                '}';
+    }
+}

+ 10 - 0
job-adq/src/main/java/cn/com/ctop/job/adq/data/mapper/AdqAdminAdvertiserListMapper.java

@@ -0,0 +1,10 @@
+package cn.com.ctop.job.adq.data.mapper;
+
+import cn.com.ctop.job.adq.data.entity.AdqAdvertiserList;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+public interface AdqAdminAdvertiserListMapper {
+    void replaceAdqAccountList(@Param("adds") List<AdqAdvertiserList> addList);
+}

+ 27 - 0
job-adq/src/main/java/cn/com/ctop/job/adq/data/mapper/xml/AdqAdminAdvertiserListMapper.xml

@@ -0,0 +1,27 @@
+<?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.job.adq.data.mapper.AdqAdminAdvertiserListMapper">
+
+
+    <insert id="replaceAdqAccountList">
+        replace into deepthink.adq_advertiser_list(
+        admin_advertiser_id,
+        advertiser_id,
+        advertiser_name,
+        `corporation_name`,
+        is_adx,
+        is_mp
+        )
+        values
+        <foreach collection="adds" item="add" separator=",">
+            (
+            #{add.adminAdvertiserId},
+            #{add.advertiserId},
+            #{add.advertiserName},
+            #{add.corporationName},
+            #{add.isAdx},
+            #{add.isMp}
+            )
+        </foreach>
+    </insert>
+</mapper>

+ 5 - 0
job-adq/src/main/java/cn/com/ctop/job/adq/data/service/IAdqAdminAdvertiserListService.java

@@ -0,0 +1,5 @@
+package cn.com.ctop.job.adq.data.service;
+
+public interface IAdqAdminAdvertiserListService {
+    void getAdminAdvertiserList(Long advertiserId, String accessToken,Integer cursor);
+}

+ 88 - 0
job-adq/src/main/java/cn/com/ctop/job/adq/data/service/impl/AdqAdminAdvertiserListServiceImpl.java

@@ -0,0 +1,88 @@
+package cn.com.ctop.job.adq.data.service.impl;
+
+import cn.com.ctop.job.adq.data.entity.AdqAdvertiserList;
+import cn.com.ctop.job.adq.data.mapper.AdqAdminAdvertiserListMapper;
+import cn.com.ctop.job.adq.data.service.IAdqAdminAdvertiserListService;
+import cn.com.ctop.job.adq.data.utils.Check;
+import cn.com.ctop.job.adq.data.utils.HttpUtils;
+import cn.com.ctop.job.adq.utils.RandomStringGenerator;
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.time.Instant;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+@Service
+@Slf4j
+public class AdqAdminAdvertiserListServiceImpl implements IAdqAdminAdvertiserListService {
+    @Autowired
+    private AdqAdminAdvertiserListMapper adminAdvertiserListMapper;
+    @Override
+    public void getAdminAdvertiserList(Long adminAdvertiserId, String accessToken, Integer cursor) {
+        Map<String, Object> paramsMap = new HashMap<>();
+        paramsMap.put("access_token", accessToken);
+        long timestamp = Instant.now().getEpochSecond();
+        paramsMap.put("timestamp", String.valueOf(timestamp));
+        paramsMap.put("nonce", RandomStringGenerator.generateRandomString(32));
+        paramsMap.put("pagination_mode", "PAGINATION_MODE_CURSOR");
+        if (!Check.isNull(cursor)) {
+            paramsMap.put("cursor", cursor);
+        }
+        paramsMap.put("page_size", 100);
+        String s = HttpUtils.httpGet("https://api.e.qq.com/v3.0/organization_account_relation/get", paramsMap, null);
+        JSONObject jsonObject = JSONObject.parseObject(s);
+        List<AdqAdvertiserList> addList = new ArrayList<>();
+        if (!Check.isNull(jsonObject)) {
+            Integer code = jsonObject.getInteger("code");
+            if (code == 0) {
+                JSONObject data = jsonObject.getJSONObject("data");
+                if (!Check.isNull(data)) {
+                    JSONArray list = data.getJSONArray("list");
+                    if (!Check.isNull(list)) {
+                        for (int i = 0; i < list.size(); i++) {
+                            JSONObject accountJson = list.getJSONObject(i);
+                            AdqAdvertiserList adqAdvertiserList = new AdqAdvertiserList();
+                            adqAdvertiserList.setAdminAdvertiserId(adminAdvertiserId);
+                            Long accountId = accountJson.getLong("account_id");
+                            adqAdvertiserList.setAdvertiserId(accountId);
+                            adqAdvertiserList.setAdvertiserName(String.valueOf(accountId));
+                            String corporation_name = accountJson.getString("corporation_name");
+                            adqAdvertiserList.setCorporationName(corporation_name);
+                            Boolean isAdx = accountJson.getBoolean("is_adx");
+                            if (isAdx) {
+                                adqAdvertiserList.setIsAdx(1);
+                            } else {
+                                adqAdvertiserList.setIsAdx(2);
+                            }
+                            Boolean isMp = accountJson.getBoolean("is_mp");
+                            if (isMp) {
+                                adqAdvertiserList.setIsMp(1);
+                            } else {
+                                adqAdvertiserList.setIsMp(2);
+                            }
+                            addList.add(adqAdvertiserList);
+                        }
+                        if (!Check.isNull(addList)) {
+                            adminAdvertiserListMapper.replaceAdqAccountList(addList);
+                            log.info("adq账户入库成功,入库条数:{}", addList.size());
+                        }
+                    }
+                    JSONObject cursorPageInfo = data.getJSONObject("cursor_page_info");
+                    Boolean hasMore = cursorPageInfo.getBoolean("has_more");
+                    if (hasMore) {
+                        Integer cursor1 = cursorPageInfo.getInteger("cursor");
+                        getAdminAdvertiserList(adminAdvertiserId, accessToken, cursor1);
+                    }
+                }
+            } else {
+                log.error("adq获取账户列表失败,accountId:{},返回信息:{}", adminAdvertiserId, jsonObject);
+            }
+        }
+    }
+}

+ 27 - 0
job-adq/src/main/java/cn/com/ctop/job/adq/data/utils/DateUtils.java

@@ -2,6 +2,7 @@ package cn.com.ctop.job.adq.data.utils;
 
 import lombok.extern.slf4j.Slf4j;
 
+import java.text.DateFormat;
 import java.text.ParseException;
 import java.text.SimpleDateFormat;
 import java.util.ArrayList;
@@ -12,6 +13,32 @@ import java.util.List;
 @Slf4j
 public class DateUtils {
 
+
+    public static List<String> getDays(String startTime, String endTime) {
+        // 返回的日期集合
+        List<String> days = new ArrayList<String>();
+        DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
+        try {
+            Date start = dateFormat.parse(startTime);
+            Date end = dateFormat.parse(endTime);
+
+            Calendar tempStart = Calendar.getInstance();
+            tempStart.setTime(start);
+
+            Calendar tempEnd = Calendar.getInstance();
+            tempEnd.setTime(end);
+            tempEnd.add(Calendar.DATE, +1);// 日期加1(包含结束)
+            while (tempStart.before(tempEnd)) {
+                days.add(dateFormat.format(tempStart.getTime()));
+                tempStart.add(Calendar.DAY_OF_YEAR, 1);
+            }
+
+        } catch (ParseException e) {
+            e.printStackTrace();
+        }
+
+        return days;
+    }
     public static Integer getDateInteger(String date) {
         if (!Check.isNull(date)) {
             String replace = date.replace("-", "");

+ 52 - 0
job-adq/src/main/java/cn/com/ctop/job/adq/handler/AdqAdminAdvertiserListJob.java

@@ -0,0 +1,52 @@
+package cn.com.ctop.job.adq.handler;
+
+
+import cn.com.ctop.job.adq.data.service.IAdqAdminAdvertiserListService;
+import cn.com.ctop.job.adq.data.service.IAdqReportService;
+import cn.com.ctop.job.adq.data.utils.Check;
+import cn.com.ctop.job.adq.data.utils.DateUtils;
+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 java.util.concurrent.ExecutorService;
+import java.util.concurrent.Executors;
+
+
+/**
+ * 广告主定时任务
+ *
+ * @throws Exception
+ */
+@Slf4j
+@Component
+public class AdqAdminAdvertiserListJob {
+    private static ExecutorService adminExecutorService = Executors.newFixedThreadPool(3);
+    @Autowired
+    private IAdqAdminAdvertiserListService adminAdvertiserListService;
+
+    @XxlJob("getAdminAdvertiserList")
+    public void getAdminAdvertiserList() throws Exception {
+        String param = XxlJobHelper.getJobParam(); // 执行参数
+        if (Check.isNull(param)) {
+            log.error("入参为空");
+            return;
+        }
+
+        String[] s = param.split("_");
+        Long advertiserId = Long.valueOf(s[0]);
+        String accessToken = s[1];
+        adminExecutorService.submit(new Runnable() {
+            @Override
+            public void run() {
+                adminAdvertiserListService.getAdminAdvertiserList(advertiserId, accessToken,null);
+            }
+        });
+    }
+
+
+
+
+}