添加土巴兔代码

master
bynt 11 months ago
parent 65794ca9cf
commit 87750f930d

@ -128,6 +128,7 @@
<version>1.0.10</version> <version>1.0.10</version>
</dependency> </dependency>
</dependencies> </dependencies>
<build> <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"; 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; private String tag;
public PlateFormDTO() { 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 lombok.Data;
import java.util.List; 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; package com.baiyee.adcallback.service;
import com.baiyee.adcallback.api.dto.To8ToParamDTO;
import com.baiyee.adcallback.api.vo.*; import com.baiyee.adcallback.api.vo.*;
/** /**
@ -55,10 +56,21 @@ public interface AdOriginalityManageService {
void handleMonitorUrlCallbackDataThenSave4(); void handleMonitorUrlCallbackDataThenSave4();
/** /**
* - gdt * - gdt
*/ */
void handleMonitorUrlCallbackDataThenSave5(); 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.bean.BeanUtil;
import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil; import cn.hutool.core.util.StrUtil;
import cn.hutool.json.JSONUtil;
import com.baiyee.adcallback.api.constants.VpointEnum; 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.api.vo.*;
import com.baiyee.adcallback.config.pojo.convert.*; import com.baiyee.adcallback.config.pojo.convert.*;
import com.baiyee.adcallback.repository.*; import com.baiyee.adcallback.repository.*;
import com.baiyee.adcallback.repository.entity.*; import com.baiyee.adcallback.repository.entity.*;
import com.baiyee.adcallback.service.AdOriginalityManageService; import com.baiyee.adcallback.service.AdOriginalityManageService;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
/** /**
@ -39,13 +41,17 @@ public class AdOriginalityManageServiceImpl implements AdOriginalityManageServic
private final TbJLV1BackdataEntityRepository jlv1BackdataEntityRepository; private final TbJLV1BackdataEntityRepository jlv1BackdataEntityRepository;
private final TbJlTripartiteDataEntityRepository jlThirdDataEntityRepository;
private final TbGdtNewBackdataEntityRepository tbGdtNewBackdataEntityRepository; private final TbGdtNewBackdataEntityRepository tbGdtNewBackdataEntityRepository;
private final TbKSNewBackdataEntityRepository tbKSNewBackdataEntityRepository; private final TbKSNewBackdataEntityRepository tbKSNewBackdataEntityRepository;
private final TbBDNewBackdataEntityRepository tbBDNewBackdataEntityRepository; 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.repository = repository;
this.bdBackdataEntityRepository = bdBackdataEntityRepository; this.bdBackdataEntityRepository = bdBackdataEntityRepository;
this.tbUcBackdataEntityRepository = tbUcBackdataEntityRepository; this.tbUcBackdataEntityRepository = tbUcBackdataEntityRepository;
@ -54,6 +60,7 @@ public class AdOriginalityManageServiceImpl implements AdOriginalityManageServic
this.gdtBackdataEntityRepository = gdtBackdataEntityRepository; this.gdtBackdataEntityRepository = gdtBackdataEntityRepository;
this.jlv2BackdataEntityRepository = jlv2BackdataEntityRepository; this.jlv2BackdataEntityRepository = jlv2BackdataEntityRepository;
this.jlv1BackdataEntityRepository = jlv1BackdataEntityRepository; this.jlv1BackdataEntityRepository = jlv1BackdataEntityRepository;
this.jlThirdDataEntityRepository = jlThirdDataEntityRepository;
this.tbGdtNewBackdataEntityRepository = tbGdtNewBackdataEntityRepository; this.tbGdtNewBackdataEntityRepository = tbGdtNewBackdataEntityRepository;
this.tbKSNewBackdataEntityRepository = tbKSNewBackdataEntityRepository; this.tbKSNewBackdataEntityRepository = tbKSNewBackdataEntityRepository;
this.tbBDNewBackdataEntityRepository = tbBDNewBackdataEntityRepository; this.tbBDNewBackdataEntityRepository = tbBDNewBackdataEntityRepository;
@ -99,15 +106,15 @@ public class AdOriginalityManageServiceImpl implements AdOriginalityManageServic
BeanUtil.copyProperties(vo, backDataEntity); BeanUtil.copyProperties(vo, backDataEntity);
// 区分 安卓 还是 IOS ios, android // 区分 安卓 还是 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()); backDataEntity.setImei(vo.getMuid());
}else { } else {
backDataEntity.setImei(""); 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()); backDataEntity.setIdfa(vo.getMuid());
}else { } else {
backDataEntity.setIdfa(""); backDataEntity.setIdfa("");
} }
@ -157,7 +164,7 @@ public class AdOriginalityManageServiceImpl implements AdOriginalityManageServic
TbJlBackdataEntity backEntity = JlBackdataConvert.covertToEntity(entity); TbJlBackdataEntity backEntity = JlBackdataConvert.covertToEntity(entity);
TbJlBackdataEntity save = repository.save(backEntity); TbJlBackdataEntity save = repository.save(backEntity);
if (ObjectUtil.isNull(save)){ if (ObjectUtil.isNull(save)) {
log.error("============================= [save a data fail save is {} ] =============================", 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 backEntity = BdBackdataConvert.covertToEntity(entity);
TbBdBackdataEntity save = bdBackdataEntityRepository.save(backEntity); TbBdBackdataEntity save = bdBackdataEntityRepository.save(backEntity);
if (ObjectUtil.isNull(save)){ if (ObjectUtil.isNull(save)) {
log.error("============================= [save a data fail save is {} ] =============================", 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 backEntity = UcBackdataConvert.covertToEntity(entity);
TbUcBackdataEntity save = tbUcBackdataEntityRepository.save(backEntity); TbUcBackdataEntity save = tbUcBackdataEntityRepository.save(backEntity);
if (ObjectUtil.isNull(save)){ if (ObjectUtil.isNull(save)) {
log.error("============================= [save a data fail save is {} ] =============================", 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 backEntity = KuaiShouBackdataConvert.covertToEntity(entity);
TbKsBackdataEntity save = ksBackdataEntityRepository.save(backEntity); TbKsBackdataEntity save = ksBackdataEntityRepository.save(backEntity);
if (ObjectUtil.isNull(save)){ if (ObjectUtil.isNull(save)) {
log.error("============================= [save a data fail save is {} ] =============================", 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 backEntity = VivoBackdataConvert.covertToEntity(entity);
TbVivoBackdataEntity save = vivoBackdataEntityRepository.save(backEntity); TbVivoBackdataEntity save = vivoBackdataEntityRepository.save(backEntity);
if (ObjectUtil.isNull(save)){ if (ObjectUtil.isNull(save)) {
log.error("============================= [save a data fail save is {} ] =============================", 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 backEntity = GdtBackdataConvert.covertToEntity(entity);
TbGdtBackdataEntity save = gdtBackdataEntityRepository.save(backEntity); TbGdtBackdataEntity save = gdtBackdataEntityRepository.save(backEntity);
if (ObjectUtil.isNull(save)){ if (ObjectUtil.isNull(save)) {
log.error("============================= [save a data fail save is {} ] =============================", 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.PlateFormDTO;
import com.baiyee.adcallback.api.dto.RepeatFormDTO; import com.baiyee.adcallback.api.dto.RepeatFormDTO;
import com.baiyee.adcallback.common.enums.DeliveryPlatformEnum; 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.TbPlatformCompanyEntity;
import com.baiyee.adcallback.repository.entity.TbPlatformDeliveryEntity; import com.baiyee.adcallback.repository.entity.TbPlatformDeliveryEntity;
import com.baiyee.adcallback.service.AdPlatformDeliveryService; 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.PlateFormDTO;
import com.baiyee.adcallback.api.dto.RepeatFormDTO; import com.baiyee.adcallback.api.dto.RepeatFormDTO;
import com.baiyee.adcallback.common.enums.DeliveryPlatformEnum; 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.TbPlatformCompanyEntity;
import com.baiyee.adcallback.repository.entity.TbPlatformDeliveryEntity; import com.baiyee.adcallback.repository.entity.TbPlatformDeliveryEntity;
import com.baiyee.adcallback.service.AdPlatformDeliveryService; 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; package com.baiyee.adcallback.tools;
import cn.hutool.core.text.CharSequenceUtil;
import cn.hutool.core.util.StrUtil; import cn.hutool.core.util.StrUtil;
import com.baiyee.adcallback.api.constants.SpecialCheckParmConstant; import com.baiyee.adcallback.api.constants.SpecialCheckParmConstant;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
/** /**
* *
@ -10,7 +12,8 @@ import lombok.extern.slf4j.Slf4j;
@Slf4j @Slf4j
public class CheckPlatPointParamsUtil { 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) { 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; return Boolean.FALSE;
} }
// ios // ios
if (StrUtil.equalsIgnoreCase("1", os) && StrUtil.isBlank(idfa)){ if (StrUtil.equalsIgnoreCase("1", os) && StrUtil.isBlank(idfa)) {
return Boolean.FALSE; 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) { public static boolean checkKSPlatPointParam(String os, String oaid, String imei, String imeiHash, String idfa, String idfaHash) {
// 安卓的 // 安卓的
// FIXME: 2023/5/26 0026 imeiHash 目前不是很通用还是不存了 // 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; return Boolean.FALSE;
} }
// ios // ios
if (StrUtil.equalsIgnoreCase("1", os) && StrUtil.isBlank(idfa)){ if (StrUtil.equalsIgnoreCase("1", os) && StrUtil.isBlank(idfa)) {
return Boolean.FALSE; 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; return Boolean.FALSE;
} }
// ios // ios
if (StrUtil.equalsIgnoreCase("ios", os.trim()) && StrUtil.isBlank(muid)){ if (StrUtil.equalsIgnoreCase("ios", os.trim()) && StrUtil.isBlank(muid)) {
return Boolean.FALSE; return Boolean.FALSE;
} }
@ -73,7 +76,7 @@ public class CheckPlatPointParamsUtil {
* *
* @return * @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 //安卓0
//IOS1 //IOS1
@ -94,7 +97,7 @@ public class CheckPlatPointParamsUtil {
(StrUtil.equals(SpecialCheckParmConstant.ZERO_JL_IMEI, imei) || (StrUtil.equals(SpecialCheckParmConstant.ZERO_JL_IMEI, imei) ||
StrUtil.equals(SpecialCheckParmConstant.ZERO_JL_IMEI_MD5, imei) || StrUtil.equals(SpecialCheckParmConstant.ZERO_JL_IMEI_MD5, imei) ||
StrUtil.isBlank(imei)) StrUtil.isBlank(imei))
){ ) {
return Boolean.FALSE; return Boolean.FALSE;
} }
@ -102,13 +105,13 @@ public class CheckPlatPointParamsUtil {
if (os == 1 && if (os == 1 &&
(StrUtil.equals(SpecialCheckParmConstant.ZERO_JL_IDFA, idfa) || (StrUtil.equals(SpecialCheckParmConstant.ZERO_JL_IDFA, idfa) ||
StrUtil.equals(SpecialCheckParmConstant.ZERO_JL_IDFA_MD5, idfaMD5) || StrUtil.equals(SpecialCheckParmConstant.ZERO_JL_IDFA_MD5, idfaMD5) ||
( StrUtil.isBlank(idfa) && StrUtil.isBlank(idfaMD5))) (StrUtil.isBlank(idfa) && StrUtil.isBlank(idfaMD5)))
){ ) {
return Boolean.FALSE; 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.FALSE;
} }
return Boolean.TRUE; return Boolean.TRUE;
@ -121,10 +124,10 @@ public class CheckPlatPointParamsUtil {
* *
* @return * @return
*/ */
public static boolean checkMainParamForPut(String oaid,String oaidMD5, public static boolean checkMainParamForPut(String oaid, String oaidMD5,
String imei, String imeiMD5, String imei, String imeiMD5,
String idfa, String idfaMD5, String idfa, String idfaMD5,
String mac){ String mac) {
/* /*
: :
mainMD5, mainMD5,
@ -138,7 +141,7 @@ public class CheckPlatPointParamsUtil {
&& (StrUtil.isBlank(imei) || StrUtil.isBlank(imeiMD5)) && (StrUtil.isBlank(imei) || StrUtil.isBlank(imeiMD5))
&& (StrUtil.isBlank(idfa) || StrUtil.isBlank(idfaMD5)) && (StrUtil.isBlank(idfa) || StrUtil.isBlank(idfaMD5))
&& StrUtil.isBlank(mac) && StrUtil.isBlank(mac)
){ ) {
return Boolean.FALSE; 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 type: com.alibaba.druid.pool.DruidDataSource
# 数据库驱动类名 # 数据库驱动类名
driver-class-name: com.mysql.cj.jdbc.Driver 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 username: root
password: y7z7noq2 password: y7z7noq2
db1: db1:
@ -60,7 +60,7 @@ spring:
type: com.alibaba.druid.pool.DruidDataSource type: com.alibaba.druid.pool.DruidDataSource
# 数据库驱动类名 # 数据库驱动类名
driver-class-name: com.mysql.cj.jdbc.Driver 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 username: root
password: y7z7noq2 password: y7z7noq2
# 规则配置 # 规则配置
@ -231,9 +231,11 @@ spring:
show-sql: false show-sql: false
platform: platform:
workId: 32
authToken: JI8AeA7POKsdGcBC authToken: JI8AeA7POKsdGcBC
url: http://8.130.96.163:8866/api/taskImei/callback/add 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: tf:
source: source:

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

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

@ -2,14 +2,9 @@ package com.baiyee.adcallback;
import cn.hutool.core.collection.CollUtil; import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.util.StrUtil; 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.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.common.enums.TableEnum;
import com.baiyee.adcallback.config.pojo.DeliveryStatisticDTO; 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.ArrayListMultimap;
import com.google.common.collect.Lists; import com.google.common.collect.Lists;
import com.google.common.collect.Multimap; import com.google.common.collect.Multimap;
@ -18,7 +13,6 @@ import lombok.extern.slf4j.Slf4j;
import org.junit.Test; import org.junit.Test;
import java.util.*; import java.util.*;
import java.util.stream.Collectors;
@Slf4j @Slf4j
public class AdCallbackApplicationTests { public class AdCallbackApplicationTests {

Loading…
Cancel
Save