|
@@ -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;
|
|
@@ -22,10 +23,8 @@ import java.util.Map;
|
|
|
@Slf4j
|
|
|
@Service
|
|
|
public class ByteDanceAdvertisePlanServiceImpl extends ServiceImpl<ByteDanceAdvertisePlanMapper, ByteDanceAdvertisePlan> implements IByteDanceAdvertisePlanService {
|
|
|
-
|
|
|
@Autowired
|
|
|
private ByteDanceAdvertisePlanMapper byteDanceAdvertisePlanMapper;
|
|
|
-
|
|
|
@Override
|
|
|
public Map<String, Object> getAdvertiserPlan(CtopOauthToken token, String ids, String date, String updateDate) {
|
|
|
getAd(token, 1, ids, date, updateDate);
|
|
@@ -36,7 +35,7 @@ public class ByteDanceAdvertisePlanServiceImpl extends ServiceImpl<ByteDanceAdve
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
- public Map<String, Object> createAdvertiserPlan(CtopOauthToken token,String landingType, ByteDanceAdvertisePlan byteDanceAdvertisePlan) {
|
|
|
+ public Map<String, Object> createAdvertiserPlan(CtopOauthToken token, String landingType, ByteDanceAdvertisePlan byteDanceAdvertisePlan) {
|
|
|
|
|
|
Map<String, Object> resultMap = new HashMap<>();
|
|
|
//拼接访问参数
|
|
@@ -45,176 +44,222 @@ public class ByteDanceAdvertisePlanServiceImpl extends ServiceImpl<ByteDanceAdve
|
|
|
headers.put("Access-Token", token.getAccessToken());
|
|
|
|
|
|
JSONObject params = new JSONObject();
|
|
|
- params.put("advertiser_id",byteDanceAdvertisePlan.getAccountId());
|
|
|
- params.put("campaign_id",byteDanceAdvertisePlan.getCampaignId());
|
|
|
- params.put("name",byteDanceAdvertisePlan.getName());
|
|
|
- params.put("operation",byteDanceAdvertisePlan.getOperation()==null?"enable":byteDanceAdvertisePlan.getOperation());
|
|
|
- params.put("delivery_range",byteDanceAdvertisePlan.getDeliveryRange()==null?"DEFAULT":byteDanceAdvertisePlan.getDeliveryRange());
|
|
|
- params.put("union_video_type",byteDanceAdvertisePlan.getUnionVideoType()==null?"ORIGINAL_VIDEO":byteDanceAdvertisePlan.getUnionVideoType());
|
|
|
- params.put("budget_mode",byteDanceAdvertisePlan.getBudgetMode());
|
|
|
- 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("advertiser_id", byteDanceAdvertisePlan.getAccountId());
|
|
|
+ params.put("campaign_id", byteDanceAdvertisePlan.getCampaignId());
|
|
|
+ params.put("name", byteDanceAdvertisePlan.getName());
|
|
|
+ params.put("operation", byteDanceAdvertisePlan.getOperation() == null ? "enable" : byteDanceAdvertisePlan.getOperation());
|
|
|
+ params.put("delivery_range", byteDanceAdvertisePlan.getDeliveryRange() == null ? "DEFAULT" : byteDanceAdvertisePlan.getDeliveryRange());
|
|
|
+ params.put("union_video_type", byteDanceAdvertisePlan.getUnionVideoType() == null ? "ORIGINAL_VIDEO" : byteDanceAdvertisePlan.getUnionVideoType());
|
|
|
+ params.put("budget_mode", byteDanceAdvertisePlan.getBudgetMode());
|
|
|
+ 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.getString("scheduleTime"));
|
|
|
- params.put("pricing",byteDanceAdvertisePlan.getPricing());
|
|
|
- params.put("bid",byteDanceAdvertisePlan.getBid()==null?0:byteDanceAdvertisePlan.getBid());
|
|
|
- params.put("cpa_bid",byteDanceAdvertisePlan.getCpaBid()==null?0.1:byteDanceAdvertisePlan.getCpaBid());
|
|
|
- params.put("flow_control_mode",byteDanceAdvertisePlan.getFlowControlMode());
|
|
|
- if(byteDanceAdvertisePlan.getPricing().equals("OCPM")){
|
|
|
- params.put("convert_id",byteDanceAdvertisePlan.getConvertId());
|
|
|
+ if(!byteDanceAdvertisePlan.getScheduleTime().equals("")){
|
|
|
+ params.put("schedule_time",byteDanceAdvertisePlan.getScheduleTime());
|
|
|
}
|
|
|
- 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("pricing", byteDanceAdvertisePlan.getPricing());
|
|
|
+ params.put("bid", byteDanceAdvertisePlan.getBid());
|
|
|
+ params.put("cpa_bid", byteDanceAdvertisePlan.getCpaBid());
|
|
|
+ params.put("flow_control_mode", byteDanceAdvertisePlan.getFlowControlMode());
|
|
|
+ if (byteDanceAdvertisePlan.getPricing().equals("PRICING_OCPM")) {
|
|
|
+ if(byteDanceAdvertisePlan.getConvertId()!=null){
|
|
|
+ //查询必填参数convert_id
|
|
|
+ params.put("convert_id", byteDanceAdvertisePlan.getConvertId());
|
|
|
+ }else{
|
|
|
+ int convertId=getConvertIdByExternalAction(byteDanceAdvertisePlan.getExternalAction());
|
|
|
+ params.put("convert_id",convertId);
|
|
|
+ byteDanceAdvertisePlan.setConvertId((long) convertId);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ 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("unique_fk",byteDanceAdvertisePlan.getUniqueFk")==null?"":byteDanceAdvertisePlan.getString("uniqueFk"));
|
|
|
//params.put("smart_bid_type",byteDanceAdvertisePlan.getSmartBidType")==null?"":byteDanceAdvertisePlan.getString("smartBidType"));
|
|
|
- params.put("adjust_cpa",0);
|
|
|
+ params.put("adjust_cpa", 0);
|
|
|
+ //暂时不需要定向包id
|
|
|
//params.put("audience_package_id",byteDanceAdvertisePlan.getLong("audiencePackageId"));
|
|
|
- params.put("open_url",byteDanceAdvertisePlan.getOpenUrl());
|
|
|
+ if(byteDanceAdvertisePlan.getUseOpenUrl().equals("YES")){
|
|
|
+ params.put("open_url", byteDanceAdvertisePlan.getOpenUrl());
|
|
|
+ }
|
|
|
//判断推广目的
|
|
|
- if(landingType.equals("Link")){
|
|
|
- params.put("external_url",byteDanceAdvertisePlan.getExternalUrl());
|
|
|
+ if (landingType.equals("LINK")) {
|
|
|
+ params.put("external_url", byteDanceAdvertisePlan.getExternalUrl());
|
|
|
}
|
|
|
- if(landingType.equals("APP")){
|
|
|
- params.put("download_type",byteDanceAdvertisePlan.getExternalUrl());
|
|
|
-
|
|
|
+ if (landingType.equals("APP")) {
|
|
|
+ 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_create"), params, headers));
|
|
|
- if (jsonObject.getInteger("code") != 0) {
|
|
|
+
|
|
|
+ //公共参数--受众相关
|
|
|
+ params.put("retargeting_tags_include", byteDanceAdvertisePlan.getRetargetingTags());
|
|
|
+ params.put("retargeting_tags_exclude", byteDanceAdvertisePlan.getRetargetingTagsExclude());
|
|
|
+ params.put("gender", byteDanceAdvertisePlan.getGender());
|
|
|
+ params.put("age", byteDanceAdvertisePlan.getAge());
|
|
|
+ params.put("carrier", byteDanceAdvertisePlan.getCarrier());
|
|
|
+ params.put("ac", byteDanceAdvertisePlan.getAc());
|
|
|
+ params.put("device_brand", byteDanceAdvertisePlan.getDeviceBrand());
|
|
|
+ params.put("article_category", byteDanceAdvertisePlan.getArticleCategory());
|
|
|
+ params.put("activate_type", byteDanceAdvertisePlan.getActivateType());
|
|
|
+ params.put("city", byteDanceAdvertisePlan.getCity());
|
|
|
+ params.put("business_ids", byteDanceAdvertisePlan.getBusinessIds());
|
|
|
+ params.put("location_type", byteDanceAdvertisePlan.getLocationType());
|
|
|
+ params.put("superior_popularity_type", byteDanceAdvertisePlan.getSuperiorPopularityType());
|
|
|
+ params.put("flow_package", byteDanceAdvertisePlan.getFlowPackage());
|
|
|
+ params.put("exclude_flow_package", byteDanceAdvertisePlan.getExcludeFlowPackage());
|
|
|
+ params.put("device_type", byteDanceAdvertisePlan.getDeviceType());
|
|
|
+ params.put("auto_extend_enabled", byteDanceAdvertisePlan.getAutoExtendEnabled());
|
|
|
+ params.put("launch_price", byteDanceAdvertisePlan.getLaunchPrice());
|
|
|
+ params.put("interest_action_mode", byteDanceAdvertisePlan.getInterestActionMode());
|
|
|
+ params.put("action_scene", byteDanceAdvertisePlan.getActionScene());
|
|
|
+ params.put("action_days", byteDanceAdvertisePlan.getActionDays());
|
|
|
+ params.put("action_categories", byteDanceAdvertisePlan.getActionCategories());
|
|
|
+ params.put("action_words", byteDanceAdvertisePlan.getActionWords());
|
|
|
+ params.put("interest_categories", byteDanceAdvertisePlan.getInterestWords());
|
|
|
+ params.put("interest_words", byteDanceAdvertisePlan.getGeolocation());
|
|
|
+
|
|
|
+ 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);
|
|
|
+ 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", -1);
|
|
|
+ resultMap.put("code",-200);
|
|
|
resultMap.put("message", jsonObject.getString("message"));
|
|
|
- return resultMap;
|
|
|
}
|
|
|
- resultMap.put("code", 0);
|
|
|
- resultMap.put("message", "广告组状态修改成功");
|
|
|
return resultMap;
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
- public Map<String, Object> updateAdvertiserPlan(CtopOauthToken token,String landingType, ByteDanceAdvertisePlan byteDanceAdvertisePlan) {
|
|
|
+ public Map<String, Object> updateAdvertiserPlan(CtopOauthToken token, String landingType, ByteDanceAdvertisePlan byteDanceAdvertisePlan) {
|
|
|
|
|
|
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.getString("scheduleTime"));
|
|
|
- params.put("bid",byteDanceAdvertisePlan.getBid()==null?0:byteDanceAdvertisePlan.getBid());
|
|
|
- params.put("cpa_bid",byteDanceAdvertisePlan.getCpaBid()==null?0.1:byteDanceAdvertisePlan.getCpaBid());
|
|
|
- params.put("flow_control_mode",byteDanceAdvertisePlan.getFlowControlMode());
|
|
|
- if(byteDanceAdvertisePlan.getPricing().equals("OCPM")){
|
|
|
- params.put("convert_id",byteDanceAdvertisePlan.getConvertId());
|
|
|
+ //查询记录,获取修改时间等字段
|
|
|
+ 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("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());
|
|
|
}
|
|
|
- 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("external_url",byteDanceAdvertisePlan.getExternalUrl());
|
|
|
+ if (landingType.equals("APP")) {
|
|
|
+ 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", "广告组状态修改成功");
|
|
|
}
|
|
|
- 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;
|
|
|
- }
|
|
|
- resultMap.put("code", 0);
|
|
|
- resultMap.put("message", "广告组状态修改成功");
|
|
|
return resultMap;
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
- public Map<String, Object> updateAdvertiserPlanStatus(CtopOauthToken token, String adIds, String optStatus) {
|
|
|
- JSONArray ids = new JSONArray();
|
|
|
- String[] getIds = adIds.split(StringUtils.COMMA);
|
|
|
- if (getIds.length > 0) {
|
|
|
- for (String getId : getIds) {
|
|
|
- ids.add(Long.parseLong(getId));
|
|
|
- }
|
|
|
- }
|
|
|
- //2: 根据token以及用户id获取用户信息数据
|
|
|
- String url = PropertiesUtils.getValue("bytedance_config", "bytedance_api_url") + PropertiesUtils.getValue("bytedance_config", "bytedance_v2_ad_update_status");
|
|
|
+ public Map<String, Object> updateAdvertiserPlanStatus(CtopOauthToken token, JSONArray adIds, String optStatus) {
|
|
|
+
|
|
|
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", ids.toJSONString());
|
|
|
+ params.put("ad_ids", adIds.toJSONString());
|
|
|
params.put("opt_status", optStatus);
|
|
|
- String result = HttpUtils.httpPostRequest(url, params, headers);
|
|
|
+ String result = HttpUtils.httpPostRequest(PropertiesUtils.getValue("bytedance_config", "bytedance_api_url") + PropertiesUtils.getValue("bytedance_config", "bytedance_v2_ad_update_status"), params, headers);
|
|
|
JSONObject jsonObject = JSONObject.parseObject(result);
|
|
|
int code = jsonObject.getInteger("code");
|
|
|
Map<String, Object> resultMap = new HashMap<>();
|
|
|
if (code != 0) {
|
|
|
log.error("广告计划更新状态接口异常==》accountId:{},message:{}", token.getAccountId(), jsonObject.getString("message"));
|
|
|
resultMap.put("code", -1);
|
|
|
- resultMap.put("message", "广告计划更新状态接口异常");
|
|
|
- return resultMap;
|
|
|
- }
|
|
|
- JSONObject data = jsonObject.getJSONObject("data");
|
|
|
- if (null == data) {
|
|
|
- log.info("广告计划更新状态异常==》accountId:{},message:{}", token.getAccountId(), jsonObject.getString("message"));
|
|
|
- resultMap.put("code", -1);
|
|
|
resultMap.put("message", jsonObject.getString("message"));
|
|
|
return resultMap;
|
|
|
}
|
|
|
- JSONArray getAdIds = data.getJSONArray("ad_ids");
|
|
|
- if (null != getAdIds && !getAdIds.isEmpty()) {
|
|
|
- //获取广告计划信息
|
|
|
- getAdvertiserPlan(token, adIds, null, null);
|
|
|
- }
|
|
|
resultMap.put("code", 0);
|
|
|
resultMap.put("message", "广告组状态修改成功");
|
|
|
return resultMap;
|
|
|
}
|
|
|
|
|
|
- public Map<String, Object> updateAdvertiserPlanBudget(CtopOauthToken token, String adIds, String budgets) {
|
|
|
+ @Override
|
|
|
+ public Map<String, Object> updateAdvertiserPlanBudget(CtopOauthToken token, JSONArray adIds, JSONArray budgets) {
|
|
|
JSONArray data = new JSONArray();
|
|
|
- String[] getadIds = adIds.split(StringUtils.COMMA);
|
|
|
- String[] getBudgets = budgets.split(StringUtils.COMMA);
|
|
|
- if (getadIds.length > 0) {
|
|
|
- for (int i = 0; i < getadIds.length; i++) {
|
|
|
+ if (adIds.size() > 0) {
|
|
|
+ for (int i = 0; i < adIds.size(); i++) {
|
|
|
JSONObject object = new JSONObject();
|
|
|
- Long adId = Long.parseLong(getadIds[i]);
|
|
|
- Long budget = Long.parseLong(getBudgets[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);
|
|
|
}
|
|
|
}
|
|
|
- //2: 根据token以及用户id获取用户信息数据
|
|
|
- String url = PropertiesUtils.getValue("bytedance_config", "bytedance_api_url") + PropertiesUtils.getValue("bytedance_config", "bytedance_v2_ad_update_budget");
|
|
|
Map<String, String> headers = new HashMap<>();
|
|
|
headers.put("Content-Type", "application/json");
|
|
|
headers.put("Access-Token", token.getAccessToken());
|
|
@@ -222,50 +267,35 @@ public class ByteDanceAdvertisePlanServiceImpl extends ServiceImpl<ByteDanceAdve
|
|
|
JSONObject params = new JSONObject();
|
|
|
params.put("advertiser_id", token.getAccountId());
|
|
|
params.put("data", data.toJSONString());
|
|
|
- String result = HttpUtils.httpPostRequest(url, params, headers);
|
|
|
+ String result = HttpUtils.httpPostRequest(PropertiesUtils.getValue("bytedance_config", "bytedance_api_url") + PropertiesUtils.getValue("bytedance_config", "bytedance_v2_ad_update_budget"), params, headers);
|
|
|
JSONObject jsonObject = JSONObject.parseObject(result);
|
|
|
Map<String, Object> resultMap = new HashMap<>();
|
|
|
- Integer code = jsonObject.getInteger("code");
|
|
|
- if (null == code || !code.equals(0)) {
|
|
|
+ int code = jsonObject.getInteger("code");
|
|
|
+ if (code!=0) {
|
|
|
log.info("修改计划预算接口异常==》accountId:{},message:{}", token.getAccountId(), jsonObject.getString("message"));
|
|
|
resultMap.put("code", -1);
|
|
|
resultMap.put("message", jsonObject.getString("message"));
|
|
|
return resultMap;
|
|
|
}
|
|
|
- JSONObject getData = jsonObject.getJSONObject("data");
|
|
|
- if (null == getData) {
|
|
|
- log.info("修改计划预算异常==》accountId:{},message:{}", token.getAccountId(), jsonObject.getString("message"));
|
|
|
- resultMap.put("code", -1);
|
|
|
- resultMap.put("message", jsonObject.getString("message"));
|
|
|
- return resultMap;
|
|
|
- }
|
|
|
- JSONArray getAdIds = getData.getJSONArray("ad_ids");
|
|
|
- if (null != getAdIds && !getAdIds.isEmpty()) {
|
|
|
- //获取广告计划信息
|
|
|
- getAdvertiserPlan(token, adIds, null, null);
|
|
|
- }
|
|
|
resultMap.put("code", 0);
|
|
|
resultMap.put("message", "修改计划预算成功");
|
|
|
return resultMap;
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
- public Map<String, Object> updateAdvertiserPlanBid(CtopOauthToken token, String adIds, String bids) {
|
|
|
- String[] getadIds = adIds.split(StringUtils.COMMA);
|
|
|
- String[] getBids = bids.split(StringUtils.COMMA);
|
|
|
+ public Map<String, Object> updateAdvertiserPlanBid(CtopOauthToken token, JSONArray adIds, JSONArray bids) {
|
|
|
JSONArray data = new JSONArray();
|
|
|
- if (getadIds.length > 0) {
|
|
|
- for (int i = 0; i < getadIds.length; i++) {
|
|
|
+ if (adIds.size() > 0) {
|
|
|
+ for (int i = 0; i < adIds.size(); i++) {
|
|
|
JSONObject object = new JSONObject();
|
|
|
- Long adId = Long.parseLong(getadIds[i]);
|
|
|
- Long bid = Long.parseLong(getBids[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);
|
|
|
}
|
|
|
}
|
|
|
//2: 根据token以及用户id获取用户信息数据
|
|
|
- String url = PropertiesUtils.getValue("bytedance_config", "bytedance_api_url") + PropertiesUtils.getValue("bytedance_config", "bytedance_v2_ad_update_bid");
|
|
|
Map<String, String> headers = new HashMap<>();
|
|
|
headers.put("Content-Type", "application/json");
|
|
|
headers.put("Access-Token", token.getAccessToken());
|
|
@@ -273,8 +303,7 @@ public class ByteDanceAdvertisePlanServiceImpl extends ServiceImpl<ByteDanceAdve
|
|
|
JSONObject params = new JSONObject();
|
|
|
params.put("advertiser_id", token.getAccountId());
|
|
|
params.put("data", data.toJSONString());
|
|
|
- String result = HttpUtils.httpPostRequest(url, params, headers);
|
|
|
- JSONObject jsonObject = JSONObject.parseObject(result);
|
|
|
+ JSONObject jsonObject = JSONObject.parseObject(HttpUtils.httpPostRequest(PropertiesUtils.getValue("bytedance_config", "bytedance_api_url") + PropertiesUtils.getValue("bytedance_config", "bytedance_v2_ad_update_bid"), params, headers));
|
|
|
int code = jsonObject.getInteger("code");
|
|
|
Map<String, Object> resultMap = new HashMap<>();
|
|
|
if (code != 0) {
|
|
@@ -283,18 +312,6 @@ public class ByteDanceAdvertisePlanServiceImpl extends ServiceImpl<ByteDanceAdve
|
|
|
resultMap.put("message", jsonObject.getString("message"));
|
|
|
return resultMap;
|
|
|
}
|
|
|
- JSONObject getData = jsonObject.getJSONObject("data");
|
|
|
- if (null == getData) {
|
|
|
- log.info("修改计划出价异常==》accountId:{},message:{}", token.getAccountId(), jsonObject.getString("message"));
|
|
|
- resultMap.put("code", -1);
|
|
|
- resultMap.put("message", jsonObject.getString("message"));
|
|
|
- return resultMap;
|
|
|
- }
|
|
|
- JSONArray getAdIds = getData.getJSONArray("ad_ids");
|
|
|
- if (null != getAdIds && !getAdIds.isEmpty()) {
|
|
|
- //获取广告计划信息
|
|
|
- getAdvertiserPlan(token, adIds, null, null);
|
|
|
- }
|
|
|
resultMap.put("code", 0);
|
|
|
resultMap.put("message", "修改计划出价成功");
|
|
|
return resultMap;
|
|
@@ -310,16 +327,16 @@ public class ByteDanceAdvertisePlanServiceImpl extends ServiceImpl<ByteDanceAdve
|
|
|
headers.put("Content-Type", "application/json");
|
|
|
headers.put("Access-Token", token.getAccessToken());
|
|
|
|
|
|
- JSONObject params=new JSONObject();
|
|
|
- params.put("advertiser_id",advertiserId);
|
|
|
- params.put("ad_ids",adIds);
|
|
|
+ JSONObject params = new JSONObject();
|
|
|
+ params.put("advertiser_id", advertiserId);
|
|
|
+ params.put("ad_ids", adIds);
|
|
|
String result = HttpUtils.httpPostRequest(url, params, headers);
|
|
|
JSONObject jsonObject = JSONObject.parseObject(result);
|
|
|
int code = jsonObject.getInteger("code");
|
|
|
- if(code!=0){
|
|
|
+ if (code != 0) {
|
|
|
log.info("获取计划审核建议接口异常==》accountId:{},message:{}", token.getAccountId(), jsonObject.getString("message"));
|
|
|
resultMap.put("code", -1);
|
|
|
- resultMap.put("message",jsonObject.getString("message"));
|
|
|
+ resultMap.put("message", jsonObject.getString("message"));
|
|
|
return resultMap;
|
|
|
}
|
|
|
resultMap.put("code", 0);
|
|
@@ -391,5 +408,50 @@ 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) {
|
|
|
+ case "AD_CONVERT_TYPE_DOWNLOAD_FINISH":
|
|
|
+ result = 4;
|
|
|
+ break;
|
|
|
+ case "AD_CONVERT_TYPE_BUTTON":
|
|
|
+ result = 5;
|
|
|
+ break;
|
|
|
+ case "AD_CONVERT_TYPE_DOWNLOAD_START":
|
|
|
+ result = 9;
|
|
|
+ break;
|
|
|
+ case "AD_CONVERT_TYPE_INSTALL_FINISH":
|
|
|
+ result = 15;
|
|
|
+ break;
|
|
|
+ case "AD_CONVERT_TYPE_REDIRECT":
|
|
|
+ result = 95;
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ return result;
|
|
|
+ }
|
|
|
|
|
|
}
|