gufengshou1 1 anno fa
parent
commit
abdc8adbf7

+ 1504 - 0
recommend-feature-client/src/main/java/com/tzld/piaoquan/recommend/feature/model/feature/AdItemFeatureProto.java

@@ -156,6 +156,110 @@ private static final long serialVersionUID = 0L;
 
             break;
           }
+          case 106: {
+            com.tzld.piaoquan.recommend.feature.model.feature.AdActionFeatureProto.Builder subBuilder = null;
+            if (creative1DayCntFeatures_ != null) {
+              subBuilder = creative1DayCntFeatures_.toBuilder();
+            }
+            creative1DayCntFeatures_ = input.readMessage(com.tzld.piaoquan.recommend.feature.model.feature.AdActionFeatureProto.parser(), extensionRegistry);
+            if (subBuilder != null) {
+              subBuilder.mergeFrom(creative1DayCntFeatures_);
+              creative1DayCntFeatures_ = subBuilder.buildPartial();
+            }
+
+            break;
+          }
+          case 114: {
+            com.tzld.piaoquan.recommend.feature.model.feature.AdActionFeatureProto.Builder subBuilder = null;
+            if (creative3DayCntFeatures_ != null) {
+              subBuilder = creative3DayCntFeatures_.toBuilder();
+            }
+            creative3DayCntFeatures_ = input.readMessage(com.tzld.piaoquan.recommend.feature.model.feature.AdActionFeatureProto.parser(), extensionRegistry);
+            if (subBuilder != null) {
+              subBuilder.mergeFrom(creative3DayCntFeatures_);
+              creative3DayCntFeatures_ = subBuilder.buildPartial();
+            }
+
+            break;
+          }
+          case 122: {
+            com.tzld.piaoquan.recommend.feature.model.feature.AdActionFeatureProto.Builder subBuilder = null;
+            if (creative7DayCntFeatures_ != null) {
+              subBuilder = creative7DayCntFeatures_.toBuilder();
+            }
+            creative7DayCntFeatures_ = input.readMessage(com.tzld.piaoquan.recommend.feature.model.feature.AdActionFeatureProto.parser(), extensionRegistry);
+            if (subBuilder != null) {
+              subBuilder.mergeFrom(creative7DayCntFeatures_);
+              creative7DayCntFeatures_ = subBuilder.buildPartial();
+            }
+
+            break;
+          }
+          case 130: {
+            com.tzld.piaoquan.recommend.feature.model.feature.AdActionFeatureProto.Builder subBuilder = null;
+            if (creative3MonthCntFeatures_ != null) {
+              subBuilder = creative3MonthCntFeatures_.toBuilder();
+            }
+            creative3MonthCntFeatures_ = input.readMessage(com.tzld.piaoquan.recommend.feature.model.feature.AdActionFeatureProto.parser(), extensionRegistry);
+            if (subBuilder != null) {
+              subBuilder.mergeFrom(creative3MonthCntFeatures_);
+              creative3MonthCntFeatures_ = subBuilder.buildPartial();
+            }
+
+            break;
+          }
+          case 138: {
+            com.tzld.piaoquan.recommend.feature.model.feature.AdActionFeatureProto.Builder subBuilder = null;
+            if (advertiser1DayCntFeatures_ != null) {
+              subBuilder = advertiser1DayCntFeatures_.toBuilder();
+            }
+            advertiser1DayCntFeatures_ = input.readMessage(com.tzld.piaoquan.recommend.feature.model.feature.AdActionFeatureProto.parser(), extensionRegistry);
+            if (subBuilder != null) {
+              subBuilder.mergeFrom(advertiser1DayCntFeatures_);
+              advertiser1DayCntFeatures_ = subBuilder.buildPartial();
+            }
+
+            break;
+          }
+          case 146: {
+            com.tzld.piaoquan.recommend.feature.model.feature.AdActionFeatureProto.Builder subBuilder = null;
+            if (advertiser3DayCntFeatures_ != null) {
+              subBuilder = advertiser3DayCntFeatures_.toBuilder();
+            }
+            advertiser3DayCntFeatures_ = input.readMessage(com.tzld.piaoquan.recommend.feature.model.feature.AdActionFeatureProto.parser(), extensionRegistry);
+            if (subBuilder != null) {
+              subBuilder.mergeFrom(advertiser3DayCntFeatures_);
+              advertiser3DayCntFeatures_ = subBuilder.buildPartial();
+            }
+
+            break;
+          }
+          case 154: {
+            com.tzld.piaoquan.recommend.feature.model.feature.AdActionFeatureProto.Builder subBuilder = null;
+            if (advertiser7DayCntFeatures_ != null) {
+              subBuilder = advertiser7DayCntFeatures_.toBuilder();
+            }
+            advertiser7DayCntFeatures_ = input.readMessage(com.tzld.piaoquan.recommend.feature.model.feature.AdActionFeatureProto.parser(), extensionRegistry);
+            if (subBuilder != null) {
+              subBuilder.mergeFrom(advertiser7DayCntFeatures_);
+              advertiser7DayCntFeatures_ = subBuilder.buildPartial();
+            }
+
+            break;
+          }
+          case 162: {
+            com.tzld.piaoquan.recommend.feature.model.feature.AdActionFeatureProto.Builder subBuilder = null;
+            if (advertiser3MonthCntFeatures_ != null) {
+              subBuilder = advertiser3MonthCntFeatures_.toBuilder();
+            }
+            advertiser3MonthCntFeatures_ = input.readMessage(com.tzld.piaoquan.recommend.feature.model.feature.AdActionFeatureProto.parser(), extensionRegistry);
+            if (subBuilder != null) {
+              subBuilder.mergeFrom(advertiser3MonthCntFeatures_);
+              advertiser3MonthCntFeatures_ = subBuilder.buildPartial();
+            }
+
+            break;
+          }
           default: {
             if (!parseUnknownField(
                 input, unknownFields, extensionRegistry, tag)) {
@@ -596,6 +700,214 @@ private static final long serialVersionUID = 0L;
     return getMonth3CntFeatures();
   }
 
+  public static final int CREATIVE_1DAY_CNT_FEATURES_FIELD_NUMBER = 13;
+  private com.tzld.piaoquan.recommend.feature.model.feature.AdActionFeatureProto creative1DayCntFeatures_;
+  /**
+   * <code>.AdActionFeatureProto creative_1day_cnt_features = 13;</code>
+   * @return Whether the creative1dayCntFeatures field is set.
+   */
+  @java.lang.Override
+  public boolean hasCreative1DayCntFeatures() {
+    return creative1DayCntFeatures_ != null;
+  }
+  /**
+   * <code>.AdActionFeatureProto creative_1day_cnt_features = 13;</code>
+   * @return The creative1dayCntFeatures.
+   */
+  @java.lang.Override
+  public com.tzld.piaoquan.recommend.feature.model.feature.AdActionFeatureProto getCreative1DayCntFeatures() {
+    return creative1DayCntFeatures_ == null ? com.tzld.piaoquan.recommend.feature.model.feature.AdActionFeatureProto.getDefaultInstance() : creative1DayCntFeatures_;
+  }
+  /**
+   * <code>.AdActionFeatureProto creative_1day_cnt_features = 13;</code>
+   */
+  @java.lang.Override
+  public com.tzld.piaoquan.recommend.feature.model.feature.AdActionFeatureProtoOrBuilder getCreative1DayCntFeaturesOrBuilder() {
+    return getCreative1DayCntFeatures();
+  }
+
+  public static final int CREATIVE_3DAY_CNT_FEATURES_FIELD_NUMBER = 14;
+  private com.tzld.piaoquan.recommend.feature.model.feature.AdActionFeatureProto creative3DayCntFeatures_;
+  /**
+   * <code>.AdActionFeatureProto creative_3day_cnt_features = 14;</code>
+   * @return Whether the creative3dayCntFeatures field is set.
+   */
+  @java.lang.Override
+  public boolean hasCreative3DayCntFeatures() {
+    return creative3DayCntFeatures_ != null;
+  }
+  /**
+   * <code>.AdActionFeatureProto creative_3day_cnt_features = 14;</code>
+   * @return The creative3dayCntFeatures.
+   */
+  @java.lang.Override
+  public com.tzld.piaoquan.recommend.feature.model.feature.AdActionFeatureProto getCreative3DayCntFeatures() {
+    return creative3DayCntFeatures_ == null ? com.tzld.piaoquan.recommend.feature.model.feature.AdActionFeatureProto.getDefaultInstance() : creative3DayCntFeatures_;
+  }
+  /**
+   * <code>.AdActionFeatureProto creative_3day_cnt_features = 14;</code>
+   */
+  @java.lang.Override
+  public com.tzld.piaoquan.recommend.feature.model.feature.AdActionFeatureProtoOrBuilder getCreative3DayCntFeaturesOrBuilder() {
+    return getCreative3DayCntFeatures();
+  }
+
+  public static final int CREATIVE_7DAY_CNT_FEATURES_FIELD_NUMBER = 15;
+  private com.tzld.piaoquan.recommend.feature.model.feature.AdActionFeatureProto creative7DayCntFeatures_;
+  /**
+   * <code>.AdActionFeatureProto creative_7day_cnt_features = 15;</code>
+   * @return Whether the creative7dayCntFeatures field is set.
+   */
+  @java.lang.Override
+  public boolean hasCreative7DayCntFeatures() {
+    return creative7DayCntFeatures_ != null;
+  }
+  /**
+   * <code>.AdActionFeatureProto creative_7day_cnt_features = 15;</code>
+   * @return The creative7dayCntFeatures.
+   */
+  @java.lang.Override
+  public com.tzld.piaoquan.recommend.feature.model.feature.AdActionFeatureProto getCreative7DayCntFeatures() {
+    return creative7DayCntFeatures_ == null ? com.tzld.piaoquan.recommend.feature.model.feature.AdActionFeatureProto.getDefaultInstance() : creative7DayCntFeatures_;
+  }
+  /**
+   * <code>.AdActionFeatureProto creative_7day_cnt_features = 15;</code>
+   */
+  @java.lang.Override
+  public com.tzld.piaoquan.recommend.feature.model.feature.AdActionFeatureProtoOrBuilder getCreative7DayCntFeaturesOrBuilder() {
+    return getCreative7DayCntFeatures();
+  }
+
+  public static final int CREATIVE_3MONTH_CNT_FEATURES_FIELD_NUMBER = 16;
+  private com.tzld.piaoquan.recommend.feature.model.feature.AdActionFeatureProto creative3MonthCntFeatures_;
+  /**
+   * <code>.AdActionFeatureProto creative_3month_cnt_features = 16;</code>
+   * @return Whether the creative3monthCntFeatures field is set.
+   */
+  @java.lang.Override
+  public boolean hasCreative3MonthCntFeatures() {
+    return creative3MonthCntFeatures_ != null;
+  }
+  /**
+   * <code>.AdActionFeatureProto creative_3month_cnt_features = 16;</code>
+   * @return The creative3monthCntFeatures.
+   */
+  @java.lang.Override
+  public com.tzld.piaoquan.recommend.feature.model.feature.AdActionFeatureProto getCreative3MonthCntFeatures() {
+    return creative3MonthCntFeatures_ == null ? com.tzld.piaoquan.recommend.feature.model.feature.AdActionFeatureProto.getDefaultInstance() : creative3MonthCntFeatures_;
+  }
+  /**
+   * <code>.AdActionFeatureProto creative_3month_cnt_features = 16;</code>
+   */
+  @java.lang.Override
+  public com.tzld.piaoquan.recommend.feature.model.feature.AdActionFeatureProtoOrBuilder getCreative3MonthCntFeaturesOrBuilder() {
+    return getCreative3MonthCntFeatures();
+  }
+
+  public static final int ADVERTISER_1DAY_CNT_FEATURES_FIELD_NUMBER = 17;
+  private com.tzld.piaoquan.recommend.feature.model.feature.AdActionFeatureProto advertiser1DayCntFeatures_;
+  /**
+   * <code>.AdActionFeatureProto advertiser_1day_cnt_features = 17;</code>
+   * @return Whether the advertiser1dayCntFeatures field is set.
+   */
+  @java.lang.Override
+  public boolean hasAdvertiser1DayCntFeatures() {
+    return advertiser1DayCntFeatures_ != null;
+  }
+  /**
+   * <code>.AdActionFeatureProto advertiser_1day_cnt_features = 17;</code>
+   * @return The advertiser1dayCntFeatures.
+   */
+  @java.lang.Override
+  public com.tzld.piaoquan.recommend.feature.model.feature.AdActionFeatureProto getAdvertiser1DayCntFeatures() {
+    return advertiser1DayCntFeatures_ == null ? com.tzld.piaoquan.recommend.feature.model.feature.AdActionFeatureProto.getDefaultInstance() : advertiser1DayCntFeatures_;
+  }
+  /**
+   * <code>.AdActionFeatureProto advertiser_1day_cnt_features = 17;</code>
+   */
+  @java.lang.Override
+  public com.tzld.piaoquan.recommend.feature.model.feature.AdActionFeatureProtoOrBuilder getAdvertiser1DayCntFeaturesOrBuilder() {
+    return getAdvertiser1DayCntFeatures();
+  }
+
+  public static final int ADVERTISER_3DAY_CNT_FEATURES_FIELD_NUMBER = 18;
+  private com.tzld.piaoquan.recommend.feature.model.feature.AdActionFeatureProto advertiser3DayCntFeatures_;
+  /**
+   * <code>.AdActionFeatureProto advertiser_3day_cnt_features = 18;</code>
+   * @return Whether the advertiser3dayCntFeatures field is set.
+   */
+  @java.lang.Override
+  public boolean hasAdvertiser3DayCntFeatures() {
+    return advertiser3DayCntFeatures_ != null;
+  }
+  /**
+   * <code>.AdActionFeatureProto advertiser_3day_cnt_features = 18;</code>
+   * @return The advertiser3dayCntFeatures.
+   */
+  @java.lang.Override
+  public com.tzld.piaoquan.recommend.feature.model.feature.AdActionFeatureProto getAdvertiser3DayCntFeatures() {
+    return advertiser3DayCntFeatures_ == null ? com.tzld.piaoquan.recommend.feature.model.feature.AdActionFeatureProto.getDefaultInstance() : advertiser3DayCntFeatures_;
+  }
+  /**
+   * <code>.AdActionFeatureProto advertiser_3day_cnt_features = 18;</code>
+   */
+  @java.lang.Override
+  public com.tzld.piaoquan.recommend.feature.model.feature.AdActionFeatureProtoOrBuilder getAdvertiser3DayCntFeaturesOrBuilder() {
+    return getAdvertiser3DayCntFeatures();
+  }
+
+  public static final int ADVERTISER_7DAY_CNT_FEATURES_FIELD_NUMBER = 19;
+  private com.tzld.piaoquan.recommend.feature.model.feature.AdActionFeatureProto advertiser7DayCntFeatures_;
+  /**
+   * <code>.AdActionFeatureProto advertiser_7day_cnt_features = 19;</code>
+   * @return Whether the advertiser7dayCntFeatures field is set.
+   */
+  @java.lang.Override
+  public boolean hasAdvertiser7DayCntFeatures() {
+    return advertiser7DayCntFeatures_ != null;
+  }
+  /**
+   * <code>.AdActionFeatureProto advertiser_7day_cnt_features = 19;</code>
+   * @return The advertiser7dayCntFeatures.
+   */
+  @java.lang.Override
+  public com.tzld.piaoquan.recommend.feature.model.feature.AdActionFeatureProto getAdvertiser7DayCntFeatures() {
+    return advertiser7DayCntFeatures_ == null ? com.tzld.piaoquan.recommend.feature.model.feature.AdActionFeatureProto.getDefaultInstance() : advertiser7DayCntFeatures_;
+  }
+  /**
+   * <code>.AdActionFeatureProto advertiser_7day_cnt_features = 19;</code>
+   */
+  @java.lang.Override
+  public com.tzld.piaoquan.recommend.feature.model.feature.AdActionFeatureProtoOrBuilder getAdvertiser7DayCntFeaturesOrBuilder() {
+    return getAdvertiser7DayCntFeatures();
+  }
+
+  public static final int ADVERTISER_3MONTH_CNT_FEATURES_FIELD_NUMBER = 20;
+  private com.tzld.piaoquan.recommend.feature.model.feature.AdActionFeatureProto advertiser3MonthCntFeatures_;
+  /**
+   * <code>.AdActionFeatureProto advertiser_3month_cnt_features = 20;</code>
+   * @return Whether the advertiser3monthCntFeatures field is set.
+   */
+  @java.lang.Override
+  public boolean hasAdvertiser3MonthCntFeatures() {
+    return advertiser3MonthCntFeatures_ != null;
+  }
+  /**
+   * <code>.AdActionFeatureProto advertiser_3month_cnt_features = 20;</code>
+   * @return The advertiser3monthCntFeatures.
+   */
+  @java.lang.Override
+  public com.tzld.piaoquan.recommend.feature.model.feature.AdActionFeatureProto getAdvertiser3MonthCntFeatures() {
+    return advertiser3MonthCntFeatures_ == null ? com.tzld.piaoquan.recommend.feature.model.feature.AdActionFeatureProto.getDefaultInstance() : advertiser3MonthCntFeatures_;
+  }
+  /**
+   * <code>.AdActionFeatureProto advertiser_3month_cnt_features = 20;</code>
+   */
+  @java.lang.Override
+  public com.tzld.piaoquan.recommend.feature.model.feature.AdActionFeatureProtoOrBuilder getAdvertiser3MonthCntFeaturesOrBuilder() {
+    return getAdvertiser3MonthCntFeatures();
+  }
+
   private byte memoizedIsInitialized = -1;
   @java.lang.Override
   public final boolean isInitialized() {
@@ -646,6 +958,30 @@ private static final long serialVersionUID = 0L;
     if (month3CntFeatures_ != null) {
       output.writeMessage(12, getMonth3CntFeatures());
     }
+    if (creative1DayCntFeatures_ != null) {
+      output.writeMessage(13, getCreative1DayCntFeatures());
+    }
+    if (creative3DayCntFeatures_ != null) {
+      output.writeMessage(14, getCreative3DayCntFeatures());
+    }
+    if (creative7DayCntFeatures_ != null) {
+      output.writeMessage(15, getCreative7DayCntFeatures());
+    }
+    if (creative3MonthCntFeatures_ != null) {
+      output.writeMessage(16, getCreative3MonthCntFeatures());
+    }
+    if (advertiser1DayCntFeatures_ != null) {
+      output.writeMessage(17, getAdvertiser1DayCntFeatures());
+    }
+    if (advertiser3DayCntFeatures_ != null) {
+      output.writeMessage(18, getAdvertiser3DayCntFeatures());
+    }
+    if (advertiser7DayCntFeatures_ != null) {
+      output.writeMessage(19, getAdvertiser7DayCntFeatures());
+    }
+    if (advertiser3MonthCntFeatures_ != null) {
+      output.writeMessage(20, getAdvertiser3MonthCntFeatures());
+    }
     unknownFields.writeTo(output);
   }
 
@@ -695,6 +1031,38 @@ private static final long serialVersionUID = 0L;
       size += com.google.protobuf.CodedOutputStream
         .computeMessageSize(12, getMonth3CntFeatures());
     }
+    if (creative1DayCntFeatures_ != null) {
+      size += com.google.protobuf.CodedOutputStream
+        .computeMessageSize(13, getCreative1DayCntFeatures());
+    }
+    if (creative3DayCntFeatures_ != null) {
+      size += com.google.protobuf.CodedOutputStream
+        .computeMessageSize(14, getCreative3DayCntFeatures());
+    }
+    if (creative7DayCntFeatures_ != null) {
+      size += com.google.protobuf.CodedOutputStream
+        .computeMessageSize(15, getCreative7DayCntFeatures());
+    }
+    if (creative3MonthCntFeatures_ != null) {
+      size += com.google.protobuf.CodedOutputStream
+        .computeMessageSize(16, getCreative3MonthCntFeatures());
+    }
+    if (advertiser1DayCntFeatures_ != null) {
+      size += com.google.protobuf.CodedOutputStream
+        .computeMessageSize(17, getAdvertiser1DayCntFeatures());
+    }
+    if (advertiser3DayCntFeatures_ != null) {
+      size += com.google.protobuf.CodedOutputStream
+        .computeMessageSize(18, getAdvertiser3DayCntFeatures());
+    }
+    if (advertiser7DayCntFeatures_ != null) {
+      size += com.google.protobuf.CodedOutputStream
+        .computeMessageSize(19, getAdvertiser7DayCntFeatures());
+    }
+    if (advertiser3MonthCntFeatures_ != null) {
+      size += com.google.protobuf.CodedOutputStream
+        .computeMessageSize(20, getAdvertiser3MonthCntFeatures());
+    }
     size += unknownFields.getSerializedSize();
     memoizedSize = size;
     return size;
@@ -746,6 +1114,46 @@ private static final long serialVersionUID = 0L;
       if (!getMonth3CntFeatures()
           .equals(other.getMonth3CntFeatures())) return false;
     }
+    if (hasCreative1DayCntFeatures() != other.hasCreative1DayCntFeatures()) return false;
+    if (hasCreative1DayCntFeatures()) {
+      if (!getCreative1DayCntFeatures()
+          .equals(other.getCreative1DayCntFeatures())) return false;
+    }
+    if (hasCreative3DayCntFeatures() != other.hasCreative3DayCntFeatures()) return false;
+    if (hasCreative3DayCntFeatures()) {
+      if (!getCreative3DayCntFeatures()
+          .equals(other.getCreative3DayCntFeatures())) return false;
+    }
+    if (hasCreative7DayCntFeatures() != other.hasCreative7DayCntFeatures()) return false;
+    if (hasCreative7DayCntFeatures()) {
+      if (!getCreative7DayCntFeatures()
+          .equals(other.getCreative7DayCntFeatures())) return false;
+    }
+    if (hasCreative3MonthCntFeatures() != other.hasCreative3MonthCntFeatures()) return false;
+    if (hasCreative3MonthCntFeatures()) {
+      if (!getCreative3MonthCntFeatures()
+          .equals(other.getCreative3MonthCntFeatures())) return false;
+    }
+    if (hasAdvertiser1DayCntFeatures() != other.hasAdvertiser1DayCntFeatures()) return false;
+    if (hasAdvertiser1DayCntFeatures()) {
+      if (!getAdvertiser1DayCntFeatures()
+          .equals(other.getAdvertiser1DayCntFeatures())) return false;
+    }
+    if (hasAdvertiser3DayCntFeatures() != other.hasAdvertiser3DayCntFeatures()) return false;
+    if (hasAdvertiser3DayCntFeatures()) {
+      if (!getAdvertiser3DayCntFeatures()
+          .equals(other.getAdvertiser3DayCntFeatures())) return false;
+    }
+    if (hasAdvertiser7DayCntFeatures() != other.hasAdvertiser7DayCntFeatures()) return false;
+    if (hasAdvertiser7DayCntFeatures()) {
+      if (!getAdvertiser7DayCntFeatures()
+          .equals(other.getAdvertiser7DayCntFeatures())) return false;
+    }
+    if (hasAdvertiser3MonthCntFeatures() != other.hasAdvertiser3MonthCntFeatures()) return false;
+    if (hasAdvertiser3MonthCntFeatures()) {
+      if (!getAdvertiser3MonthCntFeatures()
+          .equals(other.getAdvertiser3MonthCntFeatures())) return false;
+    }
     if (!unknownFields.equals(other.unknownFields)) return false;
     return true;
   }
@@ -789,6 +1197,38 @@ private static final long serialVersionUID = 0L;
       hash = (37 * hash) + MONTH3_CNT_FEATURES_FIELD_NUMBER;
       hash = (53 * hash) + getMonth3CntFeatures().hashCode();
     }
+    if (hasCreative1DayCntFeatures()) {
+      hash = (37 * hash) + CREATIVE_1DAY_CNT_FEATURES_FIELD_NUMBER;
+      hash = (53 * hash) + getCreative1DayCntFeatures().hashCode();
+    }
+    if (hasCreative3DayCntFeatures()) {
+      hash = (37 * hash) + CREATIVE_3DAY_CNT_FEATURES_FIELD_NUMBER;
+      hash = (53 * hash) + getCreative3DayCntFeatures().hashCode();
+    }
+    if (hasCreative7DayCntFeatures()) {
+      hash = (37 * hash) + CREATIVE_7DAY_CNT_FEATURES_FIELD_NUMBER;
+      hash = (53 * hash) + getCreative7DayCntFeatures().hashCode();
+    }
+    if (hasCreative3MonthCntFeatures()) {
+      hash = (37 * hash) + CREATIVE_3MONTH_CNT_FEATURES_FIELD_NUMBER;
+      hash = (53 * hash) + getCreative3MonthCntFeatures().hashCode();
+    }
+    if (hasAdvertiser1DayCntFeatures()) {
+      hash = (37 * hash) + ADVERTISER_1DAY_CNT_FEATURES_FIELD_NUMBER;
+      hash = (53 * hash) + getAdvertiser1DayCntFeatures().hashCode();
+    }
+    if (hasAdvertiser3DayCntFeatures()) {
+      hash = (37 * hash) + ADVERTISER_3DAY_CNT_FEATURES_FIELD_NUMBER;
+      hash = (53 * hash) + getAdvertiser3DayCntFeatures().hashCode();
+    }
+    if (hasAdvertiser7DayCntFeatures()) {
+      hash = (37 * hash) + ADVERTISER_7DAY_CNT_FEATURES_FIELD_NUMBER;
+      hash = (53 * hash) + getAdvertiser7DayCntFeatures().hashCode();
+    }
+    if (hasAdvertiser3MonthCntFeatures()) {
+      hash = (37 * hash) + ADVERTISER_3MONTH_CNT_FEATURES_FIELD_NUMBER;
+      hash = (53 * hash) + getAdvertiser3MonthCntFeatures().hashCode();
+    }
     hash = (29 * hash) + unknownFields.hashCode();
     memoizedHashCode = hash;
     return hash;
@@ -962,6 +1402,54 @@ private static final long serialVersionUID = 0L;
         month3CntFeatures_ = null;
         month3CntFeaturesBuilder_ = null;
       }
+      if (creative1DayCntFeaturesBuilder_ == null) {
+        creative1DayCntFeatures_ = null;
+      } else {
+        creative1DayCntFeatures_ = null;
+        creative1DayCntFeaturesBuilder_ = null;
+      }
+      if (creative3DayCntFeaturesBuilder_ == null) {
+        creative3DayCntFeatures_ = null;
+      } else {
+        creative3DayCntFeatures_ = null;
+        creative3DayCntFeaturesBuilder_ = null;
+      }
+      if (creative7DayCntFeaturesBuilder_ == null) {
+        creative7DayCntFeatures_ = null;
+      } else {
+        creative7DayCntFeatures_ = null;
+        creative7DayCntFeaturesBuilder_ = null;
+      }
+      if (creative3MonthCntFeaturesBuilder_ == null) {
+        creative3MonthCntFeatures_ = null;
+      } else {
+        creative3MonthCntFeatures_ = null;
+        creative3MonthCntFeaturesBuilder_ = null;
+      }
+      if (advertiser1DayCntFeaturesBuilder_ == null) {
+        advertiser1DayCntFeatures_ = null;
+      } else {
+        advertiser1DayCntFeatures_ = null;
+        advertiser1DayCntFeaturesBuilder_ = null;
+      }
+      if (advertiser3DayCntFeaturesBuilder_ == null) {
+        advertiser3DayCntFeatures_ = null;
+      } else {
+        advertiser3DayCntFeatures_ = null;
+        advertiser3DayCntFeaturesBuilder_ = null;
+      }
+      if (advertiser7DayCntFeaturesBuilder_ == null) {
+        advertiser7DayCntFeatures_ = null;
+      } else {
+        advertiser7DayCntFeatures_ = null;
+        advertiser7DayCntFeaturesBuilder_ = null;
+      }
+      if (advertiser3MonthCntFeaturesBuilder_ == null) {
+        advertiser3MonthCntFeatures_ = null;
+      } else {
+        advertiser3MonthCntFeatures_ = null;
+        advertiser3MonthCntFeaturesBuilder_ = null;
+      }
       return this;
     }
 
@@ -1016,6 +1504,46 @@ private static final long serialVersionUID = 0L;
       } else {
         result.month3CntFeatures_ = month3CntFeaturesBuilder_.build();
       }
+      if (creative1DayCntFeaturesBuilder_ == null) {
+        result.creative1DayCntFeatures_ = creative1DayCntFeatures_;
+      } else {
+        result.creative1DayCntFeatures_ = creative1DayCntFeaturesBuilder_.build();
+      }
+      if (creative3DayCntFeaturesBuilder_ == null) {
+        result.creative3DayCntFeatures_ = creative3DayCntFeatures_;
+      } else {
+        result.creative3DayCntFeatures_ = creative3DayCntFeaturesBuilder_.build();
+      }
+      if (creative7DayCntFeaturesBuilder_ == null) {
+        result.creative7DayCntFeatures_ = creative7DayCntFeatures_;
+      } else {
+        result.creative7DayCntFeatures_ = creative7DayCntFeaturesBuilder_.build();
+      }
+      if (creative3MonthCntFeaturesBuilder_ == null) {
+        result.creative3MonthCntFeatures_ = creative3MonthCntFeatures_;
+      } else {
+        result.creative3MonthCntFeatures_ = creative3MonthCntFeaturesBuilder_.build();
+      }
+      if (advertiser1DayCntFeaturesBuilder_ == null) {
+        result.advertiser1DayCntFeatures_ = advertiser1DayCntFeatures_;
+      } else {
+        result.advertiser1DayCntFeatures_ = advertiser1DayCntFeaturesBuilder_.build();
+      }
+      if (advertiser3DayCntFeaturesBuilder_ == null) {
+        result.advertiser3DayCntFeatures_ = advertiser3DayCntFeatures_;
+      } else {
+        result.advertiser3DayCntFeatures_ = advertiser3DayCntFeaturesBuilder_.build();
+      }
+      if (advertiser7DayCntFeaturesBuilder_ == null) {
+        result.advertiser7DayCntFeatures_ = advertiser7DayCntFeatures_;
+      } else {
+        result.advertiser7DayCntFeatures_ = advertiser7DayCntFeaturesBuilder_.build();
+      }
+      if (advertiser3MonthCntFeaturesBuilder_ == null) {
+        result.advertiser3MonthCntFeatures_ = advertiser3MonthCntFeatures_;
+      } else {
+        result.advertiser3MonthCntFeatures_ = advertiser3MonthCntFeaturesBuilder_.build();
+      }
       onBuilt();
       return result;
     }
@@ -1108,6 +1636,30 @@ private static final long serialVersionUID = 0L;
       if (other.hasMonth3CntFeatures()) {
         mergeMonth3CntFeatures(other.getMonth3CntFeatures());
       }
+      if (other.hasCreative1DayCntFeatures()) {
+        mergeCreative1DayCntFeatures(other.getCreative1DayCntFeatures());
+      }
+      if (other.hasCreative3DayCntFeatures()) {
+        mergeCreative3DayCntFeatures(other.getCreative3DayCntFeatures());
+      }
+      if (other.hasCreative7DayCntFeatures()) {
+        mergeCreative7DayCntFeatures(other.getCreative7DayCntFeatures());
+      }
+      if (other.hasCreative3MonthCntFeatures()) {
+        mergeCreative3MonthCntFeatures(other.getCreative3MonthCntFeatures());
+      }
+      if (other.hasAdvertiser1DayCntFeatures()) {
+        mergeAdvertiser1DayCntFeatures(other.getAdvertiser1DayCntFeatures());
+      }
+      if (other.hasAdvertiser3DayCntFeatures()) {
+        mergeAdvertiser3DayCntFeatures(other.getAdvertiser3DayCntFeatures());
+      }
+      if (other.hasAdvertiser7DayCntFeatures()) {
+        mergeAdvertiser7DayCntFeatures(other.getAdvertiser7DayCntFeatures());
+      }
+      if (other.hasAdvertiser3MonthCntFeatures()) {
+        mergeAdvertiser3MonthCntFeatures(other.getAdvertiser3MonthCntFeatures());
+      }
       this.mergeUnknownFields(other.unknownFields);
       onChanged();
       return this;
@@ -2220,6 +2772,958 @@ private static final long serialVersionUID = 0L;
       }
       return month3CntFeaturesBuilder_;
     }
+
+    private com.tzld.piaoquan.recommend.feature.model.feature.AdActionFeatureProto creative1DayCntFeatures_;
+    private com.google.protobuf.SingleFieldBuilderV3<
+        com.tzld.piaoquan.recommend.feature.model.feature.AdActionFeatureProto, com.tzld.piaoquan.recommend.feature.model.feature.AdActionFeatureProto.Builder, com.tzld.piaoquan.recommend.feature.model.feature.AdActionFeatureProtoOrBuilder> creative1DayCntFeaturesBuilder_;
+    /**
+     * <code>.AdActionFeatureProto creative_1day_cnt_features = 13;</code>
+     * @return Whether the creative1dayCntFeatures field is set.
+     */
+    public boolean hasCreative1DayCntFeatures() {
+      return creative1DayCntFeaturesBuilder_ != null || creative1DayCntFeatures_ != null;
+    }
+    /**
+     * <code>.AdActionFeatureProto creative_1day_cnt_features = 13;</code>
+     * @return The creative1dayCntFeatures.
+     */
+    public com.tzld.piaoquan.recommend.feature.model.feature.AdActionFeatureProto getCreative1DayCntFeatures() {
+      if (creative1DayCntFeaturesBuilder_ == null) {
+        return creative1DayCntFeatures_ == null ? com.tzld.piaoquan.recommend.feature.model.feature.AdActionFeatureProto.getDefaultInstance() : creative1DayCntFeatures_;
+      } else {
+        return creative1DayCntFeaturesBuilder_.getMessage();
+      }
+    }
+    /**
+     * <code>.AdActionFeatureProto creative_1day_cnt_features = 13;</code>
+     */
+    public Builder setCreative1DayCntFeatures(com.tzld.piaoquan.recommend.feature.model.feature.AdActionFeatureProto value) {
+      if (creative1DayCntFeaturesBuilder_ == null) {
+        if (value == null) {
+          throw new NullPointerException();
+        }
+        creative1DayCntFeatures_ = value;
+        onChanged();
+      } else {
+        creative1DayCntFeaturesBuilder_.setMessage(value);
+      }
+
+      return this;
+    }
+    /**
+     * <code>.AdActionFeatureProto creative_1day_cnt_features = 13;</code>
+     */
+    public Builder setCreative1DayCntFeatures(
+        com.tzld.piaoquan.recommend.feature.model.feature.AdActionFeatureProto.Builder builderForValue) {
+      if (creative1DayCntFeaturesBuilder_ == null) {
+        creative1DayCntFeatures_ = builderForValue.build();
+        onChanged();
+      } else {
+        creative1DayCntFeaturesBuilder_.setMessage(builderForValue.build());
+      }
+
+      return this;
+    }
+    /**
+     * <code>.AdActionFeatureProto creative_1day_cnt_features = 13;</code>
+     */
+    public Builder mergeCreative1DayCntFeatures(com.tzld.piaoquan.recommend.feature.model.feature.AdActionFeatureProto value) {
+      if (creative1DayCntFeaturesBuilder_ == null) {
+        if (creative1DayCntFeatures_ != null) {
+          creative1DayCntFeatures_ =
+            com.tzld.piaoquan.recommend.feature.model.feature.AdActionFeatureProto.newBuilder(creative1DayCntFeatures_).mergeFrom(value).buildPartial();
+        } else {
+          creative1DayCntFeatures_ = value;
+        }
+        onChanged();
+      } else {
+        creative1DayCntFeaturesBuilder_.mergeFrom(value);
+      }
+
+      return this;
+    }
+    /**
+     * <code>.AdActionFeatureProto creative_1day_cnt_features = 13;</code>
+     */
+    public Builder clearCreative1DayCntFeatures() {
+      if (creative1DayCntFeaturesBuilder_ == null) {
+        creative1DayCntFeatures_ = null;
+        onChanged();
+      } else {
+        creative1DayCntFeatures_ = null;
+        creative1DayCntFeaturesBuilder_ = null;
+      }
+
+      return this;
+    }
+    /**
+     * <code>.AdActionFeatureProto creative_1day_cnt_features = 13;</code>
+     */
+    public com.tzld.piaoquan.recommend.feature.model.feature.AdActionFeatureProto.Builder getCreative1DayCntFeaturesBuilder() {
+      
+      onChanged();
+      return getCreative1DayCntFeaturesFieldBuilder().getBuilder();
+    }
+    /**
+     * <code>.AdActionFeatureProto creative_1day_cnt_features = 13;</code>
+     */
+    public com.tzld.piaoquan.recommend.feature.model.feature.AdActionFeatureProtoOrBuilder getCreative1DayCntFeaturesOrBuilder() {
+      if (creative1DayCntFeaturesBuilder_ != null) {
+        return creative1DayCntFeaturesBuilder_.getMessageOrBuilder();
+      } else {
+        return creative1DayCntFeatures_ == null ?
+            com.tzld.piaoquan.recommend.feature.model.feature.AdActionFeatureProto.getDefaultInstance() : creative1DayCntFeatures_;
+      }
+    }
+    /**
+     * <code>.AdActionFeatureProto creative_1day_cnt_features = 13;</code>
+     */
+    private com.google.protobuf.SingleFieldBuilderV3<
+        com.tzld.piaoquan.recommend.feature.model.feature.AdActionFeatureProto, com.tzld.piaoquan.recommend.feature.model.feature.AdActionFeatureProto.Builder, com.tzld.piaoquan.recommend.feature.model.feature.AdActionFeatureProtoOrBuilder> 
+        getCreative1DayCntFeaturesFieldBuilder() {
+      if (creative1DayCntFeaturesBuilder_ == null) {
+        creative1DayCntFeaturesBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
+            com.tzld.piaoquan.recommend.feature.model.feature.AdActionFeatureProto, com.tzld.piaoquan.recommend.feature.model.feature.AdActionFeatureProto.Builder, com.tzld.piaoquan.recommend.feature.model.feature.AdActionFeatureProtoOrBuilder>(
+                getCreative1DayCntFeatures(),
+                getParentForChildren(),
+                isClean());
+        creative1DayCntFeatures_ = null;
+      }
+      return creative1DayCntFeaturesBuilder_;
+    }
+
+    private com.tzld.piaoquan.recommend.feature.model.feature.AdActionFeatureProto creative3DayCntFeatures_;
+    private com.google.protobuf.SingleFieldBuilderV3<
+        com.tzld.piaoquan.recommend.feature.model.feature.AdActionFeatureProto, com.tzld.piaoquan.recommend.feature.model.feature.AdActionFeatureProto.Builder, com.tzld.piaoquan.recommend.feature.model.feature.AdActionFeatureProtoOrBuilder> creative3DayCntFeaturesBuilder_;
+    /**
+     * <code>.AdActionFeatureProto creative_3day_cnt_features = 14;</code>
+     * @return Whether the creative3dayCntFeatures field is set.
+     */
+    public boolean hasCreative3DayCntFeatures() {
+      return creative3DayCntFeaturesBuilder_ != null || creative3DayCntFeatures_ != null;
+    }
+    /**
+     * <code>.AdActionFeatureProto creative_3day_cnt_features = 14;</code>
+     * @return The creative3dayCntFeatures.
+     */
+    public com.tzld.piaoquan.recommend.feature.model.feature.AdActionFeatureProto getCreative3DayCntFeatures() {
+      if (creative3DayCntFeaturesBuilder_ == null) {
+        return creative3DayCntFeatures_ == null ? com.tzld.piaoquan.recommend.feature.model.feature.AdActionFeatureProto.getDefaultInstance() : creative3DayCntFeatures_;
+      } else {
+        return creative3DayCntFeaturesBuilder_.getMessage();
+      }
+    }
+    /**
+     * <code>.AdActionFeatureProto creative_3day_cnt_features = 14;</code>
+     */
+    public Builder setCreative3DayCntFeatures(com.tzld.piaoquan.recommend.feature.model.feature.AdActionFeatureProto value) {
+      if (creative3DayCntFeaturesBuilder_ == null) {
+        if (value == null) {
+          throw new NullPointerException();
+        }
+        creative3DayCntFeatures_ = value;
+        onChanged();
+      } else {
+        creative3DayCntFeaturesBuilder_.setMessage(value);
+      }
+
+      return this;
+    }
+    /**
+     * <code>.AdActionFeatureProto creative_3day_cnt_features = 14;</code>
+     */
+    public Builder setCreative3DayCntFeatures(
+        com.tzld.piaoquan.recommend.feature.model.feature.AdActionFeatureProto.Builder builderForValue) {
+      if (creative3DayCntFeaturesBuilder_ == null) {
+        creative3DayCntFeatures_ = builderForValue.build();
+        onChanged();
+      } else {
+        creative3DayCntFeaturesBuilder_.setMessage(builderForValue.build());
+      }
+
+      return this;
+    }
+    /**
+     * <code>.AdActionFeatureProto creative_3day_cnt_features = 14;</code>
+     */
+    public Builder mergeCreative3DayCntFeatures(com.tzld.piaoquan.recommend.feature.model.feature.AdActionFeatureProto value) {
+      if (creative3DayCntFeaturesBuilder_ == null) {
+        if (creative3DayCntFeatures_ != null) {
+          creative3DayCntFeatures_ =
+            com.tzld.piaoquan.recommend.feature.model.feature.AdActionFeatureProto.newBuilder(creative3DayCntFeatures_).mergeFrom(value).buildPartial();
+        } else {
+          creative3DayCntFeatures_ = value;
+        }
+        onChanged();
+      } else {
+        creative3DayCntFeaturesBuilder_.mergeFrom(value);
+      }
+
+      return this;
+    }
+    /**
+     * <code>.AdActionFeatureProto creative_3day_cnt_features = 14;</code>
+     */
+    public Builder clearCreative3DayCntFeatures() {
+      if (creative3DayCntFeaturesBuilder_ == null) {
+        creative3DayCntFeatures_ = null;
+        onChanged();
+      } else {
+        creative3DayCntFeatures_ = null;
+        creative3DayCntFeaturesBuilder_ = null;
+      }
+
+      return this;
+    }
+    /**
+     * <code>.AdActionFeatureProto creative_3day_cnt_features = 14;</code>
+     */
+    public com.tzld.piaoquan.recommend.feature.model.feature.AdActionFeatureProto.Builder getCreative3DayCntFeaturesBuilder() {
+      
+      onChanged();
+      return getCreative3DayCntFeaturesFieldBuilder().getBuilder();
+    }
+    /**
+     * <code>.AdActionFeatureProto creative_3day_cnt_features = 14;</code>
+     */
+    public com.tzld.piaoquan.recommend.feature.model.feature.AdActionFeatureProtoOrBuilder getCreative3DayCntFeaturesOrBuilder() {
+      if (creative3DayCntFeaturesBuilder_ != null) {
+        return creative3DayCntFeaturesBuilder_.getMessageOrBuilder();
+      } else {
+        return creative3DayCntFeatures_ == null ?
+            com.tzld.piaoquan.recommend.feature.model.feature.AdActionFeatureProto.getDefaultInstance() : creative3DayCntFeatures_;
+      }
+    }
+    /**
+     * <code>.AdActionFeatureProto creative_3day_cnt_features = 14;</code>
+     */
+    private com.google.protobuf.SingleFieldBuilderV3<
+        com.tzld.piaoquan.recommend.feature.model.feature.AdActionFeatureProto, com.tzld.piaoquan.recommend.feature.model.feature.AdActionFeatureProto.Builder, com.tzld.piaoquan.recommend.feature.model.feature.AdActionFeatureProtoOrBuilder> 
+        getCreative3DayCntFeaturesFieldBuilder() {
+      if (creative3DayCntFeaturesBuilder_ == null) {
+        creative3DayCntFeaturesBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
+            com.tzld.piaoquan.recommend.feature.model.feature.AdActionFeatureProto, com.tzld.piaoquan.recommend.feature.model.feature.AdActionFeatureProto.Builder, com.tzld.piaoquan.recommend.feature.model.feature.AdActionFeatureProtoOrBuilder>(
+                getCreative3DayCntFeatures(),
+                getParentForChildren(),
+                isClean());
+        creative3DayCntFeatures_ = null;
+      }
+      return creative3DayCntFeaturesBuilder_;
+    }
+
+    private com.tzld.piaoquan.recommend.feature.model.feature.AdActionFeatureProto creative7DayCntFeatures_;
+    private com.google.protobuf.SingleFieldBuilderV3<
+        com.tzld.piaoquan.recommend.feature.model.feature.AdActionFeatureProto, com.tzld.piaoquan.recommend.feature.model.feature.AdActionFeatureProto.Builder, com.tzld.piaoquan.recommend.feature.model.feature.AdActionFeatureProtoOrBuilder> creative7DayCntFeaturesBuilder_;
+    /**
+     * <code>.AdActionFeatureProto creative_7day_cnt_features = 15;</code>
+     * @return Whether the creative7dayCntFeatures field is set.
+     */
+    public boolean hasCreative7DayCntFeatures() {
+      return creative7DayCntFeaturesBuilder_ != null || creative7DayCntFeatures_ != null;
+    }
+    /**
+     * <code>.AdActionFeatureProto creative_7day_cnt_features = 15;</code>
+     * @return The creative7dayCntFeatures.
+     */
+    public com.tzld.piaoquan.recommend.feature.model.feature.AdActionFeatureProto getCreative7DayCntFeatures() {
+      if (creative7DayCntFeaturesBuilder_ == null) {
+        return creative7DayCntFeatures_ == null ? com.tzld.piaoquan.recommend.feature.model.feature.AdActionFeatureProto.getDefaultInstance() : creative7DayCntFeatures_;
+      } else {
+        return creative7DayCntFeaturesBuilder_.getMessage();
+      }
+    }
+    /**
+     * <code>.AdActionFeatureProto creative_7day_cnt_features = 15;</code>
+     */
+    public Builder setCreative7DayCntFeatures(com.tzld.piaoquan.recommend.feature.model.feature.AdActionFeatureProto value) {
+      if (creative7DayCntFeaturesBuilder_ == null) {
+        if (value == null) {
+          throw new NullPointerException();
+        }
+        creative7DayCntFeatures_ = value;
+        onChanged();
+      } else {
+        creative7DayCntFeaturesBuilder_.setMessage(value);
+      }
+
+      return this;
+    }
+    /**
+     * <code>.AdActionFeatureProto creative_7day_cnt_features = 15;</code>
+     */
+    public Builder setCreative7DayCntFeatures(
+        com.tzld.piaoquan.recommend.feature.model.feature.AdActionFeatureProto.Builder builderForValue) {
+      if (creative7DayCntFeaturesBuilder_ == null) {
+        creative7DayCntFeatures_ = builderForValue.build();
+        onChanged();
+      } else {
+        creative7DayCntFeaturesBuilder_.setMessage(builderForValue.build());
+      }
+
+      return this;
+    }
+    /**
+     * <code>.AdActionFeatureProto creative_7day_cnt_features = 15;</code>
+     */
+    public Builder mergeCreative7DayCntFeatures(com.tzld.piaoquan.recommend.feature.model.feature.AdActionFeatureProto value) {
+      if (creative7DayCntFeaturesBuilder_ == null) {
+        if (creative7DayCntFeatures_ != null) {
+          creative7DayCntFeatures_ =
+            com.tzld.piaoquan.recommend.feature.model.feature.AdActionFeatureProto.newBuilder(creative7DayCntFeatures_).mergeFrom(value).buildPartial();
+        } else {
+          creative7DayCntFeatures_ = value;
+        }
+        onChanged();
+      } else {
+        creative7DayCntFeaturesBuilder_.mergeFrom(value);
+      }
+
+      return this;
+    }
+    /**
+     * <code>.AdActionFeatureProto creative_7day_cnt_features = 15;</code>
+     */
+    public Builder clearCreative7DayCntFeatures() {
+      if (creative7DayCntFeaturesBuilder_ == null) {
+        creative7DayCntFeatures_ = null;
+        onChanged();
+      } else {
+        creative7DayCntFeatures_ = null;
+        creative7DayCntFeaturesBuilder_ = null;
+      }
+
+      return this;
+    }
+    /**
+     * <code>.AdActionFeatureProto creative_7day_cnt_features = 15;</code>
+     */
+    public com.tzld.piaoquan.recommend.feature.model.feature.AdActionFeatureProto.Builder getCreative7DayCntFeaturesBuilder() {
+      
+      onChanged();
+      return getCreative7DayCntFeaturesFieldBuilder().getBuilder();
+    }
+    /**
+     * <code>.AdActionFeatureProto creative_7day_cnt_features = 15;</code>
+     */
+    public com.tzld.piaoquan.recommend.feature.model.feature.AdActionFeatureProtoOrBuilder getCreative7DayCntFeaturesOrBuilder() {
+      if (creative7DayCntFeaturesBuilder_ != null) {
+        return creative7DayCntFeaturesBuilder_.getMessageOrBuilder();
+      } else {
+        return creative7DayCntFeatures_ == null ?
+            com.tzld.piaoquan.recommend.feature.model.feature.AdActionFeatureProto.getDefaultInstance() : creative7DayCntFeatures_;
+      }
+    }
+    /**
+     * <code>.AdActionFeatureProto creative_7day_cnt_features = 15;</code>
+     */
+    private com.google.protobuf.SingleFieldBuilderV3<
+        com.tzld.piaoquan.recommend.feature.model.feature.AdActionFeatureProto, com.tzld.piaoquan.recommend.feature.model.feature.AdActionFeatureProto.Builder, com.tzld.piaoquan.recommend.feature.model.feature.AdActionFeatureProtoOrBuilder> 
+        getCreative7DayCntFeaturesFieldBuilder() {
+      if (creative7DayCntFeaturesBuilder_ == null) {
+        creative7DayCntFeaturesBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
+            com.tzld.piaoquan.recommend.feature.model.feature.AdActionFeatureProto, com.tzld.piaoquan.recommend.feature.model.feature.AdActionFeatureProto.Builder, com.tzld.piaoquan.recommend.feature.model.feature.AdActionFeatureProtoOrBuilder>(
+                getCreative7DayCntFeatures(),
+                getParentForChildren(),
+                isClean());
+        creative7DayCntFeatures_ = null;
+      }
+      return creative7DayCntFeaturesBuilder_;
+    }
+
+    private com.tzld.piaoquan.recommend.feature.model.feature.AdActionFeatureProto creative3MonthCntFeatures_;
+    private com.google.protobuf.SingleFieldBuilderV3<
+        com.tzld.piaoquan.recommend.feature.model.feature.AdActionFeatureProto, com.tzld.piaoquan.recommend.feature.model.feature.AdActionFeatureProto.Builder, com.tzld.piaoquan.recommend.feature.model.feature.AdActionFeatureProtoOrBuilder> creative3MonthCntFeaturesBuilder_;
+    /**
+     * <code>.AdActionFeatureProto creative_3month_cnt_features = 16;</code>
+     * @return Whether the creative3monthCntFeatures field is set.
+     */
+    public boolean hasCreative3MonthCntFeatures() {
+      return creative3MonthCntFeaturesBuilder_ != null || creative3MonthCntFeatures_ != null;
+    }
+    /**
+     * <code>.AdActionFeatureProto creative_3month_cnt_features = 16;</code>
+     * @return The creative3monthCntFeatures.
+     */
+    public com.tzld.piaoquan.recommend.feature.model.feature.AdActionFeatureProto getCreative3MonthCntFeatures() {
+      if (creative3MonthCntFeaturesBuilder_ == null) {
+        return creative3MonthCntFeatures_ == null ? com.tzld.piaoquan.recommend.feature.model.feature.AdActionFeatureProto.getDefaultInstance() : creative3MonthCntFeatures_;
+      } else {
+        return creative3MonthCntFeaturesBuilder_.getMessage();
+      }
+    }
+    /**
+     * <code>.AdActionFeatureProto creative_3month_cnt_features = 16;</code>
+     */
+    public Builder setCreative3MonthCntFeatures(com.tzld.piaoquan.recommend.feature.model.feature.AdActionFeatureProto value) {
+      if (creative3MonthCntFeaturesBuilder_ == null) {
+        if (value == null) {
+          throw new NullPointerException();
+        }
+        creative3MonthCntFeatures_ = value;
+        onChanged();
+      } else {
+        creative3MonthCntFeaturesBuilder_.setMessage(value);
+      }
+
+      return this;
+    }
+    /**
+     * <code>.AdActionFeatureProto creative_3month_cnt_features = 16;</code>
+     */
+    public Builder setCreative3MonthCntFeatures(
+        com.tzld.piaoquan.recommend.feature.model.feature.AdActionFeatureProto.Builder builderForValue) {
+      if (creative3MonthCntFeaturesBuilder_ == null) {
+        creative3MonthCntFeatures_ = builderForValue.build();
+        onChanged();
+      } else {
+        creative3MonthCntFeaturesBuilder_.setMessage(builderForValue.build());
+      }
+
+      return this;
+    }
+    /**
+     * <code>.AdActionFeatureProto creative_3month_cnt_features = 16;</code>
+     */
+    public Builder mergeCreative3MonthCntFeatures(com.tzld.piaoquan.recommend.feature.model.feature.AdActionFeatureProto value) {
+      if (creative3MonthCntFeaturesBuilder_ == null) {
+        if (creative3MonthCntFeatures_ != null) {
+          creative3MonthCntFeatures_ =
+            com.tzld.piaoquan.recommend.feature.model.feature.AdActionFeatureProto.newBuilder(creative3MonthCntFeatures_).mergeFrom(value).buildPartial();
+        } else {
+          creative3MonthCntFeatures_ = value;
+        }
+        onChanged();
+      } else {
+        creative3MonthCntFeaturesBuilder_.mergeFrom(value);
+      }
+
+      return this;
+    }
+    /**
+     * <code>.AdActionFeatureProto creative_3month_cnt_features = 16;</code>
+     */
+    public Builder clearCreative3MonthCntFeatures() {
+      if (creative3MonthCntFeaturesBuilder_ == null) {
+        creative3MonthCntFeatures_ = null;
+        onChanged();
+      } else {
+        creative3MonthCntFeatures_ = null;
+        creative3MonthCntFeaturesBuilder_ = null;
+      }
+
+      return this;
+    }
+    /**
+     * <code>.AdActionFeatureProto creative_3month_cnt_features = 16;</code>
+     */
+    public com.tzld.piaoquan.recommend.feature.model.feature.AdActionFeatureProto.Builder getCreative3MonthCntFeaturesBuilder() {
+      
+      onChanged();
+      return getCreative3MonthCntFeaturesFieldBuilder().getBuilder();
+    }
+    /**
+     * <code>.AdActionFeatureProto creative_3month_cnt_features = 16;</code>
+     */
+    public com.tzld.piaoquan.recommend.feature.model.feature.AdActionFeatureProtoOrBuilder getCreative3MonthCntFeaturesOrBuilder() {
+      if (creative3MonthCntFeaturesBuilder_ != null) {
+        return creative3MonthCntFeaturesBuilder_.getMessageOrBuilder();
+      } else {
+        return creative3MonthCntFeatures_ == null ?
+            com.tzld.piaoquan.recommend.feature.model.feature.AdActionFeatureProto.getDefaultInstance() : creative3MonthCntFeatures_;
+      }
+    }
+    /**
+     * <code>.AdActionFeatureProto creative_3month_cnt_features = 16;</code>
+     */
+    private com.google.protobuf.SingleFieldBuilderV3<
+        com.tzld.piaoquan.recommend.feature.model.feature.AdActionFeatureProto, com.tzld.piaoquan.recommend.feature.model.feature.AdActionFeatureProto.Builder, com.tzld.piaoquan.recommend.feature.model.feature.AdActionFeatureProtoOrBuilder> 
+        getCreative3MonthCntFeaturesFieldBuilder() {
+      if (creative3MonthCntFeaturesBuilder_ == null) {
+        creative3MonthCntFeaturesBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
+            com.tzld.piaoquan.recommend.feature.model.feature.AdActionFeatureProto, com.tzld.piaoquan.recommend.feature.model.feature.AdActionFeatureProto.Builder, com.tzld.piaoquan.recommend.feature.model.feature.AdActionFeatureProtoOrBuilder>(
+                getCreative3MonthCntFeatures(),
+                getParentForChildren(),
+                isClean());
+        creative3MonthCntFeatures_ = null;
+      }
+      return creative3MonthCntFeaturesBuilder_;
+    }
+
+    private com.tzld.piaoquan.recommend.feature.model.feature.AdActionFeatureProto advertiser1DayCntFeatures_;
+    private com.google.protobuf.SingleFieldBuilderV3<
+        com.tzld.piaoquan.recommend.feature.model.feature.AdActionFeatureProto, com.tzld.piaoquan.recommend.feature.model.feature.AdActionFeatureProto.Builder, com.tzld.piaoquan.recommend.feature.model.feature.AdActionFeatureProtoOrBuilder> advertiser1DayCntFeaturesBuilder_;
+    /**
+     * <code>.AdActionFeatureProto advertiser_1day_cnt_features = 17;</code>
+     * @return Whether the advertiser1dayCntFeatures field is set.
+     */
+    public boolean hasAdvertiser1DayCntFeatures() {
+      return advertiser1DayCntFeaturesBuilder_ != null || advertiser1DayCntFeatures_ != null;
+    }
+    /**
+     * <code>.AdActionFeatureProto advertiser_1day_cnt_features = 17;</code>
+     * @return The advertiser1dayCntFeatures.
+     */
+    public com.tzld.piaoquan.recommend.feature.model.feature.AdActionFeatureProto getAdvertiser1DayCntFeatures() {
+      if (advertiser1DayCntFeaturesBuilder_ == null) {
+        return advertiser1DayCntFeatures_ == null ? com.tzld.piaoquan.recommend.feature.model.feature.AdActionFeatureProto.getDefaultInstance() : advertiser1DayCntFeatures_;
+      } else {
+        return advertiser1DayCntFeaturesBuilder_.getMessage();
+      }
+    }
+    /**
+     * <code>.AdActionFeatureProto advertiser_1day_cnt_features = 17;</code>
+     */
+    public Builder setAdvertiser1DayCntFeatures(com.tzld.piaoquan.recommend.feature.model.feature.AdActionFeatureProto value) {
+      if (advertiser1DayCntFeaturesBuilder_ == null) {
+        if (value == null) {
+          throw new NullPointerException();
+        }
+        advertiser1DayCntFeatures_ = value;
+        onChanged();
+      } else {
+        advertiser1DayCntFeaturesBuilder_.setMessage(value);
+      }
+
+      return this;
+    }
+    /**
+     * <code>.AdActionFeatureProto advertiser_1day_cnt_features = 17;</code>
+     */
+    public Builder setAdvertiser1DayCntFeatures(
+        com.tzld.piaoquan.recommend.feature.model.feature.AdActionFeatureProto.Builder builderForValue) {
+      if (advertiser1DayCntFeaturesBuilder_ == null) {
+        advertiser1DayCntFeatures_ = builderForValue.build();
+        onChanged();
+      } else {
+        advertiser1DayCntFeaturesBuilder_.setMessage(builderForValue.build());
+      }
+
+      return this;
+    }
+    /**
+     * <code>.AdActionFeatureProto advertiser_1day_cnt_features = 17;</code>
+     */
+    public Builder mergeAdvertiser1DayCntFeatures(com.tzld.piaoquan.recommend.feature.model.feature.AdActionFeatureProto value) {
+      if (advertiser1DayCntFeaturesBuilder_ == null) {
+        if (advertiser1DayCntFeatures_ != null) {
+          advertiser1DayCntFeatures_ =
+            com.tzld.piaoquan.recommend.feature.model.feature.AdActionFeatureProto.newBuilder(advertiser1DayCntFeatures_).mergeFrom(value).buildPartial();
+        } else {
+          advertiser1DayCntFeatures_ = value;
+        }
+        onChanged();
+      } else {
+        advertiser1DayCntFeaturesBuilder_.mergeFrom(value);
+      }
+
+      return this;
+    }
+    /**
+     * <code>.AdActionFeatureProto advertiser_1day_cnt_features = 17;</code>
+     */
+    public Builder clearAdvertiser1DayCntFeatures() {
+      if (advertiser1DayCntFeaturesBuilder_ == null) {
+        advertiser1DayCntFeatures_ = null;
+        onChanged();
+      } else {
+        advertiser1DayCntFeatures_ = null;
+        advertiser1DayCntFeaturesBuilder_ = null;
+      }
+
+      return this;
+    }
+    /**
+     * <code>.AdActionFeatureProto advertiser_1day_cnt_features = 17;</code>
+     */
+    public com.tzld.piaoquan.recommend.feature.model.feature.AdActionFeatureProto.Builder getAdvertiser1DayCntFeaturesBuilder() {
+      
+      onChanged();
+      return getAdvertiser1DayCntFeaturesFieldBuilder().getBuilder();
+    }
+    /**
+     * <code>.AdActionFeatureProto advertiser_1day_cnt_features = 17;</code>
+     */
+    public com.tzld.piaoquan.recommend.feature.model.feature.AdActionFeatureProtoOrBuilder getAdvertiser1DayCntFeaturesOrBuilder() {
+      if (advertiser1DayCntFeaturesBuilder_ != null) {
+        return advertiser1DayCntFeaturesBuilder_.getMessageOrBuilder();
+      } else {
+        return advertiser1DayCntFeatures_ == null ?
+            com.tzld.piaoquan.recommend.feature.model.feature.AdActionFeatureProto.getDefaultInstance() : advertiser1DayCntFeatures_;
+      }
+    }
+    /**
+     * <code>.AdActionFeatureProto advertiser_1day_cnt_features = 17;</code>
+     */
+    private com.google.protobuf.SingleFieldBuilderV3<
+        com.tzld.piaoquan.recommend.feature.model.feature.AdActionFeatureProto, com.tzld.piaoquan.recommend.feature.model.feature.AdActionFeatureProto.Builder, com.tzld.piaoquan.recommend.feature.model.feature.AdActionFeatureProtoOrBuilder> 
+        getAdvertiser1DayCntFeaturesFieldBuilder() {
+      if (advertiser1DayCntFeaturesBuilder_ == null) {
+        advertiser1DayCntFeaturesBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
+            com.tzld.piaoquan.recommend.feature.model.feature.AdActionFeatureProto, com.tzld.piaoquan.recommend.feature.model.feature.AdActionFeatureProto.Builder, com.tzld.piaoquan.recommend.feature.model.feature.AdActionFeatureProtoOrBuilder>(
+                getAdvertiser1DayCntFeatures(),
+                getParentForChildren(),
+                isClean());
+        advertiser1DayCntFeatures_ = null;
+      }
+      return advertiser1DayCntFeaturesBuilder_;
+    }
+
+    private com.tzld.piaoquan.recommend.feature.model.feature.AdActionFeatureProto advertiser3DayCntFeatures_;
+    private com.google.protobuf.SingleFieldBuilderV3<
+        com.tzld.piaoquan.recommend.feature.model.feature.AdActionFeatureProto, com.tzld.piaoquan.recommend.feature.model.feature.AdActionFeatureProto.Builder, com.tzld.piaoquan.recommend.feature.model.feature.AdActionFeatureProtoOrBuilder> advertiser3DayCntFeaturesBuilder_;
+    /**
+     * <code>.AdActionFeatureProto advertiser_3day_cnt_features = 18;</code>
+     * @return Whether the advertiser3dayCntFeatures field is set.
+     */
+    public boolean hasAdvertiser3DayCntFeatures() {
+      return advertiser3DayCntFeaturesBuilder_ != null || advertiser3DayCntFeatures_ != null;
+    }
+    /**
+     * <code>.AdActionFeatureProto advertiser_3day_cnt_features = 18;</code>
+     * @return The advertiser3dayCntFeatures.
+     */
+    public com.tzld.piaoquan.recommend.feature.model.feature.AdActionFeatureProto getAdvertiser3DayCntFeatures() {
+      if (advertiser3DayCntFeaturesBuilder_ == null) {
+        return advertiser3DayCntFeatures_ == null ? com.tzld.piaoquan.recommend.feature.model.feature.AdActionFeatureProto.getDefaultInstance() : advertiser3DayCntFeatures_;
+      } else {
+        return advertiser3DayCntFeaturesBuilder_.getMessage();
+      }
+    }
+    /**
+     * <code>.AdActionFeatureProto advertiser_3day_cnt_features = 18;</code>
+     */
+    public Builder setAdvertiser3DayCntFeatures(com.tzld.piaoquan.recommend.feature.model.feature.AdActionFeatureProto value) {
+      if (advertiser3DayCntFeaturesBuilder_ == null) {
+        if (value == null) {
+          throw new NullPointerException();
+        }
+        advertiser3DayCntFeatures_ = value;
+        onChanged();
+      } else {
+        advertiser3DayCntFeaturesBuilder_.setMessage(value);
+      }
+
+      return this;
+    }
+    /**
+     * <code>.AdActionFeatureProto advertiser_3day_cnt_features = 18;</code>
+     */
+    public Builder setAdvertiser3DayCntFeatures(
+        com.tzld.piaoquan.recommend.feature.model.feature.AdActionFeatureProto.Builder builderForValue) {
+      if (advertiser3DayCntFeaturesBuilder_ == null) {
+        advertiser3DayCntFeatures_ = builderForValue.build();
+        onChanged();
+      } else {
+        advertiser3DayCntFeaturesBuilder_.setMessage(builderForValue.build());
+      }
+
+      return this;
+    }
+    /**
+     * <code>.AdActionFeatureProto advertiser_3day_cnt_features = 18;</code>
+     */
+    public Builder mergeAdvertiser3DayCntFeatures(com.tzld.piaoquan.recommend.feature.model.feature.AdActionFeatureProto value) {
+      if (advertiser3DayCntFeaturesBuilder_ == null) {
+        if (advertiser3DayCntFeatures_ != null) {
+          advertiser3DayCntFeatures_ =
+            com.tzld.piaoquan.recommend.feature.model.feature.AdActionFeatureProto.newBuilder(advertiser3DayCntFeatures_).mergeFrom(value).buildPartial();
+        } else {
+          advertiser3DayCntFeatures_ = value;
+        }
+        onChanged();
+      } else {
+        advertiser3DayCntFeaturesBuilder_.mergeFrom(value);
+      }
+
+      return this;
+    }
+    /**
+     * <code>.AdActionFeatureProto advertiser_3day_cnt_features = 18;</code>
+     */
+    public Builder clearAdvertiser3DayCntFeatures() {
+      if (advertiser3DayCntFeaturesBuilder_ == null) {
+        advertiser3DayCntFeatures_ = null;
+        onChanged();
+      } else {
+        advertiser3DayCntFeatures_ = null;
+        advertiser3DayCntFeaturesBuilder_ = null;
+      }
+
+      return this;
+    }
+    /**
+     * <code>.AdActionFeatureProto advertiser_3day_cnt_features = 18;</code>
+     */
+    public com.tzld.piaoquan.recommend.feature.model.feature.AdActionFeatureProto.Builder getAdvertiser3DayCntFeaturesBuilder() {
+      
+      onChanged();
+      return getAdvertiser3DayCntFeaturesFieldBuilder().getBuilder();
+    }
+    /**
+     * <code>.AdActionFeatureProto advertiser_3day_cnt_features = 18;</code>
+     */
+    public com.tzld.piaoquan.recommend.feature.model.feature.AdActionFeatureProtoOrBuilder getAdvertiser3DayCntFeaturesOrBuilder() {
+      if (advertiser3DayCntFeaturesBuilder_ != null) {
+        return advertiser3DayCntFeaturesBuilder_.getMessageOrBuilder();
+      } else {
+        return advertiser3DayCntFeatures_ == null ?
+            com.tzld.piaoquan.recommend.feature.model.feature.AdActionFeatureProto.getDefaultInstance() : advertiser3DayCntFeatures_;
+      }
+    }
+    /**
+     * <code>.AdActionFeatureProto advertiser_3day_cnt_features = 18;</code>
+     */
+    private com.google.protobuf.SingleFieldBuilderV3<
+        com.tzld.piaoquan.recommend.feature.model.feature.AdActionFeatureProto, com.tzld.piaoquan.recommend.feature.model.feature.AdActionFeatureProto.Builder, com.tzld.piaoquan.recommend.feature.model.feature.AdActionFeatureProtoOrBuilder> 
+        getAdvertiser3DayCntFeaturesFieldBuilder() {
+      if (advertiser3DayCntFeaturesBuilder_ == null) {
+        advertiser3DayCntFeaturesBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
+            com.tzld.piaoquan.recommend.feature.model.feature.AdActionFeatureProto, com.tzld.piaoquan.recommend.feature.model.feature.AdActionFeatureProto.Builder, com.tzld.piaoquan.recommend.feature.model.feature.AdActionFeatureProtoOrBuilder>(
+                getAdvertiser3DayCntFeatures(),
+                getParentForChildren(),
+                isClean());
+        advertiser3DayCntFeatures_ = null;
+      }
+      return advertiser3DayCntFeaturesBuilder_;
+    }
+
+    private com.tzld.piaoquan.recommend.feature.model.feature.AdActionFeatureProto advertiser7DayCntFeatures_;
+    private com.google.protobuf.SingleFieldBuilderV3<
+        com.tzld.piaoquan.recommend.feature.model.feature.AdActionFeatureProto, com.tzld.piaoquan.recommend.feature.model.feature.AdActionFeatureProto.Builder, com.tzld.piaoquan.recommend.feature.model.feature.AdActionFeatureProtoOrBuilder> advertiser7DayCntFeaturesBuilder_;
+    /**
+     * <code>.AdActionFeatureProto advertiser_7day_cnt_features = 19;</code>
+     * @return Whether the advertiser7dayCntFeatures field is set.
+     */
+    public boolean hasAdvertiser7DayCntFeatures() {
+      return advertiser7DayCntFeaturesBuilder_ != null || advertiser7DayCntFeatures_ != null;
+    }
+    /**
+     * <code>.AdActionFeatureProto advertiser_7day_cnt_features = 19;</code>
+     * @return The advertiser7dayCntFeatures.
+     */
+    public com.tzld.piaoquan.recommend.feature.model.feature.AdActionFeatureProto getAdvertiser7DayCntFeatures() {
+      if (advertiser7DayCntFeaturesBuilder_ == null) {
+        return advertiser7DayCntFeatures_ == null ? com.tzld.piaoquan.recommend.feature.model.feature.AdActionFeatureProto.getDefaultInstance() : advertiser7DayCntFeatures_;
+      } else {
+        return advertiser7DayCntFeaturesBuilder_.getMessage();
+      }
+    }
+    /**
+     * <code>.AdActionFeatureProto advertiser_7day_cnt_features = 19;</code>
+     */
+    public Builder setAdvertiser7DayCntFeatures(com.tzld.piaoquan.recommend.feature.model.feature.AdActionFeatureProto value) {
+      if (advertiser7DayCntFeaturesBuilder_ == null) {
+        if (value == null) {
+          throw new NullPointerException();
+        }
+        advertiser7DayCntFeatures_ = value;
+        onChanged();
+      } else {
+        advertiser7DayCntFeaturesBuilder_.setMessage(value);
+      }
+
+      return this;
+    }
+    /**
+     * <code>.AdActionFeatureProto advertiser_7day_cnt_features = 19;</code>
+     */
+    public Builder setAdvertiser7DayCntFeatures(
+        com.tzld.piaoquan.recommend.feature.model.feature.AdActionFeatureProto.Builder builderForValue) {
+      if (advertiser7DayCntFeaturesBuilder_ == null) {
+        advertiser7DayCntFeatures_ = builderForValue.build();
+        onChanged();
+      } else {
+        advertiser7DayCntFeaturesBuilder_.setMessage(builderForValue.build());
+      }
+
+      return this;
+    }
+    /**
+     * <code>.AdActionFeatureProto advertiser_7day_cnt_features = 19;</code>
+     */
+    public Builder mergeAdvertiser7DayCntFeatures(com.tzld.piaoquan.recommend.feature.model.feature.AdActionFeatureProto value) {
+      if (advertiser7DayCntFeaturesBuilder_ == null) {
+        if (advertiser7DayCntFeatures_ != null) {
+          advertiser7DayCntFeatures_ =
+            com.tzld.piaoquan.recommend.feature.model.feature.AdActionFeatureProto.newBuilder(advertiser7DayCntFeatures_).mergeFrom(value).buildPartial();
+        } else {
+          advertiser7DayCntFeatures_ = value;
+        }
+        onChanged();
+      } else {
+        advertiser7DayCntFeaturesBuilder_.mergeFrom(value);
+      }
+
+      return this;
+    }
+    /**
+     * <code>.AdActionFeatureProto advertiser_7day_cnt_features = 19;</code>
+     */
+    public Builder clearAdvertiser7DayCntFeatures() {
+      if (advertiser7DayCntFeaturesBuilder_ == null) {
+        advertiser7DayCntFeatures_ = null;
+        onChanged();
+      } else {
+        advertiser7DayCntFeatures_ = null;
+        advertiser7DayCntFeaturesBuilder_ = null;
+      }
+
+      return this;
+    }
+    /**
+     * <code>.AdActionFeatureProto advertiser_7day_cnt_features = 19;</code>
+     */
+    public com.tzld.piaoquan.recommend.feature.model.feature.AdActionFeatureProto.Builder getAdvertiser7DayCntFeaturesBuilder() {
+      
+      onChanged();
+      return getAdvertiser7DayCntFeaturesFieldBuilder().getBuilder();
+    }
+    /**
+     * <code>.AdActionFeatureProto advertiser_7day_cnt_features = 19;</code>
+     */
+    public com.tzld.piaoquan.recommend.feature.model.feature.AdActionFeatureProtoOrBuilder getAdvertiser7DayCntFeaturesOrBuilder() {
+      if (advertiser7DayCntFeaturesBuilder_ != null) {
+        return advertiser7DayCntFeaturesBuilder_.getMessageOrBuilder();
+      } else {
+        return advertiser7DayCntFeatures_ == null ?
+            com.tzld.piaoquan.recommend.feature.model.feature.AdActionFeatureProto.getDefaultInstance() : advertiser7DayCntFeatures_;
+      }
+    }
+    /**
+     * <code>.AdActionFeatureProto advertiser_7day_cnt_features = 19;</code>
+     */
+    private com.google.protobuf.SingleFieldBuilderV3<
+        com.tzld.piaoquan.recommend.feature.model.feature.AdActionFeatureProto, com.tzld.piaoquan.recommend.feature.model.feature.AdActionFeatureProto.Builder, com.tzld.piaoquan.recommend.feature.model.feature.AdActionFeatureProtoOrBuilder> 
+        getAdvertiser7DayCntFeaturesFieldBuilder() {
+      if (advertiser7DayCntFeaturesBuilder_ == null) {
+        advertiser7DayCntFeaturesBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
+            com.tzld.piaoquan.recommend.feature.model.feature.AdActionFeatureProto, com.tzld.piaoquan.recommend.feature.model.feature.AdActionFeatureProto.Builder, com.tzld.piaoquan.recommend.feature.model.feature.AdActionFeatureProtoOrBuilder>(
+                getAdvertiser7DayCntFeatures(),
+                getParentForChildren(),
+                isClean());
+        advertiser7DayCntFeatures_ = null;
+      }
+      return advertiser7DayCntFeaturesBuilder_;
+    }
+
+    private com.tzld.piaoquan.recommend.feature.model.feature.AdActionFeatureProto advertiser3MonthCntFeatures_;
+    private com.google.protobuf.SingleFieldBuilderV3<
+        com.tzld.piaoquan.recommend.feature.model.feature.AdActionFeatureProto, com.tzld.piaoquan.recommend.feature.model.feature.AdActionFeatureProto.Builder, com.tzld.piaoquan.recommend.feature.model.feature.AdActionFeatureProtoOrBuilder> advertiser3MonthCntFeaturesBuilder_;
+    /**
+     * <code>.AdActionFeatureProto advertiser_3month_cnt_features = 20;</code>
+     * @return Whether the advertiser3monthCntFeatures field is set.
+     */
+    public boolean hasAdvertiser3MonthCntFeatures() {
+      return advertiser3MonthCntFeaturesBuilder_ != null || advertiser3MonthCntFeatures_ != null;
+    }
+    /**
+     * <code>.AdActionFeatureProto advertiser_3month_cnt_features = 20;</code>
+     * @return The advertiser3monthCntFeatures.
+     */
+    public com.tzld.piaoquan.recommend.feature.model.feature.AdActionFeatureProto getAdvertiser3MonthCntFeatures() {
+      if (advertiser3MonthCntFeaturesBuilder_ == null) {
+        return advertiser3MonthCntFeatures_ == null ? com.tzld.piaoquan.recommend.feature.model.feature.AdActionFeatureProto.getDefaultInstance() : advertiser3MonthCntFeatures_;
+      } else {
+        return advertiser3MonthCntFeaturesBuilder_.getMessage();
+      }
+    }
+    /**
+     * <code>.AdActionFeatureProto advertiser_3month_cnt_features = 20;</code>
+     */
+    public Builder setAdvertiser3MonthCntFeatures(com.tzld.piaoquan.recommend.feature.model.feature.AdActionFeatureProto value) {
+      if (advertiser3MonthCntFeaturesBuilder_ == null) {
+        if (value == null) {
+          throw new NullPointerException();
+        }
+        advertiser3MonthCntFeatures_ = value;
+        onChanged();
+      } else {
+        advertiser3MonthCntFeaturesBuilder_.setMessage(value);
+      }
+
+      return this;
+    }
+    /**
+     * <code>.AdActionFeatureProto advertiser_3month_cnt_features = 20;</code>
+     */
+    public Builder setAdvertiser3MonthCntFeatures(
+        com.tzld.piaoquan.recommend.feature.model.feature.AdActionFeatureProto.Builder builderForValue) {
+      if (advertiser3MonthCntFeaturesBuilder_ == null) {
+        advertiser3MonthCntFeatures_ = builderForValue.build();
+        onChanged();
+      } else {
+        advertiser3MonthCntFeaturesBuilder_.setMessage(builderForValue.build());
+      }
+
+      return this;
+    }
+    /**
+     * <code>.AdActionFeatureProto advertiser_3month_cnt_features = 20;</code>
+     */
+    public Builder mergeAdvertiser3MonthCntFeatures(com.tzld.piaoquan.recommend.feature.model.feature.AdActionFeatureProto value) {
+      if (advertiser3MonthCntFeaturesBuilder_ == null) {
+        if (advertiser3MonthCntFeatures_ != null) {
+          advertiser3MonthCntFeatures_ =
+            com.tzld.piaoquan.recommend.feature.model.feature.AdActionFeatureProto.newBuilder(advertiser3MonthCntFeatures_).mergeFrom(value).buildPartial();
+        } else {
+          advertiser3MonthCntFeatures_ = value;
+        }
+        onChanged();
+      } else {
+        advertiser3MonthCntFeaturesBuilder_.mergeFrom(value);
+      }
+
+      return this;
+    }
+    /**
+     * <code>.AdActionFeatureProto advertiser_3month_cnt_features = 20;</code>
+     */
+    public Builder clearAdvertiser3MonthCntFeatures() {
+      if (advertiser3MonthCntFeaturesBuilder_ == null) {
+        advertiser3MonthCntFeatures_ = null;
+        onChanged();
+      } else {
+        advertiser3MonthCntFeatures_ = null;
+        advertiser3MonthCntFeaturesBuilder_ = null;
+      }
+
+      return this;
+    }
+    /**
+     * <code>.AdActionFeatureProto advertiser_3month_cnt_features = 20;</code>
+     */
+    public com.tzld.piaoquan.recommend.feature.model.feature.AdActionFeatureProto.Builder getAdvertiser3MonthCntFeaturesBuilder() {
+      
+      onChanged();
+      return getAdvertiser3MonthCntFeaturesFieldBuilder().getBuilder();
+    }
+    /**
+     * <code>.AdActionFeatureProto advertiser_3month_cnt_features = 20;</code>
+     */
+    public com.tzld.piaoquan.recommend.feature.model.feature.AdActionFeatureProtoOrBuilder getAdvertiser3MonthCntFeaturesOrBuilder() {
+      if (advertiser3MonthCntFeaturesBuilder_ != null) {
+        return advertiser3MonthCntFeaturesBuilder_.getMessageOrBuilder();
+      } else {
+        return advertiser3MonthCntFeatures_ == null ?
+            com.tzld.piaoquan.recommend.feature.model.feature.AdActionFeatureProto.getDefaultInstance() : advertiser3MonthCntFeatures_;
+      }
+    }
+    /**
+     * <code>.AdActionFeatureProto advertiser_3month_cnt_features = 20;</code>
+     */
+    private com.google.protobuf.SingleFieldBuilderV3<
+        com.tzld.piaoquan.recommend.feature.model.feature.AdActionFeatureProto, com.tzld.piaoquan.recommend.feature.model.feature.AdActionFeatureProto.Builder, com.tzld.piaoquan.recommend.feature.model.feature.AdActionFeatureProtoOrBuilder> 
+        getAdvertiser3MonthCntFeaturesFieldBuilder() {
+      if (advertiser3MonthCntFeaturesBuilder_ == null) {
+        advertiser3MonthCntFeaturesBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
+            com.tzld.piaoquan.recommend.feature.model.feature.AdActionFeatureProto, com.tzld.piaoquan.recommend.feature.model.feature.AdActionFeatureProto.Builder, com.tzld.piaoquan.recommend.feature.model.feature.AdActionFeatureProtoOrBuilder>(
+                getAdvertiser3MonthCntFeatures(),
+                getParentForChildren(),
+                isClean());
+        advertiser3MonthCntFeatures_ = null;
+      }
+      return advertiser3MonthCntFeaturesBuilder_;
+    }
     @java.lang.Override
     public final Builder setUnknownFields(
         final com.google.protobuf.UnknownFieldSet unknownFields) {

+ 120 - 0
recommend-feature-client/src/main/java/com/tzld/piaoquan/recommend/feature/model/feature/AdItemFeatureProtoOrBuilder.java

@@ -162,4 +162,124 @@ public interface AdItemFeatureProtoOrBuilder extends
    * <code>.AdActionFeatureProto month3_cnt_features = 12;</code>
    */
   com.tzld.piaoquan.recommend.feature.model.feature.AdActionFeatureProtoOrBuilder getMonth3CntFeaturesOrBuilder();
+
+  /**
+   * <code>.AdActionFeatureProto creative_1day_cnt_features = 13;</code>
+   * @return Whether the creative1dayCntFeatures field is set.
+   */
+  boolean hasCreative1DayCntFeatures();
+  /**
+   * <code>.AdActionFeatureProto creative_1day_cnt_features = 13;</code>
+   * @return The creative1dayCntFeatures.
+   */
+  com.tzld.piaoquan.recommend.feature.model.feature.AdActionFeatureProto getCreative1DayCntFeatures();
+  /**
+   * <code>.AdActionFeatureProto creative_1day_cnt_features = 13;</code>
+   */
+  com.tzld.piaoquan.recommend.feature.model.feature.AdActionFeatureProtoOrBuilder getCreative1DayCntFeaturesOrBuilder();
+
+  /**
+   * <code>.AdActionFeatureProto creative_3day_cnt_features = 14;</code>
+   * @return Whether the creative3dayCntFeatures field is set.
+   */
+  boolean hasCreative3DayCntFeatures();
+  /**
+   * <code>.AdActionFeatureProto creative_3day_cnt_features = 14;</code>
+   * @return The creative3dayCntFeatures.
+   */
+  com.tzld.piaoquan.recommend.feature.model.feature.AdActionFeatureProto getCreative3DayCntFeatures();
+  /**
+   * <code>.AdActionFeatureProto creative_3day_cnt_features = 14;</code>
+   */
+  com.tzld.piaoquan.recommend.feature.model.feature.AdActionFeatureProtoOrBuilder getCreative3DayCntFeaturesOrBuilder();
+
+  /**
+   * <code>.AdActionFeatureProto creative_7day_cnt_features = 15;</code>
+   * @return Whether the creative7dayCntFeatures field is set.
+   */
+  boolean hasCreative7DayCntFeatures();
+  /**
+   * <code>.AdActionFeatureProto creative_7day_cnt_features = 15;</code>
+   * @return The creative7dayCntFeatures.
+   */
+  com.tzld.piaoquan.recommend.feature.model.feature.AdActionFeatureProto getCreative7DayCntFeatures();
+  /**
+   * <code>.AdActionFeatureProto creative_7day_cnt_features = 15;</code>
+   */
+  com.tzld.piaoquan.recommend.feature.model.feature.AdActionFeatureProtoOrBuilder getCreative7DayCntFeaturesOrBuilder();
+
+  /**
+   * <code>.AdActionFeatureProto creative_3month_cnt_features = 16;</code>
+   * @return Whether the creative3monthCntFeatures field is set.
+   */
+  boolean hasCreative3MonthCntFeatures();
+  /**
+   * <code>.AdActionFeatureProto creative_3month_cnt_features = 16;</code>
+   * @return The creative3monthCntFeatures.
+   */
+  com.tzld.piaoquan.recommend.feature.model.feature.AdActionFeatureProto getCreative3MonthCntFeatures();
+  /**
+   * <code>.AdActionFeatureProto creative_3month_cnt_features = 16;</code>
+   */
+  com.tzld.piaoquan.recommend.feature.model.feature.AdActionFeatureProtoOrBuilder getCreative3MonthCntFeaturesOrBuilder();
+
+  /**
+   * <code>.AdActionFeatureProto advertiser_1day_cnt_features = 17;</code>
+   * @return Whether the advertiser1dayCntFeatures field is set.
+   */
+  boolean hasAdvertiser1DayCntFeatures();
+  /**
+   * <code>.AdActionFeatureProto advertiser_1day_cnt_features = 17;</code>
+   * @return The advertiser1dayCntFeatures.
+   */
+  com.tzld.piaoquan.recommend.feature.model.feature.AdActionFeatureProto getAdvertiser1DayCntFeatures();
+  /**
+   * <code>.AdActionFeatureProto advertiser_1day_cnt_features = 17;</code>
+   */
+  com.tzld.piaoquan.recommend.feature.model.feature.AdActionFeatureProtoOrBuilder getAdvertiser1DayCntFeaturesOrBuilder();
+
+  /**
+   * <code>.AdActionFeatureProto advertiser_3day_cnt_features = 18;</code>
+   * @return Whether the advertiser3dayCntFeatures field is set.
+   */
+  boolean hasAdvertiser3DayCntFeatures();
+  /**
+   * <code>.AdActionFeatureProto advertiser_3day_cnt_features = 18;</code>
+   * @return The advertiser3dayCntFeatures.
+   */
+  com.tzld.piaoquan.recommend.feature.model.feature.AdActionFeatureProto getAdvertiser3DayCntFeatures();
+  /**
+   * <code>.AdActionFeatureProto advertiser_3day_cnt_features = 18;</code>
+   */
+  com.tzld.piaoquan.recommend.feature.model.feature.AdActionFeatureProtoOrBuilder getAdvertiser3DayCntFeaturesOrBuilder();
+
+  /**
+   * <code>.AdActionFeatureProto advertiser_7day_cnt_features = 19;</code>
+   * @return Whether the advertiser7dayCntFeatures field is set.
+   */
+  boolean hasAdvertiser7DayCntFeatures();
+  /**
+   * <code>.AdActionFeatureProto advertiser_7day_cnt_features = 19;</code>
+   * @return The advertiser7dayCntFeatures.
+   */
+  com.tzld.piaoquan.recommend.feature.model.feature.AdActionFeatureProto getAdvertiser7DayCntFeatures();
+  /**
+   * <code>.AdActionFeatureProto advertiser_7day_cnt_features = 19;</code>
+   */
+  com.tzld.piaoquan.recommend.feature.model.feature.AdActionFeatureProtoOrBuilder getAdvertiser7DayCntFeaturesOrBuilder();
+
+  /**
+   * <code>.AdActionFeatureProto advertiser_3month_cnt_features = 20;</code>
+   * @return Whether the advertiser3monthCntFeatures field is set.
+   */
+  boolean hasAdvertiser3MonthCntFeatures();
+  /**
+   * <code>.AdActionFeatureProto advertiser_3month_cnt_features = 20;</code>
+   * @return The advertiser3monthCntFeatures.
+   */
+  com.tzld.piaoquan.recommend.feature.model.feature.AdActionFeatureProto getAdvertiser3MonthCntFeatures();
+  /**
+   * <code>.AdActionFeatureProto advertiser_3month_cnt_features = 20;</code>
+   */
+  com.tzld.piaoquan.recommend.feature.model.feature.AdActionFeatureProtoOrBuilder getAdvertiser3MonthCntFeaturesOrBuilder();
 }

+ 36 - 24
recommend-feature-client/src/main/java/com/tzld/piaoquan/recommend/feature/model/feature/Feature.java

@@ -179,7 +179,7 @@ public final class Feature {
       "rAdFeatureRequest\022\013\n\003mid\030\001 \001(\t\"a\n\030GetUse" +
       "rAdFeatureResponse\022\027\n\006result\030\001 \001(\0132\007.Res" +
       "ult\022,\n\017user_ad_feature\030\002 \001(\0132\023.UserAdFea" +
-      "tureProto\"\376\002\n\022AdItemFeatureProto\022\014\n\004adId" +
+      "tureProto\"\342\006\n\022AdItemFeatureProto\022\014\n\004adId" +
       "\030\001 \001(\t\022\016\n\006adCode\030\002 \001(\t\022\024\n\014advertiserId\030\003" +
       " \001(\t\022\026\n\016advertiserCode\030\004 \001(\t\022\022\n\ncampaign" +
       "Id\030\005 \001(\t\022\024\n\014campaignCode\030\006 \001(\t\022\022\n\ncreati" +
@@ -188,28 +188,40 @@ public final class Feature {
       "to\0220\n\021day3_cnt_features\030\n \001(\0132\025.AdAction" +
       "FeatureProto\0220\n\021day7_cnt_features\030\013 \001(\0132" +
       "\025.AdActionFeatureProto\0222\n\023month3_cnt_fea" +
-      "tures\030\014 \001(\0132\025.AdActionFeatureProto\"(\n\027Ge" +
-      "tAdItemFeatureRequest\022\r\n\005ad_id\030\001 \001(\t\"a\n\030" +
-      "GetAdItemFeatureResponse\022\027\n\006result\030\001 \001(\013" +
-      "2\007.Result\022,\n\017ad_item_feature\030\002 \001(\0132\023.AdI" +
-      "temFeatureProto\"+\n\032GetAllAdItemFeatureRe" +
-      "quest\022\r\n\005ad_id\030\001 \003(\t\"d\n\033GetAllAdItemFeat" +
-      "ureResponse\022\027\n\006result\030\001 \001(\0132\007.Result\022,\n\017" +
-      "ad_item_feature\030\002 \003(\0132\023.AdItemFeaturePro" +
-      "to2\314\003\n\016FeatureService\022G\n\020GetUserAdFeatur" +
-      "e\022\030.GetUserAdFeatureRequest\032\031.GetUserAdF" +
-      "eatureResponse\022G\n\020GetAdItemFeature\022\030.Get" +
-      "AdItemFeatureRequest\032\031.GetAdItemFeatureR" +
-      "esponse\022P\n\023GetAllAdItemFeature\022\033.GetAllA" +
-      "dItemFeatureRequest\032\034.GetAllAdItemFeatur" +
-      "eResponse\022A\n\016GetUserFeature\022\026.GetUserFea" +
-      "tureRequest\032\027.GetUserFeatureResponse\022D\n\017" +
-      "GetVideoFeature\022\027.GetVideoFeatureRequest" +
-      "\032\030.GetVideoFeatureResponse\022M\n\022GetAllVide" +
-      "oFeature\022\032.GetAllVideoFeatureRequest\032\033.G" +
-      "etAllVideoFeatureResponseB8\n1com.tzld.pi" +
-      "aoquan.recommend.feature.model.featureP\001" +
-      "\210\001\001b\006proto3"
+      "tures\030\014 \001(\0132\025.AdActionFeatureProto\0229\n\032cr" +
+      "eative_1day_cnt_features\030\r \001(\0132\025.AdActio" +
+      "nFeatureProto\0229\n\032creative_3day_cnt_featu" +
+      "res\030\016 \001(\0132\025.AdActionFeatureProto\0229\n\032crea" +
+      "tive_7day_cnt_features\030\017 \001(\0132\025.AdActionF" +
+      "eatureProto\022;\n\034creative_3month_cnt_featu" +
+      "res\030\020 \001(\0132\025.AdActionFeatureProto\022;\n\034adve" +
+      "rtiser_1day_cnt_features\030\021 \001(\0132\025.AdActio" +
+      "nFeatureProto\022;\n\034advertiser_3day_cnt_fea" +
+      "tures\030\022 \001(\0132\025.AdActionFeatureProto\022;\n\034ad" +
+      "vertiser_7day_cnt_features\030\023 \001(\0132\025.AdAct" +
+      "ionFeatureProto\022=\n\036advertiser_3month_cnt" +
+      "_features\030\024 \001(\0132\025.AdActionFeatureProto\"(" +
+      "\n\027GetAdItemFeatureRequest\022\r\n\005ad_id\030\001 \001(\t" +
+      "\"a\n\030GetAdItemFeatureResponse\022\027\n\006result\030\001" +
+      " \001(\0132\007.Result\022,\n\017ad_item_feature\030\002 \001(\0132\023" +
+      ".AdItemFeatureProto\"+\n\032GetAllAdItemFeatu" +
+      "reRequest\022\r\n\005ad_id\030\001 \003(\t\"d\n\033GetAllAdItem" +
+      "FeatureResponse\022\027\n\006result\030\001 \001(\0132\007.Result" +
+      "\022,\n\017ad_item_feature\030\002 \003(\0132\023.AdItemFeatur" +
+      "eProto2\314\003\n\016FeatureService\022G\n\020GetUserAdFe" +
+      "ature\022\030.GetUserAdFeatureRequest\032\031.GetUse" +
+      "rAdFeatureResponse\022G\n\020GetAdItemFeature\022\030" +
+      ".GetAdItemFeatureRequest\032\031.GetAdItemFeat" +
+      "ureResponse\022P\n\023GetAllAdItemFeature\022\033.Get" +
+      "AllAdItemFeatureRequest\032\034.GetAllAdItemFe" +
+      "atureResponse\022A\n\016GetUserFeature\022\026.GetUse" +
+      "rFeatureRequest\032\027.GetUserFeatureResponse" +
+      "\022D\n\017GetVideoFeature\022\027.GetVideoFeatureReq" +
+      "uest\032\030.GetVideoFeatureResponse\022M\n\022GetAll" +
+      "VideoFeature\022\032.GetAllVideoFeatureRequest" +
+      "\032\033.GetAllVideoFeatureResponseB8\n1com.tzl" +
+      "d.piaoquan.recommend.feature.model.featu" +
+      "reP\001\210\001\001b\006proto3"
     };
     descriptor = com.google.protobuf.Descriptors.FileDescriptor
       .internalBuildGeneratedFileFrom(descriptorData,
@@ -300,7 +312,7 @@ public final class Feature {
     internal_static_AdItemFeatureProto_fieldAccessorTable = new
       com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
         internal_static_AdItemFeatureProto_descriptor,
-        new java.lang.String[] { "AdId", "AdCode", "AdvertiserId", "AdvertiserCode", "CampaignId", "CampaignCode", "CreativeId", "CreativeCode", "Day1CntFeatures", "Day3CntFeatures", "Day7CntFeatures", "Month3CntFeatures", });
+        new java.lang.String[] { "AdId", "AdCode", "AdvertiserId", "AdvertiserCode", "CampaignId", "CampaignCode", "CreativeId", "CreativeCode", "Day1CntFeatures", "Day3CntFeatures", "Day7CntFeatures", "Month3CntFeatures", "Creative1DayCntFeatures", "Creative3DayCntFeatures", "Creative7DayCntFeatures", "Creative3MonthCntFeatures", "Advertiser1DayCntFeatures", "Advertiser3DayCntFeatures", "Advertiser7DayCntFeatures", "Advertiser3MonthCntFeatures", });
     internal_static_GetAdItemFeatureRequest_descriptor =
       getDescriptor().getMessageTypes().get(14);
     internal_static_GetAdItemFeatureRequest_fieldAccessorTable = new

+ 8 - 0
recommend-feature-client/src/main/proto/com/tzld/piaoquan/recommend/feature/feature.proto

@@ -147,6 +147,14 @@ message AdItemFeatureProto {
     AdActionFeatureProto day3_cnt_features = 10;
     AdActionFeatureProto day7_cnt_features = 11;
     AdActionFeatureProto month3_cnt_features = 12;
+    AdActionFeatureProto creative_1day_cnt_features = 13;
+    AdActionFeatureProto creative_3day_cnt_features = 14;
+    AdActionFeatureProto creative_7day_cnt_features = 15;
+    AdActionFeatureProto creative_3month_cnt_features = 16;
+    AdActionFeatureProto advertiser_1day_cnt_features = 17;
+    AdActionFeatureProto advertiser_3day_cnt_features = 18;
+    AdActionFeatureProto advertiser_7day_cnt_features = 19;
+    AdActionFeatureProto advertiser_3month_cnt_features = 20;
 }
 
 

+ 1 - 1
recommend-feature-service/pom.xml

@@ -91,7 +91,7 @@
         <dependency>
             <groupId>com.tzld.piaoquan</groupId>
             <artifactId>recommend-feature-client</artifactId>
-            <version>1.0.0</version>
+            <version>1.0.1</version>
         </dependency>
         <dependency>
             <groupId>com.google.protobuf</groupId>

+ 63 - 14
recommend-feature-service/src/main/java/com/tzld/piaoquan/recommend/feature/model/AdActionFeature.java

@@ -4,30 +4,79 @@ import lombok.Data;
 
 @Data
 public class AdActionFeature {
-    private double adView;
-    private double adClick;
-    private double adConversion;
+    private double adView=0d;
+    private double adClick=0d;
+    private double adConversion=0d;
 
-    private double ctr;
-    private double cvr;
+    private double ctr=0d;
+    private double cvr=0d;
 
     private double ceilLog(Double key) {
-        return Math.ceil(Math.log(key));
+        return Math.ceil(Math.log(key + 1));
     }
 
     private double bucketRatioFeature(Double key) {
-        long bucket = Math.round(Math.log(key * 100));
-        if (bucket > 100)
-            bucket = 100;
+        long bucket = Math.round(Math.log((key + 1) * 1000));
+        if (bucket > 1000)
+            bucket = 1000;
         return (double) bucket;
     }
 
 
+    public void setOriginAdView(Object key) {
+        if (key == null) {
+            this.adView = 0.0;
+        } else {
+            String formateKey = key.toString().replace("\\N", "0");
+            this.adView = Double.valueOf(formateKey);
+        }
+    }
+
+    public void setOriginAdClick(Object key) {
+        if (key == null) {
+            this.adClick = 0.0;
+        } else {
+            String formateKey = key.toString().replace("\\N", "0");
+            this.adClick = Double.valueOf(formateKey);
+        }
+    }
+
+    public void setOriginAdConversion(Object key) {
+        if (key == null) {
+            this.adConversion = 0.0;
+        } else {
+            String formateKey = key.toString().replace("\\N", "0");
+            this.adConversion = Double.valueOf(formateKey);
+        }
+    }
+
+    // redis中保存原始值  server段统一处理
+    public void setOriginCtr(Object key) {
+        if (key == null) {
+            this.ctr = 0.0;
+        } else {
+            String formateKey = key.toString().replace("\\N", "0");
+            this.ctr = Double.valueOf(formateKey);
+        }
+    }
+
+    public void setOriginCvr(Object key) {
+        if (key == null) {
+            this.cvr = 0.0;
+        } else {
+            String formateKey = key.toString().replace("\\N", "0");
+            this.cvr = Double.valueOf(formateKey);
+        }
+    }
+
+
+
+
     public void setAdView(Object key) {
         if (key == null) {
             this.adView = 0.0;
         } else {
-            String formateKey = key.toString().replace("\\N", "-1");
+            String formateKey = key.toString().replace("\\N", "0");
             this.adView = ceilLog(Double.valueOf(formateKey));
         }
     }
@@ -36,7 +85,7 @@ public class AdActionFeature {
         if (key == null) {
             this.adClick = 0.0;
         } else {
-            String formateKey = key.toString().replace("\\N", "-1");
+            String formateKey = key.toString().replace("\\N", "0");
             this.adClick = ceilLog(Double.valueOf(formateKey));
         }
     }
@@ -45,7 +94,7 @@ public class AdActionFeature {
         if (key == null) {
             this.adConversion = 0.0;
         } else {
-            String formateKey = key.toString().replace("\\N", "-1");
+            String formateKey = key.toString().replace("\\N", "0");
             this.adConversion = ceilLog(Double.valueOf(formateKey));
         }
     }
@@ -54,7 +103,7 @@ public class AdActionFeature {
         if (key == null) {
             this.ctr = 0.0;
         } else {
-            String formateKey = key.toString().replace("\\N", "-1");
+            String formateKey = key.toString().replace("\\N", "0");
             this.ctr = bucketRatioFeature(Double.valueOf(formateKey));
         }
     }
@@ -63,7 +112,7 @@ public class AdActionFeature {
         if (key == null) {
             this.cvr = 0.0;
         } else {
-            String formateKey = key.toString().replace("\\N", "-1");
+            String formateKey = key.toString().replace("\\N", "0");
             this.cvr = bucketRatioFeature(Double.valueOf(formateKey));
         }
     }

+ 12 - 0
recommend-feature-service/src/main/java/com/tzld/piaoquan/recommend/feature/service/FeatureConverter.java

@@ -138,6 +138,7 @@ public class FeatureConverter {
         builder.setAdConversion(adActionFeature.getAdConversion());
         builder.setCtr(adActionFeature.getCtr());
         builder.setCvr(adActionFeature.getCvr());
+
         return builder.build();
     }
 
@@ -156,6 +157,17 @@ public class FeatureConverter {
         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();
     }
 }

+ 1 - 1
recommend-feature-service/src/main/resources/application-dev.yml

@@ -18,7 +18,7 @@ eureka:
 
 spring:
   redis:
-    hostName: r-bp1ps6my7lzg8rdhwx682.redis.rds.aliyuncs.com
+    hostName: r-bp1pi8wyv6lzvgjy5z.redis.rds.aliyuncs.com
     port: 6379
     password: Wqsd@2019
     timeout: 1000