添加土巴兔代码

master
bynt 11 months ago
parent 65794ca9cf
commit 87750f930d

@ -128,6 +128,7 @@
<version>1.0.10</version>
</dependency>
</dependencies>
<build>

@ -0,0 +1,103 @@
package com.baiyee.adcallback.api.callback;
import cn.hutool.core.text.CharSequenceUtil;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.json.JSONUtil;
import com.baiyee.adcallback.api.common.CommonResponse;
import com.baiyee.adcallback.api.dto.To8ToParamDTO;
import com.baiyee.adcallback.api.vo.JuliangMobileMonitorCallbackRequestNewV1VO;
import com.baiyee.adcallback.service.AdOriginalityManageService;
import com.baiyee.adcallback.tools.CheckPlatPointParamsUtil;
import com.google.common.collect.ImmutableMap;
import lombok.extern.slf4j.Slf4j;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;
import java.util.Map;
/**
* @author Enzo
* @date
*/
@RestController
@RequestMapping(value = ("/api"))
@Slf4j
public class TripartitePartyCallbackApi {
private final AdOriginalityManageService originalityManageService;
public TripartitePartyCallbackApi(AdOriginalityManageService originalityManageService) {
this.originalityManageService = originalityManageService;
}
@RequestMapping(value = "/jl/cooperate/monitor")
public CommonResponse<String> jlMonitorUrlCallbackReqUrlV1(
@RequestParam(value = "aid", defaultValue = "") String aid,
@RequestParam(value = "aid_name", defaultValue = "") String aidName,
@RequestParam(value = "cid", defaultValue = "") String cid,
@RequestParam(value = "cid_name", defaultValue = "") String cidName,
@RequestParam(value = "campaign_id", defaultValue = "") String campaignId,
@RequestParam(value = "campaign_name", defaultValue = "") String campaignName,
@RequestParam(value = "ctype", defaultValue = "") String ctype,
@RequestParam(value = "CSITE", defaultValue = "") String csite,
@RequestParam(value = "idfa_md5", defaultValue = "") String idfaMD5,
@RequestParam(value = "oaid_md5", defaultValue = "") String oaidMD5,
@RequestParam(value = "CONVERT_ID", defaultValue = "") String convertId,
@RequestParam(value = "REQUEST_ID", defaultValue = "") String requestId,
@RequestParam(value = "track_id", defaultValue = "") String trackId,
@RequestParam(value = "OS", defaultValue = "") String os,
@RequestParam(value = "UA", defaultValue = "") String ua,
@RequestParam(value = "GEO", defaultValue = "") String geo,
@RequestParam(value = "TS", defaultValue = "") String ts,
@RequestParam(value = "MODEL", defaultValue = "") String model,
@RequestParam(value = "IMEI", defaultValue = "") String imei,
@RequestParam(value = "IDFA", defaultValue = "") String idfa,
@RequestParam(value = "OAID", defaultValue = "") String oaid,
@RequestParam(value = "MAC", defaultValue = "") String mac,
@RequestParam(value = "CALLBACK_PARAM", defaultValue = "") String callbackParam,
@RequestParam(value = "callback_url", defaultValue = "") String callbackUrl,
@RequestParam(value = "ADVERTISER_ID", defaultValue = "") String advertiserId,
@RequestParam(value = "tag", defaultValue = "") String tag,
@RequestParam(value = "vpoint", defaultValue = "") Integer vpoint) {
// 映射
JuliangMobileMonitorCallbackRequestNewV1VO vo = new JuliangMobileMonitorCallbackRequestNewV1VO(
aid, aidName, cid, cidName, campaignId, campaignName, ctype,
csite, convertId, requestId, trackId, os, ua, geo, ts, model,
imei, idfa, idfaMD5, oaid, oaidMD5, mac, callbackParam, callbackUrl, advertiserId
);
// 映射 - Base 参数
if (CharSequenceUtil.isBlank(tag) && ObjectUtil.isNull(vpoint)) {
vo.setTag("jl-cooperate-2048");
vo.setVpoint(2048);
}
if (vo.getOs().equalsIgnoreCase("OS")) {
log.error("======================== the ta error as {} ========================", vo.getTag());
}
if (CheckPlatPointParamsUtil.checkJLThirdParam(vo.getOs(), vo.getImei(), vo.getIdfa(), vo.getMac())) {
originalityManageService.handleCooperateSave(vo);
}
return CommonResponse.createBySuccess();
}
@PostMapping(value = "/jl/reception")
public ResponseEntity<Map<String, Object>> getTag(@RequestBody String body) {
/* There may be other partners who will use the bean transfer method in the future*/
To8ToParamDTO dto = JSONUtil.toBean(body, To8ToParamDTO.class);
Map<String, Object> map = ImmutableMap.of("code", 1, "message", "fail");
if (CheckPlatPointParamsUtil.checkReceiveParam
(dto.getImei(), dto.getImeiMd5(), dto.getIdfa(), dto.getIdfaMd5(), dto.getOaid(), dto.getOaidMd5())) {
return new ResponseEntity<>(Boolean.TRUE.equals(originalityManageService.handleTo8ToParam(dto))
? ImmutableMap.of("code", 0, "message", "success") : map, HttpStatus.OK);
}
return new ResponseEntity<>(map, HttpStatus.OK);
}
}

@ -15,4 +15,6 @@ public class SpecialCheckParmConstant {
public static final String ZERO_JL_IDFA_MD5 = "9f89c84a559f573636a47ff8daed0d33";
}

@ -0,0 +1,43 @@
package com.baiyee.adcallback.api.dto;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* @author Enzo
* @date : 2023/10/12
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
public class ConvertDTO {
private String accountId;
private String callbackChannelCode;
private String channelCode;
private String creativeId;
private String crowdPackageId;
private String ipCity;
private String media;
private String msgdgt;
private String nonce;
private String packageUpdateTime;
private String pushMark;
private String pushTypes;
private String unitId;
}

@ -14,6 +14,8 @@ public class PlateFormDTO {
private String tag;
public PlateFormDTO() {
}

@ -1,7 +1,5 @@
package com.baiyee.adcallback.config.pojo;
package com.baiyee.adcallback.api.dto;
import com.baiyee.adcallback.api.dto.PlateFormDTO;
import com.baiyee.adcallback.api.dto.RepeatFormDTO;
import lombok.Data;
import java.util.List;

@ -0,0 +1,66 @@
package com.baiyee.adcallback.api.dto;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* @author Enzo
* @date : 2023/10/12
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
public class To8ToParamDTO {
private String accountId;
private String callbackChannelCode;
private String channelCode;
private String creativeId;
private String crowdPackageId;
private String deviceIdType;
private String idfa;
private String idfaMd5;
private String imei;
private String imeiMd5;
private String ip;
private String ipCity;
private String media;
private String monitType;
private String msgdgt;
private String nonce;
private String oaid;
private String oaidMd5;
private String packageUpdateTime;
private String planId;
private String pushMark;
private String pushTypes;
private Long ts;
private String unitId;
}

@ -0,0 +1,34 @@
package com.baiyee.adcallback.api.dto;
import lombok.Data;
/**
* @author Enzo
* @date : 2023/10/13
*/
@Data
public class TripartiteDTO {
private String imei;
public TripartiteDTO(String imei, String oaid) {
this.imei = imei;
this.oaid = oaid;
}
private String oaid;
private Integer sourceType;
public TripartiteDTO() {
}
public TripartiteDTO(String imei, String oaid, Integer sourceType) {
this.imei = imei;
this.oaid = oaid;
this.sourceType = sourceType;
}
}

@ -0,0 +1,18 @@
package com.baiyee.adcallback.api.dto;
import lombok.Builder;
import lombok.Data;
/**
* @author Enzo
* @date : 2023/10/13
*/
@Data
@Builder
public class TripartitePlatformDTO {
private String nid;
private Integer type;
}

@ -0,0 +1,18 @@
package com.baiyee.adcallback.api.dto;
import lombok.Data;
import java.util.List;
/**
* @author Enzo
* @date : 2022/10/14
*/
@Data
public class TripartiteTransmitDTO {
private String authToken;
private List<TripartitePlatformDTO> list;
}

@ -0,0 +1,27 @@
package com.baiyee.adcallback.config;
import org.springframework.context.annotation.Configuration;
import org.springframework.util.AntPathMatcher;
import org.springframework.web.servlet.config.annotation.PathMatchConfigurer;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
/**
* @author Enzo
* @date : 2023/10/12
*/
@Configuration
public class WebMvcConfig implements WebMvcConfigurer {
/**
*
* @param configurer
*/
@Override
public void configurePathMatch(PathMatchConfigurer configurer) {
AntPathMatcher matcher = new AntPathMatcher();
matcher.setCaseSensitive(false);
configurer.setPathMatcher(matcher);
}
}

@ -0,0 +1,35 @@
package com.baiyee.adcallback.repository;
import cn.hutool.core.date.DateTime;
import com.baiyee.adcallback.api.dto.TripartiteDTO;
import com.baiyee.adcallback.repository.entity.TbJlTripartiteDataEntity;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.query.Param;
import org.springframework.stereotype.Repository;
import java.util.List;
/**
* @author Enzo
* @date 2023-10-12
*/
@Repository
public interface TbJlTripartiteDataEntityRepository extends BaseRepository<TbJlTripartiteDataEntity, Long> {
/**
*
*
* @param imeiStrFirst
* @param imeiSecond
* @param startDate
* @param endDate
* @return
*/
@Query("select new com.baiyee.adcallback.api.dto.TripartiteDTO(imei as imei,oaid as oaid, sourceType as sourceType) from " +
" TbJlTripartiteDataEntity where imei != :imeiStrFirst and imei != :imeiSecond and gmtCreate >= :startDate and gmtCreate < :endDate")
List<TripartiteDTO> queryPlateFormDTO(@Param("imeiStrFirst") String imeiStrFirst, @Param("imeiSecond") String imeiSecond, @Param("startDate") DateTime startDate, @Param("endDate") DateTime endDate);
}

@ -0,0 +1,104 @@
package com.baiyee.adcallback.repository.entity;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.*;
import org.springframework.data.annotation.CreatedDate;
import org.springframework.data.annotation.LastModifiedDate;
import org.springframework.data.jpa.domain.support.AuditingEntityListener;
import org.springframework.format.annotation.DateTimeFormat;
import javax.persistence.*;
import java.util.Date;
/**
* @author Enzo
* @date
*/
@Getter
@Setter
@Entity
@NoArgsConstructor
@AllArgsConstructor
@Table(name = "tb_jl_tripartite_data", schema = "db_ad")
@EntityListeners(AuditingEntityListener.class)
public class TbJlTripartiteDataEntity {
@Id
@Column(name = "id", nullable = false)
@GeneratedValue(strategy = GenerationType.IDENTITY)
private long id;
@CreatedDate
@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@Column(name = "gmt_create", nullable = false)
private Date gmtCreate;
@LastModifiedDate
@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@Column(name = "gmt_modified", nullable = false)
private Date gmtModify;
@Basic
@Column(name = "ts", nullable = false)
private String ts;
@Basic
@Column(name = "imei", nullable = false)
private String imei;
@Basic
@Column(name = "imei_md5", nullable = false)
private String imeiMd5;
@Basic
@Column(name = "idfa", nullable = false )
private String idfa;
@Basic
@Column(name = "idfa_md5", nullable = false)
private String idfaMd5;
@Basic
@Column(name = "oaid", nullable = false)
private String oaid;
@Basic
@Column(name = "oaid_md5", nullable = false)
private String oaidMd5;
@Column(name = "ip", nullable = false)
private String ip;
@Basic
@Column(name = "monit_type")
private String monitType;
@Basic
@Column(name = "account_id")
private Integer accountId;
@Basic
@Column(name = "plan_id")
private Integer planId;
@Basic
@Column(name = "device_id_type")
private String deviceIdType;
@Basic
@Column(name = "source_type")
private Integer sourceType;
@Basic
@Column(name = "other_info")
private String otherInfo;
}

@ -1,5 +1,6 @@
package com.baiyee.adcallback.service;
import com.baiyee.adcallback.api.dto.To8ToParamDTO;
import com.baiyee.adcallback.api.vo.*;
/**
@ -55,10 +56,21 @@ public interface AdOriginalityManageService {
void handleMonitorUrlCallbackDataThenSave4();
/**
* - gdt
*/
void handleMonitorUrlCallbackDataThenSave5();
/**
*
* @param dto
* @return
*/
Boolean handleTo8ToParam(To8ToParamDTO dto);
/**
*
* @param vo
*/
void handleCooperateSave(JuliangMobileMonitorCallbackRequestNewV1VO vo);
}

@ -0,0 +1,23 @@
package com.baiyee.adcallback.service;
import cn.hutool.core.date.DateTime;
import com.baiyee.adcallback.api.dto.TripartiteDTO;
import java.util.List;
/**
* @author Enzo
* @date : 2023/10/12
*/
public interface TripartiteService {
/**
*
* @param empty
* @param imeiStr
* @param offsetMinute
* @param date
* @return
*/
List<TripartiteDTO> queryTripartiteData(String empty, String imeiStr, DateTime offsetMinute, DateTime date);
}

@ -3,14 +3,16 @@ package com.baiyee.adcallback.service.impl;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil;
import cn.hutool.json.JSONUtil;
import com.baiyee.adcallback.api.constants.VpointEnum;
import com.baiyee.adcallback.api.dto.ConvertDTO;
import com.baiyee.adcallback.api.dto.To8ToParamDTO;
import com.baiyee.adcallback.api.vo.*;
import com.baiyee.adcallback.config.pojo.convert.*;
import com.baiyee.adcallback.repository.*;
import com.baiyee.adcallback.repository.entity.*;
import com.baiyee.adcallback.service.AdOriginalityManageService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
/**
@ -39,13 +41,17 @@ public class AdOriginalityManageServiceImpl implements AdOriginalityManageServic
private final TbJLV1BackdataEntityRepository jlv1BackdataEntityRepository;
private final TbJlTripartiteDataEntityRepository jlThirdDataEntityRepository;
private final TbGdtNewBackdataEntityRepository tbGdtNewBackdataEntityRepository;
private final TbKSNewBackdataEntityRepository tbKSNewBackdataEntityRepository;
private final TbBDNewBackdataEntityRepository tbBDNewBackdataEntityRepository;
public AdOriginalityManageServiceImpl(TbJlBackdataEntityRepository repository, TbBdBackdataEntityRepository bdBackdataEntityRepository, TbUcBackdataEntityRepository tbUcBackdataEntityRepository, TbKsBackdataEntityRepository ksBackdataEntityRepository, TbVivoBackdataEntityRepository vivoBackdataEntityRepository, TbGdtBackdataEntityRepository gdtBackdataEntityRepository, TbJLV2BackdataEntityRepository jlv2BackdataEntityRepository, TbJLV1BackdataEntityRepository jlv1BackdataEntityRepository, TbGdtNewBackdataEntityRepository tbGdtNewBackdataEntityRepository, TbKSNewBackdataEntityRepository tbKSNewBackdataEntityRepository, TbBDNewBackdataEntityRepository tbBDNewBackdataEntityRepository) {
public AdOriginalityManageServiceImpl(TbJlBackdataEntityRepository repository, TbBdBackdataEntityRepository bdBackdataEntityRepository, TbUcBackdataEntityRepository tbUcBackdataEntityRepository, TbKsBackdataEntityRepository ksBackdataEntityRepository, TbVivoBackdataEntityRepository vivoBackdataEntityRepository, TbGdtBackdataEntityRepository gdtBackdataEntityRepository, TbJLV2BackdataEntityRepository jlv2BackdataEntityRepository, TbJLV1BackdataEntityRepository jlv1BackdataEntityRepository, TbGdtNewBackdataEntityRepository tbGdtNewBackdataEntityRepository, TbKSNewBackdataEntityRepository tbKSNewBackdataEntityRepository, TbBDNewBackdataEntityRepository tbBDNewBackdataEntityRepository,
TbJlTripartiteDataEntityRepository jlThirdDataEntityRepository) {
this.repository = repository;
this.bdBackdataEntityRepository = bdBackdataEntityRepository;
this.tbUcBackdataEntityRepository = tbUcBackdataEntityRepository;
@ -54,6 +60,7 @@ public class AdOriginalityManageServiceImpl implements AdOriginalityManageServic
this.gdtBackdataEntityRepository = gdtBackdataEntityRepository;
this.jlv2BackdataEntityRepository = jlv2BackdataEntityRepository;
this.jlv1BackdataEntityRepository = jlv1BackdataEntityRepository;
this.jlThirdDataEntityRepository = jlThirdDataEntityRepository;
this.tbGdtNewBackdataEntityRepository = tbGdtNewBackdataEntityRepository;
this.tbKSNewBackdataEntityRepository = tbKSNewBackdataEntityRepository;
this.tbBDNewBackdataEntityRepository = tbBDNewBackdataEntityRepository;
@ -99,15 +106,15 @@ public class AdOriginalityManageServiceImpl implements AdOriginalityManageServic
BeanUtil.copyProperties(vo, backDataEntity);
// 区分 安卓 还是 IOS ios, android
if (StrUtil.isNotBlank(vo.getDeviceOsType()) && StrUtil.equalsIgnoreCase("android", vo.getDeviceOsType().trim())){
if (StrUtil.isNotBlank(vo.getDeviceOsType()) && StrUtil.equalsIgnoreCase("android", vo.getDeviceOsType().trim())) {
backDataEntity.setImei(vo.getMuid());
}else {
} else {
backDataEntity.setImei("");
}
if (StrUtil.isNotBlank(vo.getDeviceOsType()) && StrUtil.equalsIgnoreCase("ios", vo.getDeviceOsType().trim())){
if (StrUtil.isNotBlank(vo.getDeviceOsType()) && StrUtil.equalsIgnoreCase("ios", vo.getDeviceOsType().trim())) {
backDataEntity.setIdfa(vo.getMuid());
}else {
} else {
backDataEntity.setIdfa("");
}
@ -157,7 +164,7 @@ public class AdOriginalityManageServiceImpl implements AdOriginalityManageServic
TbJlBackdataEntity backEntity = JlBackdataConvert.covertToEntity(entity);
TbJlBackdataEntity save = repository.save(backEntity);
if (ObjectUtil.isNull(save)){
if (ObjectUtil.isNull(save)) {
log.error("============================= [save a data fail save is {} ] =============================", save);
}
}
@ -168,7 +175,7 @@ public class AdOriginalityManageServiceImpl implements AdOriginalityManageServic
TbBdBackdataEntity backEntity = BdBackdataConvert.covertToEntity(entity);
TbBdBackdataEntity save = bdBackdataEntityRepository.save(backEntity);
if (ObjectUtil.isNull(save)){
if (ObjectUtil.isNull(save)) {
log.error("============================= [save a data fail save is {} ] =============================", save);
}
}
@ -180,7 +187,7 @@ public class AdOriginalityManageServiceImpl implements AdOriginalityManageServic
TbUcBackdataEntity backEntity = UcBackdataConvert.covertToEntity(entity);
TbUcBackdataEntity save = tbUcBackdataEntityRepository.save(backEntity);
if (ObjectUtil.isNull(save)){
if (ObjectUtil.isNull(save)) {
log.error("============================= [save a data fail save is {} ] =============================", save);
}
}
@ -191,7 +198,7 @@ public class AdOriginalityManageServiceImpl implements AdOriginalityManageServic
TbKsBackdataEntity backEntity = KuaiShouBackdataConvert.covertToEntity(entity);
TbKsBackdataEntity save = ksBackdataEntityRepository.save(backEntity);
if (ObjectUtil.isNull(save)){
if (ObjectUtil.isNull(save)) {
log.error("============================= [save a data fail save is {} ] =============================", save);
}
}
@ -202,7 +209,7 @@ public class AdOriginalityManageServiceImpl implements AdOriginalityManageServic
TbVivoBackdataEntity backEntity = VivoBackdataConvert.covertToEntity(entity);
TbVivoBackdataEntity save = vivoBackdataEntityRepository.save(backEntity);
if (ObjectUtil.isNull(save)){
if (ObjectUtil.isNull(save)) {
log.error("============================= [save a data fail save is {} ] =============================", save);
}
}
@ -214,8 +221,30 @@ public class AdOriginalityManageServiceImpl implements AdOriginalityManageServic
TbGdtBackdataEntity backEntity = GdtBackdataConvert.covertToEntity(entity);
TbGdtBackdataEntity save = gdtBackdataEntityRepository.save(backEntity);
if (ObjectUtil.isNull(save)){
if (ObjectUtil.isNull(save)) {
log.error("============================= [save a data fail save is {} ] =============================", save);
}
}
@Override
public Boolean handleTo8ToParam(To8ToParamDTO dto) {
ConvertDTO convertDTO = new ConvertDTO();
TbJlTripartiteDataEntity build = new TbJlTripartiteDataEntity();
// 数据入库
build.setSourceType(1);
BeanUtil.copyProperties(dto, build);
BeanUtil.copyProperties(dto, convertDTO);
build.setOtherInfo(JSONUtil.toJsonStr(convertDTO));
TbJlTripartiteDataEntity result = jlThirdDataEntityRepository.save(build);
return ObjectUtil.isNotNull(result) && ObjectUtil.isNotNull(result.getId());
}
@Override
public void handleCooperateSave(JuliangMobileMonitorCallbackRequestNewV1VO vo) {
TbJLBackDataV1Entity dataV1Entity = new TbJLBackDataV1Entity();
// 数据入库
BeanUtil.copyProperties(vo, dataV1Entity);
jlv1BackdataEntityRepository.save(dataV1Entity);
}
}

@ -0,0 +1,27 @@
package com.baiyee.adcallback.service.impl;
import cn.hutool.core.date.DateTime;
import com.baiyee.adcallback.api.dto.TripartiteDTO;
import com.baiyee.adcallback.repository.TbJlTripartiteDataEntityRepository;
import com.baiyee.adcallback.service.TripartiteService;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
import java.time.OffsetDateTime;
import java.util.List;
/**
* @author Enzo
* @date : 2023/10/12
*/
@Service
@RequiredArgsConstructor
public class TripartiteServiceImpl implements TripartiteService {
private final TbJlTripartiteDataEntityRepository jlTripartiteDataEntityRepository;
@Override
public List<TripartiteDTO> queryTripartiteData(String empty, String imeiStr, DateTime offsetMinute, DateTime date) {
return jlTripartiteDataEntityRepository.queryPlateFormDTO(empty, imeiStr, offsetMinute, date);
}
}

@ -13,7 +13,7 @@ import cn.hutool.json.JSONUtil;
import com.baiyee.adcallback.api.dto.PlateFormDTO;
import com.baiyee.adcallback.api.dto.RepeatFormDTO;
import com.baiyee.adcallback.common.enums.DeliveryPlatformEnum;
import com.baiyee.adcallback.config.pojo.PlatformTransmitDTO;
import com.baiyee.adcallback.api.dto.PlatformTransmitDTO;
import com.baiyee.adcallback.repository.entity.TbPlatformCompanyEntity;
import com.baiyee.adcallback.repository.entity.TbPlatformDeliveryEntity;
import com.baiyee.adcallback.service.AdPlatformDeliveryService;

@ -13,7 +13,7 @@ import cn.hutool.json.JSONUtil;
import com.baiyee.adcallback.api.dto.PlateFormDTO;
import com.baiyee.adcallback.api.dto.RepeatFormDTO;
import com.baiyee.adcallback.common.enums.DeliveryPlatformEnum;
import com.baiyee.adcallback.config.pojo.PlatformTransmitDTO;
import com.baiyee.adcallback.api.dto.PlatformTransmitDTO;
import com.baiyee.adcallback.repository.entity.TbPlatformCompanyEntity;
import com.baiyee.adcallback.repository.entity.TbPlatformDeliveryEntity;
import com.baiyee.adcallback.service.AdPlatformDeliveryService;

@ -0,0 +1,116 @@
package com.baiyee.adcallback.task;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.date.DateTime;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.text.CharSequenceUtil;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.http.HttpUtil;
import cn.hutool.json.JSONObject;
import cn.hutool.json.JSONUtil;
import com.baiyee.adcallback.api.constants.SpecialCheckParmConstant;
import com.baiyee.adcallback.api.dto.TripartiteDTO;
import com.baiyee.adcallback.api.dto.TripartitePlatformDTO;
import com.baiyee.adcallback.api.dto.TripartiteTransmitDTO;
import com.baiyee.adcallback.service.TripartiteService;
import com.google.common.collect.Lists;
import com.google.common.collect.Sets;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;
import java.util.List;
import java.util.Set;
/**
* @author Enzo
* @date : 2023/10/13
*/
@Slf4j
@Component
@RequiredArgsConstructor
public class TripartiteRecordTask {
@Value("${platform.authToken}")
private String authToken;
@Value("${platform.tripartite-url}")
private String url;
private DateTime beginTime;
private final TripartiteService tripartiteService;
/**
*
*
*/
@Scheduled(cron = "0 0/15 * * * ? ")
@Transactional(rollbackFor = Exception.class)
public void deliveryPlatform() {
DateTime date = DateUtil.date();
// 偏移十五分钟
DateTime offsetMinute = ObjectUtil.isNull(beginTime) ?
DateUtil.offsetMinute(date, -15) : DateUtil.offsetMinute(beginTime, -15);
beginTime = offsetMinute;
log.info("================ the begin time as {} end time as {} ================", offsetMinute, date);
List<TripartiteDTO> dtoList = tripartiteService.queryTripartiteData
(CharSequenceUtil.EMPTY, "__IMEI__", offsetMinute, date);
log.info("================ the dto list as {} ================", dtoList.size());
if (CollUtil.isNotEmpty(dtoList)) {
List<TripartitePlatformDTO> list = Lists.newArrayList();
dtoList.forEach(dto -> {
if (StringUtils.isNotBlank(dto.getImei()) &&
!dto.getImei().equalsIgnoreCase(SpecialCheckParmConstant.ZERO_JL_IDFA)) {
TripartitePlatformDTO build =
TripartitePlatformDTO.builder().type(0).nid(dto.getImei()).build();
list.add(build);
}
if (StringUtils.isNotBlank(dto.getOaid()) &&
!dto.getOaid().equalsIgnoreCase(SpecialCheckParmConstant.ZERO_JL_IDFA)) {
TripartitePlatformDTO build =
TripartitePlatformDTO.builder().type(1).nid(dto.getOaid()).build();
list.add(build);
}
});
// 去除重复数据
Set<TripartitePlatformDTO> originSet = Sets.newHashSet(list);
// 分批发送
List<List<TripartitePlatformDTO>> partition =
Lists.partition(Lists.newArrayList(originSet), 500);
int num = 0;
for (List<TripartitePlatformDTO> formDTOList : partition) {
TripartiteTransmitDTO dto = new TripartiteTransmitDTO();
dto.setList(formDTOList);
dto.setAuthToken(authToken);
String post = HttpUtil.post(url, JSONUtil.toJsonStr(dto));
Object status = new JSONObject(post).get("status");
if (ObjectUtil.isNotNull(status) &&
Integer.parseInt(status.toString()) != 0) {
num++;
}
}
if (num == 0) {
/*// 异步插入数据
CompletableFuture.runAsync(() -> {
List<TbPlatformDeliveryEntity> deliveryStatisticEntityList =
Convert.toList(TbPlatformDeliveryEntity.class, saveDataList);
// 批量保存
adPlatformDeliveryService.saveAll(deliveryStatisticEntityList);
});*/
beginTime = date;
}
log.error("================ the new datalist size as {} ================", originSet.size());
if (CollUtil.isEmpty(dtoList)) {
beginTime = date;
}
}
}
}

@ -1,8 +1,10 @@
package com.baiyee.adcallback.tools;
import cn.hutool.core.text.CharSequenceUtil;
import cn.hutool.core.util.StrUtil;
import com.baiyee.adcallback.api.constants.SpecialCheckParmConstant;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
/**
*
@ -10,7 +12,8 @@ import lombok.extern.slf4j.Slf4j;
@Slf4j
public class CheckPlatPointParamsUtil {
private CheckPlatPointParamsUtil(){}
private CheckPlatPointParamsUtil() {
}
/**
*
@ -18,12 +21,12 @@ public class CheckPlatPointParamsUtil {
public static boolean checkBDPlatPointParam(String os, String idfa, String imei, String oaidMD5, String oaid) {
// 安卓
if (StrUtil.equalsIgnoreCase("0", os) && StrUtil.isBlank(imei) && StrUtil.isBlank(oaid) && StrUtil.isBlank(oaidMD5)){
if (StrUtil.equalsIgnoreCase("0", os) && StrUtil.isBlank(imei) && StrUtil.isBlank(oaid) && StrUtil.isBlank(oaidMD5)) {
return Boolean.FALSE;
}
// ios
if (StrUtil.equalsIgnoreCase("1", os) && StrUtil.isBlank(idfa)){
if (StrUtil.equalsIgnoreCase("1", os) && StrUtil.isBlank(idfa)) {
return Boolean.FALSE;
}
@ -37,12 +40,12 @@ public class CheckPlatPointParamsUtil {
public static boolean checkKSPlatPointParam(String os, String oaid, String imei, String imeiHash, String idfa, String idfaHash) {
// 安卓的
// FIXME: 2023/5/26 0026 imeiHash 目前不是很通用还是不存了
if (StrUtil.equalsIgnoreCase("0", os) && (StrUtil.isBlank(imei) || StrUtil.isBlank(oaid))){
if (StrUtil.equalsIgnoreCase("0", os) && (StrUtil.isBlank(imei) || StrUtil.isBlank(oaid))) {
return Boolean.FALSE;
}
// ios
if (StrUtil.equalsIgnoreCase("1", os) && StrUtil.isBlank(idfa)){
if (StrUtil.equalsIgnoreCase("1", os) && StrUtil.isBlank(idfa)) {
return Boolean.FALSE;
}
@ -53,15 +56,15 @@ public class CheckPlatPointParamsUtil {
/**
* 广
*/
public static boolean checkGDTPlatPointParam(String os, String muid, String oaid){
public static boolean checkGDTPlatPointParam(String os, String muid, String oaid) {
// 安卓的
if (StrUtil.equalsIgnoreCase("android", os.trim()) && (StrUtil.isBlank(muid) || StrUtil.isBlank(oaid))){
if (StrUtil.equalsIgnoreCase("android", os.trim()) && (StrUtil.isBlank(muid) || StrUtil.isBlank(oaid))) {
return Boolean.FALSE;
}
// ios
if (StrUtil.equalsIgnoreCase("ios", os.trim()) && StrUtil.isBlank(muid)){
if (StrUtil.equalsIgnoreCase("ios", os.trim()) && StrUtil.isBlank(muid)) {
return Boolean.FALSE;
}
@ -73,7 +76,7 @@ public class CheckPlatPointParamsUtil {
*
* @return
*/
public static boolean checkJLPlatPointV2Param(String os1, String imei, String idfa, String idfaMD5, String mac){
public static boolean checkJLPlatPointV2Param(String os1, String imei, String idfa, String idfaMD5, String mac) {
//安卓0
//IOS1
@ -94,7 +97,7 @@ public class CheckPlatPointParamsUtil {
(StrUtil.equals(SpecialCheckParmConstant.ZERO_JL_IMEI, imei) ||
StrUtil.equals(SpecialCheckParmConstant.ZERO_JL_IMEI_MD5, imei) ||
StrUtil.isBlank(imei))
){
) {
return Boolean.FALSE;
}
@ -102,13 +105,13 @@ public class CheckPlatPointParamsUtil {
if (os == 1 &&
(StrUtil.equals(SpecialCheckParmConstant.ZERO_JL_IDFA, idfa) ||
StrUtil.equals(SpecialCheckParmConstant.ZERO_JL_IDFA_MD5, idfaMD5) ||
( StrUtil.isBlank(idfa) && StrUtil.isBlank(idfaMD5)))
){
(StrUtil.isBlank(idfa) && StrUtil.isBlank(idfaMD5)))
) {
return Boolean.FALSE;
}
// 其他
if (os == 3 && (StrUtil.isBlank(imei) && StrUtil.isBlank(idfa) && StrUtil.isBlank(idfaMD5) && StrUtil.isBlank(mac))){
if (os == 3 && (StrUtil.isBlank(imei) && StrUtil.isBlank(idfa) && StrUtil.isBlank(idfaMD5) && StrUtil.isBlank(mac))) {
return Boolean.FALSE;
}
return Boolean.TRUE;
@ -121,10 +124,10 @@ public class CheckPlatPointParamsUtil {
*
* @return
*/
public static boolean checkMainParamForPut(String oaid,String oaidMD5,
public static boolean checkMainParamForPut(String oaid, String oaidMD5,
String imei, String imeiMD5,
String idfa, String idfaMD5,
String mac){
String mac) {
/*
:
mainMD5,
@ -138,7 +141,7 @@ public class CheckPlatPointParamsUtil {
&& (StrUtil.isBlank(imei) || StrUtil.isBlank(imeiMD5))
&& (StrUtil.isBlank(idfa) || StrUtil.isBlank(idfaMD5))
&& StrUtil.isBlank(mac)
){
) {
return Boolean.FALSE;
}
@ -146,5 +149,63 @@ public class CheckPlatPointParamsUtil {
}
/**
* JL
*
* @return
*/
public static boolean checkJLThirdParam(String os1, String imei, String idfa, String mac) {
//安卓0
//IOS1
//其他3
if (StringUtils.isNotBlank(os1) && ValidationUtil.isInteger(os1)) {
int os = Integer.parseInt(os1);
// 安卓
if (os == 0 && (StrUtil.equals(SpecialCheckParmConstant.ZERO_JL_IMEI, imei) ||
StrUtil.equals(SpecialCheckParmConstant.ZERO_JL_IMEI_MD5, imei) || StrUtil.isBlank(imei))) {
return Boolean.FALSE;
}
// IOS
if (os == 1 &&
(StrUtil.equals(SpecialCheckParmConstant.ZERO_JL_IDFA, idfa) || (StrUtil.isBlank(idfa)))) {
return Boolean.FALSE;
}
// 其他
if (os == 3 && (StrUtil.isBlank(imei) && StrUtil.isBlank(idfa) && StrUtil.isBlank(mac))) {
return Boolean.FALSE;
}
return Boolean.TRUE;
}
return Boolean.FALSE;
}
public static boolean checkReceiveParam(String imei, String imeiMd5, String idfa, String idfaMd5, String oaid, String oaidMd5) {
// 其他
if ((CharSequenceUtil.isBlank(imei) && CharSequenceUtil.isBlank(idfa)
&& CharSequenceUtil.isBlank(idfaMd5) && CharSequenceUtil.isBlank(imeiMd5))
&& CharSequenceUtil.isBlank(oaid) && CharSequenceUtil.isBlank(oaidMd5)) {
return Boolean.FALSE;
}
if ((CharSequenceUtil.equals(SpecialCheckParmConstant.ZERO_JL_IMEI, imei) ||
CharSequenceUtil.equals(SpecialCheckParmConstant.ZERO_JL_IMEI_MD5, imei))) {
return Boolean.FALSE;
}
if ((CharSequenceUtil.equals(SpecialCheckParmConstant.ZERO_JL_IDFA, idfa) ||
CharSequenceUtil.equals(SpecialCheckParmConstant.ZERO_JL_IDFA_MD5, idfaMd5))) {
return Boolean.FALSE;
}
if ((CharSequenceUtil.equals(SpecialCheckParmConstant.ZERO_JL_IDFA, oaid) ||
CharSequenceUtil.equals(SpecialCheckParmConstant.ZERO_JL_IDFA_MD5, oaidMd5))) {
return Boolean.FALSE;
}
return Boolean.TRUE;
}
}

@ -52,7 +52,7 @@ spring:
type: com.alibaba.druid.pool.DruidDataSource
# 数据库驱动类名
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://8.130.96.163:3306/db_ad?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=Asia/Shanghai
url: jdbc:mysql://39.100.77.21:3306/db_ad?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=Asia/Shanghai
username: root
password: y7z7noq2
db1:
@ -60,7 +60,7 @@ spring:
type: com.alibaba.druid.pool.DruidDataSource
# 数据库驱动类名
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://8.130.96.163:3306/db_ad1?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=Asia/Shanghai
url: jdbc:mysql://39.100.77.21:3306/db_ad1?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=Asia/Shanghai
username: root
password: y7z7noq2
# 规则配置
@ -231,9 +231,11 @@ spring:
show-sql: false
platform:
workId: 32
authToken: JI8AeA7POKsdGcBC
url: http://8.130.96.163:8866/api/taskImei/callback/add
workId: 32
tripartite-url: http://127.0.0.1:8866/api/taskImei/tripartite/add
tf:
source:

@ -226,6 +226,7 @@ spring:
sql-show: false
platform:
authToken: nqJpVSf3UcrEcVIH
tripartite-url: https://baiyee.vip/api/api/taskImei/tripartite/add
url: https://baiyee.vip/api/taskImei/callback/add
workId: 32

@ -23,6 +23,8 @@ spring:
allow_unquoted_control_chars: true
#允许出现单引号
allow_single_quotes: true
mapper:
accept-case-insensitive-properties: true
# 配置 Jpa
jpa:

@ -2,14 +2,9 @@ package com.baiyee.adcallback;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.util.StrUtil;
import cn.hutool.http.HttpUtil;
import cn.hutool.json.JSONUtil;
import com.baiyee.adcallback.api.constants.SqlConstant;
import com.baiyee.adcallback.api.dto.DmpMonitorJpaDto;
import com.baiyee.adcallback.api.dto.PlateFormDTO;
import com.baiyee.adcallback.common.enums.TableEnum;
import com.baiyee.adcallback.config.pojo.DeliveryStatisticDTO;
import com.baiyee.adcallback.config.pojo.PlatformTransmitDTO;
import com.google.common.collect.ArrayListMultimap;
import com.google.common.collect.Lists;
import com.google.common.collect.Multimap;
@ -18,7 +13,6 @@ import lombok.extern.slf4j.Slf4j;
import org.junit.Test;
import java.util.*;
import java.util.stream.Collectors;
@Slf4j
public class AdCallbackApplicationTests {

Loading…
Cancel
Save