Forráskód Böngészése

头条批量创意详情获取以及修改

syh 4 éve
szülő
commit
3ebc6d8b18

+ 0 - 13
module-check/src/main/java/cn/com/ctop/ModuleCheckApplication.java

@@ -1,13 +0,0 @@
-package cn.com.ctop;
-
-import org.springframework.boot.SpringApplication;
-import org.springframework.boot.autoconfigure.SpringBootApplication;
-
-@SpringBootApplication
-public class ModuleCheckApplication {
-
-    public static void main(String[] args) {
-        SpringApplication.run(ModuleCheckApplication.class, args);
-    }
-
-}

+ 8 - 2
module-toutiao/src/main/java/cn/com/ctop/toutiao/modules/material/controller/ByteDanceCreativeController.java

@@ -6,6 +6,7 @@ import cn.com.ctop.common.module.utils.StatusCode;
 import cn.com.ctop.common.module.utils.StringUtils;
 import cn.com.ctop.toutiao.modules.material.entity.ByteDanceCreative;
 import cn.com.ctop.toutiao.modules.material.service.IByteDanceCreativeService;
+import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
@@ -152,9 +153,9 @@ public class ByteDanceCreativeController {
     }
 
     @PostMapping("/detail")
-    public Map<String,Object>creativeDetail(@RequestParam(name = "adId",required = true,defaultValue = "0") Long adId,
+    public Map<String,Object>creativeDetail(@RequestParam(name = "planId",required = true,defaultValue = "0") Long planId,
                                             @RequestParam(name = "accountId",required = true,defaultValue = "0") Long accountId){
-        return byteDanceCreativeService.getCreativeDetail(accountId,adId);
+        return byteDanceCreativeService.getCreativeDetail(accountId,planId);
     }
 
     /**
@@ -216,4 +217,9 @@ public class ByteDanceCreativeController {
         }
         return result;
     }
+
+    @PostMapping("/updateCreative")
+    public Map<String,Object>updateCreative(@RequestBody JSONObject data){
+        return byteDanceCreativeService.updateCreative(data);
+    }
 }

+ 2 - 2
module-toutiao/src/main/java/cn/com/ctop/toutiao/modules/material/service/IByteDanceCreativeService.java

@@ -24,9 +24,9 @@ public interface IByteDanceCreativeService extends IService<ByteDanceCreative> {
 
     void replaceBatch(List<ByteDanceCreative> creatives);
 
-    Map<String, Object> getCreativeDetail(Long accountId, Long adId);
+    Map<String, Object> getCreativeDetail(Long accountId, Long planId);
 
-    Map<String,Object> updateCreative(Long accountId, JSONObject data);
+    Map<String,Object> updateCreative(JSONObject data);
 
     Map<String,Object> getCreativeRejectReason(Long accountId, Long creativeId);
 

+ 318 - 20
module-toutiao/src/main/java/cn/com/ctop/toutiao/modules/material/service/impl/ByteDanceCreativeServiceImpl.java

@@ -190,6 +190,9 @@ public class ByteDanceCreativeServiceImpl extends ServiceImpl<ByteDanceCreativeM
             resultMap.put("message", "广告计划("+adId+"):"+message);
             return resultMap;
         }
+        Thread thread = new Thread(()->getAdvertiserCreative(token, null, null));
+        thread.start();
+
         resultMap.put("success", true);
         resultMap.put("code", 0);
         resultMap.put("message", "广告计划("+adId+"):"+"创意创建成功");
@@ -200,9 +203,9 @@ public class ByteDanceCreativeServiceImpl extends ServiceImpl<ByteDanceCreativeM
      * @return
      */
     @Override
-    public Map<String, Object> getCreativeDetail(Long accountId, Long adId){
+    public Map<String, Object> getCreativeDetail(Long accountId, Long planId){
         Map<String,Object>resultMap = new HashMap<>();
-        if(null == adId||adId == 0||null == accountId||accountId == 0){
+        if(null == planId||planId == 0||null == accountId||accountId == 0){
             ResultMapUtils.setResultMap(resultMap,StatusCode.COMMON_PARAM_ERROR);
             return resultMap;
         }
@@ -211,7 +214,7 @@ public class ByteDanceCreativeServiceImpl extends ServiceImpl<ByteDanceCreativeM
             ResultMapUtils.setResultMap(resultMap,StatusCode.BYTEDANCE_PLAN_DATA_NOT_EXIST);
             return resultMap;
         }
-        ByteDanceAdvertisePlan plan = byteDanceAdvertisePlanService.getById(adId);
+        ByteDanceAdvertisePlan plan = byteDanceAdvertisePlanService.getById(planId);
         if(null == plan||plan.getOptStatus().equals("AD_STATUS_DELETE")){
             ResultMapUtils.setResultMap(resultMap,StatusCode.BYTEDANCE_ACCOUNT_DATA_NOT_EXIST);
             return resultMap;
@@ -222,11 +225,27 @@ public class ByteDanceCreativeServiceImpl extends ServiceImpl<ByteDanceCreativeM
         // 请求参数
         JSONObject data = new JSONObject();
         data.put("advertiser_id", token.getAccountId());
-        data.put("ad_id",adId);
+        data.put("ad_id",planId);
         JSONObject result = HttpUtils.bytedanceGetRequest(token.getAccessToken(),url,data);
+        System.out.println(result);
         Integer code = result.getInteger("code");
         String message = result.getString("message");
-        if (null == code || code != 0) {
+        if (null ==  code) {
+            log.info("广告创意获取详情失败,accountId:{},message:{}", accountId, message);
+            resultMap.put("success", false);
+            resultMap.put("code", -1);
+            resultMap.put("message", message);
+            return resultMap;
+        }
+        if(code == 40001){
+            //尚未创建创意
+            resultMap.put("success", true);
+            resultMap.put("code", 0);
+            result.put("data","");
+            resultMap.put("message", message);
+            return resultMap;
+        }
+        if(code!=0){
             log.info("广告创意获取详情失败,accountId:{},message:{}", accountId, message);
             resultMap.put("success", false);
             resultMap.put("code", -1);
@@ -241,34 +260,312 @@ public class ByteDanceCreativeServiceImpl extends ServiceImpl<ByteDanceCreativeM
 
     private JSONObject formatData(JSONObject getData) {
         JSONObject data = new JSONObject();
+        Long advertiserId = getData.getLong("advertiser_id");
+        if(null!=advertiserId&&advertiserId!=0){
+            data.put("advertiserId",advertiserId);
+        }
+        Long adId = getData.getLong("ad_id");
+        if(null!=adId&&adId!=0){
+            data.put("adId",adId);
+        }
+        String modifyTime = getData.getString("modify_time");
+        if(null!=modifyTime&&!modifyTime.trim().equals("")){
+            data.put("modifyTime",modifyTime);
+        }
+        String trackUrl = getData.getString("track_url");
+        if(null!=trackUrl&&!trackUrl.trim().equals("")){
+            data.put("trackUrl",trackUrl);
+        }
+        String actionTrackUrl = getData.getString("action_track_url");
+        if(null!=actionTrackUrl&&!actionTrackUrl.trim().equals("")){
+            data.put("actionTrackUrl",actionTrackUrl);
+        }
+        String videoPlayEffectiveTrackUrl = getData.getString("video_play_effective_track_url");
+        if(null!=videoPlayEffectiveTrackUrl&&!videoPlayEffectiveTrackUrl.trim().equals("")){
+            data.put("video_play_effective_track_url",videoPlayEffectiveTrackUrl);
+        }
+        String videoPlayDoneTrackUrl = getData.getString("video_play_done_track_url");
+        if(null!=videoPlayDoneTrackUrl&&!videoPlayDoneTrackUrl.trim().equals("")){
+            data.put("video_play_done_track_url",videoPlayDoneTrackUrl);
+        }
+        String videoPlayTrackUrl = getData.getString("video_play_track_url");
+        if(null!=videoPlayTrackUrl&&!videoPlayTrackUrl.trim().equals("")){
+            data.put("videoPlayTrackUrl",videoPlayTrackUrl);
+        }
+        Integer isCommentDisable = getData.getInteger("is_comment_disable");
+        if(null!=isCommentDisable){
+            data.put("isCommentDisable",isCommentDisable);
+        }
+        Integer closeVideoDetail = getData.getInteger("close_video_detail");
+        if(null!=closeVideoDetail){
+            data.put("closeVideoDetail",closeVideoDetail);
+        }
+        String creativeDisplayMode = getData.getString("creative_display_mode");
+        if(null!=creativeDisplayMode&&!creativeDisplayMode.trim().equals("")){
+            data.put("creativeDisplayMode",creativeDisplayMode);
+        }
+        Long smartInventory = getData.getLong("smart_inventory");
+        if(null!=smartInventory&&smartInventory!=0){
+            data.put("smartInventory",smartInventory);
+        }
+        String sceneInventory = getData.getString("scene_inventory");
+        if(null!=sceneInventory&&!sceneInventory.trim().equals("")){
+            data.put("sceneInventory",sceneInventory);
+        }
+        Long generate_derived_ad = getData.getLong("generate_derived_ad");
+        if(null!=generate_derived_ad&&generate_derived_ad!=0){
+            data.put("generateDerivedAd",generate_derived_ad);
+        }
+        JSONArray inventory_type = getData.getJSONArray("inventory_type");
+        if(null!=inventory_type&&!inventory_type.isEmpty()){
+            data.put("inventoryType",inventory_type);
+        }
+        String source = getData.getString("source");
+        if(null!=source&&!source.trim().equals("")){
+            data.put("source",source);
+        }
+        String app_name = getData.getString("app_name");
+        if(null!=app_name&&!app_name.trim().equals("")){
+            data.put("appName",app_name);
+        }
+        String web_url = getData.getString("web_url");
+        if(null!=web_url&&!web_url.trim().equals("")){
+            data.put("webUrl",web_url);
+        }
+        JSONArray ad_keywords = getData.getJSONArray("ad_keywords");
+        if(null!=ad_keywords&&!ad_keywords.isEmpty()){
+            data.put("adKeywords",ad_keywords);
+        }
+        Long third_industry_id = getData.getLong("third_industry_id");
+        if(null!=third_industry_id&&third_industry_id!=0){
+            data.put("thirdIndustryId",third_industry_id);
+        }
+        String advanced_creative_type = getData.getString("advanced_creative_type");
+        if(null!=advanced_creative_type&&!advanced_creative_type.trim().equals("")){
+            data.put("advancedCreativeType",advanced_creative_type);
+        }
+        String advanced_creative_title = getData.getString("advanced_creative_title");
+        if(null!=advanced_creative_title&&!advanced_creative_title.trim().equals("")){
+            data.put("advancedCreativeTitle",advanced_creative_title);
+        }
+        String phone_number = getData.getString("phone_number");
+        if(null!=phone_number&&!phone_number.trim().equals("")){
+            data.put("phoneNumber",phone_number);
+        }
+        String button_text = getData.getString("button_text");
+        if(null!=button_text&&!button_text.trim().equals("")){
+            data.put("buttonText",button_text);
+        }
+        String action_text = getData.getString("action_text");
+        if(null!=action_text&&!action_text.trim().equals("")){
+            data.put("actionText",action_text);
+        }
+        String form_url = getData.getString("form_url");
+        if(null!=form_url&&!form_url.trim().equals("")){
+            data.put("formUrl",form_url);
+        }
+        String creative_material_mode = getData.getString("creative_material_mode");
+        if(null!=creative_material_mode&&!creative_material_mode.trim().equals("")){
+            data.put("creativeMaterialMode",creative_material_mode);
+        }
+        String ies_core_user_id = getData.getString("ies_core_user_id");
+        if(null!=ies_core_user_id&&!ies_core_user_id.trim().equals("")){
+            data.put("iesCoreUserId",ies_core_user_id);
+        }
+        Long is_feed_and_fav_see = getData.getLong("is_feed_and_fav_see");
+        if(null!=is_feed_and_fav_see){
+            data.put("isFeedAndFavSee",is_feed_and_fav_see);
+        }
+        JSONArray commerce_cards = getData.getJSONArray("commerce_cards");
+        if(null!=commerce_cards&&!commerce_cards.isEmpty()){
+            data.put("commerceCards",commerce_cards);
+        }
+        String playable_url = getData.getString("playable_url");
+        if(null!=playable_url&&!playable_url.trim().equals("")){
+            data.put("playableUrl",playable_url);
+        }
+        Long procedural_package_id = getData.getLong("procedural_package_id");
+        if(null!=procedural_package_id&&procedural_package_id!=0){
+            data.put("proceduralPackageId",procedural_package_id);
+        }
+        Long procedural_package_version = getData.getLong("procedural_package_version");
+        if(null!=procedural_package_version&&procedural_package_version!=0){
+            data.put("proceduralPackageVersion",procedural_package_version);
+        }
+        Long is_presented_video = getData.getLong("is_presented_video");
+        if(null!=is_presented_video){
+            data.put("isPresentedVideo",is_presented_video);
+        }
+        String sub_title = getData.getString("sub_title");
+        if(null!=sub_title&&!sub_title.trim().equals("")){
+            data.put("subTitle",sub_title);
+        }
+        Long creative_auto_generate_switch = getData.getLong("creative_auto_generate_switch");
+        if(null!=creative_auto_generate_switch){
+            data.put("creativeAutoGenerateSwitch",creative_auto_generate_switch);
+        }
+        String track_url_send_type = getData.getString("track_url_send_type");
+        if(null!=track_url_send_type&&!track_url_send_type.trim().equals("")){
+            data.put("trackUrlSendType",track_url_send_type);
+        }
+        JSONArray sub_link_id_list = getData.getJSONArray("track_url_send_type");
+        if(null!=sub_link_id_list&&!sub_link_id_list.isEmpty()){
+            data.put("subLinkIdList",sub_link_id_list);
+        }
+        JSONArray titleList = getData.getJSONArray("title_list");
+        if(null!=titleList&&!titleList.isEmpty()){
+            JSONArray titleArray = new JSONArray();
+            for (int i=0;i<titleList.size();i++){
+                JSONObject title = titleList.getJSONObject(i);
+                JSONArray creativeWordIds = title.getJSONArray("creative_word_ids");
+                JSONArray dpaDictIds = title.getJSONArray("dpa_dict_ids");
+                title.remove("creative_word_ids");
+                title.remove("dpa_dict_ids");
+                title.put("creativeWordIds",creativeWordIds);
+                title.put("dpaDictIds",dpaDictIds);
+                titleArray.add(title);
+            }
+            data.put("titleList",titleArray);
+        }
+        JSONArray imageList = getData.getJSONArray("image_list");
+        if(null!=imageList&&!imageList.isEmpty()){
+            JSONArray imageArray = new JSONArray();
+            for (int i=0;i<imageList.size();i++){
+                JSONObject getImage = imageList.getJSONObject(i);
+                JSONObject setImage = new JSONObject();
+                String imageMode = getImage.getString("image_mode");
+                setImage.put("imageMode",imageMode);
+                String imageId = getImage.getString("image_id");
+                if(null!=imageId&&!imageId.trim().equals("")){
+                    setImage.put("imageId",imageId);
+                }
+                String videoId = getImage.getString("video_id");
+                if(null!=videoId&&!videoId.trim().equals("")){
+                    setImage.put("videoId",videoId);
+                }
+                JSONArray imageIds = getImage.getJSONArray("image_ids");
+                if(null!=imageIds&&!imageIds.isEmpty()){
+                    setImage.put("imageIds",imageIds);
+                }
+                String templateId = getImage.getString("template_id");
+                if(null!=templateId&&!templateId.trim().equals("")){
+                    setImage.put("templateId",templateId);
+                }
+                imageArray.add(setImage);
+            }
+            data.put("imageList",imageArray);
+        }
+        JSONArray creativeList = getData.getJSONArray("creatives");
+        if(null!=creativeList&&!creativeList.isEmpty()){
+            JSONArray creativeArray = new JSONArray();
+            for (int i=0;i<creativeList.size();i++){
+                JSONObject getCreative = creativeList.getJSONObject(i);
+                JSONObject setCreative = new JSONObject();
+                String creative_id = getCreative.getString("creative_id");
+                if(null!=creative_id&&!creative_id.trim().equals("")){
+                    setCreative.put("creative_id",creative_id);
+                }
+                String title = getCreative.getString("title");
+                if(null!=title&&!title.trim().equals("")){
+                    setCreative.put("title",title);
+                }
+                JSONArray creativeWordIds = getCreative.getJSONArray("creative_word_ids");
+                if(null!=creativeWordIds&&!creativeWordIds.isEmpty()){
+                    setCreative.put("creativeWordIds",creativeWordIds);
+                }
+                JSONArray dpaDictIds = getCreative.getJSONArray("dpa_dict_ids");
+                if(null!=dpaDictIds&&!dpaDictIds.isEmpty()){
+                    setCreative.put("dpaDictIds",dpaDictIds);
+                }
+                String imageMode = getCreative.getString("image_mode");
+                if(null!=imageMode&&!imageMode.trim().equals("")){
+                    setCreative.put("imageMode",imageMode);
+                }
+                JSONArray imageIds = getCreative.getJSONArray("imageIds");
+                if(null!=imageIds&&!imageIds.isEmpty()){
+                    setCreative.put("imageIds",imageIds);
+                }
+                String imageId = getCreative.getString("image_id");
+                if(null!=imageId&&!imageId.trim().equals("")){
+                    setCreative.put("imageId",imageId);
+                }
+                String videoId = getCreative.getString("video_id");
+                if(null!=videoId&&!videoId.trim().equals("")){
+                    setCreative.put("videoId",videoId);
+                }
+                String thirdPartyId = getCreative.getString("third_party_id");
+                if(null!=thirdPartyId&&!thirdPartyId.trim().equals("")){
+                    setCreative.put("thirdPartyId",thirdPartyId);
+                }
+                Long derivePosterCid = getCreative.getLong("derive_poster_cid");
+                if(null!=derivePosterCid){
+                    setCreative.put("derivePosterCid",derivePosterCid);
+                }
+                Integer templateId = getCreative.getInteger("template_id");
+                if(null!=templateId){
+                    setCreative.put("templateId",templateId);
+                }
+                String templateImageId = getCreative.getString("template_image_id");
+                if(null!=templateImageId&&!templateImageId.trim().equals("")){
+                    setCreative.put("templateImageId",templateImageId);
+                }
+                Long dpaTemplate = getCreative.getLong("dpa_template");
+                if(null!=dpaTemplate){
+                    setCreative.put("dpaTemplate",dpaTemplate);
+                }
+                String dpaVideoTemplateType = getCreative.getString("dpa_video_template_type");
+                if(null!=dpaVideoTemplateType&&!dpaVideoTemplateType.trim().equals("")){
+                    setCreative.put("dpaVideoTemplateType",dpaVideoTemplateType);
+                }
+                JSONArray dpaVideoTaskIds = getCreative.getJSONArray("dpa_video_task_ids");
+                if(null!=dpaVideoTaskIds&&!dpaVideoTaskIds.isEmpty()){
+                    setCreative.put("dpaVideoTaskIds",dpaVideoTaskIds);
+                }
+                creativeArray.add(setCreative);
+            }
+            data.put("creatives",creativeArray);
+        }
+
         return data;
     }
 
     /**
-     * TODO 后续需要拼接参数
-     * @param accountId
      * @param data
      * @return
      */
     @Override
-    public Map<String,Object> updateCreative(Long accountId,JSONObject data){
-        Map<String,Object>resultMap = new HashMap<>();
+    public Map<String,Object> updateCreative(JSONObject data){
+        log.info(data.toJSONString());
+        Map<String,Object>result = new HashMap<>();
+        Long accountId = data.getLong("accountId");
         CtopOauthToken token = tokenService.getTokenByAccountId(accountId);
+        if(null == token){
+            ResultMapUtils.setResultMap(result,StatusCode.COMMON_PARAM_ERROR);
+            return result;
+        }
+        Long planId = data.getLong("adId");
+        if(null == planId||planId==0){
+            ResultMapUtils.setResultMap(result,StatusCode.COMMON_PARAM_ERROR);
+            return result;
+        }
+        JSONObject params  = initParams(data);
         // 请求地址
         String url = PropertiesUtils.getValue("bytedance_config", "bytedance_api_url") + PropertiesUtils.getValue("bytedance_config", "bytedance_v2_creative_update");
-        JSONObject result = HttpUtils.bytedancePostRequest(token.getAccessToken(),url,data);
-        Integer code = result.getInteger("code");
-        String message = result.getString("message");
+        JSONObject dataObject = HttpUtils.bytedancePostRequest(token.getAccessToken(),url,data);
+        Integer code = dataObject.getInteger("code");
+        String message = dataObject.getString("message");
         if (null == code || code != 0) {
             log.info("广告创意更新失败,accountId:{},message:{}", accountId, message);
-            resultMap.put("success", false);
-            resultMap.put("code", -1);
-            resultMap.put("message", message);
-            return resultMap;
+            result.put("success", false);
+            result.put("code", -1);
+            result.put("message", message);
+            return result;
         }
-        resultMap.put("data",result.getJSONObject("data"));
-        ResultMapUtils.setResultMap(resultMap, StatusCode.COMMON_SUCCESS);
-        return resultMap;
+        Thread thread = new Thread(()->getAdvertiserCreative(token,null, DateUtils.formatDate()));
+        thread.start();
+        result.put("data",dataObject.getJSONObject("data"));
+        ResultMapUtils.setResultMap(result, StatusCode.COMMON_SUCCESS);
+        return result;
     }
 
     @Override
@@ -320,7 +617,8 @@ public class ByteDanceCreativeServiceImpl extends ServiceImpl<ByteDanceCreativeM
             Map<String,Object> getData = creativeCreate(accountId+"",planIds.getLong(i),params);
             array.add(getData);
         }
-        getAdvertiserCreative(token,null, DateUtils.formatDate());
+        Thread thread = new Thread(()->getAdvertiserCreative(token,null, DateUtils.formatDate()));
+        thread.start();
         result.put("data",array);
         ResultMapUtils.setResultMap(result,StatusCode.COMMON_SUCCESS);
         return result;