|
@@ -108,6 +108,12 @@ public class AiBytedanceAdvertiserStrategyServiceImpl extends ServiceImpl<AiByte
|
|
|
return videoCnt;
|
|
|
}
|
|
|
log.info("获取{}素材个数:{}=>accountId:{}",BytedanceCreativeMatTypeEnum.getNameByType(createType+""),videoInfos.size(),token.getAccountId());
|
|
|
+ String creativeImageMode;
|
|
|
+ if ("UNIVERSAL".equals(strategy.getAdDeliveryRange())){ //通投智选
|
|
|
+ creativeImageMode = "UNIVERSAL";
|
|
|
+ }else {
|
|
|
+ creativeImageMode = strategy.getCreativeImageMode();
|
|
|
+ }
|
|
|
for (ByteDanceVideoInfo video:videoInfos) {
|
|
|
//判断此素材为视频
|
|
|
if ("video".equalsIgnoreCase(video.getMaterialType())){
|
|
@@ -121,7 +127,7 @@ public class AiBytedanceAdvertiserStrategyServiceImpl extends ServiceImpl<AiByte
|
|
|
Integer useDplinkIndex = strategy.getDpLinkIndexUsed();
|
|
|
if(null==useDplinkIndex||useDplinkIndex.equals(0)){
|
|
|
//查看已使用的dp链接
|
|
|
- AiBytedanceAdDplinkInfo adDplinkInfo = adDplinkInfoService.getlatestDpLinkInfo(strategy.getId(),strategy.getAccountId(),strategy.getCreativeImageMode(),1);
|
|
|
+ AiBytedanceAdDplinkInfo adDplinkInfo = adDplinkInfoService.getlatestDpLinkInfo(strategy.getId(),strategy.getAccountId(),creativeImageMode,1);
|
|
|
if(null == adDplinkInfo){
|
|
|
adDplinkInfo = new AiBytedanceAdDplinkInfo();
|
|
|
if("FIX".equalsIgnoreCase(strategy.getAdBidCreateType())){
|
|
@@ -184,7 +190,7 @@ public class AiBytedanceAdvertiserStrategyServiceImpl extends ServiceImpl<AiByte
|
|
|
adDplinkInfo.setAccountId(strategy.getAccountId());
|
|
|
adDplinkInfo.setStatus(1);
|
|
|
adDplinkInfo.setStrategyId(strategy.getId());
|
|
|
- adDplinkInfo.setImageMode(strategy.getCreativeImageMode());
|
|
|
+ adDplinkInfo.setImageMode(creativeImageMode);
|
|
|
adDplinkInfoService.save(adDplinkInfo);
|
|
|
|
|
|
BytedanceAiVideoCreativeLog creativeLog = new BytedanceAiVideoCreativeLog(strategy,adId,campaignId,video);
|
|
@@ -195,7 +201,7 @@ public class AiBytedanceAdvertiserStrategyServiceImpl extends ServiceImpl<AiByte
|
|
|
}
|
|
|
}else{
|
|
|
Long dpIndex ;
|
|
|
- AiBytedanceAdDplinkInfo adDplinkInfo = adDplinkInfoService.getlatestDpLinkInfo(strategy.getId(),strategy.getAccountId(),strategy.getCreativeImageMode(),1);
|
|
|
+ AiBytedanceAdDplinkInfo adDplinkInfo = adDplinkInfoService.getlatestDpLinkInfo(strategy.getId(),strategy.getAccountId(),creativeImageMode,1);
|
|
|
if(null == adDplinkInfo){
|
|
|
adDplinkInfo = new AiBytedanceAdDplinkInfo();
|
|
|
if("FIX".equalsIgnoreCase(strategy.getAdBidCreateType())){
|
|
@@ -266,7 +272,7 @@ public class AiBytedanceAdvertiserStrategyServiceImpl extends ServiceImpl<AiByte
|
|
|
adDplinkInfo.setAccountId(strategy.getAccountId());
|
|
|
adDplinkInfo.setStatus(1);
|
|
|
adDplinkInfo.setStrategyId(strategy.getId());
|
|
|
- adDplinkInfo.setImageMode(strategy.getCreativeImageMode());
|
|
|
+ adDplinkInfo.setImageMode(creativeImageMode);
|
|
|
adDplinkInfoService.save(adDplinkInfo);
|
|
|
BytedanceAiVideoCreativeLog creativeLog = new BytedanceAiVideoCreativeLog(strategy,adId,campaignId,video);
|
|
|
videoCreativeLogService.saveOrUpdate(creativeLog);
|
|
@@ -365,7 +371,7 @@ public class AiBytedanceAdvertiserStrategyServiceImpl extends ServiceImpl<AiByte
|
|
|
}
|
|
|
//允许客户端下载视频功能
|
|
|
Integer adDownloadStatus = strategy.getCreativeDownloadStatus();
|
|
|
- if(!Check.isNull(adDownloadStatus)&&adDownloadStatus!=0){
|
|
|
+ if(!Check.isNull(adDownloadStatus)){
|
|
|
ad_data.put("ad_download_status",adDownloadStatus);
|
|
|
}
|
|
|
//创意展现方式
|
|
@@ -468,11 +474,23 @@ public class AiBytedanceAdvertiserStrategyServiceImpl extends ServiceImpl<AiByte
|
|
|
}
|
|
|
creObj.put("title_materials",titleArray);
|
|
|
JSONArray imageMaterials = new JSONArray();
|
|
|
+ JSONArray videoMaterials = new JSONArray();
|
|
|
JSONObject object = new JSONObject();
|
|
|
//类型
|
|
|
if ("image".equalsIgnoreCase(videoInfo.getMaterialType())){
|
|
|
- //图片素材
|
|
|
- object.put("image_mode",strategy.getCreativeImageMode());
|
|
|
+ //通投智选
|
|
|
+ if ("UNIVERSAL".equalsIgnoreCase(strategy.getAdDeliveryRange())){
|
|
|
+ //竖图
|
|
|
+ if (strategy.getCreativeImageMode().contains("CREATIVE_IMAGE_MODE_LARGE_VERTICAL")){
|
|
|
+ object.put("image_mode","CREATIVE_IMAGE_MODE_LARGE_VERTICAL");
|
|
|
+ //横图
|
|
|
+ }else if(strategy.getCreativeImageMode().contains("CREATIVE_IMAGE_MODE_LARGE")){
|
|
|
+ object.put("image_mode","CREATIVE_IMAGE_MODE_LARGE");
|
|
|
+ }
|
|
|
+ }else {
|
|
|
+ object.put("image_mode",strategy.getCreativeImageMode());
|
|
|
+ }
|
|
|
+
|
|
|
String[] imageIds = new String[]{videoInfo.getId()};
|
|
|
JSONArray image_info = new JSONArray();
|
|
|
for (String imgId : imageIds) {
|
|
@@ -482,12 +500,23 @@ public class AiBytedanceAdvertiserStrategyServiceImpl extends ServiceImpl<AiByte
|
|
|
}
|
|
|
object.put("image_info",image_info);
|
|
|
imageMaterials.add(object);
|
|
|
- creObj.put("image_materials",imageMaterials);
|
|
|
+
|
|
|
}
|
|
|
|
|
|
+ //视频
|
|
|
if ("video".equalsIgnoreCase(videoInfo.getMaterialType())){
|
|
|
- //视频
|
|
|
- object.put("image_mode",strategy.getCreativeImageMode());
|
|
|
+ //通投智选
|
|
|
+ if ("UNIVERSAL".equalsIgnoreCase(strategy.getAdDeliveryRange())){
|
|
|
+ //竖版视频
|
|
|
+ if (strategy.getCreativeImageMode().contains("CREATIVE_IMAGE_MODE_VIDEO_VERTICAL")){
|
|
|
+ object.put("image_mode","CREATIVE_IMAGE_MODE_VIDEO_VERTICAL");
|
|
|
+ //横板视频
|
|
|
+ }else if(strategy.getCreativeImageMode().contains("CREATIVE_IMAGE_MODE_VIDEO")){
|
|
|
+ object.put("image_mode","CREATIVE_IMAGE_MODE_VIDEO");
|
|
|
+ }
|
|
|
+ }else {
|
|
|
+ object.put("image_mode",strategy.getCreativeImageMode());
|
|
|
+ }
|
|
|
JSONObject videoObj = new JSONObject();
|
|
|
videoObj.put("video_id",videoInfo.getVid());
|
|
|
//视频封面
|
|
@@ -499,11 +528,11 @@ public class AiBytedanceAdvertiserStrategyServiceImpl extends ServiceImpl<AiByte
|
|
|
}
|
|
|
object.put("image_info",imgObj);
|
|
|
object.put("video_info",videoObj);
|
|
|
- imageMaterials.add(object);
|
|
|
- creObj.put("video_materials",imageMaterials);
|
|
|
+ videoMaterials.add(object);
|
|
|
+
|
|
|
}
|
|
|
|
|
|
- //通投智选 竖版视频 横版视频 横图大图
|
|
|
+ //通投智选 竖版视频 横版视频 横图大图 竖图大图
|
|
|
if (!Check.isNull(strategy.getAdDeliveryRange()) && "UNIVERSAL".equalsIgnoreCase(strategy.getAdDeliveryRange())){
|
|
|
List<ByteDanceVideoInfo> resultList = new ArrayList<>();
|
|
|
//获取 最近14天的时间 开始 和截至时间点
|
|
@@ -513,8 +542,9 @@ public class AiBytedanceAdvertiserStrategyServiceImpl extends ServiceImpl<AiByte
|
|
|
List<ByteDanceVideoInfo> listMode = byteDanceVideoInfoMapper.getModeVideo(strategy.getAccountId(),map.get("startTime"),map.get("endTime"),1L);
|
|
|
if (!Check.isNull(listMode)){
|
|
|
for (ByteDanceVideoInfo info : listMode) {
|
|
|
+ JSONObject objectVideo = new JSONObject();
|
|
|
//横板视频
|
|
|
- object.put("image_mode","CREATIVE_IMAGE_MODE_VIDEO");
|
|
|
+ objectVideo.put("image_mode","CREATIVE_IMAGE_MODE_VIDEO");
|
|
|
JSONObject videoObj = new JSONObject();
|
|
|
videoObj.put("video_id",info.getVid());
|
|
|
//视频封面
|
|
@@ -524,10 +554,9 @@ public class AiBytedanceAdvertiserStrategyServiceImpl extends ServiceImpl<AiByte
|
|
|
if(!Check.isNull(imageId)){
|
|
|
imgObj.put("image_id",imageId);
|
|
|
}
|
|
|
- object.put("image_info",imgObj);
|
|
|
- object.put("video_info",videoObj);
|
|
|
- imageMaterials.add(object);
|
|
|
- creObj.put("video_materials",imageMaterials);
|
|
|
+ objectVideo.put("image_info",imgObj);
|
|
|
+ objectVideo.put("video_info",videoObj);
|
|
|
+ videoMaterials.add(objectVideo);
|
|
|
}
|
|
|
}
|
|
|
}
|
|
@@ -536,8 +565,31 @@ public class AiBytedanceAdvertiserStrategyServiceImpl extends ServiceImpl<AiByte
|
|
|
List<ByteDanceVideoInfo> listImage = byteDanceVideoInfoMapper.getModeImageLarge(strategy.getAccountId(),map.get("startTime"),map.get("endTime"),1L);
|
|
|
if (!Check.isNull(listImage)){
|
|
|
for (ByteDanceVideoInfo info : listImage) {
|
|
|
+ JSONObject objectImg = new JSONObject();
|
|
|
+ //图片素材
|
|
|
+ objectImg.put("image_mode","CREATIVE_IMAGE_MODE_LARGE");
|
|
|
+ String[] imageIds = new String[]{info.getId()};
|
|
|
+ JSONArray image_info = new JSONArray();
|
|
|
+ for (String imgId : imageIds) {
|
|
|
+ JSONObject imageObject = new JSONObject();
|
|
|
+ imageObject.put("image_id",imgId);
|
|
|
+ image_info.add(imageObject);
|
|
|
+ }
|
|
|
+ objectImg.put("image_info",image_info);
|
|
|
+ imageMaterials.add(objectImg);
|
|
|
+
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ //竖图大图
|
|
|
+ if (strategy.getCreativeImageMode().contains("CREATIVE_IMAGE_MODE_LARGE_VERTICAL")){
|
|
|
+ List<ByteDanceVideoInfo> listImage = byteDanceVideoInfoMapper.getModeImageVertical(strategy.getAccountId(),map.get("startTime"),map.get("endTime"),1L);
|
|
|
+ if (!Check.isNull(listImage)){
|
|
|
+ for (ByteDanceVideoInfo info : listImage) {
|
|
|
+ JSONObject objectImg = new JSONObject();
|
|
|
//图片素材
|
|
|
- object.put("image_mode","CREATIVE_IMAGE_MODE_LARGE");
|
|
|
+ objectImg.put("image_mode","CREATIVE_IMAGE_MODE_LARGE");
|
|
|
String[] imageIds = new String[]{info.getId()};
|
|
|
JSONArray image_info = new JSONArray();
|
|
|
for (String imgId : imageIds) {
|
|
@@ -545,13 +597,16 @@ public class AiBytedanceAdvertiserStrategyServiceImpl extends ServiceImpl<AiByte
|
|
|
imageObject.put("image_id",imgId);
|
|
|
image_info.add(imageObject);
|
|
|
}
|
|
|
- object.put("image_info",image_info);
|
|
|
- imageMaterials.add(object);
|
|
|
- creObj.put("image_materials",imageMaterials);
|
|
|
+ objectImg.put("image_info",image_info);
|
|
|
+ imageMaterials.add(objectImg);
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
+
|
|
|
}
|
|
|
+ creObj.put("image_materials",imageMaterials);
|
|
|
+ creObj.put("video_materials",videoMaterials);
|
|
|
|
|
|
//副标题
|
|
|
String subTitle = strategy.getCreativeSubTitle();
|
|
@@ -640,7 +695,7 @@ public class AiBytedanceAdvertiserStrategyServiceImpl extends ServiceImpl<AiByte
|
|
|
if(null!=strategy.getAdDeliveryRange() && !"".equals(strategy.getAdDeliveryRange().trim())){
|
|
|
params.put("delivery_range",strategy.getAdDeliveryRange());
|
|
|
//搜索快投
|
|
|
- if(!"UNION".equals(strategy.getAdDeliveryRange())){
|
|
|
+ if(!"UNION".equals(strategy.getAdDeliveryRange()) && !"UNIVERSAL".equals(strategy.getAdDeliveryRange())){
|
|
|
params.put("feed_delivery_search","DISABLED");
|
|
|
}
|
|
|
}
|
|
@@ -1089,9 +1144,14 @@ public class AiBytedanceAdvertiserStrategyServiceImpl extends ServiceImpl<AiByte
|
|
|
adName = adName.replace("{{素材名称}}","["+videoInfo.getFilename()+"]");
|
|
|
}
|
|
|
}
|
|
|
-
|
|
|
+ String creativeImageMode;
|
|
|
if(adName.contains("{{序号}}")){
|
|
|
- int i = adDplinkInfoService.getDpLinkInfoCount(strategy.getAccountId(),strategy.getCreativeImageMode());
|
|
|
+ if ("UNIVERSAL".equals(strategy.getAdDeliveryRange())){ //通投智选
|
|
|
+ creativeImageMode = "UNIVERSAL";
|
|
|
+ }else {
|
|
|
+ creativeImageMode = strategy.getCreativeImageMode();
|
|
|
+ }
|
|
|
+ int i = adDplinkInfoService.getDpLinkInfoCount(strategy.getAccountId(),creativeImageMode);
|
|
|
adName = adName.replace("{{序号}}",String.valueOf(i+1));
|
|
|
}
|
|
|
|
|
@@ -1169,8 +1229,14 @@ public class AiBytedanceAdvertiserStrategyServiceImpl extends ServiceImpl<AiByte
|
|
|
result = result + "-" + date;
|
|
|
}
|
|
|
|
|
|
+ String creativeImageMode;
|
|
|
if(result.contains("{{序号}}")){
|
|
|
//查询同素材类型当天已有计划数量
|
|
|
+ if ("UNIVERSAL".equals(strategy.getAdDeliveryRange())){ //通投智选
|
|
|
+ creativeImageMode = "UNIVERSAL";
|
|
|
+ }else {
|
|
|
+ creativeImageMode = strategy.getCreativeImageMode();
|
|
|
+ }
|
|
|
int i = adDplinkInfoService.getDpLinkInfoCount(strategy.getAccountId(),strategy.getCreativeImageMode());
|
|
|
Long num = GetCampaignNum.getCampaignNameNum(strategy.getCampaignCnt(),strategy.getCampaignAdCnt(), i+1);
|
|
|
result = result.replace("{{序号}}",String.valueOf(num));
|
|
@@ -1289,13 +1355,17 @@ public class AiBytedanceAdvertiserStrategyServiceImpl extends ServiceImpl<AiByte
|
|
|
*/
|
|
|
@Override
|
|
|
@Transactional
|
|
|
- public Result updStaById(String id,String state,String accountId,String creativeImageMode) {
|
|
|
+ public Result updStaById(String id,String state,String accountId,String creativeImageMode,String adDeliveryRange) {
|
|
|
//开启
|
|
|
if (org.apache.commons.lang3.StringUtils.equals(state,"0")){
|
|
|
//修改状态为开启
|
|
|
aiBytedanceAdvertiserStrategyMapper.updStaById(id,state);
|
|
|
//关闭 账户下 其他数据信息(不包含本条id信息) 状态为 关闭
|
|
|
- aiBytedanceAdvertiserStrategyMapper.updStaByAccountId(accountId,creativeImageMode,"1",id);
|
|
|
+ //通投智选
|
|
|
+ if ("UNIVERSAL".equals(adDeliveryRange)){
|
|
|
+ creativeImageMode = null;
|
|
|
+ }
|
|
|
+ aiBytedanceAdvertiserStrategyMapper.updStaByAccountId(accountId,creativeImageMode,adDeliveryRange,"1",id);
|
|
|
}
|
|
|
//关闭
|
|
|
if (org.apache.commons.lang3.StringUtils.equals(state,"1")){
|
|
@@ -1621,7 +1691,16 @@ public class AiBytedanceAdvertiserStrategyServiceImpl extends ServiceImpl<AiByte
|
|
|
|
|
|
//同一账户下 同素材类型 只能有一条信息为开启
|
|
|
//关闭 账户下 其他数据信息(不包含本条id信息) 状态为 关闭
|
|
|
- aiBytedanceAdvertiserStrategyMapper.updStaByAccountId(String.valueOf(aiBytedanceAdvertiserStrategy.getAccountId()),aiBytedanceAdvertiserStrategy.getCreativeImageMode(),"1",null);
|
|
|
+ String creativeImageMode;
|
|
|
+ if ("UNIVERSAL".equals(aiBytedanceAdvertiserStrategy.getAdDeliveryRange())){ //通投智选
|
|
|
+ creativeImageMode = null;
|
|
|
+ }else {
|
|
|
+ creativeImageMode = aiBytedanceAdvertiserStrategy.getCreativeImageMode();
|
|
|
+ }
|
|
|
+ aiBytedanceAdvertiserStrategyMapper.updStaByAccountId(String.valueOf(aiBytedanceAdvertiserStrategy.getAccountId()),
|
|
|
+ creativeImageMode,
|
|
|
+ aiBytedanceAdvertiserStrategy.getAdDeliveryRange(),
|
|
|
+ "1",null);
|
|
|
//状态(0开 1关)
|
|
|
aiBytedanceAdvertiserStrategy.setStatus(0);
|
|
|
|