浏览代码

feat:添加外层0层特征

zhaohaipeng 3 天之前
父节点
当前提交
0b5662616f

+ 3 - 3
recommend-server-service/src/main/java/com/tzld/piaoquan/recommend/server/feign/FlowPoolFeign.java

@@ -1,7 +1,7 @@
 package com.tzld.piaoquan.recommend.server.feign;
 
 import com.alibaba.fastjson.JSONObject;
-import com.tzld.piaoquan.recommend.server.feign.model.FlowPoolResponse;
+import com.tzld.piaoquan.recommend.server.feign.model.CommonResponse;
 import com.tzld.piaoquan.recommend.server.feign.model.FlowPoolVideoInfo;
 import org.springframework.cloud.openfeign.FeignClient;
 import org.springframework.web.bind.annotation.PostMapping;
@@ -13,8 +13,8 @@ import java.util.List;
 public interface FlowPoolFeign {
 
     @PostMapping("/flowpool/video/getFlowPoolVideo")
-    FlowPoolResponse<List<FlowPoolVideoInfo>> getFlowPoolVideo(@RequestBody JSONObject param);
+    CommonResponse<List<FlowPoolVideoInfo>> getFlowPoolVideo(@RequestBody JSONObject param);
 
     @PostMapping("/flowpool/video/remainViewCount")
-    FlowPoolResponse<List<FlowPoolVideoInfo>> remainViewCount(@RequestBody JSONObject param);
+    CommonResponse<List<FlowPoolVideoInfo>> remainViewCount(@RequestBody JSONObject param);
 }

+ 15 - 0
recommend-server-service/src/main/java/com/tzld/piaoquan/recommend/server/feign/GrowthManagerFeign.java

@@ -0,0 +1,15 @@
+package com.tzld.piaoquan.recommend.server.feign;
+
+import com.tzld.piaoquan.recommend.server.feign.model.CommonResponse;
+import com.tzld.piaoquan.recommend.server.feign.model.VideoCharacteristicInfo;
+import org.springframework.cloud.openfeign.FeignClient;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+
+@FeignClient(url = "https://tp-open.piaoquantv.com")
+public interface GrowthManagerFeign {
+
+    @GetMapping("/cgi/reply/getVideoCharacteristic")
+    CommonResponse<VideoCharacteristicInfo> getVideoCharacteristic(@RequestParam("rootSourceId") String rootSourceId);
+
+}

+ 1 - 1
recommend-server-service/src/main/java/com/tzld/piaoquan/recommend/server/feign/model/FlowPoolResponse.java → recommend-server-service/src/main/java/com/tzld/piaoquan/recommend/server/feign/model/CommonResponse.java

@@ -5,7 +5,7 @@ import lombok.ToString;
 
 @Data
 @ToString
-public class FlowPoolResponse<T> {
+public class CommonResponse<T> {
     private int code;
 
     private String msg;

+ 19 - 0
recommend-server-service/src/main/java/com/tzld/piaoquan/recommend/server/feign/model/VideoCharacteristicInfo.java

@@ -0,0 +1,19 @@
+package com.tzld.piaoquan.recommend.server.feign.model;
+
+import lombok.Data;
+import lombok.ToString;
+
+@Data
+@ToString
+public class VideoCharacteristicInfo {
+
+    private String ghId;
+
+    private String name;
+
+    private String videoId;
+
+    private String title;
+
+    private String cover;
+}

+ 3 - 0
recommend-server-service/src/main/java/com/tzld/piaoquan/recommend/server/model/RecommendParam.java

@@ -6,6 +6,7 @@ import lombok.NoArgsConstructor;
 import lombok.Setter;
 
 import java.util.List;
+import java.util.Map;
 import java.util.Set;
 
 /**
@@ -57,5 +58,7 @@ public class RecommendParam {
     private int recommendType;
     private Long requestVideoId;
     private String currentPageSource;
+
+    private Map<String, String> creativeInfoFeature;
 }
 

+ 40 - 0
recommend-server-service/src/main/java/com/tzld/piaoquan/recommend/server/service/RecommendService.java

@@ -1,5 +1,6 @@
 package com.tzld.piaoquan.recommend.server.service;
 
+import com.alibaba.fastjson.JSONObject;
 import com.ctrip.framework.apollo.spring.annotation.ApolloJsonValue;
 import com.google.common.base.Stopwatch;
 import com.google.common.base.Strings;
@@ -7,6 +8,9 @@ import com.google.common.cache.CacheBuilder;
 import com.google.common.cache.CacheLoader;
 import com.google.common.cache.LoadingCache;
 import com.tzld.piaoquan.recommend.server.common.RedisKeyConstants;
+import com.tzld.piaoquan.recommend.server.feign.GrowthManagerFeign;
+import com.tzld.piaoquan.recommend.server.feign.model.CommonResponse;
+import com.tzld.piaoquan.recommend.server.feign.model.VideoCharacteristicInfo;
 import com.tzld.piaoquan.recommend.server.gen.common.Result;
 import com.tzld.piaoquan.recommend.server.gen.recommend.*;
 import com.tzld.piaoquan.recommend.server.model.MachineInfo;
@@ -71,12 +75,17 @@ public class RecommendService {
     @Autowired
     private FeatureService featureService;
 
+    @Autowired
+    private GrowthManagerFeign growthManagerFeign;
+
     private ThreadLocal<Map<String, Object>> timerLogMapTL = ThreadLocal.withInitial(HashMap::new);
 
     @Value("${risk.video.filter.switch:true}")
     private boolean riskVideoFilterSwitch;
     @ApolloJsonValue("${risk.scene:[]}")
     private Set<Long> riskScenes;
+    @ApolloJsonValue("${creative.info.feature.channel.name:[公众号代运营-即转]}")
+    private Set<String> creativeInfoFeatureChannelNameSet;
 
     public static final String channelGroupPrefix = "alg_recsys_user_channel_group";
 
@@ -387,6 +396,10 @@ public class RecommendService {
         param.setRecommendType(recommendType);
         param.setRequestVideoId(request.getRequestVideoId());
         param.setCurrentPageSource(request.getCurrentPageSource());
+
+        Map<String, String> creativeInfoFeature = this.getCreativeInfoFeature(request.getRootSourceId(), channelName, request.getUserShareDepth());
+        param.setCreativeInfoFeature(creativeInfoFeature);
+
         return param;
     }
 
@@ -472,6 +485,7 @@ public class RecommendService {
         recallParam.setRecommendType(param.getRecommendType());
         recallParam.setRequestVideoId(param.getRequestVideoId());
         recallParam.setCurrentPageSource(param.getCurrentPageSource());
+        recallParam.setCreativeInfoFeature(param.getCreativeInfoFeature());
         return recallParam;
     }
 
@@ -503,6 +517,7 @@ public class RecommendService {
         rankParam.setRecommendType(param.getRecommendType());
         rankParam.setRequestVideoId(param.getRequestVideoId());
         rankParam.setCurrentPageSource(param.getCurrentPageSource());
+        rankParam.setCreativeInfoFeature(param.getCreativeInfoFeature());
         return rankParam;
     }
 
@@ -614,4 +629,29 @@ public class RecommendService {
         }
         return rtShareList;
     }
+
+    private Map<String, String> getCreativeInfoFeature(String rootSourceId, String channelName, int userShareDepth) {
+        Map<String, String> feature = new HashMap<>();
+        if (CollectionUtils.isEmpty(creativeInfoFeatureChannelNameSet) || StringUtils.isEmpty(channelName) || userShareDepth != 0) {
+            return feature;
+        }
+        if (!creativeInfoFeatureChannelNameSet.contains(channelName)) {
+            return feature;
+        }
+        try {
+            CommonResponse<VideoCharacteristicInfo> videoCharacteristic = growthManagerFeign.getVideoCharacteristic(rootSourceId);
+            if (videoCharacteristic.getCode() == 0) {
+                VideoCharacteristicInfo data = videoCharacteristic.getData();
+                feature.put("ghId", data.getGhId());
+                feature.put("name", data.getName());
+                feature.put("videoId", data.getVideoId());
+                feature.put("title", data.getTitle());
+            }
+        } catch (Exception e) {
+            log.error("getCreativeInfoFeature rootSourceId: {} \n", rootSourceId, e);
+        }
+
+
+        return feature;
+    }
 }

+ 3 - 3
recommend-server-service/src/main/java/com/tzld/piaoquan/recommend/server/service/flowpool/FlowPoolService.java

@@ -7,7 +7,7 @@ import com.google.common.collect.Maps;
 import com.tzld.piaoquan.recommend.server.common.RedisKeyConstants;
 import com.tzld.piaoquan.recommend.server.common.ThreadPoolFactory;
 import com.tzld.piaoquan.recommend.server.feign.FlowPoolFeign;
-import com.tzld.piaoquan.recommend.server.feign.model.FlowPoolResponse;
+import com.tzld.piaoquan.recommend.server.feign.model.CommonResponse;
 import com.tzld.piaoquan.recommend.server.feign.model.FlowPoolVideoInfo;
 import com.tzld.piaoquan.recommend.server.model.TripleConsumer;
 import com.tzld.piaoquan.recommend.server.model.Video;
@@ -288,7 +288,7 @@ public class FlowPoolService {
             paramJson.put("pageNum", pageNum++);
 
             log.info("[get DouHot flow pool video] paramJson:{}", paramJson);
-            FlowPoolResponse<List<FlowPoolVideoInfo>> response = flowPoolFeign.getFlowPoolVideo(paramJson);
+            CommonResponse<List<FlowPoolVideoInfo>> response = flowPoolFeign.getFlowPoolVideo(paramJson);
             if (0 != response.getCode()) {
                 log.error("[get DouHot flow pool video request error] responseJson: {}", response);
                 break;
@@ -395,7 +395,7 @@ public class FlowPoolService {
         for (List<JSONObject> videos : partition) {
             JSONObject paramJson = new JSONObject();
             paramJson.put("videos", videos);
-            FlowPoolResponse<List<FlowPoolVideoInfo>> response = flowPoolFeign.remainViewCount(paramJson);
+            CommonResponse<List<FlowPoolVideoInfo>> response = flowPoolFeign.remainViewCount(paramJson);
             if (0 != response.getCode()) {
                 log.error("[remain view count error] responseJson: {}", response);
                 continue;

+ 1 - 0
recommend-server-service/src/main/java/com/tzld/piaoquan/recommend/server/service/rank/RankParam.java

@@ -46,4 +46,5 @@ public class RankParam {
     private int recommendType;
     private Long requestVideoId;
     private String currentPageSource;
+    private Map<String, String> creativeInfoFeature;
 }

+ 3 - 0
recommend-server-service/src/main/java/com/tzld/piaoquan/recommend/server/service/rank/strategy/RankStrategy4RegionMergeModelV564.java

@@ -166,6 +166,9 @@ public class RankStrategy4RegionMergeModelV564 extends RankStrategy4RegionMergeM
             if (null != rtFeatureDumpsMap && !rtFeatureDumpsMap.isEmpty()) {
                 video.getMetaFeatureMap().put("rt", rtFeatureDumpsMap);
             }
+            if (MapUtils.isNotEmpty(param.getCreativeInfoFeature())) {
+                video.getMetaFeatureMap().put("creativeInfo", param.getCreativeInfoFeature());
+            }
             result.add(video);
         }
         ExtractVideoMergeCate.addOtherParam(result, videoBaseInfoMap);

+ 1 - 0
recommend-server-service/src/main/java/com/tzld/piaoquan/recommend/server/service/recall/RecallParam.java

@@ -46,4 +46,5 @@ public class RecallParam {
     private int recommendType;
     private Long requestVideoId;
     private String currentPageSource;
+    private Map<String, String> creativeInfoFeature;
 }