From 099ea68ce5e7cbe3ed32a7755a8e51e9da0b1202 Mon Sep 17 00:00:00 2001 From: bynt Date: Fri, 4 Nov 2022 15:35:54 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E4=B8=8A=E4=BC=A0=E4=BB=A3?= =?UTF-8?q?=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../adcallback/api/dto/PlateFormDTO.java | 3 +- .../adcallback/api/dto/RepeatFormDTO.java | 31 +++++++++++++++++++ .../config/pojo/PlatformTransmitDTO.java | 3 +- .../TbPlatformDeliveryEntityRepository.java | 11 ++++--- .../entity/TbPlatformDeliveryEntity.java | 3 ++ .../service/AdPlatformDeliveryService.java | 6 ++-- .../impl/AdPlatformDeliveryServiceImpl.java | 6 ++-- .../adcallback/task/PlatFormRecordTask.java | 23 ++++++++------ 8 files changed, 64 insertions(+), 22 deletions(-) create mode 100644 src/main/java/com/baiyee/adcallback/api/dto/RepeatFormDTO.java diff --git a/src/main/java/com/baiyee/adcallback/api/dto/PlateFormDTO.java b/src/main/java/com/baiyee/adcallback/api/dto/PlateFormDTO.java index 837f6f3..efd7968 100644 --- a/src/main/java/com/baiyee/adcallback/api/dto/PlateFormDTO.java +++ b/src/main/java/com/baiyee/adcallback/api/dto/PlateFormDTO.java @@ -13,13 +13,12 @@ public class PlateFormDTO { private String tag; + public PlateFormDTO() { } - public PlateFormDTO(String imei, String tag) { this.imei = imei; this.tag = tag; } - } diff --git a/src/main/java/com/baiyee/adcallback/api/dto/RepeatFormDTO.java b/src/main/java/com/baiyee/adcallback/api/dto/RepeatFormDTO.java new file mode 100644 index 0000000..77d8c79 --- /dev/null +++ b/src/main/java/com/baiyee/adcallback/api/dto/RepeatFormDTO.java @@ -0,0 +1,31 @@ +package com.baiyee.adcallback.api.dto; + +import lombok.Data; + +/** + * @author Enzo + * @date : 2022/11/4 + */ +@Data +public class RepeatFormDTO { + + private String imei; + + private String tag; + + private Long userId; + + + public RepeatFormDTO() { + } + + public RepeatFormDTO(String imei, String tag, Long userId) { + this.imei = imei; + this.tag = tag; + this.userId = userId; + } + + + + +} diff --git a/src/main/java/com/baiyee/adcallback/config/pojo/PlatformTransmitDTO.java b/src/main/java/com/baiyee/adcallback/config/pojo/PlatformTransmitDTO.java index 8098db9..3984265 100644 --- a/src/main/java/com/baiyee/adcallback/config/pojo/PlatformTransmitDTO.java +++ b/src/main/java/com/baiyee/adcallback/config/pojo/PlatformTransmitDTO.java @@ -1,6 +1,7 @@ package com.baiyee.adcallback.config.pojo; import com.baiyee.adcallback.api.dto.PlateFormDTO; +import com.baiyee.adcallback.api.dto.RepeatFormDTO; import lombok.Data; import java.util.List; @@ -18,5 +19,5 @@ public class PlatformTransmitDTO { private String authToken; - private List list; + private List list; } diff --git a/src/main/java/com/baiyee/adcallback/repository/TbPlatformDeliveryEntityRepository.java b/src/main/java/com/baiyee/adcallback/repository/TbPlatformDeliveryEntityRepository.java index 38dffe6..467fa9a 100644 --- a/src/main/java/com/baiyee/adcallback/repository/TbPlatformDeliveryEntityRepository.java +++ b/src/main/java/com/baiyee/adcallback/repository/TbPlatformDeliveryEntityRepository.java @@ -1,7 +1,6 @@ package com.baiyee.adcallback.repository; -import com.baiyee.adcallback.api.dto.PlateFormDTO; -import com.baiyee.adcallback.repository.entity.TbDeliveryStatisticEntity; +import com.baiyee.adcallback.api.dto.RepeatFormDTO; import com.baiyee.adcallback.repository.entity.TbPlatformDeliveryEntity; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.Query; @@ -13,16 +12,18 @@ import java.util.List; * @date : 2022/10/14 */ -public interface TbPlatformDeliveryEntityRepository extends JpaRepository { +public interface TbPlatformDeliveryEntityRepository extends JpaRepository { /** * tag查询数据 * + * @param userId * @param tagStr * @param num * @return */ - @Query(value = "select new com.baiyee.adcallback.api.dto.PlateFormDTO(imei, tag)from TbPlatformDeliveryEntity where tag = ?1 and dayNum > ?2") - List findByTag(String tagStr, int num); + @Query(value = "select new com.baiyee.adcallback.api.dto.RepeatFormDTO(imei, tag, userId)from TbPlatformDeliveryEntity where userId = ?1 and tag = ?2 and dayNum > ?3 ") + List findByTag(Long userId, String tagStr, int num); + } diff --git a/src/main/java/com/baiyee/adcallback/repository/entity/TbPlatformDeliveryEntity.java b/src/main/java/com/baiyee/adcallback/repository/entity/TbPlatformDeliveryEntity.java index f4ce917..4356300 100644 --- a/src/main/java/com/baiyee/adcallback/repository/entity/TbPlatformDeliveryEntity.java +++ b/src/main/java/com/baiyee/adcallback/repository/entity/TbPlatformDeliveryEntity.java @@ -28,6 +28,9 @@ public class TbPlatformDeliveryEntity implements Serializable { @Column(name = "imei") private String imei; + @Column(name = "user_id") + private Long userId; + @Column(name = "tag") private String tag; diff --git a/src/main/java/com/baiyee/adcallback/service/AdPlatformDeliveryService.java b/src/main/java/com/baiyee/adcallback/service/AdPlatformDeliveryService.java index ffde8e2..9ee4d4c 100644 --- a/src/main/java/com/baiyee/adcallback/service/AdPlatformDeliveryService.java +++ b/src/main/java/com/baiyee/adcallback/service/AdPlatformDeliveryService.java @@ -1,6 +1,6 @@ package com.baiyee.adcallback.service; -import com.baiyee.adcallback.api.dto.PlateFormDTO; +import com.baiyee.adcallback.api.dto.RepeatFormDTO; import com.baiyee.adcallback.repository.entity.TbPlatformDeliveryEntity; import java.util.List; @@ -13,11 +13,13 @@ public interface AdPlatformDeliveryService { /** * tag已经发送过的 + * + * @param userId * @param tagKey * @param num * @return */ - List findByTag(String tagKey, Integer num); + List findByTag(Long userId, String tagKey, Integer num); /** * 批量保存数据 diff --git a/src/main/java/com/baiyee/adcallback/service/impl/AdPlatformDeliveryServiceImpl.java b/src/main/java/com/baiyee/adcallback/service/impl/AdPlatformDeliveryServiceImpl.java index a21cab8..ad3d971 100644 --- a/src/main/java/com/baiyee/adcallback/service/impl/AdPlatformDeliveryServiceImpl.java +++ b/src/main/java/com/baiyee/adcallback/service/impl/AdPlatformDeliveryServiceImpl.java @@ -1,6 +1,6 @@ package com.baiyee.adcallback.service.impl; -import com.baiyee.adcallback.api.dto.PlateFormDTO; +import com.baiyee.adcallback.api.dto.RepeatFormDTO; import com.baiyee.adcallback.repository.TbPlatformDeliveryEntityRepository; import com.baiyee.adcallback.repository.entity.TbPlatformDeliveryEntity; import com.baiyee.adcallback.service.AdPlatformDeliveryService; @@ -22,8 +22,8 @@ public class AdPlatformDeliveryServiceImpl implements AdPlatformDeliveryService private final TbPlatformDeliveryEntityRepository tbPlatformDeliveryEntityRepository; @Override - public List findByTag(String tagKey, Integer num) { - return tbPlatformDeliveryEntityRepository.findByTag(tagKey, num); + public List findByTag(Long userId, String tagKey, Integer num) { + return tbPlatformDeliveryEntityRepository.findByTag(userId, tagKey, num); } @Override diff --git a/src/main/java/com/baiyee/adcallback/task/PlatFormRecordTask.java b/src/main/java/com/baiyee/adcallback/task/PlatFormRecordTask.java index ca746c0..f4040f1 100644 --- a/src/main/java/com/baiyee/adcallback/task/PlatFormRecordTask.java +++ b/src/main/java/com/baiyee/adcallback/task/PlatFormRecordTask.java @@ -10,6 +10,7 @@ import cn.hutool.http.HttpUtil; import cn.hutool.json.JSONObject; import cn.hutool.json.JSONUtil; import com.baiyee.adcallback.api.dto.PlateFormDTO; +import com.baiyee.adcallback.api.dto.RepeatFormDTO; import com.baiyee.adcallback.config.pojo.PlatformTransmitDTO; import com.baiyee.adcallback.repository.entity.TbPlatformCompanyEntity; import com.baiyee.adcallback.repository.entity.TbPlatformDeliveryEntity; @@ -79,26 +80,30 @@ public class PlatFormRecordTask { // tag进行分组 Map> listMap = dtoList.stream() .collect(Collectors.groupingBy(PlateFormDTO::getTag)); - List saveDataList = Lists.newArrayList(); + + List saveDataList = Lists.newArrayList(); for (Map.Entry> stringListEntry : listMap.entrySet()) { + List list = listMap.get(stringListEntry.getKey()); + List repeatFormDTOList = Convert.toList(RepeatFormDTO.class, list); + repeatFormDTOList.forEach(dto -> dto.setUserId(platform.getUserId())); // 去除重复数据 - Set originSet = - Sets.newHashSet(listMap.get(stringListEntry.getKey())); + Set originSet = + Sets.newHashSet(repeatFormDTOList); // 查询数据 - List tagLists = - adPlatformDeliveryService.findByTag(stringListEntry.getKey(), 0); + List tagLists = + adPlatformDeliveryService.findByTag(platform.getUserId(), stringListEntry.getKey(), 0); - Set querySet = Sets.newHashSet(tagLists); + Set querySet = Sets.newHashSet(tagLists); // 差集去除数据 - List differentData + List differentData = Lists.newArrayList(Sets.difference(originSet, querySet)); // 保存将要插入数据 saveDataList.addAll(differentData); } // 分批发送 - List> partition = Lists.partition(saveDataList, 500); + List> partition = Lists.partition(saveDataList, 500); int num = 0; - for (List formDTOList : partition) { + for (List formDTOList : partition) { PlatformTransmitDTO dto = new PlatformTransmitDTO(); dto.setList(formDTOList); dto.setAuthToken(authToken);