|
@@ -15,6 +15,7 @@ import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
|
|
|
import java.math.BigDecimal;
|
|
|
+import java.util.ArrayList;
|
|
|
import java.util.HashMap;
|
|
|
import java.util.List;
|
|
|
import java.util.Map;
|
|
@@ -55,7 +56,9 @@ public class ByteDanceAdvertisePlanServiceImpl extends ServiceImpl<ByteDanceAdve
|
|
|
params.put("start_time", byteDanceAdvertisePlan.getStartTime());
|
|
|
params.put("end_time", byteDanceAdvertisePlan.getEndTime());
|
|
|
//广告投放时段
|
|
|
- //params.put("schedule_time",byteDanceAdvertisePlan.getString("scheduleTime"));
|
|
|
+ if(!byteDanceAdvertisePlan.getScheduleTime().equals("")){
|
|
|
+ params.put("schedule_time",byteDanceAdvertisePlan.getScheduleTime());
|
|
|
+ }
|
|
|
params.put("pricing", byteDanceAdvertisePlan.getPricing());
|
|
|
params.put("bid", byteDanceAdvertisePlan.getBid());
|
|
|
params.put("cpa_bid", byteDanceAdvertisePlan.getCpaBid());
|
|
@@ -65,7 +68,9 @@ public class ByteDanceAdvertisePlanServiceImpl extends ServiceImpl<ByteDanceAdve
|
|
|
//查询必填参数convert_id
|
|
|
params.put("convert_id", byteDanceAdvertisePlan.getConvertId());
|
|
|
}else{
|
|
|
- params.put("convert_id",getConvertIdByExternalAction(byteDanceAdvertisePlan.getExternalAction()));
|
|
|
+ int convertId=getConvertIdByExternalAction(byteDanceAdvertisePlan.getExternalAction());
|
|
|
+ params.put("convert_id",convertId);
|
|
|
+ byteDanceAdvertisePlan.setConvertId((long) convertId);
|
|
|
}
|
|
|
}
|
|
|
params.put("deep_bid_type", byteDanceAdvertisePlan.getDeepBidType());
|
|
@@ -124,7 +129,8 @@ public class ByteDanceAdvertisePlanServiceImpl extends ServiceImpl<ByteDanceAdve
|
|
|
JSONObject jsonObject = JSONObject.parseObject(HttpUtils.httpPostRequest(PropertiesUtils.getValue("bytedance_config", "bytedance_api_url") + PropertiesUtils.getValue("bytedance_config", "bytedance_v2_ad_create"), params, headers));
|
|
|
if (jsonObject.getInteger("code") == 0) {
|
|
|
resultMap.put("code", 0);
|
|
|
- resultMap.put("data",jsonObject.getJSONObject("data"));
|
|
|
+ byteDanceAdvertisePlan.setId(jsonObject.getJSONObject("data").getLong("ad_id"));
|
|
|
+ resultMap.put("data",byteDanceAdvertisePlan);
|
|
|
} else {
|
|
|
log.error("广告计划创建失败==》accountId:{},message:{}", token.getAccountId(), jsonObject.getString("message"));
|
|
|
resultMap.put("code",-200);
|
|
@@ -138,53 +144,70 @@ public class ByteDanceAdvertisePlanServiceImpl extends ServiceImpl<ByteDanceAdve
|
|
|
|
|
|
Map<String, Object> resultMap = new HashMap<>();
|
|
|
|
|
|
- Map<String, String> headers = new HashMap<>();
|
|
|
- headers.put("Content-Type", "application/json");
|
|
|
- headers.put("Access-Token", token.getAccessToken());
|
|
|
-
|
|
|
- JSONObject params = new JSONObject();
|
|
|
- params.put("advertiser_id", byteDanceAdvertisePlan.getAccountId());
|
|
|
- params.put("ad_id", byteDanceAdvertisePlan.getId());
|
|
|
- params.put("name", byteDanceAdvertisePlan.getName());
|
|
|
- params.put("modify_time", byteDanceAdvertisePlan.getModifyTime());
|
|
|
- params.put("budget", byteDanceAdvertisePlan.getBudget());
|
|
|
- params.put("schedule_type", byteDanceAdvertisePlan.getScheduleType());
|
|
|
- params.put("start_time", byteDanceAdvertisePlan.getStartTime());
|
|
|
- params.put("end_time", byteDanceAdvertisePlan.getEndTime());
|
|
|
- //广告投放时段
|
|
|
- params.put("schedule_time",byteDanceAdvertisePlan.getScheduleTime());
|
|
|
- params.put("bid", byteDanceAdvertisePlan.getBid());
|
|
|
- params.put("cpa_bid", byteDanceAdvertisePlan.getCpaBid());
|
|
|
- params.put("flow_control_mode", byteDanceAdvertisePlan.getFlowControlMode());
|
|
|
- if (byteDanceAdvertisePlan.getPricing().equals("OCPM")) {
|
|
|
+ //查询记录,获取修改时间等字段
|
|
|
+ List adId=new ArrayList();
|
|
|
+ adId.add(byteDanceAdvertisePlan.getId());
|
|
|
+ Map<String, Object> map = queryAdByAdId(token, Long.valueOf(byteDanceAdvertisePlan.getAccountId()), adId);
|
|
|
+ if(!map.get("code").equals(0)){
|
|
|
+ log.error("获取修改时间接口错误");
|
|
|
+ }else {
|
|
|
+ Object modifyTime = ((Map) ((JSONObject) map.get("data")).getJSONArray("list").get(0)).get("modify_time");
|
|
|
+ Map<String, String> headers = new HashMap<>();
|
|
|
+ headers.put("Content-Type", "application/json");
|
|
|
+ headers.put("Access-Token", token.getAccessToken());
|
|
|
+
|
|
|
+ JSONObject params = new JSONObject();
|
|
|
+ params.put("advertiser_id", byteDanceAdvertisePlan.getAccountId());
|
|
|
+ params.put("ad_id", byteDanceAdvertisePlan.getId());
|
|
|
+ params.put("name", byteDanceAdvertisePlan.getName());
|
|
|
+ params.put("modify_time", modifyTime);
|
|
|
+ params.put("budget", byteDanceAdvertisePlan.getBudget());
|
|
|
+ params.put("schedule_type", byteDanceAdvertisePlan.getScheduleType());
|
|
|
+ params.put("start_time", byteDanceAdvertisePlan.getStartTime());
|
|
|
+ params.put("end_time", byteDanceAdvertisePlan.getEndTime());
|
|
|
+ //广告投放时段
|
|
|
+ if(!byteDanceAdvertisePlan.getScheduleTime().equals("")){
|
|
|
+ params.put("schedule_time",byteDanceAdvertisePlan.getScheduleTime());
|
|
|
+ }
|
|
|
+ params.put("bid", byteDanceAdvertisePlan.getBid());
|
|
|
+ params.put("cpa_bid", byteDanceAdvertisePlan.getCpaBid());
|
|
|
+ params.put("flow_control_mode", byteDanceAdvertisePlan.getFlowControlMode());
|
|
|
params.put("convert_id", byteDanceAdvertisePlan.getConvertId());
|
|
|
- }
|
|
|
- params.put("deep_bid_type", byteDanceAdvertisePlan.getDeepBidType());
|
|
|
- params.put("deep_cpabid", byteDanceAdvertisePlan.getDeepCpaBid());
|
|
|
- params.put("hide_if_converted", byteDanceAdvertisePlan.getHideIfConverted());
|
|
|
- params.put("hide_if_exists", byteDanceAdvertisePlan.getHideIfExists() == null ? 0 : byteDanceAdvertisePlan.getHideIfExists());
|
|
|
- params.put("converted_time_duration", byteDanceAdvertisePlan.getConvertedTimeDuration());
|
|
|
- //params.put("luban_roi_goal",byteDanceAdvertisePlan.getLubanRoiGoal()==null?0.00:byteDanceAdvertisePlan.getFloat("lubanRoiGoal"));
|
|
|
- //params.put("roi_goal",byteDanceAdvertisePlan.getFroiGoal")==null?0.00:byteDanceAdvertisePlan.getFloat("roiGoal"));
|
|
|
- //params.put("audience_package_id",byteDanceAdvertisePlan.getLong("audiencePackageId"));
|
|
|
- params.put("open_url", byteDanceAdvertisePlan.getOpenUrl());
|
|
|
- //判断推广目的
|
|
|
- if (landingType.equals("Link")) {
|
|
|
+ params.put("deep_bid_type", byteDanceAdvertisePlan.getDeepBidType());
|
|
|
+ params.put("deep_cpabid", byteDanceAdvertisePlan.getDeepCpaBid());
|
|
|
+ params.put("hide_if_converted", byteDanceAdvertisePlan.getHideIfConverted());
|
|
|
+ params.put("hide_if_exists", byteDanceAdvertisePlan.getHideIfExists() == null ? 0 : byteDanceAdvertisePlan.getHideIfExists());
|
|
|
+ //params.put("converted_time_duration", byteDanceAdvertisePlan.getConvertedTimeDuration());
|
|
|
+ //params.put("luban_roi_goal",byteDanceAdvertisePlan.getLubanRoiGoal()==null?0.00:byteDanceAdvertisePlan.getFloat("lubanRoiGoal"));
|
|
|
+ //params.put("roi_goal",byteDanceAdvertisePlan.getFroiGoal")==null?0.00:byteDanceAdvertisePlan.getFloat("roiGoal"));
|
|
|
+ //params.put("audience_package_id",byteDanceAdvertisePlan.getLong("audiencePackageId"));
|
|
|
+ params.put("adjust_cpa", 0);
|
|
|
+ //暂时不需要定向包id
|
|
|
+ //params.put("audience_package_id",byteDanceAdvertisePlan.getLong("audiencePackageId"));
|
|
|
+ /*if(byteDanceAdvertisePlan.getUseOpenUrl().equals("YES")){
|
|
|
+ params.put("open_url", byteDanceAdvertisePlan.getOpenUrl());
|
|
|
+ }*/
|
|
|
+ //判断推广目的
|
|
|
+ /*if (landingType.equals("LINK")) {
|
|
|
params.put("external_url", byteDanceAdvertisePlan.getExternalUrl());
|
|
|
}
|
|
|
if (landingType.equals("APP")) {
|
|
|
- params.put("download_type", byteDanceAdvertisePlan.getExternalUrl());
|
|
|
-
|
|
|
- }
|
|
|
- JSONObject jsonObject = JSONObject.parseObject(HttpUtils.httpPostRequest(PropertiesUtils.getValue("bytedance_config", "bytedance_api_url") + PropertiesUtils.getValue("bytedance_config", "bytedance_v2_ad_update"), params, headers));
|
|
|
- if (jsonObject.getInteger("code") != 0) {
|
|
|
- log.error("广告计划创建失败==》accountId:{},message:{}", token.getAccountId(), jsonObject.getString("message"));
|
|
|
- resultMap.put("code", -1);
|
|
|
- resultMap.put("message", jsonObject.getString("message"));
|
|
|
- return resultMap;
|
|
|
+ params.put("download_type", byteDanceAdvertisePlan.getDownloadType());
|
|
|
+ params.put("download_url", byteDanceAdvertisePlan.getDownloadUrl());
|
|
|
+ params.put("package", byteDanceAdvertisePlan.getToutiaoPackage());
|
|
|
+ params.put("app_type",byteDanceAdvertisePlan.getAppType());
|
|
|
+ }*/
|
|
|
+ JSONObject jsonObject = JSONObject.parseObject(HttpUtils.httpPostRequest(PropertiesUtils.getValue("bytedance_config", "bytedance_api_url") + PropertiesUtils.getValue("bytedance_config", "bytedance_v2_ad_update"), params, headers));
|
|
|
+ if (jsonObject.getInteger("code") != 0) {
|
|
|
+ log.error("广告计划修改失败==》accountId:{},message:{}", token.getAccountId(), jsonObject.getString("message"));
|
|
|
+ resultMap.put("code", -1);
|
|
|
+ resultMap.put("message", jsonObject.getString("message"));
|
|
|
+ return resultMap;
|
|
|
+ }
|
|
|
+ resultMap.put("code", 0);
|
|
|
+ resultMap.put("message", "广告组状态修改成功");
|
|
|
}
|
|
|
- resultMap.put("code", 0);
|
|
|
- resultMap.put("message", "广告组状态修改成功");
|
|
|
+
|
|
|
return resultMap;
|
|
|
}
|
|
|
|
|
@@ -194,7 +217,17 @@ public class ByteDanceAdvertisePlanServiceImpl extends ServiceImpl<ByteDanceAdve
|
|
|
Map<String, String> headers = new HashMap<>();
|
|
|
headers.put("Content-Type", "application/json");
|
|
|
headers.put("Access-Token", token.getAccessToken());
|
|
|
-
|
|
|
+ switch (optStatus) {
|
|
|
+ case "AD_STATUS_DISABLE":
|
|
|
+ optStatus = "disable";
|
|
|
+ break;
|
|
|
+ case "AD_STATUS_ENABLE":
|
|
|
+ optStatus = "enable";
|
|
|
+ break;
|
|
|
+ case "AD_STATUS_DELETE":
|
|
|
+ optStatus = "delete";
|
|
|
+ break;
|
|
|
+ }
|
|
|
JSONObject params = new JSONObject();
|
|
|
params.put("advertiser_id", token.getAccountId());
|
|
|
params.put("ad_ids", adIds.toJSONString());
|
|
@@ -220,8 +253,8 @@ public class ByteDanceAdvertisePlanServiceImpl extends ServiceImpl<ByteDanceAdve
|
|
|
if (adIds.size() > 0) {
|
|
|
for (int i = 0; i < adIds.size(); i++) {
|
|
|
JSONObject object = new JSONObject();
|
|
|
- Long adId = (Long)adIds.get(i);
|
|
|
- Long budget = (Long)budgets.get(i);
|
|
|
+ Long adId = Long.valueOf(adIds.get(i).toString());
|
|
|
+ Long budget = Long.valueOf(budgets.get(i).toString());
|
|
|
object.put("ad_id", adId);
|
|
|
object.put("budget", budget);
|
|
|
data.add(object);
|
|
@@ -255,8 +288,8 @@ public class ByteDanceAdvertisePlanServiceImpl extends ServiceImpl<ByteDanceAdve
|
|
|
if (adIds.size() > 0) {
|
|
|
for (int i = 0; i < adIds.size(); i++) {
|
|
|
JSONObject object = new JSONObject();
|
|
|
- Long adId = (Long)adIds.get(i);
|
|
|
- Long bid = (Long)bids.get(i);
|
|
|
+ Long adId = Long.valueOf(adIds.get(i).toString());
|
|
|
+ Long bid = Long.valueOf(bids.get(i).toString());
|
|
|
object.put("ad_id", adId);
|
|
|
object.put("bid", bid);
|
|
|
data.add(object);
|
|
@@ -375,6 +408,30 @@ public class ByteDanceAdvertisePlanServiceImpl extends ServiceImpl<ByteDanceAdve
|
|
|
return byteDanceAdvertisePlanMapper.selectWarningCpaBid(accountId, maxCapBid);
|
|
|
}
|
|
|
|
|
|
+ private Map<String, Object> queryAdByAdId(CtopOauthToken token, Long accountId, List adId){
|
|
|
+
|
|
|
+ Map<String, String> headers = new HashMap<>();
|
|
|
+ headers.put("Content-Type", "application/json");
|
|
|
+ headers.put("Access-Token", token.getAccessToken());
|
|
|
+
|
|
|
+ JSONObject params = new JSONObject();
|
|
|
+ params.put("advertiser_id", accountId);
|
|
|
+ Map<String, Object> filtering = new HashMap<>();
|
|
|
+ filtering.put("ids",adId);
|
|
|
+ params.put("filtering", filtering);
|
|
|
+ JSONObject jsonObject = JSONObject.parseObject(HttpUtils.httpGetRequest(PropertiesUtils.getValue("bytedance_config", "bytedance_api_url") + PropertiesUtils.getValue("bytedance_config", "bytedance_v2_ad_get"), headers, params));
|
|
|
+ Map<String, Object> resultMap = new HashMap<>();
|
|
|
+ if (jsonObject.getInteger("code") == 0) {
|
|
|
+ resultMap.put("code", 0);
|
|
|
+ resultMap.put("data",jsonObject.getJSONObject("data"));
|
|
|
+ } else {
|
|
|
+ log.error("广告计划查询失败==》accountId:{},message:{}", token.getAccountId(), jsonObject.getString("message"));
|
|
|
+ resultMap.put("code",-200);
|
|
|
+ resultMap.put("message", jsonObject.getString("message"));
|
|
|
+ }
|
|
|
+ return resultMap;
|
|
|
+ }
|
|
|
+
|
|
|
private int getConvertIdByExternalAction(String externalAction){
|
|
|
int result=0;
|
|
|
switch (externalAction) {
|