Kaynağa Gözat

批量创建--添加不创建计划逻辑

zhaoxian 4 yıl önce
ebeveyn
işleme
83590c4672

+ 1 - 1
module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/batch/entity/KuaishouBatchCampaignPreview.java

@@ -71,7 +71,7 @@ public class KuaishouBatchCampaignPreview {
      */
     @Excel(name = "每日预算", width = 15)
     @ApiModelProperty(value = "每日预算")
-    private Integer dayBudget;
+    private Long dayBudget;
     /**
      * dayBudgetSchedule
      */

+ 53 - 10
module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/batch/service/impl/KuaishouBatchCampaignPreviewServiceImpl.java

@@ -3,10 +3,12 @@ package cn.com.ctop.kuaishou.modules.batch.service.impl;
 import cn.com.ctop.common.module.enums.SceneIdEnum;
 import cn.com.ctop.common.module.utils.Check;
 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.KuaishouBatchCampaignPreview;
 import cn.com.ctop.kuaishou.modules.batch.entity.KuaishouBatchCreativePreview;
 import cn.com.ctop.kuaishou.modules.batch.entity.KuaishouBatchGroupPreview;
 import cn.com.ctop.kuaishou.modules.batch.entity.KuaishouTemplate;
+import cn.com.ctop.kuaishou.modules.batch.mapper.KuaiShouCampaignMapper;
 import cn.com.ctop.kuaishou.modules.batch.mapper.KuaishouBatchCampaignPreviewMapper;
 import cn.com.ctop.kuaishou.modules.batch.mapper.KuaishouBatchCreativePreviewMapper;
 import cn.com.ctop.kuaishou.modules.batch.mapper.KuaishouBatchGroupPreviewMapper;
@@ -51,6 +53,8 @@ public class KuaishouBatchCampaignPreviewServiceImpl extends ServiceImpl<Kuaisho
     private IKuaishouTemplateService kuaishouTemplateService;
     @Autowired
     private IKuaiShouAppListService kuaiShouAppListService;
+    @Autowired
+    private KuaiShouCampaignMapper kuaiShouCampaignMapper;
 
     @Override
     public JSONObject queryByBatchId(String batchId, String accountId) {
@@ -137,7 +141,6 @@ public class KuaishouBatchCampaignPreviewServiceImpl extends ServiceImpl<Kuaisho
         if (Check.isNull(campaignJson)) {
             throw new Exception("数据异常,未获取到广告计划数据");
         }
-        KuaishouBatchCampaignPreview campaignPreview = commonCampaign(campaignJson, batchId);
         //组
         JSONObject groupJson = data.getJSONObject("unitJson");
         if (Check.isNull(groupJson)) {
@@ -170,11 +173,44 @@ public class KuaishouBatchCampaignPreviewServiceImpl extends ServiceImpl<Kuaisho
         if (Check.isNull(targetIds)) {
             throw new Exception("数据异常,未获取到应用数据");
         }
-        //分组规则 1 定向 2 创意 3 落地页
-        Integer type = campaignJson.getInteger("groupRule");
-        insertCampaignsAndGroups(type, data, campaignPreview, groupPreview, creativePreview);
+        Long campaignId = campaignJson.getLong("campaignId");
+        if (Check.isNull(campaignId)) {
+            //分组规则 1 定向 2 创意 3 落地页
+            Integer type = campaignJson.getInteger("groupRule");
+            KuaishouBatchCampaignPreview campaignPreview = commonCampaign(campaignJson, batchId);
+            insertCampaignsAndGroups(type, campaignId, data, campaignPreview, groupPreview, creativePreview);
+        } else {
+            KuaishouBatchCampaignPreview campaignPreview = getOldCampaign(campaignId, batchId);
+            insertCampaignsAndGroups(1, campaignId, data, campaignPreview, groupPreview, creativePreview);
+        }
     }
 
+    /**
+     * 给已有计划添加数据
+     *
+     * @param
+     * @return void
+     * @throws
+     * @author ZHAOXA
+     */
+    private KuaishouBatchCampaignPreview getOldCampaign(Long campaignId, String batchId) throws Exception {
+        QueryWrapper<KuaiShouCampaign> queryWrapper = new QueryWrapper<>();
+        queryWrapper.eq("campaign_id", campaignId);
+        KuaiShouCampaign kuaiShouCampaign = kuaiShouCampaignMapper.selectOne(queryWrapper);
+        KuaishouBatchCampaignPreview campaignPreview = new KuaishouBatchCampaignPreview();
+        campaignPreview.setAccountId(kuaiShouCampaign.getAccountId());
+        campaignPreview.setCampaignName(kuaiShouCampaign.getCampaignName());
+        campaignPreview.setCampaignId(campaignId);
+        campaignPreview.setCampaignType(kuaiShouCampaign.getCampaignType());
+        campaignPreview.setPutStatus(kuaiShouCampaign.getPutStatus());
+        campaignPreview.setDayBudget(kuaiShouCampaign.getDayBudget());
+        campaignPreview.setDayBudgetSchedule(kuaiShouCampaign.getDayBudgetSchedule());
+        campaignPreview.setIsTime(2);
+        campaignPreview.setBatchId(batchId);
+        return campaignPreview;
+
+
+    }
 
     /**
      * 插入预览信息
@@ -184,7 +220,7 @@ public class KuaishouBatchCampaignPreviewServiceImpl extends ServiceImpl<Kuaisho
      * @throws
      * @author ZHAOXA
      */
-    private void insertCampaignsAndGroups(Integer type, JSONObject data, KuaishouBatchCampaignPreview campaignPreview, KuaishouBatchGroupPreview groupPreview, KuaishouBatchCreativePreview creativePreview) throws Exception {
+    private void insertCampaignsAndGroups(Integer type, Long campaignId, JSONObject data, KuaishouBatchCampaignPreview campaignPreview, KuaishouBatchGroupPreview groupPreview, KuaishouBatchCreativePreview creativePreview) throws Exception {
         //定向包
         JSONArray targetIds = data.getJSONArray("targetIds");
         //应用数据
@@ -244,6 +280,10 @@ public class KuaishouBatchCampaignPreviewServiceImpl extends ServiceImpl<Kuaisho
         int count = targetIds.size() * materialList.size();
         int appCount = targetIds.size() * materialList.size();
         if (NoEn.NO1.valueInt() == type) {
+            //添加已有计划预览数据
+            if (!Check.isNull(campaignId)) {
+                campaignPreviewMapper.insert(campaignPreview);
+            }
             /**
              *按照 定向包 分组
              * 计划总数 = 定向包数(targetIds)
@@ -267,9 +307,11 @@ public class KuaishouBatchCampaignPreviewServiceImpl extends ServiceImpl<Kuaisho
                         actionbarClickUrl = actionbarClickUrlList.getString(i);
                     }
                 }
-                campaignPreview.setId(null);
-                campaignPreview.setCampaignName(getName(campaignPreview.getCampaignNameFormat(), null, null, appId, null) + i);
-                campaignPreviewMapper.insert(campaignPreview);
+                if (Check.isNull(campaignId)) {
+                    campaignPreview.setId(null);
+                    campaignPreview.setCampaignName(getName(campaignPreview.getCampaignNameFormat(), null, null, appId, null) + i);
+                    campaignPreviewMapper.insert(campaignPreview);
+                }
                 for (int j = 0; j < materialList.size(); j++) {
                     if (appAllocation == 3) {
                         appCount--;
@@ -412,6 +454,7 @@ public class KuaishouBatchCampaignPreviewServiceImpl extends ServiceImpl<Kuaisho
                 }
             }
         }
+
     }
 
     /**
@@ -467,7 +510,7 @@ public class KuaishouBatchCampaignPreviewServiceImpl extends ServiceImpl<Kuaisho
         campaignPreview.setCampaignNameFormat(campaignJson.getString("campaignName"));
         campaignPreview.setCampaignType(campaignJson.getInteger("campaignType"));
         campaignPreview.setPutStatus(campaignJson.getInteger("campaignStatus"));
-        campaignPreview.setDayBudget(campaignJson.getInteger("dayBudget"));
+        campaignPreview.setDayBudget(campaignJson.getLong("dayBudget"));
         campaignPreview.setDayBudgetSchedule(campaignJson.getString("dayBudgetSchedule"));
         campaignPreview.setTimeStart(campaignJson.getString("timeStart"));
         campaignPreview.setIsTime(campaignJson.getInteger("isTime"));
@@ -488,7 +531,7 @@ public class KuaishouBatchCampaignPreviewServiceImpl extends ServiceImpl<Kuaisho
         groupPreview.setAccountId(groupJson.getLong("accountId"));
         groupPreview.setUnitName(groupJson.getString("unitName"));
         groupPreview.setUnitNameFormat(groupJson.getString("unitName"));
-        groupPreview.setPutStatus(campaignJson.getInteger("unitStatus") == 2 ? 2 : null);
+        groupPreview.setPutStatus(Check.isNull(campaignJson.getInteger("unitStatus")) || campaignJson.getInteger("unitStatus") == 2 ? 2 : null);
         groupPreview.setBidType(groupJson.getInteger("bidType"));
         if (groupJson.getInteger("bidType") == 2) {
             int bid = getRandom(groupJson.getInteger("bidMax"), groupJson.getInteger("bidMin"));

+ 30 - 25
module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/batch/service/impl/KuaishouBatchCreativePreviewServiceImpl.java

@@ -18,7 +18,6 @@ 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.IKuaiShouVideoGetService;
 import cn.com.ctop.kuaishou.modules.batch.service.IKuaishouBatchCreativePreviewService;
-import com.alibaba.fastjson.JSONObject;
 import cn.com.ctop.kuaishou.modules.batch.service.IKuaishouInterfaceService;
 import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
@@ -142,40 +141,46 @@ public class KuaishouBatchCreativePreviewServiceImpl extends ServiceImpl<Kuaisho
      * @throws
      * @author ZHAOXA
      */
-
     private void creativeCampaign(CtopOauthToken oauthToken, KuaishouBatchCampaignPreview campaign) throws Exception {
         KuaishouBatchCampaignPreview updateStatus = new KuaishouBatchCampaignPreview();
         updateStatus.setId(campaign.getId());
-        JSONObject campaignJson = new JSONObject();
-        campaignJson.put("campaign_name", campaign.getCampaignName());
-        campaignJson.put("type", campaign.getCampaignType());
-        if (!Check.isNull(campaign.getDayBudget())) {
-            campaignJson.put("day_budget", campaign.getDayBudget());
-        }
-        if (!Check.isNull(campaign.getDayBudgetSchedule())) {
-            campaignJson.put("day_budget_schedule", campaign.getDayBudgetSchedule());
-        }
-        Map<String, Object> campaignMap = kuaishouInterfaceService.campaignCreate(oauthToken.getAccessToken(), oauthToken.getAccountId(), campaignJson);
-        Integer code = (Integer) campaignMap.get("code");
-        if (code != 0) {
-            updateStatus.setIsSuccess(0);
+        Long campaignId = campaign.getCampaignId();
+        if (Check.isNull(campaignId)) {
+            JSONObject campaignJson = new JSONObject();
+            campaignJson.put("campaign_name", campaign.getCampaignName());
+            campaignJson.put("type", campaign.getCampaignType());
+            if (!Check.isNull(campaign.getDayBudget())) {
+                campaignJson.put("day_budget", campaign.getDayBudget());
+            }
+            if (!Check.isNull(campaign.getDayBudgetSchedule())) {
+                campaignJson.put("day_budget_schedule", campaign.getDayBudgetSchedule());
+            }
+            Map<String, Object> campaignMap = kuaishouInterfaceService.campaignCreate(oauthToken.getAccessToken(), oauthToken.getAccountId(), campaignJson);
+            Integer code = (Integer) campaignMap.get("code");
+            if (code != 0) {
+                updateStatus.setIsSuccess(0);
+                updateStatus.setMessage((String) campaignMap.get("message"));
+                campaignPreviewMapper.updateById(updateStatus);
+                throw new Exception((String) campaignMap.get("message"));
+            }
+            campaignId = (Long) campaignMap.get("campaignId");
+            /**
+             *更新预览数据状态
+             */
+            updateStatus.setIsSuccess(1);
             updateStatus.setMessage((String) campaignMap.get("message"));
-            campaignPreviewMapper.updateById(updateStatus);
-            throw new Exception((String) campaignMap.get("message"));
+            updateStatus.setCampaignId(campaignId);
+        } else {
+            updateStatus.setIsSuccess(1);
+            updateStatus.setMessage("执行成功");
         }
-        Long campaignId = (Long) campaignMap.get("campaignId");
-        /**
-         *更新预览数据状态
-         */
-        updateStatus.setIsSuccess(1);
-        updateStatus.setMessage((String) campaignMap.get("message"));
-        updateStatus.setCampaignId(campaignId);
         campaignPreviewMapper.updateById(updateStatus);
         //创意广告组
         List<KuaishouBatchGroupPreview> groupPreviewList = campaign.getKuaishouBatchGroupPreviews();
+        Long finalCampaignId = campaignId;
         groupPreviewList.forEach(group -> campaignService.submit(() -> {
             try {
-                createCopyUnits(oauthToken, group, campaignId);
+                createCopyUnits(oauthToken, group, finalCampaignId);
             } catch (Exception e) {
                 log.error("根据预览数据创建广告组异常", e);
             }