丁云鹏 1 gadu atpakaļ
vecāks
revīzija
bf77fad378

+ 2 - 3
recommend-feature-client/src/main/java/com/tzld/piaoquan/recommend/feature/domain/video/base/UserFeature.java

@@ -37,7 +37,6 @@ public class UserFeature {
     }
 
 
-
     public void setDay1_cnt_features(UserActionFeature key) {
         this.day1_cnt_features = key;
         if (key == null)
@@ -91,9 +90,9 @@ public class UserFeature {
         return gson.toJson(this);
     }
 
-    public static UserFeature defaultInstance(String uid) {
+    public static UserFeature defaultInstance(String mid) {
         UserFeature userFeature = new UserFeature();
-        userFeature.setUid(uid);
+        userFeature.setMid(mid);
         userFeature.setUser_share_bucket_30days(null);
         userFeature.setUser_cycle_bucket_30days(null);
         userFeature.setUser_cycle_bucket_7days(null);

+ 0 - 20
recommend-feature-service/src/main/java/com/tzld/piaoquan/recommend/feature/model/UserActionFeature.java

@@ -1,20 +0,0 @@
-package com.tzld.piaoquan.recommend.feature.model;
-
-import lombok.Data;
-
-/**
- * @author dyp
- */
-@Data
-public class UserActionFeature {
-    private double exp_cnt;
-    private double click_cnt;
-    private double share_cnt;
-    private double return_cnt;
-
-    private double ctr;
-    private double str;
-    private double rov;
-    private double ros;
-
-}

+ 0 - 81
recommend-feature-service/src/main/java/com/tzld/piaoquan/recommend/feature/model/UserFeature.java

@@ -1,81 +0,0 @@
-package com.tzld.piaoquan.recommend.feature.model;
-
-import lombok.Data;
-
-/**
- * @author dyp
- */
-@Data
-public class UserFeature {
-    private String uid;
-    private String mid;
-    // 当天统计量信息
-    private UserActionFeature day1_cnt_features;
-    // 3天内统计量
-    private UserActionFeature day3_cnt_features;
-    // 7天内统计量
-    private UserActionFeature day7_cnt_features;
-    // 3个月统计量
-    private UserActionFeature month3_cnt_features;
-    // 用户行为周期
-    private String user_cycle_bucket_7days;
-    private String user_cycle_bucket_30days;
-    private String user_share_bucket_30days;
-
-    public void setMid(String key) {
-        this.mid = key;
-        if (key == null)
-            this.mid = "0";
-    }
-
-    public void setUid(String key) {
-        this.uid = key;
-        if (key == null)
-            this.uid = "0";
-    }
-
-
-    public void setDay1_cnt_features(UserActionFeature key) {
-        this.day1_cnt_features = key;
-        if (key == null)
-            this.day1_cnt_features = new UserActionFeature();
-    }
-
-    public void setDay3_cnt_features(UserActionFeature key) {
-        this.day3_cnt_features = key;
-        if (key == null)
-            this.day3_cnt_features = new UserActionFeature();
-    }
-
-    public void setDay7_cnt_features(UserActionFeature key) {
-        this.day7_cnt_features = key;
-        if (key == null)
-            this.day7_cnt_features = new UserActionFeature();
-    }
-
-    public void setMonth3_cnt_features(UserActionFeature key) {
-        this.month3_cnt_features = key;
-        if (key == null)
-            this.month3_cnt_features = new UserActionFeature();
-    }
-
-
-    public void setUser_cycle_bucket_7days(String key) {
-        this.user_cycle_bucket_7days = key;
-        if (key == null)
-            this.user_cycle_bucket_7days = "0";
-    }
-
-    public void setUser_cycle_bucket_30days(String key) {
-        this.user_cycle_bucket_30days = key;
-        if (key == null)
-            this.user_cycle_bucket_30days = "0";
-    }
-
-    public void setUser_share_bucket_30days(String key) {
-        this.user_share_bucket_30days = key;
-        if (key == null)
-            this.user_share_bucket_30days = "0";
-    }
-
-}

+ 0 - 126
recommend-feature-service/src/main/java/com/tzld/piaoquan/recommend/feature/model/VideoFeature.java

@@ -1,126 +0,0 @@
-package com.tzld.piaoquan.recommend.feature.model;
-
-import lombok.Data;
-
-/**
- * @author dyp
- */
-@Data
-public class VideoFeature {
-    private String videoId;
-
-    private String upId;
-
-    private String tags;
-
-    /**
-     * 有多个标题,暂时不会用到所以先不处理
-     * @since 2023-12-05
-     */
-    private String title;
-
-    private String titleLength;
-
-    private String playLength;
-
-    private String totalTime;
-
-    private String daysSinceUpload;
-
-
-    // 当天统计量信息
-    private UserActionFeature day1_cnt_features;
-    // 3天内统计量
-    private UserActionFeature day3_cnt_features;
-    // 7天内统计量
-    private UserActionFeature day7_cnt_features;
-    // 3个月统计量
-    private UserActionFeature month3_cnt_features;
-
-
-    public void setVideoId(String key){
-        if(key == null){
-            this.videoId = "0";
-        } else {
-            this.videoId = key;
-        }
-    }
-
-    public void setUpId(String key){
-        if(key == null){
-            this.upId = "0";
-        } else {
-            this.upId = key;
-        }
-    }
-
-    public void setTags(String key){
-        if(key == null){
-            this.tags = "0";
-        } else {
-            this.tags = key;
-        }
-    }
-
-    public void setTitle(String key){
-        if(key == null){
-            this.title = "0";
-        } else {
-            this.title = key;
-        }
-    }
-
-
-    public void setDay1_cnt_features(UserActionFeature feature){
-        this.day1_cnt_features = feature;
-    }
-
-
-    public void setDay3_cnt_features(UserActionFeature feature){
-        this.day3_cnt_features = feature;
-
-    }
-
-    public void setDay7_cnt_features(UserActionFeature feature){
-        this.day7_cnt_features = feature;
-
-    }
-
-    public void setMonth3_cnt_features(UserActionFeature feature){
-        this.month3_cnt_features= feature;
-
-    }
-
-    public void setTitleLength(String key) {
-        if(key == null){
-            this.titleLength = "0";
-        } else {
-            this.titleLength = key;
-        }
-    }
-
-
-    public void setDaysSinceUpload(String key) {
-        if(key == null){
-            this.daysSinceUpload = "0";
-        } else {
-            this.daysSinceUpload = key;
-        }
-    }
-
-    public void setPlayLength(String key) {
-        if(key == null){
-            this.playLength = "0";
-        } else {
-            this.playLength = key;
-        }
-    }
-
-    public void setTotalTime(String key) {
-        if(key == null){
-            this.totalTime = "0";
-        } else {
-            this.totalTime = key;
-        }
-    }
-}

+ 4 - 2
recommend-feature-service/src/main/java/com/tzld/piaoquan/recommend/feature/service/AbstractFeatureService.java

@@ -39,6 +39,7 @@ public abstract class AbstractFeatureService<K, V> {
     protected long defaultExpire;
     protected Function<K, String> keyFunc;
     protected TypeToken<V> typeToken;
+    protected Function<K, V> defaultValueFunc;
 
     private int defaultMaximumSize = 10000;
     // 单位秒
@@ -53,6 +54,7 @@ public abstract class AbstractFeatureService<K, V> {
         this.emptyDataExpire = -1;
         this.defaultExpire = -1;
         this.keyFunc = k -> String.valueOf(k);
+        this.defaultValueFunc = k -> null;
 
         initLocalCache(defaultMaximumSize, defaultRefreshAfterWrite, defaultExpireAfterWrite, defaultExpireAfterAccess);
     }
@@ -91,7 +93,7 @@ public abstract class AbstractFeatureService<K, V> {
     private V load(K key) {
         V feature = getFromCache(key);
         if (feature == null) {
-            feature = JSONUtils.fromJson(emptyData, typeToken, null);
+            feature = defaultValueFunc.apply(key);
         }
 //        if (feature == null) {
 //            feature = getFromSource(key);
@@ -133,7 +135,7 @@ public abstract class AbstractFeatureService<K, V> {
         Map<K, V> cacheFeatureMap = getFromCache(keys);
         for (int i = 0; i < keys.size(); i++) {
             if (cacheFeatureMap.get(keys.get(i)) == null) {
-                cacheFeatureMap.put(keys.get(i), JSONUtils.fromJson(emptyData, typeToken, null));
+                cacheFeatureMap.put(keys.get(i), defaultValueFunc.apply(keys.get(i)));
             }
         }
         return cacheFeatureMap;

+ 7 - 2
recommend-feature-service/src/main/java/com/tzld/piaoquan/recommend/feature/service/FeatureConverter.java

@@ -1,7 +1,12 @@
 package com.tzld.piaoquan.recommend.feature.service;
 
 import com.google.common.base.Strings;
-import com.tzld.piaoquan.recommend.feature.model.*;
+import com.tzld.piaoquan.recommend.feature.domain.video.base.ItemFeature;
+import com.tzld.piaoquan.recommend.feature.domain.video.base.UserActionFeature;
+import com.tzld.piaoquan.recommend.feature.domain.video.base.UserFeature;
+import com.tzld.piaoquan.recommend.feature.model.AdActionFeature;
+import com.tzld.piaoquan.recommend.feature.model.AdItemFeature;
+import com.tzld.piaoquan.recommend.feature.model.UserAdFeature;
 import com.tzld.piaoquan.recommend.feature.model.feature.*;
 
 /**
@@ -52,7 +57,7 @@ public class FeatureConverter {
     }
 
 
-    public static VideoFeatureProto convert(VideoFeature videoFeature) {
+    public static VideoFeatureProto convert(ItemFeature videoFeature) {
         if (videoFeature == null) {
             return null;
         }

+ 2 - 1
recommend-feature-service/src/main/java/com/tzld/piaoquan/recommend/feature/service/UserFeatureService.java

@@ -1,7 +1,7 @@
 package com.tzld.piaoquan.recommend.feature.service;
 
 import com.google.common.reflect.TypeToken;
-import com.tzld.piaoquan.recommend.feature.model.UserFeature;
+import com.tzld.piaoquan.recommend.feature.domain.video.base.UserFeature;
 import com.tzld.piaoquan.recommend.feature.model.common.Result;
 import com.tzld.piaoquan.recommend.feature.model.feature.GetUserFeatureRequest;
 import com.tzld.piaoquan.recommend.feature.model.feature.GetUserFeatureResponse;
@@ -23,6 +23,7 @@ public class UserFeatureService extends AbstractFeatureService<String, UserFeatu
         super.keyFunc = k -> String.format("user:video:%s", k);
         super.typeToken = new TypeToken<UserFeature>() {
         };
+        super.defaultValueFunc = k -> UserFeature.defaultInstance(k);
 
         int maximumSize = 10000;
         int refreshAfterWrite = 60;

+ 6 - 5
recommend-feature-service/src/main/java/com/tzld/piaoquan/recommend/feature/service/VideoFeatureService.java

@@ -1,7 +1,7 @@
 package com.tzld.piaoquan.recommend.feature.service;
 
 import com.google.common.reflect.TypeToken;
-import com.tzld.piaoquan.recommend.feature.model.VideoFeature;
+import com.tzld.piaoquan.recommend.feature.domain.video.base.ItemFeature;
 import com.tzld.piaoquan.recommend.feature.model.common.Result;
 import com.tzld.piaoquan.recommend.feature.model.feature.GetAllVideoFeatureRequest;
 import com.tzld.piaoquan.recommend.feature.model.feature.GetAllVideoFeatureResponse;
@@ -21,15 +21,16 @@ import java.util.Map;
  */
 @Service
 @Slf4j
-public class VideoFeatureService extends AbstractFeatureService<String, VideoFeature> {
+public class VideoFeatureService extends AbstractFeatureService<String, ItemFeature> {
 
     public VideoFeatureService() {
         super.emptyData = "{}";
         super.emptyDataExpire = 0;
         super.defaultExpire = 0;
         super.keyFunc = k -> String.format("video:%s", k);
-        super.typeToken = new TypeToken<VideoFeature>() {
+        super.typeToken = new TypeToken<ItemFeature>() {
         };
+        super.defaultValueFunc = k -> ItemFeature.defaultInstance(k);
 
         int maximumSize = 10000;
         int refreshAfterWrite = 60;
@@ -47,7 +48,7 @@ public class VideoFeatureService extends AbstractFeatureService<String, VideoFea
                     .setResult(Result.newBuilder().setCode(1))
                     .build();
         }
-        VideoFeature videoFeature = super.get(videoId);
+        ItemFeature videoFeature = super.get(videoId);
         GetVideoFeatureResponse.Builder builder = GetVideoFeatureResponse.newBuilder();
         builder.setResult(Result.newBuilder().setCode(1));
         if (videoFeature != null) {
@@ -71,7 +72,7 @@ public class VideoFeatureService extends AbstractFeatureService<String, VideoFea
         }
         List<String> videoIds = request.getVideoIdList();
 
-        Map<String, VideoFeature> videoFeatureMap = super.getAll(videoIds);
+        Map<String, ItemFeature> videoFeatureMap = super.getAll(videoIds);
         if (MapUtils.isEmpty(videoFeatureMap)) {
             return GetAllVideoFeatureResponse.newBuilder()
                     .setResult(Result.newBuilder().setCode(1))