浏览代码

Merge branch 'master' of http://git.tjyourong.com.cn/ctop/adsp-boot

zhaoxian 4 年之前
父节点
当前提交
5fbaaa613d

+ 31 - 0
jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/controller/UserAllocationController.java

@@ -16,6 +16,7 @@ import cn.com.ctop.kuaishou.modules.batch.service.IKuaishouInterfaceService;
 import cn.com.ctop.toutiao.modules.material.service.IByteDanceAdvertiserDataService;
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import io.swagger.annotations.Api;
@@ -476,4 +477,34 @@ public class UserAllocationController {
         return result;
     }
 
+    /**
+     *  账户绑定是否开启删评论开关
+     */
+    @PostMapping(value = "/onOrOffDeleteComment")
+    public Result<Object> onOrOffMonitoringLink(@RequestParam Long accountId, @RequestParam Integer switchType){
+        Result<Object> result=new Result<>();
+        UserAllocation userAllocation=new UserAllocation();
+        userAllocation.setAccountId(accountId);
+        UpdateWrapper<UserAllocation> wrapper=new UpdateWrapper<>();
+        //开启删评论
+        if(switchType==0){
+            wrapper.set("delete_comment",0);
+            wrapper.setEntity(userAllocation);
+            boolean update = userAllocationService.update(wrapper);
+            if(update){
+                result.success("删评论开启成功");
+            }
+        }else if(switchType==1){
+            wrapper.set("delete_comment",1);
+            wrapper.setEntity(userAllocation);
+            boolean update = userAllocationService.update(wrapper);
+            if(update){
+                result.success("删评论关闭成功");
+            }
+        }else {
+            result.error500("未知操作");
+        }
+        return result;
+    }
+
 }

+ 8 - 6
jeecg-boot-module-system/src/test/java/org/jeecg/SampleTest.java

@@ -251,17 +251,17 @@ public class SampleTest {
     }
 
     @Test
-    public void loadKuaishouData(){
+    public void loadKuaishouData() {
         Date getDate = DateUtils.addDay(new Date(), -1);
         //1:查询当日数据
         List<CtopOauthToken> tokens = tokenService.selectKuaiShouToken();
-        for (CtopOauthToken token:tokens){
+        for (CtopOauthToken token : tokens) {
             kuaishouInterfaceService.getAdvertiserCampaignReportDaily(token, getDate, getDate);
         }
     }
 
     @Test
-    public void loadKuaishouHourlyReportData(){
+    public void loadKuaishouHourlyReportData() {
         Date getDate = new Date();
         SimpleDateFormat simpleDateFormat = new SimpleDateFormat("HH");
         String hour = simpleDateFormat.format(getDate);
@@ -273,6 +273,7 @@ public class SampleTest {
         Date finalGetDate = getDate;
         tokens.forEach(token -> kuaishouInterfaceService.getAdvertiserReportHourly(token, finalGetDate, finalGetDate));
     }
+
     @Autowired
     private IKuaishouInterfaceService kuaishouInterfaceService;
 
@@ -342,11 +343,12 @@ public class SampleTest {
 
     @Autowired
     IRuleKuaiShouPlanService kuaiShouPlanService;
+
     @Test
-    public void kuaishouRuleData(){
+    public void kuaishouRuleData() {
         //kuaiShouPlanService.cleanRuleDataPlan(3429620L,"2020-12-07","2020-12-07",1);
-        kuaiShouPlanService.cleanRuleDataUnit(3429620L,"2020-12-07","2020-12-07",1);
-        kuaiShouPlanService.cleanRuleDataTarget(3429620L,"2020-12-07","2020-12-07",1);
+        kuaiShouPlanService.cleanRuleDataUnit(3429620L, "2020-12-07", "2020-12-07", 1);
+        // kuaiShouPlanService.cleanRuleDataTarget(3429620L,"2020-12-07","2020-12-07",1);
 
     }
 

+ 5 - 0
module-alarm/src/main/java/cn/com/ctop/alarm/modules/service/impl/RuleTemplateServiceImpl.java

@@ -226,6 +226,7 @@ public class RuleTemplateServiceImpl extends ServiceImpl<RuleTemplateMapper, Rul
                 QueryWrapper<RuleIndicator> indicatorQueryWrapper = new QueryWrapper<>();
                 indicatorQueryWrapper.eq("code", ruleBase.getIndicatorCode());
                 indicatorQueryWrapper.eq("dimension", ruleBase.getRuleDimension());
+                indicatorQueryWrapper.eq("media_type", template.getMediaType());
                 indicatorQueryWrapper.last("limit 1");
                 RuleIndicator ruleIndicator = ruleIndicatorService.getOne(indicatorQueryWrapper);
                 if (!Check.isNull(ruleIndicator)) {
@@ -334,6 +335,7 @@ public class RuleTemplateServiceImpl extends ServiceImpl<RuleTemplateMapper, Rul
                     QueryWrapper<RuleIndicator> indicatorQueryWrapper = new QueryWrapper<>();
                     indicatorQueryWrapper.eq("code", ruleBase.getIndicatorCode());
                     indicatorQueryWrapper.eq("dimension", ruleBase.getRuleDimension());
+                    indicatorQueryWrapper.eq("media_type", template.getMediaType());
                     indicatorQueryWrapper.last("limit 1");
                     RuleIndicator ruleIndicator = ruleIndicatorService.getOne(indicatorQueryWrapper);  // 查询指标的详情信息
                     if (!Check.isNull(ruleIndicator)) {
@@ -396,6 +398,7 @@ public class RuleTemplateServiceImpl extends ServiceImpl<RuleTemplateMapper, Rul
                          */
                         QueryWrapper<RuleIndicator> indicatorQueryWrapper = new QueryWrapper<>();
                         indicatorQueryWrapper.eq("code", ruleBase.getIndicatorCode());
+                        indicatorQueryWrapper.eq("media_type", template.getMediaType());
                         indicatorQueryWrapper.eq("dimension", ruleBase.getRuleDimension());
                         indicatorQueryWrapper.last("limit 1");
                         RuleIndicator ruleIndicator = ruleIndicatorService.getOne(indicatorQueryWrapper); // 查询基础规则的指标信息
@@ -478,6 +481,7 @@ public class RuleTemplateServiceImpl extends ServiceImpl<RuleTemplateMapper, Rul
                     QueryWrapper<RuleIndicator> indicatorQueryWrapper = new QueryWrapper<>();
                     indicatorQueryWrapper.eq("code", ruleBase.getIndicatorCode());
                     indicatorQueryWrapper.eq("dimension", ruleBase.getRuleDimension());
+                    indicatorQueryWrapper.eq("media_type", template.getMediaType());
                     indicatorQueryWrapper.last("limit 1");
                     RuleIndicator ruleIndicator = ruleIndicatorService.getOne(indicatorQueryWrapper);
                     if (!Check.isNull(ruleIndicator)) {
@@ -515,6 +519,7 @@ public class RuleTemplateServiceImpl extends ServiceImpl<RuleTemplateMapper, Rul
                     QueryWrapper<RuleIndicator> indicatorQueryWrapper = new QueryWrapper<>();
                     indicatorQueryWrapper.eq("code", ruleBase.getIndicatorCode());
                     indicatorQueryWrapper.eq("dimension", ruleBase.getRuleDimension());
+                    indicatorQueryWrapper.eq("media_type", template.getMediaType());
                     indicatorQueryWrapper.last("limit 1");
                     RuleIndicator ruleIndicator = ruleIndicatorService.getOne(indicatorQueryWrapper);
                     if (!Check.isNull(ruleIndicator)) {

+ 7 - 0
module-common/src/main/java/cn/com/ctop/common/module/entity/UserAllocation.java

@@ -126,6 +126,13 @@ public class UserAllocation implements Serializable {
     private Integer landingPage;
 
     /**
+     * 是否开启删评论
+     * 0 启动
+     * 1 禁用
+     */
+    private Integer deleteComment;
+
+    /**
      * 修改时间
      */
     @Excel(name = "修改时间", width = 20, format = "yyyy-MM-dd HH:mm:ss")

+ 2 - 0
module-common/src/main/java/cn/com/ctop/common/module/mapper/UserAllocationMapper.java

@@ -31,4 +31,6 @@ public interface UserAllocationMapper extends BaseMapper<UserAllocation> {
     UserAllocation getUserAllocation(@Param("accountId") Long accountId);
 
     JSONObject getSwitchStatusByAccount(@Param("accountId") Long accountId);
+
+    List<Long>  queryAccountsByDeleteComment();
 }

+ 11 - 0
module-common/src/main/java/cn/com/ctop/common/module/mapper/xml/UserAllocationMapper.xml

@@ -85,5 +85,16 @@
             account_id = #{accountId}
     </select>
 
+    <select id="queryAccountsByDeleteComment" resultType="java.lang.Long">
+        SELECT
+            account_id
+        FROM
+            ctop_user_allocation
+        WHERE
+            media_id = 2
+          AND account_status = 0
+          AND delete_comment = 0
+    </select>
+
 
 </mapper>

+ 2 - 0
module-common/src/main/java/cn/com/ctop/common/module/service/IUserAllocationService.java

@@ -36,4 +36,6 @@ public interface IUserAllocationService extends IService<UserAllocation> {
     List<UserAllocation> getUserAllocations(String mediaId ,int switchType);
 
     JSONObject getSwitchStatusByAccount(Long accountId);
+
+    List<Long> getAccountsByDeleteComment();
 }

+ 5 - 0
module-common/src/main/java/cn/com/ctop/common/module/service/impl/UserAllocationServiceImpl.java

@@ -134,4 +134,9 @@ public class UserAllocationServiceImpl extends ServiceImpl<UserAllocationMapper,
     public JSONObject getSwitchStatusByAccount(Long accountId) {
         return userAllocationMapper.getSwitchStatusByAccount(accountId);
     }
+
+    @Override
+    public List<Long> getAccountsByDeleteComment() {
+        return userAllocationMapper.queryAccountsByDeleteComment();
+    }
 }

+ 53 - 0
module-job-kuaishou/src/main/java/cn/com/ctop/job/kuaishou/handler/KuaiShouDeleteCommentJob.java

@@ -0,0 +1,53 @@
+package cn.com.ctop.job.kuaishou.handler;
+
+import cn.com.ctop.common.module.service.IUserAllocationService;
+import cn.com.ctop.kuaishou.modules.batch.service.IKuaiShouCommentService;
+import com.xxl.job.core.context.XxlJobHelper;
+import com.xxl.job.core.handler.annotation.XxlJob;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import java.util.List;
+import java.util.concurrent.CountDownLatch;
+import java.util.concurrent.ExecutorService;
+import java.util.concurrent.Executors;
+
+@Component
+public class KuaiShouDeleteCommentJob {
+
+    @Autowired
+    private IUserAllocationService allocationService;
+
+    @Autowired
+    private IKuaiShouCommentService kuaiShouCommentService;
+
+    static ExecutorService executorService = Executors.newFixedThreadPool(10);
+
+    static CountDownLatch countDownLatch = null;
+
+    @XxlJob("kuaiShouDeleteCommentJob")
+    public void kuaiShouDeleteComment(){
+        Long start = System.currentTimeMillis();
+        //查询需要删除的账户
+        List<Long> accountIds = allocationService.getAccountsByDeleteComment();
+        if (!accountIds.isEmpty()) {
+            countDownLatch = new CountDownLatch(accountIds.size());
+            accountIds.forEach(accountId -> executorService.submit(() -> {
+                try {
+                    kuaiShouCommentService.shieldComment(accountId);
+                } catch (Exception e) {
+                    XxlJobHelper.log(e.getMessage(), e);
+                } finally {
+                    countDownLatch.countDown();
+                }
+            }));
+            try {
+                countDownLatch.await();
+            } catch (InterruptedException e) {
+                e.printStackTrace();
+            }
+            Long end = System.currentTimeMillis();
+            XxlJobHelper.log("快手删评论所用时长:{}毫秒", end - start);
+        }
+    }
+}

+ 2 - 0
module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/batch/controller/CrossAccountBatchController.java

@@ -243,6 +243,7 @@ public class CrossAccountBatchController {
                     createUnitArr = crossAccountBatchService.assembleUnitArray(oauthToken, createUnitArr, campaignList);
                 }
             }
+            System.err.println("组装数据:"+createUnitArr);
             JSONArray returnArray = crossAccountBatchService.createUnit(createUnitArr);
             System.err.println(returnArray);
             result.setSuccess(true);
@@ -275,6 +276,7 @@ public class CrossAccountBatchController {
                 JSONObject accountJson = accountArr.getJSONObject(i);
                 creativeArray = crossAccountBatchService.assembleCreativeJson(creativeArray, accountJson);
             }
+            System.err.println("组装数据:"+creativeArray);
             JSONArray returnArray = crossAccountBatchService.createCreative(creativeArray);
             System.err.println(returnArray);
             result.setSuccess(true);

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

@@ -5,8 +5,10 @@ import cn.com.ctop.common.module.service.ICtopOauthTokenService;
 import cn.com.ctop.common.module.utils.*;
 import cn.com.ctop.kuaishou.modules.batch.entity.KuaiShouImageGet;
 import cn.com.ctop.kuaishou.modules.batch.service.*;
+import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
+import com.alibaba.fastjson.serializer.SerializerFeature;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -67,6 +69,8 @@ public class CrossAccountBatchServiceImpl implements ICrossAccountBatchService {
             for (int j = 0; j < unitNames.size(); j++) {
                 String unitName = unitNames.getString(j);
                 if (!Check.isNull(unitName)) {
+                    String s = JSON.toJSONString(createUnitJson, SerializerFeature.DisableCircularReferenceDetect);
+                    createUnitJson = JSON.parseObject(s);
                     createUnitJson.remove("campaign_id");
                     createUnitJson.remove("unit_name");
                     createUnitJson.put("campaign_id", campaignId);
@@ -107,6 +111,9 @@ public class CrossAccountBatchServiceImpl implements ICrossAccountBatchService {
 
                 JSONObject createUnitJson = this.getCreateUnitJson(unitIdenticalJson);// 通用参数组装
                 for (int j = 0; j < unitNames.size(); j++) {
+                    String s = JSON.toJSONString(createUnitJson, SerializerFeature.DisableCircularReferenceDetect);
+                    createUnitJson = JSON.parseObject(s);
+
                     String unitName = unitNames.getString(j);
                     createUnitJson.put("advertiser_id", oauthToken.getAccountId());
                     createUnitJson.put("access_token", oauthToken.getAccessToken());
@@ -192,6 +199,15 @@ public class CrossAccountBatchServiceImpl implements ICrossAccountBatchService {
         }
 
 
+        String clickTrackUrl = accountJson.getString("clickTrackUrl");
+        String impressionUrl = accountJson.getString("impressionUrl");
+        String adPhotoPlayedT3sUrl = accountJson.getString("adPhotoPlayedT3sUrl");
+        Integer creativeCategory = accountJson.getInteger("creativeCategory");
+        JSONArray creativeTag = accountJson.getJSONArray("creativeTag");
+        String actionBarText = accountJson.getString("actionBarText");
+        String siteId = accountJson.getString("siteId");
+
+
         for (int i = 0; i < photoArr.size(); i++) {
             JSONObject photoJson = photoArr.getJSONObject(i);
             if (Check.isNull(photoJson)) {
@@ -201,89 +217,122 @@ public class CrossAccountBatchServiceImpl implements ICrossAccountBatchService {
             creativeJson.put("advertiser_id", oauthToken.getAccountId());
             creativeJson.put("access_token", oauthToken.getAccessToken());
             creativeJson.put("unit_id", unitId);
-            if (!Check.isNull(photoJson.getString("clickTrackUrl"))) {
-                creativeJson.put("click_track_url", photoJson.getString("clickTrackUrl")); //第三方点击检测链接
+            creativeJson.put("unit_name", accountJson.getString("unitName"));
+            if (!Check.isNull(clickTrackUrl)) {
+                creativeJson.put("click_track_url", clickTrackUrl); //第三方点击检测链接
             }
-            if (!Check.isNull(photoJson.getString("impressionUrl"))) {
-                creativeJson.put("impression_url", photoJson.getString("impressionUrl")); //第三方开始播放监测链接
+            if (!Check.isNull(impressionUrl)) {
+                creativeJson.put("impression_url", impressionUrl); //第三方开始播放监测链接
             }
-            if (!Check.isNull(photoJson.getString("adPhotoPlayedT3sUrl"))) {
-                creativeJson.put("ad_photo_played_t3s_url", photoJson.getString("adPhotoPlayedT3sUrl")); //第三方有效播放监测链接
+            if (!Check.isNull(adPhotoPlayedT3sUrl)) {
+                creativeJson.put("ad_photo_played_t3s_url", adPhotoPlayedT3sUrl); //第三方有效播放监测链接
             }
             if (!Check.isNull(photoJson.getString("actionbarClickUrl"))) {
                 creativeJson.put("actionbar_click_url", photoJson.getString("actionbarClickUrl")); //第三方点击按钮监测链接
             }
-            if (!Check.isNull(photoJson.getInteger("creativeCategory"))) {
-                creativeJson.put("creative_category", photoJson.getInteger("creativeCategory")); // 创意分类
+            if (!Check.isNull(creativeCategory)) {
+                creativeJson.put("creative_category", creativeCategory); // 创意分类
             }
-            if (!Check.isNull(photoJson.getJSONArray("creativeTag"))) {
-                creativeJson.put("creative_tag", photoJson.getJSONArray("creativeTag")); //创意标签
+            if (!Check.isNull((creativeTag))) {
+                creativeJson.put("creative_tag", creativeTag); //创意标签
             }
 
             Long creativeMaterialType = photoJson.getLong("creativeMaterialType");
 
             JSONArray creatives = new JSONArray();
-            JSONObject createJson = new JSONObject();
-            if (!Check.isNull(photoJson.getString("creativeName"))) {
-                createJson.put("creative_name", photoJson.getString("creativeName")); // 创意名称
-            }
-            if (!Check.isNull(creativeMaterialType)) {
-                createJson.put("creative_material_type", creativeMaterialType); // 素材类型
-            }
-            if (!Check.isNull(photoJson.getString("actionBar_text"))) {
-                createJson.put("action_bar_text", photoJson.getString("actionBarText")); // 行动号召按钮文案
-            }
-            if (!Check.isNull(photoJson.getString("description"))) {
-                createJson.put("description", photoJson.getString("description")); // 广告语
-            }
-            if (!Check.isNull(photoJson.getString("stickerTitle"))) {
-                createJson.put("sticker_title", photoJson.getString("stickerTitle")); //封面广告语标题
-            }
-            if (!Check.isNull(photoJson.getString("overlayType"))) {
-                createJson.put("overlay_type", photoJson.getString("overlayType")); // 贴纸样式类型
-            }
-            if (!Check.isNull(photoJson.getString("exposeTag"))) {
-                createJson.put("expose_tag", photoJson.getString("exposeTag")); //广告标签
-            }
-            if (!Check.isNull(photoJson.getString("newExposeTag"))) {
-                createJson.put("new_expose_tag", photoJson.getString("newExposeTag")); // 广告标签2期
-            }
-            if (!Check.isNull(photoJson.getString("siteId"))) {
-                createJson.put("site_id", photoJson.getString("siteId")); //安卓下载中间页ID
-            }
-
             String creativeName = photoJson.getString("creativeName");// 创意名称
             if (4 == creativeMaterialType) { // 便利贴组装数据
-                if (!Check.isNull(photoJson.getString("shortSlogan"))) {
-                    createJson.put("short_slogan", photoJson.getString("shortSlogan")); // 便利贴创意短广告语
-                }
+
                 JSONArray imageTokens = photoJson.getJSONArray("imageTokens");
                 for (int j = 0; j < imageTokens.size(); j++) {
                     String imageToken = imageTokens.getString(j);
                     if (!Check.isNull(imageToken)) {
-                        createJson.put("image_tokens", imageToken); // 便利贴创意短广告语
+                        JSONObject createJson = new JSONObject();
+                        if (!Check.isNull(photoJson.getString("shortSlogan"))) {
+                            createJson.put("short_slogan", photoJson.getString("shortSlogan")); // 便利贴创意短广告语
+                        }
+                        if (!Check.isNull(creativeMaterialType)) {
+                            createJson.put("creative_material_type", creativeMaterialType); // 素材类型
+                        }
+                        if (!Check.isNull(actionBarText)) {
+                            createJson.put("action_bar_text", actionBarText); // 行动号召按钮文案
+                        }
+                        if (!Check.isNull(photoJson.getString("description"))) {
+                            createJson.put("description", photoJson.getString("description")); // 广告语
+                        }
+                        if (!Check.isNull(photoJson.getString("stickerTitle"))) {
+                            createJson.put("sticker_title", photoJson.getString("stickerTitle")); //封面广告语标题
+                        }
+                        if (!Check.isNull(photoJson.getString("overlayType"))) {
+                            createJson.put("overlay_type", photoJson.getString("overlayType")); // 贴纸样式类型
+                        }
+                        if (!Check.isNull(photoJson.getString("exposeTag"))) {
+                            createJson.put("expose_tag", photoJson.getString("exposeTag")); //广告标签
+                        }
+                        if (!Check.isNull(photoJson.getString("newExposeTag"))) {
+                            createJson.put("new_expose_tag", photoJson.getString("newExposeTag")); // 广告标签2期
+                        }
+                        if (!Check.isNull(siteId)) {
+                            createJson.put("site_id", siteId); //安卓下载中间页ID
+                        }
+                        JSONArray imageTokenArr = new JSONArray();
+                        imageTokenArr.add(imageToken);
+                        createJson.put("image_tokens", imageTokenArr); // 便利贴创意短广告语
                         if (!Check.isNull(creativeName)) {
                             createJson.put("creative_name", creativeName + "_" + RandomUtil.verifyCodeV2()); // 便利贴创意短广告语
                         }
                         creatives.add(createJson);
                     }
                 }
-
+                creativeJson.put("creatives", creatives);
             } else { //  非便利贴组装数据
-                if (!Check.isNull(photoJson.getLong("photoId"))) {
-                    createJson.put("photo_id", photoJson.getLong("photoId")); // 视频id
-                }
-                JSONArray imageTokenArr = photoJson.getJSONArray("imageToken");
+                JSONArray imageTokenArr = photoJson.getJSONArray("imageTokenArr");
                 if (Check.isNull(imageTokenArr)) { // 如果图片为空 说明是首帧创建
+                    JSONObject createJson = new JSONObject();
+                    if (!Check.isNull(photoJson.getLong("photoId"))) {
+                        createJson.put("photo_id", photoJson.getLong("photoId")); // 视频id
+                    }
                     createJson.put("creative_name", creativeName); // 创意名称
+                    if (!Check.isNull(creativeMaterialType)) {
+                        createJson.put("creative_material_type", creativeMaterialType); // 素材类型
+                    }
+                    if (!Check.isNull(actionBarText)) {
+                        createJson.put("action_bar_text", actionBarText); // 行动号召按钮文案
+                    }
+                    if (!Check.isNull(photoJson.getString("description"))) {
+                        createJson.put("description", photoJson.getString("description")); // 广告语
+                    }
+                    if (!Check.isNull(photoJson.getString("stickerTitle"))) {
+                        createJson.put("sticker_title", photoJson.getString("stickerTitle")); //封面广告语标题
+                    }
+                    if (!Check.isNull(photoJson.getString("overlayType"))) {
+                        createJson.put("overlay_type", photoJson.getString("overlayType")); // 贴纸样式类型
+                    }
+                    if (!Check.isNull(photoJson.getString("exposeTag"))) {
+                        createJson.put("expose_tag", photoJson.getString("exposeTag")); //广告标签
+                    }
+                    if (!Check.isNull(photoJson.getString("newExposeTag"))) {
+                        createJson.put("new_expose_tag", photoJson.getString("newExposeTag")); // 广告标签2期
+                    }
+                    if (!Check.isNull(siteId)) {
+                        createJson.put("site_id", siteId); //安卓下载中间页ID
+                    }
+
+                    if (!Check.isNull(photoJson.getString("stickerTitle"))) {
+                        createJson.put("sticker_title", photoJson.getString("stickerTitle")); //封面广告语标题
+                    }
+
                     creatives.add(createJson);
                 } else { // 选择多张图片进行创建
                     for (int j = 0; j < imageTokenArr.size(); j++) {
                         String signature = imageTokenArr.getString(j);
-
                         if (Check.isNull(signature)) {
                             continue;
                         }
+                        JSONObject createJson = new JSONObject();
+                        if (!Check.isNull(photoJson.getLong("photoId"))) {
+                            createJson.put("photo_id", photoJson.getLong("photoId")); // 视频id
+                        }
                         QueryWrapper<KuaiShouImageGet> queryWrapper = new QueryWrapper<>();
                         queryWrapper.eq("account_id", accountId);
                         queryWrapper.eq("signature", signature);
@@ -301,6 +350,31 @@ public class CrossAccountBatchServiceImpl implements ICrossAccountBatchService {
                         }
                         String name = creativeName + "_" + RandomUtil.verifyCodeV2();
                         createJson.put("creative_name", name); // 创意名称
+                        if (!Check.isNull(creativeMaterialType)) {
+                            createJson.put("creative_material_type", creativeMaterialType); // 素材类型
+                        }
+                        if (!Check.isNull(actionBarText)) {
+                            createJson.put("action_bar_text", actionBarText); // 行动号召按钮文案
+                        }
+                        if (!Check.isNull(photoJson.getString("description"))) {
+                            createJson.put("description", photoJson.getString("description")); // 广告语
+                        }
+
+                        if (!Check.isNull(photoJson.getString("stickerTitle"))) {
+                            createJson.put("sticker_title", photoJson.getString("stickerTitle")); //封面广告语标题
+                        }
+                        if (!Check.isNull(photoJson.getString("overlayType"))) {
+                            createJson.put("overlay_type", photoJson.getString("overlayType")); // 贴纸样式类型
+                        }
+                        if (!Check.isNull(photoJson.getString("exposeTag"))) {
+                            createJson.put("expose_tag", photoJson.getString("exposeTag")); //广告标签
+                        }
+                        if (!Check.isNull(photoJson.getString("newExposeTag"))) {
+                            createJson.put("new_expose_tag", photoJson.getString("newExposeTag")); // 广告标签2期
+                        }
+                        if (!Check.isNull(siteId)) {
+                            createJson.put("site_id", siteId); //安卓下载中间页ID
+                        }
                         creatives.add(createJson);
                     }
 
@@ -308,8 +382,8 @@ public class CrossAccountBatchServiceImpl implements ICrossAccountBatchService {
 
 
             }
-            createJson.put("creatives", creatives);
-            creativeArray.add(createJson);
+            creativeJson.put("creatives", creatives);
+            creativeArray.add(creativeJson);
         }
 
         return creativeArray;
@@ -375,11 +449,13 @@ public class CrossAccountBatchServiceImpl implements ICrossAccountBatchService {
                         thread.start();
                         returnJson.put("code", 0);
                         returnJson.put("accountId", requestJson.getLong("advertiser_id"));
+                        returnJson.put("campaignId", requestJson.getLong("campaign_id"));
                         returnJson.put("unitId", unitId);
                         returnJson.put("accountName", requestJson.getString("account_name"));
                         returnJson.put("unitName", requestJson.getString("unit_name"));
                         returnJson.put("sceneId", requestJson.getJSONArray("scene_id").toJSONString());
                         returnJson.put("ocpxActionType", requestJson.getLong("ocpx_action_type"));
+                        returnJson.put("bidType", requestJson.getLong("bid_type"));
                         returnJson.put("unitType", requestJson.getInteger("unit_type"));
                     }
 
@@ -465,7 +541,9 @@ public class CrossAccountBatchServiceImpl implements ICrossAccountBatchService {
                         };
                         thread.start();
                         retuenJson.put("code", 0);
-                        retuenJson.put("unit_id", requestJson.getString("unit_id"));
+                        retuenJson.put("accountId", requestJson.getLong("advertiser_id"));
+                        retuenJson.put("unitId", requestJson.getString("unit_id"));
+                        retuenJson.put("unitName", requestJson.getString("unit_name"));
                     }
                 } else {
                     if (code == 500000 && count <= 4) {
@@ -477,7 +555,9 @@ public class CrossAccountBatchServiceImpl implements ICrossAccountBatchService {
                     log.error("创建广告创意失败,advertiser_id:{},返回信息:{},入参:{}", advertiserId, resultJson, requestJson, count + 1);
                     retuenJson.put("code", -1);
                     retuenJson.put("message", resultJson.getString("message"));
-                    retuenJson.put("unit_id", requestJson.getString("unit_id"));
+                    retuenJson.put("accountId", requestJson.getLong("advertiser_id"));
+                    retuenJson.put("unitId", requestJson.getString("unit_id"));
+                    retuenJson.put("unitName", requestJson.getString("unit_name"));
                 }
             } else {
                 if (count <= 4) {
@@ -486,14 +566,18 @@ public class CrossAccountBatchServiceImpl implements ICrossAccountBatchService {
                 log.error("快手创建广告创意返回内容为空,advertiser_id:{},入参:{}", advertiserId, requestJson);
                 retuenJson.put("code", -1);
                 retuenJson.put("message", "创建创意失败,返回信息为空");
-                retuenJson.put("unit_id", requestJson.getString("unit_id"));
+                retuenJson.put("accountId", requestJson.getLong("advertiser_id"));
+                retuenJson.put("unitId", requestJson.getString("unit_id"));
+                retuenJson.put("unitName", requestJson.getString("unit_name"));
             }
 
         } catch (Exception e) {
             log.error("创建广告创意失败,advertiser_id:{}", requestJson.getLong("advertiser_id"));
             retuenJson.put("code", -1);
             retuenJson.put("message", e.getMessage());
-            retuenJson.put("unit_id", requestJson.getString("unit_id"));
+            retuenJson.put("accountId", requestJson.getLong("advertiser_id"));
+            retuenJson.put("unitId", requestJson.getString("unit_id"));
+            retuenJson.put("unitName", requestJson.getString("unit_name"));
             e.printStackTrace();
         }
         return retuenJson;

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

@@ -893,6 +893,7 @@ public class KuaishouInterfaceServiceImpl implements IKuaishouInterfaceService {
             Date getStartDate = DateUtils.addDay(endDate, -i);
             //1: 获取广告主信息数据
             getAdvertiserReportHourly(token, getStartDate, getStartDate);
+            getAdvertiserReportDaily(token, getStartDate, getStartDate);
             //2:获取广告计划信息数据
             // getAdvertiserCampaignReportHourly(token, getStartDate, getStartDate);
             //3:获取广告组信息数据

+ 1 - 0
module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/report/service/impl/RuleKuaiShouPlanServiceImpl.java

@@ -169,6 +169,7 @@ public class RuleKuaiShouPlanServiceImpl implements IRuleKuaiShouPlanService {
                 unit.setUnitId(unitDetail.getLong("unit_id"));
                 unit.setUnitName(unitDetail.getString("unit_name"));
                 unit.setCharge(unitDetail.getBigDecimal("charge"));
+                //未知优化目标数据存空
                 if(group.getOcpxActionType()!=0){
                     unit.setConvertNum(handleConvertNum(group.getOcpxActionType(),unitDetail));
                     if(unit.getConvertNum()!=0){