diff --git a/README.md b/README.md
index 7f096ee..304e1ff 100644
--- a/README.md
+++ b/README.md
@@ -1,6 +1,6 @@
## 巨量引擎开放平台 - 巨量引擎
https://open.oceanengine.com/doc/index.html?key=ad&type=api&id=1696710655781900#item-link-%E7%A4%BA%E4%BE%8B
## 百度广告投放平台检测 - 百度营销
- https://dev2.baidu.com/content?sceneType=0&pageId=101214&nodeId=662&subhead=
+ https://dev2.baidu.com/content?sceneType=0&pageId=101214&nodeId=15&subhead=
## 广电通 - 腾讯广告
https://developers.e.qq.com/docs/guide/conversion/new_version/dianjijiance
\ No newline at end of file
diff --git a/src/main/java/com/baiyee/adcallback/api/callback/BaiduMobileMonitorCallbackAPI.java b/src/main/java/com/baiyee/adcallback/api/callback/BaiduMobileMonitorCallbackAPI.java
new file mode 100644
index 0000000..bf187c3
--- /dev/null
+++ b/src/main/java/com/baiyee/adcallback/api/callback/BaiduMobileMonitorCallbackAPI.java
@@ -0,0 +1,114 @@
+package com.baiyee.adcallback.api.callback;
+
+import cn.hutool.core.util.ObjectUtil;
+import cn.hutool.core.util.StrUtil;
+import com.baiyee.adcallback.api.common.CommonResponse;
+import com.baiyee.adcallback.api.common.ResponseCode;
+import com.baiyee.adcallback.api.vo.BaiduMobileMonitorCallbackRequestVO;
+import com.baiyee.adcallback.config.pojo.BdBackdataDTO;
+import com.baiyee.adcallback.config.pojo.JlBackdataDTO;
+import com.baiyee.adcallback.config.pojo.convert.BdBackdataConvert;
+import com.baiyee.adcallback.service.AdOriginalityManageService;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.RestController;
+
+import static com.baiyee.adcallback.common.constant.JuliangConstant.IMEI_TAG;
+
+/**
+ * baidu 移动监控回调的api
+ *
+ * @author q
+ * @date 2022/01/06
+ * @see
+ */
+@RestController
+@RequestMapping(value = ("/bd"))
+@Slf4j
+public class BaiduMobileMonitorCallbackAPI {
+
+
+
+ private final AdOriginalityManageService adOriginalityManageService;
+
+ public BaiduMobileMonitorCallbackAPI(AdOriginalityManageService adOriginalityManageService) {
+ this.adOriginalityManageService = adOriginalityManageService;
+ }
+
+
+ /**
+ * 百度链接监测
+ *
+ * 监测示例 URL - 广告主填写:
+ * http://www.test.com/notice?imei_md5={{IMEI_MD5}}&os={{OS}}&ip={{IP}}&ua={{UA}}&ts={{TS}}&userid={{USER_ID}}&pid={{PLAN_ID}}&uid={{UNIT_ID}}&aid={{IDEA_ID}}&click_id={{CLICK_ID}}&callback_url={{CALLBACK_URL}}
+ *
+ */
+ @RequestMapping(value = "/monitor")
+ public CommonResponse baiduMonitorUrlCallbackReqUrl(
+ @RequestParam(value = "userid", defaultValue = "") String userId,
+ @RequestParam(value = "aid", defaultValue = "") String aid,
+ @RequestParam(value = "pid", defaultValue = "") String pid,
+ @RequestParam(value = "uid", defaultValue = "") String uid,
+ @RequestParam(value = "callback_url", defaultValue = "") String callbackUrl,
+ @RequestParam(value = "click_id", defaultValue = "") String clickId,
+ @RequestParam(value = "idfa", defaultValue = "") String idfa,
+ @RequestParam(value = "imei_md5", defaultValue = "") String imei,
+ @RequestParam(value = "oaid", defaultValue = "") String oaid,
+ @RequestParam(value = "mac", defaultValue = "") String mac,
+ @RequestParam(value = "ip", defaultValue = "") String ip,
+ @RequestParam(value = "os", defaultValue = "") String os,
+ @RequestParam(value = "TIMESTAMP", defaultValue = "") Long ts,
+ @RequestParam(value = "device_info", defaultValue = "") String deviceInfo,
+ @RequestParam(value = "interactionsType", defaultValue = "") String interactionsType,
+ @RequestParam(value = "ext_info", defaultValue = "") String extInfo,
+ @RequestParam(value = "callType", defaultValue = "") String callType
+
+ ) {
+ BaiduMobileMonitorCallbackRequestVO vo = new BaiduMobileMonitorCallbackRequestVO(
+ userId,aid,pid,uid,callbackUrl,clickId,idfa,imei,oaid,mac,ip,os,ts,deviceInfo,interactionsType,extInfo,callType
+ );
+
+ if (ObjectUtil.isNull(vo)) {
+ return CommonResponse.createByErrorMessage(ResponseCode.EMPTY_ARGUMENT.getDesc());
+ }
+ // 请求过滤规则,过滤掉不用的数据
+ if (preRuleForReq(vo)){
+ log.error("================================= [not right imei data ,{} ] =================================",vo);
+ return CommonResponse.createBySuccess();
+ }
+
+ log.info("================================= [one request comming, BaiduMobileMonitorCallbackAPI|baiduMonitorUrlCallbackReqUrl, vo is {} ] =================================", vo);
+
+ BdBackdataDTO bdBackdataDTO = new BdBackdataDTO();
+ BdBackdataConvert.voCovertToDTO(vo, bdBackdataDTO);
+
+ adOriginalityManageService.handleMonitorUrlCallbackDataThenSave();
+
+ return CommonResponse.createBySuccess();
+ }
+
+ /**
+ * 之前的规则要求
+ *
+ * @return boolean
+ */
+ private boolean preRuleForReq(BaiduMobileMonitorCallbackRequestVO vo) {
+
+ String imei = vo.getImeiMd5();
+ if (StrUtil.isBlank(imei)){
+ return Boolean.TRUE;
+ }
+
+ if (StrUtil.isNotBlank(imei) && StrUtil.equalsIgnoreCase(IMEI_TAG,imei)){
+ return Boolean.TRUE;
+ }
+
+ return Boolean.FALSE;
+
+ }
+
+
+
+
+}
diff --git a/src/main/java/com/baiyee/adcallback/api/callback/JuliangMobileMonitorCallbackAPI.java b/src/main/java/com/baiyee/adcallback/api/callback/JuliangMobileMonitorCallbackAPI.java
index c785f27..7d02237 100644
--- a/src/main/java/com/baiyee/adcallback/api/callback/JuliangMobileMonitorCallbackAPI.java
+++ b/src/main/java/com/baiyee/adcallback/api/callback/JuliangMobileMonitorCallbackAPI.java
@@ -5,8 +5,8 @@ import cn.hutool.core.util.StrUtil;
import com.baiyee.adcallback.api.common.CommonResponse;
import com.baiyee.adcallback.api.common.ResponseCode;
import com.baiyee.adcallback.api.vo.JuliangMobileMonitorCallbackRequestVO;
-import com.baiyee.adcallback.common.pojo.JlBackdataDTO;
-import com.baiyee.adcallback.common.pojo.convert.JlBackdataConvert;
+import com.baiyee.adcallback.config.pojo.JlBackdataDTO;
+import com.baiyee.adcallback.config.pojo.convert.JlBackdataConvert;
import com.baiyee.adcallback.service.AdOriginalityManageService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.RequestMapping;
diff --git a/src/main/java/com/baiyee/adcallback/api/vo/BaiduMobileMonitorCallbackRequestVO.java b/src/main/java/com/baiyee/adcallback/api/vo/BaiduMobileMonitorCallbackRequestVO.java
new file mode 100644
index 0000000..79a9f2f
--- /dev/null
+++ b/src/main/java/com/baiyee/adcallback/api/vo/BaiduMobileMonitorCallbackRequestVO.java
@@ -0,0 +1,55 @@
+package com.baiyee.adcallback.api.vo;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * 百度移动监控调请求VO
+ *
+ * @author q
+ * @date 2022/02/10
+ */
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+public class BaiduMobileMonitorCallbackRequestVO implements Serializable {
+
+ private String userid;
+
+ private String aid;
+
+ private String pid;
+
+ private String uid;
+
+ private String callbackUrl;
+
+ private String clickId;
+
+ private String idfa;
+
+ private String imeiMd5;
+
+ private String oaid;
+
+ private String mac;
+
+ private String ip;
+
+ private String os;
+
+ private Long ts;
+
+ private String deviceInfo;
+
+ private String interactionsType;
+
+ private String extInfo;
+
+ private String callType;
+
+}
diff --git a/src/main/java/com/baiyee/adcallback/config/pojo/BdBackdataDTO.java b/src/main/java/com/baiyee/adcallback/config/pojo/BdBackdataDTO.java
new file mode 100644
index 0000000..79c0dcf
--- /dev/null
+++ b/src/main/java/com/baiyee/adcallback/config/pojo/BdBackdataDTO.java
@@ -0,0 +1,37 @@
+package com.baiyee.adcallback.config.pojo;
+
+public class BdBackdataDTO {
+ private String userid;
+
+ private String aid;
+
+ private String pid;
+
+ private String uid;
+
+ private String callbackUrl;
+
+ private String clickId;
+
+ private String idfa;
+
+ private String imeiMd5;
+
+ private String oaid;
+
+ private String mac;
+
+ private String ip;
+
+ private String os;
+
+ private Long ts;
+
+ private String deviceInfo;
+
+ private String interactionsType;
+
+ private String extInfo;
+
+ private String callType;
+}
diff --git a/src/main/java/com/baiyee/adcallback/common/pojo/JlBackdataDTO.java b/src/main/java/com/baiyee/adcallback/config/pojo/JlBackdataDTO.java
similarity index 75%
rename from src/main/java/com/baiyee/adcallback/common/pojo/JlBackdataDTO.java
rename to src/main/java/com/baiyee/adcallback/config/pojo/JlBackdataDTO.java
index e695c50..0837754 100644
--- a/src/main/java/com/baiyee/adcallback/common/pojo/JlBackdataDTO.java
+++ b/src/main/java/com/baiyee/adcallback/config/pojo/JlBackdataDTO.java
@@ -1,8 +1,5 @@
-package com.baiyee.adcallback.common.pojo;
+package com.baiyee.adcallback.config.pojo;
-import cn.hutool.core.bean.BeanUtil;
-import com.baiyee.adcallback.api.vo.JuliangMobileMonitorCallbackRequestVO;
-import com.baiyee.adcallback.repository.entity.TbJlBackdataEntity;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
diff --git a/src/main/java/com/baiyee/adcallback/config/pojo/convert/BdBackdataConvert.java b/src/main/java/com/baiyee/adcallback/config/pojo/convert/BdBackdataConvert.java
new file mode 100644
index 0000000..da40648
--- /dev/null
+++ b/src/main/java/com/baiyee/adcallback/config/pojo/convert/BdBackdataConvert.java
@@ -0,0 +1,41 @@
+package com.baiyee.adcallback.config.pojo.convert;
+
+import cn.hutool.core.bean.BeanUtil;
+import cn.hutool.core.util.ObjectUtil;
+import com.baiyee.adcallback.api.vo.BaiduMobileMonitorCallbackRequestVO;
+import com.baiyee.adcallback.config.pojo.BdBackdataDTO;
+import com.baiyee.adcallback.repository.entity.TbBdBackdataEntity;
+
+public class BdBackdataConvert {
+
+ /**
+ * 私有化构造
+ */
+ private BdBackdataConvert(){}
+
+ private static final ThreadLocal context = new ThreadLocal<>();
+
+ /**
+ * vo 转换为 dto -> 存放在当前线程上下文中
+ *
+ * @param vo 对象
+ */
+ public static void voCovertToDTO(BaiduMobileMonitorCallbackRequestVO vo, BdBackdataDTO dto) {
+ BeanUtil.copyProperties(vo, dto, true);
+ context.set(dto);
+ }
+
+ /**
+ * 转换为实体
+ *
+ * @return {@link TbBdBackdataEntity}
+ */
+ public static TbBdBackdataEntity covertToEntity(TbBdBackdataEntity entity) {
+ BdBackdataDTO bdBackdataDTO = context.get();
+ if (ObjectUtil.isNotNull(bdBackdataDTO)){
+ BeanUtil.copyProperties(bdBackdataDTO, entity, true);
+ }
+ context.remove();
+ return entity;
+ }
+}
diff --git a/src/main/java/com/baiyee/adcallback/common/pojo/convert/JlBackdataConvert.java b/src/main/java/com/baiyee/adcallback/config/pojo/convert/JlBackdataConvert.java
similarity index 91%
rename from src/main/java/com/baiyee/adcallback/common/pojo/convert/JlBackdataConvert.java
rename to src/main/java/com/baiyee/adcallback/config/pojo/convert/JlBackdataConvert.java
index 119a35e..76f891c 100644
--- a/src/main/java/com/baiyee/adcallback/common/pojo/convert/JlBackdataConvert.java
+++ b/src/main/java/com/baiyee/adcallback/config/pojo/convert/JlBackdataConvert.java
@@ -1,9 +1,9 @@
-package com.baiyee.adcallback.common.pojo.convert;
+package com.baiyee.adcallback.config.pojo.convert;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.util.ObjectUtil;
import com.baiyee.adcallback.api.vo.JuliangMobileMonitorCallbackRequestVO;
-import com.baiyee.adcallback.common.pojo.JlBackdataDTO;
+import com.baiyee.adcallback.config.pojo.JlBackdataDTO;
import com.baiyee.adcallback.repository.entity.TbJlBackdataEntity;
public class JlBackdataConvert {
diff --git a/src/main/java/com/baiyee/adcallback/repository/TbBdBackdataEntityRepository.java b/src/main/java/com/baiyee/adcallback/repository/TbBdBackdataEntityRepository.java
new file mode 100644
index 0000000..06dc05f
--- /dev/null
+++ b/src/main/java/com/baiyee/adcallback/repository/TbBdBackdataEntityRepository.java
@@ -0,0 +1,7 @@
+package com.baiyee.adcallback.repository;
+
+import com.baiyee.adcallback.repository.entity.TbBdBackdataEntity;
+import org.springframework.data.jpa.repository.JpaRepository;
+
+public interface TbBdBackdataEntityRepository extends JpaRepository {
+}
\ No newline at end of file
diff --git a/src/main/java/com/baiyee/adcallback/repository/entity/TbBdBackdataEntity.java b/src/main/java/com/baiyee/adcallback/repository/entity/TbBdBackdataEntity.java
new file mode 100644
index 0000000..1422169
--- /dev/null
+++ b/src/main/java/com/baiyee/adcallback/repository/entity/TbBdBackdataEntity.java
@@ -0,0 +1,91 @@
+package com.baiyee.adcallback.repository.entity;
+
+import lombok.Data;
+
+import javax.persistence.*;
+import java.sql.Timestamp;
+import java.util.Objects;
+
+@Data
+@Entity
+@Table(name = "tb_bd_backdata", schema = "db_ad", catalog = "")
+public class TbBdBackdataEntity {
+ @GeneratedValue(strategy = GenerationType.IDENTITY)
+ @Id
+ @Column(name = "id", nullable = false)
+ private long id;
+ @Basic
+ @Column(name = "gmt_create", nullable = false)
+ private Timestamp gmtCreate;
+ @Basic
+ @Column(name = "gmt_modify", nullable = false)
+ private Timestamp gmtModify;
+ @Basic
+ @Column(name = "operator", nullable = false, length = 255)
+ private String operator;
+ @Basic
+ @Column(name = "userid", nullable = false, length = 255)
+ private String userid;
+ @Basic
+ @Column(name = "aid", nullable = false, length = 255)
+ private String aid;
+ @Basic
+ @Column(name = "pid", nullable = false, length = 255)
+ private String pid;
+ @Basic
+ @Column(name = "uid", nullable = false, length = 255)
+ private String uid;
+ @Basic
+ @Column(name = "callback_url", nullable = false, length = -1)
+ private String callbackUrl;
+ @Basic
+ @Column(name = "click_id", nullable = false, length = 255)
+ private String clickId;
+ @Basic
+ @Column(name = "idfa", nullable = false, length = 255)
+ private String idfa;
+ @Basic
+ @Column(name = "imei_md5", nullable = false, length = 255)
+ private String imeiMd5;
+ @Basic
+ @Column(name = "oaid", nullable = false, length = 255)
+ private String oaid;
+ @Basic
+ @Column(name = "mac", nullable = false, length = 255)
+ private String mac;
+ @Basic
+ @Column(name = "ip", nullable = false, length = 255)
+ private String ip;
+ @Basic
+ @Column(name = "os", nullable = false, length = 255)
+ private String os;
+ @Basic
+ @Column(name = "ts", nullable = false)
+ private long ts;
+ @Basic
+ @Column(name = "device_info", nullable = false, length = 255)
+ private String deviceInfo;
+ @Basic
+ @Column(name = "interactions_type", nullable = false, length = 255)
+ private String interactionsType;
+ @Basic
+ @Column(name = "ext_info", nullable = false, length = 255)
+ private String extInfo;
+ @Basic
+ @Column(name = "call_type", nullable = false, length = 255)
+ private String callType;
+
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) return true;
+ if (o == null || getClass() != o.getClass()) return false;
+ TbBdBackdataEntity that = (TbBdBackdataEntity) o;
+ return id == that.id && ts == that.ts && Objects.equals(gmtCreate, that.gmtCreate) && Objects.equals(gmtModify, that.gmtModify) && Objects.equals(operator, that.operator) && Objects.equals(userid, that.userid) && Objects.equals(aid, that.aid) && Objects.equals(pid, that.pid) && Objects.equals(uid, that.uid) && Objects.equals(callbackUrl, that.callbackUrl) && Objects.equals(clickId, that.clickId) && Objects.equals(idfa, that.idfa) && Objects.equals(imeiMd5, that.imeiMd5) && Objects.equals(oaid, that.oaid) && Objects.equals(mac, that.mac) && Objects.equals(ip, that.ip) && Objects.equals(os, that.os) && Objects.equals(deviceInfo, that.deviceInfo) && Objects.equals(interactionsType, that.interactionsType) && Objects.equals(extInfo, that.extInfo) && Objects.equals(callType, that.callType);
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(id, gmtCreate, gmtModify, operator, userid, aid, pid, uid, callbackUrl, clickId, idfa, imeiMd5, oaid, mac, ip, os, ts, deviceInfo, interactionsType, extInfo, callType);
+ }
+}
diff --git a/src/main/java/com/baiyee/adcallback/service/AdOriginalityManageService.java b/src/main/java/com/baiyee/adcallback/service/AdOriginalityManageService.java
index 5433e51..317173b 100644
--- a/src/main/java/com/baiyee/adcallback/service/AdOriginalityManageService.java
+++ b/src/main/java/com/baiyee/adcallback/service/AdOriginalityManageService.java
@@ -11,4 +11,10 @@ public interface AdOriginalityManageService {
* 处理监测数据然后保存回调
*/
void handleMonitorUrlCallbackDataThenSave();
+
+
+ /**
+ * 处理监测数据然后保存回调
+ */
+ void handleMonitorUrlCallbackDataThenSave1();
}
diff --git a/src/main/java/com/baiyee/adcallback/service/impl/AdOriginalityManageServiceImpl.java b/src/main/java/com/baiyee/adcallback/service/impl/AdOriginalityManageServiceImpl.java
index 82f3af1..badbc5b 100644
--- a/src/main/java/com/baiyee/adcallback/service/impl/AdOriginalityManageServiceImpl.java
+++ b/src/main/java/com/baiyee/adcallback/service/impl/AdOriginalityManageServiceImpl.java
@@ -1,11 +1,15 @@
package com.baiyee.adcallback.service.impl;
import cn.hutool.core.util.ObjectUtil;
-import com.baiyee.adcallback.common.pojo.convert.JlBackdataConvert;
+import com.baiyee.adcallback.config.pojo.convert.BdBackdataConvert;
+import com.baiyee.adcallback.config.pojo.convert.JlBackdataConvert;
+import com.baiyee.adcallback.repository.TbBdBackdataEntityRepository;
import com.baiyee.adcallback.repository.TbJlBackdataEntityRepository;
+import com.baiyee.adcallback.repository.entity.TbBdBackdataEntity;
import com.baiyee.adcallback.repository.entity.TbJlBackdataEntity;
import com.baiyee.adcallback.service.AdOriginalityManageService;
import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
/**
@@ -20,8 +24,11 @@ public class AdOriginalityManageServiceImpl implements AdOriginalityManageServic
private final TbJlBackdataEntityRepository repository;
- public AdOriginalityManageServiceImpl(TbJlBackdataEntityRepository repository) {
+ private final TbBdBackdataEntityRepository bdBackdataEntityRepository;
+
+ public AdOriginalityManageServiceImpl(TbJlBackdataEntityRepository repository, TbBdBackdataEntityRepository bdBackdataEntityRepository) {
this.repository = repository;
+ this.bdBackdataEntityRepository = bdBackdataEntityRepository;
}
@Override
@@ -35,4 +42,15 @@ public class AdOriginalityManageServiceImpl implements AdOriginalityManageServic
log.error("============================= [save a data fail save is {} ] =============================", save);
}
}
+
+ @Override
+ public void handleMonitorUrlCallbackDataThenSave1() {
+ TbBdBackdataEntity entity = new TbBdBackdataEntity();
+ TbBdBackdataEntity backEntity = BdBackdataConvert.covertToEntity(entity);
+
+ TbBdBackdataEntity save = bdBackdataEntityRepository.save(backEntity);
+ if (ObjectUtil.isNull(save)){
+ log.error("============================= [save a data fail save is {} ] =============================", save);
+ }
+ }
}