Просмотр исходного кода

Merge branch 'master' of codeup.aliyun.com:60c06368dbbed34fe0f0c263/job/hr_job-adq into pingkang

# Conflicts:
#	job-adq/src/main/java/cn/com/ctop/job/adq/data/utils/DateUtils.java
#	job-adq/src/main/java/cn/com/ctop/job/adq/handler/AdqAccountReportJob.java
hpk 7 месяцев назад
Родитель
Сommit
b57392f7e1
25 измененных файлов с 992 добавлено и 11 удалено
  1. 37 0
      job-adq/src/main/java/cn/com/ctop/job/adq/controller/AdqController.java
  2. 68 0
      job-adq/src/main/java/cn/com/ctop/job/adq/controller/HistoryController.java
  3. 193 0
      job-adq/src/main/java/cn/com/ctop/job/adq/data/entity/AdqAgentAdvertiserList.java
  4. 172 0
      job-adq/src/main/java/cn/com/ctop/job/adq/data/entity/AdqDailyBalance.java
  5. 2 0
      job-adq/src/main/java/cn/com/ctop/job/adq/data/mapper/AdqAccountReportMapper.java
  6. 6 0
      job-adq/src/main/java/cn/com/ctop/job/adq/data/mapper/AdqAdminAdvertiserListMapper.java
  7. 14 0
      job-adq/src/main/java/cn/com/ctop/job/adq/data/mapper/AppletTokenRefreshMapper.java
  8. 10 0
      job-adq/src/main/java/cn/com/ctop/job/adq/data/mapper/DailyBalanceReportMapper.java
  9. 8 1
      job-adq/src/main/java/cn/com/ctop/job/adq/data/mapper/xml/AdqAccountReportMapper.xml
  10. 38 0
      job-adq/src/main/java/cn/com/ctop/job/adq/data/mapper/xml/AdqAdminAdvertiserListMapper.xml
  11. 31 0
      job-adq/src/main/java/cn/com/ctop/job/adq/data/mapper/xml/AppletTokenRefreshMapper.xml
  12. 45 0
      job-adq/src/main/java/cn/com/ctop/job/adq/data/mapper/xml/DailyBalanceReportMapper.xml
  13. 2 0
      job-adq/src/main/java/cn/com/ctop/job/adq/data/service/IAdqAccountReportService.java
  14. 8 0
      job-adq/src/main/java/cn/com/ctop/job/adq/data/service/IAdqAdminAdvertiserListService.java
  15. 7 0
      job-adq/src/main/java/cn/com/ctop/job/adq/data/service/IAppletTokenRefreshService.java
  16. 6 0
      job-adq/src/main/java/cn/com/ctop/job/adq/data/service/IDailyBalanceReportService.java
  17. 5 0
      job-adq/src/main/java/cn/com/ctop/job/adq/data/service/impl/AdqAccountReportServiceImpl.java
  18. 59 5
      job-adq/src/main/java/cn/com/ctop/job/adq/data/service/impl/AdqAdminAdvertiserListServiceImpl.java
  19. 69 0
      job-adq/src/main/java/cn/com/ctop/job/adq/data/service/impl/AppletTokenRefreshServiceImpl.java
  20. 99 0
      job-adq/src/main/java/cn/com/ctop/job/adq/data/service/impl/DailyBalanceReportServiceImpl.java
  21. 12 0
      job-adq/src/main/java/cn/com/ctop/job/adq/data/utils/DateUtils.java
  22. 31 5
      job-adq/src/main/java/cn/com/ctop/job/adq/handler/AdqAccountReportJob.java
  23. 23 0
      job-adq/src/main/java/cn/com/ctop/job/adq/handler/AdqAdminAdvertiserListJob.java
  24. 16 0
      job-adq/src/main/java/cn/com/ctop/job/adq/handler/AdqRetryReportJob.java
  25. 31 0
      job-adq/src/main/java/cn/com/ctop/job/adq/handler/AppletTokenRefreshJob.java

+ 37 - 0
job-adq/src/main/java/cn/com/ctop/job/adq/controller/AdqController.java

@@ -48,6 +48,43 @@ public class AdqController {
 
 
     @Autowired
     @Autowired
     private IAdqMaterialReportService adqMaterialReportService;
     private IAdqMaterialReportService adqMaterialReportService;
+    @Autowired
+    private IDailyBalanceReportService dailyBalanceReportService;
+
+
+    @GetMapping("/getBalanceReport")
+    public JSONObject getBalanceReport() throws InterruptedException {
+
+        dailyBalanceReportService.getAdqBalanceReport(56298095L, "a501cb39b83bd0dabe37c1a325f99e03", "2025-09-09", "2025-09-11", 1, 1L);
+
+
+        return null;
+
+    }
+
+    @GetMapping("/getAgentInfo")
+    public JSONObject getAgentInfo() {
+
+        List<JSONObject> list = adminAdvertiserListService.getAdvertiserList();
+        if (!Check.isNull(list)) {
+            for (JSONObject jsonObject : list) {
+                Long adminAdvertiserId = jsonObject.getLong("adminAdvertiserId");
+                Long advertiserId = jsonObject.getLong("advertiserId");
+                String accessToken = jsonObject.getString("accessToken");
+                dailyExecutorService.submit(new Runnable() {
+                    @Override
+                    public void run() {
+                        adminAdvertiserListService.getAgentInfo(adminAdvertiserId, advertiserId, accessToken, null);
+                    }
+                });
+            }
+
+        }
+
+
+        return null;
+
+    }
 
 
 
 
     @GetMapping("/getReport")
     @GetMapping("/getReport")

+ 68 - 0
job-adq/src/main/java/cn/com/ctop/job/adq/controller/HistoryController.java

@@ -0,0 +1,68 @@
+package cn.com.ctop.job.adq.controller;
+
+import cn.com.ctop.job.adq.data.entity.AdvertiserAccount;
+import cn.com.ctop.job.adq.data.service.*;
+import cn.com.ctop.job.adq.data.utils.Check;
+import cn.com.ctop.job.adq.data.utils.DateUtils;
+import com.alibaba.fastjson.JSONObject;
+import io.swagger.annotations.Api;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.time.LocalDate;
+import java.time.format.DateTimeFormatter;
+import java.util.List;
+import java.util.concurrent.ExecutorService;
+import java.util.concurrent.Executors;
+
+
+/**
+ * zian Y
+ * 2022/2/9
+ **/
+
+@RestController
+@RequestMapping("/history")
+@Api(tags = "adq")
+@Slf4j
+public class HistoryController {
+    private static ExecutorService dailyExecutorService = Executors.newFixedThreadPool(5);
+    @Autowired
+    private IAdqCreativeReportService adqReportService;
+
+    @Autowired
+    private IAdqAccountReportService accountReportService;
+    @Autowired
+    private IDailyBalanceReportService dailyBalanceReportService;
+
+    @GetMapping("/getData")
+    public JSONObject getData(Long advertiserId, String startDate, String endDate) {
+        JSONObject json = new JSONObject();
+        dailyExecutorService.submit(new Runnable() {
+            @Override
+            public void run() {
+
+                String token = accountReportService.getTokenByAdvertiserId(advertiserId);
+                if (Check.isNull(token)) {
+                    return;
+                }
+                accountReportService.getAdqAccountDaily(advertiserId, token, startDate, endDate, 1, 1);
+                adqReportService.getAdqCreativeDaily(advertiserId, token, startDate, endDate, 1, 1);
+                try {
+                    dailyBalanceReportService.getAdqBalanceReport(advertiserId, token, startDate, endDate, 1, null);
+                } catch (InterruptedException e) {
+                    throw new RuntimeException(e);
+                }
+            }
+        });
+        json.put("code", 200);
+        json.put("message", "成功");
+        return json;
+    }
+
+
+}

+ 193 - 0
job-adq/src/main/java/cn/com/ctop/job/adq/data/entity/AdqAgentAdvertiserList.java

@@ -0,0 +1,193 @@
+package cn.com.ctop.job.adq.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;
+import org.jeecgframework.poi.excel.annotation.Excel;
+
+
+/**
+ * 【请填写功能名称】对象 adq_agent_advertiser_list
+ *
+ * @author ruoyi
+ * @date 2025-08-28
+ */
+public class AdqAgentAdvertiserList
+{
+    private static final long serialVersionUID = 1L;
+
+    /** 管家账户ID */
+    @Excel(name = "管家账户ID")
+    private Long adminAdvertiserId;
+
+    /** 广告主ID */
+    private Long advertiserId;
+
+    /** 客户主体 id */
+    @Excel(name = "客户主体 id")
+    private Long mdmId;
+
+    /** 行业 id */
+    @Excel(name = "行业 id")
+    private Long systemIndustryId;
+
+    /** 客户主体名称 */
+    @Excel(name = "客户主体名称")
+    private String mdmName;
+
+    /** 企业营业执照注册号 */
+    @Excel(name = "企业营业执照注册号")
+    private String corporationLicence;
+
+    /** 企业名称 */
+    @Excel(name = "企业名称")
+    private String corporationName;
+
+    /** 代理商 account_id */
+    @Excel(name = "代理商 account_id")
+    private String agencyAccountId;
+
+    /** 账户主体类型 */
+    @Excel(name = "账户主体类型")
+    private String registrationType;
+
+    /** 调用方行业名称 */
+    @Excel(name = "调用方行业名称")
+    private String customizedIndustry;
+
+    /** 创建时间 */
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    private Date createAt;
+
+    /** 修改时间 */
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    private Date updateAt;
+
+    public void setAdminAdvertiserId(Long adminAdvertiserId)
+    {
+        this.adminAdvertiserId = adminAdvertiserId;
+    }
+
+    public Long getAdminAdvertiserId()
+    {
+        return adminAdvertiserId;
+    }
+    public void setAdvertiserId(Long advertiserId)
+    {
+        this.advertiserId = advertiserId;
+    }
+
+    public Long getAdvertiserId()
+    {
+        return advertiserId;
+    }
+    public void setMdmId(Long mdmId)
+    {
+        this.mdmId = mdmId;
+    }
+
+    public Long getMdmId()
+    {
+        return mdmId;
+    }
+    public void setSystemIndustryId(Long systemIndustryId)
+    {
+        this.systemIndustryId = systemIndustryId;
+    }
+
+    public Long getSystemIndustryId()
+    {
+        return systemIndustryId;
+    }
+    public void setMdmName(String mdmName)
+    {
+        this.mdmName = mdmName;
+    }
+
+    public String getMdmName()
+    {
+        return mdmName;
+    }
+    public void setCorporationLicence(String corporationLicence)
+    {
+        this.corporationLicence = corporationLicence;
+    }
+
+    public String getCorporationLicence()
+    {
+        return corporationLicence;
+    }
+    public void setCorporationName(String corporationName)
+    {
+        this.corporationName = corporationName;
+    }
+
+    public String getCorporationName()
+    {
+        return corporationName;
+    }
+    public void setAgencyAccountId(String agencyAccountId)
+    {
+        this.agencyAccountId = agencyAccountId;
+    }
+
+    public String getAgencyAccountId()
+    {
+        return agencyAccountId;
+    }
+    public void setRegistrationType(String registrationType)
+    {
+        this.registrationType = registrationType;
+    }
+
+    public String getRegistrationType()
+    {
+        return registrationType;
+    }
+    public void setCustomizedIndustry(String customizedIndustry)
+    {
+        this.customizedIndustry = customizedIndustry;
+    }
+
+    public String getCustomizedIndustry()
+    {
+        return customizedIndustry;
+    }
+    public void setCreateAt(Date createAt)
+    {
+        this.createAt = createAt;
+    }
+
+    public Date getCreateAt()
+    {
+        return createAt;
+    }
+    public void setUpdateAt(Date updateAt)
+    {
+        this.updateAt = updateAt;
+    }
+
+    public Date getUpdateAt()
+    {
+        return updateAt;
+    }
+
+    @Override
+    public String toString() {
+        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
+                .append("adminAdvertiserId", getAdminAdvertiserId())
+                .append("advertiserId", getAdvertiserId())
+                .append("mdmId", getMdmId())
+                .append("systemIndustryId", getSystemIndustryId())
+                .append("mdmName", getMdmName())
+                .append("corporationLicence", getCorporationLicence())
+                .append("corporationName", getCorporationName())
+                .append("agencyAccountId", getAgencyAccountId())
+                .append("registrationType", getRegistrationType())
+                .append("customizedIndustry", getCustomizedIndustry())
+                .append("createAt", getCreateAt())
+                .append("updateAt", getUpdateAt())
+                .toString();
+    }
+}

+ 172 - 0
job-adq/src/main/java/cn/com/ctop/job/adq/data/entity/AdqDailyBalance.java

@@ -0,0 +1,172 @@
+package cn.com.ctop.job.adq.data.entity;
+
+import java.math.BigDecimal;
+
+public class AdqDailyBalance {
+    private Long id;
+    private Long advertiserId;
+    private Long statDate;
+    private String fundType;
+    private BigDecimal deposit;
+    private BigDecimal paid;
+    private BigDecimal transIn;
+    private BigDecimal transOut;
+    private BigDecimal creditModify;
+    private BigDecimal balance;
+    private BigDecimal preauthBalance;
+    private BigDecimal preauthOutPay;
+    private BigDecimal preauthInRefund;
+    private BigDecimal acctOutPay;
+    private BigDecimal acctOutPayShare;
+    private BigDecimal shareOutPay;
+
+    public Long getId() {
+        return id;
+    }
+
+    public void setId(Long id) {
+        this.id = id;
+    }
+
+    public Long getAdvertiserId() {
+        return advertiserId;
+    }
+
+    public void setAdvertiserId(Long advertiserId) {
+        this.advertiserId = advertiserId;
+    }
+
+    public Long getStatDate() {
+        return statDate;
+    }
+
+    public void setStatDate(Long statDate) {
+        this.statDate = statDate;
+    }
+
+    public String getFundType() {
+        return fundType;
+    }
+
+    public void setFundType(String fundType) {
+        this.fundType = fundType;
+    }
+
+    public BigDecimal getDeposit() {
+        return deposit;
+    }
+
+    public void setDeposit(BigDecimal deposit) {
+        this.deposit = deposit;
+    }
+
+    public BigDecimal getPaid() {
+        return paid;
+    }
+
+    public void setPaid(BigDecimal paid) {
+        this.paid = paid;
+    }
+
+    public BigDecimal getTransIn() {
+        return transIn;
+    }
+
+    public void setTransIn(BigDecimal transIn) {
+        this.transIn = transIn;
+    }
+
+    public BigDecimal getTransOut() {
+        return transOut;
+    }
+
+    public void setTransOut(BigDecimal transOut) {
+        this.transOut = transOut;
+    }
+
+    public BigDecimal getCreditModify() {
+        return creditModify;
+    }
+
+    public void setCreditModify(BigDecimal creditModify) {
+        this.creditModify = creditModify;
+    }
+
+    public BigDecimal getBalance() {
+        return balance;
+    }
+
+    public void setBalance(BigDecimal balance) {
+        this.balance = balance;
+    }
+
+    public BigDecimal getPreauthBalance() {
+        return preauthBalance;
+    }
+
+    public void setPreauthBalance(BigDecimal preauthBalance) {
+        this.preauthBalance = preauthBalance;
+    }
+
+    public BigDecimal getPreauthOutPay() {
+        return preauthOutPay;
+    }
+
+    public void setPreauthOutPay(BigDecimal preauthOutPay) {
+        this.preauthOutPay = preauthOutPay;
+    }
+
+    public BigDecimal getPreauthInRefund() {
+        return preauthInRefund;
+    }
+
+    public void setPreauthInRefund(BigDecimal preauthInRefund) {
+        this.preauthInRefund = preauthInRefund;
+    }
+
+    public BigDecimal getAcctOutPay() {
+        return acctOutPay;
+    }
+
+    public void setAcctOutPay(BigDecimal acctOutPay) {
+        this.acctOutPay = acctOutPay;
+    }
+
+    public BigDecimal getAcctOutPayShare() {
+        return acctOutPayShare;
+    }
+
+    public void setAcctOutPayShare(BigDecimal acctOutPayShare) {
+        this.acctOutPayShare = acctOutPayShare;
+    }
+
+    public BigDecimal getShareOutPay() {
+        return shareOutPay;
+    }
+
+    public void setShareOutPay(BigDecimal shareOutPay) {
+        this.shareOutPay = shareOutPay;
+    }
+
+    @Override
+    public String toString() {
+        return "adqDailyBalance{" +
+                "id=" + id +
+                ", advertiserId=" + advertiserId +
+                ", statDate=" + statDate +
+                ", fundType='" + fundType + '\'' +
+                ", deposit=" + deposit +
+                ", paid=" + paid +
+                ", transIn=" + transIn +
+                ", transOut=" + transOut +
+                ", creditModify=" + creditModify +
+                ", balance=" + balance +
+                ", preauthBalance=" + preauthBalance +
+                ", preauthOutPay=" + preauthOutPay +
+                ", preauthInRefund=" + preauthInRefund +
+                ", acctOutPay=" + acctOutPay +
+                ", acctOutPayShare=" + acctOutPayShare +
+                ", shareOutPay=" + shareOutPay +
+                '}';
+    }
+}

+ 2 - 0
job-adq/src/main/java/cn/com/ctop/job/adq/data/mapper/AdqAccountReportMapper.java

@@ -19,4 +19,6 @@ public interface AdqAccountReportMapper {
     void updateAdqAccountStatus();
     void updateAdqAccountStatus();
 
 
     void updateClAccountStatus();
     void updateClAccountStatus();
+
+    String getTokenByAdvertiserId(@Param("advertiserId") Long advertiserId);
 }
 }

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

@@ -1,6 +1,8 @@
 package cn.com.ctop.job.adq.data.mapper;
 package cn.com.ctop.job.adq.data.mapper;
 
 
 import cn.com.ctop.job.adq.data.entity.AdqAdvertiserList;
 import cn.com.ctop.job.adq.data.entity.AdqAdvertiserList;
+import cn.com.ctop.job.adq.data.entity.AdqAgentAdvertiserList;
+import com.alibaba.fastjson.JSONObject;
 import org.apache.ibatis.annotations.Param;
 import org.apache.ibatis.annotations.Param;
 
 
 import java.util.List;
 import java.util.List;
@@ -9,4 +11,8 @@ public interface AdqAdminAdvertiserListMapper {
     void replaceAdqAccountList(@Param("adds") List<AdqAdvertiserList> addList);
     void replaceAdqAccountList(@Param("adds") List<AdqAdvertiserList> addList);
 
 
     void deleteAdvertiserListByAdminId(@Param("advertiserId") Long advertiserId);
     void deleteAdvertiserListByAdminId(@Param("advertiserId") Long advertiserId);
+
+    void addAgent(AdqAgentAdvertiserList javaObject);
+
+    List<JSONObject> getAdvertiserList();
 }
 }

+ 14 - 0
job-adq/src/main/java/cn/com/ctop/job/adq/data/mapper/AppletTokenRefreshMapper.java

@@ -0,0 +1,14 @@
+package cn.com.ctop.job.adq.data.mapper;
+
+import com.alibaba.fastjson.JSONObject;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+public interface AppletTokenRefreshMapper {
+
+    List<JSONObject> queryAppletList();
+
+    void refreshAppletTokens(@Param("list") List<JSONObject> list);
+
+}

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

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

+ 8 - 1
job-adq/src/main/java/cn/com/ctop/job/adq/data/mapper/xml/AdqAccountReportMapper.xml

@@ -237,7 +237,7 @@
                                       from deepthink.advertiser_bind_info t1
                                       from deepthink.advertiser_bind_info t1
                                       where t1.media_type = 3
                                       where t1.media_type = 3
                                         and t1.advertiser_status = 1
                                         and t1.advertiser_status = 1
-                                        and date_format(t1.create_time, '%Y%m%d') &lt;= date_format(DATE_SUB(CURDATE(), INTERVAL 1 DAY), '%Y%m%d')) t
+                                        and date_format(t1.create_time, '%Y%m%d') &lt;= date_format(DATE_SUB(CURDATE(), INTERVAL 3 DAY), '%Y%m%d')) t
                                 where t.cost &lt;= 0)
                                 where t.cost &lt;= 0)
           and media_type = 3
           and media_type = 3
     </update>
     </update>
@@ -256,4 +256,11 @@
                                   and advertiser_status = 2)
                                   and advertiser_status = 2)
           and media_type = 3
           and media_type = 3
     </update>
     </update>
+    <select id="getTokenByAdvertiserId" resultType="java.lang.String">
+        select t2.access_token
+        from deepthink.adq_advertiser_list t1
+                 left join deepthink.adq_auth_list t2
+                           on t1.admin_advertiser_id = t2.admin_advertiser_id
+        where t1.advertiser_id = #{advertiserId} limit 1
+    </select>
 </mapper>
 </mapper>

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

@@ -26,9 +26,47 @@
         on duplicate key update
         on duplicate key update
         advertiser_name= VALUES(advertiser_name)
         advertiser_name= VALUES(advertiser_name)
     </insert>
     </insert>
+    <insert id="addAgent">
+        replace into deepthink.adq_agent_advertiser_list
+        <trim prefix="(" suffix=")" suffixOverrides=",">
+            <if test="adminAdvertiserId != null">admin_advertiser_id,</if>
+            <if test="advertiserId != null">advertiser_id,</if>
+            <if test="mdmId != null">mdm_id,</if>
+            <if test="systemIndustryId != null">system_industry_id,</if>
+            <if test="mdmName != null">mdm_name,</if>
+            <if test="corporationLicence != null">corporation_licence,</if>
+            <if test="corporationName != null">corporation_name,</if>
+            <if test="agencyAccountId != null">agency_account_id,</if>
+            <if test="registrationType != null">registration_type,</if>
+            <if test="customizedIndustry != null">customized_industry,</if>
+            <if test="createAt != null">create_at,</if>
+            <if test="updateAt != null">update_at,</if>
+        </trim>
+        <trim prefix="values (" suffix=")" suffixOverrides=",">
+            <if test="adminAdvertiserId != null">#{adminAdvertiserId},</if>
+            <if test="advertiserId != null">#{advertiserId},</if>
+            <if test="mdmId != null">#{mdmId},</if>
+            <if test="systemIndustryId != null">#{systemIndustryId},</if>
+            <if test="mdmName != null">#{mdmName},</if>
+            <if test="corporationLicence != null">#{corporationLicence},</if>
+            <if test="corporationName != null">#{corporationName},</if>
+            <if test="agencyAccountId != null">#{agencyAccountId},</if>
+            <if test="registrationType != null">#{registrationType},</if>
+            <if test="customizedIndustry != null">#{customizedIndustry},</if>
+            <if test="createAt != null">#{createAt},</if>
+            <if test="updateAt != null">#{updateAt},</if>
+        </trim>
+    </insert>
     <delete id="deleteAdvertiserListByAdminId" parameterType="java.lang.Long">
     <delete id="deleteAdvertiserListByAdminId" parameterType="java.lang.Long">
         DELETE
         DELETE
         FROM deepthink.adq_advertiser_list
         FROM deepthink.adq_advertiser_list
         WHERE admin_advertiser_id = #{advertiserId}
         WHERE admin_advertiser_id = #{advertiserId}
     </delete>
     </delete>
+    <select id="getAdvertiserList" resultType="com.alibaba.fastjson.JSONObject">
+        select t1.admin_advertiser_id as 'adminAdvertiserId', t1.advertiser_id as 'advertiserId', t3.access_token as 'accessToken'
+        from deepthink.adq_advertiser_list t1
+                 left join deepthink.adq_agent_advertiser_list t2 on t1.advertiser_id = t2.advertiser_id
+                 left join deepthink.adq_auth_list t3 on t1.admin_advertiser_id = t3.admin_advertiser_id
+        where t2.advertiser_id is null;
+    </select>
 </mapper>
 </mapper>

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

@@ -0,0 +1,31 @@
+<?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.AppletTokenRefreshMapper">
+
+    <select id="queryAppletList" resultType="com.alibaba.fastjson.JSONObject">
+        SELECT t1.id,
+               t1.name,
+               t1.app_id AS 'appId', t1.app_secret AS 'appSecret', t2.id as 'officialAccountId'
+        FROM thirtpart.ly_applet t1
+                 LEFT JOIN thirtpart.ly_official_accounts t2 ON t1.id = t2.applet_id
+        WHERE t1.source != 2 AND t1.type =1
+    </select>
+
+    <insert id="refreshAppletTokens">
+        replace into thirtpart.applet_tokens (
+        app_id,
+        official_account_id,
+        applet_id,
+        token
+        )
+        values
+        <foreach collection="list" item="item" separator=",">
+            (
+            #{item.appId},
+            #{item.officialAccountId},
+            #{item.id},
+            #{item.token}
+            )
+        </foreach>
+    </insert>
+</mapper>

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

@@ -0,0 +1,45 @@
+<?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.DailyBalanceReportMapper">
+
+
+    <insert id="addAdqDailyBalances">
+        replace into adq_daily_balance (
+        advertiser_id,
+        stat_date,
+        fund_type,
+        deposit,
+        paid,
+        trans_in,
+        trans_out,
+        credit_modify,
+        balance,
+        preauth_balance,
+        preauth_out_pay,
+        preauth_in_refund,
+        acct_out_pay,
+        acct_out_pay_share,
+        share_out_pay
+        )
+        values
+        <foreach collection="adds" item="item" separator=",">
+            (
+            #{item.advertiserId},
+            #{item.statDate},
+            #{item.fundType},
+            #{item.deposit},
+            #{item.paid},
+            #{item.transIn},
+            #{item.transOut},
+            #{item.creditModify},
+            #{item.balance},
+            #{item.preauthBalance},
+            #{item.preauthOutPay},
+            #{item.preauthInRefund},
+            #{item.acctOutPay},
+            #{item.acctOutPayShare},
+            #{item.shareOutPay}
+            )
+        </foreach>
+    </insert>
+</mapper>

+ 2 - 0
job-adq/src/main/java/cn/com/ctop/job/adq/data/service/IAdqAccountReportService.java

@@ -4,4 +4,6 @@ public interface IAdqAccountReportService {
     void getAdqAccountHour(Long advertiserId, String accessToken, String startDate, String endDate,Integer page,Integer isLog);
     void getAdqAccountHour(Long advertiserId, String accessToken, String startDate, String endDate,Integer page,Integer isLog);
 
 
     void getAdqAccountDaily(Long advertiserId, String accessToken, String startDate, String endDate, Integer page, Integer isLog);
     void getAdqAccountDaily(Long advertiserId, String accessToken, String startDate, String endDate, Integer page, Integer isLog);
+
+    String getTokenByAdvertiserId(Long advertiserId);
 }
 }

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

@@ -1,7 +1,15 @@
 package cn.com.ctop.job.adq.data.service;
 package cn.com.ctop.job.adq.data.service;
 
 
+import com.alibaba.fastjson.JSONObject;
+
+import java.util.List;
+
 public interface IAdqAdminAdvertiserListService {
 public interface IAdqAdminAdvertiserListService {
     void getAdminAdvertiserList(Long advertiserId, String accessToken,Integer cursor);
     void getAdminAdvertiserList(Long advertiserId, String accessToken,Integer cursor);
 
 
     void deleteAdvertiserListByAdminId(Long advertiserId);
     void deleteAdvertiserListByAdminId(Long advertiserId);
+
+    void getAgentInfo(Long adminAdvertiserId, Long advertiserId, String accessToken,Integer cursor);
+
+    List<JSONObject> getAdvertiserList();
 }
 }

+ 7 - 0
job-adq/src/main/java/cn/com/ctop/job/adq/data/service/IAppletTokenRefreshService.java

@@ -0,0 +1,7 @@
+package cn.com.ctop.job.adq.data.service;
+
+public interface IAppletTokenRefreshService {
+
+    void buildAppletTokens();
+
+}

+ 6 - 0
job-adq/src/main/java/cn/com/ctop/job/adq/data/service/IDailyBalanceReportService.java

@@ -0,0 +1,6 @@
+package cn.com.ctop.job.adq.data.service;
+
+public interface IDailyBalanceReportService {
+    void getAdqBalanceReport(Long advertiserId, String accessToken, String startDate, String endDate, Integer page, Long errorId) throws InterruptedException;
+
+}

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

@@ -189,4 +189,9 @@ public class AdqAccountReportServiceImpl implements IAdqAccountReportService {
         }
         }
     }
     }
 
 
+    @Override
+    public String getTokenByAdvertiserId(Long advertiserId) {
+        return accountReportMapper.getTokenByAdvertiserId(advertiserId);
+    }
+
 }
 }

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

@@ -1,28 +1,28 @@
 package cn.com.ctop.job.adq.data.service.impl;
 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.entity.AdqAdvertiserList;
+import cn.com.ctop.job.adq.data.entity.AdqAgentAdvertiserList;
 import cn.com.ctop.job.adq.data.mapper.AdqAdminAdvertiserListMapper;
 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.service.IAdqAdminAdvertiserListService;
 import cn.com.ctop.job.adq.data.utils.Check;
 import cn.com.ctop.job.adq.data.utils.Check;
 import cn.com.ctop.job.adq.data.utils.HttpUtils;
 import cn.com.ctop.job.adq.data.utils.HttpUtils;
 import cn.com.ctop.job.adq.utils.RandomStringGenerator;
 import cn.com.ctop.job.adq.utils.RandomStringGenerator;
 import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONAware;
 import com.alibaba.fastjson.JSONObject;
 import com.alibaba.fastjson.JSONObject;
 import lombok.extern.slf4j.Slf4j;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.stereotype.Service;
 
 
 import java.time.Instant;
 import java.time.Instant;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
 
 
 @Service
 @Service
 @Slf4j
 @Slf4j
 public class AdqAdminAdvertiserListServiceImpl implements IAdqAdminAdvertiserListService {
 public class AdqAdminAdvertiserListServiceImpl implements IAdqAdminAdvertiserListService {
     @Autowired
     @Autowired
     private AdqAdminAdvertiserListMapper adminAdvertiserListMapper;
     private AdqAdminAdvertiserListMapper adminAdvertiserListMapper;
+
     @Override
     @Override
     public void getAdminAdvertiserList(Long adminAdvertiserId, String accessToken, Integer cursor) {
     public void getAdminAdvertiserList(Long adminAdvertiserId, String accessToken, Integer cursor) {
         Map<String, Object> paramsMap = new HashMap<>();
         Map<String, Object> paramsMap = new HashMap<>();
@@ -70,7 +70,7 @@ public class AdqAdminAdvertiserListServiceImpl implements IAdqAdminAdvertiserLis
                         }
                         }
                         if (!Check.isNull(addList)) {
                         if (!Check.isNull(addList)) {
                             adminAdvertiserListMapper.replaceAdqAccountList(addList);
                             adminAdvertiserListMapper.replaceAdqAccountList(addList);
-                            log.info("adq账户入库成功,业务单元ID:{},入库条数:{}",adminAdvertiserId, addList.size());
+                            log.info("adq账户入库成功,业务单元ID:{},入库条数:{}", adminAdvertiserId, addList.size());
                         }
                         }
                     }
                     }
                     JSONObject cursorPageInfo = data.getJSONObject("cursor_page_info");
                     JSONObject cursorPageInfo = data.getJSONObject("cursor_page_info");
@@ -90,4 +90,58 @@ public class AdqAdminAdvertiserListServiceImpl implements IAdqAdminAdvertiserLis
     public void deleteAdvertiserListByAdminId(Long advertiserId) {
     public void deleteAdvertiserListByAdminId(Long advertiserId) {
         adminAdvertiserListMapper.deleteAdvertiserListByAdminId(advertiserId);
         adminAdvertiserListMapper.deleteAdvertiserListByAdminId(advertiserId);
     }
     }
+
+    @Override
+    public void getAgentInfo(Long adminAdvertiserId, Long advertiserId, 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);
+        paramsMap.put("account_id", advertiserId);
+        JSONArray fields = new JSONArray();
+        fields.add("account_id");
+        fields.add("registration_type");
+        fields.add("corporation_name");
+        fields.add("corporation_licence");
+        fields.add("name");
+        fields.add("mdm_id");
+        fields.add("mdm_name");
+        fields.add("system_industry_id");
+        fields.add("customized_industry");
+        fields.add("agency_account_id");
+        paramsMap.put("fields", fields);
+
+        String s = HttpUtils.httpGet("https://api.e.qq.com/v3.0/advertiser/get", paramsMap, null);
+        JSONObject jsonObject = JSONObject.parseObject(s);
+        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)) {
+                        JSONObject detail = list.getJSONObject(0);
+                        if (!Check.isNull(detail)) {
+                            AdqAgentAdvertiserList javaObject = JSONObject.toJavaObject(detail, AdqAgentAdvertiserList.class);
+                            javaObject.setAdminAdvertiserId(adminAdvertiserId);
+                            javaObject.setAdvertiserId(advertiserId);
+                            adminAdvertiserListMapper.addAgent(javaObject);
+                            log.info("账户ID:{},代理商数据更新成功", advertiserId);
+                        }
+                    }
+                }
+            }
+        }
+    }
+
+    @Override
+    public List<JSONObject> getAdvertiserList() {
+        return adminAdvertiserListMapper.getAdvertiserList();
+    }
 }
 }

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

@@ -0,0 +1,69 @@
+package cn.com.ctop.job.adq.data.service.impl;
+
+import cn.com.ctop.job.adq.data.mapper.AppletTokenRefreshMapper;
+import cn.com.ctop.job.adq.data.service.IAppletTokenRefreshService;
+import cn.com.ctop.job.adq.data.utils.Check;
+import cn.com.ctop.job.adq.data.utils.HttpUtils;
+import com.alibaba.fastjson.JSONObject;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.redis.core.RedisTemplate;
+import org.springframework.stereotype.Service;
+
+import javax.annotation.Resource;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.concurrent.TimeUnit;
+
+@Service
+@Slf4j
+public class AppletTokenRefreshServiceImpl implements IAppletTokenRefreshService {
+
+    @Autowired
+    private AppletTokenRefreshMapper tokenRefreshMapper;
+
+    @Resource
+    private RedisTemplate redis2Template_db5;
+
+    @Override
+    public void buildAppletTokens() {
+        List<JSONObject> list = tokenRefreshMapper.queryAppletList();
+        for (JSONObject applet : list) {
+            buildAppletToken(applet, 0);
+        }
+        tokenRefreshMapper.refreshAppletTokens(list);
+    }
+
+    //构建小程序token
+    private void buildAppletToken(JSONObject applet, int count) {
+        String name = applet.getString("name");
+        try {
+            Map<String, Object> param = new HashMap<>();
+            String appId = applet.getString("appId");
+            param.put("appid", appId);
+            param.put("secret", applet.getString("appSecret"));
+            param.put("grant_type", "client_credential");
+//            String result = HttpUtils.httpGet("https://api.weixin.qq.com/cgi-bin/token", param, null);
+            String result = HttpUtils.httpPostRequest("https://api.weixin.qq.com/cgi-bin/stable_token", param, null);
+            JSONObject tokenInfo = JSONObject.parseObject(result);
+            if (!Check.isNull(tokenInfo)) {
+                String accessToken = tokenInfo.getString("access_token");
+                redis2Template_db5.opsForValue().set("wechat-applet-access-token-key-" + applet.getInteger("id"), accessToken, tokenInfo.getInteger("expires_in"), TimeUnit.SECONDS);
+                applet.put("token", accessToken);
+                log.info("小程序:{},更新token完成", name);
+            } else {
+                if (count < 3) {
+                    Thread.sleep(5000L);
+                    buildAppletToken(applet, count + 1);
+                } else {
+                    log.error("小程序:{},更新token失败!,结果:{}", name, tokenInfo);
+                }
+            }
+        } catch (Exception e) {
+            e.printStackTrace();
+            log.error("小程序:{},更新token异常!", name);
+        }
+    }
+
+}

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

@@ -0,0 +1,99 @@
+package cn.com.ctop.job.adq.data.service.impl;
+
+import cn.com.ctop.job.adq.data.entity.AdqDailyBalance;
+import cn.com.ctop.job.adq.data.entity.AdqErrorLog;
+import cn.com.ctop.job.adq.data.mapper.AdqErrorLogMapper;
+import cn.com.ctop.job.adq.data.mapper.DailyBalanceReportMapper;
+import cn.com.ctop.job.adq.data.service.IDailyBalanceReportService;
+import cn.com.ctop.job.adq.data.utils.Check;
+import cn.com.ctop.job.adq.data.utils.DateUtils;
+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;
+
+@Slf4j
+@Service
+public class DailyBalanceReportServiceImpl implements IDailyBalanceReportService {
+
+
+    @Autowired
+    private DailyBalanceReportMapper dailyBalanceReportMapper;
+
+    @Autowired
+    private AdqErrorLogMapper adqErrorLogMapper;
+
+    @Override
+    public void getAdqBalanceReport(Long advertiserId, String accessToken, String startDate, String endDate, Integer page, Long errorId) throws InterruptedException {
+        Thread.sleep(1000L);
+        try {
+            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("page", page);
+            paramsMap.put("page_size", 100);
+            paramsMap.put("account_id", advertiserId);
+            JSONObject date_range = new JSONObject();
+            date_range.put("start_date", startDate);
+            date_range.put("end_date", endDate);
+            paramsMap.put("date_range", date_range);
+            List<AdqDailyBalance> adqDailyBalances = new ArrayList<>();
+            String s = HttpUtils.httpGet("https://api.e.qq.com/v3.0/daily_balance_report/get", paramsMap, null);
+            JSONObject jsonObject = JSONObject.parseObject(s);
+            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 json = list.getJSONObject(i);
+                                AdqDailyBalance dailyBalance = JSONObject.parseObject(json.toJSONString(), AdqDailyBalance.class);
+                                dailyBalance.setAdvertiserId(json.getLong("account_id"));
+                                Long time = json.getLong("time");
+                                Long statDate = DateUtils.timeToDate(time);
+                                dailyBalance.setStatDate(statDate);
+                                adqDailyBalances.add(dailyBalance);
+                            }
+                        }
+                    }
+                } else {
+                    log.error("请求流水报表失败,account_id:{},返回信息:{}", advertiserId, jsonObject);
+                    AdqErrorLog errorInfo = new AdqErrorLog();
+                    errorInfo.setAdvertiserId(advertiserId);
+                    errorInfo.setStartDate(startDate);
+                    errorInfo.setEndDate(endDate);
+                    errorInfo.setDataDimension("daily_balance_report");
+                    errorInfo.setDataType("daily");
+                    adqErrorLogMapper.replaceErrorInfo(errorInfo);
+                    return;
+                }
+            }
+            if (!Check.isNull(adqDailyBalances)) {
+                dailyBalanceReportMapper.addAdqDailyBalances(adqDailyBalances);
+            }
+            if (adqDailyBalances.size() >= 100) {
+                getAdqBalanceReport(advertiserId, accessToken, startDate, endDate, page + 1, errorId);
+            } else {
+                log.info("请求流水报表完成,account_id:{},开始日期:{},结束日期:{}", advertiserId, startDate, endDate);
+                if (!Check.isNull(errorId)) {
+                    adqErrorLogMapper.deleteInfoByErrorId(errorId);
+                }
+            }
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+    }
+}

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

@@ -5,6 +5,11 @@ import lombok.extern.slf4j.Slf4j;
 import java.text.DateFormat;
 import java.text.DateFormat;
 import java.text.ParseException;
 import java.text.ParseException;
 import java.text.SimpleDateFormat;
 import java.text.SimpleDateFormat;
+import java.time.Instant;
+import java.time.LocalDateTime;
+import java.time.ZoneId;
+import java.time.ZonedDateTime;
+import java.time.format.DateTimeFormatter;
 import java.util.ArrayList;
 import java.util.ArrayList;
 import java.util.Calendar;
 import java.util.Calendar;
 import java.util.Date;
 import java.util.Date;
@@ -40,6 +45,7 @@ public class DateUtils {
 
 
         return days;
         return days;
     }
     }
+
     public static Integer getDateInteger(String date) {
     public static Integer getDateInteger(String date) {
         if (!Check.isNull(date)) {
         if (!Check.isNull(date)) {
             String replace = date.replace("-", "");
             String replace = date.replace("-", "");
@@ -177,4 +183,10 @@ public class DateUtils {
             return null;
             return null;
         }
         }
     }
     }
+
+    public static Long timeToDate(Long timestamp) {
+        SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
+        String dateStr = sdf.format(new Date(timestamp * 1000)); // 乘以1000转换为毫秒
+        return Long.valueOf(dateStr);
+    }
 }
 }

+ 31 - 5
job-adq/src/main/java/cn/com/ctop/job/adq/handler/AdqAccountReportJob.java

@@ -1,10 +1,7 @@
 package cn.com.ctop.job.adq.handler;
 package cn.com.ctop.job.adq.handler;
 
 
 
 
-import cn.com.ctop.job.adq.data.service.IAdqAccountReportService;
-import cn.com.ctop.job.adq.data.service.IAdqAdIncomeService;
-import cn.com.ctop.job.adq.data.service.IAdqAssetReportService;
-import cn.com.ctop.job.adq.data.service.IAdqMaterialReportService;
+import cn.com.ctop.job.adq.data.service.*;
 import cn.com.ctop.job.adq.data.utils.Check;
 import cn.com.ctop.job.adq.data.utils.Check;
 import cn.com.ctop.job.adq.data.utils.DateUtils;
 import cn.com.ctop.job.adq.data.utils.DateUtils;
 import com.alibaba.fastjson.JSONObject;
 import com.alibaba.fastjson.JSONObject;
@@ -38,7 +35,9 @@ public class AdqAccountReportJob {
     private static ExecutorService nowDateHourExecutorService = Executors.newFixedThreadPool(5);
     private static ExecutorService nowDateHourExecutorService = Executors.newFixedThreadPool(5);
     private static ExecutorService yesDateHourExecutorService = Executors.newFixedThreadPool(5);
     private static ExecutorService yesDateHourExecutorService = Executors.newFixedThreadPool(5);
     private static ExecutorService dailyExecutorService = Executors.newFixedThreadPool(5);
     private static ExecutorService dailyExecutorService = Executors.newFixedThreadPool(5);
-
+    private static ExecutorService balanceExecutorService = Executors.newFixedThreadPool(2);
+    @Autowired
+    private IDailyBalanceReportService dailyBalanceReportService;
     @XxlJob("nowDateAccountHour")
     @XxlJob("nowDateAccountHour")
     public void nowDateAccountHour() throws Exception {
     public void nowDateAccountHour() throws Exception {
         String param = XxlJobHelper.getJobParam(); // 执行参数
         String param = XxlJobHelper.getJobParam(); // 执行参数
@@ -212,4 +211,31 @@ public class AdqAccountReportJob {
             adqAdIncomeService.getGameDiviceTransfer(start, end, app, appletId, 1, 1, null, null);
             adqAdIncomeService.getGameDiviceTransfer(start, end, app, appletId, 1, 1, null, null);
         }
         }
     }
     }
+
+
+    @XxlJob("yesDateBalance")
+    public void yesDateBalance() throws Exception {
+        String param = XxlJobHelper.getJobParam(); // 执行参数
+        if (Check.isNull(param)) {
+            log.error("入参为空");
+            return;
+        }
+
+        String nowDate = DateUtils.getNowDate("yyyy-MM-dd");
+        String yesDate = DateUtils.getAnotherDay("yyyy-MM-dd", nowDate, -1);
+        String[] s = param.split("_");
+        Long advertiserId = Long.valueOf(s[0]);
+        String accessToken = s[1];
+        balanceExecutorService.submit(new Runnable() {
+            @Override
+            public void run() {
+                try {
+                    dailyBalanceReportService.getAdqBalanceReport(advertiserId, accessToken, yesDate, yesDate, 1, null);
+                } catch (InterruptedException e) {
+                    throw new RuntimeException(e);
+                }
+            }
+        });
+    }
+
 }
 }

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

@@ -3,12 +3,14 @@ package cn.com.ctop.job.adq.handler;
 
 
 import cn.com.ctop.job.adq.data.service.IAdqAdminAdvertiserListService;
 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.Check;
+import com.alibaba.fastjson.JSONObject;
 import com.xxl.job.core.context.XxlJobHelper;
 import com.xxl.job.core.context.XxlJobHelper;
 import com.xxl.job.core.handler.annotation.XxlJob;
 import com.xxl.job.core.handler.annotation.XxlJob;
 import lombok.extern.slf4j.Slf4j;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
 import org.springframework.stereotype.Component;
 
 
+import java.util.List;
 import java.util.concurrent.ExecutorService;
 import java.util.concurrent.ExecutorService;
 import java.util.concurrent.Executors;
 import java.util.concurrent.Executors;
 
 
@@ -22,9 +24,30 @@ import java.util.concurrent.Executors;
 @Component
 @Component
 public class AdqAdminAdvertiserListJob {
 public class AdqAdminAdvertiserListJob {
     private static ExecutorService adminExecutorService = Executors.newFixedThreadPool(3);
     private static ExecutorService adminExecutorService = Executors.newFixedThreadPool(3);
+    private static ExecutorService agentExecutorService = Executors.newFixedThreadPool(5);
     @Autowired
     @Autowired
     private IAdqAdminAdvertiserListService adminAdvertiserListService;
     private IAdqAdminAdvertiserListService adminAdvertiserListService;
 
 
+    @XxlJob("agentInfo")
+    public void agentInfo() throws Exception {
+        List<JSONObject> list = adminAdvertiserListService.getAdvertiserList();
+        if (!Check.isNull(list)) {
+            for (JSONObject jsonObject : list) {
+                Long adminAdvertiserId = jsonObject.getLong("adminAdvertiserId");
+                Long advertiserId = jsonObject.getLong("advertiserId");
+                String accessToken = jsonObject.getString("accessToken");
+                agentExecutorService.submit(new Runnable() {
+                    @Override
+                    public void run() {
+                        adminAdvertiserListService.getAgentInfo(adminAdvertiserId, advertiserId, accessToken, null);
+                    }
+                });
+            }
+
+        }
+    }
+
+
     @XxlJob("getAdminAdvertiserList")
     @XxlJob("getAdminAdvertiserList")
     public void getAdminAdvertiserList() throws Exception {
     public void getAdminAdvertiserList() throws Exception {
         String param = XxlJobHelper.getJobParam(); // 执行参数
         String param = XxlJobHelper.getJobParam(); // 执行参数

+ 16 - 0
job-adq/src/main/java/cn/com/ctop/job/adq/handler/AdqRetryReportJob.java

@@ -32,6 +32,7 @@ public class AdqRetryReportJob {
     private static ExecutorService hourrAccountExecutorService = Executors.newFixedThreadPool(2);
     private static ExecutorService hourrAccountExecutorService = Executors.newFixedThreadPool(2);
     private static ExecutorService dailyAccountExecutorService = Executors.newFixedThreadPool(2);
     private static ExecutorService dailyAccountExecutorService = Executors.newFixedThreadPool(2);
     private static ExecutorService assetExecutorService = Executors.newFixedThreadPool(2);
     private static ExecutorService assetExecutorService = Executors.newFixedThreadPool(2);
+    private static ExecutorService blanceExecutorService = Executors.newFixedThreadPool(2);
 
 
     private static ExecutorService flowExecutorService = Executors.newFixedThreadPool(2);
     private static ExecutorService flowExecutorService = Executors.newFixedThreadPool(2);
 
 
@@ -52,6 +53,8 @@ public class AdqRetryReportJob {
     private IAdqAccountReportService accountReportService;
     private IAdqAccountReportService accountReportService;
     @Autowired
     @Autowired
     private IAdqMaterialReportService adqMaterialReportService;
     private IAdqMaterialReportService adqMaterialReportService;
+    @Autowired
+    private IDailyBalanceReportService dailyBalanceReportService;
 
 
     @XxlJob("adqRetryReport")
     @XxlJob("adqRetryReport")
     public void promoterReport() throws Exception {
     public void promoterReport() throws Exception {
@@ -163,6 +166,19 @@ public class AdqRetryReportJob {
                             }
                             }
                         }
                         }
                     });
                     });
+                }else if("daily_balance_report".equals(dataDimension)){
+                    blanceExecutorService.submit(new Runnable() {
+                        @Override
+                        public void run() {
+                            if (!Check.isNull(accessToken)) {
+                                try {
+                                    dailyBalanceReportService.getAdqBalanceReport(advertiserId, accessToken, startDate, endDate, 1, id);
+                                } catch (InterruptedException e) {
+                                    throw new RuntimeException(e);
+                                }
+                            }
+                        }
+                    });
                 }
                 }
 
 
 
 

+ 31 - 0
job-adq/src/main/java/cn/com/ctop/job/adq/handler/AppletTokenRefreshJob.java

@@ -0,0 +1,31 @@
+package cn.com.ctop.job.adq.handler;
+
+import cn.com.ctop.job.adq.data.service.IAppletTokenRefreshService;
+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;
+
+/**
+ * 微信小程序clientToke刷新
+ */
+@Slf4j
+@Component
+public class AppletTokenRefreshJob {
+
+    @Autowired
+    private IAppletTokenRefreshService tokenRefreshService;
+
+    @XxlJob("wechatAppletTokenRefreshJob")
+    public void wechatAppletTokenRefreshJob() {
+        log.info("[wechatAppletTokenRefreshJob] 小程序token更新任务开始...");
+        try {
+            // 生成小程序token
+            tokenRefreshService.buildAppletTokens();
+        } catch (Exception e) {
+            XxlJobHelper.handleFail("[wechatAppletTokenRefreshJob] 异常 + " + e.getMessage());
+        }
+    }
+
+}