Bläddra i källkod

百度平台回传

chenbiao 2 år sedan
förälder
incheckning
7599cfc20b

+ 6 - 1
netflix-dao/src/main/java/com/cyksj/model/entity/OrderDonPost.java

@@ -68,7 +68,12 @@ public class OrderDonPost extends BaseEntity implements Serializable {
         /**
          * 360点睛
          */
-        DJ("360点睛", "dj","ORDER")
+        DJ("360点睛", "dj","ORDER"),
+
+        /**
+         * 百度
+         */
+        BaiDu("百度回传", "BaiDu", "26"),
 
         ;
 

+ 46 - 0
netflix-dao/src/main/java/com/cyksj/model/request/BaiDuConversionType.java

@@ -0,0 +1,46 @@
+package com.cyksj.model.request;
+
+import org.apache.commons.lang3.builder.ToStringBuilder;
+import org.apache.commons.lang3.builder.ToStringStyle;
+
+import java.io.Serializable;
+
+/**
+ * @author chan
+ * @className BaiDuConversionType
+ * @description 百度数据回传对象
+ * @date 2021/2/22 3:53 下午
+ */
+public class BaiDuConversionType implements Serializable {
+    /*
+       落地页Url
+    */
+    private String logidUrl;
+
+    /*
+        转化类型
+     */
+
+    private Integer newType;
+
+    public String getLogidUrl() {
+        return logidUrl;
+    }
+
+    public void setLogidUrl(String logidUrl) {
+        this.logidUrl = logidUrl;
+    }
+
+    public Integer getNewType() {
+        return newType;
+    }
+
+    public void setNewType(Integer newType) {
+        this.newType = newType;
+    }
+
+    @Override
+    public String toString() {
+        return ToStringBuilder.reflectionToString(this, ToStringStyle.SHORT_PREFIX_STYLE);
+    }
+}

+ 90 - 0
netflix-service/src/main/java/com/cyksj/service/order/post/impl/BaiDuPostDataService.java

@@ -0,0 +1,90 @@
+package com.cyksj.service.order.post.impl;
+
+import cn.hutool.core.net.URLDecoder;
+import com.cyksj.common.util.IoKit;
+import com.cyksj.common.util.J11HttpC;
+import com.cyksj.common.util.Jsons;
+import com.cyksj.common.util.StringUtil;
+import com.cyksj.mapper.order.OrderDonPostMapper;
+import com.cyksj.model.request.BaiDuConversionType;
+import com.cyksj.service.order.post.AbstractPostDataService;
+import com.cyksj.service.order.post.PostDataFactory;
+import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Service;
+
+import javax.annotation.PostConstruct;
+import java.net.http.HttpRequest;
+import java.net.http.HttpResponse;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @author chan
+ * @className BaiDuPostDataService
+ * @description 百度回传
+ * @date 2021/02/22 3:35 下午
+ */
+
+@Slf4j
+@RequiredArgsConstructor
+@Service("BaiDuPostDataService")
+public class BaiDuPostDataService extends AbstractPostDataService {
+
+
+    private static final String TOKEN = "YIjiMWO2GFjcQDCGZTcaAztsSGXarilQ@s5heEdmxeDe4s62pCbHZLxokaCFvk5LU";
+
+    private final OrderDonPostMapper orderPostMapper;
+
+
+    private static final String BAIDU_OCPC_URL = "https://ocpc.baidu.com/ocpcapi/api/uploadConvertData";
+
+    @Override
+    public void postData(Long orderId,String callback, String evenType) throws Exception {
+        log.info("百度回传入参id:{}", orderId);
+        // 编辑一条转化数据
+        BaiDuConversionType cv = new BaiDuConversionType();
+        // 设置落地页url
+        cv.setLogidUrl(URLDecoder.decode(callback, IoKit.Charsets.UTF_8.getCharset()));
+        // 设置转化类型
+        cv.setNewType(Integer.parseInt(evenType));
+
+        List<BaiDuConversionType> baiDuConversionTypes = new ArrayList<>();
+        baiDuConversionTypes.add(cv);
+        Map<String,Object>  data = new HashMap<>(2);
+        // 设置API接口回传Token
+        data.put("token", TOKEN);
+        // 设置API接口回传conversionTypes
+        data.put("conversionTypes", baiDuConversionTypes);
+        // 发送的完整请求数据
+
+        log.info("百度回传 params:{}",data);
+        // 向百度发送数据
+        HttpResponse<byte[]> res =
+                J11HttpC.custom()
+                        .ofPost()
+                        .url(BAIDU_OCPC_URL)
+                        .headers(J11HttpC.ReqType.raw_json)
+                        .body(HttpRequest.BodyPublishers.ofString(Jsons.toJson(data), IoKit.Charsets.UTF_8.getCharset()))
+                        .send(HttpResponse.BodyHandlers.ofByteArray());
+
+        Map<String, Object> resMap = Jsons.parseObject(res.body(), Map.class);
+        log.info("百度回传:{}", resMap);
+
+        Map<String, Object> map = (Map<String, Object>) resMap.get("header");
+        if (0 == (Integer.parseInt(StringUtil.getString(map.get("status"))))) {
+            //修改记录状态
+            orderPostMapper.updateStatus(orderId);
+            log.info("回传记录修改状态");
+        }
+
+    }
+
+    @PostConstruct
+    public void init() {
+        PostDataFactory.add(this,this.getClass().getSimpleName());
+    }
+
+}