浏览代码

feature client install

丁云鹏 1 年之前
父节点
当前提交
e29e9c0b50

+ 112 - 82
recommend-feature-client/src/main/java/com/tzld/piaoquan/recommend/feature/model/feature/Feature.java

@@ -89,6 +89,11 @@ public final class Feature {
   static final 
     com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
       internal_static_GetUserFeatureInfoRequest_fieldAccessorTable;
+  static final com.google.protobuf.Descriptors.Descriptor
+    internal_static_GetUserFeatureInfo_descriptor;
+  static final 
+    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
+      internal_static_GetUserFeatureInfo_fieldAccessorTable;
   static final com.google.protobuf.Descriptors.Descriptor
     internal_static_GetUserFeatureInfoResponse_descriptor;
   static final 
@@ -99,6 +104,11 @@ public final class Feature {
   static final 
     com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
       internal_static_GetVideoFeatureInfoRequest_fieldAccessorTable;
+  static final com.google.protobuf.Descriptors.Descriptor
+    internal_static_GetVideoFeatureInfo_descriptor;
+  static final 
+    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
+      internal_static_GetVideoFeatureInfo_fieldAccessorTable;
   static final com.google.protobuf.Descriptors.Descriptor
     internal_static_GetVideoFeatureInfoResponse_descriptor;
   static final 
@@ -202,79 +212,87 @@ public final class Feature {
       "er_7day_cnt_features\030\023 \001(\0132\025.AdActionFea" +
       "tureProto\022=\n\036advertiser_3month_cnt_featu" +
       "res\030\024 \001(\0132\025.AdActionFeatureProto\")\n\031GetU" +
-      "serFeatureInfoRequest\022\014\n\004mids\030\001 \003(\t\"\362\006\n\032" +
-      "GetUserFeatureInfoResponse\022\024\n\014u1hourExpC" +
-      "nt\030\001 \001(\003\022\026\n\016u1hourClickCnt\030\002 \001(\003\022\026\n\016u1ho" +
-      "urShareCnt\030\003 \001(\003\022\027\n\017u1hourReturnCnt\030\004 \001(" +
-      "\003\022\021\n\tuCtr1hour\030\005 \001(\001\022\021\n\tuStr1hour\030\006 \001(\001\022" +
-      "\021\n\tuRov1hour\030\007 \001(\001\022\021\n\tuRos1hour\030\010 \001(\001\022\024\n" +
-      "\014uTodayExpCnt\030\t \001(\003\022\026\n\016uTodayClickCnt\030\n " +
-      "\001(\003\022\026\n\016uTodayShareCnt\030\013 \001(\003\022\027\n\017uTodayRet" +
-      "urnCnt\030\014 \001(\003\022\021\n\tuCtrToday\030\r \001(\001\022\021\n\tuStrT" +
-      "oday\030\016 \001(\001\022\021\n\tuRovToday\030\017 \001(\001\022\021\n\tuRosTod" +
-      "ay\030\020 \001(\001\022\023\n\013u1dayExpCnt\030\021 \001(\003\022\025\n\ru1dayCl" +
-      "ickCnt\030\022 \001(\003\022\025\n\ru1dayShareCnt\030\023 \001(\003\022\026\n\016u" +
-      "1dayReturnCnt\030\024 \001(\003\022\020\n\010uCtr1day\030\025 \001(\001\022\020\n" +
-      "\010uStr1day\030\026 \001(\001\022\020\n\010uRov1day\030\027 \001(\001\022\020\n\010uRo" +
-      "s1day\030\030 \001(\001\022\023\n\013u3dayExpCnt\030\031 \001(\003\022\025\n\ru3da" +
-      "yClickCnt\030\032 \001(\003\022\025\n\ru3dayShareCnt\030\033 \001(\003\022\026" +
-      "\n\016u3dayReturnCnt\030\034 \001(\003\022\020\n\010uCtr3day\030\035 \001(\001" +
-      "\022\020\n\010uStr3day\030\036 \001(\001\022\020\n\010uRov3day\030\037 \001(\001\022\020\n\010" +
-      "uRos3day\030  \001(\001\022\013\n\003mid\030! \001(\t\022\030\n\020machinein" +
-      "foBrand\030\" \001(\t\022\030\n\020machineinfoModel\030# \001(\t\022" +
-      "\031\n\021machineinfoSystem\030$ \001(\t\022\033\n\023machineinf" +
-      "oPlatform\030% \001(\t\022\016\n\006gender\030& \001(\t\022\017\n\007count" +
-      "ry\030\' \001(\t\022\020\n\010province\030( \001(\t\022\014\n\004city\030) \001(\t" +
-      "\".\n\032GetVideoFeatureInfoRequest\022\020\n\010videoI" +
-      "ds\030\001 \003(\003\"\300\007\n\033GetVideoFeatureInfoResponse" +
-      "\022\017\n\007videoId\030\001 \001(\003\022\026\n\016playCountTotal\030\002 \001(" +
-      "\003\022\021\n\ttotalTime\030\003 \001(\005\022\021\n\tgmtCreate\030\004 \001(\t\022" +
-      "\013\n\003uid\030\005 \001(\003\022\024\n\014i15minExpCnt\030\006 \001(\003\022\026\n\016i1" +
-      "5minClickCnt\030\007 \001(\003\022\026\n\016i15minShareCnt\030\010 \001" +
-      "(\003\022\027\n\017i15minReturnCnt\030\t \001(\003\022\021\n\tiCtr15min" +
-      "\030\n \001(\001\022\021\n\tiStr15min\030\013 \001(\001\022\021\n\tiRov15min\030\014" +
-      " \001(\001\022\021\n\tiRos15min\030\r \001(\001\022\024\n\014i1hourExpCnt\030" +
-      "\016 \001(\003\022\026\n\016i1hourClickCnt\030\017 \001(\003\022\026\n\016i1hourS" +
-      "hareCnt\030\020 \001(\003\022\027\n\017i1hourReturnCnt\030\021 \001(\003\022\021" +
-      "\n\tiCtr1hour\030\022 \001(\001\022\021\n\tiStr1hour\030\023 \001(\001\022\021\n\t" +
-      "iRov1hour\030\024 \001(\001\022\021\n\tiRos1hour\030\025 \001(\001\022\024\n\014iT" +
-      "odayExpCnt\030\026 \001(\003\022\026\n\016iTodayClickCnt\030\027 \001(\003" +
-      "\022\026\n\016iTodayShareCnt\030\030 \001(\003\022\027\n\017iTodayReturn" +
-      "Cnt\030\031 \001(\003\022\021\n\tiCtrToday\030\032 \001(\001\022\021\n\tiStrToda" +
-      "y\030\033 \001(\001\022\021\n\tiRovToday\030\034 \001(\001\022\021\n\tiRosToday\030" +
-      "\035 \001(\001\022\023\n\013i1dayExpCnt\030\036 \001(\003\022\025\n\ri1dayClick" +
-      "Cnt\030\037 \001(\003\022\025\n\ri1dayShareCnt\030  \001(\003\022\026\n\016i1da" +
-      "yReturnCnt\030! \001(\003\022\020\n\010iCtr1day\030\" \001(\001\022\020\n\010iS" +
-      "tr1day\030# \001(\001\022\020\n\010iRov1day\030$ \001(\001\022\020\n\010iRos1d" +
-      "ay\030% \001(\001\022\023\n\013i3dayExpCnt\030& \001(\003\022\025\n\ri3dayCl" +
-      "ickCnt\030\' \001(\003\022\025\n\ri3dayShareCnt\030( \001(\003\022\026\n\016i" +
-      "3dayReturnCnt\030) \001(\003\022\020\n\010iCtr3day\030* \001(\001\022\020\n" +
-      "\010iStr3day\030+ \001(\001\022\020\n\010iRov3day\030, \001(\001\022\020\n\010iRo" +
-      "s3day\030- \001(\001\"(\n\027GetAdItemFeatureRequest\022\r" +
-      "\n\005ad_id\030\001 \001(\t\"a\n\030GetAdItemFeatureRespons" +
-      "e\022\027\n\006result\030\001 \001(\0132\007.Result\022,\n\017ad_item_fe" +
-      "ature\030\002 \001(\0132\023.AdItemFeatureProto\"+\n\032GetA" +
-      "llAdItemFeatureRequest\022\r\n\005ad_id\030\001 \003(\t\"d\n" +
-      "\033GetAllAdItemFeatureResponse\022\027\n\006result\030\001" +
-      " \001(\0132\007.Result\022,\n\017ad_item_feature\030\002 \003(\0132\023" +
-      ".AdItemFeatureProto2\355\004\n\016FeatureService\022G" +
-      "\n\020GetUserAdFeature\022\030.GetUserAdFeatureReq" +
-      "uest\032\031.GetUserAdFeatureResponse\022G\n\020GetAd" +
-      "ItemFeature\022\030.GetAdItemFeatureRequest\032\031." +
-      "GetAdItemFeatureResponse\022P\n\023GetAllAdItem" +
-      "Feature\022\033.GetAllAdItemFeatureRequest\032\034.G" +
-      "etAllAdItemFeatureResponse\022A\n\016GetUserFea" +
-      "ture\022\026.GetUserFeatureRequest\032\027.GetUserFe" +
-      "atureResponse\022D\n\017GetVideoFeature\022\027.GetVi" +
-      "deoFeatureRequest\032\030.GetVideoFeatureRespo" +
-      "nse\022M\n\022GetAllVideoFeature\022\032.GetAllVideoF" +
-      "eatureRequest\032\033.GetAllVideoFeatureRespon" +
-      "se\022M\n\022GetUserFeatureInfo\022\032.GetUserFeatur" +
-      "eInfoRequest\032\033.GetUserFeatureInfoRespons" +
-      "e\022P\n\023GetVideoFeatureInfo\022\033.GetVideoFeatu" +
-      "reInfoRequest\032\034.GetVideoFeatureInfoRespo" +
-      "nseB8\n1com.tzld.piaoquan.recommend.featu" +
-      "re.model.featureP\001\210\001\001b\006proto3"
+      "serFeatureInfoRequest\022\014\n\004mids\030\001 \003(\t\"\246\007\n\022" +
+      "GetUserFeatureInfo\022\026\n\016u1hour_exp_cnt\030\001 \001" +
+      "(\003\022\030\n\020u1hour_click_cnt\030\002 \001(\003\022\030\n\020u1hour_s" +
+      "hare_cnt\030\003 \001(\003\022\031\n\021u1hour_return_cnt\030\004 \001(" +
+      "\003\022\022\n\nu_ctr1hour\030\005 \001(\001\022\022\n\nu_str1hour\030\006 \001(" +
+      "\001\022\022\n\nu_rov1hour\030\007 \001(\001\022\022\n\nu_ros1hour\030\010 \001(" +
+      "\001\022\027\n\017u_today_exp_cnt\030\t \001(\003\022\031\n\021u_today_cl" +
+      "ick_cnt\030\n \001(\003\022\031\n\021u_today_share_cnt\030\013 \001(\003" +
+      "\022\032\n\022u_today_return_cnt\030\014 \001(\003\022\023\n\013u_ctr_to" +
+      "day\030\r \001(\001\022\023\n\013u_str_today\030\016 \001(\001\022\023\n\013u_rov_" +
+      "today\030\017 \001(\001\022\023\n\013u_ros_today\030\020 \001(\001\022\025\n\ru1da" +
+      "y_exp_cnt\030\021 \001(\003\022\027\n\017u1day_click_cnt\030\022 \001(\003" +
+      "\022\027\n\017u1day_share_cnt\030\023 \001(\003\022\030\n\020u1day_retur" +
+      "n_cnt\030\024 \001(\003\022\021\n\tu_ctr1day\030\025 \001(\001\022\021\n\tu_str1" +
+      "day\030\026 \001(\001\022\021\n\tu_rov1day\030\027 \001(\001\022\021\n\tu_ros1da" +
+      "y\030\030 \001(\001\022\025\n\ru3day_exp_cnt\030\031 \001(\003\022\027\n\017u3day_" +
+      "click_cnt\030\032 \001(\003\022\027\n\017u3day_share_cnt\030\033 \001(\003" +
+      "\022\030\n\020u3day_return_cnt\030\034 \001(\003\022\021\n\tu_ctr3day\030" +
+      "\035 \001(\001\022\021\n\tu_str3day\030\036 \001(\001\022\021\n\tu_rov3day\030\037 " +
+      "\001(\001\022\021\n\tu_ros3day\030  \001(\001\022\013\n\003mid\030! \001(\t\022\031\n\021m" +
+      "achineinfo_brand\030\" \001(\t\022\031\n\021machineinfo_mo" +
+      "del\030# \001(\t\022\032\n\022machineinfo_system\030$ \001(\t\022\034\n" +
+      "\024machineinfo_platform\030% \001(\t\022\016\n\006gender\030& " +
+      "\001(\t\022\017\n\007country\030\' \001(\t\022\020\n\010province\030( \001(\t\022\014" +
+      "\n\004city\030) \001(\t\"e\n\032GetUserFeatureInfoRespon" +
+      "se\022\027\n\006result\030\001 \001(\0132\007.Result\022.\n\021user_feat" +
+      "ure_info\030\002 \003(\0132\023.GetUserFeatureInfo\".\n\032G" +
+      "etVideoFeatureInfoRequest\022\020\n\010videoIds\030\001 " +
+      "\003(\003\"\201\010\n\023GetVideoFeatureInfo\022\020\n\010video_id\030" +
+      "\001 \001(\003\022\030\n\020play_count_total\030\002 \001(\003\022\022\n\ntotal" +
+      "_time\030\003 \001(\005\022\022\n\ngmt_create\030\004 \001(\t\022\013\n\003uid\030\005" +
+      " \001(\003\022\026\n\016i15min_exp_cnt\030\006 \001(\003\022\030\n\020i15min_c" +
+      "lick_cnt\030\007 \001(\003\022\030\n\020i15min_share_cnt\030\010 \001(\003" +
+      "\022\031\n\021i15min_return_cnt\030\t \001(\003\022\022\n\ni_ctr15mi" +
+      "n\030\n \001(\001\022\022\n\ni_str15min\030\013 \001(\001\022\022\n\ni_rov15mi" +
+      "n\030\014 \001(\001\022\022\n\ni_ros15min\030\r \001(\001\022\026\n\016i1hour_ex" +
+      "p_cnt\030\016 \001(\003\022\030\n\020i1hour_click_cnt\030\017 \001(\003\022\030\n" +
+      "\020i1hour_share_cnt\030\020 \001(\003\022\031\n\021i1hour_return" +
+      "_cnt\030\021 \001(\003\022\022\n\ni_ctr1hour\030\022 \001(\001\022\022\n\ni_str1" +
+      "hour\030\023 \001(\001\022\022\n\ni_rov1hour\030\024 \001(\001\022\022\n\ni_ros1" +
+      "hour\030\025 \001(\001\022\027\n\017i_today_exp_cnt\030\026 \001(\003\022\031\n\021i" +
+      "_today_click_cnt\030\027 \001(\003\022\031\n\021i_today_share_" +
+      "cnt\030\030 \001(\003\022\032\n\022i_today_return_cnt\030\031 \001(\003\022\023\n" +
+      "\013i_ctr_today\030\032 \001(\001\022\023\n\013i_str_today\030\033 \001(\001\022" +
+      "\023\n\013i_rov_today\030\034 \001(\001\022\023\n\013i_ros_today\030\035 \001(" +
+      "\001\022\025\n\ri1day_exp_cnt\030\036 \001(\003\022\027\n\017i1day_click_" +
+      "cnt\030\037 \001(\003\022\027\n\017i1day_share_cnt\030  \001(\003\022\030\n\020i1" +
+      "day_return_cnt\030! \001(\003\022\021\n\ti_ctr1day\030\" \001(\001\022" +
+      "\021\n\ti_str1day\030# \001(\001\022\021\n\ti_rov1day\030$ \001(\001\022\021\n" +
+      "\ti_ros1day\030% \001(\001\022\025\n\ri3day_exp_cnt\030& \001(\003\022" +
+      "\027\n\017i3day_click_cnt\030\' \001(\003\022\027\n\017i3day_share_" +
+      "cnt\030( \001(\003\022\030\n\020i3day_return_cnt\030) \001(\003\022\021\n\ti" +
+      "_ctr3day\030* \001(\001\022\021\n\ti_str3day\030+ \001(\001\022\021\n\ti_r" +
+      "ov3day\030, \001(\001\022\021\n\ti_ros3day\030- \001(\001\"h\n\033GetVi" +
+      "deoFeatureInfoResponse\022\027\n\006result\030\001 \001(\0132\007" +
+      ".Result\0220\n\022video_feature_info\030\002 \003(\0132\024.Ge" +
+      "tVideoFeatureInfo\"(\n\027GetAdItemFeatureReq" +
+      "uest\022\r\n\005ad_id\030\001 \001(\t\"a\n\030GetAdItemFeatureR" +
+      "esponse\022\027\n\006result\030\001 \001(\0132\007.Result\022,\n\017ad_i" +
+      "tem_feature\030\002 \001(\0132\023.AdItemFeatureProto\"+" +
+      "\n\032GetAllAdItemFeatureRequest\022\r\n\005ad_id\030\001 " +
+      "\003(\t\"d\n\033GetAllAdItemFeatureResponse\022\027\n\006re" +
+      "sult\030\001 \001(\0132\007.Result\022,\n\017ad_item_feature\030\002" +
+      " \003(\0132\023.AdItemFeatureProto2\355\004\n\016FeatureSer" +
+      "vice\022G\n\020GetUserAdFeature\022\030.GetUserAdFeat" +
+      "ureRequest\032\031.GetUserAdFeatureResponse\022G\n" +
+      "\020GetAdItemFeature\022\030.GetAdItemFeatureRequ" +
+      "est\032\031.GetAdItemFeatureResponse\022P\n\023GetAll" +
+      "AdItemFeature\022\033.GetAllAdItemFeatureReque" +
+      "st\032\034.GetAllAdItemFeatureResponse\022A\n\016GetU" +
+      "serFeature\022\026.GetUserFeatureRequest\032\027.Get" +
+      "UserFeatureResponse\022D\n\017GetVideoFeature\022\027" +
+      ".GetVideoFeatureRequest\032\030.GetVideoFeatur" +
+      "eResponse\022M\n\022GetAllVideoFeature\022\032.GetAll" +
+      "VideoFeatureRequest\032\033.GetAllVideoFeature" +
+      "Response\022M\n\022GetUserFeatureInfo\022\032.GetUser" +
+      "FeatureInfoRequest\032\033.GetUserFeatureInfoR" +
+      "esponse\022P\n\023GetVideoFeatureInfo\022\033.GetVide" +
+      "oFeatureInfoRequest\032\034.GetVideoFeatureInf" +
+      "oResponseB8\n1com.tzld.piaoquan.recommend" +
+      ".feature.model.featureP\001\210\001\001b\006proto3"
     };
     descriptor = com.google.protobuf.Descriptors.FileDescriptor
       .internalBuildGeneratedFileFrom(descriptorData,
@@ -372,44 +390,56 @@ public final class Feature {
       com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
         internal_static_GetUserFeatureInfoRequest_descriptor,
         new java.lang.String[] { "Mids", });
-    internal_static_GetUserFeatureInfoResponse_descriptor =
+    internal_static_GetUserFeatureInfo_descriptor =
       getDescriptor().getMessageTypes().get(15);
+    internal_static_GetUserFeatureInfo_fieldAccessorTable = new
+      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
+        internal_static_GetUserFeatureInfo_descriptor,
+        new java.lang.String[] { "U1HourExpCnt", "U1HourClickCnt", "U1HourShareCnt", "U1HourReturnCnt", "UCtr1Hour", "UStr1Hour", "URov1Hour", "URos1Hour", "UTodayExpCnt", "UTodayClickCnt", "UTodayShareCnt", "UTodayReturnCnt", "UCtrToday", "UStrToday", "URovToday", "URosToday", "U1DayExpCnt", "U1DayClickCnt", "U1DayShareCnt", "U1DayReturnCnt", "UCtr1Day", "UStr1Day", "URov1Day", "URos1Day", "U3DayExpCnt", "U3DayClickCnt", "U3DayShareCnt", "U3DayReturnCnt", "UCtr3Day", "UStr3Day", "URov3Day", "URos3Day", "Mid", "MachineinfoBrand", "MachineinfoModel", "MachineinfoSystem", "MachineinfoPlatform", "Gender", "Country", "Province", "City", });
+    internal_static_GetUserFeatureInfoResponse_descriptor =
+      getDescriptor().getMessageTypes().get(16);
     internal_static_GetUserFeatureInfoResponse_fieldAccessorTable = new
       com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
         internal_static_GetUserFeatureInfoResponse_descriptor,
-        new java.lang.String[] { "U1HourExpCnt", "U1HourClickCnt", "U1HourShareCnt", "U1HourReturnCnt", "UCtr1Hour", "UStr1Hour", "URov1Hour", "URos1Hour", "UTodayExpCnt", "UTodayClickCnt", "UTodayShareCnt", "UTodayReturnCnt", "UCtrToday", "UStrToday", "URovToday", "URosToday", "U1DayExpCnt", "U1DayClickCnt", "U1DayShareCnt", "U1DayReturnCnt", "UCtr1Day", "UStr1Day", "URov1Day", "URos1Day", "U3DayExpCnt", "U3DayClickCnt", "U3DayShareCnt", "U3DayReturnCnt", "UCtr3Day", "UStr3Day", "URov3Day", "URos3Day", "Mid", "MachineinfoBrand", "MachineinfoModel", "MachineinfoSystem", "MachineinfoPlatform", "Gender", "Country", "Province", "City", });
+        new java.lang.String[] { "Result", "UserFeatureInfo", });
     internal_static_GetVideoFeatureInfoRequest_descriptor =
-      getDescriptor().getMessageTypes().get(16);
+      getDescriptor().getMessageTypes().get(17);
     internal_static_GetVideoFeatureInfoRequest_fieldAccessorTable = new
       com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
         internal_static_GetVideoFeatureInfoRequest_descriptor,
         new java.lang.String[] { "VideoIds", });
+    internal_static_GetVideoFeatureInfo_descriptor =
+      getDescriptor().getMessageTypes().get(18);
+    internal_static_GetVideoFeatureInfo_fieldAccessorTable = new
+      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
+        internal_static_GetVideoFeatureInfo_descriptor,
+        new java.lang.String[] { "VideoId", "PlayCountTotal", "TotalTime", "GmtCreate", "Uid", "I15MinExpCnt", "I15MinClickCnt", "I15MinShareCnt", "I15MinReturnCnt", "ICtr15Min", "IStr15Min", "IRov15Min", "IRos15Min", "I1HourExpCnt", "I1HourClickCnt", "I1HourShareCnt", "I1HourReturnCnt", "ICtr1Hour", "IStr1Hour", "IRov1Hour", "IRos1Hour", "ITodayExpCnt", "ITodayClickCnt", "ITodayShareCnt", "ITodayReturnCnt", "ICtrToday", "IStrToday", "IRovToday", "IRosToday", "I1DayExpCnt", "I1DayClickCnt", "I1DayShareCnt", "I1DayReturnCnt", "ICtr1Day", "IStr1Day", "IRov1Day", "IRos1Day", "I3DayExpCnt", "I3DayClickCnt", "I3DayShareCnt", "I3DayReturnCnt", "ICtr3Day", "IStr3Day", "IRov3Day", "IRos3Day", });
     internal_static_GetVideoFeatureInfoResponse_descriptor =
-      getDescriptor().getMessageTypes().get(17);
+      getDescriptor().getMessageTypes().get(19);
     internal_static_GetVideoFeatureInfoResponse_fieldAccessorTable = new
       com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
         internal_static_GetVideoFeatureInfoResponse_descriptor,
-        new java.lang.String[] { "VideoId", "PlayCountTotal", "TotalTime", "GmtCreate", "Uid", "I15MinExpCnt", "I15MinClickCnt", "I15MinShareCnt", "I15MinReturnCnt", "ICtr15Min", "IStr15Min", "IRov15Min", "IRos15Min", "I1HourExpCnt", "I1HourClickCnt", "I1HourShareCnt", "I1HourReturnCnt", "ICtr1Hour", "IStr1Hour", "IRov1Hour", "IRos1Hour", "ITodayExpCnt", "ITodayClickCnt", "ITodayShareCnt", "ITodayReturnCnt", "ICtrToday", "IStrToday", "IRovToday", "IRosToday", "I1DayExpCnt", "I1DayClickCnt", "I1DayShareCnt", "I1DayReturnCnt", "ICtr1Day", "IStr1Day", "IRov1Day", "IRos1Day", "I3DayExpCnt", "I3DayClickCnt", "I3DayShareCnt", "I3DayReturnCnt", "ICtr3Day", "IStr3Day", "IRov3Day", "IRos3Day", });
+        new java.lang.String[] { "Result", "VideoFeatureInfo", });
     internal_static_GetAdItemFeatureRequest_descriptor =
-      getDescriptor().getMessageTypes().get(18);
+      getDescriptor().getMessageTypes().get(20);
     internal_static_GetAdItemFeatureRequest_fieldAccessorTable = new
       com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
         internal_static_GetAdItemFeatureRequest_descriptor,
         new java.lang.String[] { "AdId", });
     internal_static_GetAdItemFeatureResponse_descriptor =
-      getDescriptor().getMessageTypes().get(19);
+      getDescriptor().getMessageTypes().get(21);
     internal_static_GetAdItemFeatureResponse_fieldAccessorTable = new
       com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
         internal_static_GetAdItemFeatureResponse_descriptor,
         new java.lang.String[] { "Result", "AdItemFeature", });
     internal_static_GetAllAdItemFeatureRequest_descriptor =
-      getDescriptor().getMessageTypes().get(20);
+      getDescriptor().getMessageTypes().get(22);
     internal_static_GetAllAdItemFeatureRequest_fieldAccessorTable = new
       com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
         internal_static_GetAllAdItemFeatureRequest_descriptor,
         new java.lang.String[] { "AdId", });
     internal_static_GetAllAdItemFeatureResponse_descriptor =
-      getDescriptor().getMessageTypes().get(21);
+      getDescriptor().getMessageTypes().get(23);
     internal_static_GetAllAdItemFeatureResponse_fieldAccessorTable = new
       com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
         internal_static_GetAllAdItemFeatureResponse_descriptor,

+ 3821 - 0
recommend-feature-client/src/main/java/com/tzld/piaoquan/recommend/feature/model/feature/GetUserFeatureInfo.java

@@ -0,0 +1,3821 @@
+// Generated by the protocol buffer compiler.  DO NOT EDIT!
+// source: com/tzld/piaoquan/recommend/feature/feature.proto
+
+package com.tzld.piaoquan.recommend.feature.model.feature;
+
+/**
+ * Protobuf type {@code GetUserFeatureInfo}
+ */
+public final class GetUserFeatureInfo extends
+    com.google.protobuf.GeneratedMessageV3 implements
+    // @@protoc_insertion_point(message_implements:GetUserFeatureInfo)
+    GetUserFeatureInfoOrBuilder {
+private static final long serialVersionUID = 0L;
+  // Use GetUserFeatureInfo.newBuilder() to construct.
+  private GetUserFeatureInfo(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
+    super(builder);
+  }
+  private GetUserFeatureInfo() {
+    mid_ = "";
+    machineinfoBrand_ = "";
+    machineinfoModel_ = "";
+    machineinfoSystem_ = "";
+    machineinfoPlatform_ = "";
+    gender_ = "";
+    country_ = "";
+    province_ = "";
+    city_ = "";
+  }
+
+  @java.lang.Override
+  @SuppressWarnings({"unused"})
+  protected java.lang.Object newInstance(
+      UnusedPrivateParameter unused) {
+    return new GetUserFeatureInfo();
+  }
+
+  @java.lang.Override
+  public final com.google.protobuf.UnknownFieldSet
+  getUnknownFields() {
+    return this.unknownFields;
+  }
+  private GetUserFeatureInfo(
+      com.google.protobuf.CodedInputStream input,
+      com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+      throws com.google.protobuf.InvalidProtocolBufferException {
+    this();
+    if (extensionRegistry == null) {
+      throw new java.lang.NullPointerException();
+    }
+    com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+        com.google.protobuf.UnknownFieldSet.newBuilder();
+    try {
+      boolean done = false;
+      while (!done) {
+        int tag = input.readTag();
+        switch (tag) {
+          case 0:
+            done = true;
+            break;
+          case 8: {
+
+            u1HourExpCnt_ = input.readInt64();
+            break;
+          }
+          case 16: {
+
+            u1HourClickCnt_ = input.readInt64();
+            break;
+          }
+          case 24: {
+
+            u1HourShareCnt_ = input.readInt64();
+            break;
+          }
+          case 32: {
+
+            u1HourReturnCnt_ = input.readInt64();
+            break;
+          }
+          case 41: {
+
+            uCtr1Hour_ = input.readDouble();
+            break;
+          }
+          case 49: {
+
+            uStr1Hour_ = input.readDouble();
+            break;
+          }
+          case 57: {
+
+            uRov1Hour_ = input.readDouble();
+            break;
+          }
+          case 65: {
+
+            uRos1Hour_ = input.readDouble();
+            break;
+          }
+          case 72: {
+
+            uTodayExpCnt_ = input.readInt64();
+            break;
+          }
+          case 80: {
+
+            uTodayClickCnt_ = input.readInt64();
+            break;
+          }
+          case 88: {
+
+            uTodayShareCnt_ = input.readInt64();
+            break;
+          }
+          case 96: {
+
+            uTodayReturnCnt_ = input.readInt64();
+            break;
+          }
+          case 105: {
+
+            uCtrToday_ = input.readDouble();
+            break;
+          }
+          case 113: {
+
+            uStrToday_ = input.readDouble();
+            break;
+          }
+          case 121: {
+
+            uRovToday_ = input.readDouble();
+            break;
+          }
+          case 129: {
+
+            uRosToday_ = input.readDouble();
+            break;
+          }
+          case 136: {
+
+            u1DayExpCnt_ = input.readInt64();
+            break;
+          }
+          case 144: {
+
+            u1DayClickCnt_ = input.readInt64();
+            break;
+          }
+          case 152: {
+
+            u1DayShareCnt_ = input.readInt64();
+            break;
+          }
+          case 160: {
+
+            u1DayReturnCnt_ = input.readInt64();
+            break;
+          }
+          case 169: {
+
+            uCtr1Day_ = input.readDouble();
+            break;
+          }
+          case 177: {
+
+            uStr1Day_ = input.readDouble();
+            break;
+          }
+          case 185: {
+
+            uRov1Day_ = input.readDouble();
+            break;
+          }
+          case 193: {
+
+            uRos1Day_ = input.readDouble();
+            break;
+          }
+          case 200: {
+
+            u3DayExpCnt_ = input.readInt64();
+            break;
+          }
+          case 208: {
+
+            u3DayClickCnt_ = input.readInt64();
+            break;
+          }
+          case 216: {
+
+            u3DayShareCnt_ = input.readInt64();
+            break;
+          }
+          case 224: {
+
+            u3DayReturnCnt_ = input.readInt64();
+            break;
+          }
+          case 233: {
+
+            uCtr3Day_ = input.readDouble();
+            break;
+          }
+          case 241: {
+
+            uStr3Day_ = input.readDouble();
+            break;
+          }
+          case 249: {
+
+            uRov3Day_ = input.readDouble();
+            break;
+          }
+          case 257: {
+
+            uRos3Day_ = input.readDouble();
+            break;
+          }
+          case 266: {
+            java.lang.String s = input.readStringRequireUtf8();
+
+            mid_ = s;
+            break;
+          }
+          case 274: {
+            java.lang.String s = input.readStringRequireUtf8();
+
+            machineinfoBrand_ = s;
+            break;
+          }
+          case 282: {
+            java.lang.String s = input.readStringRequireUtf8();
+
+            machineinfoModel_ = s;
+            break;
+          }
+          case 290: {
+            java.lang.String s = input.readStringRequireUtf8();
+
+            machineinfoSystem_ = s;
+            break;
+          }
+          case 298: {
+            java.lang.String s = input.readStringRequireUtf8();
+
+            machineinfoPlatform_ = s;
+            break;
+          }
+          case 306: {
+            java.lang.String s = input.readStringRequireUtf8();
+
+            gender_ = s;
+            break;
+          }
+          case 314: {
+            java.lang.String s = input.readStringRequireUtf8();
+
+            country_ = s;
+            break;
+          }
+          case 322: {
+            java.lang.String s = input.readStringRequireUtf8();
+
+            province_ = s;
+            break;
+          }
+          case 330: {
+            java.lang.String s = input.readStringRequireUtf8();
+
+            city_ = s;
+            break;
+          }
+          default: {
+            if (!parseUnknownField(
+                input, unknownFields, extensionRegistry, tag)) {
+              done = true;
+            }
+            break;
+          }
+        }
+      }
+    } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+      throw e.setUnfinishedMessage(this);
+    } catch (java.io.IOException e) {
+      throw new com.google.protobuf.InvalidProtocolBufferException(
+          e).setUnfinishedMessage(this);
+    } finally {
+      this.unknownFields = unknownFields.build();
+      makeExtensionsImmutable();
+    }
+  }
+  public static final com.google.protobuf.Descriptors.Descriptor
+      getDescriptor() {
+    return com.tzld.piaoquan.recommend.feature.model.feature.Feature.internal_static_GetUserFeatureInfo_descriptor;
+  }
+
+  @java.lang.Override
+  protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
+      internalGetFieldAccessorTable() {
+    return com.tzld.piaoquan.recommend.feature.model.feature.Feature.internal_static_GetUserFeatureInfo_fieldAccessorTable
+        .ensureFieldAccessorsInitialized(
+            com.tzld.piaoquan.recommend.feature.model.feature.GetUserFeatureInfo.class, com.tzld.piaoquan.recommend.feature.model.feature.GetUserFeatureInfo.Builder.class);
+  }
+
+  public static final int U1HOUR_EXP_CNT_FIELD_NUMBER = 1;
+  private long u1HourExpCnt_;
+  /**
+   * <pre>
+   *过去一小时
+   * </pre>
+   *
+   * <code>int64 u1hour_exp_cnt = 1;</code>
+   * @return The u1hourExpCnt.
+   */
+  @java.lang.Override
+  public long getU1HourExpCnt() {
+    return u1HourExpCnt_;
+  }
+
+  public static final int U1HOUR_CLICK_CNT_FIELD_NUMBER = 2;
+  private long u1HourClickCnt_;
+  /**
+   * <code>int64 u1hour_click_cnt = 2;</code>
+   * @return The u1hourClickCnt.
+   */
+  @java.lang.Override
+  public long getU1HourClickCnt() {
+    return u1HourClickCnt_;
+  }
+
+  public static final int U1HOUR_SHARE_CNT_FIELD_NUMBER = 3;
+  private long u1HourShareCnt_;
+  /**
+   * <code>int64 u1hour_share_cnt = 3;</code>
+   * @return The u1hourShareCnt.
+   */
+  @java.lang.Override
+  public long getU1HourShareCnt() {
+    return u1HourShareCnt_;
+  }
+
+  public static final int U1HOUR_RETURN_CNT_FIELD_NUMBER = 4;
+  private long u1HourReturnCnt_;
+  /**
+   * <code>int64 u1hour_return_cnt = 4;</code>
+   * @return The u1hourReturnCnt.
+   */
+  @java.lang.Override
+  public long getU1HourReturnCnt() {
+    return u1HourReturnCnt_;
+  }
+
+  public static final int U_CTR1HOUR_FIELD_NUMBER = 5;
+  private double uCtr1Hour_;
+  /**
+   * <code>double u_ctr1hour = 5;</code>
+   * @return The uCtr1hour.
+   */
+  @java.lang.Override
+  public double getUCtr1Hour() {
+    return uCtr1Hour_;
+  }
+
+  public static final int U_STR1HOUR_FIELD_NUMBER = 6;
+  private double uStr1Hour_;
+  /**
+   * <code>double u_str1hour = 6;</code>
+   * @return The uStr1hour.
+   */
+  @java.lang.Override
+  public double getUStr1Hour() {
+    return uStr1Hour_;
+  }
+
+  public static final int U_ROV1HOUR_FIELD_NUMBER = 7;
+  private double uRov1Hour_;
+  /**
+   * <code>double u_rov1hour = 7;</code>
+   * @return The uRov1hour.
+   */
+  @java.lang.Override
+  public double getURov1Hour() {
+    return uRov1Hour_;
+  }
+
+  public static final int U_ROS1HOUR_FIELD_NUMBER = 8;
+  private double uRos1Hour_;
+  /**
+   * <code>double u_ros1hour = 8;</code>
+   * @return The uRos1hour.
+   */
+  @java.lang.Override
+  public double getURos1Hour() {
+    return uRos1Hour_;
+  }
+
+  public static final int U_TODAY_EXP_CNT_FIELD_NUMBER = 9;
+  private long uTodayExpCnt_;
+  /**
+   * <pre>
+   *今天
+   * </pre>
+   *
+   * <code>int64 u_today_exp_cnt = 9;</code>
+   * @return The uTodayExpCnt.
+   */
+  @java.lang.Override
+  public long getUTodayExpCnt() {
+    return uTodayExpCnt_;
+  }
+
+  public static final int U_TODAY_CLICK_CNT_FIELD_NUMBER = 10;
+  private long uTodayClickCnt_;
+  /**
+   * <code>int64 u_today_click_cnt = 10;</code>
+   * @return The uTodayClickCnt.
+   */
+  @java.lang.Override
+  public long getUTodayClickCnt() {
+    return uTodayClickCnt_;
+  }
+
+  public static final int U_TODAY_SHARE_CNT_FIELD_NUMBER = 11;
+  private long uTodayShareCnt_;
+  /**
+   * <code>int64 u_today_share_cnt = 11;</code>
+   * @return The uTodayShareCnt.
+   */
+  @java.lang.Override
+  public long getUTodayShareCnt() {
+    return uTodayShareCnt_;
+  }
+
+  public static final int U_TODAY_RETURN_CNT_FIELD_NUMBER = 12;
+  private long uTodayReturnCnt_;
+  /**
+   * <code>int64 u_today_return_cnt = 12;</code>
+   * @return The uTodayReturnCnt.
+   */
+  @java.lang.Override
+  public long getUTodayReturnCnt() {
+    return uTodayReturnCnt_;
+  }
+
+  public static final int U_CTR_TODAY_FIELD_NUMBER = 13;
+  private double uCtrToday_;
+  /**
+   * <code>double u_ctr_today = 13;</code>
+   * @return The uCtrToday.
+   */
+  @java.lang.Override
+  public double getUCtrToday() {
+    return uCtrToday_;
+  }
+
+  public static final int U_STR_TODAY_FIELD_NUMBER = 14;
+  private double uStrToday_;
+  /**
+   * <code>double u_str_today = 14;</code>
+   * @return The uStrToday.
+   */
+  @java.lang.Override
+  public double getUStrToday() {
+    return uStrToday_;
+  }
+
+  public static final int U_ROV_TODAY_FIELD_NUMBER = 15;
+  private double uRovToday_;
+  /**
+   * <code>double u_rov_today = 15;</code>
+   * @return The uRovToday.
+   */
+  @java.lang.Override
+  public double getURovToday() {
+    return uRovToday_;
+  }
+
+  public static final int U_ROS_TODAY_FIELD_NUMBER = 16;
+  private double uRosToday_;
+  /**
+   * <code>double u_ros_today = 16;</code>
+   * @return The uRosToday.
+   */
+  @java.lang.Override
+  public double getURosToday() {
+    return uRosToday_;
+  }
+
+  public static final int U1DAY_EXP_CNT_FIELD_NUMBER = 17;
+  private long u1DayExpCnt_;
+  /**
+   * <pre>
+   *过去一天
+   * </pre>
+   *
+   * <code>int64 u1day_exp_cnt = 17;</code>
+   * @return The u1dayExpCnt.
+   */
+  @java.lang.Override
+  public long getU1DayExpCnt() {
+    return u1DayExpCnt_;
+  }
+
+  public static final int U1DAY_CLICK_CNT_FIELD_NUMBER = 18;
+  private long u1DayClickCnt_;
+  /**
+   * <code>int64 u1day_click_cnt = 18;</code>
+   * @return The u1dayClickCnt.
+   */
+  @java.lang.Override
+  public long getU1DayClickCnt() {
+    return u1DayClickCnt_;
+  }
+
+  public static final int U1DAY_SHARE_CNT_FIELD_NUMBER = 19;
+  private long u1DayShareCnt_;
+  /**
+   * <code>int64 u1day_share_cnt = 19;</code>
+   * @return The u1dayShareCnt.
+   */
+  @java.lang.Override
+  public long getU1DayShareCnt() {
+    return u1DayShareCnt_;
+  }
+
+  public static final int U1DAY_RETURN_CNT_FIELD_NUMBER = 20;
+  private long u1DayReturnCnt_;
+  /**
+   * <code>int64 u1day_return_cnt = 20;</code>
+   * @return The u1dayReturnCnt.
+   */
+  @java.lang.Override
+  public long getU1DayReturnCnt() {
+    return u1DayReturnCnt_;
+  }
+
+  public static final int U_CTR1DAY_FIELD_NUMBER = 21;
+  private double uCtr1Day_;
+  /**
+   * <code>double u_ctr1day = 21;</code>
+   * @return The uCtr1day.
+   */
+  @java.lang.Override
+  public double getUCtr1Day() {
+    return uCtr1Day_;
+  }
+
+  public static final int U_STR1DAY_FIELD_NUMBER = 22;
+  private double uStr1Day_;
+  /**
+   * <code>double u_str1day = 22;</code>
+   * @return The uStr1day.
+   */
+  @java.lang.Override
+  public double getUStr1Day() {
+    return uStr1Day_;
+  }
+
+  public static final int U_ROV1DAY_FIELD_NUMBER = 23;
+  private double uRov1Day_;
+  /**
+   * <code>double u_rov1day = 23;</code>
+   * @return The uRov1day.
+   */
+  @java.lang.Override
+  public double getURov1Day() {
+    return uRov1Day_;
+  }
+
+  public static final int U_ROS1DAY_FIELD_NUMBER = 24;
+  private double uRos1Day_;
+  /**
+   * <code>double u_ros1day = 24;</code>
+   * @return The uRos1day.
+   */
+  @java.lang.Override
+  public double getURos1Day() {
+    return uRos1Day_;
+  }
+
+  public static final int U3DAY_EXP_CNT_FIELD_NUMBER = 25;
+  private long u3DayExpCnt_;
+  /**
+   * <pre>
+   *过去三天
+   * </pre>
+   *
+   * <code>int64 u3day_exp_cnt = 25;</code>
+   * @return The u3dayExpCnt.
+   */
+  @java.lang.Override
+  public long getU3DayExpCnt() {
+    return u3DayExpCnt_;
+  }
+
+  public static final int U3DAY_CLICK_CNT_FIELD_NUMBER = 26;
+  private long u3DayClickCnt_;
+  /**
+   * <code>int64 u3day_click_cnt = 26;</code>
+   * @return The u3dayClickCnt.
+   */
+  @java.lang.Override
+  public long getU3DayClickCnt() {
+    return u3DayClickCnt_;
+  }
+
+  public static final int U3DAY_SHARE_CNT_FIELD_NUMBER = 27;
+  private long u3DayShareCnt_;
+  /**
+   * <code>int64 u3day_share_cnt = 27;</code>
+   * @return The u3dayShareCnt.
+   */
+  @java.lang.Override
+  public long getU3DayShareCnt() {
+    return u3DayShareCnt_;
+  }
+
+  public static final int U3DAY_RETURN_CNT_FIELD_NUMBER = 28;
+  private long u3DayReturnCnt_;
+  /**
+   * <code>int64 u3day_return_cnt = 28;</code>
+   * @return The u3dayReturnCnt.
+   */
+  @java.lang.Override
+  public long getU3DayReturnCnt() {
+    return u3DayReturnCnt_;
+  }
+
+  public static final int U_CTR3DAY_FIELD_NUMBER = 29;
+  private double uCtr3Day_;
+  /**
+   * <code>double u_ctr3day = 29;</code>
+   * @return The uCtr3day.
+   */
+  @java.lang.Override
+  public double getUCtr3Day() {
+    return uCtr3Day_;
+  }
+
+  public static final int U_STR3DAY_FIELD_NUMBER = 30;
+  private double uStr3Day_;
+  /**
+   * <code>double u_str3day = 30;</code>
+   * @return The uStr3day.
+   */
+  @java.lang.Override
+  public double getUStr3Day() {
+    return uStr3Day_;
+  }
+
+  public static final int U_ROV3DAY_FIELD_NUMBER = 31;
+  private double uRov3Day_;
+  /**
+   * <code>double u_rov3day = 31;</code>
+   * @return The uRov3day.
+   */
+  @java.lang.Override
+  public double getURov3Day() {
+    return uRov3Day_;
+  }
+
+  public static final int U_ROS3DAY_FIELD_NUMBER = 32;
+  private double uRos3Day_;
+  /**
+   * <code>double u_ros3day = 32;</code>
+   * @return The uRos3day.
+   */
+  @java.lang.Override
+  public double getURos3Day() {
+    return uRos3Day_;
+  }
+
+  public static final int MID_FIELD_NUMBER = 33;
+  private volatile java.lang.Object mid_;
+  /**
+   * <code>string mid = 33;</code>
+   * @return The mid.
+   */
+  @java.lang.Override
+  public java.lang.String getMid() {
+    java.lang.Object ref = mid_;
+    if (ref instanceof java.lang.String) {
+      return (java.lang.String) ref;
+    } else {
+      com.google.protobuf.ByteString bs = 
+          (com.google.protobuf.ByteString) ref;
+      java.lang.String s = bs.toStringUtf8();
+      mid_ = s;
+      return s;
+    }
+  }
+  /**
+   * <code>string mid = 33;</code>
+   * @return The bytes for mid.
+   */
+  @java.lang.Override
+  public com.google.protobuf.ByteString
+      getMidBytes() {
+    java.lang.Object ref = mid_;
+    if (ref instanceof java.lang.String) {
+      com.google.protobuf.ByteString b = 
+          com.google.protobuf.ByteString.copyFromUtf8(
+              (java.lang.String) ref);
+      mid_ = b;
+      return b;
+    } else {
+      return (com.google.protobuf.ByteString) ref;
+    }
+  }
+
+  public static final int MACHINEINFO_BRAND_FIELD_NUMBER = 34;
+  private volatile java.lang.Object machineinfoBrand_;
+  /**
+   * <code>string machineinfo_brand = 34;</code>
+   * @return The machineinfoBrand.
+   */
+  @java.lang.Override
+  public java.lang.String getMachineinfoBrand() {
+    java.lang.Object ref = machineinfoBrand_;
+    if (ref instanceof java.lang.String) {
+      return (java.lang.String) ref;
+    } else {
+      com.google.protobuf.ByteString bs = 
+          (com.google.protobuf.ByteString) ref;
+      java.lang.String s = bs.toStringUtf8();
+      machineinfoBrand_ = s;
+      return s;
+    }
+  }
+  /**
+   * <code>string machineinfo_brand = 34;</code>
+   * @return The bytes for machineinfoBrand.
+   */
+  @java.lang.Override
+  public com.google.protobuf.ByteString
+      getMachineinfoBrandBytes() {
+    java.lang.Object ref = machineinfoBrand_;
+    if (ref instanceof java.lang.String) {
+      com.google.protobuf.ByteString b = 
+          com.google.protobuf.ByteString.copyFromUtf8(
+              (java.lang.String) ref);
+      machineinfoBrand_ = b;
+      return b;
+    } else {
+      return (com.google.protobuf.ByteString) ref;
+    }
+  }
+
+  public static final int MACHINEINFO_MODEL_FIELD_NUMBER = 35;
+  private volatile java.lang.Object machineinfoModel_;
+  /**
+   * <code>string machineinfo_model = 35;</code>
+   * @return The machineinfoModel.
+   */
+  @java.lang.Override
+  public java.lang.String getMachineinfoModel() {
+    java.lang.Object ref = machineinfoModel_;
+    if (ref instanceof java.lang.String) {
+      return (java.lang.String) ref;
+    } else {
+      com.google.protobuf.ByteString bs = 
+          (com.google.protobuf.ByteString) ref;
+      java.lang.String s = bs.toStringUtf8();
+      machineinfoModel_ = s;
+      return s;
+    }
+  }
+  /**
+   * <code>string machineinfo_model = 35;</code>
+   * @return The bytes for machineinfoModel.
+   */
+  @java.lang.Override
+  public com.google.protobuf.ByteString
+      getMachineinfoModelBytes() {
+    java.lang.Object ref = machineinfoModel_;
+    if (ref instanceof java.lang.String) {
+      com.google.protobuf.ByteString b = 
+          com.google.protobuf.ByteString.copyFromUtf8(
+              (java.lang.String) ref);
+      machineinfoModel_ = b;
+      return b;
+    } else {
+      return (com.google.protobuf.ByteString) ref;
+    }
+  }
+
+  public static final int MACHINEINFO_SYSTEM_FIELD_NUMBER = 36;
+  private volatile java.lang.Object machineinfoSystem_;
+  /**
+   * <code>string machineinfo_system = 36;</code>
+   * @return The machineinfoSystem.
+   */
+  @java.lang.Override
+  public java.lang.String getMachineinfoSystem() {
+    java.lang.Object ref = machineinfoSystem_;
+    if (ref instanceof java.lang.String) {
+      return (java.lang.String) ref;
+    } else {
+      com.google.protobuf.ByteString bs = 
+          (com.google.protobuf.ByteString) ref;
+      java.lang.String s = bs.toStringUtf8();
+      machineinfoSystem_ = s;
+      return s;
+    }
+  }
+  /**
+   * <code>string machineinfo_system = 36;</code>
+   * @return The bytes for machineinfoSystem.
+   */
+  @java.lang.Override
+  public com.google.protobuf.ByteString
+      getMachineinfoSystemBytes() {
+    java.lang.Object ref = machineinfoSystem_;
+    if (ref instanceof java.lang.String) {
+      com.google.protobuf.ByteString b = 
+          com.google.protobuf.ByteString.copyFromUtf8(
+              (java.lang.String) ref);
+      machineinfoSystem_ = b;
+      return b;
+    } else {
+      return (com.google.protobuf.ByteString) ref;
+    }
+  }
+
+  public static final int MACHINEINFO_PLATFORM_FIELD_NUMBER = 37;
+  private volatile java.lang.Object machineinfoPlatform_;
+  /**
+   * <code>string machineinfo_platform = 37;</code>
+   * @return The machineinfoPlatform.
+   */
+  @java.lang.Override
+  public java.lang.String getMachineinfoPlatform() {
+    java.lang.Object ref = machineinfoPlatform_;
+    if (ref instanceof java.lang.String) {
+      return (java.lang.String) ref;
+    } else {
+      com.google.protobuf.ByteString bs = 
+          (com.google.protobuf.ByteString) ref;
+      java.lang.String s = bs.toStringUtf8();
+      machineinfoPlatform_ = s;
+      return s;
+    }
+  }
+  /**
+   * <code>string machineinfo_platform = 37;</code>
+   * @return The bytes for machineinfoPlatform.
+   */
+  @java.lang.Override
+  public com.google.protobuf.ByteString
+      getMachineinfoPlatformBytes() {
+    java.lang.Object ref = machineinfoPlatform_;
+    if (ref instanceof java.lang.String) {
+      com.google.protobuf.ByteString b = 
+          com.google.protobuf.ByteString.copyFromUtf8(
+              (java.lang.String) ref);
+      machineinfoPlatform_ = b;
+      return b;
+    } else {
+      return (com.google.protobuf.ByteString) ref;
+    }
+  }
+
+  public static final int GENDER_FIELD_NUMBER = 38;
+  private volatile java.lang.Object gender_;
+  /**
+   * <code>string gender = 38;</code>
+   * @return The gender.
+   */
+  @java.lang.Override
+  public java.lang.String getGender() {
+    java.lang.Object ref = gender_;
+    if (ref instanceof java.lang.String) {
+      return (java.lang.String) ref;
+    } else {
+      com.google.protobuf.ByteString bs = 
+          (com.google.protobuf.ByteString) ref;
+      java.lang.String s = bs.toStringUtf8();
+      gender_ = s;
+      return s;
+    }
+  }
+  /**
+   * <code>string gender = 38;</code>
+   * @return The bytes for gender.
+   */
+  @java.lang.Override
+  public com.google.protobuf.ByteString
+      getGenderBytes() {
+    java.lang.Object ref = gender_;
+    if (ref instanceof java.lang.String) {
+      com.google.protobuf.ByteString b = 
+          com.google.protobuf.ByteString.copyFromUtf8(
+              (java.lang.String) ref);
+      gender_ = b;
+      return b;
+    } else {
+      return (com.google.protobuf.ByteString) ref;
+    }
+  }
+
+  public static final int COUNTRY_FIELD_NUMBER = 39;
+  private volatile java.lang.Object country_;
+  /**
+   * <code>string country = 39;</code>
+   * @return The country.
+   */
+  @java.lang.Override
+  public java.lang.String getCountry() {
+    java.lang.Object ref = country_;
+    if (ref instanceof java.lang.String) {
+      return (java.lang.String) ref;
+    } else {
+      com.google.protobuf.ByteString bs = 
+          (com.google.protobuf.ByteString) ref;
+      java.lang.String s = bs.toStringUtf8();
+      country_ = s;
+      return s;
+    }
+  }
+  /**
+   * <code>string country = 39;</code>
+   * @return The bytes for country.
+   */
+  @java.lang.Override
+  public com.google.protobuf.ByteString
+      getCountryBytes() {
+    java.lang.Object ref = country_;
+    if (ref instanceof java.lang.String) {
+      com.google.protobuf.ByteString b = 
+          com.google.protobuf.ByteString.copyFromUtf8(
+              (java.lang.String) ref);
+      country_ = b;
+      return b;
+    } else {
+      return (com.google.protobuf.ByteString) ref;
+    }
+  }
+
+  public static final int PROVINCE_FIELD_NUMBER = 40;
+  private volatile java.lang.Object province_;
+  /**
+   * <code>string province = 40;</code>
+   * @return The province.
+   */
+  @java.lang.Override
+  public java.lang.String getProvince() {
+    java.lang.Object ref = province_;
+    if (ref instanceof java.lang.String) {
+      return (java.lang.String) ref;
+    } else {
+      com.google.protobuf.ByteString bs = 
+          (com.google.protobuf.ByteString) ref;
+      java.lang.String s = bs.toStringUtf8();
+      province_ = s;
+      return s;
+    }
+  }
+  /**
+   * <code>string province = 40;</code>
+   * @return The bytes for province.
+   */
+  @java.lang.Override
+  public com.google.protobuf.ByteString
+      getProvinceBytes() {
+    java.lang.Object ref = province_;
+    if (ref instanceof java.lang.String) {
+      com.google.protobuf.ByteString b = 
+          com.google.protobuf.ByteString.copyFromUtf8(
+              (java.lang.String) ref);
+      province_ = b;
+      return b;
+    } else {
+      return (com.google.protobuf.ByteString) ref;
+    }
+  }
+
+  public static final int CITY_FIELD_NUMBER = 41;
+  private volatile java.lang.Object city_;
+  /**
+   * <code>string city = 41;</code>
+   * @return The city.
+   */
+  @java.lang.Override
+  public java.lang.String getCity() {
+    java.lang.Object ref = city_;
+    if (ref instanceof java.lang.String) {
+      return (java.lang.String) ref;
+    } else {
+      com.google.protobuf.ByteString bs = 
+          (com.google.protobuf.ByteString) ref;
+      java.lang.String s = bs.toStringUtf8();
+      city_ = s;
+      return s;
+    }
+  }
+  /**
+   * <code>string city = 41;</code>
+   * @return The bytes for city.
+   */
+  @java.lang.Override
+  public com.google.protobuf.ByteString
+      getCityBytes() {
+    java.lang.Object ref = city_;
+    if (ref instanceof java.lang.String) {
+      com.google.protobuf.ByteString b = 
+          com.google.protobuf.ByteString.copyFromUtf8(
+              (java.lang.String) ref);
+      city_ = b;
+      return b;
+    } else {
+      return (com.google.protobuf.ByteString) ref;
+    }
+  }
+
+  private byte memoizedIsInitialized = -1;
+  @java.lang.Override
+  public final boolean isInitialized() {
+    byte isInitialized = memoizedIsInitialized;
+    if (isInitialized == 1) return true;
+    if (isInitialized == 0) return false;
+
+    memoizedIsInitialized = 1;
+    return true;
+  }
+
+  @java.lang.Override
+  public void writeTo(com.google.protobuf.CodedOutputStream output)
+                      throws java.io.IOException {
+    if (u1HourExpCnt_ != 0L) {
+      output.writeInt64(1, u1HourExpCnt_);
+    }
+    if (u1HourClickCnt_ != 0L) {
+      output.writeInt64(2, u1HourClickCnt_);
+    }
+    if (u1HourShareCnt_ != 0L) {
+      output.writeInt64(3, u1HourShareCnt_);
+    }
+    if (u1HourReturnCnt_ != 0L) {
+      output.writeInt64(4, u1HourReturnCnt_);
+    }
+    if (uCtr1Hour_ != 0D) {
+      output.writeDouble(5, uCtr1Hour_);
+    }
+    if (uStr1Hour_ != 0D) {
+      output.writeDouble(6, uStr1Hour_);
+    }
+    if (uRov1Hour_ != 0D) {
+      output.writeDouble(7, uRov1Hour_);
+    }
+    if (uRos1Hour_ != 0D) {
+      output.writeDouble(8, uRos1Hour_);
+    }
+    if (uTodayExpCnt_ != 0L) {
+      output.writeInt64(9, uTodayExpCnt_);
+    }
+    if (uTodayClickCnt_ != 0L) {
+      output.writeInt64(10, uTodayClickCnt_);
+    }
+    if (uTodayShareCnt_ != 0L) {
+      output.writeInt64(11, uTodayShareCnt_);
+    }
+    if (uTodayReturnCnt_ != 0L) {
+      output.writeInt64(12, uTodayReturnCnt_);
+    }
+    if (uCtrToday_ != 0D) {
+      output.writeDouble(13, uCtrToday_);
+    }
+    if (uStrToday_ != 0D) {
+      output.writeDouble(14, uStrToday_);
+    }
+    if (uRovToday_ != 0D) {
+      output.writeDouble(15, uRovToday_);
+    }
+    if (uRosToday_ != 0D) {
+      output.writeDouble(16, uRosToday_);
+    }
+    if (u1DayExpCnt_ != 0L) {
+      output.writeInt64(17, u1DayExpCnt_);
+    }
+    if (u1DayClickCnt_ != 0L) {
+      output.writeInt64(18, u1DayClickCnt_);
+    }
+    if (u1DayShareCnt_ != 0L) {
+      output.writeInt64(19, u1DayShareCnt_);
+    }
+    if (u1DayReturnCnt_ != 0L) {
+      output.writeInt64(20, u1DayReturnCnt_);
+    }
+    if (uCtr1Day_ != 0D) {
+      output.writeDouble(21, uCtr1Day_);
+    }
+    if (uStr1Day_ != 0D) {
+      output.writeDouble(22, uStr1Day_);
+    }
+    if (uRov1Day_ != 0D) {
+      output.writeDouble(23, uRov1Day_);
+    }
+    if (uRos1Day_ != 0D) {
+      output.writeDouble(24, uRos1Day_);
+    }
+    if (u3DayExpCnt_ != 0L) {
+      output.writeInt64(25, u3DayExpCnt_);
+    }
+    if (u3DayClickCnt_ != 0L) {
+      output.writeInt64(26, u3DayClickCnt_);
+    }
+    if (u3DayShareCnt_ != 0L) {
+      output.writeInt64(27, u3DayShareCnt_);
+    }
+    if (u3DayReturnCnt_ != 0L) {
+      output.writeInt64(28, u3DayReturnCnt_);
+    }
+    if (uCtr3Day_ != 0D) {
+      output.writeDouble(29, uCtr3Day_);
+    }
+    if (uStr3Day_ != 0D) {
+      output.writeDouble(30, uStr3Day_);
+    }
+    if (uRov3Day_ != 0D) {
+      output.writeDouble(31, uRov3Day_);
+    }
+    if (uRos3Day_ != 0D) {
+      output.writeDouble(32, uRos3Day_);
+    }
+    if (!getMidBytes().isEmpty()) {
+      com.google.protobuf.GeneratedMessageV3.writeString(output, 33, mid_);
+    }
+    if (!getMachineinfoBrandBytes().isEmpty()) {
+      com.google.protobuf.GeneratedMessageV3.writeString(output, 34, machineinfoBrand_);
+    }
+    if (!getMachineinfoModelBytes().isEmpty()) {
+      com.google.protobuf.GeneratedMessageV3.writeString(output, 35, machineinfoModel_);
+    }
+    if (!getMachineinfoSystemBytes().isEmpty()) {
+      com.google.protobuf.GeneratedMessageV3.writeString(output, 36, machineinfoSystem_);
+    }
+    if (!getMachineinfoPlatformBytes().isEmpty()) {
+      com.google.protobuf.GeneratedMessageV3.writeString(output, 37, machineinfoPlatform_);
+    }
+    if (!getGenderBytes().isEmpty()) {
+      com.google.protobuf.GeneratedMessageV3.writeString(output, 38, gender_);
+    }
+    if (!getCountryBytes().isEmpty()) {
+      com.google.protobuf.GeneratedMessageV3.writeString(output, 39, country_);
+    }
+    if (!getProvinceBytes().isEmpty()) {
+      com.google.protobuf.GeneratedMessageV3.writeString(output, 40, province_);
+    }
+    if (!getCityBytes().isEmpty()) {
+      com.google.protobuf.GeneratedMessageV3.writeString(output, 41, city_);
+    }
+    unknownFields.writeTo(output);
+  }
+
+  @java.lang.Override
+  public int getSerializedSize() {
+    int size = memoizedSize;
+    if (size != -1) return size;
+
+    size = 0;
+    if (u1HourExpCnt_ != 0L) {
+      size += com.google.protobuf.CodedOutputStream
+        .computeInt64Size(1, u1HourExpCnt_);
+    }
+    if (u1HourClickCnt_ != 0L) {
+      size += com.google.protobuf.CodedOutputStream
+        .computeInt64Size(2, u1HourClickCnt_);
+    }
+    if (u1HourShareCnt_ != 0L) {
+      size += com.google.protobuf.CodedOutputStream
+        .computeInt64Size(3, u1HourShareCnt_);
+    }
+    if (u1HourReturnCnt_ != 0L) {
+      size += com.google.protobuf.CodedOutputStream
+        .computeInt64Size(4, u1HourReturnCnt_);
+    }
+    if (uCtr1Hour_ != 0D) {
+      size += com.google.protobuf.CodedOutputStream
+        .computeDoubleSize(5, uCtr1Hour_);
+    }
+    if (uStr1Hour_ != 0D) {
+      size += com.google.protobuf.CodedOutputStream
+        .computeDoubleSize(6, uStr1Hour_);
+    }
+    if (uRov1Hour_ != 0D) {
+      size += com.google.protobuf.CodedOutputStream
+        .computeDoubleSize(7, uRov1Hour_);
+    }
+    if (uRos1Hour_ != 0D) {
+      size += com.google.protobuf.CodedOutputStream
+        .computeDoubleSize(8, uRos1Hour_);
+    }
+    if (uTodayExpCnt_ != 0L) {
+      size += com.google.protobuf.CodedOutputStream
+        .computeInt64Size(9, uTodayExpCnt_);
+    }
+    if (uTodayClickCnt_ != 0L) {
+      size += com.google.protobuf.CodedOutputStream
+        .computeInt64Size(10, uTodayClickCnt_);
+    }
+    if (uTodayShareCnt_ != 0L) {
+      size += com.google.protobuf.CodedOutputStream
+        .computeInt64Size(11, uTodayShareCnt_);
+    }
+    if (uTodayReturnCnt_ != 0L) {
+      size += com.google.protobuf.CodedOutputStream
+        .computeInt64Size(12, uTodayReturnCnt_);
+    }
+    if (uCtrToday_ != 0D) {
+      size += com.google.protobuf.CodedOutputStream
+        .computeDoubleSize(13, uCtrToday_);
+    }
+    if (uStrToday_ != 0D) {
+      size += com.google.protobuf.CodedOutputStream
+        .computeDoubleSize(14, uStrToday_);
+    }
+    if (uRovToday_ != 0D) {
+      size += com.google.protobuf.CodedOutputStream
+        .computeDoubleSize(15, uRovToday_);
+    }
+    if (uRosToday_ != 0D) {
+      size += com.google.protobuf.CodedOutputStream
+        .computeDoubleSize(16, uRosToday_);
+    }
+    if (u1DayExpCnt_ != 0L) {
+      size += com.google.protobuf.CodedOutputStream
+        .computeInt64Size(17, u1DayExpCnt_);
+    }
+    if (u1DayClickCnt_ != 0L) {
+      size += com.google.protobuf.CodedOutputStream
+        .computeInt64Size(18, u1DayClickCnt_);
+    }
+    if (u1DayShareCnt_ != 0L) {
+      size += com.google.protobuf.CodedOutputStream
+        .computeInt64Size(19, u1DayShareCnt_);
+    }
+    if (u1DayReturnCnt_ != 0L) {
+      size += com.google.protobuf.CodedOutputStream
+        .computeInt64Size(20, u1DayReturnCnt_);
+    }
+    if (uCtr1Day_ != 0D) {
+      size += com.google.protobuf.CodedOutputStream
+        .computeDoubleSize(21, uCtr1Day_);
+    }
+    if (uStr1Day_ != 0D) {
+      size += com.google.protobuf.CodedOutputStream
+        .computeDoubleSize(22, uStr1Day_);
+    }
+    if (uRov1Day_ != 0D) {
+      size += com.google.protobuf.CodedOutputStream
+        .computeDoubleSize(23, uRov1Day_);
+    }
+    if (uRos1Day_ != 0D) {
+      size += com.google.protobuf.CodedOutputStream
+        .computeDoubleSize(24, uRos1Day_);
+    }
+    if (u3DayExpCnt_ != 0L) {
+      size += com.google.protobuf.CodedOutputStream
+        .computeInt64Size(25, u3DayExpCnt_);
+    }
+    if (u3DayClickCnt_ != 0L) {
+      size += com.google.protobuf.CodedOutputStream
+        .computeInt64Size(26, u3DayClickCnt_);
+    }
+    if (u3DayShareCnt_ != 0L) {
+      size += com.google.protobuf.CodedOutputStream
+        .computeInt64Size(27, u3DayShareCnt_);
+    }
+    if (u3DayReturnCnt_ != 0L) {
+      size += com.google.protobuf.CodedOutputStream
+        .computeInt64Size(28, u3DayReturnCnt_);
+    }
+    if (uCtr3Day_ != 0D) {
+      size += com.google.protobuf.CodedOutputStream
+        .computeDoubleSize(29, uCtr3Day_);
+    }
+    if (uStr3Day_ != 0D) {
+      size += com.google.protobuf.CodedOutputStream
+        .computeDoubleSize(30, uStr3Day_);
+    }
+    if (uRov3Day_ != 0D) {
+      size += com.google.protobuf.CodedOutputStream
+        .computeDoubleSize(31, uRov3Day_);
+    }
+    if (uRos3Day_ != 0D) {
+      size += com.google.protobuf.CodedOutputStream
+        .computeDoubleSize(32, uRos3Day_);
+    }
+    if (!getMidBytes().isEmpty()) {
+      size += com.google.protobuf.GeneratedMessageV3.computeStringSize(33, mid_);
+    }
+    if (!getMachineinfoBrandBytes().isEmpty()) {
+      size += com.google.protobuf.GeneratedMessageV3.computeStringSize(34, machineinfoBrand_);
+    }
+    if (!getMachineinfoModelBytes().isEmpty()) {
+      size += com.google.protobuf.GeneratedMessageV3.computeStringSize(35, machineinfoModel_);
+    }
+    if (!getMachineinfoSystemBytes().isEmpty()) {
+      size += com.google.protobuf.GeneratedMessageV3.computeStringSize(36, machineinfoSystem_);
+    }
+    if (!getMachineinfoPlatformBytes().isEmpty()) {
+      size += com.google.protobuf.GeneratedMessageV3.computeStringSize(37, machineinfoPlatform_);
+    }
+    if (!getGenderBytes().isEmpty()) {
+      size += com.google.protobuf.GeneratedMessageV3.computeStringSize(38, gender_);
+    }
+    if (!getCountryBytes().isEmpty()) {
+      size += com.google.protobuf.GeneratedMessageV3.computeStringSize(39, country_);
+    }
+    if (!getProvinceBytes().isEmpty()) {
+      size += com.google.protobuf.GeneratedMessageV3.computeStringSize(40, province_);
+    }
+    if (!getCityBytes().isEmpty()) {
+      size += com.google.protobuf.GeneratedMessageV3.computeStringSize(41, city_);
+    }
+    size += unknownFields.getSerializedSize();
+    memoizedSize = size;
+    return size;
+  }
+
+  @java.lang.Override
+  public boolean equals(final java.lang.Object obj) {
+    if (obj == this) {
+     return true;
+    }
+    if (!(obj instanceof com.tzld.piaoquan.recommend.feature.model.feature.GetUserFeatureInfo)) {
+      return super.equals(obj);
+    }
+    com.tzld.piaoquan.recommend.feature.model.feature.GetUserFeatureInfo other = (com.tzld.piaoquan.recommend.feature.model.feature.GetUserFeatureInfo) obj;
+
+    if (getU1HourExpCnt()
+        != other.getU1HourExpCnt()) return false;
+    if (getU1HourClickCnt()
+        != other.getU1HourClickCnt()) return false;
+    if (getU1HourShareCnt()
+        != other.getU1HourShareCnt()) return false;
+    if (getU1HourReturnCnt()
+        != other.getU1HourReturnCnt()) return false;
+    if (java.lang.Double.doubleToLongBits(getUCtr1Hour())
+        != java.lang.Double.doubleToLongBits(
+            other.getUCtr1Hour())) return false;
+    if (java.lang.Double.doubleToLongBits(getUStr1Hour())
+        != java.lang.Double.doubleToLongBits(
+            other.getUStr1Hour())) return false;
+    if (java.lang.Double.doubleToLongBits(getURov1Hour())
+        != java.lang.Double.doubleToLongBits(
+            other.getURov1Hour())) return false;
+    if (java.lang.Double.doubleToLongBits(getURos1Hour())
+        != java.lang.Double.doubleToLongBits(
+            other.getURos1Hour())) return false;
+    if (getUTodayExpCnt()
+        != other.getUTodayExpCnt()) return false;
+    if (getUTodayClickCnt()
+        != other.getUTodayClickCnt()) return false;
+    if (getUTodayShareCnt()
+        != other.getUTodayShareCnt()) return false;
+    if (getUTodayReturnCnt()
+        != other.getUTodayReturnCnt()) return false;
+    if (java.lang.Double.doubleToLongBits(getUCtrToday())
+        != java.lang.Double.doubleToLongBits(
+            other.getUCtrToday())) return false;
+    if (java.lang.Double.doubleToLongBits(getUStrToday())
+        != java.lang.Double.doubleToLongBits(
+            other.getUStrToday())) return false;
+    if (java.lang.Double.doubleToLongBits(getURovToday())
+        != java.lang.Double.doubleToLongBits(
+            other.getURovToday())) return false;
+    if (java.lang.Double.doubleToLongBits(getURosToday())
+        != java.lang.Double.doubleToLongBits(
+            other.getURosToday())) return false;
+    if (getU1DayExpCnt()
+        != other.getU1DayExpCnt()) return false;
+    if (getU1DayClickCnt()
+        != other.getU1DayClickCnt()) return false;
+    if (getU1DayShareCnt()
+        != other.getU1DayShareCnt()) return false;
+    if (getU1DayReturnCnt()
+        != other.getU1DayReturnCnt()) return false;
+    if (java.lang.Double.doubleToLongBits(getUCtr1Day())
+        != java.lang.Double.doubleToLongBits(
+            other.getUCtr1Day())) return false;
+    if (java.lang.Double.doubleToLongBits(getUStr1Day())
+        != java.lang.Double.doubleToLongBits(
+            other.getUStr1Day())) return false;
+    if (java.lang.Double.doubleToLongBits(getURov1Day())
+        != java.lang.Double.doubleToLongBits(
+            other.getURov1Day())) return false;
+    if (java.lang.Double.doubleToLongBits(getURos1Day())
+        != java.lang.Double.doubleToLongBits(
+            other.getURos1Day())) return false;
+    if (getU3DayExpCnt()
+        != other.getU3DayExpCnt()) return false;
+    if (getU3DayClickCnt()
+        != other.getU3DayClickCnt()) return false;
+    if (getU3DayShareCnt()
+        != other.getU3DayShareCnt()) return false;
+    if (getU3DayReturnCnt()
+        != other.getU3DayReturnCnt()) return false;
+    if (java.lang.Double.doubleToLongBits(getUCtr3Day())
+        != java.lang.Double.doubleToLongBits(
+            other.getUCtr3Day())) return false;
+    if (java.lang.Double.doubleToLongBits(getUStr3Day())
+        != java.lang.Double.doubleToLongBits(
+            other.getUStr3Day())) return false;
+    if (java.lang.Double.doubleToLongBits(getURov3Day())
+        != java.lang.Double.doubleToLongBits(
+            other.getURov3Day())) return false;
+    if (java.lang.Double.doubleToLongBits(getURos3Day())
+        != java.lang.Double.doubleToLongBits(
+            other.getURos3Day())) return false;
+    if (!getMid()
+        .equals(other.getMid())) return false;
+    if (!getMachineinfoBrand()
+        .equals(other.getMachineinfoBrand())) return false;
+    if (!getMachineinfoModel()
+        .equals(other.getMachineinfoModel())) return false;
+    if (!getMachineinfoSystem()
+        .equals(other.getMachineinfoSystem())) return false;
+    if (!getMachineinfoPlatform()
+        .equals(other.getMachineinfoPlatform())) return false;
+    if (!getGender()
+        .equals(other.getGender())) return false;
+    if (!getCountry()
+        .equals(other.getCountry())) return false;
+    if (!getProvince()
+        .equals(other.getProvince())) return false;
+    if (!getCity()
+        .equals(other.getCity())) return false;
+    if (!unknownFields.equals(other.unknownFields)) return false;
+    return true;
+  }
+
+  @java.lang.Override
+  public int hashCode() {
+    if (memoizedHashCode != 0) {
+      return memoizedHashCode;
+    }
+    int hash = 41;
+    hash = (19 * hash) + getDescriptor().hashCode();
+    hash = (37 * hash) + U1HOUR_EXP_CNT_FIELD_NUMBER;
+    hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
+        getU1HourExpCnt());
+    hash = (37 * hash) + U1HOUR_CLICK_CNT_FIELD_NUMBER;
+    hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
+        getU1HourClickCnt());
+    hash = (37 * hash) + U1HOUR_SHARE_CNT_FIELD_NUMBER;
+    hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
+        getU1HourShareCnt());
+    hash = (37 * hash) + U1HOUR_RETURN_CNT_FIELD_NUMBER;
+    hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
+        getU1HourReturnCnt());
+    hash = (37 * hash) + U_CTR1HOUR_FIELD_NUMBER;
+    hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
+        java.lang.Double.doubleToLongBits(getUCtr1Hour()));
+    hash = (37 * hash) + U_STR1HOUR_FIELD_NUMBER;
+    hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
+        java.lang.Double.doubleToLongBits(getUStr1Hour()));
+    hash = (37 * hash) + U_ROV1HOUR_FIELD_NUMBER;
+    hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
+        java.lang.Double.doubleToLongBits(getURov1Hour()));
+    hash = (37 * hash) + U_ROS1HOUR_FIELD_NUMBER;
+    hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
+        java.lang.Double.doubleToLongBits(getURos1Hour()));
+    hash = (37 * hash) + U_TODAY_EXP_CNT_FIELD_NUMBER;
+    hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
+        getUTodayExpCnt());
+    hash = (37 * hash) + U_TODAY_CLICK_CNT_FIELD_NUMBER;
+    hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
+        getUTodayClickCnt());
+    hash = (37 * hash) + U_TODAY_SHARE_CNT_FIELD_NUMBER;
+    hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
+        getUTodayShareCnt());
+    hash = (37 * hash) + U_TODAY_RETURN_CNT_FIELD_NUMBER;
+    hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
+        getUTodayReturnCnt());
+    hash = (37 * hash) + U_CTR_TODAY_FIELD_NUMBER;
+    hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
+        java.lang.Double.doubleToLongBits(getUCtrToday()));
+    hash = (37 * hash) + U_STR_TODAY_FIELD_NUMBER;
+    hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
+        java.lang.Double.doubleToLongBits(getUStrToday()));
+    hash = (37 * hash) + U_ROV_TODAY_FIELD_NUMBER;
+    hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
+        java.lang.Double.doubleToLongBits(getURovToday()));
+    hash = (37 * hash) + U_ROS_TODAY_FIELD_NUMBER;
+    hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
+        java.lang.Double.doubleToLongBits(getURosToday()));
+    hash = (37 * hash) + U1DAY_EXP_CNT_FIELD_NUMBER;
+    hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
+        getU1DayExpCnt());
+    hash = (37 * hash) + U1DAY_CLICK_CNT_FIELD_NUMBER;
+    hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
+        getU1DayClickCnt());
+    hash = (37 * hash) + U1DAY_SHARE_CNT_FIELD_NUMBER;
+    hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
+        getU1DayShareCnt());
+    hash = (37 * hash) + U1DAY_RETURN_CNT_FIELD_NUMBER;
+    hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
+        getU1DayReturnCnt());
+    hash = (37 * hash) + U_CTR1DAY_FIELD_NUMBER;
+    hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
+        java.lang.Double.doubleToLongBits(getUCtr1Day()));
+    hash = (37 * hash) + U_STR1DAY_FIELD_NUMBER;
+    hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
+        java.lang.Double.doubleToLongBits(getUStr1Day()));
+    hash = (37 * hash) + U_ROV1DAY_FIELD_NUMBER;
+    hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
+        java.lang.Double.doubleToLongBits(getURov1Day()));
+    hash = (37 * hash) + U_ROS1DAY_FIELD_NUMBER;
+    hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
+        java.lang.Double.doubleToLongBits(getURos1Day()));
+    hash = (37 * hash) + U3DAY_EXP_CNT_FIELD_NUMBER;
+    hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
+        getU3DayExpCnt());
+    hash = (37 * hash) + U3DAY_CLICK_CNT_FIELD_NUMBER;
+    hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
+        getU3DayClickCnt());
+    hash = (37 * hash) + U3DAY_SHARE_CNT_FIELD_NUMBER;
+    hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
+        getU3DayShareCnt());
+    hash = (37 * hash) + U3DAY_RETURN_CNT_FIELD_NUMBER;
+    hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
+        getU3DayReturnCnt());
+    hash = (37 * hash) + U_CTR3DAY_FIELD_NUMBER;
+    hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
+        java.lang.Double.doubleToLongBits(getUCtr3Day()));
+    hash = (37 * hash) + U_STR3DAY_FIELD_NUMBER;
+    hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
+        java.lang.Double.doubleToLongBits(getUStr3Day()));
+    hash = (37 * hash) + U_ROV3DAY_FIELD_NUMBER;
+    hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
+        java.lang.Double.doubleToLongBits(getURov3Day()));
+    hash = (37 * hash) + U_ROS3DAY_FIELD_NUMBER;
+    hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
+        java.lang.Double.doubleToLongBits(getURos3Day()));
+    hash = (37 * hash) + MID_FIELD_NUMBER;
+    hash = (53 * hash) + getMid().hashCode();
+    hash = (37 * hash) + MACHINEINFO_BRAND_FIELD_NUMBER;
+    hash = (53 * hash) + getMachineinfoBrand().hashCode();
+    hash = (37 * hash) + MACHINEINFO_MODEL_FIELD_NUMBER;
+    hash = (53 * hash) + getMachineinfoModel().hashCode();
+    hash = (37 * hash) + MACHINEINFO_SYSTEM_FIELD_NUMBER;
+    hash = (53 * hash) + getMachineinfoSystem().hashCode();
+    hash = (37 * hash) + MACHINEINFO_PLATFORM_FIELD_NUMBER;
+    hash = (53 * hash) + getMachineinfoPlatform().hashCode();
+    hash = (37 * hash) + GENDER_FIELD_NUMBER;
+    hash = (53 * hash) + getGender().hashCode();
+    hash = (37 * hash) + COUNTRY_FIELD_NUMBER;
+    hash = (53 * hash) + getCountry().hashCode();
+    hash = (37 * hash) + PROVINCE_FIELD_NUMBER;
+    hash = (53 * hash) + getProvince().hashCode();
+    hash = (37 * hash) + CITY_FIELD_NUMBER;
+    hash = (53 * hash) + getCity().hashCode();
+    hash = (29 * hash) + unknownFields.hashCode();
+    memoizedHashCode = hash;
+    return hash;
+  }
+
+  public static com.tzld.piaoquan.recommend.feature.model.feature.GetUserFeatureInfo parseFrom(
+      java.nio.ByteBuffer data)
+      throws com.google.protobuf.InvalidProtocolBufferException {
+    return PARSER.parseFrom(data);
+  }
+  public static com.tzld.piaoquan.recommend.feature.model.feature.GetUserFeatureInfo parseFrom(
+      java.nio.ByteBuffer data,
+      com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+      throws com.google.protobuf.InvalidProtocolBufferException {
+    return PARSER.parseFrom(data, extensionRegistry);
+  }
+  public static com.tzld.piaoquan.recommend.feature.model.feature.GetUserFeatureInfo parseFrom(
+      com.google.protobuf.ByteString data)
+      throws com.google.protobuf.InvalidProtocolBufferException {
+    return PARSER.parseFrom(data);
+  }
+  public static com.tzld.piaoquan.recommend.feature.model.feature.GetUserFeatureInfo parseFrom(
+      com.google.protobuf.ByteString data,
+      com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+      throws com.google.protobuf.InvalidProtocolBufferException {
+    return PARSER.parseFrom(data, extensionRegistry);
+  }
+  public static com.tzld.piaoquan.recommend.feature.model.feature.GetUserFeatureInfo parseFrom(byte[] data)
+      throws com.google.protobuf.InvalidProtocolBufferException {
+    return PARSER.parseFrom(data);
+  }
+  public static com.tzld.piaoquan.recommend.feature.model.feature.GetUserFeatureInfo parseFrom(
+      byte[] data,
+      com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+      throws com.google.protobuf.InvalidProtocolBufferException {
+    return PARSER.parseFrom(data, extensionRegistry);
+  }
+  public static com.tzld.piaoquan.recommend.feature.model.feature.GetUserFeatureInfo parseFrom(java.io.InputStream input)
+      throws java.io.IOException {
+    return com.google.protobuf.GeneratedMessageV3
+        .parseWithIOException(PARSER, input);
+  }
+  public static com.tzld.piaoquan.recommend.feature.model.feature.GetUserFeatureInfo parseFrom(
+      java.io.InputStream input,
+      com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+      throws java.io.IOException {
+    return com.google.protobuf.GeneratedMessageV3
+        .parseWithIOException(PARSER, input, extensionRegistry);
+  }
+  public static com.tzld.piaoquan.recommend.feature.model.feature.GetUserFeatureInfo parseDelimitedFrom(java.io.InputStream input)
+      throws java.io.IOException {
+    return com.google.protobuf.GeneratedMessageV3
+        .parseDelimitedWithIOException(PARSER, input);
+  }
+  public static com.tzld.piaoquan.recommend.feature.model.feature.GetUserFeatureInfo parseDelimitedFrom(
+      java.io.InputStream input,
+      com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+      throws java.io.IOException {
+    return com.google.protobuf.GeneratedMessageV3
+        .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
+  }
+  public static com.tzld.piaoquan.recommend.feature.model.feature.GetUserFeatureInfo parseFrom(
+      com.google.protobuf.CodedInputStream input)
+      throws java.io.IOException {
+    return com.google.protobuf.GeneratedMessageV3
+        .parseWithIOException(PARSER, input);
+  }
+  public static com.tzld.piaoquan.recommend.feature.model.feature.GetUserFeatureInfo parseFrom(
+      com.google.protobuf.CodedInputStream input,
+      com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+      throws java.io.IOException {
+    return com.google.protobuf.GeneratedMessageV3
+        .parseWithIOException(PARSER, input, extensionRegistry);
+  }
+
+  @java.lang.Override
+  public Builder newBuilderForType() { return newBuilder(); }
+  public static Builder newBuilder() {
+    return DEFAULT_INSTANCE.toBuilder();
+  }
+  public static Builder newBuilder(com.tzld.piaoquan.recommend.feature.model.feature.GetUserFeatureInfo prototype) {
+    return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
+  }
+  @java.lang.Override
+  public Builder toBuilder() {
+    return this == DEFAULT_INSTANCE
+        ? new Builder() : new Builder().mergeFrom(this);
+  }
+
+  @java.lang.Override
+  protected Builder newBuilderForType(
+      com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
+    Builder builder = new Builder(parent);
+    return builder;
+  }
+  /**
+   * Protobuf type {@code GetUserFeatureInfo}
+   */
+  public static final class Builder extends
+      com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
+      // @@protoc_insertion_point(builder_implements:GetUserFeatureInfo)
+      com.tzld.piaoquan.recommend.feature.model.feature.GetUserFeatureInfoOrBuilder {
+    public static final com.google.protobuf.Descriptors.Descriptor
+        getDescriptor() {
+      return com.tzld.piaoquan.recommend.feature.model.feature.Feature.internal_static_GetUserFeatureInfo_descriptor;
+    }
+
+    @java.lang.Override
+    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
+        internalGetFieldAccessorTable() {
+      return com.tzld.piaoquan.recommend.feature.model.feature.Feature.internal_static_GetUserFeatureInfo_fieldAccessorTable
+          .ensureFieldAccessorsInitialized(
+              com.tzld.piaoquan.recommend.feature.model.feature.GetUserFeatureInfo.class, com.tzld.piaoquan.recommend.feature.model.feature.GetUserFeatureInfo.Builder.class);
+    }
+
+    // Construct using com.tzld.piaoquan.recommend.feature.model.feature.GetUserFeatureInfo.newBuilder()
+    private Builder() {
+      maybeForceBuilderInitialization();
+    }
+
+    private Builder(
+        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
+      super(parent);
+      maybeForceBuilderInitialization();
+    }
+    private void maybeForceBuilderInitialization() {
+      if (com.google.protobuf.GeneratedMessageV3
+              .alwaysUseFieldBuilders) {
+      }
+    }
+    @java.lang.Override
+    public Builder clear() {
+      super.clear();
+      u1HourExpCnt_ = 0L;
+
+      u1HourClickCnt_ = 0L;
+
+      u1HourShareCnt_ = 0L;
+
+      u1HourReturnCnt_ = 0L;
+
+      uCtr1Hour_ = 0D;
+
+      uStr1Hour_ = 0D;
+
+      uRov1Hour_ = 0D;
+
+      uRos1Hour_ = 0D;
+
+      uTodayExpCnt_ = 0L;
+
+      uTodayClickCnt_ = 0L;
+
+      uTodayShareCnt_ = 0L;
+
+      uTodayReturnCnt_ = 0L;
+
+      uCtrToday_ = 0D;
+
+      uStrToday_ = 0D;
+
+      uRovToday_ = 0D;
+
+      uRosToday_ = 0D;
+
+      u1DayExpCnt_ = 0L;
+
+      u1DayClickCnt_ = 0L;
+
+      u1DayShareCnt_ = 0L;
+
+      u1DayReturnCnt_ = 0L;
+
+      uCtr1Day_ = 0D;
+
+      uStr1Day_ = 0D;
+
+      uRov1Day_ = 0D;
+
+      uRos1Day_ = 0D;
+
+      u3DayExpCnt_ = 0L;
+
+      u3DayClickCnt_ = 0L;
+
+      u3DayShareCnt_ = 0L;
+
+      u3DayReturnCnt_ = 0L;
+
+      uCtr3Day_ = 0D;
+
+      uStr3Day_ = 0D;
+
+      uRov3Day_ = 0D;
+
+      uRos3Day_ = 0D;
+
+      mid_ = "";
+
+      machineinfoBrand_ = "";
+
+      machineinfoModel_ = "";
+
+      machineinfoSystem_ = "";
+
+      machineinfoPlatform_ = "";
+
+      gender_ = "";
+
+      country_ = "";
+
+      province_ = "";
+
+      city_ = "";
+
+      return this;
+    }
+
+    @java.lang.Override
+    public com.google.protobuf.Descriptors.Descriptor
+        getDescriptorForType() {
+      return com.tzld.piaoquan.recommend.feature.model.feature.Feature.internal_static_GetUserFeatureInfo_descriptor;
+    }
+
+    @java.lang.Override
+    public com.tzld.piaoquan.recommend.feature.model.feature.GetUserFeatureInfo getDefaultInstanceForType() {
+      return com.tzld.piaoquan.recommend.feature.model.feature.GetUserFeatureInfo.getDefaultInstance();
+    }
+
+    @java.lang.Override
+    public com.tzld.piaoquan.recommend.feature.model.feature.GetUserFeatureInfo build() {
+      com.tzld.piaoquan.recommend.feature.model.feature.GetUserFeatureInfo result = buildPartial();
+      if (!result.isInitialized()) {
+        throw newUninitializedMessageException(result);
+      }
+      return result;
+    }
+
+    @java.lang.Override
+    public com.tzld.piaoquan.recommend.feature.model.feature.GetUserFeatureInfo buildPartial() {
+      com.tzld.piaoquan.recommend.feature.model.feature.GetUserFeatureInfo result = new com.tzld.piaoquan.recommend.feature.model.feature.GetUserFeatureInfo(this);
+      result.u1HourExpCnt_ = u1HourExpCnt_;
+      result.u1HourClickCnt_ = u1HourClickCnt_;
+      result.u1HourShareCnt_ = u1HourShareCnt_;
+      result.u1HourReturnCnt_ = u1HourReturnCnt_;
+      result.uCtr1Hour_ = uCtr1Hour_;
+      result.uStr1Hour_ = uStr1Hour_;
+      result.uRov1Hour_ = uRov1Hour_;
+      result.uRos1Hour_ = uRos1Hour_;
+      result.uTodayExpCnt_ = uTodayExpCnt_;
+      result.uTodayClickCnt_ = uTodayClickCnt_;
+      result.uTodayShareCnt_ = uTodayShareCnt_;
+      result.uTodayReturnCnt_ = uTodayReturnCnt_;
+      result.uCtrToday_ = uCtrToday_;
+      result.uStrToday_ = uStrToday_;
+      result.uRovToday_ = uRovToday_;
+      result.uRosToday_ = uRosToday_;
+      result.u1DayExpCnt_ = u1DayExpCnt_;
+      result.u1DayClickCnt_ = u1DayClickCnt_;
+      result.u1DayShareCnt_ = u1DayShareCnt_;
+      result.u1DayReturnCnt_ = u1DayReturnCnt_;
+      result.uCtr1Day_ = uCtr1Day_;
+      result.uStr1Day_ = uStr1Day_;
+      result.uRov1Day_ = uRov1Day_;
+      result.uRos1Day_ = uRos1Day_;
+      result.u3DayExpCnt_ = u3DayExpCnt_;
+      result.u3DayClickCnt_ = u3DayClickCnt_;
+      result.u3DayShareCnt_ = u3DayShareCnt_;
+      result.u3DayReturnCnt_ = u3DayReturnCnt_;
+      result.uCtr3Day_ = uCtr3Day_;
+      result.uStr3Day_ = uStr3Day_;
+      result.uRov3Day_ = uRov3Day_;
+      result.uRos3Day_ = uRos3Day_;
+      result.mid_ = mid_;
+      result.machineinfoBrand_ = machineinfoBrand_;
+      result.machineinfoModel_ = machineinfoModel_;
+      result.machineinfoSystem_ = machineinfoSystem_;
+      result.machineinfoPlatform_ = machineinfoPlatform_;
+      result.gender_ = gender_;
+      result.country_ = country_;
+      result.province_ = province_;
+      result.city_ = city_;
+      onBuilt();
+      return result;
+    }
+
+    @java.lang.Override
+    public Builder clone() {
+      return super.clone();
+    }
+    @java.lang.Override
+    public Builder setField(
+        com.google.protobuf.Descriptors.FieldDescriptor field,
+        java.lang.Object value) {
+      return super.setField(field, value);
+    }
+    @java.lang.Override
+    public Builder clearField(
+        com.google.protobuf.Descriptors.FieldDescriptor field) {
+      return super.clearField(field);
+    }
+    @java.lang.Override
+    public Builder clearOneof(
+        com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+      return super.clearOneof(oneof);
+    }
+    @java.lang.Override
+    public Builder setRepeatedField(
+        com.google.protobuf.Descriptors.FieldDescriptor field,
+        int index, java.lang.Object value) {
+      return super.setRepeatedField(field, index, value);
+    }
+    @java.lang.Override
+    public Builder addRepeatedField(
+        com.google.protobuf.Descriptors.FieldDescriptor field,
+        java.lang.Object value) {
+      return super.addRepeatedField(field, value);
+    }
+    @java.lang.Override
+    public Builder mergeFrom(com.google.protobuf.Message other) {
+      if (other instanceof com.tzld.piaoquan.recommend.feature.model.feature.GetUserFeatureInfo) {
+        return mergeFrom((com.tzld.piaoquan.recommend.feature.model.feature.GetUserFeatureInfo)other);
+      } else {
+        super.mergeFrom(other);
+        return this;
+      }
+    }
+
+    public Builder mergeFrom(com.tzld.piaoquan.recommend.feature.model.feature.GetUserFeatureInfo other) {
+      if (other == com.tzld.piaoquan.recommend.feature.model.feature.GetUserFeatureInfo.getDefaultInstance()) return this;
+      if (other.getU1HourExpCnt() != 0L) {
+        setU1HourExpCnt(other.getU1HourExpCnt());
+      }
+      if (other.getU1HourClickCnt() != 0L) {
+        setU1HourClickCnt(other.getU1HourClickCnt());
+      }
+      if (other.getU1HourShareCnt() != 0L) {
+        setU1HourShareCnt(other.getU1HourShareCnt());
+      }
+      if (other.getU1HourReturnCnt() != 0L) {
+        setU1HourReturnCnt(other.getU1HourReturnCnt());
+      }
+      if (other.getUCtr1Hour() != 0D) {
+        setUCtr1Hour(other.getUCtr1Hour());
+      }
+      if (other.getUStr1Hour() != 0D) {
+        setUStr1Hour(other.getUStr1Hour());
+      }
+      if (other.getURov1Hour() != 0D) {
+        setURov1Hour(other.getURov1Hour());
+      }
+      if (other.getURos1Hour() != 0D) {
+        setURos1Hour(other.getURos1Hour());
+      }
+      if (other.getUTodayExpCnt() != 0L) {
+        setUTodayExpCnt(other.getUTodayExpCnt());
+      }
+      if (other.getUTodayClickCnt() != 0L) {
+        setUTodayClickCnt(other.getUTodayClickCnt());
+      }
+      if (other.getUTodayShareCnt() != 0L) {
+        setUTodayShareCnt(other.getUTodayShareCnt());
+      }
+      if (other.getUTodayReturnCnt() != 0L) {
+        setUTodayReturnCnt(other.getUTodayReturnCnt());
+      }
+      if (other.getUCtrToday() != 0D) {
+        setUCtrToday(other.getUCtrToday());
+      }
+      if (other.getUStrToday() != 0D) {
+        setUStrToday(other.getUStrToday());
+      }
+      if (other.getURovToday() != 0D) {
+        setURovToday(other.getURovToday());
+      }
+      if (other.getURosToday() != 0D) {
+        setURosToday(other.getURosToday());
+      }
+      if (other.getU1DayExpCnt() != 0L) {
+        setU1DayExpCnt(other.getU1DayExpCnt());
+      }
+      if (other.getU1DayClickCnt() != 0L) {
+        setU1DayClickCnt(other.getU1DayClickCnt());
+      }
+      if (other.getU1DayShareCnt() != 0L) {
+        setU1DayShareCnt(other.getU1DayShareCnt());
+      }
+      if (other.getU1DayReturnCnt() != 0L) {
+        setU1DayReturnCnt(other.getU1DayReturnCnt());
+      }
+      if (other.getUCtr1Day() != 0D) {
+        setUCtr1Day(other.getUCtr1Day());
+      }
+      if (other.getUStr1Day() != 0D) {
+        setUStr1Day(other.getUStr1Day());
+      }
+      if (other.getURov1Day() != 0D) {
+        setURov1Day(other.getURov1Day());
+      }
+      if (other.getURos1Day() != 0D) {
+        setURos1Day(other.getURos1Day());
+      }
+      if (other.getU3DayExpCnt() != 0L) {
+        setU3DayExpCnt(other.getU3DayExpCnt());
+      }
+      if (other.getU3DayClickCnt() != 0L) {
+        setU3DayClickCnt(other.getU3DayClickCnt());
+      }
+      if (other.getU3DayShareCnt() != 0L) {
+        setU3DayShareCnt(other.getU3DayShareCnt());
+      }
+      if (other.getU3DayReturnCnt() != 0L) {
+        setU3DayReturnCnt(other.getU3DayReturnCnt());
+      }
+      if (other.getUCtr3Day() != 0D) {
+        setUCtr3Day(other.getUCtr3Day());
+      }
+      if (other.getUStr3Day() != 0D) {
+        setUStr3Day(other.getUStr3Day());
+      }
+      if (other.getURov3Day() != 0D) {
+        setURov3Day(other.getURov3Day());
+      }
+      if (other.getURos3Day() != 0D) {
+        setURos3Day(other.getURos3Day());
+      }
+      if (!other.getMid().isEmpty()) {
+        mid_ = other.mid_;
+        onChanged();
+      }
+      if (!other.getMachineinfoBrand().isEmpty()) {
+        machineinfoBrand_ = other.machineinfoBrand_;
+        onChanged();
+      }
+      if (!other.getMachineinfoModel().isEmpty()) {
+        machineinfoModel_ = other.machineinfoModel_;
+        onChanged();
+      }
+      if (!other.getMachineinfoSystem().isEmpty()) {
+        machineinfoSystem_ = other.machineinfoSystem_;
+        onChanged();
+      }
+      if (!other.getMachineinfoPlatform().isEmpty()) {
+        machineinfoPlatform_ = other.machineinfoPlatform_;
+        onChanged();
+      }
+      if (!other.getGender().isEmpty()) {
+        gender_ = other.gender_;
+        onChanged();
+      }
+      if (!other.getCountry().isEmpty()) {
+        country_ = other.country_;
+        onChanged();
+      }
+      if (!other.getProvince().isEmpty()) {
+        province_ = other.province_;
+        onChanged();
+      }
+      if (!other.getCity().isEmpty()) {
+        city_ = other.city_;
+        onChanged();
+      }
+      this.mergeUnknownFields(other.unknownFields);
+      onChanged();
+      return this;
+    }
+
+    @java.lang.Override
+    public final boolean isInitialized() {
+      return true;
+    }
+
+    @java.lang.Override
+    public Builder mergeFrom(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      com.tzld.piaoquan.recommend.feature.model.feature.GetUserFeatureInfo parsedMessage = null;
+      try {
+        parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+        parsedMessage = (com.tzld.piaoquan.recommend.feature.model.feature.GetUserFeatureInfo) e.getUnfinishedMessage();
+        throw e.unwrapIOException();
+      } finally {
+        if (parsedMessage != null) {
+          mergeFrom(parsedMessage);
+        }
+      }
+      return this;
+    }
+
+    private long u1HourExpCnt_ ;
+    /**
+     * <pre>
+     *过去一小时
+     * </pre>
+     *
+     * <code>int64 u1hour_exp_cnt = 1;</code>
+     * @return The u1hourExpCnt.
+     */
+    @java.lang.Override
+    public long getU1HourExpCnt() {
+      return u1HourExpCnt_;
+    }
+    /**
+     * <pre>
+     *过去一小时
+     * </pre>
+     *
+     * <code>int64 u1hour_exp_cnt = 1;</code>
+     * @param value The u1hourExpCnt to set.
+     * @return This builder for chaining.
+     */
+    public Builder setU1HourExpCnt(long value) {
+      
+      u1HourExpCnt_ = value;
+      onChanged();
+      return this;
+    }
+    /**
+     * <pre>
+     *过去一小时
+     * </pre>
+     *
+     * <code>int64 u1hour_exp_cnt = 1;</code>
+     * @return This builder for chaining.
+     */
+    public Builder clearU1HourExpCnt() {
+      
+      u1HourExpCnt_ = 0L;
+      onChanged();
+      return this;
+    }
+
+    private long u1HourClickCnt_ ;
+    /**
+     * <code>int64 u1hour_click_cnt = 2;</code>
+     * @return The u1hourClickCnt.
+     */
+    @java.lang.Override
+    public long getU1HourClickCnt() {
+      return u1HourClickCnt_;
+    }
+    /**
+     * <code>int64 u1hour_click_cnt = 2;</code>
+     * @param value The u1hourClickCnt to set.
+     * @return This builder for chaining.
+     */
+    public Builder setU1HourClickCnt(long value) {
+      
+      u1HourClickCnt_ = value;
+      onChanged();
+      return this;
+    }
+    /**
+     * <code>int64 u1hour_click_cnt = 2;</code>
+     * @return This builder for chaining.
+     */
+    public Builder clearU1HourClickCnt() {
+      
+      u1HourClickCnt_ = 0L;
+      onChanged();
+      return this;
+    }
+
+    private long u1HourShareCnt_ ;
+    /**
+     * <code>int64 u1hour_share_cnt = 3;</code>
+     * @return The u1hourShareCnt.
+     */
+    @java.lang.Override
+    public long getU1HourShareCnt() {
+      return u1HourShareCnt_;
+    }
+    /**
+     * <code>int64 u1hour_share_cnt = 3;</code>
+     * @param value The u1hourShareCnt to set.
+     * @return This builder for chaining.
+     */
+    public Builder setU1HourShareCnt(long value) {
+      
+      u1HourShareCnt_ = value;
+      onChanged();
+      return this;
+    }
+    /**
+     * <code>int64 u1hour_share_cnt = 3;</code>
+     * @return This builder for chaining.
+     */
+    public Builder clearU1HourShareCnt() {
+      
+      u1HourShareCnt_ = 0L;
+      onChanged();
+      return this;
+    }
+
+    private long u1HourReturnCnt_ ;
+    /**
+     * <code>int64 u1hour_return_cnt = 4;</code>
+     * @return The u1hourReturnCnt.
+     */
+    @java.lang.Override
+    public long getU1HourReturnCnt() {
+      return u1HourReturnCnt_;
+    }
+    /**
+     * <code>int64 u1hour_return_cnt = 4;</code>
+     * @param value The u1hourReturnCnt to set.
+     * @return This builder for chaining.
+     */
+    public Builder setU1HourReturnCnt(long value) {
+      
+      u1HourReturnCnt_ = value;
+      onChanged();
+      return this;
+    }
+    /**
+     * <code>int64 u1hour_return_cnt = 4;</code>
+     * @return This builder for chaining.
+     */
+    public Builder clearU1HourReturnCnt() {
+      
+      u1HourReturnCnt_ = 0L;
+      onChanged();
+      return this;
+    }
+
+    private double uCtr1Hour_ ;
+    /**
+     * <code>double u_ctr1hour = 5;</code>
+     * @return The uCtr1hour.
+     */
+    @java.lang.Override
+    public double getUCtr1Hour() {
+      return uCtr1Hour_;
+    }
+    /**
+     * <code>double u_ctr1hour = 5;</code>
+     * @param value The uCtr1hour to set.
+     * @return This builder for chaining.
+     */
+    public Builder setUCtr1Hour(double value) {
+      
+      uCtr1Hour_ = value;
+      onChanged();
+      return this;
+    }
+    /**
+     * <code>double u_ctr1hour = 5;</code>
+     * @return This builder for chaining.
+     */
+    public Builder clearUCtr1Hour() {
+      
+      uCtr1Hour_ = 0D;
+      onChanged();
+      return this;
+    }
+
+    private double uStr1Hour_ ;
+    /**
+     * <code>double u_str1hour = 6;</code>
+     * @return The uStr1hour.
+     */
+    @java.lang.Override
+    public double getUStr1Hour() {
+      return uStr1Hour_;
+    }
+    /**
+     * <code>double u_str1hour = 6;</code>
+     * @param value The uStr1hour to set.
+     * @return This builder for chaining.
+     */
+    public Builder setUStr1Hour(double value) {
+      
+      uStr1Hour_ = value;
+      onChanged();
+      return this;
+    }
+    /**
+     * <code>double u_str1hour = 6;</code>
+     * @return This builder for chaining.
+     */
+    public Builder clearUStr1Hour() {
+      
+      uStr1Hour_ = 0D;
+      onChanged();
+      return this;
+    }
+
+    private double uRov1Hour_ ;
+    /**
+     * <code>double u_rov1hour = 7;</code>
+     * @return The uRov1hour.
+     */
+    @java.lang.Override
+    public double getURov1Hour() {
+      return uRov1Hour_;
+    }
+    /**
+     * <code>double u_rov1hour = 7;</code>
+     * @param value The uRov1hour to set.
+     * @return This builder for chaining.
+     */
+    public Builder setURov1Hour(double value) {
+      
+      uRov1Hour_ = value;
+      onChanged();
+      return this;
+    }
+    /**
+     * <code>double u_rov1hour = 7;</code>
+     * @return This builder for chaining.
+     */
+    public Builder clearURov1Hour() {
+      
+      uRov1Hour_ = 0D;
+      onChanged();
+      return this;
+    }
+
+    private double uRos1Hour_ ;
+    /**
+     * <code>double u_ros1hour = 8;</code>
+     * @return The uRos1hour.
+     */
+    @java.lang.Override
+    public double getURos1Hour() {
+      return uRos1Hour_;
+    }
+    /**
+     * <code>double u_ros1hour = 8;</code>
+     * @param value The uRos1hour to set.
+     * @return This builder for chaining.
+     */
+    public Builder setURos1Hour(double value) {
+      
+      uRos1Hour_ = value;
+      onChanged();
+      return this;
+    }
+    /**
+     * <code>double u_ros1hour = 8;</code>
+     * @return This builder for chaining.
+     */
+    public Builder clearURos1Hour() {
+      
+      uRos1Hour_ = 0D;
+      onChanged();
+      return this;
+    }
+
+    private long uTodayExpCnt_ ;
+    /**
+     * <pre>
+     *今天
+     * </pre>
+     *
+     * <code>int64 u_today_exp_cnt = 9;</code>
+     * @return The uTodayExpCnt.
+     */
+    @java.lang.Override
+    public long getUTodayExpCnt() {
+      return uTodayExpCnt_;
+    }
+    /**
+     * <pre>
+     *今天
+     * </pre>
+     *
+     * <code>int64 u_today_exp_cnt = 9;</code>
+     * @param value The uTodayExpCnt to set.
+     * @return This builder for chaining.
+     */
+    public Builder setUTodayExpCnt(long value) {
+      
+      uTodayExpCnt_ = value;
+      onChanged();
+      return this;
+    }
+    /**
+     * <pre>
+     *今天
+     * </pre>
+     *
+     * <code>int64 u_today_exp_cnt = 9;</code>
+     * @return This builder for chaining.
+     */
+    public Builder clearUTodayExpCnt() {
+      
+      uTodayExpCnt_ = 0L;
+      onChanged();
+      return this;
+    }
+
+    private long uTodayClickCnt_ ;
+    /**
+     * <code>int64 u_today_click_cnt = 10;</code>
+     * @return The uTodayClickCnt.
+     */
+    @java.lang.Override
+    public long getUTodayClickCnt() {
+      return uTodayClickCnt_;
+    }
+    /**
+     * <code>int64 u_today_click_cnt = 10;</code>
+     * @param value The uTodayClickCnt to set.
+     * @return This builder for chaining.
+     */
+    public Builder setUTodayClickCnt(long value) {
+      
+      uTodayClickCnt_ = value;
+      onChanged();
+      return this;
+    }
+    /**
+     * <code>int64 u_today_click_cnt = 10;</code>
+     * @return This builder for chaining.
+     */
+    public Builder clearUTodayClickCnt() {
+      
+      uTodayClickCnt_ = 0L;
+      onChanged();
+      return this;
+    }
+
+    private long uTodayShareCnt_ ;
+    /**
+     * <code>int64 u_today_share_cnt = 11;</code>
+     * @return The uTodayShareCnt.
+     */
+    @java.lang.Override
+    public long getUTodayShareCnt() {
+      return uTodayShareCnt_;
+    }
+    /**
+     * <code>int64 u_today_share_cnt = 11;</code>
+     * @param value The uTodayShareCnt to set.
+     * @return This builder for chaining.
+     */
+    public Builder setUTodayShareCnt(long value) {
+      
+      uTodayShareCnt_ = value;
+      onChanged();
+      return this;
+    }
+    /**
+     * <code>int64 u_today_share_cnt = 11;</code>
+     * @return This builder for chaining.
+     */
+    public Builder clearUTodayShareCnt() {
+      
+      uTodayShareCnt_ = 0L;
+      onChanged();
+      return this;
+    }
+
+    private long uTodayReturnCnt_ ;
+    /**
+     * <code>int64 u_today_return_cnt = 12;</code>
+     * @return The uTodayReturnCnt.
+     */
+    @java.lang.Override
+    public long getUTodayReturnCnt() {
+      return uTodayReturnCnt_;
+    }
+    /**
+     * <code>int64 u_today_return_cnt = 12;</code>
+     * @param value The uTodayReturnCnt to set.
+     * @return This builder for chaining.
+     */
+    public Builder setUTodayReturnCnt(long value) {
+      
+      uTodayReturnCnt_ = value;
+      onChanged();
+      return this;
+    }
+    /**
+     * <code>int64 u_today_return_cnt = 12;</code>
+     * @return This builder for chaining.
+     */
+    public Builder clearUTodayReturnCnt() {
+      
+      uTodayReturnCnt_ = 0L;
+      onChanged();
+      return this;
+    }
+
+    private double uCtrToday_ ;
+    /**
+     * <code>double u_ctr_today = 13;</code>
+     * @return The uCtrToday.
+     */
+    @java.lang.Override
+    public double getUCtrToday() {
+      return uCtrToday_;
+    }
+    /**
+     * <code>double u_ctr_today = 13;</code>
+     * @param value The uCtrToday to set.
+     * @return This builder for chaining.
+     */
+    public Builder setUCtrToday(double value) {
+      
+      uCtrToday_ = value;
+      onChanged();
+      return this;
+    }
+    /**
+     * <code>double u_ctr_today = 13;</code>
+     * @return This builder for chaining.
+     */
+    public Builder clearUCtrToday() {
+      
+      uCtrToday_ = 0D;
+      onChanged();
+      return this;
+    }
+
+    private double uStrToday_ ;
+    /**
+     * <code>double u_str_today = 14;</code>
+     * @return The uStrToday.
+     */
+    @java.lang.Override
+    public double getUStrToday() {
+      return uStrToday_;
+    }
+    /**
+     * <code>double u_str_today = 14;</code>
+     * @param value The uStrToday to set.
+     * @return This builder for chaining.
+     */
+    public Builder setUStrToday(double value) {
+      
+      uStrToday_ = value;
+      onChanged();
+      return this;
+    }
+    /**
+     * <code>double u_str_today = 14;</code>
+     * @return This builder for chaining.
+     */
+    public Builder clearUStrToday() {
+      
+      uStrToday_ = 0D;
+      onChanged();
+      return this;
+    }
+
+    private double uRovToday_ ;
+    /**
+     * <code>double u_rov_today = 15;</code>
+     * @return The uRovToday.
+     */
+    @java.lang.Override
+    public double getURovToday() {
+      return uRovToday_;
+    }
+    /**
+     * <code>double u_rov_today = 15;</code>
+     * @param value The uRovToday to set.
+     * @return This builder for chaining.
+     */
+    public Builder setURovToday(double value) {
+      
+      uRovToday_ = value;
+      onChanged();
+      return this;
+    }
+    /**
+     * <code>double u_rov_today = 15;</code>
+     * @return This builder for chaining.
+     */
+    public Builder clearURovToday() {
+      
+      uRovToday_ = 0D;
+      onChanged();
+      return this;
+    }
+
+    private double uRosToday_ ;
+    /**
+     * <code>double u_ros_today = 16;</code>
+     * @return The uRosToday.
+     */
+    @java.lang.Override
+    public double getURosToday() {
+      return uRosToday_;
+    }
+    /**
+     * <code>double u_ros_today = 16;</code>
+     * @param value The uRosToday to set.
+     * @return This builder for chaining.
+     */
+    public Builder setURosToday(double value) {
+      
+      uRosToday_ = value;
+      onChanged();
+      return this;
+    }
+    /**
+     * <code>double u_ros_today = 16;</code>
+     * @return This builder for chaining.
+     */
+    public Builder clearURosToday() {
+      
+      uRosToday_ = 0D;
+      onChanged();
+      return this;
+    }
+
+    private long u1DayExpCnt_ ;
+    /**
+     * <pre>
+     *过去一天
+     * </pre>
+     *
+     * <code>int64 u1day_exp_cnt = 17;</code>
+     * @return The u1dayExpCnt.
+     */
+    @java.lang.Override
+    public long getU1DayExpCnt() {
+      return u1DayExpCnt_;
+    }
+    /**
+     * <pre>
+     *过去一天
+     * </pre>
+     *
+     * <code>int64 u1day_exp_cnt = 17;</code>
+     * @param value The u1dayExpCnt to set.
+     * @return This builder for chaining.
+     */
+    public Builder setU1DayExpCnt(long value) {
+      
+      u1DayExpCnt_ = value;
+      onChanged();
+      return this;
+    }
+    /**
+     * <pre>
+     *过去一天
+     * </pre>
+     *
+     * <code>int64 u1day_exp_cnt = 17;</code>
+     * @return This builder for chaining.
+     */
+    public Builder clearU1DayExpCnt() {
+      
+      u1DayExpCnt_ = 0L;
+      onChanged();
+      return this;
+    }
+
+    private long u1DayClickCnt_ ;
+    /**
+     * <code>int64 u1day_click_cnt = 18;</code>
+     * @return The u1dayClickCnt.
+     */
+    @java.lang.Override
+    public long getU1DayClickCnt() {
+      return u1DayClickCnt_;
+    }
+    /**
+     * <code>int64 u1day_click_cnt = 18;</code>
+     * @param value The u1dayClickCnt to set.
+     * @return This builder for chaining.
+     */
+    public Builder setU1DayClickCnt(long value) {
+      
+      u1DayClickCnt_ = value;
+      onChanged();
+      return this;
+    }
+    /**
+     * <code>int64 u1day_click_cnt = 18;</code>
+     * @return This builder for chaining.
+     */
+    public Builder clearU1DayClickCnt() {
+      
+      u1DayClickCnt_ = 0L;
+      onChanged();
+      return this;
+    }
+
+    private long u1DayShareCnt_ ;
+    /**
+     * <code>int64 u1day_share_cnt = 19;</code>
+     * @return The u1dayShareCnt.
+     */
+    @java.lang.Override
+    public long getU1DayShareCnt() {
+      return u1DayShareCnt_;
+    }
+    /**
+     * <code>int64 u1day_share_cnt = 19;</code>
+     * @param value The u1dayShareCnt to set.
+     * @return This builder for chaining.
+     */
+    public Builder setU1DayShareCnt(long value) {
+      
+      u1DayShareCnt_ = value;
+      onChanged();
+      return this;
+    }
+    /**
+     * <code>int64 u1day_share_cnt = 19;</code>
+     * @return This builder for chaining.
+     */
+    public Builder clearU1DayShareCnt() {
+      
+      u1DayShareCnt_ = 0L;
+      onChanged();
+      return this;
+    }
+
+    private long u1DayReturnCnt_ ;
+    /**
+     * <code>int64 u1day_return_cnt = 20;</code>
+     * @return The u1dayReturnCnt.
+     */
+    @java.lang.Override
+    public long getU1DayReturnCnt() {
+      return u1DayReturnCnt_;
+    }
+    /**
+     * <code>int64 u1day_return_cnt = 20;</code>
+     * @param value The u1dayReturnCnt to set.
+     * @return This builder for chaining.
+     */
+    public Builder setU1DayReturnCnt(long value) {
+      
+      u1DayReturnCnt_ = value;
+      onChanged();
+      return this;
+    }
+    /**
+     * <code>int64 u1day_return_cnt = 20;</code>
+     * @return This builder for chaining.
+     */
+    public Builder clearU1DayReturnCnt() {
+      
+      u1DayReturnCnt_ = 0L;
+      onChanged();
+      return this;
+    }
+
+    private double uCtr1Day_ ;
+    /**
+     * <code>double u_ctr1day = 21;</code>
+     * @return The uCtr1day.
+     */
+    @java.lang.Override
+    public double getUCtr1Day() {
+      return uCtr1Day_;
+    }
+    /**
+     * <code>double u_ctr1day = 21;</code>
+     * @param value The uCtr1day to set.
+     * @return This builder for chaining.
+     */
+    public Builder setUCtr1Day(double value) {
+      
+      uCtr1Day_ = value;
+      onChanged();
+      return this;
+    }
+    /**
+     * <code>double u_ctr1day = 21;</code>
+     * @return This builder for chaining.
+     */
+    public Builder clearUCtr1Day() {
+      
+      uCtr1Day_ = 0D;
+      onChanged();
+      return this;
+    }
+
+    private double uStr1Day_ ;
+    /**
+     * <code>double u_str1day = 22;</code>
+     * @return The uStr1day.
+     */
+    @java.lang.Override
+    public double getUStr1Day() {
+      return uStr1Day_;
+    }
+    /**
+     * <code>double u_str1day = 22;</code>
+     * @param value The uStr1day to set.
+     * @return This builder for chaining.
+     */
+    public Builder setUStr1Day(double value) {
+      
+      uStr1Day_ = value;
+      onChanged();
+      return this;
+    }
+    /**
+     * <code>double u_str1day = 22;</code>
+     * @return This builder for chaining.
+     */
+    public Builder clearUStr1Day() {
+      
+      uStr1Day_ = 0D;
+      onChanged();
+      return this;
+    }
+
+    private double uRov1Day_ ;
+    /**
+     * <code>double u_rov1day = 23;</code>
+     * @return The uRov1day.
+     */
+    @java.lang.Override
+    public double getURov1Day() {
+      return uRov1Day_;
+    }
+    /**
+     * <code>double u_rov1day = 23;</code>
+     * @param value The uRov1day to set.
+     * @return This builder for chaining.
+     */
+    public Builder setURov1Day(double value) {
+      
+      uRov1Day_ = value;
+      onChanged();
+      return this;
+    }
+    /**
+     * <code>double u_rov1day = 23;</code>
+     * @return This builder for chaining.
+     */
+    public Builder clearURov1Day() {
+      
+      uRov1Day_ = 0D;
+      onChanged();
+      return this;
+    }
+
+    private double uRos1Day_ ;
+    /**
+     * <code>double u_ros1day = 24;</code>
+     * @return The uRos1day.
+     */
+    @java.lang.Override
+    public double getURos1Day() {
+      return uRos1Day_;
+    }
+    /**
+     * <code>double u_ros1day = 24;</code>
+     * @param value The uRos1day to set.
+     * @return This builder for chaining.
+     */
+    public Builder setURos1Day(double value) {
+      
+      uRos1Day_ = value;
+      onChanged();
+      return this;
+    }
+    /**
+     * <code>double u_ros1day = 24;</code>
+     * @return This builder for chaining.
+     */
+    public Builder clearURos1Day() {
+      
+      uRos1Day_ = 0D;
+      onChanged();
+      return this;
+    }
+
+    private long u3DayExpCnt_ ;
+    /**
+     * <pre>
+     *过去三天
+     * </pre>
+     *
+     * <code>int64 u3day_exp_cnt = 25;</code>
+     * @return The u3dayExpCnt.
+     */
+    @java.lang.Override
+    public long getU3DayExpCnt() {
+      return u3DayExpCnt_;
+    }
+    /**
+     * <pre>
+     *过去三天
+     * </pre>
+     *
+     * <code>int64 u3day_exp_cnt = 25;</code>
+     * @param value The u3dayExpCnt to set.
+     * @return This builder for chaining.
+     */
+    public Builder setU3DayExpCnt(long value) {
+      
+      u3DayExpCnt_ = value;
+      onChanged();
+      return this;
+    }
+    /**
+     * <pre>
+     *过去三天
+     * </pre>
+     *
+     * <code>int64 u3day_exp_cnt = 25;</code>
+     * @return This builder for chaining.
+     */
+    public Builder clearU3DayExpCnt() {
+      
+      u3DayExpCnt_ = 0L;
+      onChanged();
+      return this;
+    }
+
+    private long u3DayClickCnt_ ;
+    /**
+     * <code>int64 u3day_click_cnt = 26;</code>
+     * @return The u3dayClickCnt.
+     */
+    @java.lang.Override
+    public long getU3DayClickCnt() {
+      return u3DayClickCnt_;
+    }
+    /**
+     * <code>int64 u3day_click_cnt = 26;</code>
+     * @param value The u3dayClickCnt to set.
+     * @return This builder for chaining.
+     */
+    public Builder setU3DayClickCnt(long value) {
+      
+      u3DayClickCnt_ = value;
+      onChanged();
+      return this;
+    }
+    /**
+     * <code>int64 u3day_click_cnt = 26;</code>
+     * @return This builder for chaining.
+     */
+    public Builder clearU3DayClickCnt() {
+      
+      u3DayClickCnt_ = 0L;
+      onChanged();
+      return this;
+    }
+
+    private long u3DayShareCnt_ ;
+    /**
+     * <code>int64 u3day_share_cnt = 27;</code>
+     * @return The u3dayShareCnt.
+     */
+    @java.lang.Override
+    public long getU3DayShareCnt() {
+      return u3DayShareCnt_;
+    }
+    /**
+     * <code>int64 u3day_share_cnt = 27;</code>
+     * @param value The u3dayShareCnt to set.
+     * @return This builder for chaining.
+     */
+    public Builder setU3DayShareCnt(long value) {
+      
+      u3DayShareCnt_ = value;
+      onChanged();
+      return this;
+    }
+    /**
+     * <code>int64 u3day_share_cnt = 27;</code>
+     * @return This builder for chaining.
+     */
+    public Builder clearU3DayShareCnt() {
+      
+      u3DayShareCnt_ = 0L;
+      onChanged();
+      return this;
+    }
+
+    private long u3DayReturnCnt_ ;
+    /**
+     * <code>int64 u3day_return_cnt = 28;</code>
+     * @return The u3dayReturnCnt.
+     */
+    @java.lang.Override
+    public long getU3DayReturnCnt() {
+      return u3DayReturnCnt_;
+    }
+    /**
+     * <code>int64 u3day_return_cnt = 28;</code>
+     * @param value The u3dayReturnCnt to set.
+     * @return This builder for chaining.
+     */
+    public Builder setU3DayReturnCnt(long value) {
+      
+      u3DayReturnCnt_ = value;
+      onChanged();
+      return this;
+    }
+    /**
+     * <code>int64 u3day_return_cnt = 28;</code>
+     * @return This builder for chaining.
+     */
+    public Builder clearU3DayReturnCnt() {
+      
+      u3DayReturnCnt_ = 0L;
+      onChanged();
+      return this;
+    }
+
+    private double uCtr3Day_ ;
+    /**
+     * <code>double u_ctr3day = 29;</code>
+     * @return The uCtr3day.
+     */
+    @java.lang.Override
+    public double getUCtr3Day() {
+      return uCtr3Day_;
+    }
+    /**
+     * <code>double u_ctr3day = 29;</code>
+     * @param value The uCtr3day to set.
+     * @return This builder for chaining.
+     */
+    public Builder setUCtr3Day(double value) {
+      
+      uCtr3Day_ = value;
+      onChanged();
+      return this;
+    }
+    /**
+     * <code>double u_ctr3day = 29;</code>
+     * @return This builder for chaining.
+     */
+    public Builder clearUCtr3Day() {
+      
+      uCtr3Day_ = 0D;
+      onChanged();
+      return this;
+    }
+
+    private double uStr3Day_ ;
+    /**
+     * <code>double u_str3day = 30;</code>
+     * @return The uStr3day.
+     */
+    @java.lang.Override
+    public double getUStr3Day() {
+      return uStr3Day_;
+    }
+    /**
+     * <code>double u_str3day = 30;</code>
+     * @param value The uStr3day to set.
+     * @return This builder for chaining.
+     */
+    public Builder setUStr3Day(double value) {
+      
+      uStr3Day_ = value;
+      onChanged();
+      return this;
+    }
+    /**
+     * <code>double u_str3day = 30;</code>
+     * @return This builder for chaining.
+     */
+    public Builder clearUStr3Day() {
+      
+      uStr3Day_ = 0D;
+      onChanged();
+      return this;
+    }
+
+    private double uRov3Day_ ;
+    /**
+     * <code>double u_rov3day = 31;</code>
+     * @return The uRov3day.
+     */
+    @java.lang.Override
+    public double getURov3Day() {
+      return uRov3Day_;
+    }
+    /**
+     * <code>double u_rov3day = 31;</code>
+     * @param value The uRov3day to set.
+     * @return This builder for chaining.
+     */
+    public Builder setURov3Day(double value) {
+      
+      uRov3Day_ = value;
+      onChanged();
+      return this;
+    }
+    /**
+     * <code>double u_rov3day = 31;</code>
+     * @return This builder for chaining.
+     */
+    public Builder clearURov3Day() {
+      
+      uRov3Day_ = 0D;
+      onChanged();
+      return this;
+    }
+
+    private double uRos3Day_ ;
+    /**
+     * <code>double u_ros3day = 32;</code>
+     * @return The uRos3day.
+     */
+    @java.lang.Override
+    public double getURos3Day() {
+      return uRos3Day_;
+    }
+    /**
+     * <code>double u_ros3day = 32;</code>
+     * @param value The uRos3day to set.
+     * @return This builder for chaining.
+     */
+    public Builder setURos3Day(double value) {
+      
+      uRos3Day_ = value;
+      onChanged();
+      return this;
+    }
+    /**
+     * <code>double u_ros3day = 32;</code>
+     * @return This builder for chaining.
+     */
+    public Builder clearURos3Day() {
+      
+      uRos3Day_ = 0D;
+      onChanged();
+      return this;
+    }
+
+    private java.lang.Object mid_ = "";
+    /**
+     * <code>string mid = 33;</code>
+     * @return The mid.
+     */
+    public java.lang.String getMid() {
+      java.lang.Object ref = mid_;
+      if (!(ref instanceof java.lang.String)) {
+        com.google.protobuf.ByteString bs =
+            (com.google.protobuf.ByteString) ref;
+        java.lang.String s = bs.toStringUtf8();
+        mid_ = s;
+        return s;
+      } else {
+        return (java.lang.String) ref;
+      }
+    }
+    /**
+     * <code>string mid = 33;</code>
+     * @return The bytes for mid.
+     */
+    public com.google.protobuf.ByteString
+        getMidBytes() {
+      java.lang.Object ref = mid_;
+      if (ref instanceof String) {
+        com.google.protobuf.ByteString b = 
+            com.google.protobuf.ByteString.copyFromUtf8(
+                (java.lang.String) ref);
+        mid_ = b;
+        return b;
+      } else {
+        return (com.google.protobuf.ByteString) ref;
+      }
+    }
+    /**
+     * <code>string mid = 33;</code>
+     * @param value The mid to set.
+     * @return This builder for chaining.
+     */
+    public Builder setMid(
+        java.lang.String value) {
+      if (value == null) {
+    throw new NullPointerException();
+  }
+  
+      mid_ = value;
+      onChanged();
+      return this;
+    }
+    /**
+     * <code>string mid = 33;</code>
+     * @return This builder for chaining.
+     */
+    public Builder clearMid() {
+      
+      mid_ = getDefaultInstance().getMid();
+      onChanged();
+      return this;
+    }
+    /**
+     * <code>string mid = 33;</code>
+     * @param value The bytes for mid to set.
+     * @return This builder for chaining.
+     */
+    public Builder setMidBytes(
+        com.google.protobuf.ByteString value) {
+      if (value == null) {
+    throw new NullPointerException();
+  }
+  checkByteStringIsUtf8(value);
+      
+      mid_ = value;
+      onChanged();
+      return this;
+    }
+
+    private java.lang.Object machineinfoBrand_ = "";
+    /**
+     * <code>string machineinfo_brand = 34;</code>
+     * @return The machineinfoBrand.
+     */
+    public java.lang.String getMachineinfoBrand() {
+      java.lang.Object ref = machineinfoBrand_;
+      if (!(ref instanceof java.lang.String)) {
+        com.google.protobuf.ByteString bs =
+            (com.google.protobuf.ByteString) ref;
+        java.lang.String s = bs.toStringUtf8();
+        machineinfoBrand_ = s;
+        return s;
+      } else {
+        return (java.lang.String) ref;
+      }
+    }
+    /**
+     * <code>string machineinfo_brand = 34;</code>
+     * @return The bytes for machineinfoBrand.
+     */
+    public com.google.protobuf.ByteString
+        getMachineinfoBrandBytes() {
+      java.lang.Object ref = machineinfoBrand_;
+      if (ref instanceof String) {
+        com.google.protobuf.ByteString b = 
+            com.google.protobuf.ByteString.copyFromUtf8(
+                (java.lang.String) ref);
+        machineinfoBrand_ = b;
+        return b;
+      } else {
+        return (com.google.protobuf.ByteString) ref;
+      }
+    }
+    /**
+     * <code>string machineinfo_brand = 34;</code>
+     * @param value The machineinfoBrand to set.
+     * @return This builder for chaining.
+     */
+    public Builder setMachineinfoBrand(
+        java.lang.String value) {
+      if (value == null) {
+    throw new NullPointerException();
+  }
+  
+      machineinfoBrand_ = value;
+      onChanged();
+      return this;
+    }
+    /**
+     * <code>string machineinfo_brand = 34;</code>
+     * @return This builder for chaining.
+     */
+    public Builder clearMachineinfoBrand() {
+      
+      machineinfoBrand_ = getDefaultInstance().getMachineinfoBrand();
+      onChanged();
+      return this;
+    }
+    /**
+     * <code>string machineinfo_brand = 34;</code>
+     * @param value The bytes for machineinfoBrand to set.
+     * @return This builder for chaining.
+     */
+    public Builder setMachineinfoBrandBytes(
+        com.google.protobuf.ByteString value) {
+      if (value == null) {
+    throw new NullPointerException();
+  }
+  checkByteStringIsUtf8(value);
+      
+      machineinfoBrand_ = value;
+      onChanged();
+      return this;
+    }
+
+    private java.lang.Object machineinfoModel_ = "";
+    /**
+     * <code>string machineinfo_model = 35;</code>
+     * @return The machineinfoModel.
+     */
+    public java.lang.String getMachineinfoModel() {
+      java.lang.Object ref = machineinfoModel_;
+      if (!(ref instanceof java.lang.String)) {
+        com.google.protobuf.ByteString bs =
+            (com.google.protobuf.ByteString) ref;
+        java.lang.String s = bs.toStringUtf8();
+        machineinfoModel_ = s;
+        return s;
+      } else {
+        return (java.lang.String) ref;
+      }
+    }
+    /**
+     * <code>string machineinfo_model = 35;</code>
+     * @return The bytes for machineinfoModel.
+     */
+    public com.google.protobuf.ByteString
+        getMachineinfoModelBytes() {
+      java.lang.Object ref = machineinfoModel_;
+      if (ref instanceof String) {
+        com.google.protobuf.ByteString b = 
+            com.google.protobuf.ByteString.copyFromUtf8(
+                (java.lang.String) ref);
+        machineinfoModel_ = b;
+        return b;
+      } else {
+        return (com.google.protobuf.ByteString) ref;
+      }
+    }
+    /**
+     * <code>string machineinfo_model = 35;</code>
+     * @param value The machineinfoModel to set.
+     * @return This builder for chaining.
+     */
+    public Builder setMachineinfoModel(
+        java.lang.String value) {
+      if (value == null) {
+    throw new NullPointerException();
+  }
+  
+      machineinfoModel_ = value;
+      onChanged();
+      return this;
+    }
+    /**
+     * <code>string machineinfo_model = 35;</code>
+     * @return This builder for chaining.
+     */
+    public Builder clearMachineinfoModel() {
+      
+      machineinfoModel_ = getDefaultInstance().getMachineinfoModel();
+      onChanged();
+      return this;
+    }
+    /**
+     * <code>string machineinfo_model = 35;</code>
+     * @param value The bytes for machineinfoModel to set.
+     * @return This builder for chaining.
+     */
+    public Builder setMachineinfoModelBytes(
+        com.google.protobuf.ByteString value) {
+      if (value == null) {
+    throw new NullPointerException();
+  }
+  checkByteStringIsUtf8(value);
+      
+      machineinfoModel_ = value;
+      onChanged();
+      return this;
+    }
+
+    private java.lang.Object machineinfoSystem_ = "";
+    /**
+     * <code>string machineinfo_system = 36;</code>
+     * @return The machineinfoSystem.
+     */
+    public java.lang.String getMachineinfoSystem() {
+      java.lang.Object ref = machineinfoSystem_;
+      if (!(ref instanceof java.lang.String)) {
+        com.google.protobuf.ByteString bs =
+            (com.google.protobuf.ByteString) ref;
+        java.lang.String s = bs.toStringUtf8();
+        machineinfoSystem_ = s;
+        return s;
+      } else {
+        return (java.lang.String) ref;
+      }
+    }
+    /**
+     * <code>string machineinfo_system = 36;</code>
+     * @return The bytes for machineinfoSystem.
+     */
+    public com.google.protobuf.ByteString
+        getMachineinfoSystemBytes() {
+      java.lang.Object ref = machineinfoSystem_;
+      if (ref instanceof String) {
+        com.google.protobuf.ByteString b = 
+            com.google.protobuf.ByteString.copyFromUtf8(
+                (java.lang.String) ref);
+        machineinfoSystem_ = b;
+        return b;
+      } else {
+        return (com.google.protobuf.ByteString) ref;
+      }
+    }
+    /**
+     * <code>string machineinfo_system = 36;</code>
+     * @param value The machineinfoSystem to set.
+     * @return This builder for chaining.
+     */
+    public Builder setMachineinfoSystem(
+        java.lang.String value) {
+      if (value == null) {
+    throw new NullPointerException();
+  }
+  
+      machineinfoSystem_ = value;
+      onChanged();
+      return this;
+    }
+    /**
+     * <code>string machineinfo_system = 36;</code>
+     * @return This builder for chaining.
+     */
+    public Builder clearMachineinfoSystem() {
+      
+      machineinfoSystem_ = getDefaultInstance().getMachineinfoSystem();
+      onChanged();
+      return this;
+    }
+    /**
+     * <code>string machineinfo_system = 36;</code>
+     * @param value The bytes for machineinfoSystem to set.
+     * @return This builder for chaining.
+     */
+    public Builder setMachineinfoSystemBytes(
+        com.google.protobuf.ByteString value) {
+      if (value == null) {
+    throw new NullPointerException();
+  }
+  checkByteStringIsUtf8(value);
+      
+      machineinfoSystem_ = value;
+      onChanged();
+      return this;
+    }
+
+    private java.lang.Object machineinfoPlatform_ = "";
+    /**
+     * <code>string machineinfo_platform = 37;</code>
+     * @return The machineinfoPlatform.
+     */
+    public java.lang.String getMachineinfoPlatform() {
+      java.lang.Object ref = machineinfoPlatform_;
+      if (!(ref instanceof java.lang.String)) {
+        com.google.protobuf.ByteString bs =
+            (com.google.protobuf.ByteString) ref;
+        java.lang.String s = bs.toStringUtf8();
+        machineinfoPlatform_ = s;
+        return s;
+      } else {
+        return (java.lang.String) ref;
+      }
+    }
+    /**
+     * <code>string machineinfo_platform = 37;</code>
+     * @return The bytes for machineinfoPlatform.
+     */
+    public com.google.protobuf.ByteString
+        getMachineinfoPlatformBytes() {
+      java.lang.Object ref = machineinfoPlatform_;
+      if (ref instanceof String) {
+        com.google.protobuf.ByteString b = 
+            com.google.protobuf.ByteString.copyFromUtf8(
+                (java.lang.String) ref);
+        machineinfoPlatform_ = b;
+        return b;
+      } else {
+        return (com.google.protobuf.ByteString) ref;
+      }
+    }
+    /**
+     * <code>string machineinfo_platform = 37;</code>
+     * @param value The machineinfoPlatform to set.
+     * @return This builder for chaining.
+     */
+    public Builder setMachineinfoPlatform(
+        java.lang.String value) {
+      if (value == null) {
+    throw new NullPointerException();
+  }
+  
+      machineinfoPlatform_ = value;
+      onChanged();
+      return this;
+    }
+    /**
+     * <code>string machineinfo_platform = 37;</code>
+     * @return This builder for chaining.
+     */
+    public Builder clearMachineinfoPlatform() {
+      
+      machineinfoPlatform_ = getDefaultInstance().getMachineinfoPlatform();
+      onChanged();
+      return this;
+    }
+    /**
+     * <code>string machineinfo_platform = 37;</code>
+     * @param value The bytes for machineinfoPlatform to set.
+     * @return This builder for chaining.
+     */
+    public Builder setMachineinfoPlatformBytes(
+        com.google.protobuf.ByteString value) {
+      if (value == null) {
+    throw new NullPointerException();
+  }
+  checkByteStringIsUtf8(value);
+      
+      machineinfoPlatform_ = value;
+      onChanged();
+      return this;
+    }
+
+    private java.lang.Object gender_ = "";
+    /**
+     * <code>string gender = 38;</code>
+     * @return The gender.
+     */
+    public java.lang.String getGender() {
+      java.lang.Object ref = gender_;
+      if (!(ref instanceof java.lang.String)) {
+        com.google.protobuf.ByteString bs =
+            (com.google.protobuf.ByteString) ref;
+        java.lang.String s = bs.toStringUtf8();
+        gender_ = s;
+        return s;
+      } else {
+        return (java.lang.String) ref;
+      }
+    }
+    /**
+     * <code>string gender = 38;</code>
+     * @return The bytes for gender.
+     */
+    public com.google.protobuf.ByteString
+        getGenderBytes() {
+      java.lang.Object ref = gender_;
+      if (ref instanceof String) {
+        com.google.protobuf.ByteString b = 
+            com.google.protobuf.ByteString.copyFromUtf8(
+                (java.lang.String) ref);
+        gender_ = b;
+        return b;
+      } else {
+        return (com.google.protobuf.ByteString) ref;
+      }
+    }
+    /**
+     * <code>string gender = 38;</code>
+     * @param value The gender to set.
+     * @return This builder for chaining.
+     */
+    public Builder setGender(
+        java.lang.String value) {
+      if (value == null) {
+    throw new NullPointerException();
+  }
+  
+      gender_ = value;
+      onChanged();
+      return this;
+    }
+    /**
+     * <code>string gender = 38;</code>
+     * @return This builder for chaining.
+     */
+    public Builder clearGender() {
+      
+      gender_ = getDefaultInstance().getGender();
+      onChanged();
+      return this;
+    }
+    /**
+     * <code>string gender = 38;</code>
+     * @param value The bytes for gender to set.
+     * @return This builder for chaining.
+     */
+    public Builder setGenderBytes(
+        com.google.protobuf.ByteString value) {
+      if (value == null) {
+    throw new NullPointerException();
+  }
+  checkByteStringIsUtf8(value);
+      
+      gender_ = value;
+      onChanged();
+      return this;
+    }
+
+    private java.lang.Object country_ = "";
+    /**
+     * <code>string country = 39;</code>
+     * @return The country.
+     */
+    public java.lang.String getCountry() {
+      java.lang.Object ref = country_;
+      if (!(ref instanceof java.lang.String)) {
+        com.google.protobuf.ByteString bs =
+            (com.google.protobuf.ByteString) ref;
+        java.lang.String s = bs.toStringUtf8();
+        country_ = s;
+        return s;
+      } else {
+        return (java.lang.String) ref;
+      }
+    }
+    /**
+     * <code>string country = 39;</code>
+     * @return The bytes for country.
+     */
+    public com.google.protobuf.ByteString
+        getCountryBytes() {
+      java.lang.Object ref = country_;
+      if (ref instanceof String) {
+        com.google.protobuf.ByteString b = 
+            com.google.protobuf.ByteString.copyFromUtf8(
+                (java.lang.String) ref);
+        country_ = b;
+        return b;
+      } else {
+        return (com.google.protobuf.ByteString) ref;
+      }
+    }
+    /**
+     * <code>string country = 39;</code>
+     * @param value The country to set.
+     * @return This builder for chaining.
+     */
+    public Builder setCountry(
+        java.lang.String value) {
+      if (value == null) {
+    throw new NullPointerException();
+  }
+  
+      country_ = value;
+      onChanged();
+      return this;
+    }
+    /**
+     * <code>string country = 39;</code>
+     * @return This builder for chaining.
+     */
+    public Builder clearCountry() {
+      
+      country_ = getDefaultInstance().getCountry();
+      onChanged();
+      return this;
+    }
+    /**
+     * <code>string country = 39;</code>
+     * @param value The bytes for country to set.
+     * @return This builder for chaining.
+     */
+    public Builder setCountryBytes(
+        com.google.protobuf.ByteString value) {
+      if (value == null) {
+    throw new NullPointerException();
+  }
+  checkByteStringIsUtf8(value);
+      
+      country_ = value;
+      onChanged();
+      return this;
+    }
+
+    private java.lang.Object province_ = "";
+    /**
+     * <code>string province = 40;</code>
+     * @return The province.
+     */
+    public java.lang.String getProvince() {
+      java.lang.Object ref = province_;
+      if (!(ref instanceof java.lang.String)) {
+        com.google.protobuf.ByteString bs =
+            (com.google.protobuf.ByteString) ref;
+        java.lang.String s = bs.toStringUtf8();
+        province_ = s;
+        return s;
+      } else {
+        return (java.lang.String) ref;
+      }
+    }
+    /**
+     * <code>string province = 40;</code>
+     * @return The bytes for province.
+     */
+    public com.google.protobuf.ByteString
+        getProvinceBytes() {
+      java.lang.Object ref = province_;
+      if (ref instanceof String) {
+        com.google.protobuf.ByteString b = 
+            com.google.protobuf.ByteString.copyFromUtf8(
+                (java.lang.String) ref);
+        province_ = b;
+        return b;
+      } else {
+        return (com.google.protobuf.ByteString) ref;
+      }
+    }
+    /**
+     * <code>string province = 40;</code>
+     * @param value The province to set.
+     * @return This builder for chaining.
+     */
+    public Builder setProvince(
+        java.lang.String value) {
+      if (value == null) {
+    throw new NullPointerException();
+  }
+  
+      province_ = value;
+      onChanged();
+      return this;
+    }
+    /**
+     * <code>string province = 40;</code>
+     * @return This builder for chaining.
+     */
+    public Builder clearProvince() {
+      
+      province_ = getDefaultInstance().getProvince();
+      onChanged();
+      return this;
+    }
+    /**
+     * <code>string province = 40;</code>
+     * @param value The bytes for province to set.
+     * @return This builder for chaining.
+     */
+    public Builder setProvinceBytes(
+        com.google.protobuf.ByteString value) {
+      if (value == null) {
+    throw new NullPointerException();
+  }
+  checkByteStringIsUtf8(value);
+      
+      province_ = value;
+      onChanged();
+      return this;
+    }
+
+    private java.lang.Object city_ = "";
+    /**
+     * <code>string city = 41;</code>
+     * @return The city.
+     */
+    public java.lang.String getCity() {
+      java.lang.Object ref = city_;
+      if (!(ref instanceof java.lang.String)) {
+        com.google.protobuf.ByteString bs =
+            (com.google.protobuf.ByteString) ref;
+        java.lang.String s = bs.toStringUtf8();
+        city_ = s;
+        return s;
+      } else {
+        return (java.lang.String) ref;
+      }
+    }
+    /**
+     * <code>string city = 41;</code>
+     * @return The bytes for city.
+     */
+    public com.google.protobuf.ByteString
+        getCityBytes() {
+      java.lang.Object ref = city_;
+      if (ref instanceof String) {
+        com.google.protobuf.ByteString b = 
+            com.google.protobuf.ByteString.copyFromUtf8(
+                (java.lang.String) ref);
+        city_ = b;
+        return b;
+      } else {
+        return (com.google.protobuf.ByteString) ref;
+      }
+    }
+    /**
+     * <code>string city = 41;</code>
+     * @param value The city to set.
+     * @return This builder for chaining.
+     */
+    public Builder setCity(
+        java.lang.String value) {
+      if (value == null) {
+    throw new NullPointerException();
+  }
+  
+      city_ = value;
+      onChanged();
+      return this;
+    }
+    /**
+     * <code>string city = 41;</code>
+     * @return This builder for chaining.
+     */
+    public Builder clearCity() {
+      
+      city_ = getDefaultInstance().getCity();
+      onChanged();
+      return this;
+    }
+    /**
+     * <code>string city = 41;</code>
+     * @param value The bytes for city to set.
+     * @return This builder for chaining.
+     */
+    public Builder setCityBytes(
+        com.google.protobuf.ByteString value) {
+      if (value == null) {
+    throw new NullPointerException();
+  }
+  checkByteStringIsUtf8(value);
+      
+      city_ = value;
+      onChanged();
+      return this;
+    }
+    @java.lang.Override
+    public final Builder setUnknownFields(
+        final com.google.protobuf.UnknownFieldSet unknownFields) {
+      return super.setUnknownFields(unknownFields);
+    }
+
+    @java.lang.Override
+    public final Builder mergeUnknownFields(
+        final com.google.protobuf.UnknownFieldSet unknownFields) {
+      return super.mergeUnknownFields(unknownFields);
+    }
+
+
+    // @@protoc_insertion_point(builder_scope:GetUserFeatureInfo)
+  }
+
+  // @@protoc_insertion_point(class_scope:GetUserFeatureInfo)
+  private static final com.tzld.piaoquan.recommend.feature.model.feature.GetUserFeatureInfo DEFAULT_INSTANCE;
+  static {
+    DEFAULT_INSTANCE = new com.tzld.piaoquan.recommend.feature.model.feature.GetUserFeatureInfo();
+  }
+
+  public static com.tzld.piaoquan.recommend.feature.model.feature.GetUserFeatureInfo getDefaultInstance() {
+    return DEFAULT_INSTANCE;
+  }
+
+  private static final com.google.protobuf.Parser<GetUserFeatureInfo>
+      PARSER = new com.google.protobuf.AbstractParser<GetUserFeatureInfo>() {
+    @java.lang.Override
+    public GetUserFeatureInfo parsePartialFrom(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return new GetUserFeatureInfo(input, extensionRegistry);
+    }
+  };
+
+  public static com.google.protobuf.Parser<GetUserFeatureInfo> parser() {
+    return PARSER;
+  }
+
+  @java.lang.Override
+  public com.google.protobuf.Parser<GetUserFeatureInfo> getParserForType() {
+    return PARSER;
+  }
+
+  @java.lang.Override
+  public com.tzld.piaoquan.recommend.feature.model.feature.GetUserFeatureInfo getDefaultInstanceForType() {
+    return DEFAULT_INSTANCE;
+  }
+
+}
+

+ 325 - 0
recommend-feature-client/src/main/java/com/tzld/piaoquan/recommend/feature/model/feature/GetUserFeatureInfoOrBuilder.java

@@ -0,0 +1,325 @@
+// Generated by the protocol buffer compiler.  DO NOT EDIT!
+// source: com/tzld/piaoquan/recommend/feature/feature.proto
+
+package com.tzld.piaoquan.recommend.feature.model.feature;
+
+public interface GetUserFeatureInfoOrBuilder extends
+    // @@protoc_insertion_point(interface_extends:GetUserFeatureInfo)
+    com.google.protobuf.MessageOrBuilder {
+
+  /**
+   * <pre>
+   *过去一小时
+   * </pre>
+   *
+   * <code>int64 u1hour_exp_cnt = 1;</code>
+   * @return The u1hourExpCnt.
+   */
+  long getU1HourExpCnt();
+
+  /**
+   * <code>int64 u1hour_click_cnt = 2;</code>
+   * @return The u1hourClickCnt.
+   */
+  long getU1HourClickCnt();
+
+  /**
+   * <code>int64 u1hour_share_cnt = 3;</code>
+   * @return The u1hourShareCnt.
+   */
+  long getU1HourShareCnt();
+
+  /**
+   * <code>int64 u1hour_return_cnt = 4;</code>
+   * @return The u1hourReturnCnt.
+   */
+  long getU1HourReturnCnt();
+
+  /**
+   * <code>double u_ctr1hour = 5;</code>
+   * @return The uCtr1hour.
+   */
+  double getUCtr1Hour();
+
+  /**
+   * <code>double u_str1hour = 6;</code>
+   * @return The uStr1hour.
+   */
+  double getUStr1Hour();
+
+  /**
+   * <code>double u_rov1hour = 7;</code>
+   * @return The uRov1hour.
+   */
+  double getURov1Hour();
+
+  /**
+   * <code>double u_ros1hour = 8;</code>
+   * @return The uRos1hour.
+   */
+  double getURos1Hour();
+
+  /**
+   * <pre>
+   *今天
+   * </pre>
+   *
+   * <code>int64 u_today_exp_cnt = 9;</code>
+   * @return The uTodayExpCnt.
+   */
+  long getUTodayExpCnt();
+
+  /**
+   * <code>int64 u_today_click_cnt = 10;</code>
+   * @return The uTodayClickCnt.
+   */
+  long getUTodayClickCnt();
+
+  /**
+   * <code>int64 u_today_share_cnt = 11;</code>
+   * @return The uTodayShareCnt.
+   */
+  long getUTodayShareCnt();
+
+  /**
+   * <code>int64 u_today_return_cnt = 12;</code>
+   * @return The uTodayReturnCnt.
+   */
+  long getUTodayReturnCnt();
+
+  /**
+   * <code>double u_ctr_today = 13;</code>
+   * @return The uCtrToday.
+   */
+  double getUCtrToday();
+
+  /**
+   * <code>double u_str_today = 14;</code>
+   * @return The uStrToday.
+   */
+  double getUStrToday();
+
+  /**
+   * <code>double u_rov_today = 15;</code>
+   * @return The uRovToday.
+   */
+  double getURovToday();
+
+  /**
+   * <code>double u_ros_today = 16;</code>
+   * @return The uRosToday.
+   */
+  double getURosToday();
+
+  /**
+   * <pre>
+   *过去一天
+   * </pre>
+   *
+   * <code>int64 u1day_exp_cnt = 17;</code>
+   * @return The u1dayExpCnt.
+   */
+  long getU1DayExpCnt();
+
+  /**
+   * <code>int64 u1day_click_cnt = 18;</code>
+   * @return The u1dayClickCnt.
+   */
+  long getU1DayClickCnt();
+
+  /**
+   * <code>int64 u1day_share_cnt = 19;</code>
+   * @return The u1dayShareCnt.
+   */
+  long getU1DayShareCnt();
+
+  /**
+   * <code>int64 u1day_return_cnt = 20;</code>
+   * @return The u1dayReturnCnt.
+   */
+  long getU1DayReturnCnt();
+
+  /**
+   * <code>double u_ctr1day = 21;</code>
+   * @return The uCtr1day.
+   */
+  double getUCtr1Day();
+
+  /**
+   * <code>double u_str1day = 22;</code>
+   * @return The uStr1day.
+   */
+  double getUStr1Day();
+
+  /**
+   * <code>double u_rov1day = 23;</code>
+   * @return The uRov1day.
+   */
+  double getURov1Day();
+
+  /**
+   * <code>double u_ros1day = 24;</code>
+   * @return The uRos1day.
+   */
+  double getURos1Day();
+
+  /**
+   * <pre>
+   *过去三天
+   * </pre>
+   *
+   * <code>int64 u3day_exp_cnt = 25;</code>
+   * @return The u3dayExpCnt.
+   */
+  long getU3DayExpCnt();
+
+  /**
+   * <code>int64 u3day_click_cnt = 26;</code>
+   * @return The u3dayClickCnt.
+   */
+  long getU3DayClickCnt();
+
+  /**
+   * <code>int64 u3day_share_cnt = 27;</code>
+   * @return The u3dayShareCnt.
+   */
+  long getU3DayShareCnt();
+
+  /**
+   * <code>int64 u3day_return_cnt = 28;</code>
+   * @return The u3dayReturnCnt.
+   */
+  long getU3DayReturnCnt();
+
+  /**
+   * <code>double u_ctr3day = 29;</code>
+   * @return The uCtr3day.
+   */
+  double getUCtr3Day();
+
+  /**
+   * <code>double u_str3day = 30;</code>
+   * @return The uStr3day.
+   */
+  double getUStr3Day();
+
+  /**
+   * <code>double u_rov3day = 31;</code>
+   * @return The uRov3day.
+   */
+  double getURov3Day();
+
+  /**
+   * <code>double u_ros3day = 32;</code>
+   * @return The uRos3day.
+   */
+  double getURos3Day();
+
+  /**
+   * <code>string mid = 33;</code>
+   * @return The mid.
+   */
+  java.lang.String getMid();
+  /**
+   * <code>string mid = 33;</code>
+   * @return The bytes for mid.
+   */
+  com.google.protobuf.ByteString
+      getMidBytes();
+
+  /**
+   * <code>string machineinfo_brand = 34;</code>
+   * @return The machineinfoBrand.
+   */
+  java.lang.String getMachineinfoBrand();
+  /**
+   * <code>string machineinfo_brand = 34;</code>
+   * @return The bytes for machineinfoBrand.
+   */
+  com.google.protobuf.ByteString
+      getMachineinfoBrandBytes();
+
+  /**
+   * <code>string machineinfo_model = 35;</code>
+   * @return The machineinfoModel.
+   */
+  java.lang.String getMachineinfoModel();
+  /**
+   * <code>string machineinfo_model = 35;</code>
+   * @return The bytes for machineinfoModel.
+   */
+  com.google.protobuf.ByteString
+      getMachineinfoModelBytes();
+
+  /**
+   * <code>string machineinfo_system = 36;</code>
+   * @return The machineinfoSystem.
+   */
+  java.lang.String getMachineinfoSystem();
+  /**
+   * <code>string machineinfo_system = 36;</code>
+   * @return The bytes for machineinfoSystem.
+   */
+  com.google.protobuf.ByteString
+      getMachineinfoSystemBytes();
+
+  /**
+   * <code>string machineinfo_platform = 37;</code>
+   * @return The machineinfoPlatform.
+   */
+  java.lang.String getMachineinfoPlatform();
+  /**
+   * <code>string machineinfo_platform = 37;</code>
+   * @return The bytes for machineinfoPlatform.
+   */
+  com.google.protobuf.ByteString
+      getMachineinfoPlatformBytes();
+
+  /**
+   * <code>string gender = 38;</code>
+   * @return The gender.
+   */
+  java.lang.String getGender();
+  /**
+   * <code>string gender = 38;</code>
+   * @return The bytes for gender.
+   */
+  com.google.protobuf.ByteString
+      getGenderBytes();
+
+  /**
+   * <code>string country = 39;</code>
+   * @return The country.
+   */
+  java.lang.String getCountry();
+  /**
+   * <code>string country = 39;</code>
+   * @return The bytes for country.
+   */
+  com.google.protobuf.ByteString
+      getCountryBytes();
+
+  /**
+   * <code>string province = 40;</code>
+   * @return The province.
+   */
+  java.lang.String getProvince();
+  /**
+   * <code>string province = 40;</code>
+   * @return The bytes for province.
+   */
+  com.google.protobuf.ByteString
+      getProvinceBytes();
+
+  /**
+   * <code>string city = 41;</code>
+   * @return The city.
+   */
+  java.lang.String getCity();
+  /**
+   * <code>string city = 41;</code>
+   * @return The bytes for city.
+   */
+  com.google.protobuf.ByteString
+      getCityBytes();
+}

+ 582 - 3445
recommend-feature-client/src/main/java/com/tzld/piaoquan/recommend/feature/model/feature/GetUserFeatureInfoResponse.java

@@ -16,15 +16,7 @@ private static final long serialVersionUID = 0L;
     super(builder);
   }
   private GetUserFeatureInfoResponse() {
-    mid_ = "";
-    machineinfoBrand_ = "";
-    machineinfoModel_ = "";
-    machineinfoSystem_ = "";
-    machineinfoPlatform_ = "";
-    gender_ = "";
-    country_ = "";
-    province_ = "";
-    city_ = "";
+    userFeatureInfo_ = java.util.Collections.emptyList();
   }
 
   @java.lang.Override
@@ -47,6 +39,7 @@ private static final long serialVersionUID = 0L;
     if (extensionRegistry == null) {
       throw new java.lang.NullPointerException();
     }
+    int mutable_bitField0_ = 0;
     com.google.protobuf.UnknownFieldSet.Builder unknownFields =
         com.google.protobuf.UnknownFieldSet.newBuilder();
     try {
@@ -57,218 +50,26 @@ private static final long serialVersionUID = 0L;
           case 0:
             done = true;
             break;
-          case 8: {
-
-            u1HourExpCnt_ = input.readInt64();
-            break;
-          }
-          case 16: {
-
-            u1HourClickCnt_ = input.readInt64();
-            break;
-          }
-          case 24: {
-
-            u1HourShareCnt_ = input.readInt64();
-            break;
-          }
-          case 32: {
-
-            u1HourReturnCnt_ = input.readInt64();
-            break;
-          }
-          case 41: {
-
-            uCtr1Hour_ = input.readDouble();
-            break;
-          }
-          case 49: {
-
-            uStr1Hour_ = input.readDouble();
-            break;
-          }
-          case 57: {
-
-            uRov1Hour_ = input.readDouble();
-            break;
-          }
-          case 65: {
-
-            uRos1Hour_ = input.readDouble();
-            break;
-          }
-          case 72: {
-
-            uTodayExpCnt_ = input.readInt64();
-            break;
-          }
-          case 80: {
-
-            uTodayClickCnt_ = input.readInt64();
-            break;
-          }
-          case 88: {
-
-            uTodayShareCnt_ = input.readInt64();
-            break;
-          }
-          case 96: {
-
-            uTodayReturnCnt_ = input.readInt64();
-            break;
-          }
-          case 105: {
-
-            uCtrToday_ = input.readDouble();
-            break;
-          }
-          case 113: {
-
-            uStrToday_ = input.readDouble();
-            break;
-          }
-          case 121: {
-
-            uRovToday_ = input.readDouble();
-            break;
-          }
-          case 129: {
-
-            uRosToday_ = input.readDouble();
-            break;
-          }
-          case 136: {
-
-            u1DayExpCnt_ = input.readInt64();
-            break;
-          }
-          case 144: {
-
-            u1DayClickCnt_ = input.readInt64();
-            break;
-          }
-          case 152: {
-
-            u1DayShareCnt_ = input.readInt64();
-            break;
-          }
-          case 160: {
-
-            u1DayReturnCnt_ = input.readInt64();
-            break;
-          }
-          case 169: {
-
-            uCtr1Day_ = input.readDouble();
-            break;
-          }
-          case 177: {
-
-            uStr1Day_ = input.readDouble();
-            break;
-          }
-          case 185: {
-
-            uRov1Day_ = input.readDouble();
-            break;
-          }
-          case 193: {
-
-            uRos1Day_ = input.readDouble();
-            break;
-          }
-          case 200: {
-
-            u3DayExpCnt_ = input.readInt64();
-            break;
-          }
-          case 208: {
-
-            u3DayClickCnt_ = input.readInt64();
-            break;
-          }
-          case 216: {
-
-            u3DayShareCnt_ = input.readInt64();
-            break;
-          }
-          case 224: {
-
-            u3DayReturnCnt_ = input.readInt64();
-            break;
-          }
-          case 233: {
-
-            uCtr3Day_ = input.readDouble();
-            break;
-          }
-          case 241: {
-
-            uStr3Day_ = input.readDouble();
-            break;
-          }
-          case 249: {
-
-            uRov3Day_ = input.readDouble();
-            break;
-          }
-          case 257: {
-
-            uRos3Day_ = input.readDouble();
-            break;
-          }
-          case 266: {
-            java.lang.String s = input.readStringRequireUtf8();
-
-            mid_ = s;
-            break;
-          }
-          case 274: {
-            java.lang.String s = input.readStringRequireUtf8();
-
-            machineinfoBrand_ = s;
-            break;
-          }
-          case 282: {
-            java.lang.String s = input.readStringRequireUtf8();
-
-            machineinfoModel_ = s;
-            break;
-          }
-          case 290: {
-            java.lang.String s = input.readStringRequireUtf8();
-
-            machineinfoSystem_ = s;
-            break;
-          }
-          case 298: {
-            java.lang.String s = input.readStringRequireUtf8();
-
-            machineinfoPlatform_ = s;
-            break;
-          }
-          case 306: {
-            java.lang.String s = input.readStringRequireUtf8();
-
-            gender_ = s;
-            break;
-          }
-          case 314: {
-            java.lang.String s = input.readStringRequireUtf8();
-
-            country_ = s;
-            break;
-          }
-          case 322: {
-            java.lang.String s = input.readStringRequireUtf8();
+          case 10: {
+            com.tzld.piaoquan.recommend.feature.model.common.Result.Builder subBuilder = null;
+            if (result_ != null) {
+              subBuilder = result_.toBuilder();
+            }
+            result_ = input.readMessage(com.tzld.piaoquan.recommend.feature.model.common.Result.parser(), extensionRegistry);
+            if (subBuilder != null) {
+              subBuilder.mergeFrom(result_);
+              result_ = subBuilder.buildPartial();
+            }
 
-            province_ = s;
             break;
           }
-          case 330: {
-            java.lang.String s = input.readStringRequireUtf8();
-
-            city_ = s;
+          case 18: {
+            if (!((mutable_bitField0_ & 0x00000001) != 0)) {
+              userFeatureInfo_ = new java.util.ArrayList<com.tzld.piaoquan.recommend.feature.model.feature.GetUserFeatureInfo>();
+              mutable_bitField0_ |= 0x00000001;
+            }
+            userFeatureInfo_.add(
+                input.readMessage(com.tzld.piaoquan.recommend.feature.model.feature.GetUserFeatureInfo.parser(), extensionRegistry));
             break;
           }
           default: {
@@ -286,6 +87,9 @@ private static final long serialVersionUID = 0L;
       throw new com.google.protobuf.InvalidProtocolBufferException(
           e).setUnfinishedMessage(this);
     } finally {
+      if (((mutable_bitField0_ & 0x00000001) != 0)) {
+        userFeatureInfo_ = java.util.Collections.unmodifiableList(userFeatureInfo_);
+      }
       this.unknownFields = unknownFields.build();
       makeExtensionsImmutable();
     }
@@ -303,3468 +107,801 @@ private static final long serialVersionUID = 0L;
             com.tzld.piaoquan.recommend.feature.model.feature.GetUserFeatureInfoResponse.class, com.tzld.piaoquan.recommend.feature.model.feature.GetUserFeatureInfoResponse.Builder.class);
   }
 
-  public static final int U1HOUREXPCNT_FIELD_NUMBER = 1;
-  private long u1HourExpCnt_;
+  public static final int RESULT_FIELD_NUMBER = 1;
+  private com.tzld.piaoquan.recommend.feature.model.common.Result result_;
   /**
-   * <pre>
-   *过去一小时
-   * </pre>
-   *
-   * <code>int64 u1hourExpCnt = 1;</code>
-   * @return The u1hourExpCnt.
+   * <code>.Result result = 1;</code>
+   * @return Whether the result field is set.
    */
   @java.lang.Override
-  public long getU1HourExpCnt() {
-    return u1HourExpCnt_;
+  public boolean hasResult() {
+    return result_ != null;
   }
-
-  public static final int U1HOURCLICKCNT_FIELD_NUMBER = 2;
-  private long u1HourClickCnt_;
   /**
-   * <code>int64 u1hourClickCnt = 2;</code>
-   * @return The u1hourClickCnt.
+   * <code>.Result result = 1;</code>
+   * @return The result.
    */
   @java.lang.Override
-  public long getU1HourClickCnt() {
-    return u1HourClickCnt_;
+  public com.tzld.piaoquan.recommend.feature.model.common.Result getResult() {
+    return result_ == null ? com.tzld.piaoquan.recommend.feature.model.common.Result.getDefaultInstance() : result_;
   }
-
-  public static final int U1HOURSHARECNT_FIELD_NUMBER = 3;
-  private long u1HourShareCnt_;
   /**
-   * <code>int64 u1hourShareCnt = 3;</code>
-   * @return The u1hourShareCnt.
+   * <code>.Result result = 1;</code>
    */
   @java.lang.Override
-  public long getU1HourShareCnt() {
-    return u1HourShareCnt_;
+  public com.tzld.piaoquan.recommend.feature.model.common.ResultOrBuilder getResultOrBuilder() {
+    return getResult();
   }
 
-  public static final int U1HOURRETURNCNT_FIELD_NUMBER = 4;
-  private long u1HourReturnCnt_;
+  public static final int USER_FEATURE_INFO_FIELD_NUMBER = 2;
+  private java.util.List<com.tzld.piaoquan.recommend.feature.model.feature.GetUserFeatureInfo> userFeatureInfo_;
   /**
-   * <code>int64 u1hourReturnCnt = 4;</code>
-   * @return The u1hourReturnCnt.
+   * <code>repeated .GetUserFeatureInfo user_feature_info = 2;</code>
    */
   @java.lang.Override
-  public long getU1HourReturnCnt() {
-    return u1HourReturnCnt_;
+  public java.util.List<com.tzld.piaoquan.recommend.feature.model.feature.GetUserFeatureInfo> getUserFeatureInfoList() {
+    return userFeatureInfo_;
   }
-
-  public static final int UCTR1HOUR_FIELD_NUMBER = 5;
-  private double uCtr1Hour_;
   /**
-   * <code>double uCtr1hour = 5;</code>
-   * @return The uCtr1hour.
+   * <code>repeated .GetUserFeatureInfo user_feature_info = 2;</code>
    */
   @java.lang.Override
-  public double getUCtr1Hour() {
-    return uCtr1Hour_;
+  public java.util.List<? extends com.tzld.piaoquan.recommend.feature.model.feature.GetUserFeatureInfoOrBuilder> 
+      getUserFeatureInfoOrBuilderList() {
+    return userFeatureInfo_;
   }
-
-  public static final int USTR1HOUR_FIELD_NUMBER = 6;
-  private double uStr1Hour_;
   /**
-   * <code>double uStr1hour = 6;</code>
-   * @return The uStr1hour.
+   * <code>repeated .GetUserFeatureInfo user_feature_info = 2;</code>
    */
   @java.lang.Override
-  public double getUStr1Hour() {
-    return uStr1Hour_;
+  public int getUserFeatureInfoCount() {
+    return userFeatureInfo_.size();
   }
-
-  public static final int UROV1HOUR_FIELD_NUMBER = 7;
-  private double uRov1Hour_;
   /**
-   * <code>double uRov1hour = 7;</code>
-   * @return The uRov1hour.
+   * <code>repeated .GetUserFeatureInfo user_feature_info = 2;</code>
    */
   @java.lang.Override
-  public double getURov1Hour() {
-    return uRov1Hour_;
+  public com.tzld.piaoquan.recommend.feature.model.feature.GetUserFeatureInfo getUserFeatureInfo(int index) {
+    return userFeatureInfo_.get(index);
   }
-
-  public static final int UROS1HOUR_FIELD_NUMBER = 8;
-  private double uRos1Hour_;
   /**
-   * <code>double uRos1hour = 8;</code>
-   * @return The uRos1hour.
+   * <code>repeated .GetUserFeatureInfo user_feature_info = 2;</code>
    */
   @java.lang.Override
-  public double getURos1Hour() {
-    return uRos1Hour_;
+  public com.tzld.piaoquan.recommend.feature.model.feature.GetUserFeatureInfoOrBuilder getUserFeatureInfoOrBuilder(
+      int index) {
+    return userFeatureInfo_.get(index);
   }
 
-  public static final int UTODAYEXPCNT_FIELD_NUMBER = 9;
-  private long uTodayExpCnt_;
-  /**
-   * <pre>
-   *今天
-   * </pre>
-   *
-   * <code>int64 uTodayExpCnt = 9;</code>
-   * @return The uTodayExpCnt.
-   */
+  private byte memoizedIsInitialized = -1;
   @java.lang.Override
-  public long getUTodayExpCnt() {
-    return uTodayExpCnt_;
-  }
+  public final boolean isInitialized() {
+    byte isInitialized = memoizedIsInitialized;
+    if (isInitialized == 1) return true;
+    if (isInitialized == 0) return false;
 
-  public static final int UTODAYCLICKCNT_FIELD_NUMBER = 10;
-  private long uTodayClickCnt_;
-  /**
-   * <code>int64 uTodayClickCnt = 10;</code>
-   * @return The uTodayClickCnt.
-   */
-  @java.lang.Override
-  public long getUTodayClickCnt() {
-    return uTodayClickCnt_;
+    memoizedIsInitialized = 1;
+    return true;
   }
 
-  public static final int UTODAYSHARECNT_FIELD_NUMBER = 11;
-  private long uTodayShareCnt_;
-  /**
-   * <code>int64 uTodayShareCnt = 11;</code>
-   * @return The uTodayShareCnt.
-   */
   @java.lang.Override
-  public long getUTodayShareCnt() {
-    return uTodayShareCnt_;
+  public void writeTo(com.google.protobuf.CodedOutputStream output)
+                      throws java.io.IOException {
+    if (result_ != null) {
+      output.writeMessage(1, getResult());
+    }
+    for (int i = 0; i < userFeatureInfo_.size(); i++) {
+      output.writeMessage(2, userFeatureInfo_.get(i));
+    }
+    unknownFields.writeTo(output);
   }
 
-  public static final int UTODAYRETURNCNT_FIELD_NUMBER = 12;
-  private long uTodayReturnCnt_;
-  /**
-   * <code>int64 uTodayReturnCnt = 12;</code>
-   * @return The uTodayReturnCnt.
-   */
   @java.lang.Override
-  public long getUTodayReturnCnt() {
-    return uTodayReturnCnt_;
-  }
+  public int getSerializedSize() {
+    int size = memoizedSize;
+    if (size != -1) return size;
 
-  public static final int UCTRTODAY_FIELD_NUMBER = 13;
-  private double uCtrToday_;
-  /**
-   * <code>double uCtrToday = 13;</code>
-   * @return The uCtrToday.
-   */
-  @java.lang.Override
-  public double getUCtrToday() {
-    return uCtrToday_;
+    size = 0;
+    if (result_ != null) {
+      size += com.google.protobuf.CodedOutputStream
+        .computeMessageSize(1, getResult());
+    }
+    for (int i = 0; i < userFeatureInfo_.size(); i++) {
+      size += com.google.protobuf.CodedOutputStream
+        .computeMessageSize(2, userFeatureInfo_.get(i));
+    }
+    size += unknownFields.getSerializedSize();
+    memoizedSize = size;
+    return size;
   }
 
-  public static final int USTRTODAY_FIELD_NUMBER = 14;
-  private double uStrToday_;
-  /**
-   * <code>double uStrToday = 14;</code>
-   * @return The uStrToday.
-   */
   @java.lang.Override
-  public double getUStrToday() {
-    return uStrToday_;
-  }
+  public boolean equals(final java.lang.Object obj) {
+    if (obj == this) {
+     return true;
+    }
+    if (!(obj instanceof com.tzld.piaoquan.recommend.feature.model.feature.GetUserFeatureInfoResponse)) {
+      return super.equals(obj);
+    }
+    com.tzld.piaoquan.recommend.feature.model.feature.GetUserFeatureInfoResponse other = (com.tzld.piaoquan.recommend.feature.model.feature.GetUserFeatureInfoResponse) obj;
 
-  public static final int UROVTODAY_FIELD_NUMBER = 15;
-  private double uRovToday_;
-  /**
-   * <code>double uRovToday = 15;</code>
-   * @return The uRovToday.
-   */
-  @java.lang.Override
-  public double getURovToday() {
-    return uRovToday_;
+    if (hasResult() != other.hasResult()) return false;
+    if (hasResult()) {
+      if (!getResult()
+          .equals(other.getResult())) return false;
+    }
+    if (!getUserFeatureInfoList()
+        .equals(other.getUserFeatureInfoList())) return false;
+    if (!unknownFields.equals(other.unknownFields)) return false;
+    return true;
   }
 
-  public static final int UROSTODAY_FIELD_NUMBER = 16;
-  private double uRosToday_;
-  /**
-   * <code>double uRosToday = 16;</code>
-   * @return The uRosToday.
-   */
   @java.lang.Override
-  public double getURosToday() {
-    return uRosToday_;
+  public int hashCode() {
+    if (memoizedHashCode != 0) {
+      return memoizedHashCode;
+    }
+    int hash = 41;
+    hash = (19 * hash) + getDescriptor().hashCode();
+    if (hasResult()) {
+      hash = (37 * hash) + RESULT_FIELD_NUMBER;
+      hash = (53 * hash) + getResult().hashCode();
+    }
+    if (getUserFeatureInfoCount() > 0) {
+      hash = (37 * hash) + USER_FEATURE_INFO_FIELD_NUMBER;
+      hash = (53 * hash) + getUserFeatureInfoList().hashCode();
+    }
+    hash = (29 * hash) + unknownFields.hashCode();
+    memoizedHashCode = hash;
+    return hash;
   }
 
-  public static final int U1DAYEXPCNT_FIELD_NUMBER = 17;
-  private long u1DayExpCnt_;
-  /**
-   * <pre>
-   *过去一天
-   * </pre>
-   *
-   * <code>int64 u1dayExpCnt = 17;</code>
-   * @return The u1dayExpCnt.
-   */
-  @java.lang.Override
-  public long getU1DayExpCnt() {
-    return u1DayExpCnt_;
+  public static com.tzld.piaoquan.recommend.feature.model.feature.GetUserFeatureInfoResponse parseFrom(
+      java.nio.ByteBuffer data)
+      throws com.google.protobuf.InvalidProtocolBufferException {
+    return PARSER.parseFrom(data);
   }
-
-  public static final int U1DAYCLICKCNT_FIELD_NUMBER = 18;
-  private long u1DayClickCnt_;
-  /**
-   * <code>int64 u1dayClickCnt = 18;</code>
-   * @return The u1dayClickCnt.
-   */
-  @java.lang.Override
-  public long getU1DayClickCnt() {
-    return u1DayClickCnt_;
+  public static com.tzld.piaoquan.recommend.feature.model.feature.GetUserFeatureInfoResponse parseFrom(
+      java.nio.ByteBuffer data,
+      com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+      throws com.google.protobuf.InvalidProtocolBufferException {
+    return PARSER.parseFrom(data, extensionRegistry);
   }
-
-  public static final int U1DAYSHARECNT_FIELD_NUMBER = 19;
-  private long u1DayShareCnt_;
-  /**
-   * <code>int64 u1dayShareCnt = 19;</code>
-   * @return The u1dayShareCnt.
-   */
-  @java.lang.Override
-  public long getU1DayShareCnt() {
-    return u1DayShareCnt_;
+  public static com.tzld.piaoquan.recommend.feature.model.feature.GetUserFeatureInfoResponse parseFrom(
+      com.google.protobuf.ByteString data)
+      throws com.google.protobuf.InvalidProtocolBufferException {
+    return PARSER.parseFrom(data);
   }
-
-  public static final int U1DAYRETURNCNT_FIELD_NUMBER = 20;
-  private long u1DayReturnCnt_;
-  /**
-   * <code>int64 u1dayReturnCnt = 20;</code>
-   * @return The u1dayReturnCnt.
-   */
-  @java.lang.Override
-  public long getU1DayReturnCnt() {
-    return u1DayReturnCnt_;
+  public static com.tzld.piaoquan.recommend.feature.model.feature.GetUserFeatureInfoResponse parseFrom(
+      com.google.protobuf.ByteString data,
+      com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+      throws com.google.protobuf.InvalidProtocolBufferException {
+    return PARSER.parseFrom(data, extensionRegistry);
   }
-
-  public static final int UCTR1DAY_FIELD_NUMBER = 21;
-  private double uCtr1Day_;
-  /**
-   * <code>double uCtr1day = 21;</code>
-   * @return The uCtr1day.
-   */
-  @java.lang.Override
-  public double getUCtr1Day() {
-    return uCtr1Day_;
+  public static com.tzld.piaoquan.recommend.feature.model.feature.GetUserFeatureInfoResponse parseFrom(byte[] data)
+      throws com.google.protobuf.InvalidProtocolBufferException {
+    return PARSER.parseFrom(data);
   }
-
-  public static final int USTR1DAY_FIELD_NUMBER = 22;
-  private double uStr1Day_;
-  /**
-   * <code>double uStr1day = 22;</code>
-   * @return The uStr1day.
-   */
-  @java.lang.Override
-  public double getUStr1Day() {
-    return uStr1Day_;
+  public static com.tzld.piaoquan.recommend.feature.model.feature.GetUserFeatureInfoResponse parseFrom(
+      byte[] data,
+      com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+      throws com.google.protobuf.InvalidProtocolBufferException {
+    return PARSER.parseFrom(data, extensionRegistry);
   }
-
-  public static final int UROV1DAY_FIELD_NUMBER = 23;
-  private double uRov1Day_;
-  /**
-   * <code>double uRov1day = 23;</code>
-   * @return The uRov1day.
-   */
-  @java.lang.Override
-  public double getURov1Day() {
-    return uRov1Day_;
+  public static com.tzld.piaoquan.recommend.feature.model.feature.GetUserFeatureInfoResponse parseFrom(java.io.InputStream input)
+      throws java.io.IOException {
+    return com.google.protobuf.GeneratedMessageV3
+        .parseWithIOException(PARSER, input);
   }
-
-  public static final int UROS1DAY_FIELD_NUMBER = 24;
-  private double uRos1Day_;
-  /**
-   * <code>double uRos1day = 24;</code>
-   * @return The uRos1day.
-   */
-  @java.lang.Override
-  public double getURos1Day() {
-    return uRos1Day_;
-  }
-
-  public static final int U3DAYEXPCNT_FIELD_NUMBER = 25;
-  private long u3DayExpCnt_;
-  /**
-   * <pre>
-   *过去三天
-   * </pre>
-   *
-   * <code>int64 u3dayExpCnt = 25;</code>
-   * @return The u3dayExpCnt.
-   */
-  @java.lang.Override
-  public long getU3DayExpCnt() {
-    return u3DayExpCnt_;
+  public static com.tzld.piaoquan.recommend.feature.model.feature.GetUserFeatureInfoResponse parseFrom(
+      java.io.InputStream input,
+      com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+      throws java.io.IOException {
+    return com.google.protobuf.GeneratedMessageV3
+        .parseWithIOException(PARSER, input, extensionRegistry);
   }
-
-  public static final int U3DAYCLICKCNT_FIELD_NUMBER = 26;
-  private long u3DayClickCnt_;
-  /**
-   * <code>int64 u3dayClickCnt = 26;</code>
-   * @return The u3dayClickCnt.
-   */
-  @java.lang.Override
-  public long getU3DayClickCnt() {
-    return u3DayClickCnt_;
+  public static com.tzld.piaoquan.recommend.feature.model.feature.GetUserFeatureInfoResponse parseDelimitedFrom(java.io.InputStream input)
+      throws java.io.IOException {
+    return com.google.protobuf.GeneratedMessageV3
+        .parseDelimitedWithIOException(PARSER, input);
   }
-
-  public static final int U3DAYSHARECNT_FIELD_NUMBER = 27;
-  private long u3DayShareCnt_;
-  /**
-   * <code>int64 u3dayShareCnt = 27;</code>
-   * @return The u3dayShareCnt.
-   */
-  @java.lang.Override
-  public long getU3DayShareCnt() {
-    return u3DayShareCnt_;
+  public static com.tzld.piaoquan.recommend.feature.model.feature.GetUserFeatureInfoResponse parseDelimitedFrom(
+      java.io.InputStream input,
+      com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+      throws java.io.IOException {
+    return com.google.protobuf.GeneratedMessageV3
+        .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
   }
-
-  public static final int U3DAYRETURNCNT_FIELD_NUMBER = 28;
-  private long u3DayReturnCnt_;
-  /**
-   * <code>int64 u3dayReturnCnt = 28;</code>
-   * @return The u3dayReturnCnt.
-   */
-  @java.lang.Override
-  public long getU3DayReturnCnt() {
-    return u3DayReturnCnt_;
+  public static com.tzld.piaoquan.recommend.feature.model.feature.GetUserFeatureInfoResponse parseFrom(
+      com.google.protobuf.CodedInputStream input)
+      throws java.io.IOException {
+    return com.google.protobuf.GeneratedMessageV3
+        .parseWithIOException(PARSER, input);
   }
-
-  public static final int UCTR3DAY_FIELD_NUMBER = 29;
-  private double uCtr3Day_;
-  /**
-   * <code>double uCtr3day = 29;</code>
-   * @return The uCtr3day.
-   */
-  @java.lang.Override
-  public double getUCtr3Day() {
-    return uCtr3Day_;
+  public static com.tzld.piaoquan.recommend.feature.model.feature.GetUserFeatureInfoResponse parseFrom(
+      com.google.protobuf.CodedInputStream input,
+      com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+      throws java.io.IOException {
+    return com.google.protobuf.GeneratedMessageV3
+        .parseWithIOException(PARSER, input, extensionRegistry);
   }
 
-  public static final int USTR3DAY_FIELD_NUMBER = 30;
-  private double uStr3Day_;
-  /**
-   * <code>double uStr3day = 30;</code>
-   * @return The uStr3day.
-   */
   @java.lang.Override
-  public double getUStr3Day() {
-    return uStr3Day_;
+  public Builder newBuilderForType() { return newBuilder(); }
+  public static Builder newBuilder() {
+    return DEFAULT_INSTANCE.toBuilder();
   }
-
-  public static final int UROV3DAY_FIELD_NUMBER = 31;
-  private double uRov3Day_;
-  /**
-   * <code>double uRov3day = 31;</code>
-   * @return The uRov3day.
-   */
-  @java.lang.Override
-  public double getURov3Day() {
-    return uRov3Day_;
+  public static Builder newBuilder(com.tzld.piaoquan.recommend.feature.model.feature.GetUserFeatureInfoResponse prototype) {
+    return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
   }
-
-  public static final int UROS3DAY_FIELD_NUMBER = 32;
-  private double uRos3Day_;
-  /**
-   * <code>double uRos3day = 32;</code>
-   * @return The uRos3day.
-   */
   @java.lang.Override
-  public double getURos3Day() {
-    return uRos3Day_;
+  public Builder toBuilder() {
+    return this == DEFAULT_INSTANCE
+        ? new Builder() : new Builder().mergeFrom(this);
   }
 
-  public static final int MID_FIELD_NUMBER = 33;
-  private volatile java.lang.Object mid_;
-  /**
-   * <code>string mid = 33;</code>
-   * @return The mid.
-   */
   @java.lang.Override
-  public java.lang.String getMid() {
-    java.lang.Object ref = mid_;
-    if (ref instanceof java.lang.String) {
-      return (java.lang.String) ref;
-    } else {
-      com.google.protobuf.ByteString bs = 
-          (com.google.protobuf.ByteString) ref;
-      java.lang.String s = bs.toStringUtf8();
-      mid_ = s;
-      return s;
-    }
+  protected Builder newBuilderForType(
+      com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
+    Builder builder = new Builder(parent);
+    return builder;
   }
   /**
-   * <code>string mid = 33;</code>
-   * @return The bytes for mid.
+   * Protobuf type {@code GetUserFeatureInfoResponse}
    */
-  @java.lang.Override
-  public com.google.protobuf.ByteString
-      getMidBytes() {
-    java.lang.Object ref = mid_;
-    if (ref instanceof java.lang.String) {
-      com.google.protobuf.ByteString b = 
-          com.google.protobuf.ByteString.copyFromUtf8(
-              (java.lang.String) ref);
-      mid_ = b;
-      return b;
-    } else {
-      return (com.google.protobuf.ByteString) ref;
+  public static final class Builder extends
+      com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
+      // @@protoc_insertion_point(builder_implements:GetUserFeatureInfoResponse)
+      com.tzld.piaoquan.recommend.feature.model.feature.GetUserFeatureInfoResponseOrBuilder {
+    public static final com.google.protobuf.Descriptors.Descriptor
+        getDescriptor() {
+      return com.tzld.piaoquan.recommend.feature.model.feature.Feature.internal_static_GetUserFeatureInfoResponse_descriptor;
     }
-  }
 
-  public static final int MACHINEINFOBRAND_FIELD_NUMBER = 34;
-  private volatile java.lang.Object machineinfoBrand_;
-  /**
-   * <code>string machineinfoBrand = 34;</code>
-   * @return The machineinfoBrand.
-   */
-  @java.lang.Override
-  public java.lang.String getMachineinfoBrand() {
-    java.lang.Object ref = machineinfoBrand_;
-    if (ref instanceof java.lang.String) {
-      return (java.lang.String) ref;
-    } else {
-      com.google.protobuf.ByteString bs = 
-          (com.google.protobuf.ByteString) ref;
-      java.lang.String s = bs.toStringUtf8();
-      machineinfoBrand_ = s;
-      return s;
-    }
-  }
-  /**
-   * <code>string machineinfoBrand = 34;</code>
-   * @return The bytes for machineinfoBrand.
-   */
-  @java.lang.Override
-  public com.google.protobuf.ByteString
-      getMachineinfoBrandBytes() {
-    java.lang.Object ref = machineinfoBrand_;
-    if (ref instanceof java.lang.String) {
-      com.google.protobuf.ByteString b = 
-          com.google.protobuf.ByteString.copyFromUtf8(
-              (java.lang.String) ref);
-      machineinfoBrand_ = b;
-      return b;
-    } else {
-      return (com.google.protobuf.ByteString) ref;
+    @java.lang.Override
+    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
+        internalGetFieldAccessorTable() {
+      return com.tzld.piaoquan.recommend.feature.model.feature.Feature.internal_static_GetUserFeatureInfoResponse_fieldAccessorTable
+          .ensureFieldAccessorsInitialized(
+              com.tzld.piaoquan.recommend.feature.model.feature.GetUserFeatureInfoResponse.class, com.tzld.piaoquan.recommend.feature.model.feature.GetUserFeatureInfoResponse.Builder.class);
     }
-  }
 
-  public static final int MACHINEINFOMODEL_FIELD_NUMBER = 35;
-  private volatile java.lang.Object machineinfoModel_;
-  /**
-   * <code>string machineinfoModel = 35;</code>
-   * @return The machineinfoModel.
-   */
-  @java.lang.Override
-  public java.lang.String getMachineinfoModel() {
-    java.lang.Object ref = machineinfoModel_;
-    if (ref instanceof java.lang.String) {
-      return (java.lang.String) ref;
-    } else {
-      com.google.protobuf.ByteString bs = 
-          (com.google.protobuf.ByteString) ref;
-      java.lang.String s = bs.toStringUtf8();
-      machineinfoModel_ = s;
-      return s;
-    }
-  }
-  /**
-   * <code>string machineinfoModel = 35;</code>
-   * @return The bytes for machineinfoModel.
-   */
-  @java.lang.Override
-  public com.google.protobuf.ByteString
-      getMachineinfoModelBytes() {
-    java.lang.Object ref = machineinfoModel_;
-    if (ref instanceof java.lang.String) {
-      com.google.protobuf.ByteString b = 
-          com.google.protobuf.ByteString.copyFromUtf8(
-              (java.lang.String) ref);
-      machineinfoModel_ = b;
-      return b;
-    } else {
-      return (com.google.protobuf.ByteString) ref;
+    // Construct using com.tzld.piaoquan.recommend.feature.model.feature.GetUserFeatureInfoResponse.newBuilder()
+    private Builder() {
+      maybeForceBuilderInitialization();
     }
-  }
 
-  public static final int MACHINEINFOSYSTEM_FIELD_NUMBER = 36;
-  private volatile java.lang.Object machineinfoSystem_;
-  /**
-   * <code>string machineinfoSystem = 36;</code>
-   * @return The machineinfoSystem.
-   */
-  @java.lang.Override
-  public java.lang.String getMachineinfoSystem() {
-    java.lang.Object ref = machineinfoSystem_;
-    if (ref instanceof java.lang.String) {
-      return (java.lang.String) ref;
-    } else {
-      com.google.protobuf.ByteString bs = 
-          (com.google.protobuf.ByteString) ref;
-      java.lang.String s = bs.toStringUtf8();
-      machineinfoSystem_ = s;
-      return s;
-    }
-  }
-  /**
-   * <code>string machineinfoSystem = 36;</code>
-   * @return The bytes for machineinfoSystem.
-   */
-  @java.lang.Override
-  public com.google.protobuf.ByteString
-      getMachineinfoSystemBytes() {
-    java.lang.Object ref = machineinfoSystem_;
-    if (ref instanceof java.lang.String) {
-      com.google.protobuf.ByteString b = 
-          com.google.protobuf.ByteString.copyFromUtf8(
-              (java.lang.String) ref);
-      machineinfoSystem_ = b;
-      return b;
-    } else {
-      return (com.google.protobuf.ByteString) ref;
+    private Builder(
+        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
+      super(parent);
+      maybeForceBuilderInitialization();
     }
-  }
-
-  public static final int MACHINEINFOPLATFORM_FIELD_NUMBER = 37;
-  private volatile java.lang.Object machineinfoPlatform_;
-  /**
-   * <code>string machineinfoPlatform = 37;</code>
-   * @return The machineinfoPlatform.
-   */
-  @java.lang.Override
-  public java.lang.String getMachineinfoPlatform() {
-    java.lang.Object ref = machineinfoPlatform_;
-    if (ref instanceof java.lang.String) {
-      return (java.lang.String) ref;
-    } else {
-      com.google.protobuf.ByteString bs = 
-          (com.google.protobuf.ByteString) ref;
-      java.lang.String s = bs.toStringUtf8();
-      machineinfoPlatform_ = s;
-      return s;
+    private void maybeForceBuilderInitialization() {
+      if (com.google.protobuf.GeneratedMessageV3
+              .alwaysUseFieldBuilders) {
+        getUserFeatureInfoFieldBuilder();
+      }
     }
-  }
-  /**
-   * <code>string machineinfoPlatform = 37;</code>
-   * @return The bytes for machineinfoPlatform.
-   */
-  @java.lang.Override
-  public com.google.protobuf.ByteString
-      getMachineinfoPlatformBytes() {
-    java.lang.Object ref = machineinfoPlatform_;
-    if (ref instanceof java.lang.String) {
-      com.google.protobuf.ByteString b = 
-          com.google.protobuf.ByteString.copyFromUtf8(
-              (java.lang.String) ref);
-      machineinfoPlatform_ = b;
-      return b;
-    } else {
-      return (com.google.protobuf.ByteString) ref;
+    @java.lang.Override
+    public Builder clear() {
+      super.clear();
+      if (resultBuilder_ == null) {
+        result_ = null;
+      } else {
+        result_ = null;
+        resultBuilder_ = null;
+      }
+      if (userFeatureInfoBuilder_ == null) {
+        userFeatureInfo_ = java.util.Collections.emptyList();
+        bitField0_ = (bitField0_ & ~0x00000001);
+      } else {
+        userFeatureInfoBuilder_.clear();
+      }
+      return this;
     }
-  }
 
-  public static final int GENDER_FIELD_NUMBER = 38;
-  private volatile java.lang.Object gender_;
-  /**
-   * <code>string gender = 38;</code>
-   * @return The gender.
-   */
-  @java.lang.Override
-  public java.lang.String getGender() {
-    java.lang.Object ref = gender_;
-    if (ref instanceof java.lang.String) {
-      return (java.lang.String) ref;
-    } else {
-      com.google.protobuf.ByteString bs = 
-          (com.google.protobuf.ByteString) ref;
-      java.lang.String s = bs.toStringUtf8();
-      gender_ = s;
-      return s;
-    }
-  }
-  /**
-   * <code>string gender = 38;</code>
-   * @return The bytes for gender.
-   */
-  @java.lang.Override
-  public com.google.protobuf.ByteString
-      getGenderBytes() {
-    java.lang.Object ref = gender_;
-    if (ref instanceof java.lang.String) {
-      com.google.protobuf.ByteString b = 
-          com.google.protobuf.ByteString.copyFromUtf8(
-              (java.lang.String) ref);
-      gender_ = b;
-      return b;
-    } else {
-      return (com.google.protobuf.ByteString) ref;
+    @java.lang.Override
+    public com.google.protobuf.Descriptors.Descriptor
+        getDescriptorForType() {
+      return com.tzld.piaoquan.recommend.feature.model.feature.Feature.internal_static_GetUserFeatureInfoResponse_descriptor;
     }
-  }
 
-  public static final int COUNTRY_FIELD_NUMBER = 39;
-  private volatile java.lang.Object country_;
-  /**
-   * <code>string country = 39;</code>
-   * @return The country.
-   */
-  @java.lang.Override
-  public java.lang.String getCountry() {
-    java.lang.Object ref = country_;
-    if (ref instanceof java.lang.String) {
-      return (java.lang.String) ref;
-    } else {
-      com.google.protobuf.ByteString bs = 
-          (com.google.protobuf.ByteString) ref;
-      java.lang.String s = bs.toStringUtf8();
-      country_ = s;
-      return s;
-    }
-  }
-  /**
-   * <code>string country = 39;</code>
-   * @return The bytes for country.
-   */
-  @java.lang.Override
-  public com.google.protobuf.ByteString
-      getCountryBytes() {
-    java.lang.Object ref = country_;
-    if (ref instanceof java.lang.String) {
-      com.google.protobuf.ByteString b = 
-          com.google.protobuf.ByteString.copyFromUtf8(
-              (java.lang.String) ref);
-      country_ = b;
-      return b;
-    } else {
-      return (com.google.protobuf.ByteString) ref;
+    @java.lang.Override
+    public com.tzld.piaoquan.recommend.feature.model.feature.GetUserFeatureInfoResponse getDefaultInstanceForType() {
+      return com.tzld.piaoquan.recommend.feature.model.feature.GetUserFeatureInfoResponse.getDefaultInstance();
     }
-  }
 
-  public static final int PROVINCE_FIELD_NUMBER = 40;
-  private volatile java.lang.Object province_;
-  /**
-   * <code>string province = 40;</code>
-   * @return The province.
-   */
-  @java.lang.Override
-  public java.lang.String getProvince() {
-    java.lang.Object ref = province_;
-    if (ref instanceof java.lang.String) {
-      return (java.lang.String) ref;
-    } else {
-      com.google.protobuf.ByteString bs = 
-          (com.google.protobuf.ByteString) ref;
-      java.lang.String s = bs.toStringUtf8();
-      province_ = s;
-      return s;
-    }
-  }
-  /**
-   * <code>string province = 40;</code>
-   * @return The bytes for province.
-   */
-  @java.lang.Override
-  public com.google.protobuf.ByteString
-      getProvinceBytes() {
-    java.lang.Object ref = province_;
-    if (ref instanceof java.lang.String) {
-      com.google.protobuf.ByteString b = 
-          com.google.protobuf.ByteString.copyFromUtf8(
-              (java.lang.String) ref);
-      province_ = b;
-      return b;
-    } else {
-      return (com.google.protobuf.ByteString) ref;
+    @java.lang.Override
+    public com.tzld.piaoquan.recommend.feature.model.feature.GetUserFeatureInfoResponse build() {
+      com.tzld.piaoquan.recommend.feature.model.feature.GetUserFeatureInfoResponse result = buildPartial();
+      if (!result.isInitialized()) {
+        throw newUninitializedMessageException(result);
+      }
+      return result;
     }
-  }
 
-  public static final int CITY_FIELD_NUMBER = 41;
-  private volatile java.lang.Object city_;
-  /**
-   * <code>string city = 41;</code>
-   * @return The city.
-   */
-  @java.lang.Override
-  public java.lang.String getCity() {
-    java.lang.Object ref = city_;
-    if (ref instanceof java.lang.String) {
-      return (java.lang.String) ref;
-    } else {
-      com.google.protobuf.ByteString bs = 
-          (com.google.protobuf.ByteString) ref;
-      java.lang.String s = bs.toStringUtf8();
-      city_ = s;
-      return s;
-    }
-  }
-  /**
-   * <code>string city = 41;</code>
-   * @return The bytes for city.
-   */
-  @java.lang.Override
-  public com.google.protobuf.ByteString
-      getCityBytes() {
-    java.lang.Object ref = city_;
-    if (ref instanceof java.lang.String) {
-      com.google.protobuf.ByteString b = 
-          com.google.protobuf.ByteString.copyFromUtf8(
-              (java.lang.String) ref);
-      city_ = b;
-      return b;
-    } else {
-      return (com.google.protobuf.ByteString) ref;
+    @java.lang.Override
+    public com.tzld.piaoquan.recommend.feature.model.feature.GetUserFeatureInfoResponse buildPartial() {
+      com.tzld.piaoquan.recommend.feature.model.feature.GetUserFeatureInfoResponse result = new com.tzld.piaoquan.recommend.feature.model.feature.GetUserFeatureInfoResponse(this);
+      int from_bitField0_ = bitField0_;
+      if (resultBuilder_ == null) {
+        result.result_ = result_;
+      } else {
+        result.result_ = resultBuilder_.build();
+      }
+      if (userFeatureInfoBuilder_ == null) {
+        if (((bitField0_ & 0x00000001) != 0)) {
+          userFeatureInfo_ = java.util.Collections.unmodifiableList(userFeatureInfo_);
+          bitField0_ = (bitField0_ & ~0x00000001);
+        }
+        result.userFeatureInfo_ = userFeatureInfo_;
+      } else {
+        result.userFeatureInfo_ = userFeatureInfoBuilder_.build();
+      }
+      onBuilt();
+      return result;
     }
-  }
-
-  private byte memoizedIsInitialized = -1;
-  @java.lang.Override
-  public final boolean isInitialized() {
-    byte isInitialized = memoizedIsInitialized;
-    if (isInitialized == 1) return true;
-    if (isInitialized == 0) return false;
-
-    memoizedIsInitialized = 1;
-    return true;
-  }
 
-  @java.lang.Override
-  public void writeTo(com.google.protobuf.CodedOutputStream output)
-                      throws java.io.IOException {
-    if (u1HourExpCnt_ != 0L) {
-      output.writeInt64(1, u1HourExpCnt_);
-    }
-    if (u1HourClickCnt_ != 0L) {
-      output.writeInt64(2, u1HourClickCnt_);
-    }
-    if (u1HourShareCnt_ != 0L) {
-      output.writeInt64(3, u1HourShareCnt_);
-    }
-    if (u1HourReturnCnt_ != 0L) {
-      output.writeInt64(4, u1HourReturnCnt_);
-    }
-    if (uCtr1Hour_ != 0D) {
-      output.writeDouble(5, uCtr1Hour_);
-    }
-    if (uStr1Hour_ != 0D) {
-      output.writeDouble(6, uStr1Hour_);
-    }
-    if (uRov1Hour_ != 0D) {
-      output.writeDouble(7, uRov1Hour_);
-    }
-    if (uRos1Hour_ != 0D) {
-      output.writeDouble(8, uRos1Hour_);
-    }
-    if (uTodayExpCnt_ != 0L) {
-      output.writeInt64(9, uTodayExpCnt_);
-    }
-    if (uTodayClickCnt_ != 0L) {
-      output.writeInt64(10, uTodayClickCnt_);
-    }
-    if (uTodayShareCnt_ != 0L) {
-      output.writeInt64(11, uTodayShareCnt_);
-    }
-    if (uTodayReturnCnt_ != 0L) {
-      output.writeInt64(12, uTodayReturnCnt_);
-    }
-    if (uCtrToday_ != 0D) {
-      output.writeDouble(13, uCtrToday_);
-    }
-    if (uStrToday_ != 0D) {
-      output.writeDouble(14, uStrToday_);
-    }
-    if (uRovToday_ != 0D) {
-      output.writeDouble(15, uRovToday_);
-    }
-    if (uRosToday_ != 0D) {
-      output.writeDouble(16, uRosToday_);
-    }
-    if (u1DayExpCnt_ != 0L) {
-      output.writeInt64(17, u1DayExpCnt_);
-    }
-    if (u1DayClickCnt_ != 0L) {
-      output.writeInt64(18, u1DayClickCnt_);
-    }
-    if (u1DayShareCnt_ != 0L) {
-      output.writeInt64(19, u1DayShareCnt_);
-    }
-    if (u1DayReturnCnt_ != 0L) {
-      output.writeInt64(20, u1DayReturnCnt_);
-    }
-    if (uCtr1Day_ != 0D) {
-      output.writeDouble(21, uCtr1Day_);
-    }
-    if (uStr1Day_ != 0D) {
-      output.writeDouble(22, uStr1Day_);
-    }
-    if (uRov1Day_ != 0D) {
-      output.writeDouble(23, uRov1Day_);
-    }
-    if (uRos1Day_ != 0D) {
-      output.writeDouble(24, uRos1Day_);
-    }
-    if (u3DayExpCnt_ != 0L) {
-      output.writeInt64(25, u3DayExpCnt_);
-    }
-    if (u3DayClickCnt_ != 0L) {
-      output.writeInt64(26, u3DayClickCnt_);
-    }
-    if (u3DayShareCnt_ != 0L) {
-      output.writeInt64(27, u3DayShareCnt_);
-    }
-    if (u3DayReturnCnt_ != 0L) {
-      output.writeInt64(28, u3DayReturnCnt_);
-    }
-    if (uCtr3Day_ != 0D) {
-      output.writeDouble(29, uCtr3Day_);
-    }
-    if (uStr3Day_ != 0D) {
-      output.writeDouble(30, uStr3Day_);
-    }
-    if (uRov3Day_ != 0D) {
-      output.writeDouble(31, uRov3Day_);
-    }
-    if (uRos3Day_ != 0D) {
-      output.writeDouble(32, uRos3Day_);
-    }
-    if (!getMidBytes().isEmpty()) {
-      com.google.protobuf.GeneratedMessageV3.writeString(output, 33, mid_);
-    }
-    if (!getMachineinfoBrandBytes().isEmpty()) {
-      com.google.protobuf.GeneratedMessageV3.writeString(output, 34, machineinfoBrand_);
-    }
-    if (!getMachineinfoModelBytes().isEmpty()) {
-      com.google.protobuf.GeneratedMessageV3.writeString(output, 35, machineinfoModel_);
-    }
-    if (!getMachineinfoSystemBytes().isEmpty()) {
-      com.google.protobuf.GeneratedMessageV3.writeString(output, 36, machineinfoSystem_);
-    }
-    if (!getMachineinfoPlatformBytes().isEmpty()) {
-      com.google.protobuf.GeneratedMessageV3.writeString(output, 37, machineinfoPlatform_);
-    }
-    if (!getGenderBytes().isEmpty()) {
-      com.google.protobuf.GeneratedMessageV3.writeString(output, 38, gender_);
-    }
-    if (!getCountryBytes().isEmpty()) {
-      com.google.protobuf.GeneratedMessageV3.writeString(output, 39, country_);
-    }
-    if (!getProvinceBytes().isEmpty()) {
-      com.google.protobuf.GeneratedMessageV3.writeString(output, 40, province_);
-    }
-    if (!getCityBytes().isEmpty()) {
-      com.google.protobuf.GeneratedMessageV3.writeString(output, 41, city_);
-    }
-    unknownFields.writeTo(output);
-  }
-
-  @java.lang.Override
-  public int getSerializedSize() {
-    int size = memoizedSize;
-    if (size != -1) return size;
-
-    size = 0;
-    if (u1HourExpCnt_ != 0L) {
-      size += com.google.protobuf.CodedOutputStream
-        .computeInt64Size(1, u1HourExpCnt_);
-    }
-    if (u1HourClickCnt_ != 0L) {
-      size += com.google.protobuf.CodedOutputStream
-        .computeInt64Size(2, u1HourClickCnt_);
-    }
-    if (u1HourShareCnt_ != 0L) {
-      size += com.google.protobuf.CodedOutputStream
-        .computeInt64Size(3, u1HourShareCnt_);
-    }
-    if (u1HourReturnCnt_ != 0L) {
-      size += com.google.protobuf.CodedOutputStream
-        .computeInt64Size(4, u1HourReturnCnt_);
-    }
-    if (uCtr1Hour_ != 0D) {
-      size += com.google.protobuf.CodedOutputStream
-        .computeDoubleSize(5, uCtr1Hour_);
-    }
-    if (uStr1Hour_ != 0D) {
-      size += com.google.protobuf.CodedOutputStream
-        .computeDoubleSize(6, uStr1Hour_);
-    }
-    if (uRov1Hour_ != 0D) {
-      size += com.google.protobuf.CodedOutputStream
-        .computeDoubleSize(7, uRov1Hour_);
-    }
-    if (uRos1Hour_ != 0D) {
-      size += com.google.protobuf.CodedOutputStream
-        .computeDoubleSize(8, uRos1Hour_);
-    }
-    if (uTodayExpCnt_ != 0L) {
-      size += com.google.protobuf.CodedOutputStream
-        .computeInt64Size(9, uTodayExpCnt_);
-    }
-    if (uTodayClickCnt_ != 0L) {
-      size += com.google.protobuf.CodedOutputStream
-        .computeInt64Size(10, uTodayClickCnt_);
-    }
-    if (uTodayShareCnt_ != 0L) {
-      size += com.google.protobuf.CodedOutputStream
-        .computeInt64Size(11, uTodayShareCnt_);
-    }
-    if (uTodayReturnCnt_ != 0L) {
-      size += com.google.protobuf.CodedOutputStream
-        .computeInt64Size(12, uTodayReturnCnt_);
-    }
-    if (uCtrToday_ != 0D) {
-      size += com.google.protobuf.CodedOutputStream
-        .computeDoubleSize(13, uCtrToday_);
-    }
-    if (uStrToday_ != 0D) {
-      size += com.google.protobuf.CodedOutputStream
-        .computeDoubleSize(14, uStrToday_);
-    }
-    if (uRovToday_ != 0D) {
-      size += com.google.protobuf.CodedOutputStream
-        .computeDoubleSize(15, uRovToday_);
-    }
-    if (uRosToday_ != 0D) {
-      size += com.google.protobuf.CodedOutputStream
-        .computeDoubleSize(16, uRosToday_);
-    }
-    if (u1DayExpCnt_ != 0L) {
-      size += com.google.protobuf.CodedOutputStream
-        .computeInt64Size(17, u1DayExpCnt_);
-    }
-    if (u1DayClickCnt_ != 0L) {
-      size += com.google.protobuf.CodedOutputStream
-        .computeInt64Size(18, u1DayClickCnt_);
-    }
-    if (u1DayShareCnt_ != 0L) {
-      size += com.google.protobuf.CodedOutputStream
-        .computeInt64Size(19, u1DayShareCnt_);
-    }
-    if (u1DayReturnCnt_ != 0L) {
-      size += com.google.protobuf.CodedOutputStream
-        .computeInt64Size(20, u1DayReturnCnt_);
-    }
-    if (uCtr1Day_ != 0D) {
-      size += com.google.protobuf.CodedOutputStream
-        .computeDoubleSize(21, uCtr1Day_);
-    }
-    if (uStr1Day_ != 0D) {
-      size += com.google.protobuf.CodedOutputStream
-        .computeDoubleSize(22, uStr1Day_);
-    }
-    if (uRov1Day_ != 0D) {
-      size += com.google.protobuf.CodedOutputStream
-        .computeDoubleSize(23, uRov1Day_);
-    }
-    if (uRos1Day_ != 0D) {
-      size += com.google.protobuf.CodedOutputStream
-        .computeDoubleSize(24, uRos1Day_);
-    }
-    if (u3DayExpCnt_ != 0L) {
-      size += com.google.protobuf.CodedOutputStream
-        .computeInt64Size(25, u3DayExpCnt_);
-    }
-    if (u3DayClickCnt_ != 0L) {
-      size += com.google.protobuf.CodedOutputStream
-        .computeInt64Size(26, u3DayClickCnt_);
-    }
-    if (u3DayShareCnt_ != 0L) {
-      size += com.google.protobuf.CodedOutputStream
-        .computeInt64Size(27, u3DayShareCnt_);
-    }
-    if (u3DayReturnCnt_ != 0L) {
-      size += com.google.protobuf.CodedOutputStream
-        .computeInt64Size(28, u3DayReturnCnt_);
-    }
-    if (uCtr3Day_ != 0D) {
-      size += com.google.protobuf.CodedOutputStream
-        .computeDoubleSize(29, uCtr3Day_);
-    }
-    if (uStr3Day_ != 0D) {
-      size += com.google.protobuf.CodedOutputStream
-        .computeDoubleSize(30, uStr3Day_);
-    }
-    if (uRov3Day_ != 0D) {
-      size += com.google.protobuf.CodedOutputStream
-        .computeDoubleSize(31, uRov3Day_);
-    }
-    if (uRos3Day_ != 0D) {
-      size += com.google.protobuf.CodedOutputStream
-        .computeDoubleSize(32, uRos3Day_);
-    }
-    if (!getMidBytes().isEmpty()) {
-      size += com.google.protobuf.GeneratedMessageV3.computeStringSize(33, mid_);
-    }
-    if (!getMachineinfoBrandBytes().isEmpty()) {
-      size += com.google.protobuf.GeneratedMessageV3.computeStringSize(34, machineinfoBrand_);
-    }
-    if (!getMachineinfoModelBytes().isEmpty()) {
-      size += com.google.protobuf.GeneratedMessageV3.computeStringSize(35, machineinfoModel_);
-    }
-    if (!getMachineinfoSystemBytes().isEmpty()) {
-      size += com.google.protobuf.GeneratedMessageV3.computeStringSize(36, machineinfoSystem_);
-    }
-    if (!getMachineinfoPlatformBytes().isEmpty()) {
-      size += com.google.protobuf.GeneratedMessageV3.computeStringSize(37, machineinfoPlatform_);
-    }
-    if (!getGenderBytes().isEmpty()) {
-      size += com.google.protobuf.GeneratedMessageV3.computeStringSize(38, gender_);
-    }
-    if (!getCountryBytes().isEmpty()) {
-      size += com.google.protobuf.GeneratedMessageV3.computeStringSize(39, country_);
-    }
-    if (!getProvinceBytes().isEmpty()) {
-      size += com.google.protobuf.GeneratedMessageV3.computeStringSize(40, province_);
-    }
-    if (!getCityBytes().isEmpty()) {
-      size += com.google.protobuf.GeneratedMessageV3.computeStringSize(41, city_);
-    }
-    size += unknownFields.getSerializedSize();
-    memoizedSize = size;
-    return size;
-  }
-
-  @java.lang.Override
-  public boolean equals(final java.lang.Object obj) {
-    if (obj == this) {
-     return true;
-    }
-    if (!(obj instanceof com.tzld.piaoquan.recommend.feature.model.feature.GetUserFeatureInfoResponse)) {
-      return super.equals(obj);
-    }
-    com.tzld.piaoquan.recommend.feature.model.feature.GetUserFeatureInfoResponse other = (com.tzld.piaoquan.recommend.feature.model.feature.GetUserFeatureInfoResponse) obj;
-
-    if (getU1HourExpCnt()
-        != other.getU1HourExpCnt()) return false;
-    if (getU1HourClickCnt()
-        != other.getU1HourClickCnt()) return false;
-    if (getU1HourShareCnt()
-        != other.getU1HourShareCnt()) return false;
-    if (getU1HourReturnCnt()
-        != other.getU1HourReturnCnt()) return false;
-    if (java.lang.Double.doubleToLongBits(getUCtr1Hour())
-        != java.lang.Double.doubleToLongBits(
-            other.getUCtr1Hour())) return false;
-    if (java.lang.Double.doubleToLongBits(getUStr1Hour())
-        != java.lang.Double.doubleToLongBits(
-            other.getUStr1Hour())) return false;
-    if (java.lang.Double.doubleToLongBits(getURov1Hour())
-        != java.lang.Double.doubleToLongBits(
-            other.getURov1Hour())) return false;
-    if (java.lang.Double.doubleToLongBits(getURos1Hour())
-        != java.lang.Double.doubleToLongBits(
-            other.getURos1Hour())) return false;
-    if (getUTodayExpCnt()
-        != other.getUTodayExpCnt()) return false;
-    if (getUTodayClickCnt()
-        != other.getUTodayClickCnt()) return false;
-    if (getUTodayShareCnt()
-        != other.getUTodayShareCnt()) return false;
-    if (getUTodayReturnCnt()
-        != other.getUTodayReturnCnt()) return false;
-    if (java.lang.Double.doubleToLongBits(getUCtrToday())
-        != java.lang.Double.doubleToLongBits(
-            other.getUCtrToday())) return false;
-    if (java.lang.Double.doubleToLongBits(getUStrToday())
-        != java.lang.Double.doubleToLongBits(
-            other.getUStrToday())) return false;
-    if (java.lang.Double.doubleToLongBits(getURovToday())
-        != java.lang.Double.doubleToLongBits(
-            other.getURovToday())) return false;
-    if (java.lang.Double.doubleToLongBits(getURosToday())
-        != java.lang.Double.doubleToLongBits(
-            other.getURosToday())) return false;
-    if (getU1DayExpCnt()
-        != other.getU1DayExpCnt()) return false;
-    if (getU1DayClickCnt()
-        != other.getU1DayClickCnt()) return false;
-    if (getU1DayShareCnt()
-        != other.getU1DayShareCnt()) return false;
-    if (getU1DayReturnCnt()
-        != other.getU1DayReturnCnt()) return false;
-    if (java.lang.Double.doubleToLongBits(getUCtr1Day())
-        != java.lang.Double.doubleToLongBits(
-            other.getUCtr1Day())) return false;
-    if (java.lang.Double.doubleToLongBits(getUStr1Day())
-        != java.lang.Double.doubleToLongBits(
-            other.getUStr1Day())) return false;
-    if (java.lang.Double.doubleToLongBits(getURov1Day())
-        != java.lang.Double.doubleToLongBits(
-            other.getURov1Day())) return false;
-    if (java.lang.Double.doubleToLongBits(getURos1Day())
-        != java.lang.Double.doubleToLongBits(
-            other.getURos1Day())) return false;
-    if (getU3DayExpCnt()
-        != other.getU3DayExpCnt()) return false;
-    if (getU3DayClickCnt()
-        != other.getU3DayClickCnt()) return false;
-    if (getU3DayShareCnt()
-        != other.getU3DayShareCnt()) return false;
-    if (getU3DayReturnCnt()
-        != other.getU3DayReturnCnt()) return false;
-    if (java.lang.Double.doubleToLongBits(getUCtr3Day())
-        != java.lang.Double.doubleToLongBits(
-            other.getUCtr3Day())) return false;
-    if (java.lang.Double.doubleToLongBits(getUStr3Day())
-        != java.lang.Double.doubleToLongBits(
-            other.getUStr3Day())) return false;
-    if (java.lang.Double.doubleToLongBits(getURov3Day())
-        != java.lang.Double.doubleToLongBits(
-            other.getURov3Day())) return false;
-    if (java.lang.Double.doubleToLongBits(getURos3Day())
-        != java.lang.Double.doubleToLongBits(
-            other.getURos3Day())) return false;
-    if (!getMid()
-        .equals(other.getMid())) return false;
-    if (!getMachineinfoBrand()
-        .equals(other.getMachineinfoBrand())) return false;
-    if (!getMachineinfoModel()
-        .equals(other.getMachineinfoModel())) return false;
-    if (!getMachineinfoSystem()
-        .equals(other.getMachineinfoSystem())) return false;
-    if (!getMachineinfoPlatform()
-        .equals(other.getMachineinfoPlatform())) return false;
-    if (!getGender()
-        .equals(other.getGender())) return false;
-    if (!getCountry()
-        .equals(other.getCountry())) return false;
-    if (!getProvince()
-        .equals(other.getProvince())) return false;
-    if (!getCity()
-        .equals(other.getCity())) return false;
-    if (!unknownFields.equals(other.unknownFields)) return false;
-    return true;
-  }
-
-  @java.lang.Override
-  public int hashCode() {
-    if (memoizedHashCode != 0) {
-      return memoizedHashCode;
-    }
-    int hash = 41;
-    hash = (19 * hash) + getDescriptor().hashCode();
-    hash = (37 * hash) + U1HOUREXPCNT_FIELD_NUMBER;
-    hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
-        getU1HourExpCnt());
-    hash = (37 * hash) + U1HOURCLICKCNT_FIELD_NUMBER;
-    hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
-        getU1HourClickCnt());
-    hash = (37 * hash) + U1HOURSHARECNT_FIELD_NUMBER;
-    hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
-        getU1HourShareCnt());
-    hash = (37 * hash) + U1HOURRETURNCNT_FIELD_NUMBER;
-    hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
-        getU1HourReturnCnt());
-    hash = (37 * hash) + UCTR1HOUR_FIELD_NUMBER;
-    hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
-        java.lang.Double.doubleToLongBits(getUCtr1Hour()));
-    hash = (37 * hash) + USTR1HOUR_FIELD_NUMBER;
-    hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
-        java.lang.Double.doubleToLongBits(getUStr1Hour()));
-    hash = (37 * hash) + UROV1HOUR_FIELD_NUMBER;
-    hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
-        java.lang.Double.doubleToLongBits(getURov1Hour()));
-    hash = (37 * hash) + UROS1HOUR_FIELD_NUMBER;
-    hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
-        java.lang.Double.doubleToLongBits(getURos1Hour()));
-    hash = (37 * hash) + UTODAYEXPCNT_FIELD_NUMBER;
-    hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
-        getUTodayExpCnt());
-    hash = (37 * hash) + UTODAYCLICKCNT_FIELD_NUMBER;
-    hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
-        getUTodayClickCnt());
-    hash = (37 * hash) + UTODAYSHARECNT_FIELD_NUMBER;
-    hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
-        getUTodayShareCnt());
-    hash = (37 * hash) + UTODAYRETURNCNT_FIELD_NUMBER;
-    hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
-        getUTodayReturnCnt());
-    hash = (37 * hash) + UCTRTODAY_FIELD_NUMBER;
-    hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
-        java.lang.Double.doubleToLongBits(getUCtrToday()));
-    hash = (37 * hash) + USTRTODAY_FIELD_NUMBER;
-    hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
-        java.lang.Double.doubleToLongBits(getUStrToday()));
-    hash = (37 * hash) + UROVTODAY_FIELD_NUMBER;
-    hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
-        java.lang.Double.doubleToLongBits(getURovToday()));
-    hash = (37 * hash) + UROSTODAY_FIELD_NUMBER;
-    hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
-        java.lang.Double.doubleToLongBits(getURosToday()));
-    hash = (37 * hash) + U1DAYEXPCNT_FIELD_NUMBER;
-    hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
-        getU1DayExpCnt());
-    hash = (37 * hash) + U1DAYCLICKCNT_FIELD_NUMBER;
-    hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
-        getU1DayClickCnt());
-    hash = (37 * hash) + U1DAYSHARECNT_FIELD_NUMBER;
-    hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
-        getU1DayShareCnt());
-    hash = (37 * hash) + U1DAYRETURNCNT_FIELD_NUMBER;
-    hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
-        getU1DayReturnCnt());
-    hash = (37 * hash) + UCTR1DAY_FIELD_NUMBER;
-    hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
-        java.lang.Double.doubleToLongBits(getUCtr1Day()));
-    hash = (37 * hash) + USTR1DAY_FIELD_NUMBER;
-    hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
-        java.lang.Double.doubleToLongBits(getUStr1Day()));
-    hash = (37 * hash) + UROV1DAY_FIELD_NUMBER;
-    hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
-        java.lang.Double.doubleToLongBits(getURov1Day()));
-    hash = (37 * hash) + UROS1DAY_FIELD_NUMBER;
-    hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
-        java.lang.Double.doubleToLongBits(getURos1Day()));
-    hash = (37 * hash) + U3DAYEXPCNT_FIELD_NUMBER;
-    hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
-        getU3DayExpCnt());
-    hash = (37 * hash) + U3DAYCLICKCNT_FIELD_NUMBER;
-    hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
-        getU3DayClickCnt());
-    hash = (37 * hash) + U3DAYSHARECNT_FIELD_NUMBER;
-    hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
-        getU3DayShareCnt());
-    hash = (37 * hash) + U3DAYRETURNCNT_FIELD_NUMBER;
-    hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
-        getU3DayReturnCnt());
-    hash = (37 * hash) + UCTR3DAY_FIELD_NUMBER;
-    hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
-        java.lang.Double.doubleToLongBits(getUCtr3Day()));
-    hash = (37 * hash) + USTR3DAY_FIELD_NUMBER;
-    hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
-        java.lang.Double.doubleToLongBits(getUStr3Day()));
-    hash = (37 * hash) + UROV3DAY_FIELD_NUMBER;
-    hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
-        java.lang.Double.doubleToLongBits(getURov3Day()));
-    hash = (37 * hash) + UROS3DAY_FIELD_NUMBER;
-    hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
-        java.lang.Double.doubleToLongBits(getURos3Day()));
-    hash = (37 * hash) + MID_FIELD_NUMBER;
-    hash = (53 * hash) + getMid().hashCode();
-    hash = (37 * hash) + MACHINEINFOBRAND_FIELD_NUMBER;
-    hash = (53 * hash) + getMachineinfoBrand().hashCode();
-    hash = (37 * hash) + MACHINEINFOMODEL_FIELD_NUMBER;
-    hash = (53 * hash) + getMachineinfoModel().hashCode();
-    hash = (37 * hash) + MACHINEINFOSYSTEM_FIELD_NUMBER;
-    hash = (53 * hash) + getMachineinfoSystem().hashCode();
-    hash = (37 * hash) + MACHINEINFOPLATFORM_FIELD_NUMBER;
-    hash = (53 * hash) + getMachineinfoPlatform().hashCode();
-    hash = (37 * hash) + GENDER_FIELD_NUMBER;
-    hash = (53 * hash) + getGender().hashCode();
-    hash = (37 * hash) + COUNTRY_FIELD_NUMBER;
-    hash = (53 * hash) + getCountry().hashCode();
-    hash = (37 * hash) + PROVINCE_FIELD_NUMBER;
-    hash = (53 * hash) + getProvince().hashCode();
-    hash = (37 * hash) + CITY_FIELD_NUMBER;
-    hash = (53 * hash) + getCity().hashCode();
-    hash = (29 * hash) + unknownFields.hashCode();
-    memoizedHashCode = hash;
-    return hash;
-  }
-
-  public static com.tzld.piaoquan.recommend.feature.model.feature.GetUserFeatureInfoResponse parseFrom(
-      java.nio.ByteBuffer data)
-      throws com.google.protobuf.InvalidProtocolBufferException {
-    return PARSER.parseFrom(data);
-  }
-  public static com.tzld.piaoquan.recommend.feature.model.feature.GetUserFeatureInfoResponse parseFrom(
-      java.nio.ByteBuffer data,
-      com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-      throws com.google.protobuf.InvalidProtocolBufferException {
-    return PARSER.parseFrom(data, extensionRegistry);
-  }
-  public static com.tzld.piaoquan.recommend.feature.model.feature.GetUserFeatureInfoResponse parseFrom(
-      com.google.protobuf.ByteString data)
-      throws com.google.protobuf.InvalidProtocolBufferException {
-    return PARSER.parseFrom(data);
-  }
-  public static com.tzld.piaoquan.recommend.feature.model.feature.GetUserFeatureInfoResponse parseFrom(
-      com.google.protobuf.ByteString data,
-      com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-      throws com.google.protobuf.InvalidProtocolBufferException {
-    return PARSER.parseFrom(data, extensionRegistry);
-  }
-  public static com.tzld.piaoquan.recommend.feature.model.feature.GetUserFeatureInfoResponse parseFrom(byte[] data)
-      throws com.google.protobuf.InvalidProtocolBufferException {
-    return PARSER.parseFrom(data);
-  }
-  public static com.tzld.piaoquan.recommend.feature.model.feature.GetUserFeatureInfoResponse parseFrom(
-      byte[] data,
-      com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-      throws com.google.protobuf.InvalidProtocolBufferException {
-    return PARSER.parseFrom(data, extensionRegistry);
-  }
-  public static com.tzld.piaoquan.recommend.feature.model.feature.GetUserFeatureInfoResponse parseFrom(java.io.InputStream input)
-      throws java.io.IOException {
-    return com.google.protobuf.GeneratedMessageV3
-        .parseWithIOException(PARSER, input);
-  }
-  public static com.tzld.piaoquan.recommend.feature.model.feature.GetUserFeatureInfoResponse parseFrom(
-      java.io.InputStream input,
-      com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-      throws java.io.IOException {
-    return com.google.protobuf.GeneratedMessageV3
-        .parseWithIOException(PARSER, input, extensionRegistry);
-  }
-  public static com.tzld.piaoquan.recommend.feature.model.feature.GetUserFeatureInfoResponse parseDelimitedFrom(java.io.InputStream input)
-      throws java.io.IOException {
-    return com.google.protobuf.GeneratedMessageV3
-        .parseDelimitedWithIOException(PARSER, input);
-  }
-  public static com.tzld.piaoquan.recommend.feature.model.feature.GetUserFeatureInfoResponse parseDelimitedFrom(
-      java.io.InputStream input,
-      com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-      throws java.io.IOException {
-    return com.google.protobuf.GeneratedMessageV3
-        .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
-  }
-  public static com.tzld.piaoquan.recommend.feature.model.feature.GetUserFeatureInfoResponse parseFrom(
-      com.google.protobuf.CodedInputStream input)
-      throws java.io.IOException {
-    return com.google.protobuf.GeneratedMessageV3
-        .parseWithIOException(PARSER, input);
-  }
-  public static com.tzld.piaoquan.recommend.feature.model.feature.GetUserFeatureInfoResponse parseFrom(
-      com.google.protobuf.CodedInputStream input,
-      com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-      throws java.io.IOException {
-    return com.google.protobuf.GeneratedMessageV3
-        .parseWithIOException(PARSER, input, extensionRegistry);
-  }
-
-  @java.lang.Override
-  public Builder newBuilderForType() { return newBuilder(); }
-  public static Builder newBuilder() {
-    return DEFAULT_INSTANCE.toBuilder();
-  }
-  public static Builder newBuilder(com.tzld.piaoquan.recommend.feature.model.feature.GetUserFeatureInfoResponse prototype) {
-    return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
-  }
-  @java.lang.Override
-  public Builder toBuilder() {
-    return this == DEFAULT_INSTANCE
-        ? new Builder() : new Builder().mergeFrom(this);
-  }
-
-  @java.lang.Override
-  protected Builder newBuilderForType(
-      com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
-    Builder builder = new Builder(parent);
-    return builder;
-  }
-  /**
-   * Protobuf type {@code GetUserFeatureInfoResponse}
-   */
-  public static final class Builder extends
-      com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
-      // @@protoc_insertion_point(builder_implements:GetUserFeatureInfoResponse)
-      com.tzld.piaoquan.recommend.feature.model.feature.GetUserFeatureInfoResponseOrBuilder {
-    public static final com.google.protobuf.Descriptors.Descriptor
-        getDescriptor() {
-      return com.tzld.piaoquan.recommend.feature.model.feature.Feature.internal_static_GetUserFeatureInfoResponse_descriptor;
-    }
-
-    @java.lang.Override
-    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-        internalGetFieldAccessorTable() {
-      return com.tzld.piaoquan.recommend.feature.model.feature.Feature.internal_static_GetUserFeatureInfoResponse_fieldAccessorTable
-          .ensureFieldAccessorsInitialized(
-              com.tzld.piaoquan.recommend.feature.model.feature.GetUserFeatureInfoResponse.class, com.tzld.piaoquan.recommend.feature.model.feature.GetUserFeatureInfoResponse.Builder.class);
-    }
-
-    // Construct using com.tzld.piaoquan.recommend.feature.model.feature.GetUserFeatureInfoResponse.newBuilder()
-    private Builder() {
-      maybeForceBuilderInitialization();
-    }
-
-    private Builder(
-        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
-      super(parent);
-      maybeForceBuilderInitialization();
-    }
-    private void maybeForceBuilderInitialization() {
-      if (com.google.protobuf.GeneratedMessageV3
-              .alwaysUseFieldBuilders) {
-      }
-    }
-    @java.lang.Override
-    public Builder clear() {
-      super.clear();
-      u1HourExpCnt_ = 0L;
-
-      u1HourClickCnt_ = 0L;
-
-      u1HourShareCnt_ = 0L;
-
-      u1HourReturnCnt_ = 0L;
-
-      uCtr1Hour_ = 0D;
-
-      uStr1Hour_ = 0D;
-
-      uRov1Hour_ = 0D;
-
-      uRos1Hour_ = 0D;
-
-      uTodayExpCnt_ = 0L;
-
-      uTodayClickCnt_ = 0L;
-
-      uTodayShareCnt_ = 0L;
-
-      uTodayReturnCnt_ = 0L;
-
-      uCtrToday_ = 0D;
-
-      uStrToday_ = 0D;
-
-      uRovToday_ = 0D;
-
-      uRosToday_ = 0D;
-
-      u1DayExpCnt_ = 0L;
-
-      u1DayClickCnt_ = 0L;
-
-      u1DayShareCnt_ = 0L;
-
-      u1DayReturnCnt_ = 0L;
-
-      uCtr1Day_ = 0D;
-
-      uStr1Day_ = 0D;
-
-      uRov1Day_ = 0D;
-
-      uRos1Day_ = 0D;
-
-      u3DayExpCnt_ = 0L;
-
-      u3DayClickCnt_ = 0L;
-
-      u3DayShareCnt_ = 0L;
-
-      u3DayReturnCnt_ = 0L;
-
-      uCtr3Day_ = 0D;
-
-      uStr3Day_ = 0D;
-
-      uRov3Day_ = 0D;
-
-      uRos3Day_ = 0D;
-
-      mid_ = "";
-
-      machineinfoBrand_ = "";
-
-      machineinfoModel_ = "";
-
-      machineinfoSystem_ = "";
-
-      machineinfoPlatform_ = "";
-
-      gender_ = "";
-
-      country_ = "";
-
-      province_ = "";
-
-      city_ = "";
-
-      return this;
-    }
-
-    @java.lang.Override
-    public com.google.protobuf.Descriptors.Descriptor
-        getDescriptorForType() {
-      return com.tzld.piaoquan.recommend.feature.model.feature.Feature.internal_static_GetUserFeatureInfoResponse_descriptor;
-    }
-
-    @java.lang.Override
-    public com.tzld.piaoquan.recommend.feature.model.feature.GetUserFeatureInfoResponse getDefaultInstanceForType() {
-      return com.tzld.piaoquan.recommend.feature.model.feature.GetUserFeatureInfoResponse.getDefaultInstance();
-    }
-
-    @java.lang.Override
-    public com.tzld.piaoquan.recommend.feature.model.feature.GetUserFeatureInfoResponse build() {
-      com.tzld.piaoquan.recommend.feature.model.feature.GetUserFeatureInfoResponse result = buildPartial();
-      if (!result.isInitialized()) {
-        throw newUninitializedMessageException(result);
-      }
-      return result;
-    }
-
-    @java.lang.Override
-    public com.tzld.piaoquan.recommend.feature.model.feature.GetUserFeatureInfoResponse buildPartial() {
-      com.tzld.piaoquan.recommend.feature.model.feature.GetUserFeatureInfoResponse result = new com.tzld.piaoquan.recommend.feature.model.feature.GetUserFeatureInfoResponse(this);
-      result.u1HourExpCnt_ = u1HourExpCnt_;
-      result.u1HourClickCnt_ = u1HourClickCnt_;
-      result.u1HourShareCnt_ = u1HourShareCnt_;
-      result.u1HourReturnCnt_ = u1HourReturnCnt_;
-      result.uCtr1Hour_ = uCtr1Hour_;
-      result.uStr1Hour_ = uStr1Hour_;
-      result.uRov1Hour_ = uRov1Hour_;
-      result.uRos1Hour_ = uRos1Hour_;
-      result.uTodayExpCnt_ = uTodayExpCnt_;
-      result.uTodayClickCnt_ = uTodayClickCnt_;
-      result.uTodayShareCnt_ = uTodayShareCnt_;
-      result.uTodayReturnCnt_ = uTodayReturnCnt_;
-      result.uCtrToday_ = uCtrToday_;
-      result.uStrToday_ = uStrToday_;
-      result.uRovToday_ = uRovToday_;
-      result.uRosToday_ = uRosToday_;
-      result.u1DayExpCnt_ = u1DayExpCnt_;
-      result.u1DayClickCnt_ = u1DayClickCnt_;
-      result.u1DayShareCnt_ = u1DayShareCnt_;
-      result.u1DayReturnCnt_ = u1DayReturnCnt_;
-      result.uCtr1Day_ = uCtr1Day_;
-      result.uStr1Day_ = uStr1Day_;
-      result.uRov1Day_ = uRov1Day_;
-      result.uRos1Day_ = uRos1Day_;
-      result.u3DayExpCnt_ = u3DayExpCnt_;
-      result.u3DayClickCnt_ = u3DayClickCnt_;
-      result.u3DayShareCnt_ = u3DayShareCnt_;
-      result.u3DayReturnCnt_ = u3DayReturnCnt_;
-      result.uCtr3Day_ = uCtr3Day_;
-      result.uStr3Day_ = uStr3Day_;
-      result.uRov3Day_ = uRov3Day_;
-      result.uRos3Day_ = uRos3Day_;
-      result.mid_ = mid_;
-      result.machineinfoBrand_ = machineinfoBrand_;
-      result.machineinfoModel_ = machineinfoModel_;
-      result.machineinfoSystem_ = machineinfoSystem_;
-      result.machineinfoPlatform_ = machineinfoPlatform_;
-      result.gender_ = gender_;
-      result.country_ = country_;
-      result.province_ = province_;
-      result.city_ = city_;
-      onBuilt();
-      return result;
-    }
-
-    @java.lang.Override
-    public Builder clone() {
-      return super.clone();
-    }
-    @java.lang.Override
-    public Builder setField(
-        com.google.protobuf.Descriptors.FieldDescriptor field,
-        java.lang.Object value) {
-      return super.setField(field, value);
-    }
-    @java.lang.Override
-    public Builder clearField(
-        com.google.protobuf.Descriptors.FieldDescriptor field) {
-      return super.clearField(field);
-    }
-    @java.lang.Override
-    public Builder clearOneof(
-        com.google.protobuf.Descriptors.OneofDescriptor oneof) {
-      return super.clearOneof(oneof);
-    }
-    @java.lang.Override
-    public Builder setRepeatedField(
-        com.google.protobuf.Descriptors.FieldDescriptor field,
-        int index, java.lang.Object value) {
-      return super.setRepeatedField(field, index, value);
-    }
-    @java.lang.Override
-    public Builder addRepeatedField(
-        com.google.protobuf.Descriptors.FieldDescriptor field,
-        java.lang.Object value) {
-      return super.addRepeatedField(field, value);
-    }
-    @java.lang.Override
-    public Builder mergeFrom(com.google.protobuf.Message other) {
-      if (other instanceof com.tzld.piaoquan.recommend.feature.model.feature.GetUserFeatureInfoResponse) {
-        return mergeFrom((com.tzld.piaoquan.recommend.feature.model.feature.GetUserFeatureInfoResponse)other);
-      } else {
-        super.mergeFrom(other);
-        return this;
-      }
-    }
-
-    public Builder mergeFrom(com.tzld.piaoquan.recommend.feature.model.feature.GetUserFeatureInfoResponse other) {
-      if (other == com.tzld.piaoquan.recommend.feature.model.feature.GetUserFeatureInfoResponse.getDefaultInstance()) return this;
-      if (other.getU1HourExpCnt() != 0L) {
-        setU1HourExpCnt(other.getU1HourExpCnt());
-      }
-      if (other.getU1HourClickCnt() != 0L) {
-        setU1HourClickCnt(other.getU1HourClickCnt());
-      }
-      if (other.getU1HourShareCnt() != 0L) {
-        setU1HourShareCnt(other.getU1HourShareCnt());
-      }
-      if (other.getU1HourReturnCnt() != 0L) {
-        setU1HourReturnCnt(other.getU1HourReturnCnt());
-      }
-      if (other.getUCtr1Hour() != 0D) {
-        setUCtr1Hour(other.getUCtr1Hour());
-      }
-      if (other.getUStr1Hour() != 0D) {
-        setUStr1Hour(other.getUStr1Hour());
-      }
-      if (other.getURov1Hour() != 0D) {
-        setURov1Hour(other.getURov1Hour());
-      }
-      if (other.getURos1Hour() != 0D) {
-        setURos1Hour(other.getURos1Hour());
-      }
-      if (other.getUTodayExpCnt() != 0L) {
-        setUTodayExpCnt(other.getUTodayExpCnt());
-      }
-      if (other.getUTodayClickCnt() != 0L) {
-        setUTodayClickCnt(other.getUTodayClickCnt());
-      }
-      if (other.getUTodayShareCnt() != 0L) {
-        setUTodayShareCnt(other.getUTodayShareCnt());
-      }
-      if (other.getUTodayReturnCnt() != 0L) {
-        setUTodayReturnCnt(other.getUTodayReturnCnt());
-      }
-      if (other.getUCtrToday() != 0D) {
-        setUCtrToday(other.getUCtrToday());
-      }
-      if (other.getUStrToday() != 0D) {
-        setUStrToday(other.getUStrToday());
-      }
-      if (other.getURovToday() != 0D) {
-        setURovToday(other.getURovToday());
-      }
-      if (other.getURosToday() != 0D) {
-        setURosToday(other.getURosToday());
-      }
-      if (other.getU1DayExpCnt() != 0L) {
-        setU1DayExpCnt(other.getU1DayExpCnt());
-      }
-      if (other.getU1DayClickCnt() != 0L) {
-        setU1DayClickCnt(other.getU1DayClickCnt());
-      }
-      if (other.getU1DayShareCnt() != 0L) {
-        setU1DayShareCnt(other.getU1DayShareCnt());
-      }
-      if (other.getU1DayReturnCnt() != 0L) {
-        setU1DayReturnCnt(other.getU1DayReturnCnt());
-      }
-      if (other.getUCtr1Day() != 0D) {
-        setUCtr1Day(other.getUCtr1Day());
-      }
-      if (other.getUStr1Day() != 0D) {
-        setUStr1Day(other.getUStr1Day());
-      }
-      if (other.getURov1Day() != 0D) {
-        setURov1Day(other.getURov1Day());
-      }
-      if (other.getURos1Day() != 0D) {
-        setURos1Day(other.getURos1Day());
-      }
-      if (other.getU3DayExpCnt() != 0L) {
-        setU3DayExpCnt(other.getU3DayExpCnt());
-      }
-      if (other.getU3DayClickCnt() != 0L) {
-        setU3DayClickCnt(other.getU3DayClickCnt());
-      }
-      if (other.getU3DayShareCnt() != 0L) {
-        setU3DayShareCnt(other.getU3DayShareCnt());
-      }
-      if (other.getU3DayReturnCnt() != 0L) {
-        setU3DayReturnCnt(other.getU3DayReturnCnt());
-      }
-      if (other.getUCtr3Day() != 0D) {
-        setUCtr3Day(other.getUCtr3Day());
-      }
-      if (other.getUStr3Day() != 0D) {
-        setUStr3Day(other.getUStr3Day());
-      }
-      if (other.getURov3Day() != 0D) {
-        setURov3Day(other.getURov3Day());
-      }
-      if (other.getURos3Day() != 0D) {
-        setURos3Day(other.getURos3Day());
-      }
-      if (!other.getMid().isEmpty()) {
-        mid_ = other.mid_;
-        onChanged();
-      }
-      if (!other.getMachineinfoBrand().isEmpty()) {
-        machineinfoBrand_ = other.machineinfoBrand_;
-        onChanged();
-      }
-      if (!other.getMachineinfoModel().isEmpty()) {
-        machineinfoModel_ = other.machineinfoModel_;
-        onChanged();
-      }
-      if (!other.getMachineinfoSystem().isEmpty()) {
-        machineinfoSystem_ = other.machineinfoSystem_;
-        onChanged();
-      }
-      if (!other.getMachineinfoPlatform().isEmpty()) {
-        machineinfoPlatform_ = other.machineinfoPlatform_;
-        onChanged();
-      }
-      if (!other.getGender().isEmpty()) {
-        gender_ = other.gender_;
-        onChanged();
-      }
-      if (!other.getCountry().isEmpty()) {
-        country_ = other.country_;
-        onChanged();
-      }
-      if (!other.getProvince().isEmpty()) {
-        province_ = other.province_;
-        onChanged();
-      }
-      if (!other.getCity().isEmpty()) {
-        city_ = other.city_;
-        onChanged();
-      }
-      this.mergeUnknownFields(other.unknownFields);
-      onChanged();
-      return this;
-    }
-
-    @java.lang.Override
-    public final boolean isInitialized() {
-      return true;
-    }
-
-    @java.lang.Override
-    public Builder mergeFrom(
-        com.google.protobuf.CodedInputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      com.tzld.piaoquan.recommend.feature.model.feature.GetUserFeatureInfoResponse parsedMessage = null;
-      try {
-        parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
-      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-        parsedMessage = (com.tzld.piaoquan.recommend.feature.model.feature.GetUserFeatureInfoResponse) e.getUnfinishedMessage();
-        throw e.unwrapIOException();
-      } finally {
-        if (parsedMessage != null) {
-          mergeFrom(parsedMessage);
-        }
-      }
-      return this;
-    }
-
-    private long u1HourExpCnt_ ;
-    /**
-     * <pre>
-     *过去一小时
-     * </pre>
-     *
-     * <code>int64 u1hourExpCnt = 1;</code>
-     * @return The u1hourExpCnt.
-     */
-    @java.lang.Override
-    public long getU1HourExpCnt() {
-      return u1HourExpCnt_;
-    }
-    /**
-     * <pre>
-     *过去一小时
-     * </pre>
-     *
-     * <code>int64 u1hourExpCnt = 1;</code>
-     * @param value The u1hourExpCnt to set.
-     * @return This builder for chaining.
-     */
-    public Builder setU1HourExpCnt(long value) {
-      
-      u1HourExpCnt_ = value;
-      onChanged();
-      return this;
-    }
-    /**
-     * <pre>
-     *过去一小时
-     * </pre>
-     *
-     * <code>int64 u1hourExpCnt = 1;</code>
-     * @return This builder for chaining.
-     */
-    public Builder clearU1HourExpCnt() {
-      
-      u1HourExpCnt_ = 0L;
-      onChanged();
-      return this;
-    }
-
-    private long u1HourClickCnt_ ;
-    /**
-     * <code>int64 u1hourClickCnt = 2;</code>
-     * @return The u1hourClickCnt.
-     */
-    @java.lang.Override
-    public long getU1HourClickCnt() {
-      return u1HourClickCnt_;
-    }
-    /**
-     * <code>int64 u1hourClickCnt = 2;</code>
-     * @param value The u1hourClickCnt to set.
-     * @return This builder for chaining.
-     */
-    public Builder setU1HourClickCnt(long value) {
-      
-      u1HourClickCnt_ = value;
-      onChanged();
-      return this;
-    }
-    /**
-     * <code>int64 u1hourClickCnt = 2;</code>
-     * @return This builder for chaining.
-     */
-    public Builder clearU1HourClickCnt() {
-      
-      u1HourClickCnt_ = 0L;
-      onChanged();
-      return this;
-    }
-
-    private long u1HourShareCnt_ ;
-    /**
-     * <code>int64 u1hourShareCnt = 3;</code>
-     * @return The u1hourShareCnt.
-     */
-    @java.lang.Override
-    public long getU1HourShareCnt() {
-      return u1HourShareCnt_;
-    }
-    /**
-     * <code>int64 u1hourShareCnt = 3;</code>
-     * @param value The u1hourShareCnt to set.
-     * @return This builder for chaining.
-     */
-    public Builder setU1HourShareCnt(long value) {
-      
-      u1HourShareCnt_ = value;
-      onChanged();
-      return this;
-    }
-    /**
-     * <code>int64 u1hourShareCnt = 3;</code>
-     * @return This builder for chaining.
-     */
-    public Builder clearU1HourShareCnt() {
-      
-      u1HourShareCnt_ = 0L;
-      onChanged();
-      return this;
-    }
-
-    private long u1HourReturnCnt_ ;
-    /**
-     * <code>int64 u1hourReturnCnt = 4;</code>
-     * @return The u1hourReturnCnt.
-     */
-    @java.lang.Override
-    public long getU1HourReturnCnt() {
-      return u1HourReturnCnt_;
-    }
-    /**
-     * <code>int64 u1hourReturnCnt = 4;</code>
-     * @param value The u1hourReturnCnt to set.
-     * @return This builder for chaining.
-     */
-    public Builder setU1HourReturnCnt(long value) {
-      
-      u1HourReturnCnt_ = value;
-      onChanged();
-      return this;
-    }
-    /**
-     * <code>int64 u1hourReturnCnt = 4;</code>
-     * @return This builder for chaining.
-     */
-    public Builder clearU1HourReturnCnt() {
-      
-      u1HourReturnCnt_ = 0L;
-      onChanged();
-      return this;
-    }
-
-    private double uCtr1Hour_ ;
-    /**
-     * <code>double uCtr1hour = 5;</code>
-     * @return The uCtr1hour.
-     */
-    @java.lang.Override
-    public double getUCtr1Hour() {
-      return uCtr1Hour_;
-    }
-    /**
-     * <code>double uCtr1hour = 5;</code>
-     * @param value The uCtr1hour to set.
-     * @return This builder for chaining.
-     */
-    public Builder setUCtr1Hour(double value) {
-      
-      uCtr1Hour_ = value;
-      onChanged();
-      return this;
-    }
-    /**
-     * <code>double uCtr1hour = 5;</code>
-     * @return This builder for chaining.
-     */
-    public Builder clearUCtr1Hour() {
-      
-      uCtr1Hour_ = 0D;
-      onChanged();
-      return this;
-    }
-
-    private double uStr1Hour_ ;
-    /**
-     * <code>double uStr1hour = 6;</code>
-     * @return The uStr1hour.
-     */
-    @java.lang.Override
-    public double getUStr1Hour() {
-      return uStr1Hour_;
-    }
-    /**
-     * <code>double uStr1hour = 6;</code>
-     * @param value The uStr1hour to set.
-     * @return This builder for chaining.
-     */
-    public Builder setUStr1Hour(double value) {
-      
-      uStr1Hour_ = value;
-      onChanged();
-      return this;
-    }
-    /**
-     * <code>double uStr1hour = 6;</code>
-     * @return This builder for chaining.
-     */
-    public Builder clearUStr1Hour() {
-      
-      uStr1Hour_ = 0D;
-      onChanged();
-      return this;
-    }
-
-    private double uRov1Hour_ ;
-    /**
-     * <code>double uRov1hour = 7;</code>
-     * @return The uRov1hour.
-     */
-    @java.lang.Override
-    public double getURov1Hour() {
-      return uRov1Hour_;
-    }
-    /**
-     * <code>double uRov1hour = 7;</code>
-     * @param value The uRov1hour to set.
-     * @return This builder for chaining.
-     */
-    public Builder setURov1Hour(double value) {
-      
-      uRov1Hour_ = value;
-      onChanged();
-      return this;
-    }
-    /**
-     * <code>double uRov1hour = 7;</code>
-     * @return This builder for chaining.
-     */
-    public Builder clearURov1Hour() {
-      
-      uRov1Hour_ = 0D;
-      onChanged();
-      return this;
-    }
-
-    private double uRos1Hour_ ;
-    /**
-     * <code>double uRos1hour = 8;</code>
-     * @return The uRos1hour.
-     */
-    @java.lang.Override
-    public double getURos1Hour() {
-      return uRos1Hour_;
-    }
-    /**
-     * <code>double uRos1hour = 8;</code>
-     * @param value The uRos1hour to set.
-     * @return This builder for chaining.
-     */
-    public Builder setURos1Hour(double value) {
-      
-      uRos1Hour_ = value;
-      onChanged();
-      return this;
-    }
-    /**
-     * <code>double uRos1hour = 8;</code>
-     * @return This builder for chaining.
-     */
-    public Builder clearURos1Hour() {
-      
-      uRos1Hour_ = 0D;
-      onChanged();
-      return this;
-    }
-
-    private long uTodayExpCnt_ ;
-    /**
-     * <pre>
-     *今天
-     * </pre>
-     *
-     * <code>int64 uTodayExpCnt = 9;</code>
-     * @return The uTodayExpCnt.
-     */
-    @java.lang.Override
-    public long getUTodayExpCnt() {
-      return uTodayExpCnt_;
-    }
-    /**
-     * <pre>
-     *今天
-     * </pre>
-     *
-     * <code>int64 uTodayExpCnt = 9;</code>
-     * @param value The uTodayExpCnt to set.
-     * @return This builder for chaining.
-     */
-    public Builder setUTodayExpCnt(long value) {
-      
-      uTodayExpCnt_ = value;
-      onChanged();
-      return this;
-    }
-    /**
-     * <pre>
-     *今天
-     * </pre>
-     *
-     * <code>int64 uTodayExpCnt = 9;</code>
-     * @return This builder for chaining.
-     */
-    public Builder clearUTodayExpCnt() {
-      
-      uTodayExpCnt_ = 0L;
-      onChanged();
-      return this;
-    }
-
-    private long uTodayClickCnt_ ;
-    /**
-     * <code>int64 uTodayClickCnt = 10;</code>
-     * @return The uTodayClickCnt.
-     */
-    @java.lang.Override
-    public long getUTodayClickCnt() {
-      return uTodayClickCnt_;
-    }
-    /**
-     * <code>int64 uTodayClickCnt = 10;</code>
-     * @param value The uTodayClickCnt to set.
-     * @return This builder for chaining.
-     */
-    public Builder setUTodayClickCnt(long value) {
-      
-      uTodayClickCnt_ = value;
-      onChanged();
-      return this;
-    }
-    /**
-     * <code>int64 uTodayClickCnt = 10;</code>
-     * @return This builder for chaining.
-     */
-    public Builder clearUTodayClickCnt() {
-      
-      uTodayClickCnt_ = 0L;
-      onChanged();
-      return this;
-    }
-
-    private long uTodayShareCnt_ ;
-    /**
-     * <code>int64 uTodayShareCnt = 11;</code>
-     * @return The uTodayShareCnt.
-     */
-    @java.lang.Override
-    public long getUTodayShareCnt() {
-      return uTodayShareCnt_;
-    }
-    /**
-     * <code>int64 uTodayShareCnt = 11;</code>
-     * @param value The uTodayShareCnt to set.
-     * @return This builder for chaining.
-     */
-    public Builder setUTodayShareCnt(long value) {
-      
-      uTodayShareCnt_ = value;
-      onChanged();
-      return this;
-    }
-    /**
-     * <code>int64 uTodayShareCnt = 11;</code>
-     * @return This builder for chaining.
-     */
-    public Builder clearUTodayShareCnt() {
-      
-      uTodayShareCnt_ = 0L;
-      onChanged();
-      return this;
-    }
-
-    private long uTodayReturnCnt_ ;
-    /**
-     * <code>int64 uTodayReturnCnt = 12;</code>
-     * @return The uTodayReturnCnt.
-     */
-    @java.lang.Override
-    public long getUTodayReturnCnt() {
-      return uTodayReturnCnt_;
-    }
-    /**
-     * <code>int64 uTodayReturnCnt = 12;</code>
-     * @param value The uTodayReturnCnt to set.
-     * @return This builder for chaining.
-     */
-    public Builder setUTodayReturnCnt(long value) {
-      
-      uTodayReturnCnt_ = value;
-      onChanged();
-      return this;
-    }
-    /**
-     * <code>int64 uTodayReturnCnt = 12;</code>
-     * @return This builder for chaining.
-     */
-    public Builder clearUTodayReturnCnt() {
-      
-      uTodayReturnCnt_ = 0L;
-      onChanged();
-      return this;
-    }
-
-    private double uCtrToday_ ;
-    /**
-     * <code>double uCtrToday = 13;</code>
-     * @return The uCtrToday.
-     */
-    @java.lang.Override
-    public double getUCtrToday() {
-      return uCtrToday_;
-    }
-    /**
-     * <code>double uCtrToday = 13;</code>
-     * @param value The uCtrToday to set.
-     * @return This builder for chaining.
-     */
-    public Builder setUCtrToday(double value) {
-      
-      uCtrToday_ = value;
-      onChanged();
-      return this;
-    }
-    /**
-     * <code>double uCtrToday = 13;</code>
-     * @return This builder for chaining.
-     */
-    public Builder clearUCtrToday() {
-      
-      uCtrToday_ = 0D;
-      onChanged();
-      return this;
-    }
-
-    private double uStrToday_ ;
-    /**
-     * <code>double uStrToday = 14;</code>
-     * @return The uStrToday.
-     */
-    @java.lang.Override
-    public double getUStrToday() {
-      return uStrToday_;
-    }
-    /**
-     * <code>double uStrToday = 14;</code>
-     * @param value The uStrToday to set.
-     * @return This builder for chaining.
-     */
-    public Builder setUStrToday(double value) {
-      
-      uStrToday_ = value;
-      onChanged();
-      return this;
-    }
-    /**
-     * <code>double uStrToday = 14;</code>
-     * @return This builder for chaining.
-     */
-    public Builder clearUStrToday() {
-      
-      uStrToday_ = 0D;
-      onChanged();
-      return this;
-    }
-
-    private double uRovToday_ ;
-    /**
-     * <code>double uRovToday = 15;</code>
-     * @return The uRovToday.
-     */
-    @java.lang.Override
-    public double getURovToday() {
-      return uRovToday_;
-    }
-    /**
-     * <code>double uRovToday = 15;</code>
-     * @param value The uRovToday to set.
-     * @return This builder for chaining.
-     */
-    public Builder setURovToday(double value) {
-      
-      uRovToday_ = value;
-      onChanged();
-      return this;
-    }
-    /**
-     * <code>double uRovToday = 15;</code>
-     * @return This builder for chaining.
-     */
-    public Builder clearURovToday() {
-      
-      uRovToday_ = 0D;
-      onChanged();
-      return this;
-    }
-
-    private double uRosToday_ ;
-    /**
-     * <code>double uRosToday = 16;</code>
-     * @return The uRosToday.
-     */
     @java.lang.Override
-    public double getURosToday() {
-      return uRosToday_;
-    }
-    /**
-     * <code>double uRosToday = 16;</code>
-     * @param value The uRosToday to set.
-     * @return This builder for chaining.
-     */
-    public Builder setURosToday(double value) {
-      
-      uRosToday_ = value;
-      onChanged();
-      return this;
-    }
-    /**
-     * <code>double uRosToday = 16;</code>
-     * @return This builder for chaining.
-     */
-    public Builder clearURosToday() {
-      
-      uRosToday_ = 0D;
-      onChanged();
-      return this;
-    }
-
-    private long u1DayExpCnt_ ;
-    /**
-     * <pre>
-     *过去一天
-     * </pre>
-     *
-     * <code>int64 u1dayExpCnt = 17;</code>
-     * @return The u1dayExpCnt.
-     */
-    @java.lang.Override
-    public long getU1DayExpCnt() {
-      return u1DayExpCnt_;
-    }
-    /**
-     * <pre>
-     *过去一天
-     * </pre>
-     *
-     * <code>int64 u1dayExpCnt = 17;</code>
-     * @param value The u1dayExpCnt to set.
-     * @return This builder for chaining.
-     */
-    public Builder setU1DayExpCnt(long value) {
-      
-      u1DayExpCnt_ = value;
-      onChanged();
-      return this;
-    }
-    /**
-     * <pre>
-     *过去一天
-     * </pre>
-     *
-     * <code>int64 u1dayExpCnt = 17;</code>
-     * @return This builder for chaining.
-     */
-    public Builder clearU1DayExpCnt() {
-      
-      u1DayExpCnt_ = 0L;
-      onChanged();
-      return this;
-    }
-
-    private long u1DayClickCnt_ ;
-    /**
-     * <code>int64 u1dayClickCnt = 18;</code>
-     * @return The u1dayClickCnt.
-     */
-    @java.lang.Override
-    public long getU1DayClickCnt() {
-      return u1DayClickCnt_;
-    }
-    /**
-     * <code>int64 u1dayClickCnt = 18;</code>
-     * @param value The u1dayClickCnt to set.
-     * @return This builder for chaining.
-     */
-    public Builder setU1DayClickCnt(long value) {
-      
-      u1DayClickCnt_ = value;
-      onChanged();
-      return this;
-    }
-    /**
-     * <code>int64 u1dayClickCnt = 18;</code>
-     * @return This builder for chaining.
-     */
-    public Builder clearU1DayClickCnt() {
-      
-      u1DayClickCnt_ = 0L;
-      onChanged();
-      return this;
-    }
-
-    private long u1DayShareCnt_ ;
-    /**
-     * <code>int64 u1dayShareCnt = 19;</code>
-     * @return The u1dayShareCnt.
-     */
-    @java.lang.Override
-    public long getU1DayShareCnt() {
-      return u1DayShareCnt_;
-    }
-    /**
-     * <code>int64 u1dayShareCnt = 19;</code>
-     * @param value The u1dayShareCnt to set.
-     * @return This builder for chaining.
-     */
-    public Builder setU1DayShareCnt(long value) {
-      
-      u1DayShareCnt_ = value;
-      onChanged();
-      return this;
-    }
-    /**
-     * <code>int64 u1dayShareCnt = 19;</code>
-     * @return This builder for chaining.
-     */
-    public Builder clearU1DayShareCnt() {
-      
-      u1DayShareCnt_ = 0L;
-      onChanged();
-      return this;
-    }
-
-    private long u1DayReturnCnt_ ;
-    /**
-     * <code>int64 u1dayReturnCnt = 20;</code>
-     * @return The u1dayReturnCnt.
-     */
-    @java.lang.Override
-    public long getU1DayReturnCnt() {
-      return u1DayReturnCnt_;
-    }
-    /**
-     * <code>int64 u1dayReturnCnt = 20;</code>
-     * @param value The u1dayReturnCnt to set.
-     * @return This builder for chaining.
-     */
-    public Builder setU1DayReturnCnt(long value) {
-      
-      u1DayReturnCnt_ = value;
-      onChanged();
-      return this;
-    }
-    /**
-     * <code>int64 u1dayReturnCnt = 20;</code>
-     * @return This builder for chaining.
-     */
-    public Builder clearU1DayReturnCnt() {
-      
-      u1DayReturnCnt_ = 0L;
-      onChanged();
-      return this;
-    }
-
-    private double uCtr1Day_ ;
-    /**
-     * <code>double uCtr1day = 21;</code>
-     * @return The uCtr1day.
-     */
-    @java.lang.Override
-    public double getUCtr1Day() {
-      return uCtr1Day_;
-    }
-    /**
-     * <code>double uCtr1day = 21;</code>
-     * @param value The uCtr1day to set.
-     * @return This builder for chaining.
-     */
-    public Builder setUCtr1Day(double value) {
-      
-      uCtr1Day_ = value;
-      onChanged();
-      return this;
-    }
-    /**
-     * <code>double uCtr1day = 21;</code>
-     * @return This builder for chaining.
-     */
-    public Builder clearUCtr1Day() {
-      
-      uCtr1Day_ = 0D;
-      onChanged();
-      return this;
-    }
-
-    private double uStr1Day_ ;
-    /**
-     * <code>double uStr1day = 22;</code>
-     * @return The uStr1day.
-     */
-    @java.lang.Override
-    public double getUStr1Day() {
-      return uStr1Day_;
-    }
-    /**
-     * <code>double uStr1day = 22;</code>
-     * @param value The uStr1day to set.
-     * @return This builder for chaining.
-     */
-    public Builder setUStr1Day(double value) {
-      
-      uStr1Day_ = value;
-      onChanged();
-      return this;
-    }
-    /**
-     * <code>double uStr1day = 22;</code>
-     * @return This builder for chaining.
-     */
-    public Builder clearUStr1Day() {
-      
-      uStr1Day_ = 0D;
-      onChanged();
-      return this;
-    }
-
-    private double uRov1Day_ ;
-    /**
-     * <code>double uRov1day = 23;</code>
-     * @return The uRov1day.
-     */
-    @java.lang.Override
-    public double getURov1Day() {
-      return uRov1Day_;
-    }
-    /**
-     * <code>double uRov1day = 23;</code>
-     * @param value The uRov1day to set.
-     * @return This builder for chaining.
-     */
-    public Builder setURov1Day(double value) {
-      
-      uRov1Day_ = value;
-      onChanged();
-      return this;
-    }
-    /**
-     * <code>double uRov1day = 23;</code>
-     * @return This builder for chaining.
-     */
-    public Builder clearURov1Day() {
-      
-      uRov1Day_ = 0D;
-      onChanged();
-      return this;
-    }
-
-    private double uRos1Day_ ;
-    /**
-     * <code>double uRos1day = 24;</code>
-     * @return The uRos1day.
-     */
-    @java.lang.Override
-    public double getURos1Day() {
-      return uRos1Day_;
-    }
-    /**
-     * <code>double uRos1day = 24;</code>
-     * @param value The uRos1day to set.
-     * @return This builder for chaining.
-     */
-    public Builder setURos1Day(double value) {
-      
-      uRos1Day_ = value;
-      onChanged();
-      return this;
-    }
-    /**
-     * <code>double uRos1day = 24;</code>
-     * @return This builder for chaining.
-     */
-    public Builder clearURos1Day() {
-      
-      uRos1Day_ = 0D;
-      onChanged();
-      return this;
-    }
-
-    private long u3DayExpCnt_ ;
-    /**
-     * <pre>
-     *过去三天
-     * </pre>
-     *
-     * <code>int64 u3dayExpCnt = 25;</code>
-     * @return The u3dayExpCnt.
-     */
-    @java.lang.Override
-    public long getU3DayExpCnt() {
-      return u3DayExpCnt_;
-    }
-    /**
-     * <pre>
-     *过去三天
-     * </pre>
-     *
-     * <code>int64 u3dayExpCnt = 25;</code>
-     * @param value The u3dayExpCnt to set.
-     * @return This builder for chaining.
-     */
-    public Builder setU3DayExpCnt(long value) {
-      
-      u3DayExpCnt_ = value;
-      onChanged();
-      return this;
-    }
-    /**
-     * <pre>
-     *过去三天
-     * </pre>
-     *
-     * <code>int64 u3dayExpCnt = 25;</code>
-     * @return This builder for chaining.
-     */
-    public Builder clearU3DayExpCnt() {
-      
-      u3DayExpCnt_ = 0L;
-      onChanged();
-      return this;
-    }
-
-    private long u3DayClickCnt_ ;
-    /**
-     * <code>int64 u3dayClickCnt = 26;</code>
-     * @return The u3dayClickCnt.
-     */
-    @java.lang.Override
-    public long getU3DayClickCnt() {
-      return u3DayClickCnt_;
-    }
-    /**
-     * <code>int64 u3dayClickCnt = 26;</code>
-     * @param value The u3dayClickCnt to set.
-     * @return This builder for chaining.
-     */
-    public Builder setU3DayClickCnt(long value) {
-      
-      u3DayClickCnt_ = value;
-      onChanged();
-      return this;
-    }
-    /**
-     * <code>int64 u3dayClickCnt = 26;</code>
-     * @return This builder for chaining.
-     */
-    public Builder clearU3DayClickCnt() {
-      
-      u3DayClickCnt_ = 0L;
-      onChanged();
-      return this;
-    }
-
-    private long u3DayShareCnt_ ;
-    /**
-     * <code>int64 u3dayShareCnt = 27;</code>
-     * @return The u3dayShareCnt.
-     */
-    @java.lang.Override
-    public long getU3DayShareCnt() {
-      return u3DayShareCnt_;
-    }
-    /**
-     * <code>int64 u3dayShareCnt = 27;</code>
-     * @param value The u3dayShareCnt to set.
-     * @return This builder for chaining.
-     */
-    public Builder setU3DayShareCnt(long value) {
-      
-      u3DayShareCnt_ = value;
-      onChanged();
-      return this;
-    }
-    /**
-     * <code>int64 u3dayShareCnt = 27;</code>
-     * @return This builder for chaining.
-     */
-    public Builder clearU3DayShareCnt() {
-      
-      u3DayShareCnt_ = 0L;
-      onChanged();
-      return this;
-    }
-
-    private long u3DayReturnCnt_ ;
-    /**
-     * <code>int64 u3dayReturnCnt = 28;</code>
-     * @return The u3dayReturnCnt.
-     */
-    @java.lang.Override
-    public long getU3DayReturnCnt() {
-      return u3DayReturnCnt_;
-    }
-    /**
-     * <code>int64 u3dayReturnCnt = 28;</code>
-     * @param value The u3dayReturnCnt to set.
-     * @return This builder for chaining.
-     */
-    public Builder setU3DayReturnCnt(long value) {
-      
-      u3DayReturnCnt_ = value;
-      onChanged();
-      return this;
-    }
-    /**
-     * <code>int64 u3dayReturnCnt = 28;</code>
-     * @return This builder for chaining.
-     */
-    public Builder clearU3DayReturnCnt() {
-      
-      u3DayReturnCnt_ = 0L;
-      onChanged();
-      return this;
-    }
-
-    private double uCtr3Day_ ;
-    /**
-     * <code>double uCtr3day = 29;</code>
-     * @return The uCtr3day.
-     */
-    @java.lang.Override
-    public double getUCtr3Day() {
-      return uCtr3Day_;
-    }
-    /**
-     * <code>double uCtr3day = 29;</code>
-     * @param value The uCtr3day to set.
-     * @return This builder for chaining.
-     */
-    public Builder setUCtr3Day(double value) {
-      
-      uCtr3Day_ = value;
-      onChanged();
-      return this;
-    }
-    /**
-     * <code>double uCtr3day = 29;</code>
-     * @return This builder for chaining.
-     */
-    public Builder clearUCtr3Day() {
-      
-      uCtr3Day_ = 0D;
-      onChanged();
-      return this;
-    }
-
-    private double uStr3Day_ ;
-    /**
-     * <code>double uStr3day = 30;</code>
-     * @return The uStr3day.
-     */
-    @java.lang.Override
-    public double getUStr3Day() {
-      return uStr3Day_;
-    }
-    /**
-     * <code>double uStr3day = 30;</code>
-     * @param value The uStr3day to set.
-     * @return This builder for chaining.
-     */
-    public Builder setUStr3Day(double value) {
-      
-      uStr3Day_ = value;
-      onChanged();
-      return this;
-    }
-    /**
-     * <code>double uStr3day = 30;</code>
-     * @return This builder for chaining.
-     */
-    public Builder clearUStr3Day() {
-      
-      uStr3Day_ = 0D;
-      onChanged();
-      return this;
-    }
-
-    private double uRov3Day_ ;
-    /**
-     * <code>double uRov3day = 31;</code>
-     * @return The uRov3day.
-     */
-    @java.lang.Override
-    public double getURov3Day() {
-      return uRov3Day_;
+    public Builder clone() {
+      return super.clone();
     }
-    /**
-     * <code>double uRov3day = 31;</code>
-     * @param value The uRov3day to set.
-     * @return This builder for chaining.
-     */
-    public Builder setURov3Day(double value) {
-      
-      uRov3Day_ = value;
-      onChanged();
-      return this;
+    @java.lang.Override
+    public Builder setField(
+        com.google.protobuf.Descriptors.FieldDescriptor field,
+        java.lang.Object value) {
+      return super.setField(field, value);
     }
-    /**
-     * <code>double uRov3day = 31;</code>
-     * @return This builder for chaining.
-     */
-    public Builder clearURov3Day() {
-      
-      uRov3Day_ = 0D;
-      onChanged();
-      return this;
+    @java.lang.Override
+    public Builder clearField(
+        com.google.protobuf.Descriptors.FieldDescriptor field) {
+      return super.clearField(field);
     }
-
-    private double uRos3Day_ ;
-    /**
-     * <code>double uRos3day = 32;</code>
-     * @return The uRos3day.
-     */
     @java.lang.Override
-    public double getURos3Day() {
-      return uRos3Day_;
+    public Builder clearOneof(
+        com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+      return super.clearOneof(oneof);
     }
-    /**
-     * <code>double uRos3day = 32;</code>
-     * @param value The uRos3day to set.
-     * @return This builder for chaining.
-     */
-    public Builder setURos3Day(double value) {
-      
-      uRos3Day_ = value;
-      onChanged();
-      return this;
+    @java.lang.Override
+    public Builder setRepeatedField(
+        com.google.protobuf.Descriptors.FieldDescriptor field,
+        int index, java.lang.Object value) {
+      return super.setRepeatedField(field, index, value);
     }
-    /**
-     * <code>double uRos3day = 32;</code>
-     * @return This builder for chaining.
-     */
-    public Builder clearURos3Day() {
-      
-      uRos3Day_ = 0D;
-      onChanged();
-      return this;
+    @java.lang.Override
+    public Builder addRepeatedField(
+        com.google.protobuf.Descriptors.FieldDescriptor field,
+        java.lang.Object value) {
+      return super.addRepeatedField(field, value);
     }
-
-    private java.lang.Object mid_ = "";
-    /**
-     * <code>string mid = 33;</code>
-     * @return The mid.
-     */
-    public java.lang.String getMid() {
-      java.lang.Object ref = mid_;
-      if (!(ref instanceof java.lang.String)) {
-        com.google.protobuf.ByteString bs =
-            (com.google.protobuf.ByteString) ref;
-        java.lang.String s = bs.toStringUtf8();
-        mid_ = s;
-        return s;
+    @java.lang.Override
+    public Builder mergeFrom(com.google.protobuf.Message other) {
+      if (other instanceof com.tzld.piaoquan.recommend.feature.model.feature.GetUserFeatureInfoResponse) {
+        return mergeFrom((com.tzld.piaoquan.recommend.feature.model.feature.GetUserFeatureInfoResponse)other);
       } else {
-        return (java.lang.String) ref;
+        super.mergeFrom(other);
+        return this;
       }
     }
-    /**
-     * <code>string mid = 33;</code>
-     * @return The bytes for mid.
-     */
-    public com.google.protobuf.ByteString
-        getMidBytes() {
-      java.lang.Object ref = mid_;
-      if (ref instanceof String) {
-        com.google.protobuf.ByteString b = 
-            com.google.protobuf.ByteString.copyFromUtf8(
-                (java.lang.String) ref);
-        mid_ = b;
-        return b;
+
+    public Builder mergeFrom(com.tzld.piaoquan.recommend.feature.model.feature.GetUserFeatureInfoResponse other) {
+      if (other == com.tzld.piaoquan.recommend.feature.model.feature.GetUserFeatureInfoResponse.getDefaultInstance()) return this;
+      if (other.hasResult()) {
+        mergeResult(other.getResult());
+      }
+      if (userFeatureInfoBuilder_ == null) {
+        if (!other.userFeatureInfo_.isEmpty()) {
+          if (userFeatureInfo_.isEmpty()) {
+            userFeatureInfo_ = other.userFeatureInfo_;
+            bitField0_ = (bitField0_ & ~0x00000001);
+          } else {
+            ensureUserFeatureInfoIsMutable();
+            userFeatureInfo_.addAll(other.userFeatureInfo_);
+          }
+          onChanged();
+        }
       } else {
-        return (com.google.protobuf.ByteString) ref;
+        if (!other.userFeatureInfo_.isEmpty()) {
+          if (userFeatureInfoBuilder_.isEmpty()) {
+            userFeatureInfoBuilder_.dispose();
+            userFeatureInfoBuilder_ = null;
+            userFeatureInfo_ = other.userFeatureInfo_;
+            bitField0_ = (bitField0_ & ~0x00000001);
+            userFeatureInfoBuilder_ = 
+              com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
+                 getUserFeatureInfoFieldBuilder() : null;
+          } else {
+            userFeatureInfoBuilder_.addAllMessages(other.userFeatureInfo_);
+          }
+        }
       }
-    }
-    /**
-     * <code>string mid = 33;</code>
-     * @param value The mid to set.
-     * @return This builder for chaining.
-     */
-    public Builder setMid(
-        java.lang.String value) {
-      if (value == null) {
-    throw new NullPointerException();
-  }
-  
-      mid_ = value;
+      this.mergeUnknownFields(other.unknownFields);
       onChanged();
       return this;
     }
-    /**
-     * <code>string mid = 33;</code>
-     * @return This builder for chaining.
-     */
-    public Builder clearMid() {
-      
-      mid_ = getDefaultInstance().getMid();
-      onChanged();
-      return this;
+
+    @java.lang.Override
+    public final boolean isInitialized() {
+      return true;
     }
-    /**
-     * <code>string mid = 33;</code>
-     * @param value The bytes for mid to set.
-     * @return This builder for chaining.
-     */
-    public Builder setMidBytes(
-        com.google.protobuf.ByteString value) {
-      if (value == null) {
-    throw new NullPointerException();
-  }
-  checkByteStringIsUtf8(value);
-      
-      mid_ = value;
-      onChanged();
+
+    @java.lang.Override
+    public Builder mergeFrom(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      com.tzld.piaoquan.recommend.feature.model.feature.GetUserFeatureInfoResponse parsedMessage = null;
+      try {
+        parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+        parsedMessage = (com.tzld.piaoquan.recommend.feature.model.feature.GetUserFeatureInfoResponse) e.getUnfinishedMessage();
+        throw e.unwrapIOException();
+      } finally {
+        if (parsedMessage != null) {
+          mergeFrom(parsedMessage);
+        }
+      }
       return this;
     }
+    private int bitField0_;
 
-    private java.lang.Object machineinfoBrand_ = "";
+    private com.tzld.piaoquan.recommend.feature.model.common.Result result_;
+    private com.google.protobuf.SingleFieldBuilderV3<
+        com.tzld.piaoquan.recommend.feature.model.common.Result, com.tzld.piaoquan.recommend.feature.model.common.Result.Builder, com.tzld.piaoquan.recommend.feature.model.common.ResultOrBuilder> resultBuilder_;
     /**
-     * <code>string machineinfoBrand = 34;</code>
-     * @return The machineinfoBrand.
+     * <code>.Result result = 1;</code>
+     * @return Whether the result field is set.
      */
-    public java.lang.String getMachineinfoBrand() {
-      java.lang.Object ref = machineinfoBrand_;
-      if (!(ref instanceof java.lang.String)) {
-        com.google.protobuf.ByteString bs =
-            (com.google.protobuf.ByteString) ref;
-        java.lang.String s = bs.toStringUtf8();
-        machineinfoBrand_ = s;
-        return s;
-      } else {
-        return (java.lang.String) ref;
-      }
+    public boolean hasResult() {
+      return resultBuilder_ != null || result_ != null;
     }
     /**
-     * <code>string machineinfoBrand = 34;</code>
-     * @return The bytes for machineinfoBrand.
+     * <code>.Result result = 1;</code>
+     * @return The result.
      */
-    public com.google.protobuf.ByteString
-        getMachineinfoBrandBytes() {
-      java.lang.Object ref = machineinfoBrand_;
-      if (ref instanceof String) {
-        com.google.protobuf.ByteString b = 
-            com.google.protobuf.ByteString.copyFromUtf8(
-                (java.lang.String) ref);
-        machineinfoBrand_ = b;
-        return b;
+    public com.tzld.piaoquan.recommend.feature.model.common.Result getResult() {
+      if (resultBuilder_ == null) {
+        return result_ == null ? com.tzld.piaoquan.recommend.feature.model.common.Result.getDefaultInstance() : result_;
       } else {
-        return (com.google.protobuf.ByteString) ref;
+        return resultBuilder_.getMessage();
       }
     }
     /**
-     * <code>string machineinfoBrand = 34;</code>
-     * @param value The machineinfoBrand to set.
-     * @return This builder for chaining.
-     */
-    public Builder setMachineinfoBrand(
-        java.lang.String value) {
-      if (value == null) {
-    throw new NullPointerException();
-  }
-  
-      machineinfoBrand_ = value;
-      onChanged();
-      return this;
-    }
-    /**
-     * <code>string machineinfoBrand = 34;</code>
-     * @return This builder for chaining.
-     */
-    public Builder clearMachineinfoBrand() {
-      
-      machineinfoBrand_ = getDefaultInstance().getMachineinfoBrand();
-      onChanged();
-      return this;
-    }
-    /**
-     * <code>string machineinfoBrand = 34;</code>
-     * @param value The bytes for machineinfoBrand to set.
-     * @return This builder for chaining.
+     * <code>.Result result = 1;</code>
      */
-    public Builder setMachineinfoBrandBytes(
-        com.google.protobuf.ByteString value) {
-      if (value == null) {
-    throw new NullPointerException();
-  }
-  checkByteStringIsUtf8(value);
-      
-      machineinfoBrand_ = value;
-      onChanged();
+    public Builder setResult(com.tzld.piaoquan.recommend.feature.model.common.Result value) {
+      if (resultBuilder_ == null) {
+        if (value == null) {
+          throw new NullPointerException();
+        }
+        result_ = value;
+        onChanged();
+      } else {
+        resultBuilder_.setMessage(value);
+      }
+
       return this;
     }
-
-    private java.lang.Object machineinfoModel_ = "";
     /**
-     * <code>string machineinfoModel = 35;</code>
-     * @return The machineinfoModel.
+     * <code>.Result result = 1;</code>
      */
-    public java.lang.String getMachineinfoModel() {
-      java.lang.Object ref = machineinfoModel_;
-      if (!(ref instanceof java.lang.String)) {
-        com.google.protobuf.ByteString bs =
-            (com.google.protobuf.ByteString) ref;
-        java.lang.String s = bs.toStringUtf8();
-        machineinfoModel_ = s;
-        return s;
+    public Builder setResult(
+        com.tzld.piaoquan.recommend.feature.model.common.Result.Builder builderForValue) {
+      if (resultBuilder_ == null) {
+        result_ = builderForValue.build();
+        onChanged();
       } else {
-        return (java.lang.String) ref;
+        resultBuilder_.setMessage(builderForValue.build());
       }
+
+      return this;
     }
     /**
-     * <code>string machineinfoModel = 35;</code>
-     * @return The bytes for machineinfoModel.
+     * <code>.Result result = 1;</code>
      */
-    public com.google.protobuf.ByteString
-        getMachineinfoModelBytes() {
-      java.lang.Object ref = machineinfoModel_;
-      if (ref instanceof String) {
-        com.google.protobuf.ByteString b = 
-            com.google.protobuf.ByteString.copyFromUtf8(
-                (java.lang.String) ref);
-        machineinfoModel_ = b;
-        return b;
+    public Builder mergeResult(com.tzld.piaoquan.recommend.feature.model.common.Result value) {
+      if (resultBuilder_ == null) {
+        if (result_ != null) {
+          result_ =
+            com.tzld.piaoquan.recommend.feature.model.common.Result.newBuilder(result_).mergeFrom(value).buildPartial();
+        } else {
+          result_ = value;
+        }
+        onChanged();
       } else {
-        return (com.google.protobuf.ByteString) ref;
+        resultBuilder_.mergeFrom(value);
       }
-    }
-    /**
-     * <code>string machineinfoModel = 35;</code>
-     * @param value The machineinfoModel to set.
-     * @return This builder for chaining.
-     */
-    public Builder setMachineinfoModel(
-        java.lang.String value) {
-      if (value == null) {
-    throw new NullPointerException();
-  }
-  
-      machineinfoModel_ = value;
-      onChanged();
+
       return this;
     }
     /**
-     * <code>string machineinfoModel = 35;</code>
-     * @return This builder for chaining.
+     * <code>.Result result = 1;</code>
      */
-    public Builder clearMachineinfoModel() {
-      
-      machineinfoModel_ = getDefaultInstance().getMachineinfoModel();
-      onChanged();
+    public Builder clearResult() {
+      if (resultBuilder_ == null) {
+        result_ = null;
+        onChanged();
+      } else {
+        result_ = null;
+        resultBuilder_ = null;
+      }
+
       return this;
     }
     /**
-     * <code>string machineinfoModel = 35;</code>
-     * @param value The bytes for machineinfoModel to set.
-     * @return This builder for chaining.
+     * <code>.Result result = 1;</code>
      */
-    public Builder setMachineinfoModelBytes(
-        com.google.protobuf.ByteString value) {
-      if (value == null) {
-    throw new NullPointerException();
-  }
-  checkByteStringIsUtf8(value);
+    public com.tzld.piaoquan.recommend.feature.model.common.Result.Builder getResultBuilder() {
       
-      machineinfoModel_ = value;
       onChanged();
-      return this;
+      return getResultFieldBuilder().getBuilder();
     }
-
-    private java.lang.Object machineinfoSystem_ = "";
     /**
-     * <code>string machineinfoSystem = 36;</code>
-     * @return The machineinfoSystem.
+     * <code>.Result result = 1;</code>
      */
-    public java.lang.String getMachineinfoSystem() {
-      java.lang.Object ref = machineinfoSystem_;
-      if (!(ref instanceof java.lang.String)) {
-        com.google.protobuf.ByteString bs =
-            (com.google.protobuf.ByteString) ref;
-        java.lang.String s = bs.toStringUtf8();
-        machineinfoSystem_ = s;
-        return s;
+    public com.tzld.piaoquan.recommend.feature.model.common.ResultOrBuilder getResultOrBuilder() {
+      if (resultBuilder_ != null) {
+        return resultBuilder_.getMessageOrBuilder();
       } else {
-        return (java.lang.String) ref;
+        return result_ == null ?
+            com.tzld.piaoquan.recommend.feature.model.common.Result.getDefaultInstance() : result_;
       }
     }
     /**
-     * <code>string machineinfoSystem = 36;</code>
-     * @return The bytes for machineinfoSystem.
+     * <code>.Result result = 1;</code>
      */
-    public com.google.protobuf.ByteString
-        getMachineinfoSystemBytes() {
-      java.lang.Object ref = machineinfoSystem_;
-      if (ref instanceof String) {
-        com.google.protobuf.ByteString b = 
-            com.google.protobuf.ByteString.copyFromUtf8(
-                (java.lang.String) ref);
-        machineinfoSystem_ = b;
-        return b;
-      } else {
-        return (com.google.protobuf.ByteString) ref;
+    private com.google.protobuf.SingleFieldBuilderV3<
+        com.tzld.piaoquan.recommend.feature.model.common.Result, com.tzld.piaoquan.recommend.feature.model.common.Result.Builder, com.tzld.piaoquan.recommend.feature.model.common.ResultOrBuilder> 
+        getResultFieldBuilder() {
+      if (resultBuilder_ == null) {
+        resultBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
+            com.tzld.piaoquan.recommend.feature.model.common.Result, com.tzld.piaoquan.recommend.feature.model.common.Result.Builder, com.tzld.piaoquan.recommend.feature.model.common.ResultOrBuilder>(
+                getResult(),
+                getParentForChildren(),
+                isClean());
+        result_ = null;
       }
+      return resultBuilder_;
     }
-    /**
-     * <code>string machineinfoSystem = 36;</code>
-     * @param value The machineinfoSystem to set.
-     * @return This builder for chaining.
-     */
-    public Builder setMachineinfoSystem(
-        java.lang.String value) {
-      if (value == null) {
-    throw new NullPointerException();
-  }
-  
-      machineinfoSystem_ = value;
-      onChanged();
-      return this;
-    }
-    /**
-     * <code>string machineinfoSystem = 36;</code>
-     * @return This builder for chaining.
-     */
-    public Builder clearMachineinfoSystem() {
-      
-      machineinfoSystem_ = getDefaultInstance().getMachineinfoSystem();
-      onChanged();
-      return this;
-    }
-    /**
-     * <code>string machineinfoSystem = 36;</code>
-     * @param value The bytes for machineinfoSystem to set.
-     * @return This builder for chaining.
-     */
-    public Builder setMachineinfoSystemBytes(
-        com.google.protobuf.ByteString value) {
-      if (value == null) {
-    throw new NullPointerException();
-  }
-  checkByteStringIsUtf8(value);
-      
-      machineinfoSystem_ = value;
-      onChanged();
-      return this;
+
+    private java.util.List<com.tzld.piaoquan.recommend.feature.model.feature.GetUserFeatureInfo> userFeatureInfo_ =
+      java.util.Collections.emptyList();
+    private void ensureUserFeatureInfoIsMutable() {
+      if (!((bitField0_ & 0x00000001) != 0)) {
+        userFeatureInfo_ = new java.util.ArrayList<com.tzld.piaoquan.recommend.feature.model.feature.GetUserFeatureInfo>(userFeatureInfo_);
+        bitField0_ |= 0x00000001;
+       }
     }
 
-    private java.lang.Object machineinfoPlatform_ = "";
+    private com.google.protobuf.RepeatedFieldBuilderV3<
+        com.tzld.piaoquan.recommend.feature.model.feature.GetUserFeatureInfo, com.tzld.piaoquan.recommend.feature.model.feature.GetUserFeatureInfo.Builder, com.tzld.piaoquan.recommend.feature.model.feature.GetUserFeatureInfoOrBuilder> userFeatureInfoBuilder_;
+
     /**
-     * <code>string machineinfoPlatform = 37;</code>
-     * @return The machineinfoPlatform.
+     * <code>repeated .GetUserFeatureInfo user_feature_info = 2;</code>
      */
-    public java.lang.String getMachineinfoPlatform() {
-      java.lang.Object ref = machineinfoPlatform_;
-      if (!(ref instanceof java.lang.String)) {
-        com.google.protobuf.ByteString bs =
-            (com.google.protobuf.ByteString) ref;
-        java.lang.String s = bs.toStringUtf8();
-        machineinfoPlatform_ = s;
-        return s;
+    public java.util.List<com.tzld.piaoquan.recommend.feature.model.feature.GetUserFeatureInfo> getUserFeatureInfoList() {
+      if (userFeatureInfoBuilder_ == null) {
+        return java.util.Collections.unmodifiableList(userFeatureInfo_);
       } else {
-        return (java.lang.String) ref;
+        return userFeatureInfoBuilder_.getMessageList();
       }
     }
     /**
-     * <code>string machineinfoPlatform = 37;</code>
-     * @return The bytes for machineinfoPlatform.
+     * <code>repeated .GetUserFeatureInfo user_feature_info = 2;</code>
      */
-    public com.google.protobuf.ByteString
-        getMachineinfoPlatformBytes() {
-      java.lang.Object ref = machineinfoPlatform_;
-      if (ref instanceof String) {
-        com.google.protobuf.ByteString b = 
-            com.google.protobuf.ByteString.copyFromUtf8(
-                (java.lang.String) ref);
-        machineinfoPlatform_ = b;
-        return b;
+    public int getUserFeatureInfoCount() {
+      if (userFeatureInfoBuilder_ == null) {
+        return userFeatureInfo_.size();
       } else {
-        return (com.google.protobuf.ByteString) ref;
+        return userFeatureInfoBuilder_.getCount();
       }
     }
     /**
-     * <code>string machineinfoPlatform = 37;</code>
-     * @param value The machineinfoPlatform to set.
-     * @return This builder for chaining.
-     */
-    public Builder setMachineinfoPlatform(
-        java.lang.String value) {
-      if (value == null) {
-    throw new NullPointerException();
-  }
-  
-      machineinfoPlatform_ = value;
-      onChanged();
-      return this;
-    }
-    /**
-     * <code>string machineinfoPlatform = 37;</code>
-     * @return This builder for chaining.
-     */
-    public Builder clearMachineinfoPlatform() {
-      
-      machineinfoPlatform_ = getDefaultInstance().getMachineinfoPlatform();
-      onChanged();
-      return this;
-    }
-    /**
-     * <code>string machineinfoPlatform = 37;</code>
-     * @param value The bytes for machineinfoPlatform to set.
-     * @return This builder for chaining.
-     */
-    public Builder setMachineinfoPlatformBytes(
-        com.google.protobuf.ByteString value) {
-      if (value == null) {
-    throw new NullPointerException();
-  }
-  checkByteStringIsUtf8(value);
-      
-      machineinfoPlatform_ = value;
-      onChanged();
-      return this;
-    }
-
-    private java.lang.Object gender_ = "";
-    /**
-     * <code>string gender = 38;</code>
-     * @return The gender.
+     * <code>repeated .GetUserFeatureInfo user_feature_info = 2;</code>
      */
-    public java.lang.String getGender() {
-      java.lang.Object ref = gender_;
-      if (!(ref instanceof java.lang.String)) {
-        com.google.protobuf.ByteString bs =
-            (com.google.protobuf.ByteString) ref;
-        java.lang.String s = bs.toStringUtf8();
-        gender_ = s;
-        return s;
+    public com.tzld.piaoquan.recommend.feature.model.feature.GetUserFeatureInfo getUserFeatureInfo(int index) {
+      if (userFeatureInfoBuilder_ == null) {
+        return userFeatureInfo_.get(index);
       } else {
-        return (java.lang.String) ref;
+        return userFeatureInfoBuilder_.getMessage(index);
       }
     }
     /**
-     * <code>string gender = 38;</code>
-     * @return The bytes for gender.
+     * <code>repeated .GetUserFeatureInfo user_feature_info = 2;</code>
      */
-    public com.google.protobuf.ByteString
-        getGenderBytes() {
-      java.lang.Object ref = gender_;
-      if (ref instanceof String) {
-        com.google.protobuf.ByteString b = 
-            com.google.protobuf.ByteString.copyFromUtf8(
-                (java.lang.String) ref);
-        gender_ = b;
-        return b;
+    public Builder setUserFeatureInfo(
+        int index, com.tzld.piaoquan.recommend.feature.model.feature.GetUserFeatureInfo value) {
+      if (userFeatureInfoBuilder_ == null) {
+        if (value == null) {
+          throw new NullPointerException();
+        }
+        ensureUserFeatureInfoIsMutable();
+        userFeatureInfo_.set(index, value);
+        onChanged();
       } else {
-        return (com.google.protobuf.ByteString) ref;
+        userFeatureInfoBuilder_.setMessage(index, value);
       }
-    }
-    /**
-     * <code>string gender = 38;</code>
-     * @param value The gender to set.
-     * @return This builder for chaining.
-     */
-    public Builder setGender(
-        java.lang.String value) {
-      if (value == null) {
-    throw new NullPointerException();
-  }
-  
-      gender_ = value;
-      onChanged();
-      return this;
-    }
-    /**
-     * <code>string gender = 38;</code>
-     * @return This builder for chaining.
-     */
-    public Builder clearGender() {
-      
-      gender_ = getDefaultInstance().getGender();
-      onChanged();
       return this;
     }
     /**
-     * <code>string gender = 38;</code>
-     * @param value The bytes for gender to set.
-     * @return This builder for chaining.
+     * <code>repeated .GetUserFeatureInfo user_feature_info = 2;</code>
      */
-    public Builder setGenderBytes(
-        com.google.protobuf.ByteString value) {
-      if (value == null) {
-    throw new NullPointerException();
-  }
-  checkByteStringIsUtf8(value);
-      
-      gender_ = value;
-      onChanged();
+    public Builder setUserFeatureInfo(
+        int index, com.tzld.piaoquan.recommend.feature.model.feature.GetUserFeatureInfo.Builder builderForValue) {
+      if (userFeatureInfoBuilder_ == null) {
+        ensureUserFeatureInfoIsMutable();
+        userFeatureInfo_.set(index, builderForValue.build());
+        onChanged();
+      } else {
+        userFeatureInfoBuilder_.setMessage(index, builderForValue.build());
+      }
       return this;
     }
-
-    private java.lang.Object country_ = "";
     /**
-     * <code>string country = 39;</code>
-     * @return The country.
+     * <code>repeated .GetUserFeatureInfo user_feature_info = 2;</code>
      */
-    public java.lang.String getCountry() {
-      java.lang.Object ref = country_;
-      if (!(ref instanceof java.lang.String)) {
-        com.google.protobuf.ByteString bs =
-            (com.google.protobuf.ByteString) ref;
-        java.lang.String s = bs.toStringUtf8();
-        country_ = s;
-        return s;
+    public Builder addUserFeatureInfo(com.tzld.piaoquan.recommend.feature.model.feature.GetUserFeatureInfo value) {
+      if (userFeatureInfoBuilder_ == null) {
+        if (value == null) {
+          throw new NullPointerException();
+        }
+        ensureUserFeatureInfoIsMutable();
+        userFeatureInfo_.add(value);
+        onChanged();
       } else {
-        return (java.lang.String) ref;
+        userFeatureInfoBuilder_.addMessage(value);
       }
+      return this;
     }
     /**
-     * <code>string country = 39;</code>
-     * @return The bytes for country.
+     * <code>repeated .GetUserFeatureInfo user_feature_info = 2;</code>
      */
-    public com.google.protobuf.ByteString
-        getCountryBytes() {
-      java.lang.Object ref = country_;
-      if (ref instanceof String) {
-        com.google.protobuf.ByteString b = 
-            com.google.protobuf.ByteString.copyFromUtf8(
-                (java.lang.String) ref);
-        country_ = b;
-        return b;
+    public Builder addUserFeatureInfo(
+        int index, com.tzld.piaoquan.recommend.feature.model.feature.GetUserFeatureInfo value) {
+      if (userFeatureInfoBuilder_ == null) {
+        if (value == null) {
+          throw new NullPointerException();
+        }
+        ensureUserFeatureInfoIsMutable();
+        userFeatureInfo_.add(index, value);
+        onChanged();
       } else {
-        return (com.google.protobuf.ByteString) ref;
+        userFeatureInfoBuilder_.addMessage(index, value);
       }
-    }
-    /**
-     * <code>string country = 39;</code>
-     * @param value The country to set.
-     * @return This builder for chaining.
-     */
-    public Builder setCountry(
-        java.lang.String value) {
-      if (value == null) {
-    throw new NullPointerException();
-  }
-  
-      country_ = value;
-      onChanged();
       return this;
     }
     /**
-     * <code>string country = 39;</code>
-     * @return This builder for chaining.
+     * <code>repeated .GetUserFeatureInfo user_feature_info = 2;</code>
      */
-    public Builder clearCountry() {
-      
-      country_ = getDefaultInstance().getCountry();
-      onChanged();
+    public Builder addUserFeatureInfo(
+        com.tzld.piaoquan.recommend.feature.model.feature.GetUserFeatureInfo.Builder builderForValue) {
+      if (userFeatureInfoBuilder_ == null) {
+        ensureUserFeatureInfoIsMutable();
+        userFeatureInfo_.add(builderForValue.build());
+        onChanged();
+      } else {
+        userFeatureInfoBuilder_.addMessage(builderForValue.build());
+      }
       return this;
     }
     /**
-     * <code>string country = 39;</code>
-     * @param value The bytes for country to set.
-     * @return This builder for chaining.
+     * <code>repeated .GetUserFeatureInfo user_feature_info = 2;</code>
      */
-    public Builder setCountryBytes(
-        com.google.protobuf.ByteString value) {
-      if (value == null) {
-    throw new NullPointerException();
-  }
-  checkByteStringIsUtf8(value);
-      
-      country_ = value;
-      onChanged();
+    public Builder addUserFeatureInfo(
+        int index, com.tzld.piaoquan.recommend.feature.model.feature.GetUserFeatureInfo.Builder builderForValue) {
+      if (userFeatureInfoBuilder_ == null) {
+        ensureUserFeatureInfoIsMutable();
+        userFeatureInfo_.add(index, builderForValue.build());
+        onChanged();
+      } else {
+        userFeatureInfoBuilder_.addMessage(index, builderForValue.build());
+      }
       return this;
     }
-
-    private java.lang.Object province_ = "";
     /**
-     * <code>string province = 40;</code>
-     * @return The province.
+     * <code>repeated .GetUserFeatureInfo user_feature_info = 2;</code>
      */
-    public java.lang.String getProvince() {
-      java.lang.Object ref = province_;
-      if (!(ref instanceof java.lang.String)) {
-        com.google.protobuf.ByteString bs =
-            (com.google.protobuf.ByteString) ref;
-        java.lang.String s = bs.toStringUtf8();
-        province_ = s;
-        return s;
+    public Builder addAllUserFeatureInfo(
+        java.lang.Iterable<? extends com.tzld.piaoquan.recommend.feature.model.feature.GetUserFeatureInfo> values) {
+      if (userFeatureInfoBuilder_ == null) {
+        ensureUserFeatureInfoIsMutable();
+        com.google.protobuf.AbstractMessageLite.Builder.addAll(
+            values, userFeatureInfo_);
+        onChanged();
       } else {
-        return (java.lang.String) ref;
+        userFeatureInfoBuilder_.addAllMessages(values);
       }
+      return this;
     }
     /**
-     * <code>string province = 40;</code>
-     * @return The bytes for province.
+     * <code>repeated .GetUserFeatureInfo user_feature_info = 2;</code>
      */
-    public com.google.protobuf.ByteString
-        getProvinceBytes() {
-      java.lang.Object ref = province_;
-      if (ref instanceof String) {
-        com.google.protobuf.ByteString b = 
-            com.google.protobuf.ByteString.copyFromUtf8(
-                (java.lang.String) ref);
-        province_ = b;
-        return b;
+    public Builder clearUserFeatureInfo() {
+      if (userFeatureInfoBuilder_ == null) {
+        userFeatureInfo_ = java.util.Collections.emptyList();
+        bitField0_ = (bitField0_ & ~0x00000001);
+        onChanged();
       } else {
-        return (com.google.protobuf.ByteString) ref;
+        userFeatureInfoBuilder_.clear();
       }
-    }
-    /**
-     * <code>string province = 40;</code>
-     * @param value The province to set.
-     * @return This builder for chaining.
-     */
-    public Builder setProvince(
-        java.lang.String value) {
-      if (value == null) {
-    throw new NullPointerException();
-  }
-  
-      province_ = value;
-      onChanged();
       return this;
     }
     /**
-     * <code>string province = 40;</code>
-     * @return This builder for chaining.
+     * <code>repeated .GetUserFeatureInfo user_feature_info = 2;</code>
      */
-    public Builder clearProvince() {
-      
-      province_ = getDefaultInstance().getProvince();
-      onChanged();
+    public Builder removeUserFeatureInfo(int index) {
+      if (userFeatureInfoBuilder_ == null) {
+        ensureUserFeatureInfoIsMutable();
+        userFeatureInfo_.remove(index);
+        onChanged();
+      } else {
+        userFeatureInfoBuilder_.remove(index);
+      }
       return this;
     }
     /**
-     * <code>string province = 40;</code>
-     * @param value The bytes for province to set.
-     * @return This builder for chaining.
+     * <code>repeated .GetUserFeatureInfo user_feature_info = 2;</code>
      */
-    public Builder setProvinceBytes(
-        com.google.protobuf.ByteString value) {
-      if (value == null) {
-    throw new NullPointerException();
-  }
-  checkByteStringIsUtf8(value);
-      
-      province_ = value;
-      onChanged();
-      return this;
+    public com.tzld.piaoquan.recommend.feature.model.feature.GetUserFeatureInfo.Builder getUserFeatureInfoBuilder(
+        int index) {
+      return getUserFeatureInfoFieldBuilder().getBuilder(index);
     }
-
-    private java.lang.Object city_ = "";
     /**
-     * <code>string city = 41;</code>
-     * @return The city.
+     * <code>repeated .GetUserFeatureInfo user_feature_info = 2;</code>
      */
-    public java.lang.String getCity() {
-      java.lang.Object ref = city_;
-      if (!(ref instanceof java.lang.String)) {
-        com.google.protobuf.ByteString bs =
-            (com.google.protobuf.ByteString) ref;
-        java.lang.String s = bs.toStringUtf8();
-        city_ = s;
-        return s;
-      } else {
-        return (java.lang.String) ref;
+    public com.tzld.piaoquan.recommend.feature.model.feature.GetUserFeatureInfoOrBuilder getUserFeatureInfoOrBuilder(
+        int index) {
+      if (userFeatureInfoBuilder_ == null) {
+        return userFeatureInfo_.get(index);  } else {
+        return userFeatureInfoBuilder_.getMessageOrBuilder(index);
       }
     }
     /**
-     * <code>string city = 41;</code>
-     * @return The bytes for city.
+     * <code>repeated .GetUserFeatureInfo user_feature_info = 2;</code>
      */
-    public com.google.protobuf.ByteString
-        getCityBytes() {
-      java.lang.Object ref = city_;
-      if (ref instanceof String) {
-        com.google.protobuf.ByteString b = 
-            com.google.protobuf.ByteString.copyFromUtf8(
-                (java.lang.String) ref);
-        city_ = b;
-        return b;
+    public java.util.List<? extends com.tzld.piaoquan.recommend.feature.model.feature.GetUserFeatureInfoOrBuilder> 
+         getUserFeatureInfoOrBuilderList() {
+      if (userFeatureInfoBuilder_ != null) {
+        return userFeatureInfoBuilder_.getMessageOrBuilderList();
       } else {
-        return (com.google.protobuf.ByteString) ref;
+        return java.util.Collections.unmodifiableList(userFeatureInfo_);
       }
     }
     /**
-     * <code>string city = 41;</code>
-     * @param value The city to set.
-     * @return This builder for chaining.
+     * <code>repeated .GetUserFeatureInfo user_feature_info = 2;</code>
      */
-    public Builder setCity(
-        java.lang.String value) {
-      if (value == null) {
-    throw new NullPointerException();
-  }
-  
-      city_ = value;
-      onChanged();
-      return this;
+    public com.tzld.piaoquan.recommend.feature.model.feature.GetUserFeatureInfo.Builder addUserFeatureInfoBuilder() {
+      return getUserFeatureInfoFieldBuilder().addBuilder(
+          com.tzld.piaoquan.recommend.feature.model.feature.GetUserFeatureInfo.getDefaultInstance());
     }
     /**
-     * <code>string city = 41;</code>
-     * @return This builder for chaining.
+     * <code>repeated .GetUserFeatureInfo user_feature_info = 2;</code>
      */
-    public Builder clearCity() {
-      
-      city_ = getDefaultInstance().getCity();
-      onChanged();
-      return this;
+    public com.tzld.piaoquan.recommend.feature.model.feature.GetUserFeatureInfo.Builder addUserFeatureInfoBuilder(
+        int index) {
+      return getUserFeatureInfoFieldBuilder().addBuilder(
+          index, com.tzld.piaoquan.recommend.feature.model.feature.GetUserFeatureInfo.getDefaultInstance());
     }
     /**
-     * <code>string city = 41;</code>
-     * @param value The bytes for city to set.
-     * @return This builder for chaining.
+     * <code>repeated .GetUserFeatureInfo user_feature_info = 2;</code>
      */
-    public Builder setCityBytes(
-        com.google.protobuf.ByteString value) {
-      if (value == null) {
-    throw new NullPointerException();
-  }
-  checkByteStringIsUtf8(value);
-      
-      city_ = value;
-      onChanged();
-      return this;
+    public java.util.List<com.tzld.piaoquan.recommend.feature.model.feature.GetUserFeatureInfo.Builder> 
+         getUserFeatureInfoBuilderList() {
+      return getUserFeatureInfoFieldBuilder().getBuilderList();
+    }
+    private com.google.protobuf.RepeatedFieldBuilderV3<
+        com.tzld.piaoquan.recommend.feature.model.feature.GetUserFeatureInfo, com.tzld.piaoquan.recommend.feature.model.feature.GetUserFeatureInfo.Builder, com.tzld.piaoquan.recommend.feature.model.feature.GetUserFeatureInfoOrBuilder> 
+        getUserFeatureInfoFieldBuilder() {
+      if (userFeatureInfoBuilder_ == null) {
+        userFeatureInfoBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
+            com.tzld.piaoquan.recommend.feature.model.feature.GetUserFeatureInfo, com.tzld.piaoquan.recommend.feature.model.feature.GetUserFeatureInfo.Builder, com.tzld.piaoquan.recommend.feature.model.feature.GetUserFeatureInfoOrBuilder>(
+                userFeatureInfo_,
+                ((bitField0_ & 0x00000001) != 0),
+                getParentForChildren(),
+                isClean());
+        userFeatureInfo_ = null;
+      }
+      return userFeatureInfoBuilder_;
     }
     @java.lang.Override
     public final Builder setUnknownFields(

+ 21 - 298
recommend-feature-client/src/main/java/com/tzld/piaoquan/recommend/feature/model/feature/GetUserFeatureInfoResponseOrBuilder.java

@@ -8,318 +8,41 @@ public interface GetUserFeatureInfoResponseOrBuilder extends
     com.google.protobuf.MessageOrBuilder {
 
   /**
-   * <pre>
-   *过去一小时
-   * </pre>
-   *
-   * <code>int64 u1hourExpCnt = 1;</code>
-   * @return The u1hourExpCnt.
+   * <code>.Result result = 1;</code>
+   * @return Whether the result field is set.
    */
-  long getU1HourExpCnt();
-
-  /**
-   * <code>int64 u1hourClickCnt = 2;</code>
-   * @return The u1hourClickCnt.
-   */
-  long getU1HourClickCnt();
-
-  /**
-   * <code>int64 u1hourShareCnt = 3;</code>
-   * @return The u1hourShareCnt.
-   */
-  long getU1HourShareCnt();
-
-  /**
-   * <code>int64 u1hourReturnCnt = 4;</code>
-   * @return The u1hourReturnCnt.
-   */
-  long getU1HourReturnCnt();
-
-  /**
-   * <code>double uCtr1hour = 5;</code>
-   * @return The uCtr1hour.
-   */
-  double getUCtr1Hour();
-
-  /**
-   * <code>double uStr1hour = 6;</code>
-   * @return The uStr1hour.
-   */
-  double getUStr1Hour();
-
-  /**
-   * <code>double uRov1hour = 7;</code>
-   * @return The uRov1hour.
-   */
-  double getURov1Hour();
-
-  /**
-   * <code>double uRos1hour = 8;</code>
-   * @return The uRos1hour.
-   */
-  double getURos1Hour();
-
-  /**
-   * <pre>
-   *今天
-   * </pre>
-   *
-   * <code>int64 uTodayExpCnt = 9;</code>
-   * @return The uTodayExpCnt.
-   */
-  long getUTodayExpCnt();
-
-  /**
-   * <code>int64 uTodayClickCnt = 10;</code>
-   * @return The uTodayClickCnt.
-   */
-  long getUTodayClickCnt();
-
-  /**
-   * <code>int64 uTodayShareCnt = 11;</code>
-   * @return The uTodayShareCnt.
-   */
-  long getUTodayShareCnt();
-
+  boolean hasResult();
   /**
-   * <code>int64 uTodayReturnCnt = 12;</code>
-   * @return The uTodayReturnCnt.
+   * <code>.Result result = 1;</code>
+   * @return The result.
    */
-  long getUTodayReturnCnt();
-
-  /**
-   * <code>double uCtrToday = 13;</code>
-   * @return The uCtrToday.
-   */
-  double getUCtrToday();
-
-  /**
-   * <code>double uStrToday = 14;</code>
-   * @return The uStrToday.
-   */
-  double getUStrToday();
-
-  /**
-   * <code>double uRovToday = 15;</code>
-   * @return The uRovToday.
-   */
-  double getURovToday();
-
-  /**
-   * <code>double uRosToday = 16;</code>
-   * @return The uRosToday.
-   */
-  double getURosToday();
-
+  com.tzld.piaoquan.recommend.feature.model.common.Result getResult();
   /**
-   * <pre>
-   *过去一天
-   * </pre>
-   *
-   * <code>int64 u1dayExpCnt = 17;</code>
-   * @return The u1dayExpCnt.
+   * <code>.Result result = 1;</code>
    */
-  long getU1DayExpCnt();
+  com.tzld.piaoquan.recommend.feature.model.common.ResultOrBuilder getResultOrBuilder();
 
   /**
-   * <code>int64 u1dayClickCnt = 18;</code>
-   * @return The u1dayClickCnt.
+   * <code>repeated .GetUserFeatureInfo user_feature_info = 2;</code>
    */
-  long getU1DayClickCnt();
-
+  java.util.List<com.tzld.piaoquan.recommend.feature.model.feature.GetUserFeatureInfo> 
+      getUserFeatureInfoList();
   /**
-   * <code>int64 u1dayShareCnt = 19;</code>
-   * @return The u1dayShareCnt.
+   * <code>repeated .GetUserFeatureInfo user_feature_info = 2;</code>
    */
-  long getU1DayShareCnt();
-
+  com.tzld.piaoquan.recommend.feature.model.feature.GetUserFeatureInfo getUserFeatureInfo(int index);
   /**
-   * <code>int64 u1dayReturnCnt = 20;</code>
-   * @return The u1dayReturnCnt.
+   * <code>repeated .GetUserFeatureInfo user_feature_info = 2;</code>
    */
-  long getU1DayReturnCnt();
-
-  /**
-   * <code>double uCtr1day = 21;</code>
-   * @return The uCtr1day.
-   */
-  double getUCtr1Day();
-
-  /**
-   * <code>double uStr1day = 22;</code>
-   * @return The uStr1day.
-   */
-  double getUStr1Day();
-
-  /**
-   * <code>double uRov1day = 23;</code>
-   * @return The uRov1day.
-   */
-  double getURov1Day();
-
-  /**
-   * <code>double uRos1day = 24;</code>
-   * @return The uRos1day.
-   */
-  double getURos1Day();
-
-  /**
-   * <pre>
-   *过去三天
-   * </pre>
-   *
-   * <code>int64 u3dayExpCnt = 25;</code>
-   * @return The u3dayExpCnt.
-   */
-  long getU3DayExpCnt();
-
-  /**
-   * <code>int64 u3dayClickCnt = 26;</code>
-   * @return The u3dayClickCnt.
-   */
-  long getU3DayClickCnt();
-
-  /**
-   * <code>int64 u3dayShareCnt = 27;</code>
-   * @return The u3dayShareCnt.
-   */
-  long getU3DayShareCnt();
-
-  /**
-   * <code>int64 u3dayReturnCnt = 28;</code>
-   * @return The u3dayReturnCnt.
-   */
-  long getU3DayReturnCnt();
-
-  /**
-   * <code>double uCtr3day = 29;</code>
-   * @return The uCtr3day.
-   */
-  double getUCtr3Day();
-
-  /**
-   * <code>double uStr3day = 30;</code>
-   * @return The uStr3day.
-   */
-  double getUStr3Day();
-
-  /**
-   * <code>double uRov3day = 31;</code>
-   * @return The uRov3day.
-   */
-  double getURov3Day();
-
-  /**
-   * <code>double uRos3day = 32;</code>
-   * @return The uRos3day.
-   */
-  double getURos3Day();
-
-  /**
-   * <code>string mid = 33;</code>
-   * @return The mid.
-   */
-  java.lang.String getMid();
-  /**
-   * <code>string mid = 33;</code>
-   * @return The bytes for mid.
-   */
-  com.google.protobuf.ByteString
-      getMidBytes();
-
-  /**
-   * <code>string machineinfoBrand = 34;</code>
-   * @return The machineinfoBrand.
-   */
-  java.lang.String getMachineinfoBrand();
-  /**
-   * <code>string machineinfoBrand = 34;</code>
-   * @return The bytes for machineinfoBrand.
-   */
-  com.google.protobuf.ByteString
-      getMachineinfoBrandBytes();
-
-  /**
-   * <code>string machineinfoModel = 35;</code>
-   * @return The machineinfoModel.
-   */
-  java.lang.String getMachineinfoModel();
-  /**
-   * <code>string machineinfoModel = 35;</code>
-   * @return The bytes for machineinfoModel.
-   */
-  com.google.protobuf.ByteString
-      getMachineinfoModelBytes();
-
-  /**
-   * <code>string machineinfoSystem = 36;</code>
-   * @return The machineinfoSystem.
-   */
-  java.lang.String getMachineinfoSystem();
-  /**
-   * <code>string machineinfoSystem = 36;</code>
-   * @return The bytes for machineinfoSystem.
-   */
-  com.google.protobuf.ByteString
-      getMachineinfoSystemBytes();
-
-  /**
-   * <code>string machineinfoPlatform = 37;</code>
-   * @return The machineinfoPlatform.
-   */
-  java.lang.String getMachineinfoPlatform();
-  /**
-   * <code>string machineinfoPlatform = 37;</code>
-   * @return The bytes for machineinfoPlatform.
-   */
-  com.google.protobuf.ByteString
-      getMachineinfoPlatformBytes();
-
-  /**
-   * <code>string gender = 38;</code>
-   * @return The gender.
-   */
-  java.lang.String getGender();
-  /**
-   * <code>string gender = 38;</code>
-   * @return The bytes for gender.
-   */
-  com.google.protobuf.ByteString
-      getGenderBytes();
-
-  /**
-   * <code>string country = 39;</code>
-   * @return The country.
-   */
-  java.lang.String getCountry();
-  /**
-   * <code>string country = 39;</code>
-   * @return The bytes for country.
-   */
-  com.google.protobuf.ByteString
-      getCountryBytes();
-
-  /**
-   * <code>string province = 40;</code>
-   * @return The province.
-   */
-  java.lang.String getProvince();
-  /**
-   * <code>string province = 40;</code>
-   * @return The bytes for province.
-   */
-  com.google.protobuf.ByteString
-      getProvinceBytes();
-
+  int getUserFeatureInfoCount();
   /**
-   * <code>string city = 41;</code>
-   * @return The city.
+   * <code>repeated .GetUserFeatureInfo user_feature_info = 2;</code>
    */
-  java.lang.String getCity();
+  java.util.List<? extends com.tzld.piaoquan.recommend.feature.model.feature.GetUserFeatureInfoOrBuilder> 
+      getUserFeatureInfoOrBuilderList();
   /**
-   * <code>string city = 41;</code>
-   * @return The bytes for city.
+   * <code>repeated .GetUserFeatureInfo user_feature_info = 2;</code>
    */
-  com.google.protobuf.ByteString
-      getCityBytes();
+  com.tzld.piaoquan.recommend.feature.model.feature.GetUserFeatureInfoOrBuilder getUserFeatureInfoOrBuilder(
+      int index);
 }

+ 3532 - 0
recommend-feature-client/src/main/java/com/tzld/piaoquan/recommend/feature/model/feature/GetVideoFeatureInfo.java

@@ -0,0 +1,3532 @@
+// Generated by the protocol buffer compiler.  DO NOT EDIT!
+// source: com/tzld/piaoquan/recommend/feature/feature.proto
+
+package com.tzld.piaoquan.recommend.feature.model.feature;
+
+/**
+ * Protobuf type {@code GetVideoFeatureInfo}
+ */
+public final class GetVideoFeatureInfo extends
+    com.google.protobuf.GeneratedMessageV3 implements
+    // @@protoc_insertion_point(message_implements:GetVideoFeatureInfo)
+    GetVideoFeatureInfoOrBuilder {
+private static final long serialVersionUID = 0L;
+  // Use GetVideoFeatureInfo.newBuilder() to construct.
+  private GetVideoFeatureInfo(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
+    super(builder);
+  }
+  private GetVideoFeatureInfo() {
+    gmtCreate_ = "";
+  }
+
+  @java.lang.Override
+  @SuppressWarnings({"unused"})
+  protected java.lang.Object newInstance(
+      UnusedPrivateParameter unused) {
+    return new GetVideoFeatureInfo();
+  }
+
+  @java.lang.Override
+  public final com.google.protobuf.UnknownFieldSet
+  getUnknownFields() {
+    return this.unknownFields;
+  }
+  private GetVideoFeatureInfo(
+      com.google.protobuf.CodedInputStream input,
+      com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+      throws com.google.protobuf.InvalidProtocolBufferException {
+    this();
+    if (extensionRegistry == null) {
+      throw new java.lang.NullPointerException();
+    }
+    com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+        com.google.protobuf.UnknownFieldSet.newBuilder();
+    try {
+      boolean done = false;
+      while (!done) {
+        int tag = input.readTag();
+        switch (tag) {
+          case 0:
+            done = true;
+            break;
+          case 8: {
+
+            videoId_ = input.readInt64();
+            break;
+          }
+          case 16: {
+
+            playCountTotal_ = input.readInt64();
+            break;
+          }
+          case 24: {
+
+            totalTime_ = input.readInt32();
+            break;
+          }
+          case 34: {
+            java.lang.String s = input.readStringRequireUtf8();
+
+            gmtCreate_ = s;
+            break;
+          }
+          case 40: {
+
+            uid_ = input.readInt64();
+            break;
+          }
+          case 48: {
+
+            i15MinExpCnt_ = input.readInt64();
+            break;
+          }
+          case 56: {
+
+            i15MinClickCnt_ = input.readInt64();
+            break;
+          }
+          case 64: {
+
+            i15MinShareCnt_ = input.readInt64();
+            break;
+          }
+          case 72: {
+
+            i15MinReturnCnt_ = input.readInt64();
+            break;
+          }
+          case 81: {
+
+            iCtr15Min_ = input.readDouble();
+            break;
+          }
+          case 89: {
+
+            iStr15Min_ = input.readDouble();
+            break;
+          }
+          case 97: {
+
+            iRov15Min_ = input.readDouble();
+            break;
+          }
+          case 105: {
+
+            iRos15Min_ = input.readDouble();
+            break;
+          }
+          case 112: {
+
+            i1HourExpCnt_ = input.readInt64();
+            break;
+          }
+          case 120: {
+
+            i1HourClickCnt_ = input.readInt64();
+            break;
+          }
+          case 128: {
+
+            i1HourShareCnt_ = input.readInt64();
+            break;
+          }
+          case 136: {
+
+            i1HourReturnCnt_ = input.readInt64();
+            break;
+          }
+          case 145: {
+
+            iCtr1Hour_ = input.readDouble();
+            break;
+          }
+          case 153: {
+
+            iStr1Hour_ = input.readDouble();
+            break;
+          }
+          case 161: {
+
+            iRov1Hour_ = input.readDouble();
+            break;
+          }
+          case 169: {
+
+            iRos1Hour_ = input.readDouble();
+            break;
+          }
+          case 176: {
+
+            iTodayExpCnt_ = input.readInt64();
+            break;
+          }
+          case 184: {
+
+            iTodayClickCnt_ = input.readInt64();
+            break;
+          }
+          case 192: {
+
+            iTodayShareCnt_ = input.readInt64();
+            break;
+          }
+          case 200: {
+
+            iTodayReturnCnt_ = input.readInt64();
+            break;
+          }
+          case 209: {
+
+            iCtrToday_ = input.readDouble();
+            break;
+          }
+          case 217: {
+
+            iStrToday_ = input.readDouble();
+            break;
+          }
+          case 225: {
+
+            iRovToday_ = input.readDouble();
+            break;
+          }
+          case 233: {
+
+            iRosToday_ = input.readDouble();
+            break;
+          }
+          case 240: {
+
+            i1DayExpCnt_ = input.readInt64();
+            break;
+          }
+          case 248: {
+
+            i1DayClickCnt_ = input.readInt64();
+            break;
+          }
+          case 256: {
+
+            i1DayShareCnt_ = input.readInt64();
+            break;
+          }
+          case 264: {
+
+            i1DayReturnCnt_ = input.readInt64();
+            break;
+          }
+          case 273: {
+
+            iCtr1Day_ = input.readDouble();
+            break;
+          }
+          case 281: {
+
+            iStr1Day_ = input.readDouble();
+            break;
+          }
+          case 289: {
+
+            iRov1Day_ = input.readDouble();
+            break;
+          }
+          case 297: {
+
+            iRos1Day_ = input.readDouble();
+            break;
+          }
+          case 304: {
+
+            i3DayExpCnt_ = input.readInt64();
+            break;
+          }
+          case 312: {
+
+            i3DayClickCnt_ = input.readInt64();
+            break;
+          }
+          case 320: {
+
+            i3DayShareCnt_ = input.readInt64();
+            break;
+          }
+          case 328: {
+
+            i3DayReturnCnt_ = input.readInt64();
+            break;
+          }
+          case 337: {
+
+            iCtr3Day_ = input.readDouble();
+            break;
+          }
+          case 345: {
+
+            iStr3Day_ = input.readDouble();
+            break;
+          }
+          case 353: {
+
+            iRov3Day_ = input.readDouble();
+            break;
+          }
+          case 361: {
+
+            iRos3Day_ = input.readDouble();
+            break;
+          }
+          default: {
+            if (!parseUnknownField(
+                input, unknownFields, extensionRegistry, tag)) {
+              done = true;
+            }
+            break;
+          }
+        }
+      }
+    } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+      throw e.setUnfinishedMessage(this);
+    } catch (java.io.IOException e) {
+      throw new com.google.protobuf.InvalidProtocolBufferException(
+          e).setUnfinishedMessage(this);
+    } finally {
+      this.unknownFields = unknownFields.build();
+      makeExtensionsImmutable();
+    }
+  }
+  public static final com.google.protobuf.Descriptors.Descriptor
+      getDescriptor() {
+    return com.tzld.piaoquan.recommend.feature.model.feature.Feature.internal_static_GetVideoFeatureInfo_descriptor;
+  }
+
+  @java.lang.Override
+  protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
+      internalGetFieldAccessorTable() {
+    return com.tzld.piaoquan.recommend.feature.model.feature.Feature.internal_static_GetVideoFeatureInfo_fieldAccessorTable
+        .ensureFieldAccessorsInitialized(
+            com.tzld.piaoquan.recommend.feature.model.feature.GetVideoFeatureInfo.class, com.tzld.piaoquan.recommend.feature.model.feature.GetVideoFeatureInfo.Builder.class);
+  }
+
+  public static final int VIDEO_ID_FIELD_NUMBER = 1;
+  private long videoId_;
+  /**
+   * <code>int64 video_id = 1;</code>
+   * @return The videoId.
+   */
+  @java.lang.Override
+  public long getVideoId() {
+    return videoId_;
+  }
+
+  public static final int PLAY_COUNT_TOTAL_FIELD_NUMBER = 2;
+  private long playCountTotal_;
+  /**
+   * <code>int64 play_count_total = 2;</code>
+   * @return The playCountTotal.
+   */
+  @java.lang.Override
+  public long getPlayCountTotal() {
+    return playCountTotal_;
+  }
+
+  public static final int TOTAL_TIME_FIELD_NUMBER = 3;
+  private int totalTime_;
+  /**
+   * <code>int32 total_time = 3;</code>
+   * @return The totalTime.
+   */
+  @java.lang.Override
+  public int getTotalTime() {
+    return totalTime_;
+  }
+
+  public static final int GMT_CREATE_FIELD_NUMBER = 4;
+  private volatile java.lang.Object gmtCreate_;
+  /**
+   * <code>string gmt_create = 4;</code>
+   * @return The gmtCreate.
+   */
+  @java.lang.Override
+  public java.lang.String getGmtCreate() {
+    java.lang.Object ref = gmtCreate_;
+    if (ref instanceof java.lang.String) {
+      return (java.lang.String) ref;
+    } else {
+      com.google.protobuf.ByteString bs = 
+          (com.google.protobuf.ByteString) ref;
+      java.lang.String s = bs.toStringUtf8();
+      gmtCreate_ = s;
+      return s;
+    }
+  }
+  /**
+   * <code>string gmt_create = 4;</code>
+   * @return The bytes for gmtCreate.
+   */
+  @java.lang.Override
+  public com.google.protobuf.ByteString
+      getGmtCreateBytes() {
+    java.lang.Object ref = gmtCreate_;
+    if (ref instanceof java.lang.String) {
+      com.google.protobuf.ByteString b = 
+          com.google.protobuf.ByteString.copyFromUtf8(
+              (java.lang.String) ref);
+      gmtCreate_ = b;
+      return b;
+    } else {
+      return (com.google.protobuf.ByteString) ref;
+    }
+  }
+
+  public static final int UID_FIELD_NUMBER = 5;
+  private long uid_;
+  /**
+   * <pre>
+   * 上传者
+   * </pre>
+   *
+   * <code>int64 uid = 5;</code>
+   * @return The uid.
+   */
+  @java.lang.Override
+  public long getUid() {
+    return uid_;
+  }
+
+  public static final int I15MIN_EXP_CNT_FIELD_NUMBER = 6;
+  private long i15MinExpCnt_;
+  /**
+   * <pre>
+   * 过去十五分钟
+   * </pre>
+   *
+   * <code>int64 i15min_exp_cnt = 6;</code>
+   * @return The i15minExpCnt.
+   */
+  @java.lang.Override
+  public long getI15MinExpCnt() {
+    return i15MinExpCnt_;
+  }
+
+  public static final int I15MIN_CLICK_CNT_FIELD_NUMBER = 7;
+  private long i15MinClickCnt_;
+  /**
+   * <code>int64 i15min_click_cnt = 7;</code>
+   * @return The i15minClickCnt.
+   */
+  @java.lang.Override
+  public long getI15MinClickCnt() {
+    return i15MinClickCnt_;
+  }
+
+  public static final int I15MIN_SHARE_CNT_FIELD_NUMBER = 8;
+  private long i15MinShareCnt_;
+  /**
+   * <code>int64 i15min_share_cnt = 8;</code>
+   * @return The i15minShareCnt.
+   */
+  @java.lang.Override
+  public long getI15MinShareCnt() {
+    return i15MinShareCnt_;
+  }
+
+  public static final int I15MIN_RETURN_CNT_FIELD_NUMBER = 9;
+  private long i15MinReturnCnt_;
+  /**
+   * <code>int64 i15min_return_cnt = 9;</code>
+   * @return The i15minReturnCnt.
+   */
+  @java.lang.Override
+  public long getI15MinReturnCnt() {
+    return i15MinReturnCnt_;
+  }
+
+  public static final int I_CTR15MIN_FIELD_NUMBER = 10;
+  private double iCtr15Min_;
+  /**
+   * <code>double i_ctr15min = 10;</code>
+   * @return The iCtr15min.
+   */
+  @java.lang.Override
+  public double getICtr15Min() {
+    return iCtr15Min_;
+  }
+
+  public static final int I_STR15MIN_FIELD_NUMBER = 11;
+  private double iStr15Min_;
+  /**
+   * <code>double i_str15min = 11;</code>
+   * @return The iStr15min.
+   */
+  @java.lang.Override
+  public double getIStr15Min() {
+    return iStr15Min_;
+  }
+
+  public static final int I_ROV15MIN_FIELD_NUMBER = 12;
+  private double iRov15Min_;
+  /**
+   * <code>double i_rov15min = 12;</code>
+   * @return The iRov15min.
+   */
+  @java.lang.Override
+  public double getIRov15Min() {
+    return iRov15Min_;
+  }
+
+  public static final int I_ROS15MIN_FIELD_NUMBER = 13;
+  private double iRos15Min_;
+  /**
+   * <code>double i_ros15min = 13;</code>
+   * @return The iRos15min.
+   */
+  @java.lang.Override
+  public double getIRos15Min() {
+    return iRos15Min_;
+  }
+
+  public static final int I1HOUR_EXP_CNT_FIELD_NUMBER = 14;
+  private long i1HourExpCnt_;
+  /**
+   * <pre>
+   * 过去一小时
+   * </pre>
+   *
+   * <code>int64 i1hour_exp_cnt = 14;</code>
+   * @return The i1hourExpCnt.
+   */
+  @java.lang.Override
+  public long getI1HourExpCnt() {
+    return i1HourExpCnt_;
+  }
+
+  public static final int I1HOUR_CLICK_CNT_FIELD_NUMBER = 15;
+  private long i1HourClickCnt_;
+  /**
+   * <code>int64 i1hour_click_cnt = 15;</code>
+   * @return The i1hourClickCnt.
+   */
+  @java.lang.Override
+  public long getI1HourClickCnt() {
+    return i1HourClickCnt_;
+  }
+
+  public static final int I1HOUR_SHARE_CNT_FIELD_NUMBER = 16;
+  private long i1HourShareCnt_;
+  /**
+   * <code>int64 i1hour_share_cnt = 16;</code>
+   * @return The i1hourShareCnt.
+   */
+  @java.lang.Override
+  public long getI1HourShareCnt() {
+    return i1HourShareCnt_;
+  }
+
+  public static final int I1HOUR_RETURN_CNT_FIELD_NUMBER = 17;
+  private long i1HourReturnCnt_;
+  /**
+   * <code>int64 i1hour_return_cnt = 17;</code>
+   * @return The i1hourReturnCnt.
+   */
+  @java.lang.Override
+  public long getI1HourReturnCnt() {
+    return i1HourReturnCnt_;
+  }
+
+  public static final int I_CTR1HOUR_FIELD_NUMBER = 18;
+  private double iCtr1Hour_;
+  /**
+   * <code>double i_ctr1hour = 18;</code>
+   * @return The iCtr1hour.
+   */
+  @java.lang.Override
+  public double getICtr1Hour() {
+    return iCtr1Hour_;
+  }
+
+  public static final int I_STR1HOUR_FIELD_NUMBER = 19;
+  private double iStr1Hour_;
+  /**
+   * <code>double i_str1hour = 19;</code>
+   * @return The iStr1hour.
+   */
+  @java.lang.Override
+  public double getIStr1Hour() {
+    return iStr1Hour_;
+  }
+
+  public static final int I_ROV1HOUR_FIELD_NUMBER = 20;
+  private double iRov1Hour_;
+  /**
+   * <code>double i_rov1hour = 20;</code>
+   * @return The iRov1hour.
+   */
+  @java.lang.Override
+  public double getIRov1Hour() {
+    return iRov1Hour_;
+  }
+
+  public static final int I_ROS1HOUR_FIELD_NUMBER = 21;
+  private double iRos1Hour_;
+  /**
+   * <code>double i_ros1hour = 21;</code>
+   * @return The iRos1hour.
+   */
+  @java.lang.Override
+  public double getIRos1Hour() {
+    return iRos1Hour_;
+  }
+
+  public static final int I_TODAY_EXP_CNT_FIELD_NUMBER = 22;
+  private long iTodayExpCnt_;
+  /**
+   * <pre>
+   * 今天
+   * </pre>
+   *
+   * <code>int64 i_today_exp_cnt = 22;</code>
+   * @return The iTodayExpCnt.
+   */
+  @java.lang.Override
+  public long getITodayExpCnt() {
+    return iTodayExpCnt_;
+  }
+
+  public static final int I_TODAY_CLICK_CNT_FIELD_NUMBER = 23;
+  private long iTodayClickCnt_;
+  /**
+   * <code>int64 i_today_click_cnt = 23;</code>
+   * @return The iTodayClickCnt.
+   */
+  @java.lang.Override
+  public long getITodayClickCnt() {
+    return iTodayClickCnt_;
+  }
+
+  public static final int I_TODAY_SHARE_CNT_FIELD_NUMBER = 24;
+  private long iTodayShareCnt_;
+  /**
+   * <code>int64 i_today_share_cnt = 24;</code>
+   * @return The iTodayShareCnt.
+   */
+  @java.lang.Override
+  public long getITodayShareCnt() {
+    return iTodayShareCnt_;
+  }
+
+  public static final int I_TODAY_RETURN_CNT_FIELD_NUMBER = 25;
+  private long iTodayReturnCnt_;
+  /**
+   * <code>int64 i_today_return_cnt = 25;</code>
+   * @return The iTodayReturnCnt.
+   */
+  @java.lang.Override
+  public long getITodayReturnCnt() {
+    return iTodayReturnCnt_;
+  }
+
+  public static final int I_CTR_TODAY_FIELD_NUMBER = 26;
+  private double iCtrToday_;
+  /**
+   * <code>double i_ctr_today = 26;</code>
+   * @return The iCtrToday.
+   */
+  @java.lang.Override
+  public double getICtrToday() {
+    return iCtrToday_;
+  }
+
+  public static final int I_STR_TODAY_FIELD_NUMBER = 27;
+  private double iStrToday_;
+  /**
+   * <code>double i_str_today = 27;</code>
+   * @return The iStrToday.
+   */
+  @java.lang.Override
+  public double getIStrToday() {
+    return iStrToday_;
+  }
+
+  public static final int I_ROV_TODAY_FIELD_NUMBER = 28;
+  private double iRovToday_;
+  /**
+   * <code>double i_rov_today = 28;</code>
+   * @return The iRovToday.
+   */
+  @java.lang.Override
+  public double getIRovToday() {
+    return iRovToday_;
+  }
+
+  public static final int I_ROS_TODAY_FIELD_NUMBER = 29;
+  private double iRosToday_;
+  /**
+   * <code>double i_ros_today = 29;</code>
+   * @return The iRosToday.
+   */
+  @java.lang.Override
+  public double getIRosToday() {
+    return iRosToday_;
+  }
+
+  public static final int I1DAY_EXP_CNT_FIELD_NUMBER = 30;
+  private long i1DayExpCnt_;
+  /**
+   * <pre>
+   * 过去一天
+   * </pre>
+   *
+   * <code>int64 i1day_exp_cnt = 30;</code>
+   * @return The i1dayExpCnt.
+   */
+  @java.lang.Override
+  public long getI1DayExpCnt() {
+    return i1DayExpCnt_;
+  }
+
+  public static final int I1DAY_CLICK_CNT_FIELD_NUMBER = 31;
+  private long i1DayClickCnt_;
+  /**
+   * <code>int64 i1day_click_cnt = 31;</code>
+   * @return The i1dayClickCnt.
+   */
+  @java.lang.Override
+  public long getI1DayClickCnt() {
+    return i1DayClickCnt_;
+  }
+
+  public static final int I1DAY_SHARE_CNT_FIELD_NUMBER = 32;
+  private long i1DayShareCnt_;
+  /**
+   * <code>int64 i1day_share_cnt = 32;</code>
+   * @return The i1dayShareCnt.
+   */
+  @java.lang.Override
+  public long getI1DayShareCnt() {
+    return i1DayShareCnt_;
+  }
+
+  public static final int I1DAY_RETURN_CNT_FIELD_NUMBER = 33;
+  private long i1DayReturnCnt_;
+  /**
+   * <code>int64 i1day_return_cnt = 33;</code>
+   * @return The i1dayReturnCnt.
+   */
+  @java.lang.Override
+  public long getI1DayReturnCnt() {
+    return i1DayReturnCnt_;
+  }
+
+  public static final int I_CTR1DAY_FIELD_NUMBER = 34;
+  private double iCtr1Day_;
+  /**
+   * <code>double i_ctr1day = 34;</code>
+   * @return The iCtr1day.
+   */
+  @java.lang.Override
+  public double getICtr1Day() {
+    return iCtr1Day_;
+  }
+
+  public static final int I_STR1DAY_FIELD_NUMBER = 35;
+  private double iStr1Day_;
+  /**
+   * <code>double i_str1day = 35;</code>
+   * @return The iStr1day.
+   */
+  @java.lang.Override
+  public double getIStr1Day() {
+    return iStr1Day_;
+  }
+
+  public static final int I_ROV1DAY_FIELD_NUMBER = 36;
+  private double iRov1Day_;
+  /**
+   * <code>double i_rov1day = 36;</code>
+   * @return The iRov1day.
+   */
+  @java.lang.Override
+  public double getIRov1Day() {
+    return iRov1Day_;
+  }
+
+  public static final int I_ROS1DAY_FIELD_NUMBER = 37;
+  private double iRos1Day_;
+  /**
+   * <code>double i_ros1day = 37;</code>
+   * @return The iRos1day.
+   */
+  @java.lang.Override
+  public double getIRos1Day() {
+    return iRos1Day_;
+  }
+
+  public static final int I3DAY_EXP_CNT_FIELD_NUMBER = 38;
+  private long i3DayExpCnt_;
+  /**
+   * <pre>
+   * 过去三天
+   * </pre>
+   *
+   * <code>int64 i3day_exp_cnt = 38;</code>
+   * @return The i3dayExpCnt.
+   */
+  @java.lang.Override
+  public long getI3DayExpCnt() {
+    return i3DayExpCnt_;
+  }
+
+  public static final int I3DAY_CLICK_CNT_FIELD_NUMBER = 39;
+  private long i3DayClickCnt_;
+  /**
+   * <code>int64 i3day_click_cnt = 39;</code>
+   * @return The i3dayClickCnt.
+   */
+  @java.lang.Override
+  public long getI3DayClickCnt() {
+    return i3DayClickCnt_;
+  }
+
+  public static final int I3DAY_SHARE_CNT_FIELD_NUMBER = 40;
+  private long i3DayShareCnt_;
+  /**
+   * <code>int64 i3day_share_cnt = 40;</code>
+   * @return The i3dayShareCnt.
+   */
+  @java.lang.Override
+  public long getI3DayShareCnt() {
+    return i3DayShareCnt_;
+  }
+
+  public static final int I3DAY_RETURN_CNT_FIELD_NUMBER = 41;
+  private long i3DayReturnCnt_;
+  /**
+   * <code>int64 i3day_return_cnt = 41;</code>
+   * @return The i3dayReturnCnt.
+   */
+  @java.lang.Override
+  public long getI3DayReturnCnt() {
+    return i3DayReturnCnt_;
+  }
+
+  public static final int I_CTR3DAY_FIELD_NUMBER = 42;
+  private double iCtr3Day_;
+  /**
+   * <code>double i_ctr3day = 42;</code>
+   * @return The iCtr3day.
+   */
+  @java.lang.Override
+  public double getICtr3Day() {
+    return iCtr3Day_;
+  }
+
+  public static final int I_STR3DAY_FIELD_NUMBER = 43;
+  private double iStr3Day_;
+  /**
+   * <code>double i_str3day = 43;</code>
+   * @return The iStr3day.
+   */
+  @java.lang.Override
+  public double getIStr3Day() {
+    return iStr3Day_;
+  }
+
+  public static final int I_ROV3DAY_FIELD_NUMBER = 44;
+  private double iRov3Day_;
+  /**
+   * <code>double i_rov3day = 44;</code>
+   * @return The iRov3day.
+   */
+  @java.lang.Override
+  public double getIRov3Day() {
+    return iRov3Day_;
+  }
+
+  public static final int I_ROS3DAY_FIELD_NUMBER = 45;
+  private double iRos3Day_;
+  /**
+   * <code>double i_ros3day = 45;</code>
+   * @return The iRos3day.
+   */
+  @java.lang.Override
+  public double getIRos3Day() {
+    return iRos3Day_;
+  }
+
+  private byte memoizedIsInitialized = -1;
+  @java.lang.Override
+  public final boolean isInitialized() {
+    byte isInitialized = memoizedIsInitialized;
+    if (isInitialized == 1) return true;
+    if (isInitialized == 0) return false;
+
+    memoizedIsInitialized = 1;
+    return true;
+  }
+
+  @java.lang.Override
+  public void writeTo(com.google.protobuf.CodedOutputStream output)
+                      throws java.io.IOException {
+    if (videoId_ != 0L) {
+      output.writeInt64(1, videoId_);
+    }
+    if (playCountTotal_ != 0L) {
+      output.writeInt64(2, playCountTotal_);
+    }
+    if (totalTime_ != 0) {
+      output.writeInt32(3, totalTime_);
+    }
+    if (!getGmtCreateBytes().isEmpty()) {
+      com.google.protobuf.GeneratedMessageV3.writeString(output, 4, gmtCreate_);
+    }
+    if (uid_ != 0L) {
+      output.writeInt64(5, uid_);
+    }
+    if (i15MinExpCnt_ != 0L) {
+      output.writeInt64(6, i15MinExpCnt_);
+    }
+    if (i15MinClickCnt_ != 0L) {
+      output.writeInt64(7, i15MinClickCnt_);
+    }
+    if (i15MinShareCnt_ != 0L) {
+      output.writeInt64(8, i15MinShareCnt_);
+    }
+    if (i15MinReturnCnt_ != 0L) {
+      output.writeInt64(9, i15MinReturnCnt_);
+    }
+    if (iCtr15Min_ != 0D) {
+      output.writeDouble(10, iCtr15Min_);
+    }
+    if (iStr15Min_ != 0D) {
+      output.writeDouble(11, iStr15Min_);
+    }
+    if (iRov15Min_ != 0D) {
+      output.writeDouble(12, iRov15Min_);
+    }
+    if (iRos15Min_ != 0D) {
+      output.writeDouble(13, iRos15Min_);
+    }
+    if (i1HourExpCnt_ != 0L) {
+      output.writeInt64(14, i1HourExpCnt_);
+    }
+    if (i1HourClickCnt_ != 0L) {
+      output.writeInt64(15, i1HourClickCnt_);
+    }
+    if (i1HourShareCnt_ != 0L) {
+      output.writeInt64(16, i1HourShareCnt_);
+    }
+    if (i1HourReturnCnt_ != 0L) {
+      output.writeInt64(17, i1HourReturnCnt_);
+    }
+    if (iCtr1Hour_ != 0D) {
+      output.writeDouble(18, iCtr1Hour_);
+    }
+    if (iStr1Hour_ != 0D) {
+      output.writeDouble(19, iStr1Hour_);
+    }
+    if (iRov1Hour_ != 0D) {
+      output.writeDouble(20, iRov1Hour_);
+    }
+    if (iRos1Hour_ != 0D) {
+      output.writeDouble(21, iRos1Hour_);
+    }
+    if (iTodayExpCnt_ != 0L) {
+      output.writeInt64(22, iTodayExpCnt_);
+    }
+    if (iTodayClickCnt_ != 0L) {
+      output.writeInt64(23, iTodayClickCnt_);
+    }
+    if (iTodayShareCnt_ != 0L) {
+      output.writeInt64(24, iTodayShareCnt_);
+    }
+    if (iTodayReturnCnt_ != 0L) {
+      output.writeInt64(25, iTodayReturnCnt_);
+    }
+    if (iCtrToday_ != 0D) {
+      output.writeDouble(26, iCtrToday_);
+    }
+    if (iStrToday_ != 0D) {
+      output.writeDouble(27, iStrToday_);
+    }
+    if (iRovToday_ != 0D) {
+      output.writeDouble(28, iRovToday_);
+    }
+    if (iRosToday_ != 0D) {
+      output.writeDouble(29, iRosToday_);
+    }
+    if (i1DayExpCnt_ != 0L) {
+      output.writeInt64(30, i1DayExpCnt_);
+    }
+    if (i1DayClickCnt_ != 0L) {
+      output.writeInt64(31, i1DayClickCnt_);
+    }
+    if (i1DayShareCnt_ != 0L) {
+      output.writeInt64(32, i1DayShareCnt_);
+    }
+    if (i1DayReturnCnt_ != 0L) {
+      output.writeInt64(33, i1DayReturnCnt_);
+    }
+    if (iCtr1Day_ != 0D) {
+      output.writeDouble(34, iCtr1Day_);
+    }
+    if (iStr1Day_ != 0D) {
+      output.writeDouble(35, iStr1Day_);
+    }
+    if (iRov1Day_ != 0D) {
+      output.writeDouble(36, iRov1Day_);
+    }
+    if (iRos1Day_ != 0D) {
+      output.writeDouble(37, iRos1Day_);
+    }
+    if (i3DayExpCnt_ != 0L) {
+      output.writeInt64(38, i3DayExpCnt_);
+    }
+    if (i3DayClickCnt_ != 0L) {
+      output.writeInt64(39, i3DayClickCnt_);
+    }
+    if (i3DayShareCnt_ != 0L) {
+      output.writeInt64(40, i3DayShareCnt_);
+    }
+    if (i3DayReturnCnt_ != 0L) {
+      output.writeInt64(41, i3DayReturnCnt_);
+    }
+    if (iCtr3Day_ != 0D) {
+      output.writeDouble(42, iCtr3Day_);
+    }
+    if (iStr3Day_ != 0D) {
+      output.writeDouble(43, iStr3Day_);
+    }
+    if (iRov3Day_ != 0D) {
+      output.writeDouble(44, iRov3Day_);
+    }
+    if (iRos3Day_ != 0D) {
+      output.writeDouble(45, iRos3Day_);
+    }
+    unknownFields.writeTo(output);
+  }
+
+  @java.lang.Override
+  public int getSerializedSize() {
+    int size = memoizedSize;
+    if (size != -1) return size;
+
+    size = 0;
+    if (videoId_ != 0L) {
+      size += com.google.protobuf.CodedOutputStream
+        .computeInt64Size(1, videoId_);
+    }
+    if (playCountTotal_ != 0L) {
+      size += com.google.protobuf.CodedOutputStream
+        .computeInt64Size(2, playCountTotal_);
+    }
+    if (totalTime_ != 0) {
+      size += com.google.protobuf.CodedOutputStream
+        .computeInt32Size(3, totalTime_);
+    }
+    if (!getGmtCreateBytes().isEmpty()) {
+      size += com.google.protobuf.GeneratedMessageV3.computeStringSize(4, gmtCreate_);
+    }
+    if (uid_ != 0L) {
+      size += com.google.protobuf.CodedOutputStream
+        .computeInt64Size(5, uid_);
+    }
+    if (i15MinExpCnt_ != 0L) {
+      size += com.google.protobuf.CodedOutputStream
+        .computeInt64Size(6, i15MinExpCnt_);
+    }
+    if (i15MinClickCnt_ != 0L) {
+      size += com.google.protobuf.CodedOutputStream
+        .computeInt64Size(7, i15MinClickCnt_);
+    }
+    if (i15MinShareCnt_ != 0L) {
+      size += com.google.protobuf.CodedOutputStream
+        .computeInt64Size(8, i15MinShareCnt_);
+    }
+    if (i15MinReturnCnt_ != 0L) {
+      size += com.google.protobuf.CodedOutputStream
+        .computeInt64Size(9, i15MinReturnCnt_);
+    }
+    if (iCtr15Min_ != 0D) {
+      size += com.google.protobuf.CodedOutputStream
+        .computeDoubleSize(10, iCtr15Min_);
+    }
+    if (iStr15Min_ != 0D) {
+      size += com.google.protobuf.CodedOutputStream
+        .computeDoubleSize(11, iStr15Min_);
+    }
+    if (iRov15Min_ != 0D) {
+      size += com.google.protobuf.CodedOutputStream
+        .computeDoubleSize(12, iRov15Min_);
+    }
+    if (iRos15Min_ != 0D) {
+      size += com.google.protobuf.CodedOutputStream
+        .computeDoubleSize(13, iRos15Min_);
+    }
+    if (i1HourExpCnt_ != 0L) {
+      size += com.google.protobuf.CodedOutputStream
+        .computeInt64Size(14, i1HourExpCnt_);
+    }
+    if (i1HourClickCnt_ != 0L) {
+      size += com.google.protobuf.CodedOutputStream
+        .computeInt64Size(15, i1HourClickCnt_);
+    }
+    if (i1HourShareCnt_ != 0L) {
+      size += com.google.protobuf.CodedOutputStream
+        .computeInt64Size(16, i1HourShareCnt_);
+    }
+    if (i1HourReturnCnt_ != 0L) {
+      size += com.google.protobuf.CodedOutputStream
+        .computeInt64Size(17, i1HourReturnCnt_);
+    }
+    if (iCtr1Hour_ != 0D) {
+      size += com.google.protobuf.CodedOutputStream
+        .computeDoubleSize(18, iCtr1Hour_);
+    }
+    if (iStr1Hour_ != 0D) {
+      size += com.google.protobuf.CodedOutputStream
+        .computeDoubleSize(19, iStr1Hour_);
+    }
+    if (iRov1Hour_ != 0D) {
+      size += com.google.protobuf.CodedOutputStream
+        .computeDoubleSize(20, iRov1Hour_);
+    }
+    if (iRos1Hour_ != 0D) {
+      size += com.google.protobuf.CodedOutputStream
+        .computeDoubleSize(21, iRos1Hour_);
+    }
+    if (iTodayExpCnt_ != 0L) {
+      size += com.google.protobuf.CodedOutputStream
+        .computeInt64Size(22, iTodayExpCnt_);
+    }
+    if (iTodayClickCnt_ != 0L) {
+      size += com.google.protobuf.CodedOutputStream
+        .computeInt64Size(23, iTodayClickCnt_);
+    }
+    if (iTodayShareCnt_ != 0L) {
+      size += com.google.protobuf.CodedOutputStream
+        .computeInt64Size(24, iTodayShareCnt_);
+    }
+    if (iTodayReturnCnt_ != 0L) {
+      size += com.google.protobuf.CodedOutputStream
+        .computeInt64Size(25, iTodayReturnCnt_);
+    }
+    if (iCtrToday_ != 0D) {
+      size += com.google.protobuf.CodedOutputStream
+        .computeDoubleSize(26, iCtrToday_);
+    }
+    if (iStrToday_ != 0D) {
+      size += com.google.protobuf.CodedOutputStream
+        .computeDoubleSize(27, iStrToday_);
+    }
+    if (iRovToday_ != 0D) {
+      size += com.google.protobuf.CodedOutputStream
+        .computeDoubleSize(28, iRovToday_);
+    }
+    if (iRosToday_ != 0D) {
+      size += com.google.protobuf.CodedOutputStream
+        .computeDoubleSize(29, iRosToday_);
+    }
+    if (i1DayExpCnt_ != 0L) {
+      size += com.google.protobuf.CodedOutputStream
+        .computeInt64Size(30, i1DayExpCnt_);
+    }
+    if (i1DayClickCnt_ != 0L) {
+      size += com.google.protobuf.CodedOutputStream
+        .computeInt64Size(31, i1DayClickCnt_);
+    }
+    if (i1DayShareCnt_ != 0L) {
+      size += com.google.protobuf.CodedOutputStream
+        .computeInt64Size(32, i1DayShareCnt_);
+    }
+    if (i1DayReturnCnt_ != 0L) {
+      size += com.google.protobuf.CodedOutputStream
+        .computeInt64Size(33, i1DayReturnCnt_);
+    }
+    if (iCtr1Day_ != 0D) {
+      size += com.google.protobuf.CodedOutputStream
+        .computeDoubleSize(34, iCtr1Day_);
+    }
+    if (iStr1Day_ != 0D) {
+      size += com.google.protobuf.CodedOutputStream
+        .computeDoubleSize(35, iStr1Day_);
+    }
+    if (iRov1Day_ != 0D) {
+      size += com.google.protobuf.CodedOutputStream
+        .computeDoubleSize(36, iRov1Day_);
+    }
+    if (iRos1Day_ != 0D) {
+      size += com.google.protobuf.CodedOutputStream
+        .computeDoubleSize(37, iRos1Day_);
+    }
+    if (i3DayExpCnt_ != 0L) {
+      size += com.google.protobuf.CodedOutputStream
+        .computeInt64Size(38, i3DayExpCnt_);
+    }
+    if (i3DayClickCnt_ != 0L) {
+      size += com.google.protobuf.CodedOutputStream
+        .computeInt64Size(39, i3DayClickCnt_);
+    }
+    if (i3DayShareCnt_ != 0L) {
+      size += com.google.protobuf.CodedOutputStream
+        .computeInt64Size(40, i3DayShareCnt_);
+    }
+    if (i3DayReturnCnt_ != 0L) {
+      size += com.google.protobuf.CodedOutputStream
+        .computeInt64Size(41, i3DayReturnCnt_);
+    }
+    if (iCtr3Day_ != 0D) {
+      size += com.google.protobuf.CodedOutputStream
+        .computeDoubleSize(42, iCtr3Day_);
+    }
+    if (iStr3Day_ != 0D) {
+      size += com.google.protobuf.CodedOutputStream
+        .computeDoubleSize(43, iStr3Day_);
+    }
+    if (iRov3Day_ != 0D) {
+      size += com.google.protobuf.CodedOutputStream
+        .computeDoubleSize(44, iRov3Day_);
+    }
+    if (iRos3Day_ != 0D) {
+      size += com.google.protobuf.CodedOutputStream
+        .computeDoubleSize(45, iRos3Day_);
+    }
+    size += unknownFields.getSerializedSize();
+    memoizedSize = size;
+    return size;
+  }
+
+  @java.lang.Override
+  public boolean equals(final java.lang.Object obj) {
+    if (obj == this) {
+     return true;
+    }
+    if (!(obj instanceof com.tzld.piaoquan.recommend.feature.model.feature.GetVideoFeatureInfo)) {
+      return super.equals(obj);
+    }
+    com.tzld.piaoquan.recommend.feature.model.feature.GetVideoFeatureInfo other = (com.tzld.piaoquan.recommend.feature.model.feature.GetVideoFeatureInfo) obj;
+
+    if (getVideoId()
+        != other.getVideoId()) return false;
+    if (getPlayCountTotal()
+        != other.getPlayCountTotal()) return false;
+    if (getTotalTime()
+        != other.getTotalTime()) return false;
+    if (!getGmtCreate()
+        .equals(other.getGmtCreate())) return false;
+    if (getUid()
+        != other.getUid()) return false;
+    if (getI15MinExpCnt()
+        != other.getI15MinExpCnt()) return false;
+    if (getI15MinClickCnt()
+        != other.getI15MinClickCnt()) return false;
+    if (getI15MinShareCnt()
+        != other.getI15MinShareCnt()) return false;
+    if (getI15MinReturnCnt()
+        != other.getI15MinReturnCnt()) return false;
+    if (java.lang.Double.doubleToLongBits(getICtr15Min())
+        != java.lang.Double.doubleToLongBits(
+            other.getICtr15Min())) return false;
+    if (java.lang.Double.doubleToLongBits(getIStr15Min())
+        != java.lang.Double.doubleToLongBits(
+            other.getIStr15Min())) return false;
+    if (java.lang.Double.doubleToLongBits(getIRov15Min())
+        != java.lang.Double.doubleToLongBits(
+            other.getIRov15Min())) return false;
+    if (java.lang.Double.doubleToLongBits(getIRos15Min())
+        != java.lang.Double.doubleToLongBits(
+            other.getIRos15Min())) return false;
+    if (getI1HourExpCnt()
+        != other.getI1HourExpCnt()) return false;
+    if (getI1HourClickCnt()
+        != other.getI1HourClickCnt()) return false;
+    if (getI1HourShareCnt()
+        != other.getI1HourShareCnt()) return false;
+    if (getI1HourReturnCnt()
+        != other.getI1HourReturnCnt()) return false;
+    if (java.lang.Double.doubleToLongBits(getICtr1Hour())
+        != java.lang.Double.doubleToLongBits(
+            other.getICtr1Hour())) return false;
+    if (java.lang.Double.doubleToLongBits(getIStr1Hour())
+        != java.lang.Double.doubleToLongBits(
+            other.getIStr1Hour())) return false;
+    if (java.lang.Double.doubleToLongBits(getIRov1Hour())
+        != java.lang.Double.doubleToLongBits(
+            other.getIRov1Hour())) return false;
+    if (java.lang.Double.doubleToLongBits(getIRos1Hour())
+        != java.lang.Double.doubleToLongBits(
+            other.getIRos1Hour())) return false;
+    if (getITodayExpCnt()
+        != other.getITodayExpCnt()) return false;
+    if (getITodayClickCnt()
+        != other.getITodayClickCnt()) return false;
+    if (getITodayShareCnt()
+        != other.getITodayShareCnt()) return false;
+    if (getITodayReturnCnt()
+        != other.getITodayReturnCnt()) return false;
+    if (java.lang.Double.doubleToLongBits(getICtrToday())
+        != java.lang.Double.doubleToLongBits(
+            other.getICtrToday())) return false;
+    if (java.lang.Double.doubleToLongBits(getIStrToday())
+        != java.lang.Double.doubleToLongBits(
+            other.getIStrToday())) return false;
+    if (java.lang.Double.doubleToLongBits(getIRovToday())
+        != java.lang.Double.doubleToLongBits(
+            other.getIRovToday())) return false;
+    if (java.lang.Double.doubleToLongBits(getIRosToday())
+        != java.lang.Double.doubleToLongBits(
+            other.getIRosToday())) return false;
+    if (getI1DayExpCnt()
+        != other.getI1DayExpCnt()) return false;
+    if (getI1DayClickCnt()
+        != other.getI1DayClickCnt()) return false;
+    if (getI1DayShareCnt()
+        != other.getI1DayShareCnt()) return false;
+    if (getI1DayReturnCnt()
+        != other.getI1DayReturnCnt()) return false;
+    if (java.lang.Double.doubleToLongBits(getICtr1Day())
+        != java.lang.Double.doubleToLongBits(
+            other.getICtr1Day())) return false;
+    if (java.lang.Double.doubleToLongBits(getIStr1Day())
+        != java.lang.Double.doubleToLongBits(
+            other.getIStr1Day())) return false;
+    if (java.lang.Double.doubleToLongBits(getIRov1Day())
+        != java.lang.Double.doubleToLongBits(
+            other.getIRov1Day())) return false;
+    if (java.lang.Double.doubleToLongBits(getIRos1Day())
+        != java.lang.Double.doubleToLongBits(
+            other.getIRos1Day())) return false;
+    if (getI3DayExpCnt()
+        != other.getI3DayExpCnt()) return false;
+    if (getI3DayClickCnt()
+        != other.getI3DayClickCnt()) return false;
+    if (getI3DayShareCnt()
+        != other.getI3DayShareCnt()) return false;
+    if (getI3DayReturnCnt()
+        != other.getI3DayReturnCnt()) return false;
+    if (java.lang.Double.doubleToLongBits(getICtr3Day())
+        != java.lang.Double.doubleToLongBits(
+            other.getICtr3Day())) return false;
+    if (java.lang.Double.doubleToLongBits(getIStr3Day())
+        != java.lang.Double.doubleToLongBits(
+            other.getIStr3Day())) return false;
+    if (java.lang.Double.doubleToLongBits(getIRov3Day())
+        != java.lang.Double.doubleToLongBits(
+            other.getIRov3Day())) return false;
+    if (java.lang.Double.doubleToLongBits(getIRos3Day())
+        != java.lang.Double.doubleToLongBits(
+            other.getIRos3Day())) return false;
+    if (!unknownFields.equals(other.unknownFields)) return false;
+    return true;
+  }
+
+  @java.lang.Override
+  public int hashCode() {
+    if (memoizedHashCode != 0) {
+      return memoizedHashCode;
+    }
+    int hash = 41;
+    hash = (19 * hash) + getDescriptor().hashCode();
+    hash = (37 * hash) + VIDEO_ID_FIELD_NUMBER;
+    hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
+        getVideoId());
+    hash = (37 * hash) + PLAY_COUNT_TOTAL_FIELD_NUMBER;
+    hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
+        getPlayCountTotal());
+    hash = (37 * hash) + TOTAL_TIME_FIELD_NUMBER;
+    hash = (53 * hash) + getTotalTime();
+    hash = (37 * hash) + GMT_CREATE_FIELD_NUMBER;
+    hash = (53 * hash) + getGmtCreate().hashCode();
+    hash = (37 * hash) + UID_FIELD_NUMBER;
+    hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
+        getUid());
+    hash = (37 * hash) + I15MIN_EXP_CNT_FIELD_NUMBER;
+    hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
+        getI15MinExpCnt());
+    hash = (37 * hash) + I15MIN_CLICK_CNT_FIELD_NUMBER;
+    hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
+        getI15MinClickCnt());
+    hash = (37 * hash) + I15MIN_SHARE_CNT_FIELD_NUMBER;
+    hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
+        getI15MinShareCnt());
+    hash = (37 * hash) + I15MIN_RETURN_CNT_FIELD_NUMBER;
+    hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
+        getI15MinReturnCnt());
+    hash = (37 * hash) + I_CTR15MIN_FIELD_NUMBER;
+    hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
+        java.lang.Double.doubleToLongBits(getICtr15Min()));
+    hash = (37 * hash) + I_STR15MIN_FIELD_NUMBER;
+    hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
+        java.lang.Double.doubleToLongBits(getIStr15Min()));
+    hash = (37 * hash) + I_ROV15MIN_FIELD_NUMBER;
+    hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
+        java.lang.Double.doubleToLongBits(getIRov15Min()));
+    hash = (37 * hash) + I_ROS15MIN_FIELD_NUMBER;
+    hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
+        java.lang.Double.doubleToLongBits(getIRos15Min()));
+    hash = (37 * hash) + I1HOUR_EXP_CNT_FIELD_NUMBER;
+    hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
+        getI1HourExpCnt());
+    hash = (37 * hash) + I1HOUR_CLICK_CNT_FIELD_NUMBER;
+    hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
+        getI1HourClickCnt());
+    hash = (37 * hash) + I1HOUR_SHARE_CNT_FIELD_NUMBER;
+    hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
+        getI1HourShareCnt());
+    hash = (37 * hash) + I1HOUR_RETURN_CNT_FIELD_NUMBER;
+    hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
+        getI1HourReturnCnt());
+    hash = (37 * hash) + I_CTR1HOUR_FIELD_NUMBER;
+    hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
+        java.lang.Double.doubleToLongBits(getICtr1Hour()));
+    hash = (37 * hash) + I_STR1HOUR_FIELD_NUMBER;
+    hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
+        java.lang.Double.doubleToLongBits(getIStr1Hour()));
+    hash = (37 * hash) + I_ROV1HOUR_FIELD_NUMBER;
+    hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
+        java.lang.Double.doubleToLongBits(getIRov1Hour()));
+    hash = (37 * hash) + I_ROS1HOUR_FIELD_NUMBER;
+    hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
+        java.lang.Double.doubleToLongBits(getIRos1Hour()));
+    hash = (37 * hash) + I_TODAY_EXP_CNT_FIELD_NUMBER;
+    hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
+        getITodayExpCnt());
+    hash = (37 * hash) + I_TODAY_CLICK_CNT_FIELD_NUMBER;
+    hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
+        getITodayClickCnt());
+    hash = (37 * hash) + I_TODAY_SHARE_CNT_FIELD_NUMBER;
+    hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
+        getITodayShareCnt());
+    hash = (37 * hash) + I_TODAY_RETURN_CNT_FIELD_NUMBER;
+    hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
+        getITodayReturnCnt());
+    hash = (37 * hash) + I_CTR_TODAY_FIELD_NUMBER;
+    hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
+        java.lang.Double.doubleToLongBits(getICtrToday()));
+    hash = (37 * hash) + I_STR_TODAY_FIELD_NUMBER;
+    hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
+        java.lang.Double.doubleToLongBits(getIStrToday()));
+    hash = (37 * hash) + I_ROV_TODAY_FIELD_NUMBER;
+    hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
+        java.lang.Double.doubleToLongBits(getIRovToday()));
+    hash = (37 * hash) + I_ROS_TODAY_FIELD_NUMBER;
+    hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
+        java.lang.Double.doubleToLongBits(getIRosToday()));
+    hash = (37 * hash) + I1DAY_EXP_CNT_FIELD_NUMBER;
+    hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
+        getI1DayExpCnt());
+    hash = (37 * hash) + I1DAY_CLICK_CNT_FIELD_NUMBER;
+    hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
+        getI1DayClickCnt());
+    hash = (37 * hash) + I1DAY_SHARE_CNT_FIELD_NUMBER;
+    hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
+        getI1DayShareCnt());
+    hash = (37 * hash) + I1DAY_RETURN_CNT_FIELD_NUMBER;
+    hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
+        getI1DayReturnCnt());
+    hash = (37 * hash) + I_CTR1DAY_FIELD_NUMBER;
+    hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
+        java.lang.Double.doubleToLongBits(getICtr1Day()));
+    hash = (37 * hash) + I_STR1DAY_FIELD_NUMBER;
+    hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
+        java.lang.Double.doubleToLongBits(getIStr1Day()));
+    hash = (37 * hash) + I_ROV1DAY_FIELD_NUMBER;
+    hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
+        java.lang.Double.doubleToLongBits(getIRov1Day()));
+    hash = (37 * hash) + I_ROS1DAY_FIELD_NUMBER;
+    hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
+        java.lang.Double.doubleToLongBits(getIRos1Day()));
+    hash = (37 * hash) + I3DAY_EXP_CNT_FIELD_NUMBER;
+    hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
+        getI3DayExpCnt());
+    hash = (37 * hash) + I3DAY_CLICK_CNT_FIELD_NUMBER;
+    hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
+        getI3DayClickCnt());
+    hash = (37 * hash) + I3DAY_SHARE_CNT_FIELD_NUMBER;
+    hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
+        getI3DayShareCnt());
+    hash = (37 * hash) + I3DAY_RETURN_CNT_FIELD_NUMBER;
+    hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
+        getI3DayReturnCnt());
+    hash = (37 * hash) + I_CTR3DAY_FIELD_NUMBER;
+    hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
+        java.lang.Double.doubleToLongBits(getICtr3Day()));
+    hash = (37 * hash) + I_STR3DAY_FIELD_NUMBER;
+    hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
+        java.lang.Double.doubleToLongBits(getIStr3Day()));
+    hash = (37 * hash) + I_ROV3DAY_FIELD_NUMBER;
+    hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
+        java.lang.Double.doubleToLongBits(getIRov3Day()));
+    hash = (37 * hash) + I_ROS3DAY_FIELD_NUMBER;
+    hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
+        java.lang.Double.doubleToLongBits(getIRos3Day()));
+    hash = (29 * hash) + unknownFields.hashCode();
+    memoizedHashCode = hash;
+    return hash;
+  }
+
+  public static com.tzld.piaoquan.recommend.feature.model.feature.GetVideoFeatureInfo parseFrom(
+      java.nio.ByteBuffer data)
+      throws com.google.protobuf.InvalidProtocolBufferException {
+    return PARSER.parseFrom(data);
+  }
+  public static com.tzld.piaoquan.recommend.feature.model.feature.GetVideoFeatureInfo parseFrom(
+      java.nio.ByteBuffer data,
+      com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+      throws com.google.protobuf.InvalidProtocolBufferException {
+    return PARSER.parseFrom(data, extensionRegistry);
+  }
+  public static com.tzld.piaoquan.recommend.feature.model.feature.GetVideoFeatureInfo parseFrom(
+      com.google.protobuf.ByteString data)
+      throws com.google.protobuf.InvalidProtocolBufferException {
+    return PARSER.parseFrom(data);
+  }
+  public static com.tzld.piaoquan.recommend.feature.model.feature.GetVideoFeatureInfo parseFrom(
+      com.google.protobuf.ByteString data,
+      com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+      throws com.google.protobuf.InvalidProtocolBufferException {
+    return PARSER.parseFrom(data, extensionRegistry);
+  }
+  public static com.tzld.piaoquan.recommend.feature.model.feature.GetVideoFeatureInfo parseFrom(byte[] data)
+      throws com.google.protobuf.InvalidProtocolBufferException {
+    return PARSER.parseFrom(data);
+  }
+  public static com.tzld.piaoquan.recommend.feature.model.feature.GetVideoFeatureInfo parseFrom(
+      byte[] data,
+      com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+      throws com.google.protobuf.InvalidProtocolBufferException {
+    return PARSER.parseFrom(data, extensionRegistry);
+  }
+  public static com.tzld.piaoquan.recommend.feature.model.feature.GetVideoFeatureInfo parseFrom(java.io.InputStream input)
+      throws java.io.IOException {
+    return com.google.protobuf.GeneratedMessageV3
+        .parseWithIOException(PARSER, input);
+  }
+  public static com.tzld.piaoquan.recommend.feature.model.feature.GetVideoFeatureInfo parseFrom(
+      java.io.InputStream input,
+      com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+      throws java.io.IOException {
+    return com.google.protobuf.GeneratedMessageV3
+        .parseWithIOException(PARSER, input, extensionRegistry);
+  }
+  public static com.tzld.piaoquan.recommend.feature.model.feature.GetVideoFeatureInfo parseDelimitedFrom(java.io.InputStream input)
+      throws java.io.IOException {
+    return com.google.protobuf.GeneratedMessageV3
+        .parseDelimitedWithIOException(PARSER, input);
+  }
+  public static com.tzld.piaoquan.recommend.feature.model.feature.GetVideoFeatureInfo parseDelimitedFrom(
+      java.io.InputStream input,
+      com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+      throws java.io.IOException {
+    return com.google.protobuf.GeneratedMessageV3
+        .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
+  }
+  public static com.tzld.piaoquan.recommend.feature.model.feature.GetVideoFeatureInfo parseFrom(
+      com.google.protobuf.CodedInputStream input)
+      throws java.io.IOException {
+    return com.google.protobuf.GeneratedMessageV3
+        .parseWithIOException(PARSER, input);
+  }
+  public static com.tzld.piaoquan.recommend.feature.model.feature.GetVideoFeatureInfo parseFrom(
+      com.google.protobuf.CodedInputStream input,
+      com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+      throws java.io.IOException {
+    return com.google.protobuf.GeneratedMessageV3
+        .parseWithIOException(PARSER, input, extensionRegistry);
+  }
+
+  @java.lang.Override
+  public Builder newBuilderForType() { return newBuilder(); }
+  public static Builder newBuilder() {
+    return DEFAULT_INSTANCE.toBuilder();
+  }
+  public static Builder newBuilder(com.tzld.piaoquan.recommend.feature.model.feature.GetVideoFeatureInfo prototype) {
+    return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
+  }
+  @java.lang.Override
+  public Builder toBuilder() {
+    return this == DEFAULT_INSTANCE
+        ? new Builder() : new Builder().mergeFrom(this);
+  }
+
+  @java.lang.Override
+  protected Builder newBuilderForType(
+      com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
+    Builder builder = new Builder(parent);
+    return builder;
+  }
+  /**
+   * Protobuf type {@code GetVideoFeatureInfo}
+   */
+  public static final class Builder extends
+      com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
+      // @@protoc_insertion_point(builder_implements:GetVideoFeatureInfo)
+      com.tzld.piaoquan.recommend.feature.model.feature.GetVideoFeatureInfoOrBuilder {
+    public static final com.google.protobuf.Descriptors.Descriptor
+        getDescriptor() {
+      return com.tzld.piaoquan.recommend.feature.model.feature.Feature.internal_static_GetVideoFeatureInfo_descriptor;
+    }
+
+    @java.lang.Override
+    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
+        internalGetFieldAccessorTable() {
+      return com.tzld.piaoquan.recommend.feature.model.feature.Feature.internal_static_GetVideoFeatureInfo_fieldAccessorTable
+          .ensureFieldAccessorsInitialized(
+              com.tzld.piaoquan.recommend.feature.model.feature.GetVideoFeatureInfo.class, com.tzld.piaoquan.recommend.feature.model.feature.GetVideoFeatureInfo.Builder.class);
+    }
+
+    // Construct using com.tzld.piaoquan.recommend.feature.model.feature.GetVideoFeatureInfo.newBuilder()
+    private Builder() {
+      maybeForceBuilderInitialization();
+    }
+
+    private Builder(
+        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
+      super(parent);
+      maybeForceBuilderInitialization();
+    }
+    private void maybeForceBuilderInitialization() {
+      if (com.google.protobuf.GeneratedMessageV3
+              .alwaysUseFieldBuilders) {
+      }
+    }
+    @java.lang.Override
+    public Builder clear() {
+      super.clear();
+      videoId_ = 0L;
+
+      playCountTotal_ = 0L;
+
+      totalTime_ = 0;
+
+      gmtCreate_ = "";
+
+      uid_ = 0L;
+
+      i15MinExpCnt_ = 0L;
+
+      i15MinClickCnt_ = 0L;
+
+      i15MinShareCnt_ = 0L;
+
+      i15MinReturnCnt_ = 0L;
+
+      iCtr15Min_ = 0D;
+
+      iStr15Min_ = 0D;
+
+      iRov15Min_ = 0D;
+
+      iRos15Min_ = 0D;
+
+      i1HourExpCnt_ = 0L;
+
+      i1HourClickCnt_ = 0L;
+
+      i1HourShareCnt_ = 0L;
+
+      i1HourReturnCnt_ = 0L;
+
+      iCtr1Hour_ = 0D;
+
+      iStr1Hour_ = 0D;
+
+      iRov1Hour_ = 0D;
+
+      iRos1Hour_ = 0D;
+
+      iTodayExpCnt_ = 0L;
+
+      iTodayClickCnt_ = 0L;
+
+      iTodayShareCnt_ = 0L;
+
+      iTodayReturnCnt_ = 0L;
+
+      iCtrToday_ = 0D;
+
+      iStrToday_ = 0D;
+
+      iRovToday_ = 0D;
+
+      iRosToday_ = 0D;
+
+      i1DayExpCnt_ = 0L;
+
+      i1DayClickCnt_ = 0L;
+
+      i1DayShareCnt_ = 0L;
+
+      i1DayReturnCnt_ = 0L;
+
+      iCtr1Day_ = 0D;
+
+      iStr1Day_ = 0D;
+
+      iRov1Day_ = 0D;
+
+      iRos1Day_ = 0D;
+
+      i3DayExpCnt_ = 0L;
+
+      i3DayClickCnt_ = 0L;
+
+      i3DayShareCnt_ = 0L;
+
+      i3DayReturnCnt_ = 0L;
+
+      iCtr3Day_ = 0D;
+
+      iStr3Day_ = 0D;
+
+      iRov3Day_ = 0D;
+
+      iRos3Day_ = 0D;
+
+      return this;
+    }
+
+    @java.lang.Override
+    public com.google.protobuf.Descriptors.Descriptor
+        getDescriptorForType() {
+      return com.tzld.piaoquan.recommend.feature.model.feature.Feature.internal_static_GetVideoFeatureInfo_descriptor;
+    }
+
+    @java.lang.Override
+    public com.tzld.piaoquan.recommend.feature.model.feature.GetVideoFeatureInfo getDefaultInstanceForType() {
+      return com.tzld.piaoquan.recommend.feature.model.feature.GetVideoFeatureInfo.getDefaultInstance();
+    }
+
+    @java.lang.Override
+    public com.tzld.piaoquan.recommend.feature.model.feature.GetVideoFeatureInfo build() {
+      com.tzld.piaoquan.recommend.feature.model.feature.GetVideoFeatureInfo result = buildPartial();
+      if (!result.isInitialized()) {
+        throw newUninitializedMessageException(result);
+      }
+      return result;
+    }
+
+    @java.lang.Override
+    public com.tzld.piaoquan.recommend.feature.model.feature.GetVideoFeatureInfo buildPartial() {
+      com.tzld.piaoquan.recommend.feature.model.feature.GetVideoFeatureInfo result = new com.tzld.piaoquan.recommend.feature.model.feature.GetVideoFeatureInfo(this);
+      result.videoId_ = videoId_;
+      result.playCountTotal_ = playCountTotal_;
+      result.totalTime_ = totalTime_;
+      result.gmtCreate_ = gmtCreate_;
+      result.uid_ = uid_;
+      result.i15MinExpCnt_ = i15MinExpCnt_;
+      result.i15MinClickCnt_ = i15MinClickCnt_;
+      result.i15MinShareCnt_ = i15MinShareCnt_;
+      result.i15MinReturnCnt_ = i15MinReturnCnt_;
+      result.iCtr15Min_ = iCtr15Min_;
+      result.iStr15Min_ = iStr15Min_;
+      result.iRov15Min_ = iRov15Min_;
+      result.iRos15Min_ = iRos15Min_;
+      result.i1HourExpCnt_ = i1HourExpCnt_;
+      result.i1HourClickCnt_ = i1HourClickCnt_;
+      result.i1HourShareCnt_ = i1HourShareCnt_;
+      result.i1HourReturnCnt_ = i1HourReturnCnt_;
+      result.iCtr1Hour_ = iCtr1Hour_;
+      result.iStr1Hour_ = iStr1Hour_;
+      result.iRov1Hour_ = iRov1Hour_;
+      result.iRos1Hour_ = iRos1Hour_;
+      result.iTodayExpCnt_ = iTodayExpCnt_;
+      result.iTodayClickCnt_ = iTodayClickCnt_;
+      result.iTodayShareCnt_ = iTodayShareCnt_;
+      result.iTodayReturnCnt_ = iTodayReturnCnt_;
+      result.iCtrToday_ = iCtrToday_;
+      result.iStrToday_ = iStrToday_;
+      result.iRovToday_ = iRovToday_;
+      result.iRosToday_ = iRosToday_;
+      result.i1DayExpCnt_ = i1DayExpCnt_;
+      result.i1DayClickCnt_ = i1DayClickCnt_;
+      result.i1DayShareCnt_ = i1DayShareCnt_;
+      result.i1DayReturnCnt_ = i1DayReturnCnt_;
+      result.iCtr1Day_ = iCtr1Day_;
+      result.iStr1Day_ = iStr1Day_;
+      result.iRov1Day_ = iRov1Day_;
+      result.iRos1Day_ = iRos1Day_;
+      result.i3DayExpCnt_ = i3DayExpCnt_;
+      result.i3DayClickCnt_ = i3DayClickCnt_;
+      result.i3DayShareCnt_ = i3DayShareCnt_;
+      result.i3DayReturnCnt_ = i3DayReturnCnt_;
+      result.iCtr3Day_ = iCtr3Day_;
+      result.iStr3Day_ = iStr3Day_;
+      result.iRov3Day_ = iRov3Day_;
+      result.iRos3Day_ = iRos3Day_;
+      onBuilt();
+      return result;
+    }
+
+    @java.lang.Override
+    public Builder clone() {
+      return super.clone();
+    }
+    @java.lang.Override
+    public Builder setField(
+        com.google.protobuf.Descriptors.FieldDescriptor field,
+        java.lang.Object value) {
+      return super.setField(field, value);
+    }
+    @java.lang.Override
+    public Builder clearField(
+        com.google.protobuf.Descriptors.FieldDescriptor field) {
+      return super.clearField(field);
+    }
+    @java.lang.Override
+    public Builder clearOneof(
+        com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+      return super.clearOneof(oneof);
+    }
+    @java.lang.Override
+    public Builder setRepeatedField(
+        com.google.protobuf.Descriptors.FieldDescriptor field,
+        int index, java.lang.Object value) {
+      return super.setRepeatedField(field, index, value);
+    }
+    @java.lang.Override
+    public Builder addRepeatedField(
+        com.google.protobuf.Descriptors.FieldDescriptor field,
+        java.lang.Object value) {
+      return super.addRepeatedField(field, value);
+    }
+    @java.lang.Override
+    public Builder mergeFrom(com.google.protobuf.Message other) {
+      if (other instanceof com.tzld.piaoquan.recommend.feature.model.feature.GetVideoFeatureInfo) {
+        return mergeFrom((com.tzld.piaoquan.recommend.feature.model.feature.GetVideoFeatureInfo)other);
+      } else {
+        super.mergeFrom(other);
+        return this;
+      }
+    }
+
+    public Builder mergeFrom(com.tzld.piaoquan.recommend.feature.model.feature.GetVideoFeatureInfo other) {
+      if (other == com.tzld.piaoquan.recommend.feature.model.feature.GetVideoFeatureInfo.getDefaultInstance()) return this;
+      if (other.getVideoId() != 0L) {
+        setVideoId(other.getVideoId());
+      }
+      if (other.getPlayCountTotal() != 0L) {
+        setPlayCountTotal(other.getPlayCountTotal());
+      }
+      if (other.getTotalTime() != 0) {
+        setTotalTime(other.getTotalTime());
+      }
+      if (!other.getGmtCreate().isEmpty()) {
+        gmtCreate_ = other.gmtCreate_;
+        onChanged();
+      }
+      if (other.getUid() != 0L) {
+        setUid(other.getUid());
+      }
+      if (other.getI15MinExpCnt() != 0L) {
+        setI15MinExpCnt(other.getI15MinExpCnt());
+      }
+      if (other.getI15MinClickCnt() != 0L) {
+        setI15MinClickCnt(other.getI15MinClickCnt());
+      }
+      if (other.getI15MinShareCnt() != 0L) {
+        setI15MinShareCnt(other.getI15MinShareCnt());
+      }
+      if (other.getI15MinReturnCnt() != 0L) {
+        setI15MinReturnCnt(other.getI15MinReturnCnt());
+      }
+      if (other.getICtr15Min() != 0D) {
+        setICtr15Min(other.getICtr15Min());
+      }
+      if (other.getIStr15Min() != 0D) {
+        setIStr15Min(other.getIStr15Min());
+      }
+      if (other.getIRov15Min() != 0D) {
+        setIRov15Min(other.getIRov15Min());
+      }
+      if (other.getIRos15Min() != 0D) {
+        setIRos15Min(other.getIRos15Min());
+      }
+      if (other.getI1HourExpCnt() != 0L) {
+        setI1HourExpCnt(other.getI1HourExpCnt());
+      }
+      if (other.getI1HourClickCnt() != 0L) {
+        setI1HourClickCnt(other.getI1HourClickCnt());
+      }
+      if (other.getI1HourShareCnt() != 0L) {
+        setI1HourShareCnt(other.getI1HourShareCnt());
+      }
+      if (other.getI1HourReturnCnt() != 0L) {
+        setI1HourReturnCnt(other.getI1HourReturnCnt());
+      }
+      if (other.getICtr1Hour() != 0D) {
+        setICtr1Hour(other.getICtr1Hour());
+      }
+      if (other.getIStr1Hour() != 0D) {
+        setIStr1Hour(other.getIStr1Hour());
+      }
+      if (other.getIRov1Hour() != 0D) {
+        setIRov1Hour(other.getIRov1Hour());
+      }
+      if (other.getIRos1Hour() != 0D) {
+        setIRos1Hour(other.getIRos1Hour());
+      }
+      if (other.getITodayExpCnt() != 0L) {
+        setITodayExpCnt(other.getITodayExpCnt());
+      }
+      if (other.getITodayClickCnt() != 0L) {
+        setITodayClickCnt(other.getITodayClickCnt());
+      }
+      if (other.getITodayShareCnt() != 0L) {
+        setITodayShareCnt(other.getITodayShareCnt());
+      }
+      if (other.getITodayReturnCnt() != 0L) {
+        setITodayReturnCnt(other.getITodayReturnCnt());
+      }
+      if (other.getICtrToday() != 0D) {
+        setICtrToday(other.getICtrToday());
+      }
+      if (other.getIStrToday() != 0D) {
+        setIStrToday(other.getIStrToday());
+      }
+      if (other.getIRovToday() != 0D) {
+        setIRovToday(other.getIRovToday());
+      }
+      if (other.getIRosToday() != 0D) {
+        setIRosToday(other.getIRosToday());
+      }
+      if (other.getI1DayExpCnt() != 0L) {
+        setI1DayExpCnt(other.getI1DayExpCnt());
+      }
+      if (other.getI1DayClickCnt() != 0L) {
+        setI1DayClickCnt(other.getI1DayClickCnt());
+      }
+      if (other.getI1DayShareCnt() != 0L) {
+        setI1DayShareCnt(other.getI1DayShareCnt());
+      }
+      if (other.getI1DayReturnCnt() != 0L) {
+        setI1DayReturnCnt(other.getI1DayReturnCnt());
+      }
+      if (other.getICtr1Day() != 0D) {
+        setICtr1Day(other.getICtr1Day());
+      }
+      if (other.getIStr1Day() != 0D) {
+        setIStr1Day(other.getIStr1Day());
+      }
+      if (other.getIRov1Day() != 0D) {
+        setIRov1Day(other.getIRov1Day());
+      }
+      if (other.getIRos1Day() != 0D) {
+        setIRos1Day(other.getIRos1Day());
+      }
+      if (other.getI3DayExpCnt() != 0L) {
+        setI3DayExpCnt(other.getI3DayExpCnt());
+      }
+      if (other.getI3DayClickCnt() != 0L) {
+        setI3DayClickCnt(other.getI3DayClickCnt());
+      }
+      if (other.getI3DayShareCnt() != 0L) {
+        setI3DayShareCnt(other.getI3DayShareCnt());
+      }
+      if (other.getI3DayReturnCnt() != 0L) {
+        setI3DayReturnCnt(other.getI3DayReturnCnt());
+      }
+      if (other.getICtr3Day() != 0D) {
+        setICtr3Day(other.getICtr3Day());
+      }
+      if (other.getIStr3Day() != 0D) {
+        setIStr3Day(other.getIStr3Day());
+      }
+      if (other.getIRov3Day() != 0D) {
+        setIRov3Day(other.getIRov3Day());
+      }
+      if (other.getIRos3Day() != 0D) {
+        setIRos3Day(other.getIRos3Day());
+      }
+      this.mergeUnknownFields(other.unknownFields);
+      onChanged();
+      return this;
+    }
+
+    @java.lang.Override
+    public final boolean isInitialized() {
+      return true;
+    }
+
+    @java.lang.Override
+    public Builder mergeFrom(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      com.tzld.piaoquan.recommend.feature.model.feature.GetVideoFeatureInfo parsedMessage = null;
+      try {
+        parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+        parsedMessage = (com.tzld.piaoquan.recommend.feature.model.feature.GetVideoFeatureInfo) e.getUnfinishedMessage();
+        throw e.unwrapIOException();
+      } finally {
+        if (parsedMessage != null) {
+          mergeFrom(parsedMessage);
+        }
+      }
+      return this;
+    }
+
+    private long videoId_ ;
+    /**
+     * <code>int64 video_id = 1;</code>
+     * @return The videoId.
+     */
+    @java.lang.Override
+    public long getVideoId() {
+      return videoId_;
+    }
+    /**
+     * <code>int64 video_id = 1;</code>
+     * @param value The videoId to set.
+     * @return This builder for chaining.
+     */
+    public Builder setVideoId(long value) {
+      
+      videoId_ = value;
+      onChanged();
+      return this;
+    }
+    /**
+     * <code>int64 video_id = 1;</code>
+     * @return This builder for chaining.
+     */
+    public Builder clearVideoId() {
+      
+      videoId_ = 0L;
+      onChanged();
+      return this;
+    }
+
+    private long playCountTotal_ ;
+    /**
+     * <code>int64 play_count_total = 2;</code>
+     * @return The playCountTotal.
+     */
+    @java.lang.Override
+    public long getPlayCountTotal() {
+      return playCountTotal_;
+    }
+    /**
+     * <code>int64 play_count_total = 2;</code>
+     * @param value The playCountTotal to set.
+     * @return This builder for chaining.
+     */
+    public Builder setPlayCountTotal(long value) {
+      
+      playCountTotal_ = value;
+      onChanged();
+      return this;
+    }
+    /**
+     * <code>int64 play_count_total = 2;</code>
+     * @return This builder for chaining.
+     */
+    public Builder clearPlayCountTotal() {
+      
+      playCountTotal_ = 0L;
+      onChanged();
+      return this;
+    }
+
+    private int totalTime_ ;
+    /**
+     * <code>int32 total_time = 3;</code>
+     * @return The totalTime.
+     */
+    @java.lang.Override
+    public int getTotalTime() {
+      return totalTime_;
+    }
+    /**
+     * <code>int32 total_time = 3;</code>
+     * @param value The totalTime to set.
+     * @return This builder for chaining.
+     */
+    public Builder setTotalTime(int value) {
+      
+      totalTime_ = value;
+      onChanged();
+      return this;
+    }
+    /**
+     * <code>int32 total_time = 3;</code>
+     * @return This builder for chaining.
+     */
+    public Builder clearTotalTime() {
+      
+      totalTime_ = 0;
+      onChanged();
+      return this;
+    }
+
+    private java.lang.Object gmtCreate_ = "";
+    /**
+     * <code>string gmt_create = 4;</code>
+     * @return The gmtCreate.
+     */
+    public java.lang.String getGmtCreate() {
+      java.lang.Object ref = gmtCreate_;
+      if (!(ref instanceof java.lang.String)) {
+        com.google.protobuf.ByteString bs =
+            (com.google.protobuf.ByteString) ref;
+        java.lang.String s = bs.toStringUtf8();
+        gmtCreate_ = s;
+        return s;
+      } else {
+        return (java.lang.String) ref;
+      }
+    }
+    /**
+     * <code>string gmt_create = 4;</code>
+     * @return The bytes for gmtCreate.
+     */
+    public com.google.protobuf.ByteString
+        getGmtCreateBytes() {
+      java.lang.Object ref = gmtCreate_;
+      if (ref instanceof String) {
+        com.google.protobuf.ByteString b = 
+            com.google.protobuf.ByteString.copyFromUtf8(
+                (java.lang.String) ref);
+        gmtCreate_ = b;
+        return b;
+      } else {
+        return (com.google.protobuf.ByteString) ref;
+      }
+    }
+    /**
+     * <code>string gmt_create = 4;</code>
+     * @param value The gmtCreate to set.
+     * @return This builder for chaining.
+     */
+    public Builder setGmtCreate(
+        java.lang.String value) {
+      if (value == null) {
+    throw new NullPointerException();
+  }
+  
+      gmtCreate_ = value;
+      onChanged();
+      return this;
+    }
+    /**
+     * <code>string gmt_create = 4;</code>
+     * @return This builder for chaining.
+     */
+    public Builder clearGmtCreate() {
+      
+      gmtCreate_ = getDefaultInstance().getGmtCreate();
+      onChanged();
+      return this;
+    }
+    /**
+     * <code>string gmt_create = 4;</code>
+     * @param value The bytes for gmtCreate to set.
+     * @return This builder for chaining.
+     */
+    public Builder setGmtCreateBytes(
+        com.google.protobuf.ByteString value) {
+      if (value == null) {
+    throw new NullPointerException();
+  }
+  checkByteStringIsUtf8(value);
+      
+      gmtCreate_ = value;
+      onChanged();
+      return this;
+    }
+
+    private long uid_ ;
+    /**
+     * <pre>
+     * 上传者
+     * </pre>
+     *
+     * <code>int64 uid = 5;</code>
+     * @return The uid.
+     */
+    @java.lang.Override
+    public long getUid() {
+      return uid_;
+    }
+    /**
+     * <pre>
+     * 上传者
+     * </pre>
+     *
+     * <code>int64 uid = 5;</code>
+     * @param value The uid to set.
+     * @return This builder for chaining.
+     */
+    public Builder setUid(long value) {
+      
+      uid_ = value;
+      onChanged();
+      return this;
+    }
+    /**
+     * <pre>
+     * 上传者
+     * </pre>
+     *
+     * <code>int64 uid = 5;</code>
+     * @return This builder for chaining.
+     */
+    public Builder clearUid() {
+      
+      uid_ = 0L;
+      onChanged();
+      return this;
+    }
+
+    private long i15MinExpCnt_ ;
+    /**
+     * <pre>
+     * 过去十五分钟
+     * </pre>
+     *
+     * <code>int64 i15min_exp_cnt = 6;</code>
+     * @return The i15minExpCnt.
+     */
+    @java.lang.Override
+    public long getI15MinExpCnt() {
+      return i15MinExpCnt_;
+    }
+    /**
+     * <pre>
+     * 过去十五分钟
+     * </pre>
+     *
+     * <code>int64 i15min_exp_cnt = 6;</code>
+     * @param value The i15minExpCnt to set.
+     * @return This builder for chaining.
+     */
+    public Builder setI15MinExpCnt(long value) {
+      
+      i15MinExpCnt_ = value;
+      onChanged();
+      return this;
+    }
+    /**
+     * <pre>
+     * 过去十五分钟
+     * </pre>
+     *
+     * <code>int64 i15min_exp_cnt = 6;</code>
+     * @return This builder for chaining.
+     */
+    public Builder clearI15MinExpCnt() {
+      
+      i15MinExpCnt_ = 0L;
+      onChanged();
+      return this;
+    }
+
+    private long i15MinClickCnt_ ;
+    /**
+     * <code>int64 i15min_click_cnt = 7;</code>
+     * @return The i15minClickCnt.
+     */
+    @java.lang.Override
+    public long getI15MinClickCnt() {
+      return i15MinClickCnt_;
+    }
+    /**
+     * <code>int64 i15min_click_cnt = 7;</code>
+     * @param value The i15minClickCnt to set.
+     * @return This builder for chaining.
+     */
+    public Builder setI15MinClickCnt(long value) {
+      
+      i15MinClickCnt_ = value;
+      onChanged();
+      return this;
+    }
+    /**
+     * <code>int64 i15min_click_cnt = 7;</code>
+     * @return This builder for chaining.
+     */
+    public Builder clearI15MinClickCnt() {
+      
+      i15MinClickCnt_ = 0L;
+      onChanged();
+      return this;
+    }
+
+    private long i15MinShareCnt_ ;
+    /**
+     * <code>int64 i15min_share_cnt = 8;</code>
+     * @return The i15minShareCnt.
+     */
+    @java.lang.Override
+    public long getI15MinShareCnt() {
+      return i15MinShareCnt_;
+    }
+    /**
+     * <code>int64 i15min_share_cnt = 8;</code>
+     * @param value The i15minShareCnt to set.
+     * @return This builder for chaining.
+     */
+    public Builder setI15MinShareCnt(long value) {
+      
+      i15MinShareCnt_ = value;
+      onChanged();
+      return this;
+    }
+    /**
+     * <code>int64 i15min_share_cnt = 8;</code>
+     * @return This builder for chaining.
+     */
+    public Builder clearI15MinShareCnt() {
+      
+      i15MinShareCnt_ = 0L;
+      onChanged();
+      return this;
+    }
+
+    private long i15MinReturnCnt_ ;
+    /**
+     * <code>int64 i15min_return_cnt = 9;</code>
+     * @return The i15minReturnCnt.
+     */
+    @java.lang.Override
+    public long getI15MinReturnCnt() {
+      return i15MinReturnCnt_;
+    }
+    /**
+     * <code>int64 i15min_return_cnt = 9;</code>
+     * @param value The i15minReturnCnt to set.
+     * @return This builder for chaining.
+     */
+    public Builder setI15MinReturnCnt(long value) {
+      
+      i15MinReturnCnt_ = value;
+      onChanged();
+      return this;
+    }
+    /**
+     * <code>int64 i15min_return_cnt = 9;</code>
+     * @return This builder for chaining.
+     */
+    public Builder clearI15MinReturnCnt() {
+      
+      i15MinReturnCnt_ = 0L;
+      onChanged();
+      return this;
+    }
+
+    private double iCtr15Min_ ;
+    /**
+     * <code>double i_ctr15min = 10;</code>
+     * @return The iCtr15min.
+     */
+    @java.lang.Override
+    public double getICtr15Min() {
+      return iCtr15Min_;
+    }
+    /**
+     * <code>double i_ctr15min = 10;</code>
+     * @param value The iCtr15min to set.
+     * @return This builder for chaining.
+     */
+    public Builder setICtr15Min(double value) {
+      
+      iCtr15Min_ = value;
+      onChanged();
+      return this;
+    }
+    /**
+     * <code>double i_ctr15min = 10;</code>
+     * @return This builder for chaining.
+     */
+    public Builder clearICtr15Min() {
+      
+      iCtr15Min_ = 0D;
+      onChanged();
+      return this;
+    }
+
+    private double iStr15Min_ ;
+    /**
+     * <code>double i_str15min = 11;</code>
+     * @return The iStr15min.
+     */
+    @java.lang.Override
+    public double getIStr15Min() {
+      return iStr15Min_;
+    }
+    /**
+     * <code>double i_str15min = 11;</code>
+     * @param value The iStr15min to set.
+     * @return This builder for chaining.
+     */
+    public Builder setIStr15Min(double value) {
+      
+      iStr15Min_ = value;
+      onChanged();
+      return this;
+    }
+    /**
+     * <code>double i_str15min = 11;</code>
+     * @return This builder for chaining.
+     */
+    public Builder clearIStr15Min() {
+      
+      iStr15Min_ = 0D;
+      onChanged();
+      return this;
+    }
+
+    private double iRov15Min_ ;
+    /**
+     * <code>double i_rov15min = 12;</code>
+     * @return The iRov15min.
+     */
+    @java.lang.Override
+    public double getIRov15Min() {
+      return iRov15Min_;
+    }
+    /**
+     * <code>double i_rov15min = 12;</code>
+     * @param value The iRov15min to set.
+     * @return This builder for chaining.
+     */
+    public Builder setIRov15Min(double value) {
+      
+      iRov15Min_ = value;
+      onChanged();
+      return this;
+    }
+    /**
+     * <code>double i_rov15min = 12;</code>
+     * @return This builder for chaining.
+     */
+    public Builder clearIRov15Min() {
+      
+      iRov15Min_ = 0D;
+      onChanged();
+      return this;
+    }
+
+    private double iRos15Min_ ;
+    /**
+     * <code>double i_ros15min = 13;</code>
+     * @return The iRos15min.
+     */
+    @java.lang.Override
+    public double getIRos15Min() {
+      return iRos15Min_;
+    }
+    /**
+     * <code>double i_ros15min = 13;</code>
+     * @param value The iRos15min to set.
+     * @return This builder for chaining.
+     */
+    public Builder setIRos15Min(double value) {
+      
+      iRos15Min_ = value;
+      onChanged();
+      return this;
+    }
+    /**
+     * <code>double i_ros15min = 13;</code>
+     * @return This builder for chaining.
+     */
+    public Builder clearIRos15Min() {
+      
+      iRos15Min_ = 0D;
+      onChanged();
+      return this;
+    }
+
+    private long i1HourExpCnt_ ;
+    /**
+     * <pre>
+     * 过去一小时
+     * </pre>
+     *
+     * <code>int64 i1hour_exp_cnt = 14;</code>
+     * @return The i1hourExpCnt.
+     */
+    @java.lang.Override
+    public long getI1HourExpCnt() {
+      return i1HourExpCnt_;
+    }
+    /**
+     * <pre>
+     * 过去一小时
+     * </pre>
+     *
+     * <code>int64 i1hour_exp_cnt = 14;</code>
+     * @param value The i1hourExpCnt to set.
+     * @return This builder for chaining.
+     */
+    public Builder setI1HourExpCnt(long value) {
+      
+      i1HourExpCnt_ = value;
+      onChanged();
+      return this;
+    }
+    /**
+     * <pre>
+     * 过去一小时
+     * </pre>
+     *
+     * <code>int64 i1hour_exp_cnt = 14;</code>
+     * @return This builder for chaining.
+     */
+    public Builder clearI1HourExpCnt() {
+      
+      i1HourExpCnt_ = 0L;
+      onChanged();
+      return this;
+    }
+
+    private long i1HourClickCnt_ ;
+    /**
+     * <code>int64 i1hour_click_cnt = 15;</code>
+     * @return The i1hourClickCnt.
+     */
+    @java.lang.Override
+    public long getI1HourClickCnt() {
+      return i1HourClickCnt_;
+    }
+    /**
+     * <code>int64 i1hour_click_cnt = 15;</code>
+     * @param value The i1hourClickCnt to set.
+     * @return This builder for chaining.
+     */
+    public Builder setI1HourClickCnt(long value) {
+      
+      i1HourClickCnt_ = value;
+      onChanged();
+      return this;
+    }
+    /**
+     * <code>int64 i1hour_click_cnt = 15;</code>
+     * @return This builder for chaining.
+     */
+    public Builder clearI1HourClickCnt() {
+      
+      i1HourClickCnt_ = 0L;
+      onChanged();
+      return this;
+    }
+
+    private long i1HourShareCnt_ ;
+    /**
+     * <code>int64 i1hour_share_cnt = 16;</code>
+     * @return The i1hourShareCnt.
+     */
+    @java.lang.Override
+    public long getI1HourShareCnt() {
+      return i1HourShareCnt_;
+    }
+    /**
+     * <code>int64 i1hour_share_cnt = 16;</code>
+     * @param value The i1hourShareCnt to set.
+     * @return This builder for chaining.
+     */
+    public Builder setI1HourShareCnt(long value) {
+      
+      i1HourShareCnt_ = value;
+      onChanged();
+      return this;
+    }
+    /**
+     * <code>int64 i1hour_share_cnt = 16;</code>
+     * @return This builder for chaining.
+     */
+    public Builder clearI1HourShareCnt() {
+      
+      i1HourShareCnt_ = 0L;
+      onChanged();
+      return this;
+    }
+
+    private long i1HourReturnCnt_ ;
+    /**
+     * <code>int64 i1hour_return_cnt = 17;</code>
+     * @return The i1hourReturnCnt.
+     */
+    @java.lang.Override
+    public long getI1HourReturnCnt() {
+      return i1HourReturnCnt_;
+    }
+    /**
+     * <code>int64 i1hour_return_cnt = 17;</code>
+     * @param value The i1hourReturnCnt to set.
+     * @return This builder for chaining.
+     */
+    public Builder setI1HourReturnCnt(long value) {
+      
+      i1HourReturnCnt_ = value;
+      onChanged();
+      return this;
+    }
+    /**
+     * <code>int64 i1hour_return_cnt = 17;</code>
+     * @return This builder for chaining.
+     */
+    public Builder clearI1HourReturnCnt() {
+      
+      i1HourReturnCnt_ = 0L;
+      onChanged();
+      return this;
+    }
+
+    private double iCtr1Hour_ ;
+    /**
+     * <code>double i_ctr1hour = 18;</code>
+     * @return The iCtr1hour.
+     */
+    @java.lang.Override
+    public double getICtr1Hour() {
+      return iCtr1Hour_;
+    }
+    /**
+     * <code>double i_ctr1hour = 18;</code>
+     * @param value The iCtr1hour to set.
+     * @return This builder for chaining.
+     */
+    public Builder setICtr1Hour(double value) {
+      
+      iCtr1Hour_ = value;
+      onChanged();
+      return this;
+    }
+    /**
+     * <code>double i_ctr1hour = 18;</code>
+     * @return This builder for chaining.
+     */
+    public Builder clearICtr1Hour() {
+      
+      iCtr1Hour_ = 0D;
+      onChanged();
+      return this;
+    }
+
+    private double iStr1Hour_ ;
+    /**
+     * <code>double i_str1hour = 19;</code>
+     * @return The iStr1hour.
+     */
+    @java.lang.Override
+    public double getIStr1Hour() {
+      return iStr1Hour_;
+    }
+    /**
+     * <code>double i_str1hour = 19;</code>
+     * @param value The iStr1hour to set.
+     * @return This builder for chaining.
+     */
+    public Builder setIStr1Hour(double value) {
+      
+      iStr1Hour_ = value;
+      onChanged();
+      return this;
+    }
+    /**
+     * <code>double i_str1hour = 19;</code>
+     * @return This builder for chaining.
+     */
+    public Builder clearIStr1Hour() {
+      
+      iStr1Hour_ = 0D;
+      onChanged();
+      return this;
+    }
+
+    private double iRov1Hour_ ;
+    /**
+     * <code>double i_rov1hour = 20;</code>
+     * @return The iRov1hour.
+     */
+    @java.lang.Override
+    public double getIRov1Hour() {
+      return iRov1Hour_;
+    }
+    /**
+     * <code>double i_rov1hour = 20;</code>
+     * @param value The iRov1hour to set.
+     * @return This builder for chaining.
+     */
+    public Builder setIRov1Hour(double value) {
+      
+      iRov1Hour_ = value;
+      onChanged();
+      return this;
+    }
+    /**
+     * <code>double i_rov1hour = 20;</code>
+     * @return This builder for chaining.
+     */
+    public Builder clearIRov1Hour() {
+      
+      iRov1Hour_ = 0D;
+      onChanged();
+      return this;
+    }
+
+    private double iRos1Hour_ ;
+    /**
+     * <code>double i_ros1hour = 21;</code>
+     * @return The iRos1hour.
+     */
+    @java.lang.Override
+    public double getIRos1Hour() {
+      return iRos1Hour_;
+    }
+    /**
+     * <code>double i_ros1hour = 21;</code>
+     * @param value The iRos1hour to set.
+     * @return This builder for chaining.
+     */
+    public Builder setIRos1Hour(double value) {
+      
+      iRos1Hour_ = value;
+      onChanged();
+      return this;
+    }
+    /**
+     * <code>double i_ros1hour = 21;</code>
+     * @return This builder for chaining.
+     */
+    public Builder clearIRos1Hour() {
+      
+      iRos1Hour_ = 0D;
+      onChanged();
+      return this;
+    }
+
+    private long iTodayExpCnt_ ;
+    /**
+     * <pre>
+     * 今天
+     * </pre>
+     *
+     * <code>int64 i_today_exp_cnt = 22;</code>
+     * @return The iTodayExpCnt.
+     */
+    @java.lang.Override
+    public long getITodayExpCnt() {
+      return iTodayExpCnt_;
+    }
+    /**
+     * <pre>
+     * 今天
+     * </pre>
+     *
+     * <code>int64 i_today_exp_cnt = 22;</code>
+     * @param value The iTodayExpCnt to set.
+     * @return This builder for chaining.
+     */
+    public Builder setITodayExpCnt(long value) {
+      
+      iTodayExpCnt_ = value;
+      onChanged();
+      return this;
+    }
+    /**
+     * <pre>
+     * 今天
+     * </pre>
+     *
+     * <code>int64 i_today_exp_cnt = 22;</code>
+     * @return This builder for chaining.
+     */
+    public Builder clearITodayExpCnt() {
+      
+      iTodayExpCnt_ = 0L;
+      onChanged();
+      return this;
+    }
+
+    private long iTodayClickCnt_ ;
+    /**
+     * <code>int64 i_today_click_cnt = 23;</code>
+     * @return The iTodayClickCnt.
+     */
+    @java.lang.Override
+    public long getITodayClickCnt() {
+      return iTodayClickCnt_;
+    }
+    /**
+     * <code>int64 i_today_click_cnt = 23;</code>
+     * @param value The iTodayClickCnt to set.
+     * @return This builder for chaining.
+     */
+    public Builder setITodayClickCnt(long value) {
+      
+      iTodayClickCnt_ = value;
+      onChanged();
+      return this;
+    }
+    /**
+     * <code>int64 i_today_click_cnt = 23;</code>
+     * @return This builder for chaining.
+     */
+    public Builder clearITodayClickCnt() {
+      
+      iTodayClickCnt_ = 0L;
+      onChanged();
+      return this;
+    }
+
+    private long iTodayShareCnt_ ;
+    /**
+     * <code>int64 i_today_share_cnt = 24;</code>
+     * @return The iTodayShareCnt.
+     */
+    @java.lang.Override
+    public long getITodayShareCnt() {
+      return iTodayShareCnt_;
+    }
+    /**
+     * <code>int64 i_today_share_cnt = 24;</code>
+     * @param value The iTodayShareCnt to set.
+     * @return This builder for chaining.
+     */
+    public Builder setITodayShareCnt(long value) {
+      
+      iTodayShareCnt_ = value;
+      onChanged();
+      return this;
+    }
+    /**
+     * <code>int64 i_today_share_cnt = 24;</code>
+     * @return This builder for chaining.
+     */
+    public Builder clearITodayShareCnt() {
+      
+      iTodayShareCnt_ = 0L;
+      onChanged();
+      return this;
+    }
+
+    private long iTodayReturnCnt_ ;
+    /**
+     * <code>int64 i_today_return_cnt = 25;</code>
+     * @return The iTodayReturnCnt.
+     */
+    @java.lang.Override
+    public long getITodayReturnCnt() {
+      return iTodayReturnCnt_;
+    }
+    /**
+     * <code>int64 i_today_return_cnt = 25;</code>
+     * @param value The iTodayReturnCnt to set.
+     * @return This builder for chaining.
+     */
+    public Builder setITodayReturnCnt(long value) {
+      
+      iTodayReturnCnt_ = value;
+      onChanged();
+      return this;
+    }
+    /**
+     * <code>int64 i_today_return_cnt = 25;</code>
+     * @return This builder for chaining.
+     */
+    public Builder clearITodayReturnCnt() {
+      
+      iTodayReturnCnt_ = 0L;
+      onChanged();
+      return this;
+    }
+
+    private double iCtrToday_ ;
+    /**
+     * <code>double i_ctr_today = 26;</code>
+     * @return The iCtrToday.
+     */
+    @java.lang.Override
+    public double getICtrToday() {
+      return iCtrToday_;
+    }
+    /**
+     * <code>double i_ctr_today = 26;</code>
+     * @param value The iCtrToday to set.
+     * @return This builder for chaining.
+     */
+    public Builder setICtrToday(double value) {
+      
+      iCtrToday_ = value;
+      onChanged();
+      return this;
+    }
+    /**
+     * <code>double i_ctr_today = 26;</code>
+     * @return This builder for chaining.
+     */
+    public Builder clearICtrToday() {
+      
+      iCtrToday_ = 0D;
+      onChanged();
+      return this;
+    }
+
+    private double iStrToday_ ;
+    /**
+     * <code>double i_str_today = 27;</code>
+     * @return The iStrToday.
+     */
+    @java.lang.Override
+    public double getIStrToday() {
+      return iStrToday_;
+    }
+    /**
+     * <code>double i_str_today = 27;</code>
+     * @param value The iStrToday to set.
+     * @return This builder for chaining.
+     */
+    public Builder setIStrToday(double value) {
+      
+      iStrToday_ = value;
+      onChanged();
+      return this;
+    }
+    /**
+     * <code>double i_str_today = 27;</code>
+     * @return This builder for chaining.
+     */
+    public Builder clearIStrToday() {
+      
+      iStrToday_ = 0D;
+      onChanged();
+      return this;
+    }
+
+    private double iRovToday_ ;
+    /**
+     * <code>double i_rov_today = 28;</code>
+     * @return The iRovToday.
+     */
+    @java.lang.Override
+    public double getIRovToday() {
+      return iRovToday_;
+    }
+    /**
+     * <code>double i_rov_today = 28;</code>
+     * @param value The iRovToday to set.
+     * @return This builder for chaining.
+     */
+    public Builder setIRovToday(double value) {
+      
+      iRovToday_ = value;
+      onChanged();
+      return this;
+    }
+    /**
+     * <code>double i_rov_today = 28;</code>
+     * @return This builder for chaining.
+     */
+    public Builder clearIRovToday() {
+      
+      iRovToday_ = 0D;
+      onChanged();
+      return this;
+    }
+
+    private double iRosToday_ ;
+    /**
+     * <code>double i_ros_today = 29;</code>
+     * @return The iRosToday.
+     */
+    @java.lang.Override
+    public double getIRosToday() {
+      return iRosToday_;
+    }
+    /**
+     * <code>double i_ros_today = 29;</code>
+     * @param value The iRosToday to set.
+     * @return This builder for chaining.
+     */
+    public Builder setIRosToday(double value) {
+      
+      iRosToday_ = value;
+      onChanged();
+      return this;
+    }
+    /**
+     * <code>double i_ros_today = 29;</code>
+     * @return This builder for chaining.
+     */
+    public Builder clearIRosToday() {
+      
+      iRosToday_ = 0D;
+      onChanged();
+      return this;
+    }
+
+    private long i1DayExpCnt_ ;
+    /**
+     * <pre>
+     * 过去一天
+     * </pre>
+     *
+     * <code>int64 i1day_exp_cnt = 30;</code>
+     * @return The i1dayExpCnt.
+     */
+    @java.lang.Override
+    public long getI1DayExpCnt() {
+      return i1DayExpCnt_;
+    }
+    /**
+     * <pre>
+     * 过去一天
+     * </pre>
+     *
+     * <code>int64 i1day_exp_cnt = 30;</code>
+     * @param value The i1dayExpCnt to set.
+     * @return This builder for chaining.
+     */
+    public Builder setI1DayExpCnt(long value) {
+      
+      i1DayExpCnt_ = value;
+      onChanged();
+      return this;
+    }
+    /**
+     * <pre>
+     * 过去一天
+     * </pre>
+     *
+     * <code>int64 i1day_exp_cnt = 30;</code>
+     * @return This builder for chaining.
+     */
+    public Builder clearI1DayExpCnt() {
+      
+      i1DayExpCnt_ = 0L;
+      onChanged();
+      return this;
+    }
+
+    private long i1DayClickCnt_ ;
+    /**
+     * <code>int64 i1day_click_cnt = 31;</code>
+     * @return The i1dayClickCnt.
+     */
+    @java.lang.Override
+    public long getI1DayClickCnt() {
+      return i1DayClickCnt_;
+    }
+    /**
+     * <code>int64 i1day_click_cnt = 31;</code>
+     * @param value The i1dayClickCnt to set.
+     * @return This builder for chaining.
+     */
+    public Builder setI1DayClickCnt(long value) {
+      
+      i1DayClickCnt_ = value;
+      onChanged();
+      return this;
+    }
+    /**
+     * <code>int64 i1day_click_cnt = 31;</code>
+     * @return This builder for chaining.
+     */
+    public Builder clearI1DayClickCnt() {
+      
+      i1DayClickCnt_ = 0L;
+      onChanged();
+      return this;
+    }
+
+    private long i1DayShareCnt_ ;
+    /**
+     * <code>int64 i1day_share_cnt = 32;</code>
+     * @return The i1dayShareCnt.
+     */
+    @java.lang.Override
+    public long getI1DayShareCnt() {
+      return i1DayShareCnt_;
+    }
+    /**
+     * <code>int64 i1day_share_cnt = 32;</code>
+     * @param value The i1dayShareCnt to set.
+     * @return This builder for chaining.
+     */
+    public Builder setI1DayShareCnt(long value) {
+      
+      i1DayShareCnt_ = value;
+      onChanged();
+      return this;
+    }
+    /**
+     * <code>int64 i1day_share_cnt = 32;</code>
+     * @return This builder for chaining.
+     */
+    public Builder clearI1DayShareCnt() {
+      
+      i1DayShareCnt_ = 0L;
+      onChanged();
+      return this;
+    }
+
+    private long i1DayReturnCnt_ ;
+    /**
+     * <code>int64 i1day_return_cnt = 33;</code>
+     * @return The i1dayReturnCnt.
+     */
+    @java.lang.Override
+    public long getI1DayReturnCnt() {
+      return i1DayReturnCnt_;
+    }
+    /**
+     * <code>int64 i1day_return_cnt = 33;</code>
+     * @param value The i1dayReturnCnt to set.
+     * @return This builder for chaining.
+     */
+    public Builder setI1DayReturnCnt(long value) {
+      
+      i1DayReturnCnt_ = value;
+      onChanged();
+      return this;
+    }
+    /**
+     * <code>int64 i1day_return_cnt = 33;</code>
+     * @return This builder for chaining.
+     */
+    public Builder clearI1DayReturnCnt() {
+      
+      i1DayReturnCnt_ = 0L;
+      onChanged();
+      return this;
+    }
+
+    private double iCtr1Day_ ;
+    /**
+     * <code>double i_ctr1day = 34;</code>
+     * @return The iCtr1day.
+     */
+    @java.lang.Override
+    public double getICtr1Day() {
+      return iCtr1Day_;
+    }
+    /**
+     * <code>double i_ctr1day = 34;</code>
+     * @param value The iCtr1day to set.
+     * @return This builder for chaining.
+     */
+    public Builder setICtr1Day(double value) {
+      
+      iCtr1Day_ = value;
+      onChanged();
+      return this;
+    }
+    /**
+     * <code>double i_ctr1day = 34;</code>
+     * @return This builder for chaining.
+     */
+    public Builder clearICtr1Day() {
+      
+      iCtr1Day_ = 0D;
+      onChanged();
+      return this;
+    }
+
+    private double iStr1Day_ ;
+    /**
+     * <code>double i_str1day = 35;</code>
+     * @return The iStr1day.
+     */
+    @java.lang.Override
+    public double getIStr1Day() {
+      return iStr1Day_;
+    }
+    /**
+     * <code>double i_str1day = 35;</code>
+     * @param value The iStr1day to set.
+     * @return This builder for chaining.
+     */
+    public Builder setIStr1Day(double value) {
+      
+      iStr1Day_ = value;
+      onChanged();
+      return this;
+    }
+    /**
+     * <code>double i_str1day = 35;</code>
+     * @return This builder for chaining.
+     */
+    public Builder clearIStr1Day() {
+      
+      iStr1Day_ = 0D;
+      onChanged();
+      return this;
+    }
+
+    private double iRov1Day_ ;
+    /**
+     * <code>double i_rov1day = 36;</code>
+     * @return The iRov1day.
+     */
+    @java.lang.Override
+    public double getIRov1Day() {
+      return iRov1Day_;
+    }
+    /**
+     * <code>double i_rov1day = 36;</code>
+     * @param value The iRov1day to set.
+     * @return This builder for chaining.
+     */
+    public Builder setIRov1Day(double value) {
+      
+      iRov1Day_ = value;
+      onChanged();
+      return this;
+    }
+    /**
+     * <code>double i_rov1day = 36;</code>
+     * @return This builder for chaining.
+     */
+    public Builder clearIRov1Day() {
+      
+      iRov1Day_ = 0D;
+      onChanged();
+      return this;
+    }
+
+    private double iRos1Day_ ;
+    /**
+     * <code>double i_ros1day = 37;</code>
+     * @return The iRos1day.
+     */
+    @java.lang.Override
+    public double getIRos1Day() {
+      return iRos1Day_;
+    }
+    /**
+     * <code>double i_ros1day = 37;</code>
+     * @param value The iRos1day to set.
+     * @return This builder for chaining.
+     */
+    public Builder setIRos1Day(double value) {
+      
+      iRos1Day_ = value;
+      onChanged();
+      return this;
+    }
+    /**
+     * <code>double i_ros1day = 37;</code>
+     * @return This builder for chaining.
+     */
+    public Builder clearIRos1Day() {
+      
+      iRos1Day_ = 0D;
+      onChanged();
+      return this;
+    }
+
+    private long i3DayExpCnt_ ;
+    /**
+     * <pre>
+     * 过去三天
+     * </pre>
+     *
+     * <code>int64 i3day_exp_cnt = 38;</code>
+     * @return The i3dayExpCnt.
+     */
+    @java.lang.Override
+    public long getI3DayExpCnt() {
+      return i3DayExpCnt_;
+    }
+    /**
+     * <pre>
+     * 过去三天
+     * </pre>
+     *
+     * <code>int64 i3day_exp_cnt = 38;</code>
+     * @param value The i3dayExpCnt to set.
+     * @return This builder for chaining.
+     */
+    public Builder setI3DayExpCnt(long value) {
+      
+      i3DayExpCnt_ = value;
+      onChanged();
+      return this;
+    }
+    /**
+     * <pre>
+     * 过去三天
+     * </pre>
+     *
+     * <code>int64 i3day_exp_cnt = 38;</code>
+     * @return This builder for chaining.
+     */
+    public Builder clearI3DayExpCnt() {
+      
+      i3DayExpCnt_ = 0L;
+      onChanged();
+      return this;
+    }
+
+    private long i3DayClickCnt_ ;
+    /**
+     * <code>int64 i3day_click_cnt = 39;</code>
+     * @return The i3dayClickCnt.
+     */
+    @java.lang.Override
+    public long getI3DayClickCnt() {
+      return i3DayClickCnt_;
+    }
+    /**
+     * <code>int64 i3day_click_cnt = 39;</code>
+     * @param value The i3dayClickCnt to set.
+     * @return This builder for chaining.
+     */
+    public Builder setI3DayClickCnt(long value) {
+      
+      i3DayClickCnt_ = value;
+      onChanged();
+      return this;
+    }
+    /**
+     * <code>int64 i3day_click_cnt = 39;</code>
+     * @return This builder for chaining.
+     */
+    public Builder clearI3DayClickCnt() {
+      
+      i3DayClickCnt_ = 0L;
+      onChanged();
+      return this;
+    }
+
+    private long i3DayShareCnt_ ;
+    /**
+     * <code>int64 i3day_share_cnt = 40;</code>
+     * @return The i3dayShareCnt.
+     */
+    @java.lang.Override
+    public long getI3DayShareCnt() {
+      return i3DayShareCnt_;
+    }
+    /**
+     * <code>int64 i3day_share_cnt = 40;</code>
+     * @param value The i3dayShareCnt to set.
+     * @return This builder for chaining.
+     */
+    public Builder setI3DayShareCnt(long value) {
+      
+      i3DayShareCnt_ = value;
+      onChanged();
+      return this;
+    }
+    /**
+     * <code>int64 i3day_share_cnt = 40;</code>
+     * @return This builder for chaining.
+     */
+    public Builder clearI3DayShareCnt() {
+      
+      i3DayShareCnt_ = 0L;
+      onChanged();
+      return this;
+    }
+
+    private long i3DayReturnCnt_ ;
+    /**
+     * <code>int64 i3day_return_cnt = 41;</code>
+     * @return The i3dayReturnCnt.
+     */
+    @java.lang.Override
+    public long getI3DayReturnCnt() {
+      return i3DayReturnCnt_;
+    }
+    /**
+     * <code>int64 i3day_return_cnt = 41;</code>
+     * @param value The i3dayReturnCnt to set.
+     * @return This builder for chaining.
+     */
+    public Builder setI3DayReturnCnt(long value) {
+      
+      i3DayReturnCnt_ = value;
+      onChanged();
+      return this;
+    }
+    /**
+     * <code>int64 i3day_return_cnt = 41;</code>
+     * @return This builder for chaining.
+     */
+    public Builder clearI3DayReturnCnt() {
+      
+      i3DayReturnCnt_ = 0L;
+      onChanged();
+      return this;
+    }
+
+    private double iCtr3Day_ ;
+    /**
+     * <code>double i_ctr3day = 42;</code>
+     * @return The iCtr3day.
+     */
+    @java.lang.Override
+    public double getICtr3Day() {
+      return iCtr3Day_;
+    }
+    /**
+     * <code>double i_ctr3day = 42;</code>
+     * @param value The iCtr3day to set.
+     * @return This builder for chaining.
+     */
+    public Builder setICtr3Day(double value) {
+      
+      iCtr3Day_ = value;
+      onChanged();
+      return this;
+    }
+    /**
+     * <code>double i_ctr3day = 42;</code>
+     * @return This builder for chaining.
+     */
+    public Builder clearICtr3Day() {
+      
+      iCtr3Day_ = 0D;
+      onChanged();
+      return this;
+    }
+
+    private double iStr3Day_ ;
+    /**
+     * <code>double i_str3day = 43;</code>
+     * @return The iStr3day.
+     */
+    @java.lang.Override
+    public double getIStr3Day() {
+      return iStr3Day_;
+    }
+    /**
+     * <code>double i_str3day = 43;</code>
+     * @param value The iStr3day to set.
+     * @return This builder for chaining.
+     */
+    public Builder setIStr3Day(double value) {
+      
+      iStr3Day_ = value;
+      onChanged();
+      return this;
+    }
+    /**
+     * <code>double i_str3day = 43;</code>
+     * @return This builder for chaining.
+     */
+    public Builder clearIStr3Day() {
+      
+      iStr3Day_ = 0D;
+      onChanged();
+      return this;
+    }
+
+    private double iRov3Day_ ;
+    /**
+     * <code>double i_rov3day = 44;</code>
+     * @return The iRov3day.
+     */
+    @java.lang.Override
+    public double getIRov3Day() {
+      return iRov3Day_;
+    }
+    /**
+     * <code>double i_rov3day = 44;</code>
+     * @param value The iRov3day to set.
+     * @return This builder for chaining.
+     */
+    public Builder setIRov3Day(double value) {
+      
+      iRov3Day_ = value;
+      onChanged();
+      return this;
+    }
+    /**
+     * <code>double i_rov3day = 44;</code>
+     * @return This builder for chaining.
+     */
+    public Builder clearIRov3Day() {
+      
+      iRov3Day_ = 0D;
+      onChanged();
+      return this;
+    }
+
+    private double iRos3Day_ ;
+    /**
+     * <code>double i_ros3day = 45;</code>
+     * @return The iRos3day.
+     */
+    @java.lang.Override
+    public double getIRos3Day() {
+      return iRos3Day_;
+    }
+    /**
+     * <code>double i_ros3day = 45;</code>
+     * @param value The iRos3day to set.
+     * @return This builder for chaining.
+     */
+    public Builder setIRos3Day(double value) {
+      
+      iRos3Day_ = value;
+      onChanged();
+      return this;
+    }
+    /**
+     * <code>double i_ros3day = 45;</code>
+     * @return This builder for chaining.
+     */
+    public Builder clearIRos3Day() {
+      
+      iRos3Day_ = 0D;
+      onChanged();
+      return this;
+    }
+    @java.lang.Override
+    public final Builder setUnknownFields(
+        final com.google.protobuf.UnknownFieldSet unknownFields) {
+      return super.setUnknownFields(unknownFields);
+    }
+
+    @java.lang.Override
+    public final Builder mergeUnknownFields(
+        final com.google.protobuf.UnknownFieldSet unknownFields) {
+      return super.mergeUnknownFields(unknownFields);
+    }
+
+
+    // @@protoc_insertion_point(builder_scope:GetVideoFeatureInfo)
+  }
+
+  // @@protoc_insertion_point(class_scope:GetVideoFeatureInfo)
+  private static final com.tzld.piaoquan.recommend.feature.model.feature.GetVideoFeatureInfo DEFAULT_INSTANCE;
+  static {
+    DEFAULT_INSTANCE = new com.tzld.piaoquan.recommend.feature.model.feature.GetVideoFeatureInfo();
+  }
+
+  public static com.tzld.piaoquan.recommend.feature.model.feature.GetVideoFeatureInfo getDefaultInstance() {
+    return DEFAULT_INSTANCE;
+  }
+
+  private static final com.google.protobuf.Parser<GetVideoFeatureInfo>
+      PARSER = new com.google.protobuf.AbstractParser<GetVideoFeatureInfo>() {
+    @java.lang.Override
+    public GetVideoFeatureInfo parsePartialFrom(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return new GetVideoFeatureInfo(input, extensionRegistry);
+    }
+  };
+
+  public static com.google.protobuf.Parser<GetVideoFeatureInfo> parser() {
+    return PARSER;
+  }
+
+  @java.lang.Override
+  public com.google.protobuf.Parser<GetVideoFeatureInfo> getParserForType() {
+    return PARSER;
+  }
+
+  @java.lang.Override
+  public com.tzld.piaoquan.recommend.feature.model.feature.GetVideoFeatureInfo getDefaultInstanceForType() {
+    return DEFAULT_INSTANCE;
+  }
+
+}
+

+ 309 - 0
recommend-feature-client/src/main/java/com/tzld/piaoquan/recommend/feature/model/feature/GetVideoFeatureInfoOrBuilder.java

@@ -0,0 +1,309 @@
+// Generated by the protocol buffer compiler.  DO NOT EDIT!
+// source: com/tzld/piaoquan/recommend/feature/feature.proto
+
+package com.tzld.piaoquan.recommend.feature.model.feature;
+
+public interface GetVideoFeatureInfoOrBuilder extends
+    // @@protoc_insertion_point(interface_extends:GetVideoFeatureInfo)
+    com.google.protobuf.MessageOrBuilder {
+
+  /**
+   * <code>int64 video_id = 1;</code>
+   * @return The videoId.
+   */
+  long getVideoId();
+
+  /**
+   * <code>int64 play_count_total = 2;</code>
+   * @return The playCountTotal.
+   */
+  long getPlayCountTotal();
+
+  /**
+   * <code>int32 total_time = 3;</code>
+   * @return The totalTime.
+   */
+  int getTotalTime();
+
+  /**
+   * <code>string gmt_create = 4;</code>
+   * @return The gmtCreate.
+   */
+  java.lang.String getGmtCreate();
+  /**
+   * <code>string gmt_create = 4;</code>
+   * @return The bytes for gmtCreate.
+   */
+  com.google.protobuf.ByteString
+      getGmtCreateBytes();
+
+  /**
+   * <pre>
+   * 上传者
+   * </pre>
+   *
+   * <code>int64 uid = 5;</code>
+   * @return The uid.
+   */
+  long getUid();
+
+  /**
+   * <pre>
+   * 过去十五分钟
+   * </pre>
+   *
+   * <code>int64 i15min_exp_cnt = 6;</code>
+   * @return The i15minExpCnt.
+   */
+  long getI15MinExpCnt();
+
+  /**
+   * <code>int64 i15min_click_cnt = 7;</code>
+   * @return The i15minClickCnt.
+   */
+  long getI15MinClickCnt();
+
+  /**
+   * <code>int64 i15min_share_cnt = 8;</code>
+   * @return The i15minShareCnt.
+   */
+  long getI15MinShareCnt();
+
+  /**
+   * <code>int64 i15min_return_cnt = 9;</code>
+   * @return The i15minReturnCnt.
+   */
+  long getI15MinReturnCnt();
+
+  /**
+   * <code>double i_ctr15min = 10;</code>
+   * @return The iCtr15min.
+   */
+  double getICtr15Min();
+
+  /**
+   * <code>double i_str15min = 11;</code>
+   * @return The iStr15min.
+   */
+  double getIStr15Min();
+
+  /**
+   * <code>double i_rov15min = 12;</code>
+   * @return The iRov15min.
+   */
+  double getIRov15Min();
+
+  /**
+   * <code>double i_ros15min = 13;</code>
+   * @return The iRos15min.
+   */
+  double getIRos15Min();
+
+  /**
+   * <pre>
+   * 过去一小时
+   * </pre>
+   *
+   * <code>int64 i1hour_exp_cnt = 14;</code>
+   * @return The i1hourExpCnt.
+   */
+  long getI1HourExpCnt();
+
+  /**
+   * <code>int64 i1hour_click_cnt = 15;</code>
+   * @return The i1hourClickCnt.
+   */
+  long getI1HourClickCnt();
+
+  /**
+   * <code>int64 i1hour_share_cnt = 16;</code>
+   * @return The i1hourShareCnt.
+   */
+  long getI1HourShareCnt();
+
+  /**
+   * <code>int64 i1hour_return_cnt = 17;</code>
+   * @return The i1hourReturnCnt.
+   */
+  long getI1HourReturnCnt();
+
+  /**
+   * <code>double i_ctr1hour = 18;</code>
+   * @return The iCtr1hour.
+   */
+  double getICtr1Hour();
+
+  /**
+   * <code>double i_str1hour = 19;</code>
+   * @return The iStr1hour.
+   */
+  double getIStr1Hour();
+
+  /**
+   * <code>double i_rov1hour = 20;</code>
+   * @return The iRov1hour.
+   */
+  double getIRov1Hour();
+
+  /**
+   * <code>double i_ros1hour = 21;</code>
+   * @return The iRos1hour.
+   */
+  double getIRos1Hour();
+
+  /**
+   * <pre>
+   * 今天
+   * </pre>
+   *
+   * <code>int64 i_today_exp_cnt = 22;</code>
+   * @return The iTodayExpCnt.
+   */
+  long getITodayExpCnt();
+
+  /**
+   * <code>int64 i_today_click_cnt = 23;</code>
+   * @return The iTodayClickCnt.
+   */
+  long getITodayClickCnt();
+
+  /**
+   * <code>int64 i_today_share_cnt = 24;</code>
+   * @return The iTodayShareCnt.
+   */
+  long getITodayShareCnt();
+
+  /**
+   * <code>int64 i_today_return_cnt = 25;</code>
+   * @return The iTodayReturnCnt.
+   */
+  long getITodayReturnCnt();
+
+  /**
+   * <code>double i_ctr_today = 26;</code>
+   * @return The iCtrToday.
+   */
+  double getICtrToday();
+
+  /**
+   * <code>double i_str_today = 27;</code>
+   * @return The iStrToday.
+   */
+  double getIStrToday();
+
+  /**
+   * <code>double i_rov_today = 28;</code>
+   * @return The iRovToday.
+   */
+  double getIRovToday();
+
+  /**
+   * <code>double i_ros_today = 29;</code>
+   * @return The iRosToday.
+   */
+  double getIRosToday();
+
+  /**
+   * <pre>
+   * 过去一天
+   * </pre>
+   *
+   * <code>int64 i1day_exp_cnt = 30;</code>
+   * @return The i1dayExpCnt.
+   */
+  long getI1DayExpCnt();
+
+  /**
+   * <code>int64 i1day_click_cnt = 31;</code>
+   * @return The i1dayClickCnt.
+   */
+  long getI1DayClickCnt();
+
+  /**
+   * <code>int64 i1day_share_cnt = 32;</code>
+   * @return The i1dayShareCnt.
+   */
+  long getI1DayShareCnt();
+
+  /**
+   * <code>int64 i1day_return_cnt = 33;</code>
+   * @return The i1dayReturnCnt.
+   */
+  long getI1DayReturnCnt();
+
+  /**
+   * <code>double i_ctr1day = 34;</code>
+   * @return The iCtr1day.
+   */
+  double getICtr1Day();
+
+  /**
+   * <code>double i_str1day = 35;</code>
+   * @return The iStr1day.
+   */
+  double getIStr1Day();
+
+  /**
+   * <code>double i_rov1day = 36;</code>
+   * @return The iRov1day.
+   */
+  double getIRov1Day();
+
+  /**
+   * <code>double i_ros1day = 37;</code>
+   * @return The iRos1day.
+   */
+  double getIRos1Day();
+
+  /**
+   * <pre>
+   * 过去三天
+   * </pre>
+   *
+   * <code>int64 i3day_exp_cnt = 38;</code>
+   * @return The i3dayExpCnt.
+   */
+  long getI3DayExpCnt();
+
+  /**
+   * <code>int64 i3day_click_cnt = 39;</code>
+   * @return The i3dayClickCnt.
+   */
+  long getI3DayClickCnt();
+
+  /**
+   * <code>int64 i3day_share_cnt = 40;</code>
+   * @return The i3dayShareCnt.
+   */
+  long getI3DayShareCnt();
+
+  /**
+   * <code>int64 i3day_return_cnt = 41;</code>
+   * @return The i3dayReturnCnt.
+   */
+  long getI3DayReturnCnt();
+
+  /**
+   * <code>double i_ctr3day = 42;</code>
+   * @return The iCtr3day.
+   */
+  double getICtr3Day();
+
+  /**
+   * <code>double i_str3day = 43;</code>
+   * @return The iStr3day.
+   */
+  double getIStr3Day();
+
+  /**
+   * <code>double i_rov3day = 44;</code>
+   * @return The iRov3day.
+   */
+  double getIRov3Day();
+
+  /**
+   * <code>double i_ros3day = 45;</code>
+   * @return The iRos3day.
+   */
+  double getIRos3Day();
+}

+ 615 - 3189
recommend-feature-client/src/main/java/com/tzld/piaoquan/recommend/feature/model/feature/GetVideoFeatureInfoResponse.java

@@ -16,7 +16,7 @@ private static final long serialVersionUID = 0L;
     super(builder);
   }
   private GetVideoFeatureInfoResponse() {
-    gmtCreate_ = "";
+    videoFeatureInfo_ = java.util.Collections.emptyList();
   }
 
   @java.lang.Override
@@ -39,6 +39,7 @@ private static final long serialVersionUID = 0L;
     if (extensionRegistry == null) {
       throw new java.lang.NullPointerException();
     }
+    int mutable_bitField0_ = 0;
     com.google.protobuf.UnknownFieldSet.Builder unknownFields =
         com.google.protobuf.UnknownFieldSet.newBuilder();
     try {
@@ -49,230 +50,26 @@ private static final long serialVersionUID = 0L;
           case 0:
             done = true;
             break;
-          case 8: {
-
-            videoId_ = input.readInt64();
-            break;
-          }
-          case 16: {
-
-            playCountTotal_ = input.readInt64();
-            break;
-          }
-          case 24: {
-
-            totalTime_ = input.readInt32();
-            break;
-          }
-          case 34: {
-            java.lang.String s = input.readStringRequireUtf8();
-
-            gmtCreate_ = s;
-            break;
-          }
-          case 40: {
-
-            uid_ = input.readInt64();
-            break;
-          }
-          case 48: {
-
-            i15MinExpCnt_ = input.readInt64();
-            break;
-          }
-          case 56: {
-
-            i15MinClickCnt_ = input.readInt64();
-            break;
-          }
-          case 64: {
-
-            i15MinShareCnt_ = input.readInt64();
-            break;
-          }
-          case 72: {
-
-            i15MinReturnCnt_ = input.readInt64();
-            break;
-          }
-          case 81: {
-
-            iCtr15Min_ = input.readDouble();
-            break;
-          }
-          case 89: {
-
-            iStr15Min_ = input.readDouble();
-            break;
-          }
-          case 97: {
-
-            iRov15Min_ = input.readDouble();
-            break;
-          }
-          case 105: {
-
-            iRos15Min_ = input.readDouble();
-            break;
-          }
-          case 112: {
-
-            i1HourExpCnt_ = input.readInt64();
-            break;
-          }
-          case 120: {
-
-            i1HourClickCnt_ = input.readInt64();
-            break;
-          }
-          case 128: {
-
-            i1HourShareCnt_ = input.readInt64();
-            break;
-          }
-          case 136: {
-
-            i1HourReturnCnt_ = input.readInt64();
-            break;
-          }
-          case 145: {
-
-            iCtr1Hour_ = input.readDouble();
-            break;
-          }
-          case 153: {
-
-            iStr1Hour_ = input.readDouble();
-            break;
-          }
-          case 161: {
-
-            iRov1Hour_ = input.readDouble();
-            break;
-          }
-          case 169: {
-
-            iRos1Hour_ = input.readDouble();
-            break;
-          }
-          case 176: {
-
-            iTodayExpCnt_ = input.readInt64();
-            break;
-          }
-          case 184: {
-
-            iTodayClickCnt_ = input.readInt64();
-            break;
-          }
-          case 192: {
-
-            iTodayShareCnt_ = input.readInt64();
-            break;
-          }
-          case 200: {
-
-            iTodayReturnCnt_ = input.readInt64();
-            break;
-          }
-          case 209: {
-
-            iCtrToday_ = input.readDouble();
-            break;
-          }
-          case 217: {
-
-            iStrToday_ = input.readDouble();
-            break;
-          }
-          case 225: {
-
-            iRovToday_ = input.readDouble();
-            break;
-          }
-          case 233: {
-
-            iRosToday_ = input.readDouble();
-            break;
-          }
-          case 240: {
-
-            i1DayExpCnt_ = input.readInt64();
-            break;
-          }
-          case 248: {
-
-            i1DayClickCnt_ = input.readInt64();
-            break;
-          }
-          case 256: {
-
-            i1DayShareCnt_ = input.readInt64();
-            break;
-          }
-          case 264: {
-
-            i1DayReturnCnt_ = input.readInt64();
-            break;
-          }
-          case 273: {
-
-            iCtr1Day_ = input.readDouble();
-            break;
-          }
-          case 281: {
-
-            iStr1Day_ = input.readDouble();
-            break;
-          }
-          case 289: {
-
-            iRov1Day_ = input.readDouble();
-            break;
-          }
-          case 297: {
-
-            iRos1Day_ = input.readDouble();
-            break;
-          }
-          case 304: {
-
-            i3DayExpCnt_ = input.readInt64();
-            break;
-          }
-          case 312: {
-
-            i3DayClickCnt_ = input.readInt64();
-            break;
-          }
-          case 320: {
-
-            i3DayShareCnt_ = input.readInt64();
-            break;
-          }
-          case 328: {
-
-            i3DayReturnCnt_ = input.readInt64();
-            break;
-          }
-          case 337: {
-
-            iCtr3Day_ = input.readDouble();
-            break;
-          }
-          case 345: {
-
-            iStr3Day_ = input.readDouble();
-            break;
-          }
-          case 353: {
+          case 10: {
+            com.tzld.piaoquan.recommend.feature.model.common.Result.Builder subBuilder = null;
+            if (result_ != null) {
+              subBuilder = result_.toBuilder();
+            }
+            result_ = input.readMessage(com.tzld.piaoquan.recommend.feature.model.common.Result.parser(), extensionRegistry);
+            if (subBuilder != null) {
+              subBuilder.mergeFrom(result_);
+              result_ = subBuilder.buildPartial();
+            }
 
-            iRov3Day_ = input.readDouble();
             break;
           }
-          case 361: {
-
-            iRos3Day_ = input.readDouble();
+          case 18: {
+            if (!((mutable_bitField0_ & 0x00000001) != 0)) {
+              videoFeatureInfo_ = new java.util.ArrayList<com.tzld.piaoquan.recommend.feature.model.feature.GetVideoFeatureInfo>();
+              mutable_bitField0_ |= 0x00000001;
+            }
+            videoFeatureInfo_.add(
+                input.readMessage(com.tzld.piaoquan.recommend.feature.model.feature.GetVideoFeatureInfo.parser(), extensionRegistry));
             break;
           }
           default: {
@@ -290,6 +87,9 @@ private static final long serialVersionUID = 0L;
       throw new com.google.protobuf.InvalidProtocolBufferException(
           e).setUnfinishedMessage(this);
     } finally {
+      if (((mutable_bitField0_ & 0x00000001) != 0)) {
+        videoFeatureInfo_ = java.util.Collections.unmodifiableList(videoFeatureInfo_);
+      }
       this.unknownFields = unknownFields.build();
       makeExtensionsImmutable();
     }
@@ -307,3175 +107,801 @@ private static final long serialVersionUID = 0L;
             com.tzld.piaoquan.recommend.feature.model.feature.GetVideoFeatureInfoResponse.class, com.tzld.piaoquan.recommend.feature.model.feature.GetVideoFeatureInfoResponse.Builder.class);
   }
 
-  public static final int VIDEOID_FIELD_NUMBER = 1;
-  private long videoId_;
+  public static final int RESULT_FIELD_NUMBER = 1;
+  private com.tzld.piaoquan.recommend.feature.model.common.Result result_;
   /**
-   * <code>int64 videoId = 1;</code>
-   * @return The videoId.
+   * <code>.Result result = 1;</code>
+   * @return Whether the result field is set.
    */
   @java.lang.Override
-  public long getVideoId() {
-    return videoId_;
+  public boolean hasResult() {
+    return result_ != null;
   }
-
-  public static final int PLAYCOUNTTOTAL_FIELD_NUMBER = 2;
-  private long playCountTotal_;
   /**
-   * <code>int64 playCountTotal = 2;</code>
-   * @return The playCountTotal.
+   * <code>.Result result = 1;</code>
+   * @return The result.
    */
   @java.lang.Override
-  public long getPlayCountTotal() {
-    return playCountTotal_;
+  public com.tzld.piaoquan.recommend.feature.model.common.Result getResult() {
+    return result_ == null ? com.tzld.piaoquan.recommend.feature.model.common.Result.getDefaultInstance() : result_;
   }
-
-  public static final int TOTALTIME_FIELD_NUMBER = 3;
-  private int totalTime_;
   /**
-   * <code>int32 totalTime = 3;</code>
-   * @return The totalTime.
+   * <code>.Result result = 1;</code>
    */
   @java.lang.Override
-  public int getTotalTime() {
-    return totalTime_;
+  public com.tzld.piaoquan.recommend.feature.model.common.ResultOrBuilder getResultOrBuilder() {
+    return getResult();
   }
 
-  public static final int GMTCREATE_FIELD_NUMBER = 4;
-  private volatile java.lang.Object gmtCreate_;
+  public static final int VIDEO_FEATURE_INFO_FIELD_NUMBER = 2;
+  private java.util.List<com.tzld.piaoquan.recommend.feature.model.feature.GetVideoFeatureInfo> videoFeatureInfo_;
   /**
-   * <code>string gmtCreate = 4;</code>
-   * @return The gmtCreate.
+   * <code>repeated .GetVideoFeatureInfo video_feature_info = 2;</code>
    */
   @java.lang.Override
-  public java.lang.String getGmtCreate() {
-    java.lang.Object ref = gmtCreate_;
-    if (ref instanceof java.lang.String) {
-      return (java.lang.String) ref;
-    } else {
-      com.google.protobuf.ByteString bs = 
-          (com.google.protobuf.ByteString) ref;
-      java.lang.String s = bs.toStringUtf8();
-      gmtCreate_ = s;
-      return s;
-    }
-  }
-  /**
-   * <code>string gmtCreate = 4;</code>
-   * @return The bytes for gmtCreate.
-   */
-  @java.lang.Override
-  public com.google.protobuf.ByteString
-      getGmtCreateBytes() {
-    java.lang.Object ref = gmtCreate_;
-    if (ref instanceof java.lang.String) {
-      com.google.protobuf.ByteString b = 
-          com.google.protobuf.ByteString.copyFromUtf8(
-              (java.lang.String) ref);
-      gmtCreate_ = b;
-      return b;
-    } else {
-      return (com.google.protobuf.ByteString) ref;
-    }
+  public java.util.List<com.tzld.piaoquan.recommend.feature.model.feature.GetVideoFeatureInfo> getVideoFeatureInfoList() {
+    return videoFeatureInfo_;
   }
-
-  public static final int UID_FIELD_NUMBER = 5;
-  private long uid_;
   /**
-   * <pre>
-   * 上传者
-   * </pre>
-   *
-   * <code>int64 uid = 5;</code>
-   * @return The uid.
+   * <code>repeated .GetVideoFeatureInfo video_feature_info = 2;</code>
    */
   @java.lang.Override
-  public long getUid() {
-    return uid_;
+  public java.util.List<? extends com.tzld.piaoquan.recommend.feature.model.feature.GetVideoFeatureInfoOrBuilder> 
+      getVideoFeatureInfoOrBuilderList() {
+    return videoFeatureInfo_;
   }
-
-  public static final int I15MINEXPCNT_FIELD_NUMBER = 6;
-  private long i15MinExpCnt_;
   /**
-   * <pre>
-   * 过去十五分钟
-   * </pre>
-   *
-   * <code>int64 i15minExpCnt = 6;</code>
-   * @return The i15minExpCnt.
+   * <code>repeated .GetVideoFeatureInfo video_feature_info = 2;</code>
    */
   @java.lang.Override
-  public long getI15MinExpCnt() {
-    return i15MinExpCnt_;
+  public int getVideoFeatureInfoCount() {
+    return videoFeatureInfo_.size();
   }
-
-  public static final int I15MINCLICKCNT_FIELD_NUMBER = 7;
-  private long i15MinClickCnt_;
   /**
-   * <code>int64 i15minClickCnt = 7;</code>
-   * @return The i15minClickCnt.
+   * <code>repeated .GetVideoFeatureInfo video_feature_info = 2;</code>
    */
   @java.lang.Override
-  public long getI15MinClickCnt() {
-    return i15MinClickCnt_;
+  public com.tzld.piaoquan.recommend.feature.model.feature.GetVideoFeatureInfo getVideoFeatureInfo(int index) {
+    return videoFeatureInfo_.get(index);
   }
-
-  public static final int I15MINSHARECNT_FIELD_NUMBER = 8;
-  private long i15MinShareCnt_;
   /**
-   * <code>int64 i15minShareCnt = 8;</code>
-   * @return The i15minShareCnt.
+   * <code>repeated .GetVideoFeatureInfo video_feature_info = 2;</code>
    */
   @java.lang.Override
-  public long getI15MinShareCnt() {
-    return i15MinShareCnt_;
+  public com.tzld.piaoquan.recommend.feature.model.feature.GetVideoFeatureInfoOrBuilder getVideoFeatureInfoOrBuilder(
+      int index) {
+    return videoFeatureInfo_.get(index);
   }
 
-  public static final int I15MINRETURNCNT_FIELD_NUMBER = 9;
-  private long i15MinReturnCnt_;
-  /**
-   * <code>int64 i15minReturnCnt = 9;</code>
-   * @return The i15minReturnCnt.
-   */
+  private byte memoizedIsInitialized = -1;
   @java.lang.Override
-  public long getI15MinReturnCnt() {
-    return i15MinReturnCnt_;
-  }
+  public final boolean isInitialized() {
+    byte isInitialized = memoizedIsInitialized;
+    if (isInitialized == 1) return true;
+    if (isInitialized == 0) return false;
 
-  public static final int ICTR15MIN_FIELD_NUMBER = 10;
-  private double iCtr15Min_;
-  /**
-   * <code>double iCtr15min = 10;</code>
-   * @return The iCtr15min.
-   */
-  @java.lang.Override
-  public double getICtr15Min() {
-    return iCtr15Min_;
+    memoizedIsInitialized = 1;
+    return true;
   }
 
-  public static final int ISTR15MIN_FIELD_NUMBER = 11;
-  private double iStr15Min_;
-  /**
-   * <code>double iStr15min = 11;</code>
-   * @return The iStr15min.
-   */
   @java.lang.Override
-  public double getIStr15Min() {
-    return iStr15Min_;
+  public void writeTo(com.google.protobuf.CodedOutputStream output)
+                      throws java.io.IOException {
+    if (result_ != null) {
+      output.writeMessage(1, getResult());
+    }
+    for (int i = 0; i < videoFeatureInfo_.size(); i++) {
+      output.writeMessage(2, videoFeatureInfo_.get(i));
+    }
+    unknownFields.writeTo(output);
   }
 
-  public static final int IROV15MIN_FIELD_NUMBER = 12;
-  private double iRov15Min_;
-  /**
-   * <code>double iRov15min = 12;</code>
-   * @return The iRov15min.
-   */
   @java.lang.Override
-  public double getIRov15Min() {
-    return iRov15Min_;
-  }
+  public int getSerializedSize() {
+    int size = memoizedSize;
+    if (size != -1) return size;
 
-  public static final int IROS15MIN_FIELD_NUMBER = 13;
-  private double iRos15Min_;
-  /**
-   * <code>double iRos15min = 13;</code>
-   * @return The iRos15min.
-   */
-  @java.lang.Override
-  public double getIRos15Min() {
-    return iRos15Min_;
+    size = 0;
+    if (result_ != null) {
+      size += com.google.protobuf.CodedOutputStream
+        .computeMessageSize(1, getResult());
+    }
+    for (int i = 0; i < videoFeatureInfo_.size(); i++) {
+      size += com.google.protobuf.CodedOutputStream
+        .computeMessageSize(2, videoFeatureInfo_.get(i));
+    }
+    size += unknownFields.getSerializedSize();
+    memoizedSize = size;
+    return size;
   }
 
-  public static final int I1HOUREXPCNT_FIELD_NUMBER = 14;
-  private long i1HourExpCnt_;
-  /**
-   * <pre>
-   * 过去一小时
-   * </pre>
-   *
-   * <code>int64 i1hourExpCnt = 14;</code>
-   * @return The i1hourExpCnt.
-   */
   @java.lang.Override
-  public long getI1HourExpCnt() {
-    return i1HourExpCnt_;
-  }
+  public boolean equals(final java.lang.Object obj) {
+    if (obj == this) {
+     return true;
+    }
+    if (!(obj instanceof com.tzld.piaoquan.recommend.feature.model.feature.GetVideoFeatureInfoResponse)) {
+      return super.equals(obj);
+    }
+    com.tzld.piaoquan.recommend.feature.model.feature.GetVideoFeatureInfoResponse other = (com.tzld.piaoquan.recommend.feature.model.feature.GetVideoFeatureInfoResponse) obj;
 
-  public static final int I1HOURCLICKCNT_FIELD_NUMBER = 15;
-  private long i1HourClickCnt_;
-  /**
-   * <code>int64 i1hourClickCnt = 15;</code>
-   * @return The i1hourClickCnt.
-   */
-  @java.lang.Override
-  public long getI1HourClickCnt() {
-    return i1HourClickCnt_;
+    if (hasResult() != other.hasResult()) return false;
+    if (hasResult()) {
+      if (!getResult()
+          .equals(other.getResult())) return false;
+    }
+    if (!getVideoFeatureInfoList()
+        .equals(other.getVideoFeatureInfoList())) return false;
+    if (!unknownFields.equals(other.unknownFields)) return false;
+    return true;
   }
 
-  public static final int I1HOURSHARECNT_FIELD_NUMBER = 16;
-  private long i1HourShareCnt_;
-  /**
-   * <code>int64 i1hourShareCnt = 16;</code>
-   * @return The i1hourShareCnt.
-   */
   @java.lang.Override
-  public long getI1HourShareCnt() {
-    return i1HourShareCnt_;
+  public int hashCode() {
+    if (memoizedHashCode != 0) {
+      return memoizedHashCode;
+    }
+    int hash = 41;
+    hash = (19 * hash) + getDescriptor().hashCode();
+    if (hasResult()) {
+      hash = (37 * hash) + RESULT_FIELD_NUMBER;
+      hash = (53 * hash) + getResult().hashCode();
+    }
+    if (getVideoFeatureInfoCount() > 0) {
+      hash = (37 * hash) + VIDEO_FEATURE_INFO_FIELD_NUMBER;
+      hash = (53 * hash) + getVideoFeatureInfoList().hashCode();
+    }
+    hash = (29 * hash) + unknownFields.hashCode();
+    memoizedHashCode = hash;
+    return hash;
   }
 
-  public static final int I1HOURRETURNCNT_FIELD_NUMBER = 17;
-  private long i1HourReturnCnt_;
-  /**
-   * <code>int64 i1hourReturnCnt = 17;</code>
-   * @return The i1hourReturnCnt.
-   */
-  @java.lang.Override
-  public long getI1HourReturnCnt() {
-    return i1HourReturnCnt_;
+  public static com.tzld.piaoquan.recommend.feature.model.feature.GetVideoFeatureInfoResponse parseFrom(
+      java.nio.ByteBuffer data)
+      throws com.google.protobuf.InvalidProtocolBufferException {
+    return PARSER.parseFrom(data);
   }
-
-  public static final int ICTR1HOUR_FIELD_NUMBER = 18;
-  private double iCtr1Hour_;
-  /**
-   * <code>double iCtr1hour = 18;</code>
-   * @return The iCtr1hour.
-   */
-  @java.lang.Override
-  public double getICtr1Hour() {
-    return iCtr1Hour_;
+  public static com.tzld.piaoquan.recommend.feature.model.feature.GetVideoFeatureInfoResponse parseFrom(
+      java.nio.ByteBuffer data,
+      com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+      throws com.google.protobuf.InvalidProtocolBufferException {
+    return PARSER.parseFrom(data, extensionRegistry);
   }
-
-  public static final int ISTR1HOUR_FIELD_NUMBER = 19;
-  private double iStr1Hour_;
-  /**
-   * <code>double iStr1hour = 19;</code>
-   * @return The iStr1hour.
-   */
-  @java.lang.Override
-  public double getIStr1Hour() {
-    return iStr1Hour_;
+  public static com.tzld.piaoquan.recommend.feature.model.feature.GetVideoFeatureInfoResponse parseFrom(
+      com.google.protobuf.ByteString data)
+      throws com.google.protobuf.InvalidProtocolBufferException {
+    return PARSER.parseFrom(data);
   }
-
-  public static final int IROV1HOUR_FIELD_NUMBER = 20;
-  private double iRov1Hour_;
-  /**
-   * <code>double iRov1hour = 20;</code>
-   * @return The iRov1hour.
-   */
-  @java.lang.Override
-  public double getIRov1Hour() {
-    return iRov1Hour_;
+  public static com.tzld.piaoquan.recommend.feature.model.feature.GetVideoFeatureInfoResponse parseFrom(
+      com.google.protobuf.ByteString data,
+      com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+      throws com.google.protobuf.InvalidProtocolBufferException {
+    return PARSER.parseFrom(data, extensionRegistry);
   }
-
-  public static final int IROS1HOUR_FIELD_NUMBER = 21;
-  private double iRos1Hour_;
-  /**
-   * <code>double iRos1hour = 21;</code>
-   * @return The iRos1hour.
-   */
-  @java.lang.Override
-  public double getIRos1Hour() {
-    return iRos1Hour_;
+  public static com.tzld.piaoquan.recommend.feature.model.feature.GetVideoFeatureInfoResponse parseFrom(byte[] data)
+      throws com.google.protobuf.InvalidProtocolBufferException {
+    return PARSER.parseFrom(data);
   }
-
-  public static final int ITODAYEXPCNT_FIELD_NUMBER = 22;
-  private long iTodayExpCnt_;
-  /**
-   * <pre>
-   * 今天
-   * </pre>
-   *
-   * <code>int64 iTodayExpCnt = 22;</code>
-   * @return The iTodayExpCnt.
-   */
-  @java.lang.Override
-  public long getITodayExpCnt() {
-    return iTodayExpCnt_;
-  }
-
-  public static final int ITODAYCLICKCNT_FIELD_NUMBER = 23;
-  private long iTodayClickCnt_;
-  /**
-   * <code>int64 iTodayClickCnt = 23;</code>
-   * @return The iTodayClickCnt.
-   */
-  @java.lang.Override
-  public long getITodayClickCnt() {
-    return iTodayClickCnt_;
-  }
-
-  public static final int ITODAYSHARECNT_FIELD_NUMBER = 24;
-  private long iTodayShareCnt_;
-  /**
-   * <code>int64 iTodayShareCnt = 24;</code>
-   * @return The iTodayShareCnt.
-   */
-  @java.lang.Override
-  public long getITodayShareCnt() {
-    return iTodayShareCnt_;
-  }
-
-  public static final int ITODAYRETURNCNT_FIELD_NUMBER = 25;
-  private long iTodayReturnCnt_;
-  /**
-   * <code>int64 iTodayReturnCnt = 25;</code>
-   * @return The iTodayReturnCnt.
-   */
-  @java.lang.Override
-  public long getITodayReturnCnt() {
-    return iTodayReturnCnt_;
-  }
-
-  public static final int ICTRTODAY_FIELD_NUMBER = 26;
-  private double iCtrToday_;
-  /**
-   * <code>double iCtrToday = 26;</code>
-   * @return The iCtrToday.
-   */
-  @java.lang.Override
-  public double getICtrToday() {
-    return iCtrToday_;
-  }
-
-  public static final int ISTRTODAY_FIELD_NUMBER = 27;
-  private double iStrToday_;
-  /**
-   * <code>double iStrToday = 27;</code>
-   * @return The iStrToday.
-   */
-  @java.lang.Override
-  public double getIStrToday() {
-    return iStrToday_;
-  }
-
-  public static final int IROVTODAY_FIELD_NUMBER = 28;
-  private double iRovToday_;
-  /**
-   * <code>double iRovToday = 28;</code>
-   * @return The iRovToday.
-   */
-  @java.lang.Override
-  public double getIRovToday() {
-    return iRovToday_;
-  }
-
-  public static final int IROSTODAY_FIELD_NUMBER = 29;
-  private double iRosToday_;
-  /**
-   * <code>double iRosToday = 29;</code>
-   * @return The iRosToday.
-   */
-  @java.lang.Override
-  public double getIRosToday() {
-    return iRosToday_;
-  }
-
-  public static final int I1DAYEXPCNT_FIELD_NUMBER = 30;
-  private long i1DayExpCnt_;
-  /**
-   * <pre>
-   * 过去一天
-   * </pre>
-   *
-   * <code>int64 i1dayExpCnt = 30;</code>
-   * @return The i1dayExpCnt.
-   */
-  @java.lang.Override
-  public long getI1DayExpCnt() {
-    return i1DayExpCnt_;
-  }
-
-  public static final int I1DAYCLICKCNT_FIELD_NUMBER = 31;
-  private long i1DayClickCnt_;
-  /**
-   * <code>int64 i1dayClickCnt = 31;</code>
-   * @return The i1dayClickCnt.
-   */
-  @java.lang.Override
-  public long getI1DayClickCnt() {
-    return i1DayClickCnt_;
-  }
-
-  public static final int I1DAYSHARECNT_FIELD_NUMBER = 32;
-  private long i1DayShareCnt_;
-  /**
-   * <code>int64 i1dayShareCnt = 32;</code>
-   * @return The i1dayShareCnt.
-   */
-  @java.lang.Override
-  public long getI1DayShareCnt() {
-    return i1DayShareCnt_;
-  }
-
-  public static final int I1DAYRETURNCNT_FIELD_NUMBER = 33;
-  private long i1DayReturnCnt_;
-  /**
-   * <code>int64 i1dayReturnCnt = 33;</code>
-   * @return The i1dayReturnCnt.
-   */
-  @java.lang.Override
-  public long getI1DayReturnCnt() {
-    return i1DayReturnCnt_;
-  }
-
-  public static final int ICTR1DAY_FIELD_NUMBER = 34;
-  private double iCtr1Day_;
-  /**
-   * <code>double iCtr1day = 34;</code>
-   * @return The iCtr1day.
-   */
-  @java.lang.Override
-  public double getICtr1Day() {
-    return iCtr1Day_;
+  public static com.tzld.piaoquan.recommend.feature.model.feature.GetVideoFeatureInfoResponse parseFrom(
+      byte[] data,
+      com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+      throws com.google.protobuf.InvalidProtocolBufferException {
+    return PARSER.parseFrom(data, extensionRegistry);
   }
-
-  public static final int ISTR1DAY_FIELD_NUMBER = 35;
-  private double iStr1Day_;
-  /**
-   * <code>double iStr1day = 35;</code>
-   * @return The iStr1day.
-   */
-  @java.lang.Override
-  public double getIStr1Day() {
-    return iStr1Day_;
+  public static com.tzld.piaoquan.recommend.feature.model.feature.GetVideoFeatureInfoResponse parseFrom(java.io.InputStream input)
+      throws java.io.IOException {
+    return com.google.protobuf.GeneratedMessageV3
+        .parseWithIOException(PARSER, input);
   }
-
-  public static final int IROV1DAY_FIELD_NUMBER = 36;
-  private double iRov1Day_;
-  /**
-   * <code>double iRov1day = 36;</code>
-   * @return The iRov1day.
-   */
-  @java.lang.Override
-  public double getIRov1Day() {
-    return iRov1Day_;
+  public static com.tzld.piaoquan.recommend.feature.model.feature.GetVideoFeatureInfoResponse parseFrom(
+      java.io.InputStream input,
+      com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+      throws java.io.IOException {
+    return com.google.protobuf.GeneratedMessageV3
+        .parseWithIOException(PARSER, input, extensionRegistry);
   }
-
-  public static final int IROS1DAY_FIELD_NUMBER = 37;
-  private double iRos1Day_;
-  /**
-   * <code>double iRos1day = 37;</code>
-   * @return The iRos1day.
-   */
-  @java.lang.Override
-  public double getIRos1Day() {
-    return iRos1Day_;
+  public static com.tzld.piaoquan.recommend.feature.model.feature.GetVideoFeatureInfoResponse parseDelimitedFrom(java.io.InputStream input)
+      throws java.io.IOException {
+    return com.google.protobuf.GeneratedMessageV3
+        .parseDelimitedWithIOException(PARSER, input);
   }
-
-  public static final int I3DAYEXPCNT_FIELD_NUMBER = 38;
-  private long i3DayExpCnt_;
-  /**
-   * <pre>
-   * 过去三天
-   * </pre>
-   *
-   * <code>int64 i3dayExpCnt = 38;</code>
-   * @return The i3dayExpCnt.
-   */
-  @java.lang.Override
-  public long getI3DayExpCnt() {
-    return i3DayExpCnt_;
+  public static com.tzld.piaoquan.recommend.feature.model.feature.GetVideoFeatureInfoResponse parseDelimitedFrom(
+      java.io.InputStream input,
+      com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+      throws java.io.IOException {
+    return com.google.protobuf.GeneratedMessageV3
+        .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
   }
-
-  public static final int I3DAYCLICKCNT_FIELD_NUMBER = 39;
-  private long i3DayClickCnt_;
-  /**
-   * <code>int64 i3dayClickCnt = 39;</code>
-   * @return The i3dayClickCnt.
-   */
-  @java.lang.Override
-  public long getI3DayClickCnt() {
-    return i3DayClickCnt_;
+  public static com.tzld.piaoquan.recommend.feature.model.feature.GetVideoFeatureInfoResponse parseFrom(
+      com.google.protobuf.CodedInputStream input)
+      throws java.io.IOException {
+    return com.google.protobuf.GeneratedMessageV3
+        .parseWithIOException(PARSER, input);
   }
-
-  public static final int I3DAYSHARECNT_FIELD_NUMBER = 40;
-  private long i3DayShareCnt_;
-  /**
-   * <code>int64 i3dayShareCnt = 40;</code>
-   * @return The i3dayShareCnt.
-   */
-  @java.lang.Override
-  public long getI3DayShareCnt() {
-    return i3DayShareCnt_;
+  public static com.tzld.piaoquan.recommend.feature.model.feature.GetVideoFeatureInfoResponse parseFrom(
+      com.google.protobuf.CodedInputStream input,
+      com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+      throws java.io.IOException {
+    return com.google.protobuf.GeneratedMessageV3
+        .parseWithIOException(PARSER, input, extensionRegistry);
   }
 
-  public static final int I3DAYRETURNCNT_FIELD_NUMBER = 41;
-  private long i3DayReturnCnt_;
-  /**
-   * <code>int64 i3dayReturnCnt = 41;</code>
-   * @return The i3dayReturnCnt.
-   */
   @java.lang.Override
-  public long getI3DayReturnCnt() {
-    return i3DayReturnCnt_;
+  public Builder newBuilderForType() { return newBuilder(); }
+  public static Builder newBuilder() {
+    return DEFAULT_INSTANCE.toBuilder();
   }
-
-  public static final int ICTR3DAY_FIELD_NUMBER = 42;
-  private double iCtr3Day_;
-  /**
-   * <code>double iCtr3day = 42;</code>
-   * @return The iCtr3day.
-   */
-  @java.lang.Override
-  public double getICtr3Day() {
-    return iCtr3Day_;
+  public static Builder newBuilder(com.tzld.piaoquan.recommend.feature.model.feature.GetVideoFeatureInfoResponse prototype) {
+    return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
   }
-
-  public static final int ISTR3DAY_FIELD_NUMBER = 43;
-  private double iStr3Day_;
-  /**
-   * <code>double iStr3day = 43;</code>
-   * @return The iStr3day.
-   */
   @java.lang.Override
-  public double getIStr3Day() {
-    return iStr3Day_;
+  public Builder toBuilder() {
+    return this == DEFAULT_INSTANCE
+        ? new Builder() : new Builder().mergeFrom(this);
   }
 
-  public static final int IROV3DAY_FIELD_NUMBER = 44;
-  private double iRov3Day_;
-  /**
-   * <code>double iRov3day = 44;</code>
-   * @return The iRov3day.
-   */
   @java.lang.Override
-  public double getIRov3Day() {
-    return iRov3Day_;
+  protected Builder newBuilderForType(
+      com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
+    Builder builder = new Builder(parent);
+    return builder;
   }
-
-  public static final int IROS3DAY_FIELD_NUMBER = 45;
-  private double iRos3Day_;
   /**
-   * <code>double iRos3day = 45;</code>
-   * @return The iRos3day.
+   * Protobuf type {@code GetVideoFeatureInfoResponse}
    */
-  @java.lang.Override
-  public double getIRos3Day() {
-    return iRos3Day_;
-  }
-
-  private byte memoizedIsInitialized = -1;
-  @java.lang.Override
-  public final boolean isInitialized() {
-    byte isInitialized = memoizedIsInitialized;
-    if (isInitialized == 1) return true;
-    if (isInitialized == 0) return false;
-
-    memoizedIsInitialized = 1;
-    return true;
-  }
-
-  @java.lang.Override
-  public void writeTo(com.google.protobuf.CodedOutputStream output)
-                      throws java.io.IOException {
-    if (videoId_ != 0L) {
-      output.writeInt64(1, videoId_);
-    }
-    if (playCountTotal_ != 0L) {
-      output.writeInt64(2, playCountTotal_);
-    }
-    if (totalTime_ != 0) {
-      output.writeInt32(3, totalTime_);
-    }
-    if (!getGmtCreateBytes().isEmpty()) {
-      com.google.protobuf.GeneratedMessageV3.writeString(output, 4, gmtCreate_);
-    }
-    if (uid_ != 0L) {
-      output.writeInt64(5, uid_);
-    }
-    if (i15MinExpCnt_ != 0L) {
-      output.writeInt64(6, i15MinExpCnt_);
-    }
-    if (i15MinClickCnt_ != 0L) {
-      output.writeInt64(7, i15MinClickCnt_);
-    }
-    if (i15MinShareCnt_ != 0L) {
-      output.writeInt64(8, i15MinShareCnt_);
-    }
-    if (i15MinReturnCnt_ != 0L) {
-      output.writeInt64(9, i15MinReturnCnt_);
-    }
-    if (iCtr15Min_ != 0D) {
-      output.writeDouble(10, iCtr15Min_);
-    }
-    if (iStr15Min_ != 0D) {
-      output.writeDouble(11, iStr15Min_);
-    }
-    if (iRov15Min_ != 0D) {
-      output.writeDouble(12, iRov15Min_);
-    }
-    if (iRos15Min_ != 0D) {
-      output.writeDouble(13, iRos15Min_);
-    }
-    if (i1HourExpCnt_ != 0L) {
-      output.writeInt64(14, i1HourExpCnt_);
-    }
-    if (i1HourClickCnt_ != 0L) {
-      output.writeInt64(15, i1HourClickCnt_);
-    }
-    if (i1HourShareCnt_ != 0L) {
-      output.writeInt64(16, i1HourShareCnt_);
-    }
-    if (i1HourReturnCnt_ != 0L) {
-      output.writeInt64(17, i1HourReturnCnt_);
-    }
-    if (iCtr1Hour_ != 0D) {
-      output.writeDouble(18, iCtr1Hour_);
-    }
-    if (iStr1Hour_ != 0D) {
-      output.writeDouble(19, iStr1Hour_);
-    }
-    if (iRov1Hour_ != 0D) {
-      output.writeDouble(20, iRov1Hour_);
-    }
-    if (iRos1Hour_ != 0D) {
-      output.writeDouble(21, iRos1Hour_);
-    }
-    if (iTodayExpCnt_ != 0L) {
-      output.writeInt64(22, iTodayExpCnt_);
-    }
-    if (iTodayClickCnt_ != 0L) {
-      output.writeInt64(23, iTodayClickCnt_);
-    }
-    if (iTodayShareCnt_ != 0L) {
-      output.writeInt64(24, iTodayShareCnt_);
-    }
-    if (iTodayReturnCnt_ != 0L) {
-      output.writeInt64(25, iTodayReturnCnt_);
-    }
-    if (iCtrToday_ != 0D) {
-      output.writeDouble(26, iCtrToday_);
-    }
-    if (iStrToday_ != 0D) {
-      output.writeDouble(27, iStrToday_);
-    }
-    if (iRovToday_ != 0D) {
-      output.writeDouble(28, iRovToday_);
-    }
-    if (iRosToday_ != 0D) {
-      output.writeDouble(29, iRosToday_);
-    }
-    if (i1DayExpCnt_ != 0L) {
-      output.writeInt64(30, i1DayExpCnt_);
-    }
-    if (i1DayClickCnt_ != 0L) {
-      output.writeInt64(31, i1DayClickCnt_);
-    }
-    if (i1DayShareCnt_ != 0L) {
-      output.writeInt64(32, i1DayShareCnt_);
-    }
-    if (i1DayReturnCnt_ != 0L) {
-      output.writeInt64(33, i1DayReturnCnt_);
-    }
-    if (iCtr1Day_ != 0D) {
-      output.writeDouble(34, iCtr1Day_);
-    }
-    if (iStr1Day_ != 0D) {
-      output.writeDouble(35, iStr1Day_);
-    }
-    if (iRov1Day_ != 0D) {
-      output.writeDouble(36, iRov1Day_);
-    }
-    if (iRos1Day_ != 0D) {
-      output.writeDouble(37, iRos1Day_);
+  public static final class Builder extends
+      com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
+      // @@protoc_insertion_point(builder_implements:GetVideoFeatureInfoResponse)
+      com.tzld.piaoquan.recommend.feature.model.feature.GetVideoFeatureInfoResponseOrBuilder {
+    public static final com.google.protobuf.Descriptors.Descriptor
+        getDescriptor() {
+      return com.tzld.piaoquan.recommend.feature.model.feature.Feature.internal_static_GetVideoFeatureInfoResponse_descriptor;
     }
-    if (i3DayExpCnt_ != 0L) {
-      output.writeInt64(38, i3DayExpCnt_);
+
+    @java.lang.Override
+    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
+        internalGetFieldAccessorTable() {
+      return com.tzld.piaoquan.recommend.feature.model.feature.Feature.internal_static_GetVideoFeatureInfoResponse_fieldAccessorTable
+          .ensureFieldAccessorsInitialized(
+              com.tzld.piaoquan.recommend.feature.model.feature.GetVideoFeatureInfoResponse.class, com.tzld.piaoquan.recommend.feature.model.feature.GetVideoFeatureInfoResponse.Builder.class);
     }
-    if (i3DayClickCnt_ != 0L) {
-      output.writeInt64(39, i3DayClickCnt_);
+
+    // Construct using com.tzld.piaoquan.recommend.feature.model.feature.GetVideoFeatureInfoResponse.newBuilder()
+    private Builder() {
+      maybeForceBuilderInitialization();
     }
-    if (i3DayShareCnt_ != 0L) {
-      output.writeInt64(40, i3DayShareCnt_);
+
+    private Builder(
+        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
+      super(parent);
+      maybeForceBuilderInitialization();
     }
-    if (i3DayReturnCnt_ != 0L) {
-      output.writeInt64(41, i3DayReturnCnt_);
+    private void maybeForceBuilderInitialization() {
+      if (com.google.protobuf.GeneratedMessageV3
+              .alwaysUseFieldBuilders) {
+        getVideoFeatureInfoFieldBuilder();
+      }
     }
-    if (iCtr3Day_ != 0D) {
-      output.writeDouble(42, iCtr3Day_);
+    @java.lang.Override
+    public Builder clear() {
+      super.clear();
+      if (resultBuilder_ == null) {
+        result_ = null;
+      } else {
+        result_ = null;
+        resultBuilder_ = null;
+      }
+      if (videoFeatureInfoBuilder_ == null) {
+        videoFeatureInfo_ = java.util.Collections.emptyList();
+        bitField0_ = (bitField0_ & ~0x00000001);
+      } else {
+        videoFeatureInfoBuilder_.clear();
+      }
+      return this;
     }
-    if (iStr3Day_ != 0D) {
-      output.writeDouble(43, iStr3Day_);
+
+    @java.lang.Override
+    public com.google.protobuf.Descriptors.Descriptor
+        getDescriptorForType() {
+      return com.tzld.piaoquan.recommend.feature.model.feature.Feature.internal_static_GetVideoFeatureInfoResponse_descriptor;
     }
-    if (iRov3Day_ != 0D) {
-      output.writeDouble(44, iRov3Day_);
+
+    @java.lang.Override
+    public com.tzld.piaoquan.recommend.feature.model.feature.GetVideoFeatureInfoResponse getDefaultInstanceForType() {
+      return com.tzld.piaoquan.recommend.feature.model.feature.GetVideoFeatureInfoResponse.getDefaultInstance();
     }
-    if (iRos3Day_ != 0D) {
-      output.writeDouble(45, iRos3Day_);
-    }
-    unknownFields.writeTo(output);
-  }
-
-  @java.lang.Override
-  public int getSerializedSize() {
-    int size = memoizedSize;
-    if (size != -1) return size;
-
-    size = 0;
-    if (videoId_ != 0L) {
-      size += com.google.protobuf.CodedOutputStream
-        .computeInt64Size(1, videoId_);
-    }
-    if (playCountTotal_ != 0L) {
-      size += com.google.protobuf.CodedOutputStream
-        .computeInt64Size(2, playCountTotal_);
-    }
-    if (totalTime_ != 0) {
-      size += com.google.protobuf.CodedOutputStream
-        .computeInt32Size(3, totalTime_);
-    }
-    if (!getGmtCreateBytes().isEmpty()) {
-      size += com.google.protobuf.GeneratedMessageV3.computeStringSize(4, gmtCreate_);
-    }
-    if (uid_ != 0L) {
-      size += com.google.protobuf.CodedOutputStream
-        .computeInt64Size(5, uid_);
-    }
-    if (i15MinExpCnt_ != 0L) {
-      size += com.google.protobuf.CodedOutputStream
-        .computeInt64Size(6, i15MinExpCnt_);
-    }
-    if (i15MinClickCnt_ != 0L) {
-      size += com.google.protobuf.CodedOutputStream
-        .computeInt64Size(7, i15MinClickCnt_);
-    }
-    if (i15MinShareCnt_ != 0L) {
-      size += com.google.protobuf.CodedOutputStream
-        .computeInt64Size(8, i15MinShareCnt_);
-    }
-    if (i15MinReturnCnt_ != 0L) {
-      size += com.google.protobuf.CodedOutputStream
-        .computeInt64Size(9, i15MinReturnCnt_);
-    }
-    if (iCtr15Min_ != 0D) {
-      size += com.google.protobuf.CodedOutputStream
-        .computeDoubleSize(10, iCtr15Min_);
-    }
-    if (iStr15Min_ != 0D) {
-      size += com.google.protobuf.CodedOutputStream
-        .computeDoubleSize(11, iStr15Min_);
-    }
-    if (iRov15Min_ != 0D) {
-      size += com.google.protobuf.CodedOutputStream
-        .computeDoubleSize(12, iRov15Min_);
-    }
-    if (iRos15Min_ != 0D) {
-      size += com.google.protobuf.CodedOutputStream
-        .computeDoubleSize(13, iRos15Min_);
-    }
-    if (i1HourExpCnt_ != 0L) {
-      size += com.google.protobuf.CodedOutputStream
-        .computeInt64Size(14, i1HourExpCnt_);
-    }
-    if (i1HourClickCnt_ != 0L) {
-      size += com.google.protobuf.CodedOutputStream
-        .computeInt64Size(15, i1HourClickCnt_);
-    }
-    if (i1HourShareCnt_ != 0L) {
-      size += com.google.protobuf.CodedOutputStream
-        .computeInt64Size(16, i1HourShareCnt_);
-    }
-    if (i1HourReturnCnt_ != 0L) {
-      size += com.google.protobuf.CodedOutputStream
-        .computeInt64Size(17, i1HourReturnCnt_);
-    }
-    if (iCtr1Hour_ != 0D) {
-      size += com.google.protobuf.CodedOutputStream
-        .computeDoubleSize(18, iCtr1Hour_);
-    }
-    if (iStr1Hour_ != 0D) {
-      size += com.google.protobuf.CodedOutputStream
-        .computeDoubleSize(19, iStr1Hour_);
-    }
-    if (iRov1Hour_ != 0D) {
-      size += com.google.protobuf.CodedOutputStream
-        .computeDoubleSize(20, iRov1Hour_);
-    }
-    if (iRos1Hour_ != 0D) {
-      size += com.google.protobuf.CodedOutputStream
-        .computeDoubleSize(21, iRos1Hour_);
-    }
-    if (iTodayExpCnt_ != 0L) {
-      size += com.google.protobuf.CodedOutputStream
-        .computeInt64Size(22, iTodayExpCnt_);
-    }
-    if (iTodayClickCnt_ != 0L) {
-      size += com.google.protobuf.CodedOutputStream
-        .computeInt64Size(23, iTodayClickCnt_);
-    }
-    if (iTodayShareCnt_ != 0L) {
-      size += com.google.protobuf.CodedOutputStream
-        .computeInt64Size(24, iTodayShareCnt_);
-    }
-    if (iTodayReturnCnt_ != 0L) {
-      size += com.google.protobuf.CodedOutputStream
-        .computeInt64Size(25, iTodayReturnCnt_);
-    }
-    if (iCtrToday_ != 0D) {
-      size += com.google.protobuf.CodedOutputStream
-        .computeDoubleSize(26, iCtrToday_);
-    }
-    if (iStrToday_ != 0D) {
-      size += com.google.protobuf.CodedOutputStream
-        .computeDoubleSize(27, iStrToday_);
-    }
-    if (iRovToday_ != 0D) {
-      size += com.google.protobuf.CodedOutputStream
-        .computeDoubleSize(28, iRovToday_);
-    }
-    if (iRosToday_ != 0D) {
-      size += com.google.protobuf.CodedOutputStream
-        .computeDoubleSize(29, iRosToday_);
-    }
-    if (i1DayExpCnt_ != 0L) {
-      size += com.google.protobuf.CodedOutputStream
-        .computeInt64Size(30, i1DayExpCnt_);
-    }
-    if (i1DayClickCnt_ != 0L) {
-      size += com.google.protobuf.CodedOutputStream
-        .computeInt64Size(31, i1DayClickCnt_);
-    }
-    if (i1DayShareCnt_ != 0L) {
-      size += com.google.protobuf.CodedOutputStream
-        .computeInt64Size(32, i1DayShareCnt_);
-    }
-    if (i1DayReturnCnt_ != 0L) {
-      size += com.google.protobuf.CodedOutputStream
-        .computeInt64Size(33, i1DayReturnCnt_);
-    }
-    if (iCtr1Day_ != 0D) {
-      size += com.google.protobuf.CodedOutputStream
-        .computeDoubleSize(34, iCtr1Day_);
-    }
-    if (iStr1Day_ != 0D) {
-      size += com.google.protobuf.CodedOutputStream
-        .computeDoubleSize(35, iStr1Day_);
-    }
-    if (iRov1Day_ != 0D) {
-      size += com.google.protobuf.CodedOutputStream
-        .computeDoubleSize(36, iRov1Day_);
-    }
-    if (iRos1Day_ != 0D) {
-      size += com.google.protobuf.CodedOutputStream
-        .computeDoubleSize(37, iRos1Day_);
-    }
-    if (i3DayExpCnt_ != 0L) {
-      size += com.google.protobuf.CodedOutputStream
-        .computeInt64Size(38, i3DayExpCnt_);
-    }
-    if (i3DayClickCnt_ != 0L) {
-      size += com.google.protobuf.CodedOutputStream
-        .computeInt64Size(39, i3DayClickCnt_);
-    }
-    if (i3DayShareCnt_ != 0L) {
-      size += com.google.protobuf.CodedOutputStream
-        .computeInt64Size(40, i3DayShareCnt_);
-    }
-    if (i3DayReturnCnt_ != 0L) {
-      size += com.google.protobuf.CodedOutputStream
-        .computeInt64Size(41, i3DayReturnCnt_);
-    }
-    if (iCtr3Day_ != 0D) {
-      size += com.google.protobuf.CodedOutputStream
-        .computeDoubleSize(42, iCtr3Day_);
-    }
-    if (iStr3Day_ != 0D) {
-      size += com.google.protobuf.CodedOutputStream
-        .computeDoubleSize(43, iStr3Day_);
-    }
-    if (iRov3Day_ != 0D) {
-      size += com.google.protobuf.CodedOutputStream
-        .computeDoubleSize(44, iRov3Day_);
-    }
-    if (iRos3Day_ != 0D) {
-      size += com.google.protobuf.CodedOutputStream
-        .computeDoubleSize(45, iRos3Day_);
-    }
-    size += unknownFields.getSerializedSize();
-    memoizedSize = size;
-    return size;
-  }
-
-  @java.lang.Override
-  public boolean equals(final java.lang.Object obj) {
-    if (obj == this) {
-     return true;
-    }
-    if (!(obj instanceof com.tzld.piaoquan.recommend.feature.model.feature.GetVideoFeatureInfoResponse)) {
-      return super.equals(obj);
-    }
-    com.tzld.piaoquan.recommend.feature.model.feature.GetVideoFeatureInfoResponse other = (com.tzld.piaoquan.recommend.feature.model.feature.GetVideoFeatureInfoResponse) obj;
-
-    if (getVideoId()
-        != other.getVideoId()) return false;
-    if (getPlayCountTotal()
-        != other.getPlayCountTotal()) return false;
-    if (getTotalTime()
-        != other.getTotalTime()) return false;
-    if (!getGmtCreate()
-        .equals(other.getGmtCreate())) return false;
-    if (getUid()
-        != other.getUid()) return false;
-    if (getI15MinExpCnt()
-        != other.getI15MinExpCnt()) return false;
-    if (getI15MinClickCnt()
-        != other.getI15MinClickCnt()) return false;
-    if (getI15MinShareCnt()
-        != other.getI15MinShareCnt()) return false;
-    if (getI15MinReturnCnt()
-        != other.getI15MinReturnCnt()) return false;
-    if (java.lang.Double.doubleToLongBits(getICtr15Min())
-        != java.lang.Double.doubleToLongBits(
-            other.getICtr15Min())) return false;
-    if (java.lang.Double.doubleToLongBits(getIStr15Min())
-        != java.lang.Double.doubleToLongBits(
-            other.getIStr15Min())) return false;
-    if (java.lang.Double.doubleToLongBits(getIRov15Min())
-        != java.lang.Double.doubleToLongBits(
-            other.getIRov15Min())) return false;
-    if (java.lang.Double.doubleToLongBits(getIRos15Min())
-        != java.lang.Double.doubleToLongBits(
-            other.getIRos15Min())) return false;
-    if (getI1HourExpCnt()
-        != other.getI1HourExpCnt()) return false;
-    if (getI1HourClickCnt()
-        != other.getI1HourClickCnt()) return false;
-    if (getI1HourShareCnt()
-        != other.getI1HourShareCnt()) return false;
-    if (getI1HourReturnCnt()
-        != other.getI1HourReturnCnt()) return false;
-    if (java.lang.Double.doubleToLongBits(getICtr1Hour())
-        != java.lang.Double.doubleToLongBits(
-            other.getICtr1Hour())) return false;
-    if (java.lang.Double.doubleToLongBits(getIStr1Hour())
-        != java.lang.Double.doubleToLongBits(
-            other.getIStr1Hour())) return false;
-    if (java.lang.Double.doubleToLongBits(getIRov1Hour())
-        != java.lang.Double.doubleToLongBits(
-            other.getIRov1Hour())) return false;
-    if (java.lang.Double.doubleToLongBits(getIRos1Hour())
-        != java.lang.Double.doubleToLongBits(
-            other.getIRos1Hour())) return false;
-    if (getITodayExpCnt()
-        != other.getITodayExpCnt()) return false;
-    if (getITodayClickCnt()
-        != other.getITodayClickCnt()) return false;
-    if (getITodayShareCnt()
-        != other.getITodayShareCnt()) return false;
-    if (getITodayReturnCnt()
-        != other.getITodayReturnCnt()) return false;
-    if (java.lang.Double.doubleToLongBits(getICtrToday())
-        != java.lang.Double.doubleToLongBits(
-            other.getICtrToday())) return false;
-    if (java.lang.Double.doubleToLongBits(getIStrToday())
-        != java.lang.Double.doubleToLongBits(
-            other.getIStrToday())) return false;
-    if (java.lang.Double.doubleToLongBits(getIRovToday())
-        != java.lang.Double.doubleToLongBits(
-            other.getIRovToday())) return false;
-    if (java.lang.Double.doubleToLongBits(getIRosToday())
-        != java.lang.Double.doubleToLongBits(
-            other.getIRosToday())) return false;
-    if (getI1DayExpCnt()
-        != other.getI1DayExpCnt()) return false;
-    if (getI1DayClickCnt()
-        != other.getI1DayClickCnt()) return false;
-    if (getI1DayShareCnt()
-        != other.getI1DayShareCnt()) return false;
-    if (getI1DayReturnCnt()
-        != other.getI1DayReturnCnt()) return false;
-    if (java.lang.Double.doubleToLongBits(getICtr1Day())
-        != java.lang.Double.doubleToLongBits(
-            other.getICtr1Day())) return false;
-    if (java.lang.Double.doubleToLongBits(getIStr1Day())
-        != java.lang.Double.doubleToLongBits(
-            other.getIStr1Day())) return false;
-    if (java.lang.Double.doubleToLongBits(getIRov1Day())
-        != java.lang.Double.doubleToLongBits(
-            other.getIRov1Day())) return false;
-    if (java.lang.Double.doubleToLongBits(getIRos1Day())
-        != java.lang.Double.doubleToLongBits(
-            other.getIRos1Day())) return false;
-    if (getI3DayExpCnt()
-        != other.getI3DayExpCnt()) return false;
-    if (getI3DayClickCnt()
-        != other.getI3DayClickCnt()) return false;
-    if (getI3DayShareCnt()
-        != other.getI3DayShareCnt()) return false;
-    if (getI3DayReturnCnt()
-        != other.getI3DayReturnCnt()) return false;
-    if (java.lang.Double.doubleToLongBits(getICtr3Day())
-        != java.lang.Double.doubleToLongBits(
-            other.getICtr3Day())) return false;
-    if (java.lang.Double.doubleToLongBits(getIStr3Day())
-        != java.lang.Double.doubleToLongBits(
-            other.getIStr3Day())) return false;
-    if (java.lang.Double.doubleToLongBits(getIRov3Day())
-        != java.lang.Double.doubleToLongBits(
-            other.getIRov3Day())) return false;
-    if (java.lang.Double.doubleToLongBits(getIRos3Day())
-        != java.lang.Double.doubleToLongBits(
-            other.getIRos3Day())) return false;
-    if (!unknownFields.equals(other.unknownFields)) return false;
-    return true;
-  }
-
-  @java.lang.Override
-  public int hashCode() {
-    if (memoizedHashCode != 0) {
-      return memoizedHashCode;
-    }
-    int hash = 41;
-    hash = (19 * hash) + getDescriptor().hashCode();
-    hash = (37 * hash) + VIDEOID_FIELD_NUMBER;
-    hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
-        getVideoId());
-    hash = (37 * hash) + PLAYCOUNTTOTAL_FIELD_NUMBER;
-    hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
-        getPlayCountTotal());
-    hash = (37 * hash) + TOTALTIME_FIELD_NUMBER;
-    hash = (53 * hash) + getTotalTime();
-    hash = (37 * hash) + GMTCREATE_FIELD_NUMBER;
-    hash = (53 * hash) + getGmtCreate().hashCode();
-    hash = (37 * hash) + UID_FIELD_NUMBER;
-    hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
-        getUid());
-    hash = (37 * hash) + I15MINEXPCNT_FIELD_NUMBER;
-    hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
-        getI15MinExpCnt());
-    hash = (37 * hash) + I15MINCLICKCNT_FIELD_NUMBER;
-    hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
-        getI15MinClickCnt());
-    hash = (37 * hash) + I15MINSHARECNT_FIELD_NUMBER;
-    hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
-        getI15MinShareCnt());
-    hash = (37 * hash) + I15MINRETURNCNT_FIELD_NUMBER;
-    hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
-        getI15MinReturnCnt());
-    hash = (37 * hash) + ICTR15MIN_FIELD_NUMBER;
-    hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
-        java.lang.Double.doubleToLongBits(getICtr15Min()));
-    hash = (37 * hash) + ISTR15MIN_FIELD_NUMBER;
-    hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
-        java.lang.Double.doubleToLongBits(getIStr15Min()));
-    hash = (37 * hash) + IROV15MIN_FIELD_NUMBER;
-    hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
-        java.lang.Double.doubleToLongBits(getIRov15Min()));
-    hash = (37 * hash) + IROS15MIN_FIELD_NUMBER;
-    hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
-        java.lang.Double.doubleToLongBits(getIRos15Min()));
-    hash = (37 * hash) + I1HOUREXPCNT_FIELD_NUMBER;
-    hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
-        getI1HourExpCnt());
-    hash = (37 * hash) + I1HOURCLICKCNT_FIELD_NUMBER;
-    hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
-        getI1HourClickCnt());
-    hash = (37 * hash) + I1HOURSHARECNT_FIELD_NUMBER;
-    hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
-        getI1HourShareCnt());
-    hash = (37 * hash) + I1HOURRETURNCNT_FIELD_NUMBER;
-    hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
-        getI1HourReturnCnt());
-    hash = (37 * hash) + ICTR1HOUR_FIELD_NUMBER;
-    hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
-        java.lang.Double.doubleToLongBits(getICtr1Hour()));
-    hash = (37 * hash) + ISTR1HOUR_FIELD_NUMBER;
-    hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
-        java.lang.Double.doubleToLongBits(getIStr1Hour()));
-    hash = (37 * hash) + IROV1HOUR_FIELD_NUMBER;
-    hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
-        java.lang.Double.doubleToLongBits(getIRov1Hour()));
-    hash = (37 * hash) + IROS1HOUR_FIELD_NUMBER;
-    hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
-        java.lang.Double.doubleToLongBits(getIRos1Hour()));
-    hash = (37 * hash) + ITODAYEXPCNT_FIELD_NUMBER;
-    hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
-        getITodayExpCnt());
-    hash = (37 * hash) + ITODAYCLICKCNT_FIELD_NUMBER;
-    hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
-        getITodayClickCnt());
-    hash = (37 * hash) + ITODAYSHARECNT_FIELD_NUMBER;
-    hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
-        getITodayShareCnt());
-    hash = (37 * hash) + ITODAYRETURNCNT_FIELD_NUMBER;
-    hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
-        getITodayReturnCnt());
-    hash = (37 * hash) + ICTRTODAY_FIELD_NUMBER;
-    hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
-        java.lang.Double.doubleToLongBits(getICtrToday()));
-    hash = (37 * hash) + ISTRTODAY_FIELD_NUMBER;
-    hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
-        java.lang.Double.doubleToLongBits(getIStrToday()));
-    hash = (37 * hash) + IROVTODAY_FIELD_NUMBER;
-    hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
-        java.lang.Double.doubleToLongBits(getIRovToday()));
-    hash = (37 * hash) + IROSTODAY_FIELD_NUMBER;
-    hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
-        java.lang.Double.doubleToLongBits(getIRosToday()));
-    hash = (37 * hash) + I1DAYEXPCNT_FIELD_NUMBER;
-    hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
-        getI1DayExpCnt());
-    hash = (37 * hash) + I1DAYCLICKCNT_FIELD_NUMBER;
-    hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
-        getI1DayClickCnt());
-    hash = (37 * hash) + I1DAYSHARECNT_FIELD_NUMBER;
-    hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
-        getI1DayShareCnt());
-    hash = (37 * hash) + I1DAYRETURNCNT_FIELD_NUMBER;
-    hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
-        getI1DayReturnCnt());
-    hash = (37 * hash) + ICTR1DAY_FIELD_NUMBER;
-    hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
-        java.lang.Double.doubleToLongBits(getICtr1Day()));
-    hash = (37 * hash) + ISTR1DAY_FIELD_NUMBER;
-    hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
-        java.lang.Double.doubleToLongBits(getIStr1Day()));
-    hash = (37 * hash) + IROV1DAY_FIELD_NUMBER;
-    hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
-        java.lang.Double.doubleToLongBits(getIRov1Day()));
-    hash = (37 * hash) + IROS1DAY_FIELD_NUMBER;
-    hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
-        java.lang.Double.doubleToLongBits(getIRos1Day()));
-    hash = (37 * hash) + I3DAYEXPCNT_FIELD_NUMBER;
-    hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
-        getI3DayExpCnt());
-    hash = (37 * hash) + I3DAYCLICKCNT_FIELD_NUMBER;
-    hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
-        getI3DayClickCnt());
-    hash = (37 * hash) + I3DAYSHARECNT_FIELD_NUMBER;
-    hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
-        getI3DayShareCnt());
-    hash = (37 * hash) + I3DAYRETURNCNT_FIELD_NUMBER;
-    hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
-        getI3DayReturnCnt());
-    hash = (37 * hash) + ICTR3DAY_FIELD_NUMBER;
-    hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
-        java.lang.Double.doubleToLongBits(getICtr3Day()));
-    hash = (37 * hash) + ISTR3DAY_FIELD_NUMBER;
-    hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
-        java.lang.Double.doubleToLongBits(getIStr3Day()));
-    hash = (37 * hash) + IROV3DAY_FIELD_NUMBER;
-    hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
-        java.lang.Double.doubleToLongBits(getIRov3Day()));
-    hash = (37 * hash) + IROS3DAY_FIELD_NUMBER;
-    hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
-        java.lang.Double.doubleToLongBits(getIRos3Day()));
-    hash = (29 * hash) + unknownFields.hashCode();
-    memoizedHashCode = hash;
-    return hash;
-  }
-
-  public static com.tzld.piaoquan.recommend.feature.model.feature.GetVideoFeatureInfoResponse parseFrom(
-      java.nio.ByteBuffer data)
-      throws com.google.protobuf.InvalidProtocolBufferException {
-    return PARSER.parseFrom(data);
-  }
-  public static com.tzld.piaoquan.recommend.feature.model.feature.GetVideoFeatureInfoResponse parseFrom(
-      java.nio.ByteBuffer data,
-      com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-      throws com.google.protobuf.InvalidProtocolBufferException {
-    return PARSER.parseFrom(data, extensionRegistry);
-  }
-  public static com.tzld.piaoquan.recommend.feature.model.feature.GetVideoFeatureInfoResponse parseFrom(
-      com.google.protobuf.ByteString data)
-      throws com.google.protobuf.InvalidProtocolBufferException {
-    return PARSER.parseFrom(data);
-  }
-  public static com.tzld.piaoquan.recommend.feature.model.feature.GetVideoFeatureInfoResponse parseFrom(
-      com.google.protobuf.ByteString data,
-      com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-      throws com.google.protobuf.InvalidProtocolBufferException {
-    return PARSER.parseFrom(data, extensionRegistry);
-  }
-  public static com.tzld.piaoquan.recommend.feature.model.feature.GetVideoFeatureInfoResponse parseFrom(byte[] data)
-      throws com.google.protobuf.InvalidProtocolBufferException {
-    return PARSER.parseFrom(data);
-  }
-  public static com.tzld.piaoquan.recommend.feature.model.feature.GetVideoFeatureInfoResponse parseFrom(
-      byte[] data,
-      com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-      throws com.google.protobuf.InvalidProtocolBufferException {
-    return PARSER.parseFrom(data, extensionRegistry);
-  }
-  public static com.tzld.piaoquan.recommend.feature.model.feature.GetVideoFeatureInfoResponse parseFrom(java.io.InputStream input)
-      throws java.io.IOException {
-    return com.google.protobuf.GeneratedMessageV3
-        .parseWithIOException(PARSER, input);
-  }
-  public static com.tzld.piaoquan.recommend.feature.model.feature.GetVideoFeatureInfoResponse parseFrom(
-      java.io.InputStream input,
-      com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-      throws java.io.IOException {
-    return com.google.protobuf.GeneratedMessageV3
-        .parseWithIOException(PARSER, input, extensionRegistry);
-  }
-  public static com.tzld.piaoquan.recommend.feature.model.feature.GetVideoFeatureInfoResponse parseDelimitedFrom(java.io.InputStream input)
-      throws java.io.IOException {
-    return com.google.protobuf.GeneratedMessageV3
-        .parseDelimitedWithIOException(PARSER, input);
-  }
-  public static com.tzld.piaoquan.recommend.feature.model.feature.GetVideoFeatureInfoResponse parseDelimitedFrom(
-      java.io.InputStream input,
-      com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-      throws java.io.IOException {
-    return com.google.protobuf.GeneratedMessageV3
-        .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
-  }
-  public static com.tzld.piaoquan.recommend.feature.model.feature.GetVideoFeatureInfoResponse parseFrom(
-      com.google.protobuf.CodedInputStream input)
-      throws java.io.IOException {
-    return com.google.protobuf.GeneratedMessageV3
-        .parseWithIOException(PARSER, input);
-  }
-  public static com.tzld.piaoquan.recommend.feature.model.feature.GetVideoFeatureInfoResponse parseFrom(
-      com.google.protobuf.CodedInputStream input,
-      com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-      throws java.io.IOException {
-    return com.google.protobuf.GeneratedMessageV3
-        .parseWithIOException(PARSER, input, extensionRegistry);
-  }
-
-  @java.lang.Override
-  public Builder newBuilderForType() { return newBuilder(); }
-  public static Builder newBuilder() {
-    return DEFAULT_INSTANCE.toBuilder();
-  }
-  public static Builder newBuilder(com.tzld.piaoquan.recommend.feature.model.feature.GetVideoFeatureInfoResponse prototype) {
-    return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
-  }
-  @java.lang.Override
-  public Builder toBuilder() {
-    return this == DEFAULT_INSTANCE
-        ? new Builder() : new Builder().mergeFrom(this);
-  }
-
-  @java.lang.Override
-  protected Builder newBuilderForType(
-      com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
-    Builder builder = new Builder(parent);
-    return builder;
-  }
-  /**
-   * Protobuf type {@code GetVideoFeatureInfoResponse}
-   */
-  public static final class Builder extends
-      com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
-      // @@protoc_insertion_point(builder_implements:GetVideoFeatureInfoResponse)
-      com.tzld.piaoquan.recommend.feature.model.feature.GetVideoFeatureInfoResponseOrBuilder {
-    public static final com.google.protobuf.Descriptors.Descriptor
-        getDescriptor() {
-      return com.tzld.piaoquan.recommend.feature.model.feature.Feature.internal_static_GetVideoFeatureInfoResponse_descriptor;
+
+    @java.lang.Override
+    public com.tzld.piaoquan.recommend.feature.model.feature.GetVideoFeatureInfoResponse build() {
+      com.tzld.piaoquan.recommend.feature.model.feature.GetVideoFeatureInfoResponse result = buildPartial();
+      if (!result.isInitialized()) {
+        throw newUninitializedMessageException(result);
+      }
+      return result;
     }
 
     @java.lang.Override
-    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-        internalGetFieldAccessorTable() {
-      return com.tzld.piaoquan.recommend.feature.model.feature.Feature.internal_static_GetVideoFeatureInfoResponse_fieldAccessorTable
-          .ensureFieldAccessorsInitialized(
-              com.tzld.piaoquan.recommend.feature.model.feature.GetVideoFeatureInfoResponse.class, com.tzld.piaoquan.recommend.feature.model.feature.GetVideoFeatureInfoResponse.Builder.class);
-    }
-
-    // Construct using com.tzld.piaoquan.recommend.feature.model.feature.GetVideoFeatureInfoResponse.newBuilder()
-    private Builder() {
-      maybeForceBuilderInitialization();
-    }
-
-    private Builder(
-        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
-      super(parent);
-      maybeForceBuilderInitialization();
-    }
-    private void maybeForceBuilderInitialization() {
-      if (com.google.protobuf.GeneratedMessageV3
-              .alwaysUseFieldBuilders) {
+    public com.tzld.piaoquan.recommend.feature.model.feature.GetVideoFeatureInfoResponse buildPartial() {
+      com.tzld.piaoquan.recommend.feature.model.feature.GetVideoFeatureInfoResponse result = new com.tzld.piaoquan.recommend.feature.model.feature.GetVideoFeatureInfoResponse(this);
+      int from_bitField0_ = bitField0_;
+      if (resultBuilder_ == null) {
+        result.result_ = result_;
+      } else {
+        result.result_ = resultBuilder_.build();
       }
-    }
-    @java.lang.Override
-    public Builder clear() {
-      super.clear();
-      videoId_ = 0L;
-
-      playCountTotal_ = 0L;
-
-      totalTime_ = 0;
-
-      gmtCreate_ = "";
-
-      uid_ = 0L;
-
-      i15MinExpCnt_ = 0L;
-
-      i15MinClickCnt_ = 0L;
-
-      i15MinShareCnt_ = 0L;
-
-      i15MinReturnCnt_ = 0L;
-
-      iCtr15Min_ = 0D;
-
-      iStr15Min_ = 0D;
-
-      iRov15Min_ = 0D;
-
-      iRos15Min_ = 0D;
-
-      i1HourExpCnt_ = 0L;
-
-      i1HourClickCnt_ = 0L;
-
-      i1HourShareCnt_ = 0L;
-
-      i1HourReturnCnt_ = 0L;
-
-      iCtr1Hour_ = 0D;
-
-      iStr1Hour_ = 0D;
-
-      iRov1Hour_ = 0D;
-
-      iRos1Hour_ = 0D;
-
-      iTodayExpCnt_ = 0L;
-
-      iTodayClickCnt_ = 0L;
-
-      iTodayShareCnt_ = 0L;
-
-      iTodayReturnCnt_ = 0L;
-
-      iCtrToday_ = 0D;
-
-      iStrToday_ = 0D;
-
-      iRovToday_ = 0D;
-
-      iRosToday_ = 0D;
-
-      i1DayExpCnt_ = 0L;
-
-      i1DayClickCnt_ = 0L;
-
-      i1DayShareCnt_ = 0L;
-
-      i1DayReturnCnt_ = 0L;
-
-      iCtr1Day_ = 0D;
-
-      iStr1Day_ = 0D;
-
-      iRov1Day_ = 0D;
-
-      iRos1Day_ = 0D;
-
-      i3DayExpCnt_ = 0L;
-
-      i3DayClickCnt_ = 0L;
-
-      i3DayShareCnt_ = 0L;
-
-      i3DayReturnCnt_ = 0L;
-
-      iCtr3Day_ = 0D;
-
-      iStr3Day_ = 0D;
-
-      iRov3Day_ = 0D;
-
-      iRos3Day_ = 0D;
-
-      return this;
-    }
-
-    @java.lang.Override
-    public com.google.protobuf.Descriptors.Descriptor
-        getDescriptorForType() {
-      return com.tzld.piaoquan.recommend.feature.model.feature.Feature.internal_static_GetVideoFeatureInfoResponse_descriptor;
-    }
-
-    @java.lang.Override
-    public com.tzld.piaoquan.recommend.feature.model.feature.GetVideoFeatureInfoResponse getDefaultInstanceForType() {
-      return com.tzld.piaoquan.recommend.feature.model.feature.GetVideoFeatureInfoResponse.getDefaultInstance();
-    }
-
-    @java.lang.Override
-    public com.tzld.piaoquan.recommend.feature.model.feature.GetVideoFeatureInfoResponse build() {
-      com.tzld.piaoquan.recommend.feature.model.feature.GetVideoFeatureInfoResponse result = buildPartial();
-      if (!result.isInitialized()) {
-        throw newUninitializedMessageException(result);
-      }
-      return result;
-    }
-
-    @java.lang.Override
-    public com.tzld.piaoquan.recommend.feature.model.feature.GetVideoFeatureInfoResponse buildPartial() {
-      com.tzld.piaoquan.recommend.feature.model.feature.GetVideoFeatureInfoResponse result = new com.tzld.piaoquan.recommend.feature.model.feature.GetVideoFeatureInfoResponse(this);
-      result.videoId_ = videoId_;
-      result.playCountTotal_ = playCountTotal_;
-      result.totalTime_ = totalTime_;
-      result.gmtCreate_ = gmtCreate_;
-      result.uid_ = uid_;
-      result.i15MinExpCnt_ = i15MinExpCnt_;
-      result.i15MinClickCnt_ = i15MinClickCnt_;
-      result.i15MinShareCnt_ = i15MinShareCnt_;
-      result.i15MinReturnCnt_ = i15MinReturnCnt_;
-      result.iCtr15Min_ = iCtr15Min_;
-      result.iStr15Min_ = iStr15Min_;
-      result.iRov15Min_ = iRov15Min_;
-      result.iRos15Min_ = iRos15Min_;
-      result.i1HourExpCnt_ = i1HourExpCnt_;
-      result.i1HourClickCnt_ = i1HourClickCnt_;
-      result.i1HourShareCnt_ = i1HourShareCnt_;
-      result.i1HourReturnCnt_ = i1HourReturnCnt_;
-      result.iCtr1Hour_ = iCtr1Hour_;
-      result.iStr1Hour_ = iStr1Hour_;
-      result.iRov1Hour_ = iRov1Hour_;
-      result.iRos1Hour_ = iRos1Hour_;
-      result.iTodayExpCnt_ = iTodayExpCnt_;
-      result.iTodayClickCnt_ = iTodayClickCnt_;
-      result.iTodayShareCnt_ = iTodayShareCnt_;
-      result.iTodayReturnCnt_ = iTodayReturnCnt_;
-      result.iCtrToday_ = iCtrToday_;
-      result.iStrToday_ = iStrToday_;
-      result.iRovToday_ = iRovToday_;
-      result.iRosToday_ = iRosToday_;
-      result.i1DayExpCnt_ = i1DayExpCnt_;
-      result.i1DayClickCnt_ = i1DayClickCnt_;
-      result.i1DayShareCnt_ = i1DayShareCnt_;
-      result.i1DayReturnCnt_ = i1DayReturnCnt_;
-      result.iCtr1Day_ = iCtr1Day_;
-      result.iStr1Day_ = iStr1Day_;
-      result.iRov1Day_ = iRov1Day_;
-      result.iRos1Day_ = iRos1Day_;
-      result.i3DayExpCnt_ = i3DayExpCnt_;
-      result.i3DayClickCnt_ = i3DayClickCnt_;
-      result.i3DayShareCnt_ = i3DayShareCnt_;
-      result.i3DayReturnCnt_ = i3DayReturnCnt_;
-      result.iCtr3Day_ = iCtr3Day_;
-      result.iStr3Day_ = iStr3Day_;
-      result.iRov3Day_ = iRov3Day_;
-      result.iRos3Day_ = iRos3Day_;
-      onBuilt();
-      return result;
-    }
-
-    @java.lang.Override
-    public Builder clone() {
-      return super.clone();
-    }
-    @java.lang.Override
-    public Builder setField(
-        com.google.protobuf.Descriptors.FieldDescriptor field,
-        java.lang.Object value) {
-      return super.setField(field, value);
-    }
-    @java.lang.Override
-    public Builder clearField(
-        com.google.protobuf.Descriptors.FieldDescriptor field) {
-      return super.clearField(field);
-    }
-    @java.lang.Override
-    public Builder clearOneof(
-        com.google.protobuf.Descriptors.OneofDescriptor oneof) {
-      return super.clearOneof(oneof);
-    }
-    @java.lang.Override
-    public Builder setRepeatedField(
-        com.google.protobuf.Descriptors.FieldDescriptor field,
-        int index, java.lang.Object value) {
-      return super.setRepeatedField(field, index, value);
-    }
-    @java.lang.Override
-    public Builder addRepeatedField(
-        com.google.protobuf.Descriptors.FieldDescriptor field,
-        java.lang.Object value) {
-      return super.addRepeatedField(field, value);
-    }
-    @java.lang.Override
-    public Builder mergeFrom(com.google.protobuf.Message other) {
-      if (other instanceof com.tzld.piaoquan.recommend.feature.model.feature.GetVideoFeatureInfoResponse) {
-        return mergeFrom((com.tzld.piaoquan.recommend.feature.model.feature.GetVideoFeatureInfoResponse)other);
-      } else {
-        super.mergeFrom(other);
-        return this;
-      }
-    }
-
-    public Builder mergeFrom(com.tzld.piaoquan.recommend.feature.model.feature.GetVideoFeatureInfoResponse other) {
-      if (other == com.tzld.piaoquan.recommend.feature.model.feature.GetVideoFeatureInfoResponse.getDefaultInstance()) return this;
-      if (other.getVideoId() != 0L) {
-        setVideoId(other.getVideoId());
-      }
-      if (other.getPlayCountTotal() != 0L) {
-        setPlayCountTotal(other.getPlayCountTotal());
-      }
-      if (other.getTotalTime() != 0) {
-        setTotalTime(other.getTotalTime());
-      }
-      if (!other.getGmtCreate().isEmpty()) {
-        gmtCreate_ = other.gmtCreate_;
-        onChanged();
-      }
-      if (other.getUid() != 0L) {
-        setUid(other.getUid());
-      }
-      if (other.getI15MinExpCnt() != 0L) {
-        setI15MinExpCnt(other.getI15MinExpCnt());
-      }
-      if (other.getI15MinClickCnt() != 0L) {
-        setI15MinClickCnt(other.getI15MinClickCnt());
-      }
-      if (other.getI15MinShareCnt() != 0L) {
-        setI15MinShareCnt(other.getI15MinShareCnt());
-      }
-      if (other.getI15MinReturnCnt() != 0L) {
-        setI15MinReturnCnt(other.getI15MinReturnCnt());
-      }
-      if (other.getICtr15Min() != 0D) {
-        setICtr15Min(other.getICtr15Min());
-      }
-      if (other.getIStr15Min() != 0D) {
-        setIStr15Min(other.getIStr15Min());
-      }
-      if (other.getIRov15Min() != 0D) {
-        setIRov15Min(other.getIRov15Min());
-      }
-      if (other.getIRos15Min() != 0D) {
-        setIRos15Min(other.getIRos15Min());
-      }
-      if (other.getI1HourExpCnt() != 0L) {
-        setI1HourExpCnt(other.getI1HourExpCnt());
-      }
-      if (other.getI1HourClickCnt() != 0L) {
-        setI1HourClickCnt(other.getI1HourClickCnt());
-      }
-      if (other.getI1HourShareCnt() != 0L) {
-        setI1HourShareCnt(other.getI1HourShareCnt());
-      }
-      if (other.getI1HourReturnCnt() != 0L) {
-        setI1HourReturnCnt(other.getI1HourReturnCnt());
-      }
-      if (other.getICtr1Hour() != 0D) {
-        setICtr1Hour(other.getICtr1Hour());
-      }
-      if (other.getIStr1Hour() != 0D) {
-        setIStr1Hour(other.getIStr1Hour());
-      }
-      if (other.getIRov1Hour() != 0D) {
-        setIRov1Hour(other.getIRov1Hour());
-      }
-      if (other.getIRos1Hour() != 0D) {
-        setIRos1Hour(other.getIRos1Hour());
-      }
-      if (other.getITodayExpCnt() != 0L) {
-        setITodayExpCnt(other.getITodayExpCnt());
-      }
-      if (other.getITodayClickCnt() != 0L) {
-        setITodayClickCnt(other.getITodayClickCnt());
-      }
-      if (other.getITodayShareCnt() != 0L) {
-        setITodayShareCnt(other.getITodayShareCnt());
-      }
-      if (other.getITodayReturnCnt() != 0L) {
-        setITodayReturnCnt(other.getITodayReturnCnt());
-      }
-      if (other.getICtrToday() != 0D) {
-        setICtrToday(other.getICtrToday());
-      }
-      if (other.getIStrToday() != 0D) {
-        setIStrToday(other.getIStrToday());
-      }
-      if (other.getIRovToday() != 0D) {
-        setIRovToday(other.getIRovToday());
-      }
-      if (other.getIRosToday() != 0D) {
-        setIRosToday(other.getIRosToday());
-      }
-      if (other.getI1DayExpCnt() != 0L) {
-        setI1DayExpCnt(other.getI1DayExpCnt());
-      }
-      if (other.getI1DayClickCnt() != 0L) {
-        setI1DayClickCnt(other.getI1DayClickCnt());
-      }
-      if (other.getI1DayShareCnt() != 0L) {
-        setI1DayShareCnt(other.getI1DayShareCnt());
-      }
-      if (other.getI1DayReturnCnt() != 0L) {
-        setI1DayReturnCnt(other.getI1DayReturnCnt());
-      }
-      if (other.getICtr1Day() != 0D) {
-        setICtr1Day(other.getICtr1Day());
-      }
-      if (other.getIStr1Day() != 0D) {
-        setIStr1Day(other.getIStr1Day());
-      }
-      if (other.getIRov1Day() != 0D) {
-        setIRov1Day(other.getIRov1Day());
-      }
-      if (other.getIRos1Day() != 0D) {
-        setIRos1Day(other.getIRos1Day());
-      }
-      if (other.getI3DayExpCnt() != 0L) {
-        setI3DayExpCnt(other.getI3DayExpCnt());
-      }
-      if (other.getI3DayClickCnt() != 0L) {
-        setI3DayClickCnt(other.getI3DayClickCnt());
-      }
-      if (other.getI3DayShareCnt() != 0L) {
-        setI3DayShareCnt(other.getI3DayShareCnt());
-      }
-      if (other.getI3DayReturnCnt() != 0L) {
-        setI3DayReturnCnt(other.getI3DayReturnCnt());
-      }
-      if (other.getICtr3Day() != 0D) {
-        setICtr3Day(other.getICtr3Day());
-      }
-      if (other.getIStr3Day() != 0D) {
-        setIStr3Day(other.getIStr3Day());
-      }
-      if (other.getIRov3Day() != 0D) {
-        setIRov3Day(other.getIRov3Day());
-      }
-      if (other.getIRos3Day() != 0D) {
-        setIRos3Day(other.getIRos3Day());
-      }
-      this.mergeUnknownFields(other.unknownFields);
-      onChanged();
-      return this;
-    }
-
-    @java.lang.Override
-    public final boolean isInitialized() {
-      return true;
-    }
-
-    @java.lang.Override
-    public Builder mergeFrom(
-        com.google.protobuf.CodedInputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      com.tzld.piaoquan.recommend.feature.model.feature.GetVideoFeatureInfoResponse parsedMessage = null;
-      try {
-        parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
-      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-        parsedMessage = (com.tzld.piaoquan.recommend.feature.model.feature.GetVideoFeatureInfoResponse) e.getUnfinishedMessage();
-        throw e.unwrapIOException();
-      } finally {
-        if (parsedMessage != null) {
-          mergeFrom(parsedMessage);
-        }
-      }
-      return this;
-    }
-
-    private long videoId_ ;
-    /**
-     * <code>int64 videoId = 1;</code>
-     * @return The videoId.
-     */
-    @java.lang.Override
-    public long getVideoId() {
-      return videoId_;
-    }
-    /**
-     * <code>int64 videoId = 1;</code>
-     * @param value The videoId to set.
-     * @return This builder for chaining.
-     */
-    public Builder setVideoId(long value) {
-      
-      videoId_ = value;
-      onChanged();
-      return this;
-    }
-    /**
-     * <code>int64 videoId = 1;</code>
-     * @return This builder for chaining.
-     */
-    public Builder clearVideoId() {
-      
-      videoId_ = 0L;
-      onChanged();
-      return this;
-    }
-
-    private long playCountTotal_ ;
-    /**
-     * <code>int64 playCountTotal = 2;</code>
-     * @return The playCountTotal.
-     */
-    @java.lang.Override
-    public long getPlayCountTotal() {
-      return playCountTotal_;
-    }
-    /**
-     * <code>int64 playCountTotal = 2;</code>
-     * @param value The playCountTotal to set.
-     * @return This builder for chaining.
-     */
-    public Builder setPlayCountTotal(long value) {
-      
-      playCountTotal_ = value;
-      onChanged();
-      return this;
-    }
-    /**
-     * <code>int64 playCountTotal = 2;</code>
-     * @return This builder for chaining.
-     */
-    public Builder clearPlayCountTotal() {
-      
-      playCountTotal_ = 0L;
-      onChanged();
-      return this;
-    }
-
-    private int totalTime_ ;
-    /**
-     * <code>int32 totalTime = 3;</code>
-     * @return The totalTime.
-     */
-    @java.lang.Override
-    public int getTotalTime() {
-      return totalTime_;
-    }
-    /**
-     * <code>int32 totalTime = 3;</code>
-     * @param value The totalTime to set.
-     * @return This builder for chaining.
-     */
-    public Builder setTotalTime(int value) {
-      
-      totalTime_ = value;
-      onChanged();
-      return this;
-    }
-    /**
-     * <code>int32 totalTime = 3;</code>
-     * @return This builder for chaining.
-     */
-    public Builder clearTotalTime() {
-      
-      totalTime_ = 0;
-      onChanged();
-      return this;
-    }
-
-    private java.lang.Object gmtCreate_ = "";
-    /**
-     * <code>string gmtCreate = 4;</code>
-     * @return The gmtCreate.
-     */
-    public java.lang.String getGmtCreate() {
-      java.lang.Object ref = gmtCreate_;
-      if (!(ref instanceof java.lang.String)) {
-        com.google.protobuf.ByteString bs =
-            (com.google.protobuf.ByteString) ref;
-        java.lang.String s = bs.toStringUtf8();
-        gmtCreate_ = s;
-        return s;
-      } else {
-        return (java.lang.String) ref;
-      }
-    }
-    /**
-     * <code>string gmtCreate = 4;</code>
-     * @return The bytes for gmtCreate.
-     */
-    public com.google.protobuf.ByteString
-        getGmtCreateBytes() {
-      java.lang.Object ref = gmtCreate_;
-      if (ref instanceof String) {
-        com.google.protobuf.ByteString b = 
-            com.google.protobuf.ByteString.copyFromUtf8(
-                (java.lang.String) ref);
-        gmtCreate_ = b;
-        return b;
-      } else {
-        return (com.google.protobuf.ByteString) ref;
-      }
-    }
-    /**
-     * <code>string gmtCreate = 4;</code>
-     * @param value The gmtCreate to set.
-     * @return This builder for chaining.
-     */
-    public Builder setGmtCreate(
-        java.lang.String value) {
-      if (value == null) {
-    throw new NullPointerException();
-  }
-  
-      gmtCreate_ = value;
-      onChanged();
-      return this;
-    }
-    /**
-     * <code>string gmtCreate = 4;</code>
-     * @return This builder for chaining.
-     */
-    public Builder clearGmtCreate() {
-      
-      gmtCreate_ = getDefaultInstance().getGmtCreate();
-      onChanged();
-      return this;
-    }
-    /**
-     * <code>string gmtCreate = 4;</code>
-     * @param value The bytes for gmtCreate to set.
-     * @return This builder for chaining.
-     */
-    public Builder setGmtCreateBytes(
-        com.google.protobuf.ByteString value) {
-      if (value == null) {
-    throw new NullPointerException();
-  }
-  checkByteStringIsUtf8(value);
-      
-      gmtCreate_ = value;
-      onChanged();
-      return this;
-    }
-
-    private long uid_ ;
-    /**
-     * <pre>
-     * 上传者
-     * </pre>
-     *
-     * <code>int64 uid = 5;</code>
-     * @return The uid.
-     */
-    @java.lang.Override
-    public long getUid() {
-      return uid_;
-    }
-    /**
-     * <pre>
-     * 上传者
-     * </pre>
-     *
-     * <code>int64 uid = 5;</code>
-     * @param value The uid to set.
-     * @return This builder for chaining.
-     */
-    public Builder setUid(long value) {
-      
-      uid_ = value;
-      onChanged();
-      return this;
-    }
-    /**
-     * <pre>
-     * 上传者
-     * </pre>
-     *
-     * <code>int64 uid = 5;</code>
-     * @return This builder for chaining.
-     */
-    public Builder clearUid() {
-      
-      uid_ = 0L;
-      onChanged();
-      return this;
-    }
-
-    private long i15MinExpCnt_ ;
-    /**
-     * <pre>
-     * 过去十五分钟
-     * </pre>
-     *
-     * <code>int64 i15minExpCnt = 6;</code>
-     * @return The i15minExpCnt.
-     */
-    @java.lang.Override
-    public long getI15MinExpCnt() {
-      return i15MinExpCnt_;
-    }
-    /**
-     * <pre>
-     * 过去十五分钟
-     * </pre>
-     *
-     * <code>int64 i15minExpCnt = 6;</code>
-     * @param value The i15minExpCnt to set.
-     * @return This builder for chaining.
-     */
-    public Builder setI15MinExpCnt(long value) {
-      
-      i15MinExpCnt_ = value;
-      onChanged();
-      return this;
-    }
-    /**
-     * <pre>
-     * 过去十五分钟
-     * </pre>
-     *
-     * <code>int64 i15minExpCnt = 6;</code>
-     * @return This builder for chaining.
-     */
-    public Builder clearI15MinExpCnt() {
-      
-      i15MinExpCnt_ = 0L;
-      onChanged();
-      return this;
-    }
-
-    private long i15MinClickCnt_ ;
-    /**
-     * <code>int64 i15minClickCnt = 7;</code>
-     * @return The i15minClickCnt.
-     */
-    @java.lang.Override
-    public long getI15MinClickCnt() {
-      return i15MinClickCnt_;
-    }
-    /**
-     * <code>int64 i15minClickCnt = 7;</code>
-     * @param value The i15minClickCnt to set.
-     * @return This builder for chaining.
-     */
-    public Builder setI15MinClickCnt(long value) {
-      
-      i15MinClickCnt_ = value;
-      onChanged();
-      return this;
-    }
-    /**
-     * <code>int64 i15minClickCnt = 7;</code>
-     * @return This builder for chaining.
-     */
-    public Builder clearI15MinClickCnt() {
-      
-      i15MinClickCnt_ = 0L;
-      onChanged();
-      return this;
-    }
-
-    private long i15MinShareCnt_ ;
-    /**
-     * <code>int64 i15minShareCnt = 8;</code>
-     * @return The i15minShareCnt.
-     */
-    @java.lang.Override
-    public long getI15MinShareCnt() {
-      return i15MinShareCnt_;
-    }
-    /**
-     * <code>int64 i15minShareCnt = 8;</code>
-     * @param value The i15minShareCnt to set.
-     * @return This builder for chaining.
-     */
-    public Builder setI15MinShareCnt(long value) {
-      
-      i15MinShareCnt_ = value;
-      onChanged();
-      return this;
-    }
-    /**
-     * <code>int64 i15minShareCnt = 8;</code>
-     * @return This builder for chaining.
-     */
-    public Builder clearI15MinShareCnt() {
-      
-      i15MinShareCnt_ = 0L;
-      onChanged();
-      return this;
-    }
-
-    private long i15MinReturnCnt_ ;
-    /**
-     * <code>int64 i15minReturnCnt = 9;</code>
-     * @return The i15minReturnCnt.
-     */
-    @java.lang.Override
-    public long getI15MinReturnCnt() {
-      return i15MinReturnCnt_;
-    }
-    /**
-     * <code>int64 i15minReturnCnt = 9;</code>
-     * @param value The i15minReturnCnt to set.
-     * @return This builder for chaining.
-     */
-    public Builder setI15MinReturnCnt(long value) {
-      
-      i15MinReturnCnt_ = value;
-      onChanged();
-      return this;
-    }
-    /**
-     * <code>int64 i15minReturnCnt = 9;</code>
-     * @return This builder for chaining.
-     */
-    public Builder clearI15MinReturnCnt() {
-      
-      i15MinReturnCnt_ = 0L;
-      onChanged();
-      return this;
-    }
-
-    private double iCtr15Min_ ;
-    /**
-     * <code>double iCtr15min = 10;</code>
-     * @return The iCtr15min.
-     */
-    @java.lang.Override
-    public double getICtr15Min() {
-      return iCtr15Min_;
-    }
-    /**
-     * <code>double iCtr15min = 10;</code>
-     * @param value The iCtr15min to set.
-     * @return This builder for chaining.
-     */
-    public Builder setICtr15Min(double value) {
-      
-      iCtr15Min_ = value;
-      onChanged();
-      return this;
-    }
-    /**
-     * <code>double iCtr15min = 10;</code>
-     * @return This builder for chaining.
-     */
-    public Builder clearICtr15Min() {
-      
-      iCtr15Min_ = 0D;
-      onChanged();
-      return this;
-    }
-
-    private double iStr15Min_ ;
-    /**
-     * <code>double iStr15min = 11;</code>
-     * @return The iStr15min.
-     */
-    @java.lang.Override
-    public double getIStr15Min() {
-      return iStr15Min_;
-    }
-    /**
-     * <code>double iStr15min = 11;</code>
-     * @param value The iStr15min to set.
-     * @return This builder for chaining.
-     */
-    public Builder setIStr15Min(double value) {
-      
-      iStr15Min_ = value;
-      onChanged();
-      return this;
-    }
-    /**
-     * <code>double iStr15min = 11;</code>
-     * @return This builder for chaining.
-     */
-    public Builder clearIStr15Min() {
-      
-      iStr15Min_ = 0D;
-      onChanged();
-      return this;
-    }
-
-    private double iRov15Min_ ;
-    /**
-     * <code>double iRov15min = 12;</code>
-     * @return The iRov15min.
-     */
-    @java.lang.Override
-    public double getIRov15Min() {
-      return iRov15Min_;
-    }
-    /**
-     * <code>double iRov15min = 12;</code>
-     * @param value The iRov15min to set.
-     * @return This builder for chaining.
-     */
-    public Builder setIRov15Min(double value) {
-      
-      iRov15Min_ = value;
-      onChanged();
-      return this;
-    }
-    /**
-     * <code>double iRov15min = 12;</code>
-     * @return This builder for chaining.
-     */
-    public Builder clearIRov15Min() {
-      
-      iRov15Min_ = 0D;
-      onChanged();
-      return this;
-    }
-
-    private double iRos15Min_ ;
-    /**
-     * <code>double iRos15min = 13;</code>
-     * @return The iRos15min.
-     */
-    @java.lang.Override
-    public double getIRos15Min() {
-      return iRos15Min_;
-    }
-    /**
-     * <code>double iRos15min = 13;</code>
-     * @param value The iRos15min to set.
-     * @return This builder for chaining.
-     */
-    public Builder setIRos15Min(double value) {
-      
-      iRos15Min_ = value;
-      onChanged();
-      return this;
-    }
-    /**
-     * <code>double iRos15min = 13;</code>
-     * @return This builder for chaining.
-     */
-    public Builder clearIRos15Min() {
-      
-      iRos15Min_ = 0D;
-      onChanged();
-      return this;
-    }
-
-    private long i1HourExpCnt_ ;
-    /**
-     * <pre>
-     * 过去一小时
-     * </pre>
-     *
-     * <code>int64 i1hourExpCnt = 14;</code>
-     * @return The i1hourExpCnt.
-     */
-    @java.lang.Override
-    public long getI1HourExpCnt() {
-      return i1HourExpCnt_;
-    }
-    /**
-     * <pre>
-     * 过去一小时
-     * </pre>
-     *
-     * <code>int64 i1hourExpCnt = 14;</code>
-     * @param value The i1hourExpCnt to set.
-     * @return This builder for chaining.
-     */
-    public Builder setI1HourExpCnt(long value) {
-      
-      i1HourExpCnt_ = value;
-      onChanged();
-      return this;
-    }
-    /**
-     * <pre>
-     * 过去一小时
-     * </pre>
-     *
-     * <code>int64 i1hourExpCnt = 14;</code>
-     * @return This builder for chaining.
-     */
-    public Builder clearI1HourExpCnt() {
-      
-      i1HourExpCnt_ = 0L;
-      onChanged();
-      return this;
-    }
-
-    private long i1HourClickCnt_ ;
-    /**
-     * <code>int64 i1hourClickCnt = 15;</code>
-     * @return The i1hourClickCnt.
-     */
-    @java.lang.Override
-    public long getI1HourClickCnt() {
-      return i1HourClickCnt_;
-    }
-    /**
-     * <code>int64 i1hourClickCnt = 15;</code>
-     * @param value The i1hourClickCnt to set.
-     * @return This builder for chaining.
-     */
-    public Builder setI1HourClickCnt(long value) {
-      
-      i1HourClickCnt_ = value;
-      onChanged();
-      return this;
-    }
-    /**
-     * <code>int64 i1hourClickCnt = 15;</code>
-     * @return This builder for chaining.
-     */
-    public Builder clearI1HourClickCnt() {
-      
-      i1HourClickCnt_ = 0L;
-      onChanged();
-      return this;
-    }
-
-    private long i1HourShareCnt_ ;
-    /**
-     * <code>int64 i1hourShareCnt = 16;</code>
-     * @return The i1hourShareCnt.
-     */
-    @java.lang.Override
-    public long getI1HourShareCnt() {
-      return i1HourShareCnt_;
-    }
-    /**
-     * <code>int64 i1hourShareCnt = 16;</code>
-     * @param value The i1hourShareCnt to set.
-     * @return This builder for chaining.
-     */
-    public Builder setI1HourShareCnt(long value) {
-      
-      i1HourShareCnt_ = value;
-      onChanged();
-      return this;
-    }
-    /**
-     * <code>int64 i1hourShareCnt = 16;</code>
-     * @return This builder for chaining.
-     */
-    public Builder clearI1HourShareCnt() {
-      
-      i1HourShareCnt_ = 0L;
-      onChanged();
-      return this;
-    }
-
-    private long i1HourReturnCnt_ ;
-    /**
-     * <code>int64 i1hourReturnCnt = 17;</code>
-     * @return The i1hourReturnCnt.
-     */
-    @java.lang.Override
-    public long getI1HourReturnCnt() {
-      return i1HourReturnCnt_;
-    }
-    /**
-     * <code>int64 i1hourReturnCnt = 17;</code>
-     * @param value The i1hourReturnCnt to set.
-     * @return This builder for chaining.
-     */
-    public Builder setI1HourReturnCnt(long value) {
-      
-      i1HourReturnCnt_ = value;
-      onChanged();
-      return this;
-    }
-    /**
-     * <code>int64 i1hourReturnCnt = 17;</code>
-     * @return This builder for chaining.
-     */
-    public Builder clearI1HourReturnCnt() {
-      
-      i1HourReturnCnt_ = 0L;
-      onChanged();
-      return this;
-    }
-
-    private double iCtr1Hour_ ;
-    /**
-     * <code>double iCtr1hour = 18;</code>
-     * @return The iCtr1hour.
-     */
-    @java.lang.Override
-    public double getICtr1Hour() {
-      return iCtr1Hour_;
-    }
-    /**
-     * <code>double iCtr1hour = 18;</code>
-     * @param value The iCtr1hour to set.
-     * @return This builder for chaining.
-     */
-    public Builder setICtr1Hour(double value) {
-      
-      iCtr1Hour_ = value;
-      onChanged();
-      return this;
-    }
-    /**
-     * <code>double iCtr1hour = 18;</code>
-     * @return This builder for chaining.
-     */
-    public Builder clearICtr1Hour() {
-      
-      iCtr1Hour_ = 0D;
-      onChanged();
-      return this;
-    }
-
-    private double iStr1Hour_ ;
-    /**
-     * <code>double iStr1hour = 19;</code>
-     * @return The iStr1hour.
-     */
-    @java.lang.Override
-    public double getIStr1Hour() {
-      return iStr1Hour_;
-    }
-    /**
-     * <code>double iStr1hour = 19;</code>
-     * @param value The iStr1hour to set.
-     * @return This builder for chaining.
-     */
-    public Builder setIStr1Hour(double value) {
-      
-      iStr1Hour_ = value;
-      onChanged();
-      return this;
-    }
-    /**
-     * <code>double iStr1hour = 19;</code>
-     * @return This builder for chaining.
-     */
-    public Builder clearIStr1Hour() {
-      
-      iStr1Hour_ = 0D;
-      onChanged();
-      return this;
-    }
-
-    private double iRov1Hour_ ;
-    /**
-     * <code>double iRov1hour = 20;</code>
-     * @return The iRov1hour.
-     */
-    @java.lang.Override
-    public double getIRov1Hour() {
-      return iRov1Hour_;
-    }
-    /**
-     * <code>double iRov1hour = 20;</code>
-     * @param value The iRov1hour to set.
-     * @return This builder for chaining.
-     */
-    public Builder setIRov1Hour(double value) {
-      
-      iRov1Hour_ = value;
-      onChanged();
-      return this;
-    }
-    /**
-     * <code>double iRov1hour = 20;</code>
-     * @return This builder for chaining.
-     */
-    public Builder clearIRov1Hour() {
-      
-      iRov1Hour_ = 0D;
-      onChanged();
-      return this;
-    }
-
-    private double iRos1Hour_ ;
-    /**
-     * <code>double iRos1hour = 21;</code>
-     * @return The iRos1hour.
-     */
-    @java.lang.Override
-    public double getIRos1Hour() {
-      return iRos1Hour_;
-    }
-    /**
-     * <code>double iRos1hour = 21;</code>
-     * @param value The iRos1hour to set.
-     * @return This builder for chaining.
-     */
-    public Builder setIRos1Hour(double value) {
-      
-      iRos1Hour_ = value;
-      onChanged();
-      return this;
-    }
-    /**
-     * <code>double iRos1hour = 21;</code>
-     * @return This builder for chaining.
-     */
-    public Builder clearIRos1Hour() {
-      
-      iRos1Hour_ = 0D;
-      onChanged();
-      return this;
-    }
-
-    private long iTodayExpCnt_ ;
-    /**
-     * <pre>
-     * 今天
-     * </pre>
-     *
-     * <code>int64 iTodayExpCnt = 22;</code>
-     * @return The iTodayExpCnt.
-     */
-    @java.lang.Override
-    public long getITodayExpCnt() {
-      return iTodayExpCnt_;
-    }
-    /**
-     * <pre>
-     * 今天
-     * </pre>
-     *
-     * <code>int64 iTodayExpCnt = 22;</code>
-     * @param value The iTodayExpCnt to set.
-     * @return This builder for chaining.
-     */
-    public Builder setITodayExpCnt(long value) {
-      
-      iTodayExpCnt_ = value;
-      onChanged();
-      return this;
-    }
-    /**
-     * <pre>
-     * 今天
-     * </pre>
-     *
-     * <code>int64 iTodayExpCnt = 22;</code>
-     * @return This builder for chaining.
-     */
-    public Builder clearITodayExpCnt() {
-      
-      iTodayExpCnt_ = 0L;
-      onChanged();
-      return this;
-    }
-
-    private long iTodayClickCnt_ ;
-    /**
-     * <code>int64 iTodayClickCnt = 23;</code>
-     * @return The iTodayClickCnt.
-     */
-    @java.lang.Override
-    public long getITodayClickCnt() {
-      return iTodayClickCnt_;
-    }
-    /**
-     * <code>int64 iTodayClickCnt = 23;</code>
-     * @param value The iTodayClickCnt to set.
-     * @return This builder for chaining.
-     */
-    public Builder setITodayClickCnt(long value) {
-      
-      iTodayClickCnt_ = value;
-      onChanged();
-      return this;
-    }
-    /**
-     * <code>int64 iTodayClickCnt = 23;</code>
-     * @return This builder for chaining.
-     */
-    public Builder clearITodayClickCnt() {
-      
-      iTodayClickCnt_ = 0L;
-      onChanged();
-      return this;
-    }
-
-    private long iTodayShareCnt_ ;
-    /**
-     * <code>int64 iTodayShareCnt = 24;</code>
-     * @return The iTodayShareCnt.
-     */
-    @java.lang.Override
-    public long getITodayShareCnt() {
-      return iTodayShareCnt_;
-    }
-    /**
-     * <code>int64 iTodayShareCnt = 24;</code>
-     * @param value The iTodayShareCnt to set.
-     * @return This builder for chaining.
-     */
-    public Builder setITodayShareCnt(long value) {
-      
-      iTodayShareCnt_ = value;
-      onChanged();
-      return this;
-    }
-    /**
-     * <code>int64 iTodayShareCnt = 24;</code>
-     * @return This builder for chaining.
-     */
-    public Builder clearITodayShareCnt() {
-      
-      iTodayShareCnt_ = 0L;
-      onChanged();
-      return this;
-    }
-
-    private long iTodayReturnCnt_ ;
-    /**
-     * <code>int64 iTodayReturnCnt = 25;</code>
-     * @return The iTodayReturnCnt.
-     */
-    @java.lang.Override
-    public long getITodayReturnCnt() {
-      return iTodayReturnCnt_;
-    }
-    /**
-     * <code>int64 iTodayReturnCnt = 25;</code>
-     * @param value The iTodayReturnCnt to set.
-     * @return This builder for chaining.
-     */
-    public Builder setITodayReturnCnt(long value) {
-      
-      iTodayReturnCnt_ = value;
-      onChanged();
-      return this;
-    }
-    /**
-     * <code>int64 iTodayReturnCnt = 25;</code>
-     * @return This builder for chaining.
-     */
-    public Builder clearITodayReturnCnt() {
-      
-      iTodayReturnCnt_ = 0L;
-      onChanged();
-      return this;
-    }
-
-    private double iCtrToday_ ;
-    /**
-     * <code>double iCtrToday = 26;</code>
-     * @return The iCtrToday.
-     */
-    @java.lang.Override
-    public double getICtrToday() {
-      return iCtrToday_;
-    }
-    /**
-     * <code>double iCtrToday = 26;</code>
-     * @param value The iCtrToday to set.
-     * @return This builder for chaining.
-     */
-    public Builder setICtrToday(double value) {
-      
-      iCtrToday_ = value;
-      onChanged();
-      return this;
-    }
-    /**
-     * <code>double iCtrToday = 26;</code>
-     * @return This builder for chaining.
-     */
-    public Builder clearICtrToday() {
-      
-      iCtrToday_ = 0D;
-      onChanged();
-      return this;
-    }
-
-    private double iStrToday_ ;
-    /**
-     * <code>double iStrToday = 27;</code>
-     * @return The iStrToday.
-     */
-    @java.lang.Override
-    public double getIStrToday() {
-      return iStrToday_;
-    }
-    /**
-     * <code>double iStrToday = 27;</code>
-     * @param value The iStrToday to set.
-     * @return This builder for chaining.
-     */
-    public Builder setIStrToday(double value) {
-      
-      iStrToday_ = value;
-      onChanged();
-      return this;
-    }
-    /**
-     * <code>double iStrToday = 27;</code>
-     * @return This builder for chaining.
-     */
-    public Builder clearIStrToday() {
-      
-      iStrToday_ = 0D;
-      onChanged();
-      return this;
-    }
-
-    private double iRovToday_ ;
-    /**
-     * <code>double iRovToday = 28;</code>
-     * @return The iRovToday.
-     */
-    @java.lang.Override
-    public double getIRovToday() {
-      return iRovToday_;
-    }
-    /**
-     * <code>double iRovToday = 28;</code>
-     * @param value The iRovToday to set.
-     * @return This builder for chaining.
-     */
-    public Builder setIRovToday(double value) {
-      
-      iRovToday_ = value;
-      onChanged();
-      return this;
-    }
-    /**
-     * <code>double iRovToday = 28;</code>
-     * @return This builder for chaining.
-     */
-    public Builder clearIRovToday() {
-      
-      iRovToday_ = 0D;
-      onChanged();
-      return this;
-    }
-
-    private double iRosToday_ ;
-    /**
-     * <code>double iRosToday = 29;</code>
-     * @return The iRosToday.
-     */
-    @java.lang.Override
-    public double getIRosToday() {
-      return iRosToday_;
-    }
-    /**
-     * <code>double iRosToday = 29;</code>
-     * @param value The iRosToday to set.
-     * @return This builder for chaining.
-     */
-    public Builder setIRosToday(double value) {
-      
-      iRosToday_ = value;
-      onChanged();
-      return this;
-    }
-    /**
-     * <code>double iRosToday = 29;</code>
-     * @return This builder for chaining.
-     */
-    public Builder clearIRosToday() {
-      
-      iRosToday_ = 0D;
-      onChanged();
-      return this;
-    }
-
-    private long i1DayExpCnt_ ;
-    /**
-     * <pre>
-     * 过去一天
-     * </pre>
-     *
-     * <code>int64 i1dayExpCnt = 30;</code>
-     * @return The i1dayExpCnt.
-     */
-    @java.lang.Override
-    public long getI1DayExpCnt() {
-      return i1DayExpCnt_;
-    }
-    /**
-     * <pre>
-     * 过去一天
-     * </pre>
-     *
-     * <code>int64 i1dayExpCnt = 30;</code>
-     * @param value The i1dayExpCnt to set.
-     * @return This builder for chaining.
-     */
-    public Builder setI1DayExpCnt(long value) {
-      
-      i1DayExpCnt_ = value;
-      onChanged();
-      return this;
-    }
-    /**
-     * <pre>
-     * 过去一天
-     * </pre>
-     *
-     * <code>int64 i1dayExpCnt = 30;</code>
-     * @return This builder for chaining.
-     */
-    public Builder clearI1DayExpCnt() {
-      
-      i1DayExpCnt_ = 0L;
-      onChanged();
-      return this;
-    }
-
-    private long i1DayClickCnt_ ;
-    /**
-     * <code>int64 i1dayClickCnt = 31;</code>
-     * @return The i1dayClickCnt.
-     */
-    @java.lang.Override
-    public long getI1DayClickCnt() {
-      return i1DayClickCnt_;
-    }
-    /**
-     * <code>int64 i1dayClickCnt = 31;</code>
-     * @param value The i1dayClickCnt to set.
-     * @return This builder for chaining.
-     */
-    public Builder setI1DayClickCnt(long value) {
-      
-      i1DayClickCnt_ = value;
-      onChanged();
-      return this;
-    }
-    /**
-     * <code>int64 i1dayClickCnt = 31;</code>
-     * @return This builder for chaining.
-     */
-    public Builder clearI1DayClickCnt() {
-      
-      i1DayClickCnt_ = 0L;
-      onChanged();
-      return this;
+      if (videoFeatureInfoBuilder_ == null) {
+        if (((bitField0_ & 0x00000001) != 0)) {
+          videoFeatureInfo_ = java.util.Collections.unmodifiableList(videoFeatureInfo_);
+          bitField0_ = (bitField0_ & ~0x00000001);
+        }
+        result.videoFeatureInfo_ = videoFeatureInfo_;
+      } else {
+        result.videoFeatureInfo_ = videoFeatureInfoBuilder_.build();
+      }
+      onBuilt();
+      return result;
     }
 
-    private long i1DayShareCnt_ ;
-    /**
-     * <code>int64 i1dayShareCnt = 32;</code>
-     * @return The i1dayShareCnt.
-     */
     @java.lang.Override
-    public long getI1DayShareCnt() {
-      return i1DayShareCnt_;
-    }
-    /**
-     * <code>int64 i1dayShareCnt = 32;</code>
-     * @param value The i1dayShareCnt to set.
-     * @return This builder for chaining.
-     */
-    public Builder setI1DayShareCnt(long value) {
-      
-      i1DayShareCnt_ = value;
-      onChanged();
-      return this;
+    public Builder clone() {
+      return super.clone();
     }
-    /**
-     * <code>int64 i1dayShareCnt = 32;</code>
-     * @return This builder for chaining.
-     */
-    public Builder clearI1DayShareCnt() {
-      
-      i1DayShareCnt_ = 0L;
-      onChanged();
-      return this;
+    @java.lang.Override
+    public Builder setField(
+        com.google.protobuf.Descriptors.FieldDescriptor field,
+        java.lang.Object value) {
+      return super.setField(field, value);
     }
-
-    private long i1DayReturnCnt_ ;
-    /**
-     * <code>int64 i1dayReturnCnt = 33;</code>
-     * @return The i1dayReturnCnt.
-     */
     @java.lang.Override
-    public long getI1DayReturnCnt() {
-      return i1DayReturnCnt_;
+    public Builder clearField(
+        com.google.protobuf.Descriptors.FieldDescriptor field) {
+      return super.clearField(field);
     }
-    /**
-     * <code>int64 i1dayReturnCnt = 33;</code>
-     * @param value The i1dayReturnCnt to set.
-     * @return This builder for chaining.
-     */
-    public Builder setI1DayReturnCnt(long value) {
-      
-      i1DayReturnCnt_ = value;
-      onChanged();
-      return this;
+    @java.lang.Override
+    public Builder clearOneof(
+        com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+      return super.clearOneof(oneof);
     }
-    /**
-     * <code>int64 i1dayReturnCnt = 33;</code>
-     * @return This builder for chaining.
-     */
-    public Builder clearI1DayReturnCnt() {
-      
-      i1DayReturnCnt_ = 0L;
-      onChanged();
-      return this;
+    @java.lang.Override
+    public Builder setRepeatedField(
+        com.google.protobuf.Descriptors.FieldDescriptor field,
+        int index, java.lang.Object value) {
+      return super.setRepeatedField(field, index, value);
     }
-
-    private double iCtr1Day_ ;
-    /**
-     * <code>double iCtr1day = 34;</code>
-     * @return The iCtr1day.
-     */
     @java.lang.Override
-    public double getICtr1Day() {
-      return iCtr1Day_;
+    public Builder addRepeatedField(
+        com.google.protobuf.Descriptors.FieldDescriptor field,
+        java.lang.Object value) {
+      return super.addRepeatedField(field, value);
     }
-    /**
-     * <code>double iCtr1day = 34;</code>
-     * @param value The iCtr1day to set.
-     * @return This builder for chaining.
-     */
-    public Builder setICtr1Day(double value) {
-      
-      iCtr1Day_ = value;
-      onChanged();
-      return this;
+    @java.lang.Override
+    public Builder mergeFrom(com.google.protobuf.Message other) {
+      if (other instanceof com.tzld.piaoquan.recommend.feature.model.feature.GetVideoFeatureInfoResponse) {
+        return mergeFrom((com.tzld.piaoquan.recommend.feature.model.feature.GetVideoFeatureInfoResponse)other);
+      } else {
+        super.mergeFrom(other);
+        return this;
+      }
     }
-    /**
-     * <code>double iCtr1day = 34;</code>
-     * @return This builder for chaining.
-     */
-    public Builder clearICtr1Day() {
-      
-      iCtr1Day_ = 0D;
+
+    public Builder mergeFrom(com.tzld.piaoquan.recommend.feature.model.feature.GetVideoFeatureInfoResponse other) {
+      if (other == com.tzld.piaoquan.recommend.feature.model.feature.GetVideoFeatureInfoResponse.getDefaultInstance()) return this;
+      if (other.hasResult()) {
+        mergeResult(other.getResult());
+      }
+      if (videoFeatureInfoBuilder_ == null) {
+        if (!other.videoFeatureInfo_.isEmpty()) {
+          if (videoFeatureInfo_.isEmpty()) {
+            videoFeatureInfo_ = other.videoFeatureInfo_;
+            bitField0_ = (bitField0_ & ~0x00000001);
+          } else {
+            ensureVideoFeatureInfoIsMutable();
+            videoFeatureInfo_.addAll(other.videoFeatureInfo_);
+          }
+          onChanged();
+        }
+      } else {
+        if (!other.videoFeatureInfo_.isEmpty()) {
+          if (videoFeatureInfoBuilder_.isEmpty()) {
+            videoFeatureInfoBuilder_.dispose();
+            videoFeatureInfoBuilder_ = null;
+            videoFeatureInfo_ = other.videoFeatureInfo_;
+            bitField0_ = (bitField0_ & ~0x00000001);
+            videoFeatureInfoBuilder_ = 
+              com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
+                 getVideoFeatureInfoFieldBuilder() : null;
+          } else {
+            videoFeatureInfoBuilder_.addAllMessages(other.videoFeatureInfo_);
+          }
+        }
+      }
+      this.mergeUnknownFields(other.unknownFields);
       onChanged();
       return this;
     }
 
-    private double iStr1Day_ ;
-    /**
-     * <code>double iStr1day = 35;</code>
-     * @return The iStr1day.
-     */
     @java.lang.Override
-    public double getIStr1Day() {
-      return iStr1Day_;
-    }
-    /**
-     * <code>double iStr1day = 35;</code>
-     * @param value The iStr1day to set.
-     * @return This builder for chaining.
-     */
-    public Builder setIStr1Day(double value) {
-      
-      iStr1Day_ = value;
-      onChanged();
-      return this;
-    }
-    /**
-     * <code>double iStr1day = 35;</code>
-     * @return This builder for chaining.
-     */
-    public Builder clearIStr1Day() {
-      
-      iStr1Day_ = 0D;
-      onChanged();
-      return this;
+    public final boolean isInitialized() {
+      return true;
     }
 
-    private double iRov1Day_ ;
-    /**
-     * <code>double iRov1day = 36;</code>
-     * @return The iRov1day.
-     */
     @java.lang.Override
-    public double getIRov1Day() {
-      return iRov1Day_;
-    }
-    /**
-     * <code>double iRov1day = 36;</code>
-     * @param value The iRov1day to set.
-     * @return This builder for chaining.
-     */
-    public Builder setIRov1Day(double value) {
-      
-      iRov1Day_ = value;
-      onChanged();
+    public Builder mergeFrom(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      com.tzld.piaoquan.recommend.feature.model.feature.GetVideoFeatureInfoResponse parsedMessage = null;
+      try {
+        parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+        parsedMessage = (com.tzld.piaoquan.recommend.feature.model.feature.GetVideoFeatureInfoResponse) e.getUnfinishedMessage();
+        throw e.unwrapIOException();
+      } finally {
+        if (parsedMessage != null) {
+          mergeFrom(parsedMessage);
+        }
+      }
       return this;
     }
+    private int bitField0_;
+
+    private com.tzld.piaoquan.recommend.feature.model.common.Result result_;
+    private com.google.protobuf.SingleFieldBuilderV3<
+        com.tzld.piaoquan.recommend.feature.model.common.Result, com.tzld.piaoquan.recommend.feature.model.common.Result.Builder, com.tzld.piaoquan.recommend.feature.model.common.ResultOrBuilder> resultBuilder_;
     /**
-     * <code>double iRov1day = 36;</code>
-     * @return This builder for chaining.
+     * <code>.Result result = 1;</code>
+     * @return Whether the result field is set.
      */
-    public Builder clearIRov1Day() {
-      
-      iRov1Day_ = 0D;
-      onChanged();
-      return this;
+    public boolean hasResult() {
+      return resultBuilder_ != null || result_ != null;
     }
-
-    private double iRos1Day_ ;
     /**
-     * <code>double iRos1day = 37;</code>
-     * @return The iRos1day.
+     * <code>.Result result = 1;</code>
+     * @return The result.
      */
-    @java.lang.Override
-    public double getIRos1Day() {
-      return iRos1Day_;
+    public com.tzld.piaoquan.recommend.feature.model.common.Result getResult() {
+      if (resultBuilder_ == null) {
+        return result_ == null ? com.tzld.piaoquan.recommend.feature.model.common.Result.getDefaultInstance() : result_;
+      } else {
+        return resultBuilder_.getMessage();
+      }
     }
     /**
-     * <code>double iRos1day = 37;</code>
-     * @param value The iRos1day to set.
-     * @return This builder for chaining.
+     * <code>.Result result = 1;</code>
      */
-    public Builder setIRos1Day(double value) {
-      
-      iRos1Day_ = value;
-      onChanged();
+    public Builder setResult(com.tzld.piaoquan.recommend.feature.model.common.Result value) {
+      if (resultBuilder_ == null) {
+        if (value == null) {
+          throw new NullPointerException();
+        }
+        result_ = value;
+        onChanged();
+      } else {
+        resultBuilder_.setMessage(value);
+      }
+
       return this;
     }
     /**
-     * <code>double iRos1day = 37;</code>
-     * @return This builder for chaining.
+     * <code>.Result result = 1;</code>
      */
-    public Builder clearIRos1Day() {
-      
-      iRos1Day_ = 0D;
-      onChanged();
+    public Builder setResult(
+        com.tzld.piaoquan.recommend.feature.model.common.Result.Builder builderForValue) {
+      if (resultBuilder_ == null) {
+        result_ = builderForValue.build();
+        onChanged();
+      } else {
+        resultBuilder_.setMessage(builderForValue.build());
+      }
+
       return this;
     }
-
-    private long i3DayExpCnt_ ;
     /**
-     * <pre>
-     * 过去三天
-     * </pre>
-     *
-     * <code>int64 i3dayExpCnt = 38;</code>
-     * @return The i3dayExpCnt.
+     * <code>.Result result = 1;</code>
      */
-    @java.lang.Override
-    public long getI3DayExpCnt() {
-      return i3DayExpCnt_;
+    public Builder mergeResult(com.tzld.piaoquan.recommend.feature.model.common.Result value) {
+      if (resultBuilder_ == null) {
+        if (result_ != null) {
+          result_ =
+            com.tzld.piaoquan.recommend.feature.model.common.Result.newBuilder(result_).mergeFrom(value).buildPartial();
+        } else {
+          result_ = value;
+        }
+        onChanged();
+      } else {
+        resultBuilder_.mergeFrom(value);
+      }
+
+      return this;
     }
     /**
-     * <pre>
-     * 过去三天
-     * </pre>
-     *
-     * <code>int64 i3dayExpCnt = 38;</code>
-     * @param value The i3dayExpCnt to set.
-     * @return This builder for chaining.
+     * <code>.Result result = 1;</code>
      */
-    public Builder setI3DayExpCnt(long value) {
-      
-      i3DayExpCnt_ = value;
-      onChanged();
+    public Builder clearResult() {
+      if (resultBuilder_ == null) {
+        result_ = null;
+        onChanged();
+      } else {
+        result_ = null;
+        resultBuilder_ = null;
+      }
+
       return this;
     }
     /**
-     * <pre>
-     * 过去三天
-     * </pre>
-     *
-     * <code>int64 i3dayExpCnt = 38;</code>
-     * @return This builder for chaining.
+     * <code>.Result result = 1;</code>
      */
-    public Builder clearI3DayExpCnt() {
+    public com.tzld.piaoquan.recommend.feature.model.common.Result.Builder getResultBuilder() {
       
-      i3DayExpCnt_ = 0L;
       onChanged();
-      return this;
+      return getResultFieldBuilder().getBuilder();
     }
-
-    private long i3DayClickCnt_ ;
     /**
-     * <code>int64 i3dayClickCnt = 39;</code>
-     * @return The i3dayClickCnt.
+     * <code>.Result result = 1;</code>
      */
-    @java.lang.Override
-    public long getI3DayClickCnt() {
-      return i3DayClickCnt_;
+    public com.tzld.piaoquan.recommend.feature.model.common.ResultOrBuilder getResultOrBuilder() {
+      if (resultBuilder_ != null) {
+        return resultBuilder_.getMessageOrBuilder();
+      } else {
+        return result_ == null ?
+            com.tzld.piaoquan.recommend.feature.model.common.Result.getDefaultInstance() : result_;
+      }
     }
     /**
-     * <code>int64 i3dayClickCnt = 39;</code>
-     * @param value The i3dayClickCnt to set.
-     * @return This builder for chaining.
+     * <code>.Result result = 1;</code>
      */
-    public Builder setI3DayClickCnt(long value) {
-      
-      i3DayClickCnt_ = value;
-      onChanged();
-      return this;
+    private com.google.protobuf.SingleFieldBuilderV3<
+        com.tzld.piaoquan.recommend.feature.model.common.Result, com.tzld.piaoquan.recommend.feature.model.common.Result.Builder, com.tzld.piaoquan.recommend.feature.model.common.ResultOrBuilder> 
+        getResultFieldBuilder() {
+      if (resultBuilder_ == null) {
+        resultBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
+            com.tzld.piaoquan.recommend.feature.model.common.Result, com.tzld.piaoquan.recommend.feature.model.common.Result.Builder, com.tzld.piaoquan.recommend.feature.model.common.ResultOrBuilder>(
+                getResult(),
+                getParentForChildren(),
+                isClean());
+        result_ = null;
+      }
+      return resultBuilder_;
     }
-    /**
-     * <code>int64 i3dayClickCnt = 39;</code>
-     * @return This builder for chaining.
-     */
-    public Builder clearI3DayClickCnt() {
-      
-      i3DayClickCnt_ = 0L;
-      onChanged();
-      return this;
+
+    private java.util.List<com.tzld.piaoquan.recommend.feature.model.feature.GetVideoFeatureInfo> videoFeatureInfo_ =
+      java.util.Collections.emptyList();
+    private void ensureVideoFeatureInfoIsMutable() {
+      if (!((bitField0_ & 0x00000001) != 0)) {
+        videoFeatureInfo_ = new java.util.ArrayList<com.tzld.piaoquan.recommend.feature.model.feature.GetVideoFeatureInfo>(videoFeatureInfo_);
+        bitField0_ |= 0x00000001;
+       }
     }
 
-    private long i3DayShareCnt_ ;
+    private com.google.protobuf.RepeatedFieldBuilderV3<
+        com.tzld.piaoquan.recommend.feature.model.feature.GetVideoFeatureInfo, com.tzld.piaoquan.recommend.feature.model.feature.GetVideoFeatureInfo.Builder, com.tzld.piaoquan.recommend.feature.model.feature.GetVideoFeatureInfoOrBuilder> videoFeatureInfoBuilder_;
+
     /**
-     * <code>int64 i3dayShareCnt = 40;</code>
-     * @return The i3dayShareCnt.
+     * <code>repeated .GetVideoFeatureInfo video_feature_info = 2;</code>
      */
-    @java.lang.Override
-    public long getI3DayShareCnt() {
-      return i3DayShareCnt_;
+    public java.util.List<com.tzld.piaoquan.recommend.feature.model.feature.GetVideoFeatureInfo> getVideoFeatureInfoList() {
+      if (videoFeatureInfoBuilder_ == null) {
+        return java.util.Collections.unmodifiableList(videoFeatureInfo_);
+      } else {
+        return videoFeatureInfoBuilder_.getMessageList();
+      }
     }
     /**
-     * <code>int64 i3dayShareCnt = 40;</code>
-     * @param value The i3dayShareCnt to set.
-     * @return This builder for chaining.
+     * <code>repeated .GetVideoFeatureInfo video_feature_info = 2;</code>
      */
-    public Builder setI3DayShareCnt(long value) {
-      
-      i3DayShareCnt_ = value;
-      onChanged();
-      return this;
+    public int getVideoFeatureInfoCount() {
+      if (videoFeatureInfoBuilder_ == null) {
+        return videoFeatureInfo_.size();
+      } else {
+        return videoFeatureInfoBuilder_.getCount();
+      }
     }
     /**
-     * <code>int64 i3dayShareCnt = 40;</code>
-     * @return This builder for chaining.
+     * <code>repeated .GetVideoFeatureInfo video_feature_info = 2;</code>
      */
-    public Builder clearI3DayShareCnt() {
-      
-      i3DayShareCnt_ = 0L;
-      onChanged();
-      return this;
+    public com.tzld.piaoquan.recommend.feature.model.feature.GetVideoFeatureInfo getVideoFeatureInfo(int index) {
+      if (videoFeatureInfoBuilder_ == null) {
+        return videoFeatureInfo_.get(index);
+      } else {
+        return videoFeatureInfoBuilder_.getMessage(index);
+      }
     }
-
-    private long i3DayReturnCnt_ ;
     /**
-     * <code>int64 i3dayReturnCnt = 41;</code>
-     * @return The i3dayReturnCnt.
+     * <code>repeated .GetVideoFeatureInfo video_feature_info = 2;</code>
      */
-    @java.lang.Override
-    public long getI3DayReturnCnt() {
-      return i3DayReturnCnt_;
+    public Builder setVideoFeatureInfo(
+        int index, com.tzld.piaoquan.recommend.feature.model.feature.GetVideoFeatureInfo value) {
+      if (videoFeatureInfoBuilder_ == null) {
+        if (value == null) {
+          throw new NullPointerException();
+        }
+        ensureVideoFeatureInfoIsMutable();
+        videoFeatureInfo_.set(index, value);
+        onChanged();
+      } else {
+        videoFeatureInfoBuilder_.setMessage(index, value);
+      }
+      return this;
     }
     /**
-     * <code>int64 i3dayReturnCnt = 41;</code>
-     * @param value The i3dayReturnCnt to set.
-     * @return This builder for chaining.
+     * <code>repeated .GetVideoFeatureInfo video_feature_info = 2;</code>
      */
-    public Builder setI3DayReturnCnt(long value) {
-      
-      i3DayReturnCnt_ = value;
-      onChanged();
+    public Builder setVideoFeatureInfo(
+        int index, com.tzld.piaoquan.recommend.feature.model.feature.GetVideoFeatureInfo.Builder builderForValue) {
+      if (videoFeatureInfoBuilder_ == null) {
+        ensureVideoFeatureInfoIsMutable();
+        videoFeatureInfo_.set(index, builderForValue.build());
+        onChanged();
+      } else {
+        videoFeatureInfoBuilder_.setMessage(index, builderForValue.build());
+      }
       return this;
     }
     /**
-     * <code>int64 i3dayReturnCnt = 41;</code>
-     * @return This builder for chaining.
+     * <code>repeated .GetVideoFeatureInfo video_feature_info = 2;</code>
      */
-    public Builder clearI3DayReturnCnt() {
-      
-      i3DayReturnCnt_ = 0L;
-      onChanged();
+    public Builder addVideoFeatureInfo(com.tzld.piaoquan.recommend.feature.model.feature.GetVideoFeatureInfo value) {
+      if (videoFeatureInfoBuilder_ == null) {
+        if (value == null) {
+          throw new NullPointerException();
+        }
+        ensureVideoFeatureInfoIsMutable();
+        videoFeatureInfo_.add(value);
+        onChanged();
+      } else {
+        videoFeatureInfoBuilder_.addMessage(value);
+      }
       return this;
     }
-
-    private double iCtr3Day_ ;
     /**
-     * <code>double iCtr3day = 42;</code>
-     * @return The iCtr3day.
+     * <code>repeated .GetVideoFeatureInfo video_feature_info = 2;</code>
      */
-    @java.lang.Override
-    public double getICtr3Day() {
-      return iCtr3Day_;
+    public Builder addVideoFeatureInfo(
+        int index, com.tzld.piaoquan.recommend.feature.model.feature.GetVideoFeatureInfo value) {
+      if (videoFeatureInfoBuilder_ == null) {
+        if (value == null) {
+          throw new NullPointerException();
+        }
+        ensureVideoFeatureInfoIsMutable();
+        videoFeatureInfo_.add(index, value);
+        onChanged();
+      } else {
+        videoFeatureInfoBuilder_.addMessage(index, value);
+      }
+      return this;
     }
     /**
-     * <code>double iCtr3day = 42;</code>
-     * @param value The iCtr3day to set.
-     * @return This builder for chaining.
+     * <code>repeated .GetVideoFeatureInfo video_feature_info = 2;</code>
      */
-    public Builder setICtr3Day(double value) {
-      
-      iCtr3Day_ = value;
-      onChanged();
+    public Builder addVideoFeatureInfo(
+        com.tzld.piaoquan.recommend.feature.model.feature.GetVideoFeatureInfo.Builder builderForValue) {
+      if (videoFeatureInfoBuilder_ == null) {
+        ensureVideoFeatureInfoIsMutable();
+        videoFeatureInfo_.add(builderForValue.build());
+        onChanged();
+      } else {
+        videoFeatureInfoBuilder_.addMessage(builderForValue.build());
+      }
       return this;
     }
     /**
-     * <code>double iCtr3day = 42;</code>
-     * @return This builder for chaining.
+     * <code>repeated .GetVideoFeatureInfo video_feature_info = 2;</code>
      */
-    public Builder clearICtr3Day() {
-      
-      iCtr3Day_ = 0D;
-      onChanged();
+    public Builder addVideoFeatureInfo(
+        int index, com.tzld.piaoquan.recommend.feature.model.feature.GetVideoFeatureInfo.Builder builderForValue) {
+      if (videoFeatureInfoBuilder_ == null) {
+        ensureVideoFeatureInfoIsMutable();
+        videoFeatureInfo_.add(index, builderForValue.build());
+        onChanged();
+      } else {
+        videoFeatureInfoBuilder_.addMessage(index, builderForValue.build());
+      }
       return this;
     }
-
-    private double iStr3Day_ ;
     /**
-     * <code>double iStr3day = 43;</code>
-     * @return The iStr3day.
+     * <code>repeated .GetVideoFeatureInfo video_feature_info = 2;</code>
      */
-    @java.lang.Override
-    public double getIStr3Day() {
-      return iStr3Day_;
+    public Builder addAllVideoFeatureInfo(
+        java.lang.Iterable<? extends com.tzld.piaoquan.recommend.feature.model.feature.GetVideoFeatureInfo> values) {
+      if (videoFeatureInfoBuilder_ == null) {
+        ensureVideoFeatureInfoIsMutable();
+        com.google.protobuf.AbstractMessageLite.Builder.addAll(
+            values, videoFeatureInfo_);
+        onChanged();
+      } else {
+        videoFeatureInfoBuilder_.addAllMessages(values);
+      }
+      return this;
     }
     /**
-     * <code>double iStr3day = 43;</code>
-     * @param value The iStr3day to set.
-     * @return This builder for chaining.
+     * <code>repeated .GetVideoFeatureInfo video_feature_info = 2;</code>
      */
-    public Builder setIStr3Day(double value) {
-      
-      iStr3Day_ = value;
-      onChanged();
+    public Builder clearVideoFeatureInfo() {
+      if (videoFeatureInfoBuilder_ == null) {
+        videoFeatureInfo_ = java.util.Collections.emptyList();
+        bitField0_ = (bitField0_ & ~0x00000001);
+        onChanged();
+      } else {
+        videoFeatureInfoBuilder_.clear();
+      }
       return this;
     }
     /**
-     * <code>double iStr3day = 43;</code>
-     * @return This builder for chaining.
+     * <code>repeated .GetVideoFeatureInfo video_feature_info = 2;</code>
      */
-    public Builder clearIStr3Day() {
-      
-      iStr3Day_ = 0D;
-      onChanged();
+    public Builder removeVideoFeatureInfo(int index) {
+      if (videoFeatureInfoBuilder_ == null) {
+        ensureVideoFeatureInfoIsMutable();
+        videoFeatureInfo_.remove(index);
+        onChanged();
+      } else {
+        videoFeatureInfoBuilder_.remove(index);
+      }
       return this;
     }
-
-    private double iRov3Day_ ;
     /**
-     * <code>double iRov3day = 44;</code>
-     * @return The iRov3day.
+     * <code>repeated .GetVideoFeatureInfo video_feature_info = 2;</code>
      */
-    @java.lang.Override
-    public double getIRov3Day() {
-      return iRov3Day_;
+    public com.tzld.piaoquan.recommend.feature.model.feature.GetVideoFeatureInfo.Builder getVideoFeatureInfoBuilder(
+        int index) {
+      return getVideoFeatureInfoFieldBuilder().getBuilder(index);
     }
     /**
-     * <code>double iRov3day = 44;</code>
-     * @param value The iRov3day to set.
-     * @return This builder for chaining.
+     * <code>repeated .GetVideoFeatureInfo video_feature_info = 2;</code>
      */
-    public Builder setIRov3Day(double value) {
-      
-      iRov3Day_ = value;
-      onChanged();
-      return this;
+    public com.tzld.piaoquan.recommend.feature.model.feature.GetVideoFeatureInfoOrBuilder getVideoFeatureInfoOrBuilder(
+        int index) {
+      if (videoFeatureInfoBuilder_ == null) {
+        return videoFeatureInfo_.get(index);  } else {
+        return videoFeatureInfoBuilder_.getMessageOrBuilder(index);
+      }
     }
     /**
-     * <code>double iRov3day = 44;</code>
-     * @return This builder for chaining.
+     * <code>repeated .GetVideoFeatureInfo video_feature_info = 2;</code>
      */
-    public Builder clearIRov3Day() {
-      
-      iRov3Day_ = 0D;
-      onChanged();
-      return this;
+    public java.util.List<? extends com.tzld.piaoquan.recommend.feature.model.feature.GetVideoFeatureInfoOrBuilder> 
+         getVideoFeatureInfoOrBuilderList() {
+      if (videoFeatureInfoBuilder_ != null) {
+        return videoFeatureInfoBuilder_.getMessageOrBuilderList();
+      } else {
+        return java.util.Collections.unmodifiableList(videoFeatureInfo_);
+      }
     }
-
-    private double iRos3Day_ ;
     /**
-     * <code>double iRos3day = 45;</code>
-     * @return The iRos3day.
+     * <code>repeated .GetVideoFeatureInfo video_feature_info = 2;</code>
      */
-    @java.lang.Override
-    public double getIRos3Day() {
-      return iRos3Day_;
+    public com.tzld.piaoquan.recommend.feature.model.feature.GetVideoFeatureInfo.Builder addVideoFeatureInfoBuilder() {
+      return getVideoFeatureInfoFieldBuilder().addBuilder(
+          com.tzld.piaoquan.recommend.feature.model.feature.GetVideoFeatureInfo.getDefaultInstance());
     }
     /**
-     * <code>double iRos3day = 45;</code>
-     * @param value The iRos3day to set.
-     * @return This builder for chaining.
+     * <code>repeated .GetVideoFeatureInfo video_feature_info = 2;</code>
      */
-    public Builder setIRos3Day(double value) {
-      
-      iRos3Day_ = value;
-      onChanged();
-      return this;
+    public com.tzld.piaoquan.recommend.feature.model.feature.GetVideoFeatureInfo.Builder addVideoFeatureInfoBuilder(
+        int index) {
+      return getVideoFeatureInfoFieldBuilder().addBuilder(
+          index, com.tzld.piaoquan.recommend.feature.model.feature.GetVideoFeatureInfo.getDefaultInstance());
     }
     /**
-     * <code>double iRos3day = 45;</code>
-     * @return This builder for chaining.
+     * <code>repeated .GetVideoFeatureInfo video_feature_info = 2;</code>
      */
-    public Builder clearIRos3Day() {
-      
-      iRos3Day_ = 0D;
-      onChanged();
-      return this;
+    public java.util.List<com.tzld.piaoquan.recommend.feature.model.feature.GetVideoFeatureInfo.Builder> 
+         getVideoFeatureInfoBuilderList() {
+      return getVideoFeatureInfoFieldBuilder().getBuilderList();
+    }
+    private com.google.protobuf.RepeatedFieldBuilderV3<
+        com.tzld.piaoquan.recommend.feature.model.feature.GetVideoFeatureInfo, com.tzld.piaoquan.recommend.feature.model.feature.GetVideoFeatureInfo.Builder, com.tzld.piaoquan.recommend.feature.model.feature.GetVideoFeatureInfoOrBuilder> 
+        getVideoFeatureInfoFieldBuilder() {
+      if (videoFeatureInfoBuilder_ == null) {
+        videoFeatureInfoBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
+            com.tzld.piaoquan.recommend.feature.model.feature.GetVideoFeatureInfo, com.tzld.piaoquan.recommend.feature.model.feature.GetVideoFeatureInfo.Builder, com.tzld.piaoquan.recommend.feature.model.feature.GetVideoFeatureInfoOrBuilder>(
+                videoFeatureInfo_,
+                ((bitField0_ & 0x00000001) != 0),
+                getParentForChildren(),
+                isClean());
+        videoFeatureInfo_ = null;
+      }
+      return videoFeatureInfoBuilder_;
     }
     @java.lang.Override
     public final Builder setUnknownFields(

+ 21 - 282
recommend-feature-client/src/main/java/com/tzld/piaoquan/recommend/feature/model/feature/GetVideoFeatureInfoResponseOrBuilder.java

@@ -8,302 +8,41 @@ public interface GetVideoFeatureInfoResponseOrBuilder extends
     com.google.protobuf.MessageOrBuilder {
 
   /**
-   * <code>int64 videoId = 1;</code>
-   * @return The videoId.
+   * <code>.Result result = 1;</code>
+   * @return Whether the result field is set.
    */
-  long getVideoId();
-
-  /**
-   * <code>int64 playCountTotal = 2;</code>
-   * @return The playCountTotal.
-   */
-  long getPlayCountTotal();
-
-  /**
-   * <code>int32 totalTime = 3;</code>
-   * @return The totalTime.
-   */
-  int getTotalTime();
-
-  /**
-   * <code>string gmtCreate = 4;</code>
-   * @return The gmtCreate.
-   */
-  java.lang.String getGmtCreate();
-  /**
-   * <code>string gmtCreate = 4;</code>
-   * @return The bytes for gmtCreate.
-   */
-  com.google.protobuf.ByteString
-      getGmtCreateBytes();
-
-  /**
-   * <pre>
-   * 上传者
-   * </pre>
-   *
-   * <code>int64 uid = 5;</code>
-   * @return The uid.
-   */
-  long getUid();
-
-  /**
-   * <pre>
-   * 过去十五分钟
-   * </pre>
-   *
-   * <code>int64 i15minExpCnt = 6;</code>
-   * @return The i15minExpCnt.
-   */
-  long getI15MinExpCnt();
-
-  /**
-   * <code>int64 i15minClickCnt = 7;</code>
-   * @return The i15minClickCnt.
-   */
-  long getI15MinClickCnt();
-
-  /**
-   * <code>int64 i15minShareCnt = 8;</code>
-   * @return The i15minShareCnt.
-   */
-  long getI15MinShareCnt();
-
-  /**
-   * <code>int64 i15minReturnCnt = 9;</code>
-   * @return The i15minReturnCnt.
-   */
-  long getI15MinReturnCnt();
-
-  /**
-   * <code>double iCtr15min = 10;</code>
-   * @return The iCtr15min.
-   */
-  double getICtr15Min();
-
+  boolean hasResult();
   /**
-   * <code>double iStr15min = 11;</code>
-   * @return The iStr15min.
+   * <code>.Result result = 1;</code>
+   * @return The result.
    */
-  double getIStr15Min();
-
-  /**
-   * <code>double iRov15min = 12;</code>
-   * @return The iRov15min.
-   */
-  double getIRov15Min();
-
-  /**
-   * <code>double iRos15min = 13;</code>
-   * @return The iRos15min.
-   */
-  double getIRos15Min();
-
-  /**
-   * <pre>
-   * 过去一小时
-   * </pre>
-   *
-   * <code>int64 i1hourExpCnt = 14;</code>
-   * @return The i1hourExpCnt.
-   */
-  long getI1HourExpCnt();
-
-  /**
-   * <code>int64 i1hourClickCnt = 15;</code>
-   * @return The i1hourClickCnt.
-   */
-  long getI1HourClickCnt();
-
-  /**
-   * <code>int64 i1hourShareCnt = 16;</code>
-   * @return The i1hourShareCnt.
-   */
-  long getI1HourShareCnt();
-
-  /**
-   * <code>int64 i1hourReturnCnt = 17;</code>
-   * @return The i1hourReturnCnt.
-   */
-  long getI1HourReturnCnt();
-
+  com.tzld.piaoquan.recommend.feature.model.common.Result getResult();
   /**
-   * <code>double iCtr1hour = 18;</code>
-   * @return The iCtr1hour.
+   * <code>.Result result = 1;</code>
    */
-  double getICtr1Hour();
+  com.tzld.piaoquan.recommend.feature.model.common.ResultOrBuilder getResultOrBuilder();
 
   /**
-   * <code>double iStr1hour = 19;</code>
-   * @return The iStr1hour.
+   * <code>repeated .GetVideoFeatureInfo video_feature_info = 2;</code>
    */
-  double getIStr1Hour();
-
+  java.util.List<com.tzld.piaoquan.recommend.feature.model.feature.GetVideoFeatureInfo> 
+      getVideoFeatureInfoList();
   /**
-   * <code>double iRov1hour = 20;</code>
-   * @return The iRov1hour.
+   * <code>repeated .GetVideoFeatureInfo video_feature_info = 2;</code>
    */
-  double getIRov1Hour();
-
+  com.tzld.piaoquan.recommend.feature.model.feature.GetVideoFeatureInfo getVideoFeatureInfo(int index);
   /**
-   * <code>double iRos1hour = 21;</code>
-   * @return The iRos1hour.
+   * <code>repeated .GetVideoFeatureInfo video_feature_info = 2;</code>
    */
-  double getIRos1Hour();
-
+  int getVideoFeatureInfoCount();
   /**
-   * <pre>
-   * 今天
-   * </pre>
-   *
-   * <code>int64 iTodayExpCnt = 22;</code>
-   * @return The iTodayExpCnt.
+   * <code>repeated .GetVideoFeatureInfo video_feature_info = 2;</code>
    */
-  long getITodayExpCnt();
-
-  /**
-   * <code>int64 iTodayClickCnt = 23;</code>
-   * @return The iTodayClickCnt.
-   */
-  long getITodayClickCnt();
-
-  /**
-   * <code>int64 iTodayShareCnt = 24;</code>
-   * @return The iTodayShareCnt.
-   */
-  long getITodayShareCnt();
-
-  /**
-   * <code>int64 iTodayReturnCnt = 25;</code>
-   * @return The iTodayReturnCnt.
-   */
-  long getITodayReturnCnt();
-
-  /**
-   * <code>double iCtrToday = 26;</code>
-   * @return The iCtrToday.
-   */
-  double getICtrToday();
-
-  /**
-   * <code>double iStrToday = 27;</code>
-   * @return The iStrToday.
-   */
-  double getIStrToday();
-
-  /**
-   * <code>double iRovToday = 28;</code>
-   * @return The iRovToday.
-   */
-  double getIRovToday();
-
-  /**
-   * <code>double iRosToday = 29;</code>
-   * @return The iRosToday.
-   */
-  double getIRosToday();
-
-  /**
-   * <pre>
-   * 过去一天
-   * </pre>
-   *
-   * <code>int64 i1dayExpCnt = 30;</code>
-   * @return The i1dayExpCnt.
-   */
-  long getI1DayExpCnt();
-
-  /**
-   * <code>int64 i1dayClickCnt = 31;</code>
-   * @return The i1dayClickCnt.
-   */
-  long getI1DayClickCnt();
-
-  /**
-   * <code>int64 i1dayShareCnt = 32;</code>
-   * @return The i1dayShareCnt.
-   */
-  long getI1DayShareCnt();
-
-  /**
-   * <code>int64 i1dayReturnCnt = 33;</code>
-   * @return The i1dayReturnCnt.
-   */
-  long getI1DayReturnCnt();
-
-  /**
-   * <code>double iCtr1day = 34;</code>
-   * @return The iCtr1day.
-   */
-  double getICtr1Day();
-
-  /**
-   * <code>double iStr1day = 35;</code>
-   * @return The iStr1day.
-   */
-  double getIStr1Day();
-
-  /**
-   * <code>double iRov1day = 36;</code>
-   * @return The iRov1day.
-   */
-  double getIRov1Day();
-
-  /**
-   * <code>double iRos1day = 37;</code>
-   * @return The iRos1day.
-   */
-  double getIRos1Day();
-
-  /**
-   * <pre>
-   * 过去三天
-   * </pre>
-   *
-   * <code>int64 i3dayExpCnt = 38;</code>
-   * @return The i3dayExpCnt.
-   */
-  long getI3DayExpCnt();
-
-  /**
-   * <code>int64 i3dayClickCnt = 39;</code>
-   * @return The i3dayClickCnt.
-   */
-  long getI3DayClickCnt();
-
-  /**
-   * <code>int64 i3dayShareCnt = 40;</code>
-   * @return The i3dayShareCnt.
-   */
-  long getI3DayShareCnt();
-
-  /**
-   * <code>int64 i3dayReturnCnt = 41;</code>
-   * @return The i3dayReturnCnt.
-   */
-  long getI3DayReturnCnt();
-
-  /**
-   * <code>double iCtr3day = 42;</code>
-   * @return The iCtr3day.
-   */
-  double getICtr3Day();
-
-  /**
-   * <code>double iStr3day = 43;</code>
-   * @return The iStr3day.
-   */
-  double getIStr3Day();
-
-  /**
-   * <code>double iRov3day = 44;</code>
-   * @return The iRov3day.
-   */
-  double getIRov3Day();
-
+  java.util.List<? extends com.tzld.piaoquan.recommend.feature.model.feature.GetVideoFeatureInfoOrBuilder> 
+      getVideoFeatureInfoOrBuilderList();
   /**
-   * <code>double iRos3day = 45;</code>
-   * @return The iRos3day.
+   * <code>repeated .GetVideoFeatureInfo video_feature_info = 2;</code>
    */
-  double getIRos3Day();
+  com.tzld.piaoquan.recommend.feature.model.feature.GetVideoFeatureInfoOrBuilder getVideoFeatureInfoOrBuilder(
+      int index);
 }