parent
7fbfd7b0b3
commit
3ef0d821e9
@ -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
|
@ -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 <a href="https://dev2.baidu.com/content?sceneType=0&pageId=101214&nodeId=15&subhead="></a>
|
||||
*/
|
||||
@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;
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
@ -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;
|
||||
|
||||
}
|
@ -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;
|
||||
}
|
@ -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;
|
@ -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<BdBackdataDTO> 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;
|
||||
}
|
||||
}
|
@ -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 {
|
@ -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<TbBdBackdataEntity, Long> {
|
||||
}
|
@ -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);
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue