|
@@ -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();
|