Browse Source

Merge remote-tracking branch 'origin/master'

syh 4 năm trước cách đây
mục cha
commit
76050a8985

+ 152 - 7
module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/ai/service/impl/KuaiShouCreateServiceImpl.java

@@ -3,8 +3,7 @@ package cn.com.ctop.kuaishou.modules.ai.service.impl;
 import cn.com.ctop.common.module.entity.CtopOauthToken;
 import cn.com.ctop.common.module.entity.MaterialCutFrame;
 import cn.com.ctop.common.module.service.IMaterialCutFrameService;
-import cn.com.ctop.common.module.utils.Check;
-import cn.com.ctop.common.module.utils.HttpUtils2;
+import cn.com.ctop.common.module.utils.*;
 import cn.com.ctop.kuaishou.modules.ai.service.IKuaiShouCreateService;
 import cn.com.ctop.kuaishou.modules.batch.entity.KuaiShouGroup;
 import cn.com.ctop.kuaishou.modules.batch.entity.KuaiShouImageGet;
@@ -18,6 +17,7 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Service;
 
+import java.util.HashMap;
 import java.util.Map;
 
 @Service
@@ -41,6 +41,13 @@ public class KuaiShouCreateServiceImpl implements IKuaiShouCreateService {
     @Value("${ai.callback.callback-creative-url}")
     private String creativeUrl;
 
+    /**
+     * 创建 组 && 创意
+     *
+     * @param oauthToken
+     * @param campaign_id
+     * @param group_list
+     */
     @Override
     public void createUnitAndCreative(CtopOauthToken oauthToken, Long campaign_id, JSONArray group_list) {
         JSONArray returnArr = new JSONArray();
@@ -86,9 +93,11 @@ public class KuaiShouCreateServiceImpl implements IKuaiShouCreateService {
                 if (!Check.isNull(groupCreateJson.getJSONArray("scene_id"))) {
                     createJson.put("scene_id", groupCreateJson.getJSONArray("scene_id")); //资源位置
                 }
-                if (!Check.isNull(groupCreateJson.getInteger("unit_type"))) {
-                    createJson.put("unit_type", groupCreateJson.getInteger("unit_type")); //创意制作方式
+                Integer unit_type = groupCreateJson.getInteger("unit_type");
+                if (Check.isNull(unit_type)) {
+                    throw new Exception("请选择创意制作方式");
                 }
+                createJson.put("unit_type", groupCreateJson.getInteger("unit_type")); //创意制作方式
                 if (!Check.isNull(groupCreateJson.getString("begin_time"))) {
                     createJson.put("begin_time", groupCreateJson.getString("begin_time")); //投放开始时间
                 }
@@ -172,6 +181,7 @@ public class KuaiShouCreateServiceImpl implements IKuaiShouCreateService {
                     returnJson.put("unit_id", unitId);
                     returnJson.put("code", 0);
                     returnJson.put("message", "广告组创建成功");
+                    returnJson.put("type", 1);
                     KuaiShouGroup group = groupService.selectGroupByUnitId(oauthToken.getAccountId(), unitId);
                     if (!Check.isNull(group)) {
                         returnJson.put("group_create_time", group.getGroupCreateTime());
@@ -179,13 +189,18 @@ public class KuaiShouCreateServiceImpl implements IKuaiShouCreateService {
                     Thread thread = new Thread() {
                         @Override
                         public void run() {
-                            createCreative(oauthToken, unitId, groupCreateJson.getJSONArray("creative_list"));
+                            if (unit_type == 4) { //  自定义2.0创意
+                                createCreative(oauthToken, unitId, groupCreateJson.getJSONArray("creative_list"));
+                            } else if (unit_type == 7) { // 程序化创意
+                                createProgramCreative(oauthToken, unitId, groupCreateJson.getJSONObject("programCreative"));
+                            }
                         }
                     };
                     thread.start();
                 } else {
                     returnJson.put("code", -1);
                     returnJson.put("message", unitMap.get("message"));
+                    returnJson.put("type", 1);
                 }
                 returnArr.add(returnJson);
             } catch (Exception e) {
@@ -193,6 +208,7 @@ public class KuaiShouCreateServiceImpl implements IKuaiShouCreateService {
                 returnJson.put("group_uuid", group_uuid);
                 returnJson.put("code", -1);
                 returnJson.put("message", e.getMessage());
+                returnJson.put("type", 1);
                 returnArr.add(returnJson);
             }
         }
@@ -201,7 +217,7 @@ public class KuaiShouCreateServiceImpl implements IKuaiShouCreateService {
 
 
     /**
-     * 创建广告创意
+     * 创建自定义广告创意
      *
      * @param oauthToken
      * @param unit_id
@@ -311,14 +327,137 @@ public class KuaiShouCreateServiceImpl implements IKuaiShouCreateService {
 
     }
 
+
+    /**
+     * 创建程序化创意
+     *
+     * @param oauthToken
+     * @param unit_id
+     * @param programCreativeJson
+     */
+    private void createProgramCreative(CtopOauthToken oauthToken, Long unit_id, JSONObject programCreativeJson) {
+        JSONArray returnArray = new JSONArray();
+        String creative_uuid = programCreativeJson.getString("creative_uuid");
+        try {
+            JSONObject programJson = new JSONObject();
+            programJson.put("advertiser_id", oauthToken.getAccountId());
+            programJson.put("unit_id", unit_id);
+            if (!Check.isNull(programCreativeJson.getString("package_name"))) {
+                programJson.put("package_name", programCreativeJson.getString("package_name"));
+            }
+            if (!Check.isNull(programCreativeJson.getJSONArray("horizontal_photo_ids"))) {
+                programJson.put("horizontal_photo_ids", programCreativeJson.getJSONArray("horizontal_photo_ids"));
+            }
+            if (!Check.isNull(programCreativeJson.getJSONArray("vertical_photo_ids"))) {
+                programJson.put("vertical_photo_ids", programCreativeJson.getJSONArray("vertical_photo_ids"));
+            }
+            JSONArray cover_image_tokens = new JSONArray();
+            JSONArray image_md5s = programCreativeJson.getJSONArray("image_md5s");
+            if (!Check.isNull(image_md5s)) {
+                for (int i = 0; i < image_md5s.size(); i++) {
+                    String image_md5 = (String) image_md5s.get(i);
+                    if (!Check.isNull(image_md5)) {
+                        String imageToken = getImageToken(image_md5, oauthToken.getAccountId(), oauthToken.getAccessToken());
+                        if (!Check.isNull(imageToken)) {
+                            cover_image_tokens.add(imageToken);
+                        }
+                    }
+                }
+                programJson.put("cover_image_tokens", cover_image_tokens);
+            }
+            if (!Check.isNull(programCreativeJson.getLong("site_id"))) {
+                programJson.put("site_id", programCreativeJson.getLong("site_id"));
+            }
+            if (!Check.isNull(programCreativeJson.getJSONArray("sticker_styles"))) {
+                programJson.put("sticker_styles", programCreativeJson.getJSONArray("sticker_styles"));
+            }
+            if (!Check.isNull(programCreativeJson.getJSONArray("cover_slogans"))) {
+                programJson.put("cover_slogans", programCreativeJson.getJSONArray("cover_slogans"));
+            }
+            if (!Check.isNull(programCreativeJson.getString("action_bar"))) {
+                programJson.put("action_bar", programCreativeJson.getString("action_bar"));
+            }
+            if (!Check.isNull(programCreativeJson.getJSONArray("captions"))) {
+                programJson.put("captions", programCreativeJson.getJSONArray("captions"));
+            }
+            if (!Check.isNull(programCreativeJson.getString("click_url"))) {
+                programJson.put("click_url", programCreativeJson.getString("click_url"));
+            }
+            if (!Check.isNull(programCreativeJson.getString("actionbar_click_url"))) {
+                programJson.put("actionbar_click_url", programCreativeJson.getString("actionbar_click_url"));
+            }
+            if (!Check.isNull(programCreativeJson.getInteger("creative_category"))) {
+                programJson.put("creative_category", programCreativeJson.getInteger("creative_category"));
+            }
+            if (!Check.isNull(programCreativeJson.getJSONArray("creative_tag"))) {
+                programJson.put("creative_tag", programCreativeJson.getJSONArray("creative_tag"));
+            }
+            Map<String, String> headers = new HashMap<>();
+            headers.put("Content-Type", "application/json");
+            headers.put("Access-Token", oauthToken.getAccessToken());
+            String url = PropertiesUtils.getConfig("kuaishou_api_url") + KuaishouInterfaceConstant.PROGRAM_CREATE;
+            String result = HttpUtils.kuaiShouhttpPostRequest(url, programJson.toJSONString(), headers);
+            JSONObject resultJson = JSONObject.parseObject(result);
+            JSONObject returnJson = new JSONObject();
+            returnJson.put("creative_uuid", creative_uuid);
+            if (!Check.isNull(resultJson)) {
+                if (resultJson.getInteger("code") == 0) {
+                    returnJson.put("unit_id", unit_id);
+                    returnJson.put("type", 2);
+                    returnJson.put("code", 0);
+                    returnJson.put("message", "程序化创意创建成功");
+                } else {
+                    returnJson.put("code", -1);
+                    returnJson.put("type", 2);
+                    returnJson.put("message", resultJson.getString("message"));
+                }
+            }
+            returnArray.add(returnJson);
+        } catch (Exception e) {
+            e.printStackTrace();
+            JSONObject returnJson = new JSONObject();
+            returnJson.put("creative_uuid", creative_uuid);
+            returnJson.put("message", e.getMessage());
+            returnJson.put("type", 2);
+            returnJson.put("code", -1);
+            returnArray.add(returnJson);
+        }
+        callback(creativeUrl, returnArray, "program_create");
+    }
+
+
+    /**
+     * 回调
+     *
+     * @param url
+     * @param requestArr
+     * @param type
+     */
     private void callback(String url, JSONArray requestArr, String type) {
         JSONObject requestJson = new JSONObject();
         requestJson.put("callbackData", requestArr);
         String s = HttpUtils2.httpPostRequest(url, requestJson, null);
         JSONObject jsonObject = JSONObject.parseObject(s);
-        log.info("{},回调数据返回结果:{}", type, jsonObject);
+        if (!Check.isNull(jsonObject)) {
+            Integer code = jsonObject.getInteger("code");
+            if (code == 0) {
+                log.info("{},回调成功", type);
+            } else {
+                log.info("{},回调失败,入参:{}", type, requestJson);
+            }
+        } else {
+            log.info("{},回调返回结果为空,入参:{}", type, requestJson);
+        }
     }
 
+    /**
+     * 根据封面MD5 获取imageToken
+     *
+     * @param md5
+     * @param accountId
+     * @param accessToken
+     * @return
+     */
     private String getImageToken(String md5, Long accountId, String accessToken) {
         String imageToken = null;
         QueryWrapper<KuaiShouImageGet> queryWrapper = new QueryWrapper<>();
@@ -337,6 +476,12 @@ public class KuaiShouCreateServiceImpl implements IKuaiShouCreateService {
         return imageToken;
     }
 
+    /**
+     * 获取定向包
+     *
+     * @param unitJson
+     * @return
+     */
     private JSONObject getTarget(JSONObject unitJson) {
         JSONObject target = new JSONObject();
         if (!Check.isNull(unitJson.getJSONArray("region"))) {

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

@@ -87,6 +87,10 @@ public class KuaiShouGroupTemplateController {
         try {
             KuaiShouGroupTemplate template = kuaiShouGroupTemplateService.getById(id);
             if (!Check.isNull(template)) {
+                KuaiShouGroupTemplate updateTemplate = new KuaiShouGroupTemplate();
+                updateTemplate.setId(template.getId());
+                updateTemplate.setTaskStatus(1);
+                kuaiShouGroupTemplateService.updateById(updateTemplate);   // 修改状态为创建中
                 executorService.submit(() -> kuaiShouGroupTemplateService.createUnit(template));
             }
             result.setSuccess(true);

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

@@ -287,12 +287,7 @@ public class KuaiShouGroupTemplateServiceImpl extends ServiceImpl<KuaiShouGroupT
             updateById(updateTemplate);
             return;
         }
-
-        updateTemplate.setId(template.getId());
-        updateTemplate.setTaskStatus(1);
-        updateById(updateTemplate);   // 修改状态为创建中
         JSONObject createUnitJson = new JSONObject();
-
         JSONArray sceneIdArr = JSONArray.parseArray(template.getSceneId());
         if (Check.isNull(sceneIdArr)) {
             updateTemplate.setTaskStatus(3);

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

@@ -122,8 +122,6 @@ public class KuaishouProgramCreativeServiceImpl extends ServiceImpl<KuaishouProg
 
         JSONObject returnJson = new JSONObject();
         try {
-
-
             JSONObject pramsJson = new JSONObject();
             pramsJson.put("advertiser_id", oauthToken.getAccountId());
             pramsJson.put("unit_id", requestJson.getLong("unitId"));
@@ -134,7 +132,6 @@ public class KuaishouProgramCreativeServiceImpl extends ServiceImpl<KuaishouProg
             if (!Check.isNull(requestJson.getLong("siteId"))) {
                 pramsJson.put("site_id", requestJson.getLong("siteId"));
             }
-
             if (!Check.isNull(requestJson.getJSONArray("stickerStyles"))) {
                 pramsJson.put("sticker_styles", requestJson.getJSONArray("stickerStyles"));
             }
@@ -166,14 +163,12 @@ public class KuaishouProgramCreativeServiceImpl extends ServiceImpl<KuaishouProg
             JSONArray cover_image_tokens = new JSONArray();
             requestJson.remove(coverImageTokens);
             if (!Check.isNull(coverImageTokens)) {
-
                 for (int i = 0; i < coverImageTokens.size(); i++) {
                     String signature = coverImageTokens.getString(i);
                     if (Check.isNull(signature)) {
                         continue;
                     }
                     String imageToken = null;
-
                     if (!Check.isNull(signature)) {
                         QueryWrapper<KuaiShouImageGet> queryWrapper = new QueryWrapper<>();
                         queryWrapper.eq("account_id", oauthToken.getAccountId());
@@ -188,15 +183,9 @@ public class KuaishouProgramCreativeServiceImpl extends ServiceImpl<KuaishouProg
                         }
                         cover_image_tokens.add(imageToken);
                     }
-
-
                 }
-
-
             }
-
             pramsJson.put("cover_image_tokens", cover_image_tokens);
-
             String result = HttpUtils.kuaiShouhttpPostRequest(url, pramsJson.toJSONString(), headers);
             JSONObject jsonObject = JSONObject.parseObject(result);
             log.info("创建程序化创意返回结果:{}", jsonObject);
@@ -220,8 +209,6 @@ public class KuaishouProgramCreativeServiceImpl extends ServiceImpl<KuaishouProg
             returnJson.put("message", "系统错误");
 
         }
-
-
         return returnJson;
     }