wangyunpeng 11 月之前
父节点
当前提交
de0048d637

+ 2 - 2
long-article-recommend-service/src/main/java/com/tzld/longarticle/recommend/server/model/ArticleSortResponseData.java

@@ -10,6 +10,6 @@ import java.util.List;
 @Setter
 @Accessors(chain = true)
 public class ArticleSortResponseData {
-    private List<Content> rank_list;
-    private List<Content> filter_list;
+    private List<ArticleSortResponseDataItem> rank_list;
+    private List<ArticleSortResponseDataItem> filter_list;
 }

+ 13 - 0
long-article-recommend-service/src/main/java/com/tzld/longarticle/recommend/server/model/ArticleSortResponseDataItem.java

@@ -0,0 +1,13 @@
+package com.tzld.longarticle.recommend.server.model;
+
+import lombok.Getter;
+import lombok.Setter;
+import lombok.experimental.Accessors;
+
+@Getter
+@Setter
+@Accessors(chain = true)
+public class ArticleSortResponseDataItem {
+    private String id;
+    private String filterReason;
+}

+ 24 - 7
long-article-recommend-service/src/main/java/com/tzld/longarticle/recommend/server/service/RecommendService.java

@@ -1,9 +1,6 @@
 package com.tzld.longarticle.recommend.server.service;
 
-import com.tzld.longarticle.recommend.server.model.ArticleSortResponseData;
-import com.tzld.longarticle.recommend.server.model.Content;
-import com.tzld.longarticle.recommend.server.model.RecommendRequest;
-import com.tzld.longarticle.recommend.server.model.RecommendResponse;
+import com.tzld.longarticle.recommend.server.model.*;
 import com.tzld.longarticle.recommend.server.service.rank.RankParam;
 import com.tzld.longarticle.recommend.server.service.rank.RankResult;
 import com.tzld.longarticle.recommend.server.service.rank.RankService;
@@ -44,11 +41,31 @@ public class RecommendService {
         RankResult rankResult = rankService.rank(convertToRankParam(param, recallResult));
         log.info("rankResult {}", JSONUtils.toJson(rankResult));
 
+        return buildRecommendResponse(recallResult, rankResult, param.getPublishNum());
+    }
+
+    private RecommendResponse buildRecommendResponse(RecallResult recallResult, RankResult rankResult, Integer publishNum) {
         List<Content> contentList = rankResult.getContents();
-        List<Content> filterContentList = new ArrayList<>();
-        recallResult.getData().forEach(item -> filterContentList.addAll(item.getFilterContents()));
+        List<ArticleSortResponseDataItem> rankList = new ArrayList<>();
+        List<ArticleSortResponseDataItem> filterContentList = new ArrayList<>();
+        for (RecallResult.RecallData data : recallResult.getData()) {
+            if (CollectionUtils.isNotEmpty(data.getFilterContents())) {
+                for (Content filterContent : data.getFilterContents()) {
+                    ArticleSortResponseDataItem item = new ArticleSortResponseDataItem();
+                    BeanUtils.copyProperties(filterContent, item);
+                    filterContentList.add(item);
+                }
+            }
+        }
         ArticleSortResponseData data = new ArticleSortResponseData();
-        data.setRank_list(contentList.subList(0, Math.min(rankResult.getContents().size(), param.getPublishNum())));
+        if (CollectionUtils.isNotEmpty(contentList)) {
+            for (Content content : contentList) {
+                ArticleSortResponseDataItem item = new ArticleSortResponseDataItem();
+                BeanUtils.copyProperties(content, item);
+                rankList.add(item);
+            }
+        }
+        data.setRank_list(rankList.subList(0, Math.min(rankList.size(), publishNum)));
         data.setFilter_list(filterContentList);
 
         RecommendResponse response = new RecommendResponse();