Selaa lähdekoodia

获取人群预估数量接口

zhouzeyu@c-top.com.cn 3 vuotta sitten
vanhempi
commit
f245415bef

+ 127 - 0
jeecg-boot-module-system/src/main/java/cn/com/ctop/kuaishou/modules/clean/controller/EstimatePepoleNumberController.java

@@ -0,0 +1,127 @@
+package cn.com.ctop.kuaishou.modules.clean.controller;
+
+import cn.com.ctop.common.module.entity.CtopOauthToken;
+import cn.com.ctop.common.module.mapper.CtopOauthTokenMapper;
+import com.alibaba.fastjson.JSONObject;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.http.client.ClientProtocolException;
+import org.apache.http.client.methods.CloseableHttpResponse;
+import org.apache.http.client.methods.HttpEntityEnclosingRequestBase;
+import org.apache.http.entity.ContentType;
+import org.apache.http.entity.StringEntity;
+import org.apache.http.impl.client.CloseableHttpClient;
+import org.apache.http.impl.client.HttpClientBuilder;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import javax.annotation.Resource;
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.io.InputStreamReader;
+import java.net.URI;
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ * @Description: 快手-账户清理
+ * @Author: zzy
+ * @Date: 2021-07-20
+ * @Version: V1.0
+ */
+@RestController
+@RequestMapping("/estimatePepoleNumber")
+@Slf4j
+public class EstimatePepoleNumberController {
+
+    private final String OPEN_API_URL_PREFIX = "https://ad.e.kuaishou.com/rest/openapi/v1/";
+    private final String ACCOUNT_LIST_URL = "tool/audience/prediction";
+
+    @Resource
+    CtopOauthTokenMapper ctopOauthTokenMapper;
+
+
+    /**
+     * 获取人群预估数量
+     *
+     * @param map
+     * @return
+     */
+    @PostMapping("/getCount")
+    public JSONObject getCount(@RequestBody HashMap map) {
+        return sendHttpRequest(map, ACCOUNT_LIST_URL, String.valueOf(map.get("advertiser_id")));
+    }
+
+    /**
+     * 根据地址请求巨量殷勤,返回响应结果
+     *
+     * @author zzy
+     * @Param data 请求参数    apiUrl请求路径
+     * @create: 2021-07-14
+     */
+    public JSONObject sendHttpRequest(Map data, String apiUrl, String accountId) {
+        String access_token = getToken(accountId);
+        // 构造请求
+        HttpEntityEnclosingRequestBase httpEntity = new HttpEntityEnclosingRequestBase() {
+            @Override
+            public String getMethod() {
+                return "POST";
+            }
+        };
+
+        httpEntity.setHeader("Access-Token", access_token);
+
+        CloseableHttpResponse response = null;
+        CloseableHttpClient client = null;
+
+        try {
+            client = HttpClientBuilder.create().build();
+            httpEntity.setURI(URI.create(OPEN_API_URL_PREFIX + apiUrl));
+            httpEntity.setEntity(new StringEntity(JSONObject.toJSONString(data), ContentType.APPLICATION_JSON));
+
+            response = client.execute(httpEntity);
+            if (response != null && response.getStatusLine().getStatusCode() == 200) {
+                BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(response.getEntity().getContent()));
+                StringBuffer result = new StringBuffer();
+                String line = "";
+                while ((line = bufferedReader.readLine()) != null) {
+                    result.append(line);
+                }
+                bufferedReader.close();
+                return JSONObject.parseObject(result.toString());
+            }
+
+        } catch (ClientProtocolException e) {
+            e.printStackTrace();
+        } catch (IOException e) {
+            e.printStackTrace();
+        } finally {
+            try {
+                if (response != null) {
+                    response.close();
+                }
+                client.close();
+            } catch (IOException e) {
+                e.printStackTrace();
+            }
+        }
+        return null;
+    }
+
+    /**
+     * 获取token
+     *
+     * @author zzy
+     * @create: 2021-07-14
+     */
+    public String getToken(String accountId) {
+        CtopOauthToken ctopOauthToken = ctopOauthTokenMapper.selectByAccountId(Long.parseLong(accountId));
+        if (ctopOauthToken != null) {
+            return ctopOauthToken.getAccessToken();
+        } else {
+            log.info("未查询到Token");
+            return null;
+        }
+    }
+}