|
|
|
@ -1,13 +1,19 @@
|
|
|
|
|
package com.baiyee.adcallback.task;
|
|
|
|
|
|
|
|
|
|
import cn.hutool.core.bean.BeanUtil;
|
|
|
|
|
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.core.util.ObjectUtil;
|
|
|
|
|
import cn.hutool.http.HttpRequest;
|
|
|
|
|
import cn.hutool.http.HttpUtil;
|
|
|
|
|
import cn.hutool.json.JSONObject;
|
|
|
|
|
import cn.hutool.json.JSONUtil;
|
|
|
|
|
import com.baiyee.adcallback.api.common.CommonResponse;
|
|
|
|
|
import com.baiyee.adcallback.api.dto.PlateFormDTO;
|
|
|
|
|
import com.baiyee.adcallback.common.exception.BadRequestException;
|
|
|
|
|
import com.baiyee.adcallback.config.pojo.PlatformTransmitDTO;
|
|
|
|
|
import com.baiyee.adcallback.repository.entity.TbPlatformCompanyEntity;
|
|
|
|
|
import com.baiyee.adcallback.repository.entity.TbPlatformDeliveryEntity;
|
|
|
|
@ -16,6 +22,7 @@ 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.Data;
|
|
|
|
|
import lombok.RequiredArgsConstructor;
|
|
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
|
|
import org.springframework.beans.factory.annotation.Value;
|
|
|
|
@ -23,6 +30,7 @@ import org.springframework.scheduling.annotation.Scheduled;
|
|
|
|
|
import org.springframework.stereotype.Component;
|
|
|
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
|
|
|
|
|
|
|
|
import java.util.Date;
|
|
|
|
|
import java.util.List;
|
|
|
|
|
import java.util.Map;
|
|
|
|
|
import java.util.Set;
|
|
|
|
@ -45,6 +53,8 @@ public class PlatFormRecordTask {
|
|
|
|
|
@Value("${platform.url}")
|
|
|
|
|
private String url;
|
|
|
|
|
|
|
|
|
|
private DateTime beginTime;
|
|
|
|
|
|
|
|
|
|
private final AdPlatformService adPlatformService;
|
|
|
|
|
|
|
|
|
|
private final JlBackDataEntityService jlBackDataEntityService;
|
|
|
|
@ -63,11 +73,13 @@ public class PlatFormRecordTask {
|
|
|
|
|
for (TbPlatformCompanyEntity platform : platforms) {
|
|
|
|
|
DateTime date = DateUtil.date();
|
|
|
|
|
// 偏移十分钟
|
|
|
|
|
DateTime offsetMinute = DateUtil.offsetMinute(date, -10);
|
|
|
|
|
DateTime offsetMinute = ObjectUtil.isNull(beginTime) ? DateUtil.offsetMinute(date, -10) : beginTime;
|
|
|
|
|
beginTime = offsetMinute;
|
|
|
|
|
log.error("================ the begin time as {} end time as {} ================", offsetMinute, date);
|
|
|
|
|
List<PlateFormDTO> dtoList = jlBackDataEntityService.queryPlateFormDTO
|
|
|
|
|
(CharSequenceUtil.EMPTY, "__IMEI__", offsetMinute, date, platform.getTagStr());
|
|
|
|
|
log.error("================ the dto list as {} ================", dtoList.size());
|
|
|
|
|
if (CollUtil.isNotEmpty(dtoList)) {
|
|
|
|
|
|
|
|
|
|
Map<String, List<PlateFormDTO>> listMap = dtoList.stream()
|
|
|
|
|
.collect(Collectors.groupingBy(PlateFormDTO::getTag));
|
|
|
|
|
List<PlateFormDTO> saveDataList = Lists.newArrayList();
|
|
|
|
@ -86,7 +98,23 @@ public class PlatFormRecordTask {
|
|
|
|
|
// 保存将要插入数据
|
|
|
|
|
saveDataList.addAll(differentData);
|
|
|
|
|
}
|
|
|
|
|
if (CollUtil.isNotEmpty(saveDataList)) {
|
|
|
|
|
// 分批发送
|
|
|
|
|
List<List<PlateFormDTO>> partition = Lists.partition(saveDataList, 100);
|
|
|
|
|
int num = 0;
|
|
|
|
|
for (List<PlateFormDTO> formDTOList : partition) {
|
|
|
|
|
PlatformTransmitDTO dto = new PlatformTransmitDTO();
|
|
|
|
|
dto.setList(formDTOList);
|
|
|
|
|
dto.setAuthToken(authToken);
|
|
|
|
|
dto.setUserId(platform.getUserId());
|
|
|
|
|
dto.setTaskId(platform.getTaskId());
|
|
|
|
|
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 && CollUtil.isNotEmpty(saveDataList)) {
|
|
|
|
|
// 异步插入数据
|
|
|
|
|
CompletableFuture.runAsync(() -> {
|
|
|
|
|
List<TbPlatformDeliveryEntity> deliveryStatisticEntityList =
|
|
|
|
@ -94,18 +122,13 @@ public class PlatFormRecordTask {
|
|
|
|
|
// 批量保存
|
|
|
|
|
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));
|
|
|
|
|
beginTime = date;
|
|
|
|
|
}
|
|
|
|
|
log.error("================ the new datalist size as {} ================", saveDataList.size());
|
|
|
|
|
}
|
|
|
|
|
if (CollUtil.isEmpty(dtoList)) {
|
|
|
|
|
beginTime = date;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|