修改tag

master
bynt 2 years ago
parent e0b5e99970
commit eb5c20f9fe

@ -0,0 +1,25 @@
package com.baiyee.adcallback.api.dto;
import lombok.Data;
/**
* @author Enzo
* @date : 2022/10/13
*/
@Data
public class PlateFormDTO {
private String imei;
private String tag;
public PlateFormDTO() {
}
public PlateFormDTO(String imei, String tag) {
this.imei = imei;
this.tag = tag;
}
}

@ -0,0 +1,20 @@
package com.baiyee.adcallback.config.pojo;
import com.baiyee.adcallback.api.dto.PlateFormDTO;
import lombok.Data;
import java.util.List;
/**
* @author Enzo
* @date : 2022/10/14
*/
@Data
public class PlatformTransmitDTO {
private Long taskId;
private String authToken;
private List<PlateFormDTO> list;
}

@ -1,8 +1,11 @@
package com.baiyee.adcallback.repository;
import cn.hutool.core.date.DateTime;
import com.baiyee.adcallback.api.dto.PlateFormDTO;
import com.baiyee.adcallback.repository.entity.TbJlBackdataEntity;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.query.Param;
import java.util.Date;
import java.util.List;
@ -15,4 +18,20 @@ public interface TbJlBackdataEntityRepository extends JpaRepository<TbJlBackdata
@Query(value = "SELECT imei FROM tb_jl_backdata WHERE imei != '' AND imei != '__IMEI__' AND gmt_create > :startDate AND gmt_create < :endDate", nativeQuery = true)
List<String> queryAllImeiByDate(Date startDate, Date endDate);
}
/**
*
* @param imeiStrFirst
* @param imeiSecond
* @param startDate
* @param endDate
* @param tag
* @return
*/
@Query("select new com.baiyee.adcallback.api.dto.PlateFormDTO(imei as imei,tag as tag) from " +
" TbJlBackdataEntity where imei != :imeiStrFirst and imei != :imeiSecond " +
"and gmtCreate >= :startDate and gmtCreate < :endDate and tag in :tag group by imei,tag")
List<PlateFormDTO> queryPlateFormDTO(@Param("imeiStrFirst") String imeiStrFirst, @Param("imeiSecond") String imeiSecond, @Param("startDate") DateTime startDate, @Param("endDate") DateTime endDate, @Param("tag") List<String> tag);
}

@ -3,6 +3,8 @@ package com.baiyee.adcallback.repository;
import com.baiyee.adcallback.repository.entity.TbPlatformCompanyEntity;
import org.springframework.data.jpa.repository.JpaRepository;
import java.util.List;
/**
* @author Enzo
* @date 2022-10-13
@ -16,4 +18,11 @@ public interface TbPlatformCompanyEntityRepository extends JpaRepository<TbPlatf
* @return
*/
TbPlatformCompanyEntity findByTaskId(Long taskId);
/**
* tag
* @param number
* @return
*/
List<TbPlatformCompanyEntity> findByStatus(Integer number);
}

@ -0,0 +1,28 @@
package com.baiyee.adcallback.repository;
import com.baiyee.adcallback.api.dto.PlateFormDTO;
import com.baiyee.adcallback.repository.entity.TbDeliveryStatisticEntity;
import com.baiyee.adcallback.repository.entity.TbPlatformDeliveryEntity;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Query;
import java.util.List;
/**
* @author Enzo
* @date : 2022/10/14
*/
public interface TbPlatformDeliveryEntityRepository extends JpaRepository<TbPlatformDeliveryEntity, Long> {
/**
* tag
*
* @param tagStr
* @param num
* @return
*/
@Query(value = "select new com.baiyee.adcallback.api.dto.PlateFormDTO(imei, tag)from TbDeliveryStatisticEntity where tag = ?1 and dayNum > ?2")
List<PlateFormDTO> findByTag(String tagStr, int num);
}

@ -14,7 +14,6 @@ import java.util.List;
* @author Enzo
* @date : 2022/10/13
*/
@Getter
@Setter
@Entity
@ -35,6 +34,9 @@ public class TbPlatformCompanyEntity implements Serializable {
@Column(name = "task_id")
private Long taskId;
@Column(name = "status")
private Integer status;
@Column(name = "tag_str")
@Convert(converter = JpaConverterListJson.class)
private List<String> tagStr;

@ -0,0 +1,28 @@
package com.baiyee.adcallback.service;
import com.baiyee.adcallback.api.dto.PlateFormDTO;
import com.baiyee.adcallback.repository.entity.TbPlatformDeliveryEntity;
import java.util.List;
/**
* @author Enzo
* @date : 2022/10/14
*/
public interface AdPlatformDeliveryService {
/**
* tag
* @param tagKey
* @param num
* @return
*/
List<PlateFormDTO> findByTag(String tagKey, Integer num);
/**
*
* @param deliveryStatisticEntityList
* @return
*/
Boolean saveAll(List<TbPlatformDeliveryEntity> deliveryStatisticEntityList);
}

@ -2,6 +2,8 @@ package com.baiyee.adcallback.service;
import com.baiyee.adcallback.repository.entity.TbPlatformCompanyEntity;
import java.util.List;
/**
* @author jt
*/
@ -13,4 +15,11 @@ public interface AdPlatformService {
* @param tbPlatformCompanyEntity
*/
void getTag(TbPlatformCompanyEntity tbPlatformCompanyEntity);
/**
* tag
* @param number
* @return
*/
List<TbPlatformCompanyEntity> findByPlatTag(Integer number);
}

@ -0,0 +1,22 @@
package com.baiyee.adcallback.service;
import cn.hutool.core.date.DateTime;
import com.baiyee.adcallback.api.dto.PlateFormDTO;
import java.util.List;
/**
* @author Enzo
* @date : 2022/10/14
*/
public interface JlBackDataEntityService {
/**
* imei
* @param imeiFirst
* @param imeiSecond
* @param date
* @param offsetMinute
* @param tagStr
*/
List<PlateFormDTO> queryPlateFormDTO(String imeiFirst, String imeiSecond, DateTime date, DateTime offsetMinute, List<String> tagStr);
}

@ -0,0 +1,36 @@
package com.baiyee.adcallback.service.impl;
import com.baiyee.adcallback.api.dto.PlateFormDTO;
import com.baiyee.adcallback.config.pojo.DeliveryStatisticDTO;
import com.baiyee.adcallback.repository.TbPlatformDeliveryEntityRepository;
import com.baiyee.adcallback.repository.entity.TbPlatformDeliveryEntity;
import com.baiyee.adcallback.service.AdPlatformDeliveryService;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import java.util.List;
/**
* @author Enzo
* @date : 2022/10/14
*/
@Slf4j
@Service
@RequiredArgsConstructor
public class AdPlatformDeliveryServiceImpl implements AdPlatformDeliveryService {
private final TbPlatformDeliveryEntityRepository tbPlatformDeliveryEntityRepository;
@Override
public List<PlateFormDTO> findByTag(String tagKey, Integer num) {
return tbPlatformDeliveryEntityRepository.findByTag(tagKey, num);
}
@Override
public Boolean saveAll(List<TbPlatformDeliveryEntity> deliveryStatisticEntityList) {
return tbPlatformDeliveryEntityRepository.saveAll
(deliveryStatisticEntityList).size() == deliveryStatisticEntityList.size();
}
}

@ -1,5 +1,6 @@
package com.baiyee.adcallback.service.impl;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.ObjectUtil;
import com.baiyee.adcallback.repository.TbPlatformCompanyEntityRepository;
import com.baiyee.adcallback.repository.entity.TbPlatformCompanyEntity;
@ -7,6 +8,8 @@ import com.baiyee.adcallback.service.AdPlatformService;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
import java.util.List;
/**
* @author jt
*/
@ -18,13 +21,23 @@ public class AdPlatformServiceImpl implements AdPlatformService {
@Override
public void getTag(TbPlatformCompanyEntity tbPlatformCompanyEntity) {
TbPlatformCompanyEntity byTaskId = tbPlatformCompanyEntityRepository.findByTaskId(tbPlatformCompanyEntity.getTaskId());
TbPlatformCompanyEntity byTaskId =
tbPlatformCompanyEntityRepository.findByTaskId(tbPlatformCompanyEntity.getTaskId());
if (ObjectUtil.isEmpty(byTaskId)) {
tbPlatformCompanyEntity.setStatus(1);
tbPlatformCompanyEntity.setCreateTime(DateUtil.date());
tbPlatformCompanyEntity.setUpdateTime(DateUtil.date());
tbPlatformCompanyEntityRepository.save(tbPlatformCompanyEntity);
} else {
byTaskId.setTagStr(tbPlatformCompanyEntity.getTagStr());
tbPlatformCompanyEntityRepository.save(byTaskId);
return;
}
byTaskId.setUpdateTime(DateUtil.date());
byTaskId.setTagStr(tbPlatformCompanyEntity.getTagStr());
tbPlatformCompanyEntityRepository.save(byTaskId);
}
@Override
public List<TbPlatformCompanyEntity> findByPlatTag(Integer number) {
return tbPlatformCompanyEntityRepository.findByStatus(number);
}
}

@ -0,0 +1,28 @@
package com.baiyee.adcallback.service.impl;
import cn.hutool.core.date.DateTime;
import com.baiyee.adcallback.api.dto.PlateFormDTO;
import com.baiyee.adcallback.repository.TbJlBackdataEntityRepository;
import com.baiyee.adcallback.service.JlBackDataEntityService;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import java.util.List;
/**
* @author Enzo
* @date : 2022/10/14
*/
@Slf4j
@Service
@RequiredArgsConstructor
public class JlBackDataEntityServiceImpl implements JlBackDataEntityService {
private final TbJlBackdataEntityRepository tbJlBackdataEntityRepository;
@Override
public List<PlateFormDTO> queryPlateFormDTO(String imeiFirst, String imeiSecond, DateTime date, DateTime offsetMinute, List<String> tagStr) {
return tbJlBackdataEntityRepository.queryPlateFormDTO(imeiFirst, imeiSecond, date, offsetMinute, tagStr);
}
}

@ -38,4 +38,6 @@ public class DeliveryStatisticTask {
log.info("++++++++++++++++++++++DeliveryStatisticTask Sync end time {} ++++++++++++++++", DateUtil.now());
}
}

@ -0,0 +1,112 @@
package com.baiyee.adcallback.task;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.convert.Convert;
import cn.hutool.core.date.DateTime;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.text.CharSequenceUtil;
import cn.hutool.http.HttpUtil;
import cn.hutool.json.JSONUtil;
import com.baiyee.adcallback.api.dto.PlateFormDTO;
import com.baiyee.adcallback.config.pojo.PlatformTransmitDTO;
import com.baiyee.adcallback.repository.entity.TbPlatformCompanyEntity;
import com.baiyee.adcallback.repository.entity.TbPlatformDeliveryEntity;
import com.baiyee.adcallback.service.AdPlatformDeliveryService;
import com.baiyee.adcallback.service.AdPlatformService;
import com.baiyee.adcallback.service.JlBackDataEntityService;
import com.google.common.collect.Lists;
import com.google.common.collect.Sets;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
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.Map;
import java.util.Set;
import java.util.concurrent.CompletableFuture;
import java.util.stream.Collectors;
/**
* @author Enzo
* @date : 2022/10/13
*/
@Slf4j
@Component
@RequiredArgsConstructor
public class PlatFormRecordTask {
@Value("${platform.authToken}")
private String authToken;
@Value("${platform.url}")
private String url;
private final AdPlatformService adPlatformService;
private final JlBackDataEntityService jlBackDataEntityService;
private final AdPlatformDeliveryService adPlatformDeliveryService;
/**
*
*/
@Scheduled(cron = "0 0/10 * * * ? ")
@Transactional(rollbackFor = Exception.class)
public void deliveryPlatform() {
List<TbPlatformCompanyEntity> platforms
= adPlatformService.findByPlatTag(1);
if (CollUtil.isNotEmpty(platforms)) {
for (TbPlatformCompanyEntity platform : platforms) {
DateTime date = DateUtil.date();
// 偏移十分钟
DateTime offsetMinute = DateUtil.offsetMinute(date, -10);
List<PlateFormDTO> dtoList = jlBackDataEntityService.queryPlateFormDTO
(CharSequenceUtil.EMPTY, "__IMEI__", offsetMinute, date, platform.getTagStr());
if (CollUtil.isNotEmpty(dtoList)) {
Map<String, List<PlateFormDTO>> listMap = dtoList.stream()
.collect(Collectors.groupingBy(PlateFormDTO::getTag));
List<PlateFormDTO> saveDataList = Lists.newArrayList();
for (Map.Entry<String, List<PlateFormDTO>> stringListEntry : listMap.entrySet()) {
// 去除重复数据
Set<PlateFormDTO> originSet =
Sets.newHashSet(listMap.get(stringListEntry.getKey()));
// 查询数据
List<PlateFormDTO> tagLists =
adPlatformDeliveryService.findByTag(stringListEntry.getKey(), 0);
Set<PlateFormDTO> querySet = Sets.newHashSet(tagLists);
// 差集去除数据
List<PlateFormDTO> differentData
= Lists.newArrayList(Sets.difference(originSet, querySet));
// 保存将要插入数据
saveDataList.addAll(differentData);
}
if (CollUtil.isNotEmpty(saveDataList)) {
// 异步插入数据
CompletableFuture.runAsync(() -> {
List<TbPlatformDeliveryEntity> deliveryStatisticEntityList =
Convert.toList(TbPlatformDeliveryEntity.class, saveDataList);
// 批量保存
adPlatformDeliveryService.saveAll(deliveryStatisticEntityList);
});
}
// 分批发送
List<List<PlateFormDTO>> partition = Lists.partition(saveDataList, 200);
for (List<PlateFormDTO> formDTOList : partition) {
PlatformTransmitDTO dto = new PlatformTransmitDTO();
dto.setList(formDTOList);
dto.setAuthToken(authToken);
dto.setTaskId(platform.getTaskId());
HttpUtil.post(url, JSONUtil.toJsonStr(dto));
}
log.error("================ the new datalist size as {} ================", saveDataList.size());
}
}
}
}
}

@ -6,9 +6,9 @@ spring:
druid:
db-type: com.alibaba.druid.pool.DruidDataSource
driverClassName: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://118.178.137.129/db_ad?serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=utf8&useSSL=false&rewriteBatchedStatements=true
url: jdbc:mysql://8.130.96.163/db_ad?serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=utf8&useSSL=false&rewriteBatchedStatements=true
username: root
password: root
password: y7z7noq2
# 初始连接数
initial-size: 5
# 最小连接数
@ -47,4 +47,7 @@ spring:
multi-statement-allow: true
connect-properties: druid.stat.mergeSql=false
platform:
authToken: JI8AeA7POKsdGcBC
url: http://8.130.96.163:7325/open/v1/callback/add

@ -44,3 +44,6 @@ spring:
config:
multi-statement-allow: true
connect-properties: druid.stat.mergeSql=false
platform:
authToken: nqJpVSf3UcrEcVIH
url: https://baiyee.vip/open/v1/callback/add

@ -4,7 +4,7 @@ spring:
application:
name: ad-callback
profiles:
active: prod
active: dev
jackson:
time-zone: GMT+8
date-format: yyyy-MM-dd HH:mm:ss

Loading…
Cancel
Save