Преглед на файлове

Merge remote-tracking branch 'origin/test' into test

yumeng преди 5 години
родител
ревизия
ae2f04bc55

+ 11 - 4
jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/controller/ByteDanceAdvertiserPostController.java

@@ -15,10 +15,7 @@ import org.jeecg.common.system.vo.LoginUser;
 import org.jeecg.modules.system.entity.SysDictItem;
 import org.jeecg.modules.system.service.ISysDictItemService;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RequestMethod;
-import org.springframework.web.bind.annotation.RequestParam;
-import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.bind.annotation.*;
 
 import javax.servlet.http.HttpServletRequest;
 import java.util.Map;
@@ -116,6 +113,16 @@ public class ByteDanceAdvertiserPostController {
     }
 
     /**
+     * 7:获取广告主广告组信息
+     *
+     * @param accountId 本平台广告主id
+     */
+    @GetMapping("/advertiser/campaign/list")
+    public Map<String, Object> advertiserCampaignList(String accountId) {
+        return advertiserDataService.getAdvertiserCampaignList(accountId);
+    }
+
+    /**
      * 8:获取广告主广告创意信息
      * @param accountId 本平台广告主id
      */

+ 36 - 32
jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/service/impl/CreateInternalServiceImpl.java

@@ -211,6 +211,7 @@ public class CreateInternalServiceImpl implements ICreateInternalService {
         //1:获取用户名密码
         Long accountId = requestJson.getLong("accountId");
         Long userOrientationId = requestJson.getLong("userOrientationId");
+        String campaignId = requestJson.getString("campaignId");
         BindAccountLogin bindAccountLogin = bindAccountLoginService.selectByAccountId(accountId + "");
         if (null == bindAccountLogin) {
             ResultMapUtils.setResultMap(resultMap, StatusCode.ACCOUNT_HAS_NOT_EXIST.getCode());
@@ -302,49 +303,52 @@ public class CreateInternalServiceImpl implements ICreateInternalService {
                 //登录成功 进入推广页面
                 webDriver.get("https://ad.oceanengine.com/pages/promotion.html#/ad");
                 Thread.sleep(3000);
-                //创建广告组页面
-                webDriver.get("https://ad.oceanengine.com/pages/campaign/create.html");
                 String templateName = requestJson.getString("templateName");
-                Map<String, Object> campaignParam = new HashMap<>();
                 String uuid = UUID.randomUUID().toString();
-                campaignParam.put("campaign_id", "");
-                campaignParam.put("campaign_name", templateName + "-广告组-" + uuid.substring(1, 7));
-                campaignParam.put("landing_type", 3);
-                campaignParam.put("campaign_type", 1);
-                Map<String, Object> budgetMap = new HashMap<>();
-                budgetMap.put("budget", 0);
-                budgetMap.put("budget_mode", -1);
-                campaignParam.put("budget", budgetMap);
-                for (Cookie cookie : webDriver.manage().getCookies()) {
-                    if ("csrftoken".equals(cookie.getName())) {
-                        csrftoken = cookie.getValue();
+                if (null == campaignId || campaignId.equals("")) {
+                    //创建广告组页面
+                    webDriver.get("https://ad.oceanengine.com/pages/campaign/create.html");
+                    Map<String, Object> campaignParam = new HashMap<>();
+                    campaignParam.put("campaign_id", "");
+                    campaignParam.put("campaign_name", templateName + "-广告组-" + uuid.substring(1, 7));
+                    campaignParam.put("landing_type", 3);
+                    campaignParam.put("campaign_type", 1);
+                    Map<String, Object> budgetMap = new HashMap<>();
+                    budgetMap.put("budget", 0);
+                    budgetMap.put("budget_mode", -1);
+                    campaignParam.put("budget", budgetMap);
+                    for (Cookie cookie : webDriver.manage().getCookies()) {
+                        if ("csrftoken".equals(cookie.getName())) {
+                            csrftoken = cookie.getValue();
+                        }
+                        BasicClientCookie ck = new BasicClientCookie(cookie.getName(), cookie.getValue());
+                        ck.setDomain("ad.oceanengine.com");
+                        ck.setExpiryDate(cookie.getExpiry());
+                        ck.setPath(cookie.getPath());
+                        HttpUtils2.cookieStore.addCookie(ck);
                     }
-                    BasicClientCookie ck = new BasicClientCookie(cookie.getName(), cookie.getValue());
-                    ck.setDomain("ad.oceanengine.com");
-                    ck.setExpiryDate(cookie.getExpiry());
-                    ck.setPath(cookie.getPath());
-                    HttpUtils2.cookieStore.addCookie(ck);
+
+                    header.put("Accept", "application/json, text/javascript, */*; q=0.01");
+                    header.put("Connection", "keep-alive");
+                    header.put("Host", "ad.oceanengine.com");
+                    header.put("Content-Type", "application/json");
+                    header.put("Origin", "https://ad.oceanengine.com");
+                    header.put("X-CSRFToken", csrftoken);
+                    header.put("X-Requested-With", "XMLHttpRequest");
+                    header.put("Referer", "https://ad.oceanengine.com/pages/campaign/create.html");
+                    // 创建广告组返回信息
+                    res = HttpUtils2.httpPostRequest("https://ad.oceanengine.com/overture/campaign/create/", campaignParam, header);
+                    JsonNode node = mapper.readTree(res);
+                    campaignId = node.get("data").get("campaign_id").asText();
+                    System.out.println(res);
                 }
 
-                header.put("Accept", "application/json, text/javascript, */*; q=0.01");
-                header.put("Connection", "keep-alive");
-                header.put("Host", "ad.oceanengine.com");
-                header.put("Content-Type", "application/json");
-                header.put("Origin", "https://ad.oceanengine.com");
-                header.put("X-CSRFToken", csrftoken);
-                header.put("X-Requested-With", "XMLHttpRequest");
-                header.put("Referer", "https://ad.oceanengine.com/pages/campaign/create.html");
-                // 创建广告组返回信息
-                res = HttpUtils2.httpPostRequest("https://ad.oceanengine.com/overture/campaign/create/", campaignParam, header);
-                System.out.println(res);
                 Integer itratorNum = requestJson.getInteger("itratorNum");
                 JSONObject data = new JSONObject();
                 if (null != itratorNum && itratorNum > 0) {
                     //循环创建广告计划
                     for (int i = 0; i < itratorNum; i++) {
-                        JsonNode node = mapper.readTree(res);
                         //广告组id
-                        String campaignId = node.get("data").get("campaign_id").asText();
                         String url2 = "https://ad.oceanengine.com/pages/ad/create.html?campaign_id=" + campaignId + "&landing_type=3&temp_id=ADvQb";
                         webDriver.get(url2);
                         header.put("Referer", url2);

+ 2 - 0
module-toutiao/src/main/java/cn/com/ctop/toutiao/service/IByteDanceAdvertiserDataService.java

@@ -43,4 +43,6 @@ public interface IByteDanceAdvertiserDataService {
     JSONObject setUserOrentationData(JSONObject data, ByteDanceUserOrientationTemplate template, Long adId, JSONObject requestJson);
 
     JSONObject setUserOrentationData(JSONObject data, ByteDanceUserOrientationTemplate template);
+
+    Map<String, Object> getAdvertiserCampaignList(String accountId);
 }

+ 36 - 0
module-toutiao/src/main/java/cn/com/ctop/toutiao/service/impl/ByteDanceAdvertiserDataServiceImpl.java

@@ -2,6 +2,8 @@ package cn.com.ctop.toutiao.service.impl;
 
 import cn.com.ctop.common.module.utils.HttpUtils;
 import cn.com.ctop.common.module.utils.PropertiesUtils;
+import cn.com.ctop.common.module.utils.ResultMapUtils;
+import cn.com.ctop.common.module.utils.StatusCode;
 import cn.com.ctop.toutiao.entity.*;
 import cn.com.ctop.toutiao.mapper.*;
 import cn.com.ctop.toutiao.service.IByteDanceAdvertisePlanService;
@@ -769,6 +771,40 @@ public class ByteDanceAdvertiserDataServiceImpl implements IByteDanceAdvertiserD
         return data;
     }
 
+    @Override
+    public Map<String, Object> getAdvertiserCampaignList(String accountId) {
+        Map<String, Object> resultMap = new HashMap<>();
+        CtopOauthToken cTopOauthToken = tokenService.getOauthTokenByAccountId(accountId);
+        String url = PropertiesUtils.getValue("bytedance_config", "bytedance_api_url") + PropertiesUtils.getValue("bytedance_config", "bytedance_v2_campaign_get");
+        Map<String, String> headers = new HashMap<>();
+        headers.put("Content-Type", "application/json");
+        headers.put("Access-Token", cTopOauthToken.getAccessToken());
+
+        TreeMap<String, Object> params = new TreeMap<>();
+        params.put("advertiser_id", cTopOauthToken.getAccountId());
+        params.put("page", 1);
+        String result = HttpUtils.httpGetRequest(url, headers, params);
+        JSONObject jsonObject = JSONObject.parseObject(result);
+        Integer code = jsonObject.getInteger("code");
+
+        if (null == code || !code.equals(0)) {
+            log.error("获取广告组信息接口异常==》accountId:{},message:{}", accountId, jsonObject.getString("message"));
+            resultMap.put("code", code);
+            resultMap.put("message", jsonObject.getString("message"));
+            return resultMap;
+        }
+        JSONArray data = jsonObject.getJSONObject("data").getJSONArray("list");
+        if (null == data || data.size() <= 0) {
+            log.info("获取广告组信息为空==》accountId:{},message:{}", accountId, jsonObject.getString("message"));
+            resultMap.put("code", code);
+            resultMap.put("message", "获取广告组信息为空");
+            return resultMap;
+        }
+        ResultMapUtils.setResultMap(resultMap, StatusCode.COMMON_SUCCESS.getCode());
+        resultMap.put("data", data);
+        return resultMap;
+    }
+
 
     private void getAdvertiserCreativeByPageNumber(String accountId, Integer pageNumber, String ids) {
         CtopOauthToken cTopOauthToken = tokenService.getOauthTokenByAccountId(accountId);