Browse Source

修复当天发表文章计数重复问题

yangxiaohui 10 months ago
parent
commit
3e421482cb

+ 14 - 1
long-article-recommend-service/src/main/java/com/tzld/longarticle/recommend/server/service/score/strategy/PublishTimesStrategy.java

@@ -16,6 +16,8 @@ import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
 import org.springframework.util.CollectionUtils;
+import java.util.function.Function;
+
 
 import java.util.*;
 import java.util.stream.Collectors;
@@ -48,7 +50,18 @@ public class PublishTimesStrategy implements ScoreStrategy {
         // 获取今日已发布内容
         String dateStr = DateUtils.getCurrentDateStr("yyyy-MM-dd");
         List<PublishSortLog> hisPublishContentList = publishSortLogRepository.findByDateStr(dateStr);
-        Map<String, List<PublishSortLog>> hisPublishedContentMap = hisPublishContentList.stream().collect(Collectors.groupingBy(PublishSortLog::getTitle));
+        Map<String, Set<PublishSortLog>> hisPublishedContentMap = hisPublishContentList.stream()
+                .collect(Collectors.groupingBy(
+                        PublishSortLog::getTitle,
+                        Collectors.collectingAndThen(
+                                Collectors.toMap(
+                                        PublishSortLog::getGhId, // 用于去重的字段,例如 id
+                                        Function.identity(),
+                                        (existing, replacement) -> existing // 如果有重复的 id,保留已有的记录
+                                ),
+                                map -> new HashSet<>(map.values()) // 将结果转换为 Set<PublishSortLog>
+                        )
+                ));
         Map<Integer, AccountPublishTimesConfig> indexPublishTimesMap = Arrays.stream(indexPublishTimesArr).collect(Collectors.toMap(AccountPublishTimesConfig::getIndex, o -> o));
         String[] contentPools = accountContentPoolConfigService.getContentPools(param.getAccountName());
         for (Content content : param.getContents()) {