소스 검색

广告组和人群包关系绑定逻辑

zhaoxian 4 년 전
부모
커밋
52add42d22

+ 59 - 0
module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/ai/entity/KuaishouPopulationGroup.java

@@ -0,0 +1,59 @@
+package cn.com.ctop.kuaishou.modules.ai.entity;
+
+import java.io.Serializable;
+import java.util.Date;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.annotation.TableField;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import org.springframework.format.annotation.DateTimeFormat;
+import org.jeecgframework.poi.excel.annotation.Excel;
+
+/**
+ * 人群包-广告组关联表
+ * @author jeecg-boot
+ * @date   2021-05-08
+ * @version V1.0
+ */
+@Data
+@TableName("ctop_kuaishou_population_group")
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+@ApiModel(value="ctop_kuaishou_population_group对象", description="人群包-广告组关联表")
+public class KuaishouPopulationGroup {
+    
+	/**id*/
+	@TableId(type = IdType.AUTO)
+    @ApiModelProperty(value = "id")
+	private Long id;
+	/**账户ID*/
+	@Excel(name = "账户ID", width = 15)
+    @ApiModelProperty(value = "账户ID")
+	private Long accountId;
+	/**广告组ID*/
+	@Excel(name = "广告组ID", width = 15)
+    @ApiModelProperty(value = "广告组ID")
+	private Long unitId;
+	/**人群包id*/
+	@Excel(name = "人群包id", width = 15)
+    @ApiModelProperty(value = "人群包id")
+	private Long orientationId;
+	/**创建时间*/
+	@Excel(name = "创建时间", width = 20, format = "yyyy-MM-dd HH:mm:ss")
+	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
+    @ApiModelProperty(value = "创建时间")
+	private Date createTime;
+	/**修改时间*/
+	@Excel(name = "修改时间", width = 20, format = "yyyy-MM-dd HH:mm:ss")
+	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
+    @ApiModelProperty(value = "修改时间")
+	private Date updateTime;
+}

+ 22 - 0
module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/ai/mapper/KuaishouPopulationGroupMapper.java

@@ -0,0 +1,22 @@
+package cn.com.ctop.kuaishou.modules.ai.mapper;
+
+import cn.com.ctop.kuaishou.modules.ai.entity.KuaishouPopulationGroup;
+import com.alibaba.fastjson.JSONArray;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+/**
+ * 人群包-广告组关联表
+ *
+ * @author jeecg-boot
+ * 2021-05-08
+ * @version V1.0
+ */
+public interface KuaishouPopulationGroupMapper extends BaseMapper<KuaishouPopulationGroup> {
+
+    void deleteByUnitId(@Param("unitId") Long unitId);
+
+    void replaceBatch(@Param(value = "list") List<KuaishouPopulationGroup> list);
+}

+ 5 - 5
module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/ai/mapper/xml/KuaishouDirectionalPckageRelMapper.xml

@@ -70,11 +70,11 @@
             CONCAT(t1.auth_name,'(',t1.account_id,')') as 'authName',
             IFNULL(t2.data_status,0) as 'state'
             FROM ctop_user_allocation t1
-            LEFT JOIN (
-            SELECT rel_id,data_status FROM ctop_kuaishou_directional_package_rel
-            WHERE  project_id = #{projectId}
-              AND rel_type = 'account'
-              AND dir_id = #{id}
+                LEFT JOIN (
+                SELECT rel_id,data_status FROM ctop_kuaishou_directional_package_rel
+                WHERE  project_id = #{projectId}
+                  AND rel_type = 'account'
+                  AND dir_id = #{id}
             ) t2 ON t1.account_id = t2.rel_id
         where t1.account_status = 0
           AND t1.project_id = #{projectId}

+ 29 - 0
module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/ai/mapper/xml/KuaishouPopulationGroupMapper.xml

@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="cn.com.ctop.kuaishou.modules.ai.mapper.KuaishouPopulationGroupMapper">
+
+    <delete id="deleteByUnitId">
+        DELETE
+        FROM ctop_kuaishou_population_group
+        WHERE unit_id = #{unitId}
+    </delete>
+
+    <insert id="replaceBatch">
+        replace into ctop_kuaishou_population_group(
+        id,
+        account_id,
+        unit_id,
+        orientation_id
+        )
+        values
+        <foreach collection="list" item="pop" separator=",">
+            (
+            #{pop.id},
+            #{pop.accountId},
+            #{pop.unitId},
+            #{pop.orientationId}
+            )
+        </foreach>
+    </insert>
+
+</mapper>

+ 28 - 0
module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/ai/service/IKuaishouPopulationGroupService.java

@@ -0,0 +1,28 @@
+package cn.com.ctop.kuaishou.modules.ai.service;
+
+import cn.com.ctop.kuaishou.modules.ai.entity.KuaishouPopulationGroup;
+import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * 人群包-广告组关联表
+ *
+ * @author jeecg-boot
+ * 2021-05-08
+ * @version V1.0
+ */
+public interface IKuaishouPopulationGroupService extends IService<KuaishouPopulationGroup> {
+
+    /* 添加广告组和人群包绑定关系
+     *
+     * @param unitId            广告组Id
+     * @param accountId         账户Id
+     * @param population        定向人群包
+     * @param paidAudience      付费人群包
+     * @param excludePopulation 排除人群包
+     * @return void
+     * @throws
+     * @author ZHAOXA
+     */
+    void createPopulationAndGroupRel(JSONObject request) throws Exception;
+}

+ 74 - 0
module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/ai/service/impl/KuaishouPopulationGroupServiceImpl.java

@@ -0,0 +1,74 @@
+package cn.com.ctop.kuaishou.modules.ai.service.impl;
+
+import cn.com.ctop.common.module.utils.Check;
+import cn.com.ctop.kuaishou.modules.ai.entity.KuaishouPopulationGroup;
+import cn.com.ctop.kuaishou.modules.ai.mapper.KuaishouPopulationGroupMapper;
+import cn.com.ctop.kuaishou.modules.ai.service.IKuaishouPopulationGroupService;
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * 人群包-广告组关联表
+ *
+ * @author jeecg-boot
+ * 2021-05-08
+ * @version V1.0
+ */
+@Service
+public class KuaishouPopulationGroupServiceImpl extends ServiceImpl<KuaishouPopulationGroupMapper, KuaishouPopulationGroup> implements IKuaishouPopulationGroupService {
+
+    @Autowired
+    private KuaishouPopulationGroupMapper populationGroupMapper;
+
+    @Override
+    public void createPopulationAndGroupRel(JSONObject request) throws Exception {
+        try {
+            List<KuaishouPopulationGroup> list = new ArrayList<>();
+            Long accountId = request.getLong("accountId");
+            Long unitId = request.getLong("unitId");
+            KuaishouPopulationGroup populationGroup = null;
+            JSONArray population = request.getJSONArray("population");
+            if (!Check.isNull(population)) {
+                for (Object id : population) {
+                    populationGroup = new KuaishouPopulationGroup();
+                    populationGroup.setAccountId(accountId);
+                    populationGroup.setUnitId(unitId);
+                    populationGroup.setOrientationId(Long.valueOf(String.valueOf(id)));
+                    list.add(populationGroup);
+                }
+            }
+            JSONArray excludePopulation = request.getJSONArray("excludePopulation");
+            if (!Check.isNull(excludePopulation)) {
+                for (Object id : excludePopulation) {
+                    populationGroup = new KuaishouPopulationGroup();
+                    populationGroup.setAccountId(accountId);
+                    populationGroup.setUnitId(unitId);
+                    populationGroup.setOrientationId(Long.valueOf(String.valueOf(id)));
+                    list.add(populationGroup);
+                }
+            }
+            JSONArray paidAudience = request.getJSONArray("paidAudience");
+            if (!Check.isNull(paidAudience)) {
+                for (Object id : paidAudience) {
+                    populationGroup = new KuaishouPopulationGroup();
+                    populationGroup.setAccountId(accountId);
+                    populationGroup.setUnitId(unitId);
+                    populationGroup.setOrientationId(Long.valueOf(String.valueOf(id)));
+                    list.add(populationGroup);
+                }
+            }
+            if (list.size() > 0) {
+                populationGroupMapper.deleteByUnitId(request.getLong("unitId"));
+                populationGroupMapper.replaceBatch(list);
+            }
+        } catch (NumberFormatException e) {
+            log.error("添加广告组和人群包绑定关系异常", e);
+        }
+    }
+}

+ 32 - 16
module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/batch/service/impl/CrossAccountBatchServiceImpl.java

@@ -2,10 +2,20 @@ package cn.com.ctop.kuaishou.modules.batch.service.impl;
 
 import cn.com.ctop.common.module.entity.CtopOauthToken;
 import cn.com.ctop.common.module.service.ICtopOauthTokenService;
-import cn.com.ctop.common.module.utils.*;
+import cn.com.ctop.common.module.utils.Check;
+import cn.com.ctop.common.module.utils.HttpUtils;
+import cn.com.ctop.common.module.utils.KuaishouInterfaceConstant;
+import cn.com.ctop.common.module.utils.PropertiesUtils;
+import cn.com.ctop.common.module.utils.RandomUtil;
 import cn.com.ctop.kuaishou.modules.ai.service.IKuaishouDirectionalPackageService;
+import cn.com.ctop.kuaishou.modules.ai.service.IKuaishouPopulationGroupService;
 import cn.com.ctop.kuaishou.modules.batch.entity.KuaiShouImageGet;
-import cn.com.ctop.kuaishou.modules.batch.service.*;
+import cn.com.ctop.kuaishou.modules.batch.service.ICrossAccountBatchService;
+import cn.com.ctop.kuaishou.modules.batch.service.IKuaiShouGroupService;
+import cn.com.ctop.kuaishou.modules.batch.service.IKuaiShouImageGetService;
+import cn.com.ctop.kuaishou.modules.batch.service.IKuaiShouMaterialUploadService;
+import cn.com.ctop.kuaishou.modules.batch.service.IKuaiShouOverRunSendMessageService;
+import cn.com.ctop.kuaishou.modules.batch.service.IKuaishouInterfaceService;
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
@@ -38,6 +48,8 @@ public class CrossAccountBatchServiceImpl implements ICrossAccountBatchService {
 
     @Autowired
     private IKuaishouDirectionalPackageService directionalPackageService;
+    @Autowired
+    private IKuaishouPopulationGroupService populationGroupService;
 
     /**
      * 组装数据  jason
@@ -460,24 +472,28 @@ public class CrossAccountBatchServiceImpl implements ICrossAccountBatchService {
                         returnJson.put("ocpxActionType", requestJson.getLong("ocpx_action_type"));
                         returnJson.put("bidType", requestJson.getLong("bid_type"));
                         returnJson.put("unitType", requestJson.getInteger("unit_type"));
-
-                        //添加广告组和定向模板绑定关系
-                        if (!Check.isNull(requestJson.getLong("templateId"))) {
-                            Thread thread2 = new Thread() {
-                                @Override
-                                public void run() {
-                                    try {
-                                        JSONObject request = new JSONObject();
-                                        request.put("unitId", unitId);
+                        //添加广告组和定向模板、人群包绑定关系
+                        Thread thread2 = new Thread() {
+                            @Override
+                            public void run() {
+                                try {
+                                    JSONObject request = new JSONObject();
+                                    request.put("accountId", requestJson.getLong("advertiser_id"));
+                                    request.put("unitId", unitId);
+                                    request.put("excludePopulation", requestJson.getJSONObject("requestJson").getJSONArray("exclude_population"));
+                                    request.put("population", requestJson.getJSONObject("requestJson").getJSONArray("population"));
+                                    request.put("paidAudience", requestJson.getJSONObject("requestJson").getJSONArray("paid_audience"));
+                                    if (!Check.isNull(requestJson.getLong("templateId"))) {
                                         request.put("templateId", requestJson.getLong("templateId"));
                                         directionalPackageService.createUnitAndTemplate(request);
-                                    } catch (Exception e) {
-                                        log.error(e.getMessage());
                                     }
+                                    populationGroupService.createPopulationAndGroupRel(request);
+                                } catch (Exception e) {
+                                    log.error(e.getMessage());
                                 }
-                            };
-                            thread2.start();
-                        }
+                            }
+                        };
+                        thread2.start();
                     }
 
                 } else {

+ 28 - 2
module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/batch/service/impl/KuaiShouUpdateServiceImpl.java

@@ -4,6 +4,8 @@ import cn.com.ctop.common.module.utils.Check;
 import cn.com.ctop.common.module.utils.HttpUtils;
 import cn.com.ctop.common.module.utils.KuaishouInterfaceConstant;
 import cn.com.ctop.common.module.utils.PropertiesUtils;
+import cn.com.ctop.kuaishou.modules.ai.service.IKuaishouDirectionalPackageService;
+import cn.com.ctop.kuaishou.modules.ai.service.IKuaishouPopulationGroupService;
 import cn.com.ctop.kuaishou.modules.batch.entity.*;
 import cn.com.ctop.kuaishou.modules.batch.mapper.*;
 import cn.com.ctop.kuaishou.modules.batch.service.IKuaiShouGroupService;
@@ -46,7 +48,10 @@ public class KuaiShouUpdateServiceImpl implements IKuaiShouUpdateService {
     private KuaiShouCampaignMapper kuaiShouCampaignMapper;
     @Resource
     private KuaiShouCreativeMapper creativeMapper;
-
+    @Autowired
+    private IKuaishouDirectionalPackageService directionalPackageService;
+    @Autowired
+    private IKuaishouPopulationGroupService populationGroupService;
 
     @Override
     public Map<String, Object> updateCampaign(String token, Long advertiserId, Long campaignId, Long dayBudget, String loginId) {
@@ -113,7 +118,6 @@ public class KuaiShouUpdateServiceImpl implements IKuaiShouUpdateService {
     }
 
 
-
     /**
      * 修改广告组预算
      *
@@ -605,6 +609,28 @@ public class KuaiShouUpdateServiceImpl implements IKuaiShouUpdateService {
                 if (code == 0) {
                     JSONObject data = resultJson.getJSONObject("data");
                     if (!Check.isNull(data)) {
+                        //添加广告组和定向模板、人群包绑定关系
+                        Thread thread2 = new Thread() {
+                            @Override
+                            public void run() {
+                                try {
+                                    JSONObject request = new JSONObject();
+                                    request.put("accountId", unitJson.getLong("advertiser_id"));
+                                    request.put("unitId", data.getLong("unit_id"));
+                                    request.put("excludePopulation", unitJson.getJSONObject("requestJson").getJSONArray("exclude_population"));
+                                    request.put("population", unitJson.getJSONObject("requestJson").getJSONArray("population"));
+                                    request.put("paidAudience", unitJson.getJSONObject("requestJson").getJSONArray("paid_audience"));
+                                    if (!Check.isNull(unitJson.getLong("templateId"))) {
+                                        request.put("templateId", unitJson.getLong("templateId"));
+                                        directionalPackageService.createUnitAndTemplate(request);
+                                    }
+                                    populationGroupService.createPopulationAndGroupRel(request);
+                                } catch (Exception e) {
+                                    log.error(e.getMessage());
+                                }
+                            }
+                        };
+                        thread2.start();
                         try {
                             Thread.sleep(500);
                             groupService.getGroupByUnitId(accessToken, unitJson.getLong("advertiser_id"), data.getLong("unit_id"));

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

@@ -7,20 +7,65 @@ import cn.com.ctop.common.module.enums.MaterialEnum;
 import cn.com.ctop.common.module.service.IMaterialCutFrameService;
 import cn.com.ctop.common.module.service.IOauthConfigService;
 import cn.com.ctop.common.module.service.IUserAllocationService;
-import cn.com.ctop.common.module.utils.*;
+import cn.com.ctop.common.module.utils.Check;
+import cn.com.ctop.common.module.utils.CtopAdConstant;
+import cn.com.ctop.common.module.utils.HttpUtils;
+import cn.com.ctop.common.module.utils.JsonUtil;
+import cn.com.ctop.common.module.utils.KuaishouInterfaceConstant;
+import cn.com.ctop.common.module.utils.PropertiesUtils;
 import cn.com.ctop.kuaishou.modules.ai.service.IAiCreativeLimitService;
 import cn.com.ctop.kuaishou.modules.ai.service.IKuaishouAccountCreativeOverrunInfoService;
 import cn.com.ctop.kuaishou.modules.ai.service.IKuaishouDirectionalPackageService;
-import cn.com.ctop.kuaishou.modules.batch.entity.*;
+import cn.com.ctop.kuaishou.modules.ai.service.IKuaishouPopulationGroupService;
+import cn.com.ctop.kuaishou.modules.batch.entity.KuaiShouAdvertiserBaseInfo;
+import cn.com.ctop.kuaishou.modules.batch.entity.KuaiShouAppList;
+import cn.com.ctop.kuaishou.modules.batch.entity.KuaiShouCampaign;
+import cn.com.ctop.kuaishou.modules.batch.entity.KuaiShouCreative;
+import cn.com.ctop.kuaishou.modules.batch.entity.KuaiShouDailyFlows;
+import cn.com.ctop.kuaishou.modules.batch.entity.KuaiShouGroup;
+import cn.com.ctop.kuaishou.modules.batch.entity.KuaiShouImageGet;
+import cn.com.ctop.kuaishou.modules.batch.entity.KuaiShouRegionListChildren;
+import cn.com.ctop.kuaishou.modules.batch.entity.KuaiShouRegionListParent;
+import cn.com.ctop.kuaishou.modules.batch.entity.KuaiShouTargetingTags;
+import cn.com.ctop.kuaishou.modules.batch.entity.KuaiShouVideoGet;
+import cn.com.ctop.kuaishou.modules.batch.entity.KuaishouPopulation;
 import cn.com.ctop.kuaishou.modules.batch.entity.vo.ConvertVo;
-import cn.com.ctop.kuaishou.modules.batch.mapper.*;
-import cn.com.ctop.kuaishou.modules.batch.service.*;
+import cn.com.ctop.kuaishou.modules.batch.mapper.KuaiShouAdvertiserBaseInfoMapper;
+import cn.com.ctop.kuaishou.modules.batch.mapper.KuaiShouAppListMapper;
+import cn.com.ctop.kuaishou.modules.batch.mapper.KuaiShouGroupMapper;
+import cn.com.ctop.kuaishou.modules.batch.mapper.KuaiShouRegionListChildrenMapper;
+import cn.com.ctop.kuaishou.modules.batch.mapper.KuaiShouRegionListParentMapper;
+import cn.com.ctop.kuaishou.modules.batch.mapper.KuaiShouTargetingTagsMapper;
+import cn.com.ctop.kuaishou.modules.batch.service.IKuaiShouCampaignService;
+import cn.com.ctop.kuaishou.modules.batch.service.IKuaiShouCreativeService;
+import cn.com.ctop.kuaishou.modules.batch.service.IKuaiShouDailyFlowsService;
+import cn.com.ctop.kuaishou.modules.batch.service.IKuaiShouGroupService;
+import cn.com.ctop.kuaishou.modules.batch.service.IKuaiShouHistoryReportTaskService;
+import cn.com.ctop.kuaishou.modules.batch.service.IKuaiShouImageGetService;
+import cn.com.ctop.kuaishou.modules.batch.service.IKuaiShouOverRunSendMessageService;
+import cn.com.ctop.kuaishou.modules.batch.service.IKuaiShouVideoGetService;
+import cn.com.ctop.kuaishou.modules.batch.service.IKuaishouInterfaceService;
+import cn.com.ctop.kuaishou.modules.batch.service.IKuaishouPopulationService;
+import cn.com.ctop.kuaishou.modules.batch.service.IWarningOperationService;
 import cn.com.ctop.kuaishou.modules.material.entity.KuaishouResult;
 import cn.com.ctop.kuaishou.modules.material.entity.KuaishouResultToken;
-import cn.com.ctop.kuaishou.modules.report.entity.*;
+import cn.com.ctop.kuaishou.modules.report.entity.KuaishouReportDailyAccount;
+import cn.com.ctop.kuaishou.modules.report.entity.KuaishouReportDailyCampaign;
+import cn.com.ctop.kuaishou.modules.report.entity.KuaishouReportDailyCreative;
+import cn.com.ctop.kuaishou.modules.report.entity.KuaishouReportDailyCreativeStatistic;
+import cn.com.ctop.kuaishou.modules.report.entity.KuaishouReportHourlyAccount;
+import cn.com.ctop.kuaishou.modules.report.entity.KuaishouReportHourlyCampaign;
+import cn.com.ctop.kuaishou.modules.report.entity.KuaishouReportHourlyCreative;
+import cn.com.ctop.kuaishou.modules.report.entity.KuaishouReportHourlyCreativeStatistic;
+import cn.com.ctop.kuaishou.modules.report.entity.KuaishouReportHourlyGroup;
 import cn.com.ctop.kuaishou.modules.report.mapper.KuaishouReportDailyAccountMapper;
 import cn.com.ctop.kuaishou.modules.report.mapper.KuaishouReportDailyCampaignMapper;
-import cn.com.ctop.kuaishou.modules.report.service.*;
+import cn.com.ctop.kuaishou.modules.report.service.IKuaishouReportDailyCampaignService;
+import cn.com.ctop.kuaishou.modules.report.service.IKuaishouReportDailyCreativeService;
+import cn.com.ctop.kuaishou.modules.report.service.IKuaishouReportHourlyAccountService;
+import cn.com.ctop.kuaishou.modules.report.service.IKuaishouReportHourlyCampaignService;
+import cn.com.ctop.kuaishou.modules.report.service.IKuaishouReportHourlyCreativeService;
+import cn.com.ctop.kuaishou.modules.report.service.IKuaishouReportHourlyGroupService;
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
@@ -54,7 +99,11 @@ import java.io.IOException;
 import java.lang.reflect.ParameterizedType;
 import java.lang.reflect.Type;
 import java.text.SimpleDateFormat;
-import java.util.*;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
 import java.util.concurrent.ExecutorService;
 import java.util.concurrent.Executors;
 
@@ -122,6 +171,8 @@ public class KuaishouInterfaceServiceImpl implements IKuaishouInterfaceService {
 
     @Autowired
     private IKuaishouDirectionalPackageService directionalPackageService;
+    @Autowired
+    private IKuaishouPopulationGroupService populationGroupService;
 
     @Override
     public void getAdvertiserReportHourly(CtopOauthToken token, Date startDate, Date endDate) {
@@ -974,23 +1025,28 @@ public class KuaishouInterfaceServiceImpl implements IKuaishouInterfaceService {
                         returnMap.put("message", "success");
                         returnMap.put("unitId", unitId);
                         returnMap.put("success", true);
-                        //添加广告组和定向模板绑定关系
-                        if (!Check.isNull(requestJson.getLong("templateId"))) {
-                            Thread thread2 = new Thread() {
-                                @Override
-                                public void run() {
-                                    try {
-                                        JSONObject request = new JSONObject();
-                                        request.put("unitId", unitId);
+                        //添加广告组和定向模板、人群包绑定关系
+                        Thread thread2 = new Thread() {
+                            @Override
+                            public void run() {
+                                try {
+                                    JSONObject request = new JSONObject();
+                                    request.put("accountId", requestJson.getLong("advertiser_id"));
+                                    request.put("unitId", unitId);
+                                    request.put("excludePopulation", requestJson.getJSONObject("requestJson").getJSONArray("exclude_population"));
+                                    request.put("population", requestJson.getJSONObject("requestJson").getJSONArray("population"));
+                                    request.put("paidAudience", requestJson.getJSONObject("requestJson").getJSONArray("paid_audience"));
+                                    if (!Check.isNull(requestJson.getLong("templateId"))) {
                                         request.put("templateId", requestJson.getLong("templateId"));
                                         directionalPackageService.createUnitAndTemplate(request);
-                                    } catch (Exception e) {
-                                        log.error(e.getMessage());
                                     }
+                                    populationGroupService.createPopulationAndGroupRel(request);
+                                } catch (Exception e) {
+                                    log.error(e.getMessage());
                                 }
-                            };
-                            thread2.start();
-                        }
+                            }
+                        };
+                        thread2.start();
                     }
 
                 } else {