|  | @@ -5,23 +5,59 @@ import com.tzld.piaoquan.recommend.server.framework.common.User;
 | 
											
												
													
														|  |  import com.tzld.piaoquan.recommend.server.framework.recaller.AbstractFilter;
 |  |  import com.tzld.piaoquan.recommend.server.framework.recaller.AbstractFilter;
 | 
											
												
													
														|  |  import com.tzld.piaoquan.recommend.server.framework.recaller.FilterConfigInfo;
 |  |  import com.tzld.piaoquan.recommend.server.framework.recaller.FilterConfigInfo;
 | 
											
												
													
														|  |  import com.tzld.piaoquan.recommend.server.gen.recommend.RecommendRequest;
 |  |  import com.tzld.piaoquan.recommend.server.gen.recommend.RecommendRequest;
 | 
											
												
													
														|  | 
 |  | +import com.tzld.piaoquan.recommend.server.model.RecommendParam;
 | 
											
												
													
														|  |  import com.tzld.piaoquan.recommend.server.model.Video;
 |  |  import com.tzld.piaoquan.recommend.server.model.Video;
 | 
											
												
													
														|  | 
 |  | +import com.tzld.piaoquan.recommend.server.service.RecommendService;
 | 
											
												
													
														|  | 
 |  | +import com.tzld.piaoquan.recommend.server.service.ServiceBeanFactory;
 | 
											
												
													
														|  | 
 |  | +import com.tzld.piaoquan.recommend.server.service.filter.FilterParam;
 | 
											
												
													
														|  | 
 |  | +import com.tzld.piaoquan.recommend.server.service.filter.FilterResult;
 | 
											
												
													
														|  | 
 |  | +import com.tzld.piaoquan.recommend.server.service.filter.RegionFilterService;
 | 
											
												
													
														|  | 
 |  | +import com.tzld.piaoquan.recommend.server.service.recall.FilterParamFactory;
 | 
											
												
													
														|  | 
 |  | +import com.tzld.piaoquan.recommend.server.service.recall.RecallParam;
 | 
											
												
													
														|  | 
 |  | +import org.slf4j.Logger;
 | 
											
												
													
														|  | 
 |  | +import org.slf4j.LoggerFactory;
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  |  import java.util.List;
 |  |  import java.util.List;
 | 
											
												
													
														|  | 
 |  | +import java.util.stream.Collectors;
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  |  /**
 |  |  /**
 | 
											
												
													
														|  |   * @author sunxy
 |  |   * @author sunxy
 | 
											
												
													
														|  |   */
 |  |   */
 | 
											
												
													
														|  |  public class HistoryLongPeriodFilter extends AbstractFilter<Video> {
 |  |  public class HistoryLongPeriodFilter extends AbstractFilter<Video> {
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  | 
 |  | +    private static final Logger LOGGER = LoggerFactory.getLogger(HistoryLongPeriodFilter.class);
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +    private final RegionFilterService filterService;
 | 
											
												
													
														|  | 
 |  | +    private final RecommendService recommendService;
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  |      public HistoryLongPeriodFilter(FilterConfigInfo filterConfigInfo, RecommendRequest requestContext, User user) {
 |  |      public HistoryLongPeriodFilter(FilterConfigInfo filterConfigInfo, RecommendRequest requestContext, User user) {
 | 
											
												
													
														|  |          super(filterConfigInfo, requestContext, user);
 |  |          super(filterConfigInfo, requestContext, user);
 | 
											
												
													
														|  | 
 |  | +        filterService = ServiceBeanFactory.getBean(RegionFilterService.class);
 | 
											
												
													
														|  | 
 |  | +        recommendService = ServiceBeanFactory.getBean(RecommendService.class);
 | 
											
												
													
														|  |      }
 |  |      }
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  |      @Override
 |  |      @Override
 | 
											
												
													
														|  |      public void doFilter(Candidate candidate, List<Video> list) {
 |  |      public void doFilter(Candidate candidate, List<Video> list) {
 | 
											
												
													
														|  | -
 |  | 
 | 
											
												
													
														|  | 
 |  | +        if (list == null || list.isEmpty()) {
 | 
											
												
													
														|  | 
 |  | +            return;
 | 
											
												
													
														|  | 
 |  | +        }
 | 
											
												
													
														|  | 
 |  | +        RecommendParam recommendParam = recommendService.genRecommendParam(requestContext, 1);
 | 
											
												
													
														|  | 
 |  | +        RecallParam recallParam = recommendService.convertToRecallParam(recommendParam);
 | 
											
												
													
														|  | 
 |  | +        FilterParam filterParam = FilterParamFactory.create(recallParam,
 | 
											
												
													
														|  | 
 |  | +                list.stream().map(Video::getVideoId).collect(Collectors.toList()));
 | 
											
												
													
														|  | 
 |  | +        filterParam.setForceTruncation(10000);
 | 
											
												
													
														|  | 
 |  | +        filterParam.setConcurrent(true);
 | 
											
												
													
														|  | 
 |  | +        filterParam.setNotUsePreView(false);
 | 
											
												
													
														|  | 
 |  | +        FilterResult filterResult = filterService.filter(filterParam);
 | 
											
												
													
														|  | 
 |  | +        LOGGER.info("HistoryLongPeriodFilter doFilter traceId:{}, filterResult:{}", requestContext.getRequestId(),
 | 
											
												
													
														|  | 
 |  | +                filterResult);
 | 
											
												
													
														|  | 
 |  | +        LOGGER.info("HistoryLongPeriodFilter doFilter traceId:{}, list:{}", requestContext.getRequestId(),
 | 
											
												
													
														|  | 
 |  | +                list.stream().map(Video::getVideoId).map(Object::toString).collect(Collectors.joining(",")));
 | 
											
												
													
														|  | 
 |  | +        if (filterResult != null && filterResult.getVideoIds() != null) {
 | 
											
												
													
														|  | 
 |  | +            list.removeIf(video -> !filterResult.getVideoIds().contains(video.getVideoId()));
 | 
											
												
													
														|  | 
 |  | +        }
 | 
											
												
													
														|  | 
 |  | +        LOGGER.info("HistoryLongPeriodFilter doFilter end traceId:{}, list:{}", requestContext.getRequestId(),
 | 
											
												
													
														|  | 
 |  | +                list.stream().map(Video::getVideoId).map(Object::toString).collect(Collectors.joining(",")));
 | 
											
												
													
														|  |      }
 |  |      }
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  |  }
 |  |  }
 |