修改tag
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;
|
||||
}
|
@ -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);
|
||||
}
|
@ -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);
|
||||
}
|
@ -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();
|
||||
}
|
||||
}
|
@ -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);
|
||||
}
|
||||
|
||||
}
|
@ -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());
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue