瀏覽代碼

Merge branch 'dev_v1.0'

gufengshou1 1 年之前
父節點
當前提交
3b64313ad6

+ 1 - 1
ad-engine-commons/pom.xml

@@ -10,7 +10,7 @@
     <modelVersion>4.0.0</modelVersion>
 
     <artifactId>ad-engine-commons</artifactId>
-    <version>1.0.0</version>
+    <version>1.0.1</version>
     <properties>
         <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
         <maven.compiler.source>1.8</maven.compiler.source>

+ 101 - 5
ad-engine-commons/src/main/java/com/tzld/piaoquan/ad/engine/commons/base/AdItemBytesFeature.java

@@ -24,7 +24,7 @@ public class AdItemBytesFeature {
 
     //private final byte[] creativeCode;
 
-
+    // adid 维度,也就是planid
     private Map<String, byte[]> day1_cnt_features;
     // 3天内统计量
     private Map<String, byte[]> day3_cnt_features;
@@ -34,6 +34,28 @@ public class AdItemBytesFeature {
     private Map<String, byte[]> month3_cnt_features;
 
 
+    // creative 维度
+    private Map<String, byte[]> creative_day1_cnt_features;
+    // 3天内统计量
+    private Map<String, byte[]> creative_day3_cnt_features;
+    // 7天内统计量
+    private Map<String, byte[]> creative_day7_cnt_features;
+    // 3个月统计量
+    private Map<String, byte[]> creative_month3_cnt_features;
+
+
+    // advertiserid 维度
+    private Map<String, byte[]> advertiser_day1_cnt_features;
+    // 3天内统计量
+    private Map<String, byte[]> advertiser_day3_cnt_features;
+    // 7天内统计量
+    private Map<String, byte[]> advertiser_day7_cnt_features;
+    // 3个月统计量
+    private Map<String, byte[]> advertiser_month3_cnt_features;
+
+
+
+
     public AdItemBytesFeature(AdItemFeature feature) {
 
         adId = feature.getAdId().getBytes();
@@ -46,7 +68,7 @@ public class AdItemBytesFeature {
         // creativeCode = feature.getCreativeCode().getBytes();
 
 
-
+        // adid 维度  planid
         // 1 day statistic
         day1_cnt_features = new HashMap<String, byte[]>();
         day1_cnt_features.put("view", String.valueOf(feature.getDay1_cnt_features().getAdView()).getBytes());
@@ -55,7 +77,6 @@ public class AdItemBytesFeature {
         day1_cnt_features.put("ctr", String.valueOf(feature.getDay1_cnt_features().getCtr()).getBytes());
         day1_cnt_features.put("cvr", String.valueOf(feature.getDay1_cnt_features().getCvr()).getBytes());
 
-
         // 3 day statistic
         day3_cnt_features = new HashMap<String, byte[]>();
         day3_cnt_features.put("view", String.valueOf(feature.getDay3_cnt_features().getAdView()).getBytes());
@@ -64,7 +85,6 @@ public class AdItemBytesFeature {
         day3_cnt_features.put("ctr", String.valueOf(feature.getDay3_cnt_features().getCtr()).getBytes());
         day3_cnt_features.put("cvr", String.valueOf(feature.getDay3_cnt_features().getCvr()).getBytes());
 
-
         // 7 day statistic
         day7_cnt_features = new HashMap<String, byte[]>();
         day7_cnt_features.put("view", String.valueOf(feature.getDay7_cnt_features().getAdView()).getBytes());
@@ -73,7 +93,6 @@ public class AdItemBytesFeature {
         day7_cnt_features.put("ctr", String.valueOf(feature.getDay7_cnt_features().getCtr()).getBytes());
         day7_cnt_features.put("cvr", String.valueOf(feature.getDay7_cnt_features().getCvr()).getBytes());
 
-
         // 3 month statisic
         month3_cnt_features = new HashMap<String, byte[]>();
         month3_cnt_features.put("view", String.valueOf(feature.getMonth3_cnt_features().getAdView()).getBytes());
@@ -82,6 +101,83 @@ public class AdItemBytesFeature {
         month3_cnt_features.put("ctr", String.valueOf(feature.getMonth3_cnt_features().getCtr()).getBytes());
         month3_cnt_features.put("cvr", String.valueOf(feature.getMonth3_cnt_features().getCvr()).getBytes());
 
+
+        // creative 维度  creativeid
+        // 1 day statistic
+        creative_day1_cnt_features = new HashMap<String, byte[]>();
+        creative_day1_cnt_features.put("view", String.valueOf(feature.getCreative_1day_cnt_features().getAdView()).getBytes());
+        creative_day1_cnt_features.put("click", String.valueOf(feature.getCreative_1day_cnt_features().getAdClick()).getBytes());
+        creative_day1_cnt_features.put("conversion", String.valueOf(feature.getCreative_1day_cnt_features().getAdConversion()).getBytes());
+        creative_day1_cnt_features.put("ctr", String.valueOf(feature.getCreative_1day_cnt_features().getCtr()).getBytes());
+        creative_day1_cnt_features.put("cvr", String.valueOf(feature.getCreative_1day_cnt_features().getCvr()).getBytes());
+
+        // 3 day statistic
+        creative_day3_cnt_features = new HashMap<String, byte[]>();
+        creative_day3_cnt_features.put("view", String.valueOf(feature.getDay3_cnt_features().getAdView()).getBytes());
+        creative_day3_cnt_features.put("click", String.valueOf(feature.getDay3_cnt_features().getAdClick()).getBytes());
+        creative_day3_cnt_features.put("conversion", String.valueOf(feature.getDay3_cnt_features().getAdConversion()).getBytes());
+        creative_day3_cnt_features.put("ctr", String.valueOf(feature.getDay3_cnt_features().getCtr()).getBytes());
+        creative_day3_cnt_features.put("cvr", String.valueOf(feature.getDay3_cnt_features().getCvr()).getBytes());
+
+        // 7 day statistic
+        creative_day7_cnt_features = new HashMap<String, byte[]>();
+        creative_day7_cnt_features.put("view", String.valueOf(feature.getDay7_cnt_features().getAdView()).getBytes());
+        creative_day7_cnt_features.put("click", String.valueOf(feature.getDay7_cnt_features().getAdClick()).getBytes());
+        creative_day7_cnt_features.put("conversion", String.valueOf(feature.getDay7_cnt_features().getAdConversion()).getBytes());
+        creative_day7_cnt_features.put("ctr", String.valueOf(feature.getDay7_cnt_features().getCtr()).getBytes());
+        creative_day7_cnt_features.put("cvr", String.valueOf(feature.getDay7_cnt_features().getCvr()).getBytes());
+
+
+        // 3 month statisic
+        creative_month3_cnt_features = new HashMap<String, byte[]>();
+        creative_month3_cnt_features.put("view", String.valueOf(feature.getMonth3_cnt_features().getAdView()).getBytes());
+        creative_month3_cnt_features.put("click", String.valueOf(feature.getMonth3_cnt_features().getAdClick()).getBytes());
+        creative_month3_cnt_features.put("conversion", String.valueOf(feature.getMonth3_cnt_features().getAdConversion()).getBytes());
+        creative_month3_cnt_features.put("ctr", String.valueOf(feature.getMonth3_cnt_features().getCtr()).getBytes());
+        creative_month3_cnt_features.put("cvr", String.valueOf(feature.getMonth3_cnt_features().getCvr()).getBytes());
+
+
+
+        // advertiser 维度  planid
+        // 1 day statistic
+        advertiser_day1_cnt_features = new HashMap<String, byte[]>();
+        advertiser_day1_cnt_features.put("view", String.valueOf(feature.getAdvertiser_1day_cnt_features().getAdView()).getBytes());
+        advertiser_day1_cnt_features.put("click", String.valueOf(feature.getAdvertiser_1day_cnt_features().getAdClick()).getBytes());
+        advertiser_day1_cnt_features.put("conversion", String.valueOf(feature.getAdvertiser_1day_cnt_features().getAdConversion()).getBytes());
+        advertiser_day1_cnt_features.put("ctr", String.valueOf(feature.getAdvertiser_1day_cnt_features().getCtr()).getBytes());
+        advertiser_day1_cnt_features.put("cvr", String.valueOf(feature.getAdvertiser_1day_cnt_features().getCvr()).getBytes());
+
+
+        // 3 day statistic
+        advertiser_day3_cnt_features = new HashMap<String, byte[]>();
+        advertiser_day3_cnt_features.put("view", String.valueOf(feature.getAdvertiser_3day_cnt_features().getAdView()).getBytes());
+        advertiser_day3_cnt_features.put("click", String.valueOf(feature.getAdvertiser_3day_cnt_features().getAdClick()).getBytes());
+        advertiser_day3_cnt_features.put("conversion", String.valueOf(feature.getAdvertiser_3day_cnt_features().getAdConversion()).getBytes());
+        advertiser_day3_cnt_features.put("ctr", String.valueOf(feature.getAdvertiser_3day_cnt_features().getCtr()).getBytes());
+        advertiser_day3_cnt_features.put("cvr", String.valueOf(feature.getAdvertiser_3day_cnt_features().getCvr()).getBytes());
+
+
+        // 7 day statistic
+        advertiser_day7_cnt_features = new HashMap<String, byte[]>();
+        advertiser_day7_cnt_features.put("view", String.valueOf(feature.getAdvertiser_7day_cnt_features().getAdView()).getBytes());
+        advertiser_day7_cnt_features.put("click", String.valueOf(feature.getAdvertiser_7day_cnt_features().getAdClick()).getBytes());
+        advertiser_day7_cnt_features.put("conversion", String.valueOf(feature.getAdvertiser_7day_cnt_features().getAdConversion()).getBytes());
+        advertiser_day7_cnt_features.put("ctr", String.valueOf(feature.getAdvertiser_7day_cnt_features().getCtr()).getBytes());
+        advertiser_day7_cnt_features.put("cvr", String.valueOf(feature.getAdvertiser_7day_cnt_features().getCvr()).getBytes());
+
+
+        // 3 month statisic
+        advertiser_month3_cnt_features = new HashMap<String, byte[]>();
+        advertiser_month3_cnt_features.put("view", String.valueOf(feature.getAdvertiser_3month_cnt_features().getAdView()).getBytes());
+        advertiser_month3_cnt_features.put("click", String.valueOf(feature.getAdvertiser_3month_cnt_features().getAdClick()).getBytes());
+        advertiser_month3_cnt_features.put("conversion", String.valueOf(feature.getAdvertiser_3month_cnt_features().getAdConversion()).getBytes());
+        advertiser_month3_cnt_features.put("ctr", String.valueOf(feature.getAdvertiser_3month_cnt_features().getCtr()).getBytes());
+        advertiser_month3_cnt_features.put("cvr", String.valueOf(feature.getAdvertiser_3month_cnt_features().getCvr()).getBytes());
+
+
+
+
+
     }
 
 }

+ 81 - 22
ad-engine-commons/src/main/java/com/tzld/piaoquan/ad/engine/commons/base/AdItemFeature.java

@@ -43,20 +43,56 @@ public class AdItemFeature {
     private String creativeCode = "0";
 
 
-
+    // adid 计划维度统计信息
     // 当天统计量信息
-    private AdActionFeature day1_cnt_features=new AdActionFeature();
+    @Setter
+    @NotNull
+    private AdActionFeature day1_cnt_features = new AdActionFeature();
     // 3天内统计量
-    private AdActionFeature day3_cnt_features=new AdActionFeature();
+    @Setter
+    @NotNull
+    private AdActionFeature day3_cnt_features = new AdActionFeature();
     // 7天内统计量
-    private AdActionFeature day7_cnt_features=new AdActionFeature();
+    @Setter
+    @NotNull
+    private AdActionFeature day7_cnt_features = new AdActionFeature();
     // 3个月统计量
-    private AdActionFeature month3_cnt_features=new AdActionFeature();
+    @Setter
+    @NotNull
+    private AdActionFeature month3_cnt_features = new AdActionFeature();
+
 
+    // 创意维度统计信息
+    @Setter
+    @NotNull
+    private AdActionFeature creative_1day_cnt_features = new AdActionFeature();
+    @Setter
+    @NotNull
+    private AdActionFeature creative_3day_cnt_features = new AdActionFeature();
+    @Setter
+    @NotNull
+    private AdActionFeature creative_7day_cnt_features = new AdActionFeature();
+    @Setter
+    @NotNull
+    private AdActionFeature creative_3month_cnt_features = new AdActionFeature();
+
+    // 广告主维度统计信息
+    @Setter
+    @NotNull
+    private AdActionFeature advertiser_1day_cnt_features = new AdActionFeature();
+    @Setter
+    @NotNull
+    private AdActionFeature advertiser_3day_cnt_features = new AdActionFeature();
+    @Setter
+    @NotNull
+    private AdActionFeature advertiser_7day_cnt_features = new AdActionFeature();
+    @Setter
+    @NotNull
+    private AdActionFeature advertiser_3month_cnt_features = new AdActionFeature();
 
 
-    public void setAdId(String key){
-        if(key == null){
+    public void setAdId(String key) {
+        if (key == null) {
             this.adId = "0";
         } else {
             this.adId = key;
@@ -64,16 +100,16 @@ public class AdItemFeature {
     }
 
 
-    public void setAdvertiserId(String key){
-        if(key == null){
+    public void setAdvertiserId(String key) {
+        if (key == null) {
             this.advertiserId = "0";
         } else {
             this.advertiserId = key;
         }
     }
 
-    public void setCampaignId(String key){
-        if(key == null){
+    public void setCampaignId(String key) {
+        if (key == null) {
             this.campaignId = "0";
         } else {
             this.campaignId = key;
@@ -81,8 +117,8 @@ public class AdItemFeature {
     }
 
 
-    public void setCreativeId(String key){
-        if(key == null){
+    public void setCreativeId(String key) {
+        if (key == null) {
             this.creativeId = "0";
         } else {
             this.creativeId = key;
@@ -90,29 +126,52 @@ public class AdItemFeature {
     }
 
 
+    //creative
+    public void setCreative_1day_cnt_features(AdActionFeature feature) {
+        this.creative_1day_cnt_features = feature;
+    }
+
+
+    public void setCreative_3day_cnt_features(AdActionFeature feature) {
+        this.creative_3day_cnt_features = feature;
 
-    public void setDay1_cnt_features(AdActionFeature feature) {
-        this.day1_cnt_features = feature;
     }
 
+    public void setCreative_7day_cnt_features(AdActionFeature feature) {
+        this.creative_7day_cnt_features = feature;
+
+    }
+
+    public void setCreative_3month_cnt_features(AdActionFeature feature) {
+        this.creative_3month_cnt_features = feature;
+
+    }
 
-    public void setDay3_cnt_features(AdActionFeature feature) {
-        this.day3_cnt_features = feature;
 
+    // advertiser 维度
+    public void setAdvertiser_1day_cnt_features(AdActionFeature feature) {
+        this.advertiser_1day_cnt_features = feature;
     }
 
-    public void setDay7_cnt_features(AdActionFeature feature) {
-        this.day7_cnt_features = feature;
+
+    public void setAdvertiser_3day_cnt_features(AdActionFeature feature) {
+        this.advertiser_3day_cnt_features = feature;
 
     }
 
-    public void setMonth3_cnt_features(AdActionFeature feature) {
-        this.month3_cnt_features = feature;
+    public void setAdvertiser_7day_cnt_features(AdActionFeature feature) {
+        this.advertiser_7day_cnt_features = feature;
 
     }
 
+    public void setAdvertiser_3month_cnt_features(AdActionFeature feature) {
+        this.advertiser_3month_cnt_features = feature;
+
+    }
+
+
     public String getKey() {
-        return this.adId;
+        return this.creativeId;
     }
 
     public String getValue() {

+ 0 - 4
ad-engine-commons/src/main/java/com/tzld/piaoquan/ad/engine/commons/base/AdRequestContext.java

@@ -22,10 +22,6 @@ public class AdRequestContext {
     private String region="-1";
     private String city="-1";
 
-    // video信息
-//    private String headVideoId;
-//    private String PageSource;
-
     // position 信息
     private String ownAdPositionId;
 

+ 0 - 7
ad-engine-commons/src/main/java/com/tzld/piaoquan/ad/engine/commons/base/AdRequestContextBytesFeature.java

@@ -18,13 +18,6 @@ public class AdRequestContextBytesFeature {
     private final byte[] region;
     private final byte[] city;
 
-    // position 等信息
-    // private final byte[] headVideoId;
-    // private final byte[] pageSource;
-
-    // position 信息
-    // private final byte[] ownAdPositionId;
-
 
     public AdRequestContextBytesFeature(AdRequestContext requestContext) {
         apptype = requestContext.getApptype().getBytes();

+ 0 - 90
ad-engine-commons/src/main/java/com/tzld/piaoquan/ad/engine/commons/base/UserAdBytesFeature.java

@@ -10,48 +10,6 @@ public class UserAdBytesFeature {
 
     private final byte[] mid;
 
-    private final byte[] gender;
-    private final byte[] user_type;
-    private final byte[] gmt_create;
-    private final byte[] tags;
-    private final byte[] category_name;
-    private final byte[] isvip;
-    private final byte[] isreward;
-    private final byte[] isad;
-    private final byte[] isgood;
-
-    private final byte[] first_up_datetime;
-    private final byte[] last_up_datetime;
-    private final byte[] next_to_last_up_datetime;
-    private final byte[] videos; // 上传视频数量
-    private final byte[] idols; // 关注人数
-    private final byte[] fans;  // 粉丝数
-    private final byte[] play_count;  // 播放人数
-    private final byte[] play_count_total;  // 累计播放次数
-
-    private final byte[] total_reward;
-    private final byte[] currentday_reward;
-    private final byte[] reward_person;
-    private final byte[] total_reward_times;
-
-    private final byte[] reward_videos;
-    private final byte[] total_price;
-    private final byte[] currentday_price;
-    private final byte[] total_price_times;
-    private final byte[] total_price_person;
-    private final byte[] total_price_videos;
-    private final byte[] cgrain_user_type;
-    private final byte[] identity_tagname;
-
-
-    private final byte[] operation_tags;
-    private final byte[] identity_tag_id;
-    private final byte[] identity_create_time;
-    private final byte[] country;
-    private final byte[] province;
-    private final byte[] city;
-
-
     // 当天统计量信息
     private Map<String, byte[]> day1_cnt_features;
     // 3天内统计量
@@ -66,49 +24,6 @@ public class UserAdBytesFeature {
         this.mid = feature.getMid().getBytes();
 
 
-        this.gender = feature.getGender().getBytes();
-        this.user_type = feature.getUser_type().getBytes();
-        this.gmt_create = feature.getGmt_create().getBytes();
-        this.tags = feature.getTags().getBytes() ;
-        this.category_name = feature.getCategory_name().getBytes();
-        this.isvip = feature.getIsvip().getBytes();
-        this.isreward = feature.getIsreward().getBytes();
-        this.isad = feature.getIsad().getBytes();
-        this.isgood = feature.getIsgood().getBytes();
-
-        this.first_up_datetime = feature.getFirst_up_datetime().getBytes();
-        this.last_up_datetime = feature.getLast_up_datetime().getBytes();
-        this.next_to_last_up_datetime = feature.getNext_to_last_up_datetime().getBytes();
-        this.videos = feature.getVideos().getBytes(); // 上传视频数量
-        this.idols = feature.getIdols().getBytes(); // 关注人数
-        this.fans = feature.getFans().getBytes();  // 粉丝数
-        this.play_count = feature.getPlay_count().getBytes();  // 播放人数
-        this.play_count_total = feature.getPlay_count_total().getBytes();  // 累计播放次数
-
-        this.total_reward = feature.getTotal_reward().getBytes();
-        this.currentday_reward = feature.getCurrentday_reward().getBytes();
-        this.reward_person = feature.getReward_person().getBytes();
-        this.total_reward_times = feature.getTotal_reward_times().getBytes();
-
-        this.reward_videos = feature.getReward_videos().getBytes();
-        this.total_price = feature.getTotal_price().getBytes();
-        this.currentday_price = feature.getCurrentday_price().getBytes();
-        this.total_price_times = feature.getTotal_price_times().getBytes();
-        this.total_price_person = feature.getTotal_price_person().getBytes();
-        this.total_price_videos = feature.getTotal_price_videos().getBytes();
-        this.cgrain_user_type = feature.getCgrain_user_type().getBytes();
-        this.identity_tagname = feature.getIdentity_tagname().getBytes();
-
-
-        this.operation_tags = feature.getOperation_tags().getBytes();
-        this.identity_tag_id = feature.getIdentity_tag_id().getBytes();
-        this.identity_create_time = feature.getIdentity_create_time().getBytes();
-        this.country = feature.getCountry().getBytes();
-        this.province = feature.getProvince().getBytes();
-        this.city = feature.getCity().getBytes();
-
-
-
         // 1 day statistic
         day1_cnt_features = new HashMap<String, byte[]>();
         day1_cnt_features.put("view", String.valueOf(feature.getDay1_cnt_features().getAdView()).getBytes());
@@ -119,7 +34,6 @@ public class UserAdBytesFeature {
 
 
 
-
         // 3 day statistic
         day3_cnt_features = new HashMap<String, byte[]>();
         day3_cnt_features.put("view", String.valueOf(feature.getDay3_cnt_features().getAdView()).getBytes());
@@ -146,9 +60,5 @@ public class UserAdBytesFeature {
         month3_cnt_features.put("ctr", String.valueOf(feature.getMonth3_cnt_features().getCtr()).getBytes());
         month3_cnt_features.put("cvr", String.valueOf(feature.getMonth3_cnt_features().getCvr()).getBytes());
 
-
-
     }
-
-
 }

+ 0 - 49
ad-engine-commons/src/main/java/com/tzld/piaoquan/ad/engine/commons/base/UserAdFeature.java

@@ -16,55 +16,6 @@ public class UserAdFeature {
 
     private String mid = "0";
 
-    private String gender = "0";
-
-    private String user_type = "0";
-
-    private String gmt_create = "0";
-
-    private String tags = "0";
-
-    private String category_name = "0";
-
-    private String isvip = "0";
-
-    private String isreward = "0";
-
-    private String isad = "0";
-
-    private String isgood = "0";
-
-    private String first_up_datetime = "0";
-    private String last_up_datetime = "0";
-    private String next_to_last_up_datetime = "0";
-    private String videos = "0"; // 上传视频数量
-    private String idols = "0"; // 关注人数
-    private String fans = "0";  // 粉丝数
-    private String play_count = "0";  // 播放人数
-    private String play_count_total = "0";  // 累计播放次数
-
-    private String total_reward = "0";
-    private String currentday_reward = "0";
-    private String reward_person = "0";
-    private String total_reward_times = "0";
-
-    private String reward_videos = "0";
-    private String total_price = "0";
-    private String currentday_price = "0";
-    private String total_price_times = "0";
-    private String total_price_person = "0";
-    private String total_price_videos = "0";
-    private String cgrain_user_type = "0";
-    private String identity_tagname = "0";
-
-
-    private String operation_tags = "0";
-    private String identity_tag_id = "0";
-    private String identity_create_time = "0";
-    private String country = "0";
-    private String province = "0";
-    private String city = "0";
-
 
     // 当天统计量信息
     private AdActionFeature day1_cnt_features=new AdActionFeature();

+ 64 - 3
ad-engine-commons/src/main/java/com/tzld/piaoquan/ad/engine/commons/enums/VlogAdFeatureGroup.java

@@ -6,7 +6,6 @@ public enum VlogAdFeatureGroup {
     MACHINEINFO_MODEL,
     MACHINEINFO_PLATFORM,
     MACHINEINFO_SDKVERSION,
-    MACHINEINFO_SYSTEM,
     MACHINEINFO_WECHATVERSION,
 
 
@@ -23,8 +22,6 @@ public enum VlogAdFeatureGroup {
     CAMPAIGIN,
 
 
-
-
     USER_1DAY_EXP,
     USER_1DAY_CLICK,
     USER_1DAY_CTR,
@@ -67,6 +64,70 @@ public enum VlogAdFeatureGroup {
     ITEM_3MONTH_CVR,
 
 
+    CREATIVE_1DAY_EXP,
+    CREATIVE_1DAY_CLICK,
+    CREATIVE_1DAY_CTR,
+    CREATIVE_1DAY_CVR,
+
+    CREATIVE_3DAY_EXP,
+    CREATIVE_3DAY_CLICK,
+    CREATIVE_3DAY_CTR,
+    CREATIVE_3DAY_CVR,
+
+    CREATIVE_7DAY_EXP,
+    CREATIVE_7DAY_CLICK,
+    CREATIVE_7DAY_CTR,
+    CREATIVE_7DAY_CVR,
+
+    CREATIVE_3MONTH_EXP,
+    CREATIVE_3MONTH_CLICK,
+    CREATIVE_3MONTH_CTR,
+    CREATIVE_3MONTH_CVR,
+
+
+
+    ADVERID_1DAY_EXP,
+    ADVERID_1DAY_CLICK,
+    ADVERID_1DAY_CTR,
+    ADVERID_1DAY_CVR,
+
+    ADVERID_3DAY_EXP,
+    ADVERID_3DAY_CLICK,
+    ADVERID_3DAY_CTR,
+    ADVERID_3DAY_CVR,
+
+    ADVERID_7DAY_EXP,
+    ADVERID_7DAY_CLICK,
+    ADVERID_7DAY_CTR,
+    ADVERID_7DAY_CVR,
+
+    ADVERID_3MONTH_EXP,
+    ADVERID_3MONTH_CLICK,
+    ADVERID_3MONTH_CTR,
+    ADVERID_3MONTH_CVR,
+
+
+    // cross feature
+    CREATIVE_AND_HOUR,
+    ADVERID_AND_HOUR,
+    CREATIVE_AND_REGION,
+    ADVERID_AND_REGION,
+    CREATIVE_AND_MACHINEINFO_MODEL,
+    ADVERID_AND_MACHINEINFO_MODEL,
+
+    CREATIVE_AND_MACHINEINFO_BRAND,
+    ADVERID_AND_MACHINEINFO_BRAND,
+
+    CREATIVE_AND_MACHINEINFO_SDK,
+    ADVERID_AND_MACHINEINFO_SDK,
+
+    CREATIVE_AND_USER_3MONTH_CTR,
+    ADVERID_AND_USER_3MONTH_CTR,
+
+    USER_3MONTH_CTR_AND_ITEM_7DAY_CTR,
+    USER_3MONTH_CTR_AND_ITEM_3DAY_CTR,
+
+
     ;
 
 

+ 9 - 0
ad-engine-commons/src/main/java/com/tzld/piaoquan/ad/engine/commons/score/feature/LRBytesFeatureExtractorBase.java

@@ -55,6 +55,15 @@ public abstract class LRBytesFeatureExtractorBase {
         features.putAll(g, featureList);
     }
 
+    // 增加交叉特征的方法
+    void makeFea(VlogAdFeatureGroup group, final byte[] left, final byte[] right) {
+        FeatureGroup g = makeGroup(group);
+        BaseFeature feature = utils.makeFea(group.ordinal(), left, right);
+        features.put(g, feature);
+    }
+
+
+
     public ListMultimap<FeatureGroup, BaseFeature> getFeatures() {
         return features;
     }

+ 84 - 6
ad-engine-commons/src/main/java/com/tzld/piaoquan/ad/engine/commons/score/feature/VlogAdCtrLRFeatureExtractor.java

@@ -10,7 +10,6 @@ import com.tzld.piaoquan.recommend.server.gen.recommend.LRSamples;
 import com.tzld.piaoquan.recommend.server.gen.recommend.BaseFeature;
 
 
-
 import java.util.ArrayList;
 import java.util.List;
 
@@ -23,15 +22,18 @@ public class VlogAdCtrLRFeatureExtractor extends LRBytesFeatureExtractorBase {
     // TODO
     // 补充待抽取的context feature
     public void getContextFeatures(AdRequestContextBytesFeature requestContextBytes) {
+
         makeFea(VlogAdFeatureGroup.MACHINEINFO_BRAND, requestContextBytes.getMachineinfo_brand());
         makeFea(VlogAdFeatureGroup.MACHINEINFO_MODEL, requestContextBytes.getMachineinfo_model());
         makeFea(VlogAdFeatureGroup.MACHINEINFO_SDKVERSION, requestContextBytes.getMachineinfo_sdkversion());
-        makeFea(VlogAdFeatureGroup.MACHINEINFO_WECHATVERSION, requestContextBytes.getMachineinfo_brand());
+        makeFea(VlogAdFeatureGroup.MACHINEINFO_WECHATVERSION, requestContextBytes.getMachineinfo_wechatversion());
+
 
         makeFea(VlogAdFeatureGroup.DAY, requestContextBytes.getWeek());
         makeFea(VlogAdFeatureGroup.WEEK, requestContextBytes.getWeek());
         makeFea(VlogAdFeatureGroup.HOUR, requestContextBytes.getHour());
-
+        makeFea(VlogAdFeatureGroup.REGION, requestContextBytes.getRegion());
+        makeFea(VlogAdFeatureGroup.CITY, requestContextBytes.getCity());
     }
 
     //TODO
@@ -72,8 +74,6 @@ public class VlogAdCtrLRFeatureExtractor extends LRBytesFeatureExtractorBase {
         makeFea(VlogAdFeatureGroup.CAMPAIGIN, item.getCampaignId());
         makeFea(VlogAdFeatureGroup.ADVERID, item.getAdvertiserId());
 
-
-
         // 1day features
         makeFea(VlogAdFeatureGroup.ITEM_1DAY_EXP, item.getDay1_cnt_features().get("view"));
         makeFea(VlogAdFeatureGroup.ITEM_1DAY_CLICK, item.getDay1_cnt_features().get("click"));
@@ -100,8 +100,85 @@ public class VlogAdCtrLRFeatureExtractor extends LRBytesFeatureExtractorBase {
         makeFea(VlogAdFeatureGroup.ITEM_3MONTH_CTR, item.getMonth3_cnt_features().get("ctr"));
         makeFea(VlogAdFeatureGroup.ITEM_3MONTH_CVR, item.getMonth3_cnt_features().get("cvr"));
 
+
+        // creativeid 维度
+        // 1day features
+        makeFea(VlogAdFeatureGroup.CREATIVE_1DAY_CTR, item.getCreative_day1_cnt_features().get("view"));
+        makeFea(VlogAdFeatureGroup.CREATIVE_1DAY_CLICK, item.getCreative_day1_cnt_features().get("click"));
+        makeFea(VlogAdFeatureGroup.CREATIVE_1DAY_CTR, item.getCreative_day1_cnt_features().get("ctr"));
+        makeFea(VlogAdFeatureGroup.CREATIVE_1DAY_CVR, item.getCreative_day1_cnt_features().get("cvr"));
+
+        // 3day features
+        makeFea(VlogAdFeatureGroup.CREATIVE_3DAY_EXP, item.getCreative_day3_cnt_features().get("view"));
+        makeFea(VlogAdFeatureGroup.CREATIVE_3DAY_CLICK, item.getCreative_day3_cnt_features().get("click"));
+        makeFea(VlogAdFeatureGroup.CREATIVE_3DAY_CTR, item.getCreative_day3_cnt_features().get("ctr"));
+        makeFea(VlogAdFeatureGroup.CREATIVE_3DAY_CVR, item.getCreative_day3_cnt_features().get("cvr"));
+
+        // 7day features
+        makeFea(VlogAdFeatureGroup.CREATIVE_7DAY_EXP, item.getCreative_day7_cnt_features().get("view"));
+        makeFea(VlogAdFeatureGroup.CREATIVE_7DAY_CLICK, item.getCreative_day7_cnt_features().get("click"));
+        makeFea(VlogAdFeatureGroup.CREATIVE_7DAY_CTR, item.getCreative_day7_cnt_features().get("ctr"));
+        makeFea(VlogAdFeatureGroup.CREATIVE_7DAY_CVR, item.getCreative_day7_cnt_features().get("cvr"));
+
+        // 3month features
+        makeFea(VlogAdFeatureGroup.CREATIVE_3MONTH_EXP, item.getCreative_month3_cnt_features().get("view"));
+        makeFea(VlogAdFeatureGroup.CREATIVE_3MONTH_CLICK, item.getCreative_month3_cnt_features().get("click"));
+        makeFea(VlogAdFeatureGroup.CREATIVE_3MONTH_CTR, item.getCreative_month3_cnt_features().get("ctr"));
+        makeFea(VlogAdFeatureGroup.CREATIVE_3MONTH_CVR, item.getCreative_month3_cnt_features().get("cvr"));
+
+
+        // advertiserid 维度
+        // 1day features
+        makeFea(VlogAdFeatureGroup.ADVERID_1DAY_EXP, item.getAdvertiser_day1_cnt_features().get("view"));
+        makeFea(VlogAdFeatureGroup.ADVERID_1DAY_CLICK, item.getAdvertiser_day1_cnt_features().get("click"));
+        makeFea(VlogAdFeatureGroup.ADVERID_1DAY_CTR, item.getAdvertiser_day1_cnt_features().get("ctr"));
+        makeFea(VlogAdFeatureGroup.ADVERID_1DAY_CVR, item.getAdvertiser_day1_cnt_features().get("cvr"));
+
+        // 3day features
+        makeFea(VlogAdFeatureGroup.ADVERID_3DAY_EXP, item.getCreative_day3_cnt_features().get("view"));
+        makeFea(VlogAdFeatureGroup.ADVERID_3DAY_CLICK, item.getCreative_day3_cnt_features().get("click"));
+        makeFea(VlogAdFeatureGroup.ADVERID_3DAY_CTR, item.getCreative_day3_cnt_features().get("ctr"));
+        makeFea(VlogAdFeatureGroup.ADVERID_3DAY_CVR, item.getCreative_day3_cnt_features().get("cvr"));
+
+        // 7day features
+        makeFea(VlogAdFeatureGroup.ADVERID_7DAY_EXP, item.getCreative_day7_cnt_features().get("view"));
+        makeFea(VlogAdFeatureGroup.ADVERID_7DAY_CLICK, item.getCreative_day7_cnt_features().get("click"));
+        makeFea(VlogAdFeatureGroup.ADVERID_7DAY_CTR, item.getCreative_day7_cnt_features().get("ctr"));
+        makeFea(VlogAdFeatureGroup.ADVERID_7DAY_CVR, item.getCreative_day7_cnt_features().get("cvr"));
+
+        // 3month features
+        makeFea(VlogAdFeatureGroup.ADVERID_3MONTH_EXP, item.getCreative_month3_cnt_features().get("view"));
+        makeFea(VlogAdFeatureGroup.ADVERID_3MONTH_CLICK, item.getCreative_month3_cnt_features().get("click"));
+        makeFea(VlogAdFeatureGroup.ADVERID_3MONTH_CTR, item.getCreative_month3_cnt_features().get("ctr"));
+        makeFea(VlogAdFeatureGroup.ADVERID_3MONTH_CVR, item.getCreative_month3_cnt_features().get("cvr"));
+
+
+    }
+
+    // 增加广告交叉特征
+    public void getCrossFeature(AdItemBytesFeature itemBytesFeature, AdRequestContextBytesFeature requestContextByte, UserAdBytesFeature userAdBytesFeature) {
+        // creative and hour
+        makeFea(VlogAdFeatureGroup.CREATIVE_AND_HOUR, itemBytesFeature.getCreative(), requestContextByte.getHour());
+        makeFea(VlogAdFeatureGroup.ADVERID_AND_HOUR, itemBytesFeature.getAdvertiserId(), requestContextByte.getHour());
+        makeFea(VlogAdFeatureGroup.CREATIVE_AND_REGION, itemBytesFeature.getCreative(), requestContextByte.getRegion());
+        makeFea(VlogAdFeatureGroup.ADVERID_AND_REGION, itemBytesFeature.getAdvertiserId(), requestContextByte.getRegion());
+        makeFea(VlogAdFeatureGroup.CREATIVE_AND_MACHINEINFO_MODEL, itemBytesFeature.getCreative(), requestContextByte.getMachineinfo_model());
+        makeFea(VlogAdFeatureGroup.ADVERID_AND_MACHINEINFO_MODEL, itemBytesFeature.getAdvertiserId(), requestContextByte.getMachineinfo_model());
+        makeFea(VlogAdFeatureGroup.CREATIVE_AND_MACHINEINFO_BRAND, itemBytesFeature.getCreative(), requestContextByte.getMachineinfo_brand());
+        makeFea(VlogAdFeatureGroup.ADVERID_AND_MACHINEINFO_BRAND, itemBytesFeature.getAdvertiserId(), requestContextByte.getMachineinfo_brand());
+
+        makeFea(VlogAdFeatureGroup.CREATIVE_AND_MACHINEINFO_SDK, itemBytesFeature.getCreative(), requestContextByte.getMachineinfo_sdkversion());
+        makeFea(VlogAdFeatureGroup.ADVERID_AND_MACHINEINFO_SDK, itemBytesFeature.getAdvertiserId(), requestContextByte.getMachineinfo_sdkversion());
+        makeFea(VlogAdFeatureGroup.CREATIVE_AND_USER_3MONTH_CTR, itemBytesFeature.getCreative(), userAdBytesFeature.getMonth3_cnt_features().get("ctr"));
+        makeFea(VlogAdFeatureGroup.ADVERID_AND_USER_3MONTH_CTR, itemBytesFeature.getAdvertiserId(), userAdBytesFeature.getMonth3_cnt_features().get("ctr"));
+
+        makeFea(VlogAdFeatureGroup.USER_3MONTH_CTR_AND_ITEM_7DAY_CTR, userAdBytesFeature.getMonth3_cnt_features().get("ctr"), itemBytesFeature.getCreative_day7_cnt_features().get("ctr"));
+        makeFea(VlogAdFeatureGroup.USER_3MONTH_CTR_AND_ITEM_3DAY_CTR, userAdBytesFeature.getMonth3_cnt_features().get("ctr"), itemBytesFeature.getCreative_day3_cnt_features().get("ctr"));
+
+
     }
 
+
     @Override
     public synchronized LRSamples single(UserAdBytesFeature userAdBytesFeature,
                                          AdItemBytesFeature videoBytesFeature,
@@ -111,12 +188,13 @@ public class VlogAdCtrLRFeatureExtractor extends LRBytesFeatureExtractorBase {
         getUserFeatures(userAdBytesFeature);
         getContextFeatures(requestContextBytesFeature);
         getItemFeature(videoBytesFeature);
+        getCrossFeature(videoBytesFeature, requestContextBytesFeature, userAdBytesFeature);
 
         LRSamples.Builder lr = com.tzld.piaoquan.recommend.server.gen.recommend.LRSamples.newBuilder();
         lr.setGroupNum(groupCount);
         List<FeatureGroup> keys = new ArrayList<>(features.keySet());
         int count = 0;
-        for(FeatureGroup group : keys) {
+        for (FeatureGroup group : keys) {
             List<BaseFeature> fea = features.get(group);
             GroupedFeature.Builder gf = GroupedFeature.newBuilder();
             gf.setGroup(group);

+ 2 - 2
ad-engine-service/pom.xml

@@ -21,13 +21,13 @@
         <dependency>
             <groupId>com.tzld.piaoquan</groupId>
             <artifactId>ad-engine-commons</artifactId>
-            <version>1.0.0</version>
+            <version>1.0.1</version>
         </dependency>
 
         <dependency>
             <groupId>com.tzld.piaoquan</groupId>
             <artifactId>recommend-feature-client</artifactId>
-            <version>1.0.0</version>
+            <version>1.0.1</version>
         </dependency>
 
     </dependencies>

+ 1 - 1
ad-engine-service/src/main/java/com/tzld/piaoquan/ad/engine/service/score/FeatureRemoteService.java

@@ -88,7 +88,7 @@ public class FeatureRemoteService {
 
         feature.setAdId(Long.parseLong(proto.getAdId()));
         feature.setItemFeature(FeatureConvert.convertToJava(proto));
-
+        System.out.println(feature);
         return feature;
     }
 

+ 40 - 75
ad-engine-service/src/main/java/com/tzld/piaoquan/ad/engine/service/score/convert/FeatureConvert.java

@@ -13,90 +13,27 @@ public class FeatureConvert {
     public static UserAdFeatureProto convertToProto(UserAdFeature userAdFeature) {
         UserAdFeatureProto.Builder builder = UserAdFeatureProto.newBuilder();
         builder.setMid(userAdFeature.getMid());
-        builder.setGender(userAdFeature.getGender());
-        builder.setUserType(userAdFeature.getUser_type());
-        builder.setGmtCreate(userAdFeature.getGmt_create());
-        builder.setTags(userAdFeature.getTags());
-        builder.setCategoryName(userAdFeature.getCategory_name());
-        builder.setIsvip(userAdFeature.getIsvip());
-        builder.setIsreward(userAdFeature.getIsreward());
-        builder.setIsad(userAdFeature.getIsad());
-        builder.setIsgood(userAdFeature.getIsgood());
-        builder.setFirstUpDatetime(userAdFeature.getFirst_up_datetime());
-        builder.setLastUpDatetime(userAdFeature.getLast_up_datetime());
-        builder.setNextToLastUpDatetime(userAdFeature.getNext_to_last_up_datetime());
-        builder.setVideos(userAdFeature.getVideos());
-        builder.setIdols(userAdFeature.getIdols());
-        builder.setFans(userAdFeature.getFans());
-        builder.setPlayCount(userAdFeature.getPlay_count());
-        builder.setPlayCountTotal(userAdFeature.getPlay_count_total());
-        builder.setTotalReward(userAdFeature.getTotal_reward());
-        builder.setCurrentdayReward(userAdFeature.getCurrentday_reward());
-        builder.setRewardPerson(userAdFeature.getReward_person());
-        builder.setTotalRewardTimes(userAdFeature.getTotal_reward_times());
-        builder.setRewardVideos(userAdFeature.getReward_videos());
-        builder.setTotalPrice(userAdFeature.getTotal_price());
-        builder.setCurrentdayPrice(userAdFeature.getCurrentday_price());
-        builder.setTotalPriceTimes(userAdFeature.getTotal_price_times());
-        builder.setTotalPricePerson(userAdFeature.getTotal_price_person());
-        builder.setTotalPriceVideos(userAdFeature.getTotal_price_videos());
-        builder.setCgrainUserType(userAdFeature.getCgrain_user_type());
-        builder.setIdentityTagname(userAdFeature.getIdentity_tagname());
-        builder.setOperationTags(userAdFeature.getOperation_tags());
-        builder.setIdentityTagId(userAdFeature.getIdentity_tag_id());
-        builder.setIdentityCreateTime(userAdFeature.getIdentity_create_time());
-        builder.setCountry(userAdFeature.getCountry());
-        builder.setProvince(userAdFeature.getProvince());
-        builder.setCity(userAdFeature.getCity());
 
         builder.setDay1CntFeatures(convertToProto(userAdFeature.getDay1_cnt_features()));
         builder.setDay3CntFeatures(convertToProto(userAdFeature.getDay3_cnt_features()));
         builder.setDay7CntFeatures(convertToProto(userAdFeature.getDay7_cnt_features()));
         builder.setMonth3CntFeatures(convertToProto(userAdFeature.getMonth3_cnt_features()));
 
+        //TODO
+
         return builder.build();
     }
 
-    public static UserAdFeature convertToJava(UserAdFeatureProto userAdFeatureProto){
-            UserAdFeature userAdFeature = new UserAdFeature();
-            userAdFeature.setMid(userAdFeatureProto.getMid());
-            userAdFeature.setGender(userAdFeatureProto.getGender());
-            userAdFeature.setUser_type(userAdFeatureProto.getUserType());
-            userAdFeature.setGmt_create(userAdFeatureProto.getGmtCreate());
-            userAdFeature.setTags(userAdFeatureProto.getTags());
-            userAdFeature.setCategory_name(userAdFeatureProto.getCategoryName());
-            userAdFeature.setIsvip(userAdFeatureProto.getIsvip());
-            userAdFeature.setIsreward(userAdFeatureProto.getIsreward());
-            userAdFeature.setIsad(userAdFeatureProto.getIsad());
-            userAdFeature.setIsgood(userAdFeatureProto.getIsgood());
-            userAdFeature.setFirst_up_datetime(userAdFeatureProto.getFirstUpDatetime());
-            userAdFeature.setLast_up_datetime(userAdFeatureProto.getLastUpDatetime());
-            userAdFeature.setNext_to_last_up_datetime(userAdFeatureProto.getNextToLastUpDatetime());
-            userAdFeature.setVideos(userAdFeatureProto.getVideos());
-            userAdFeature.setIdols(userAdFeatureProto.getIdols());
-            userAdFeature.setFans(userAdFeatureProto.getFans());
-            userAdFeature.setPlay_count(userAdFeatureProto.getPlayCount());
-            userAdFeature.setPlay_count_total(userAdFeatureProto.getPlayCountTotal());
-            userAdFeature.setTotal_reward(userAdFeatureProto.getTotalReward());
-            userAdFeature.setCurrentday_reward(userAdFeatureProto.getCurrentdayReward());
-            userAdFeature.setReward_person(userAdFeatureProto.getRewardPerson());
-            userAdFeature.setTotal_price_times(userAdFeatureProto.getTotalRewardTimes());
-            userAdFeature.setReward_videos(userAdFeatureProto.getRewardVideos());
-            userAdFeature.setTotal_price(userAdFeatureProto.getTotalPrice());
-            userAdFeature.setCurrentday_price(userAdFeatureProto.getCurrentdayPrice());
-            userAdFeature.setTotal_price_times(userAdFeatureProto.getTotalPriceTimes());
-            userAdFeature.setTotal_price_person(userAdFeatureProto.getTotalPricePerson());
-            userAdFeature.setTotal_price_videos(userAdFeatureProto.getTotalPriceVideos());
-            userAdFeature.setCgrain_user_type(userAdFeatureProto.getCgrainUserType());
-            userAdFeature.setIdentity_tagname(userAdFeatureProto.getIdentityTagname());
-            userAdFeature.setOperation_tags(userAdFeatureProto.getOperationTags());
-            userAdFeature.setIdentity_tag_id(userAdFeatureProto.getIdentityTagId());
-            userAdFeature.setIdentity_create_time(userAdFeatureProto.getIdentityCreateTime());
-            userAdFeature.setDay1_cnt_features(convertToJava(userAdFeatureProto.getDay1CntFeatures()));
-            userAdFeature.setDay3_cnt_features(convertToJava(userAdFeatureProto.getDay3CntFeatures()));
-            userAdFeature.setDay7_cnt_features(convertToJava(userAdFeatureProto.getDay7CntFeatures()));
-            userAdFeature.setMonth3_cnt_features(convertToJava(userAdFeatureProto.getMonth3CntFeatures()));
-            return userAdFeature;
+    public static UserAdFeature convertToJava(UserAdFeatureProto userAdFeatureProto) {
+        UserAdFeature userAdFeature = new UserAdFeature();
+        userAdFeature.setMid(userAdFeatureProto.getMid());
+
+        userAdFeature.setDay1_cnt_features(convertToJava(userAdFeatureProto.getDay1CntFeatures()));
+        userAdFeature.setDay3_cnt_features(convertToJava(userAdFeatureProto.getDay3CntFeatures()));
+        userAdFeature.setDay7_cnt_features(convertToJava(userAdFeatureProto.getDay7CntFeatures()));
+        userAdFeature.setMonth3_cnt_features(convertToJava(userAdFeatureProto.getMonth3CntFeatures()));
+
+        return userAdFeature;
     }
 
     public static AdActionFeatureProto convertToProto(AdActionFeature adActionFeature) {
@@ -108,6 +45,7 @@ public class FeatureConvert {
         builder.setCvr(adActionFeature.getCvr());
         return builder.build();
     }
+
     public static AdActionFeature convertToJava(AdActionFeatureProto adActionFeatureProto) {
         AdActionFeature adActionFeature = new AdActionFeature();
         adActionFeature.setAdView(adActionFeatureProto.getAdView());
@@ -127,13 +65,29 @@ public class FeatureConvert {
         adItemFeature.setCampaignId(adItemFeatureProto.getCampaignId());
         adItemFeature.setCampaignCode(adItemFeatureProto.getCampaignCode());
         adItemFeature.setCreativeId(adItemFeatureProto.getCreativeId());
+        //TODO 补充creative advertiser等维度信息
         adItemFeature.setDay1_cnt_features(convertToJava(adItemFeatureProto.getDay1CntFeatures()));
         adItemFeature.setDay3_cnt_features(convertToJava(adItemFeatureProto.getDay3CntFeatures()));
         adItemFeature.setDay7_cnt_features(convertToJava(adItemFeatureProto.getDay7CntFeatures()));
         adItemFeature.setMonth3_cnt_features(convertToJava(adItemFeatureProto.getMonth3CntFeatures()));
+
+        adItemFeature.setCreative_1day_cnt_features(convertToJava(adItemFeatureProto.getCreative1DayCntFeatures()));
+        adItemFeature.setCreative_3day_cnt_features(convertToJava(adItemFeatureProto.getCreative3DayCntFeatures()));
+        adItemFeature.setCreative_7day_cnt_features(convertToJava(adItemFeatureProto.getCreative7DayCntFeatures()));
+        adItemFeature.setCreative_3month_cnt_features(convertToJava(adItemFeatureProto.getCreative3MonthCntFeatures()));
+
+        adItemFeature.setAdvertiser_1day_cnt_features(convertToJava(adItemFeatureProto.getAdvertiser1DayCntFeatures()));
+        adItemFeature.setAdvertiser_3day_cnt_features(convertToJava(adItemFeatureProto.getAdvertiser3DayCntFeatures()));
+        adItemFeature.setAdvertiser_7day_cnt_features(convertToJava(adItemFeatureProto.getAdvertiser7DayCntFeatures()));
+        adItemFeature.setAdvertiser_3month_cnt_features(convertToJava(adItemFeatureProto.getAdvertiser3MonthCntFeatures()));
+
+
+
         return adItemFeature;
+
     }
 
+
     public static AdItemFeatureProto convertToProto(AdItemFeature adItemFeature) {
         AdItemFeatureProto.Builder builder = AdItemFeatureProto.newBuilder();
         builder.setAdId(adItemFeature.getAdId());
@@ -148,6 +102,17 @@ public class FeatureConvert {
         builder.setDay3CntFeatures(convertToProto(adItemFeature.getDay3_cnt_features()));
         builder.setDay7CntFeatures(convertToProto(adItemFeature.getDay7_cnt_features()));
         builder.setMonth3CntFeatures(convertToProto(adItemFeature.getMonth3_cnt_features()));
+
+        builder.setCreative1DayCntFeatures(convertToProto(adItemFeature.getCreative_1day_cnt_features()));
+        builder.setCreative3DayCntFeatures(convertToProto(adItemFeature.getCreative_3day_cnt_features()));
+        builder.setCreative7DayCntFeatures(convertToProto(adItemFeature.getCreative_7day_cnt_features()));
+        builder.setCreative3MonthCntFeatures(convertToProto(adItemFeature.getCreative_3month_cnt_features()));
+
+        builder.setAdvertiser1DayCntFeatures(convertToProto(adItemFeature.getAdvertiser_1day_cnt_features()));
+        builder.setAdvertiser3DayCntFeatures(convertToProto(adItemFeature.getAdvertiser_3day_cnt_features()));
+        builder.setAdvertiser7DayCntFeatures(convertToProto(adItemFeature.getAdvertiser_7day_cnt_features()));
+        builder.setAdvertiser3MonthCntFeatures(convertToProto(adItemFeature.getAdvertiser_3month_cnt_features()));
+
         return builder.build();
     }
 }