浏览代码

fix 修改接口,新增his日志记录

DYH2020 2 年之前
父节点
当前提交
1af53fd5a0

+ 104 - 0
src/main/java/com/ywt/gapi/base/log/Log.java

@@ -0,0 +1,104 @@
+// Generated by the protocol buffer compiler.  DO NOT EDIT!
+// source: log.proto
+
+package com.ywt.gapi.base.log;
+
+public final class Log {
+  private Log() {}
+  public static void registerAllExtensions(
+      com.google.protobuf.ExtensionRegistryLite registry) {
+  }
+
+  public static void registerAllExtensions(
+      com.google.protobuf.ExtensionRegistry registry) {
+    registerAllExtensions(
+        (com.google.protobuf.ExtensionRegistryLite) registry);
+  }
+  static final com.google.protobuf.Descriptors.Descriptor
+    internal_static_com_ywt_gapi_base_log_SaveCommentLogRequest_descriptor;
+  static final 
+    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
+      internal_static_com_ywt_gapi_base_log_SaveCommentLogRequest_fieldAccessorTable;
+  static final com.google.protobuf.Descriptors.Descriptor
+    internal_static_com_ywt_gapi_base_log_SaveCommentLogResponse_descriptor;
+  static final 
+    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
+      internal_static_com_ywt_gapi_base_log_SaveCommentLogResponse_fieldAccessorTable;
+  static final com.google.protobuf.Descriptors.Descriptor
+    internal_static_com_ywt_gapi_base_log_SaveOpenHisPushApiLogRequest_descriptor;
+  static final 
+    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
+      internal_static_com_ywt_gapi_base_log_SaveOpenHisPushApiLogRequest_fieldAccessorTable;
+  static final com.google.protobuf.Descriptors.Descriptor
+    internal_static_com_ywt_gapi_base_log_SaveOpenHisPushApiLogResponse_descriptor;
+  static final 
+    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
+      internal_static_com_ywt_gapi_base_log_SaveOpenHisPushApiLogResponse_fieldAccessorTable;
+
+  public static com.google.protobuf.Descriptors.FileDescriptor
+      getDescriptor() {
+    return descriptor;
+  }
+  private static  com.google.protobuf.Descriptors.FileDescriptor
+      descriptor;
+  static {
+    java.lang.String[] descriptorData = {
+      "\n\tlog.proto\022\025com.ywt.gapi.base.log\"x\n\025Sa" +
+      "veCommentLogRequest\022\020\n\010typeCode\030\001 \001(\t\022\020\n" +
+      "\010typeDesc\030\002 \001(\t\022\017\n\007content\030\003 \001(\t\022\016\n\006rema" +
+      "rk\030\004 \001(\t\022\n\n\002ip\030\005 \001(\t\022\016\n\006userId\030\006 \001(\005\"4\n\026" +
+      "SaveCommentLogResponse\022\014\n\004code\030\001 \001(\005\022\014\n\004" +
+      "info\030\002 \001(\t\"l\n\034SaveOpenHisPushApiLogReque" +
+      "st\022\014\n\004path\030\001 \001(\t\022\013\n\003req\030\002 \001(\t\022\013\n\003res\030\003 \001" +
+      "(\t\022\020\n\010difftime\030\004 \001(\005\022\022\n\nhttpStatus\030\006 \001(\005" +
+      "\";\n\035SaveOpenHisPushApiLogResponse\022\014\n\004cod" +
+      "e\030\001 \001(\005\022\014\n\004info\030\002 \001(\t2\203\002\n\rYWTLogService\022",
+      "m\n\016saveCommentLog\022,.com.ywt.gapi.base.lo" +
+      "g.SaveCommentLogRequest\032-.com.ywt.gapi.b" +
+      "ase.log.SaveCommentLogResponse\022\202\001\n\025saveO" +
+      "penHisPushApiLog\0223.com.ywt.gapi.base.log" +
+      ".SaveOpenHisPushApiLogRequest\0324.com.ywt." +
+      "gapi.base.log.SaveOpenHisPushApiLogRespo" +
+      "nseB\034\n\025com.ywt.gapi.base.logP\001\210\001\001b\006proto" +
+      "3"
+    };
+    com.google.protobuf.Descriptors.FileDescriptor.InternalDescriptorAssigner assigner =
+        new com.google.protobuf.Descriptors.FileDescriptor.    InternalDescriptorAssigner() {
+          public com.google.protobuf.ExtensionRegistry assignDescriptors(
+              com.google.protobuf.Descriptors.FileDescriptor root) {
+            descriptor = root;
+            return null;
+          }
+        };
+    com.google.protobuf.Descriptors.FileDescriptor
+      .internalBuildGeneratedFileFrom(descriptorData,
+        new com.google.protobuf.Descriptors.FileDescriptor[] {
+        }, assigner);
+    internal_static_com_ywt_gapi_base_log_SaveCommentLogRequest_descriptor =
+      getDescriptor().getMessageTypes().get(0);
+    internal_static_com_ywt_gapi_base_log_SaveCommentLogRequest_fieldAccessorTable = new
+      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
+        internal_static_com_ywt_gapi_base_log_SaveCommentLogRequest_descriptor,
+        new java.lang.String[] { "TypeCode", "TypeDesc", "Content", "Remark", "Ip", "UserId", });
+    internal_static_com_ywt_gapi_base_log_SaveCommentLogResponse_descriptor =
+      getDescriptor().getMessageTypes().get(1);
+    internal_static_com_ywt_gapi_base_log_SaveCommentLogResponse_fieldAccessorTable = new
+      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
+        internal_static_com_ywt_gapi_base_log_SaveCommentLogResponse_descriptor,
+        new java.lang.String[] { "Code", "Info", });
+    internal_static_com_ywt_gapi_base_log_SaveOpenHisPushApiLogRequest_descriptor =
+      getDescriptor().getMessageTypes().get(2);
+    internal_static_com_ywt_gapi_base_log_SaveOpenHisPushApiLogRequest_fieldAccessorTable = new
+      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
+        internal_static_com_ywt_gapi_base_log_SaveOpenHisPushApiLogRequest_descriptor,
+        new java.lang.String[] { "Path", "Req", "Res", "Difftime", "HttpStatus", });
+    internal_static_com_ywt_gapi_base_log_SaveOpenHisPushApiLogResponse_descriptor =
+      getDescriptor().getMessageTypes().get(3);
+    internal_static_com_ywt_gapi_base_log_SaveOpenHisPushApiLogResponse_fieldAccessorTable = new
+      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
+        internal_static_com_ywt_gapi_base_log_SaveOpenHisPushApiLogResponse_descriptor,
+        new java.lang.String[] { "Code", "Info", });
+  }
+
+  // @@protoc_insertion_point(outer_class_scope)
+}

+ 1219 - 0
src/main/java/com/ywt/gapi/base/log/SaveCommentLogRequest.java

@@ -0,0 +1,1219 @@
+// Generated by the protocol buffer compiler.  DO NOT EDIT!
+// source: log.proto
+
+package com.ywt.gapi.base.log;
+
+/**
+ * <pre>
+ *记录日志请求
+ * </pre>
+ *
+ * Protobuf type {@code com.ywt.gapi.base.log.SaveCommentLogRequest}
+ */
+public  final class SaveCommentLogRequest extends
+    com.google.protobuf.GeneratedMessageV3 implements
+    // @@protoc_insertion_point(message_implements:com.ywt.gapi.base.log.SaveCommentLogRequest)
+    SaveCommentLogRequestOrBuilder {
+  // Use SaveCommentLogRequest.newBuilder() to construct.
+  private SaveCommentLogRequest(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
+    super(builder);
+  }
+  private SaveCommentLogRequest() {
+    typeCode_ = "";
+    typeDesc_ = "";
+    content_ = "";
+    remark_ = "";
+    ip_ = "";
+    userId_ = 0;
+  }
+
+  @java.lang.Override
+  public final com.google.protobuf.UnknownFieldSet
+  getUnknownFields() {
+    return com.google.protobuf.UnknownFieldSet.getDefaultInstance();
+  }
+  private SaveCommentLogRequest(
+      com.google.protobuf.CodedInputStream input,
+      com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+      throws com.google.protobuf.InvalidProtocolBufferException {
+    this();
+    int mutable_bitField0_ = 0;
+    try {
+      boolean done = false;
+      while (!done) {
+        int tag = input.readTag();
+        switch (tag) {
+          case 0:
+            done = true;
+            break;
+          default: {
+            if (!input.skipField(tag)) {
+              done = true;
+            }
+            break;
+          }
+          case 10: {
+            java.lang.String s = input.readStringRequireUtf8();
+
+            typeCode_ = s;
+            break;
+          }
+          case 18: {
+            java.lang.String s = input.readStringRequireUtf8();
+
+            typeDesc_ = s;
+            break;
+          }
+          case 26: {
+            java.lang.String s = input.readStringRequireUtf8();
+
+            content_ = s;
+            break;
+          }
+          case 34: {
+            java.lang.String s = input.readStringRequireUtf8();
+
+            remark_ = s;
+            break;
+          }
+          case 42: {
+            java.lang.String s = input.readStringRequireUtf8();
+
+            ip_ = s;
+            break;
+          }
+          case 48: {
+
+            userId_ = input.readInt32();
+            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 {
+      makeExtensionsImmutable();
+    }
+  }
+  public static final com.google.protobuf.Descriptors.Descriptor
+      getDescriptor() {
+    return com.ywt.gapi.base.log.Log.internal_static_com_ywt_gapi_base_log_SaveCommentLogRequest_descriptor;
+  }
+
+  protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
+      internalGetFieldAccessorTable() {
+    return com.ywt.gapi.base.log.Log.internal_static_com_ywt_gapi_base_log_SaveCommentLogRequest_fieldAccessorTable
+        .ensureFieldAccessorsInitialized(
+            com.ywt.gapi.base.log.SaveCommentLogRequest.class, com.ywt.gapi.base.log.SaveCommentLogRequest.Builder.class);
+  }
+
+  public static final int TYPECODE_FIELD_NUMBER = 1;
+  private volatile java.lang.Object typeCode_;
+  /**
+   * <pre>
+   * 日志分类编码,自定义
+   * </pre>
+   *
+   * <code>string typeCode = 1;</code>
+   */
+  public java.lang.String getTypeCode() {
+    java.lang.Object ref = typeCode_;
+    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();
+      typeCode_ = s;
+      return s;
+    }
+  }
+  /**
+   * <pre>
+   * 日志分类编码,自定义
+   * </pre>
+   *
+   * <code>string typeCode = 1;</code>
+   */
+  public com.google.protobuf.ByteString
+      getTypeCodeBytes() {
+    java.lang.Object ref = typeCode_;
+    if (ref instanceof java.lang.String) {
+      com.google.protobuf.ByteString b = 
+          com.google.protobuf.ByteString.copyFromUtf8(
+              (java.lang.String) ref);
+      typeCode_ = b;
+      return b;
+    } else {
+      return (com.google.protobuf.ByteString) ref;
+    }
+  }
+
+  public static final int TYPEDESC_FIELD_NUMBER = 2;
+  private volatile java.lang.Object typeDesc_;
+  /**
+   * <pre>
+   * 日志分类描述,自定义
+   * </pre>
+   *
+   * <code>string typeDesc = 2;</code>
+   */
+  public java.lang.String getTypeDesc() {
+    java.lang.Object ref = typeDesc_;
+    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();
+      typeDesc_ = s;
+      return s;
+    }
+  }
+  /**
+   * <pre>
+   * 日志分类描述,自定义
+   * </pre>
+   *
+   * <code>string typeDesc = 2;</code>
+   */
+  public com.google.protobuf.ByteString
+      getTypeDescBytes() {
+    java.lang.Object ref = typeDesc_;
+    if (ref instanceof java.lang.String) {
+      com.google.protobuf.ByteString b = 
+          com.google.protobuf.ByteString.copyFromUtf8(
+              (java.lang.String) ref);
+      typeDesc_ = b;
+      return b;
+    } else {
+      return (com.google.protobuf.ByteString) ref;
+    }
+  }
+
+  public static final int CONTENT_FIELD_NUMBER = 3;
+  private volatile java.lang.Object content_;
+  /**
+   * <pre>
+   * 日志的内容,自定义
+   * </pre>
+   *
+   * <code>string content = 3;</code>
+   */
+  public java.lang.String getContent() {
+    java.lang.Object ref = content_;
+    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();
+      content_ = s;
+      return s;
+    }
+  }
+  /**
+   * <pre>
+   * 日志的内容,自定义
+   * </pre>
+   *
+   * <code>string content = 3;</code>
+   */
+  public com.google.protobuf.ByteString
+      getContentBytes() {
+    java.lang.Object ref = content_;
+    if (ref instanceof java.lang.String) {
+      com.google.protobuf.ByteString b = 
+          com.google.protobuf.ByteString.copyFromUtf8(
+              (java.lang.String) ref);
+      content_ = b;
+      return b;
+    } else {
+      return (com.google.protobuf.ByteString) ref;
+    }
+  }
+
+  public static final int REMARK_FIELD_NUMBER = 4;
+  private volatile java.lang.Object remark_;
+  /**
+   * <pre>
+   * 日志备注,自定义
+   * </pre>
+   *
+   * <code>string remark = 4;</code>
+   */
+  public java.lang.String getRemark() {
+    java.lang.Object ref = remark_;
+    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();
+      remark_ = s;
+      return s;
+    }
+  }
+  /**
+   * <pre>
+   * 日志备注,自定义
+   * </pre>
+   *
+   * <code>string remark = 4;</code>
+   */
+  public com.google.protobuf.ByteString
+      getRemarkBytes() {
+    java.lang.Object ref = remark_;
+    if (ref instanceof java.lang.String) {
+      com.google.protobuf.ByteString b = 
+          com.google.protobuf.ByteString.copyFromUtf8(
+              (java.lang.String) ref);
+      remark_ = b;
+      return b;
+    } else {
+      return (com.google.protobuf.ByteString) ref;
+    }
+  }
+
+  public static final int IP_FIELD_NUMBER = 5;
+  private volatile java.lang.Object ip_;
+  /**
+   * <pre>
+   * ip地址
+   * </pre>
+   *
+   * <code>string ip = 5;</code>
+   */
+  public java.lang.String getIp() {
+    java.lang.Object ref = ip_;
+    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();
+      ip_ = s;
+      return s;
+    }
+  }
+  /**
+   * <pre>
+   * ip地址
+   * </pre>
+   *
+   * <code>string ip = 5;</code>
+   */
+  public com.google.protobuf.ByteString
+      getIpBytes() {
+    java.lang.Object ref = ip_;
+    if (ref instanceof java.lang.String) {
+      com.google.protobuf.ByteString b = 
+          com.google.protobuf.ByteString.copyFromUtf8(
+              (java.lang.String) ref);
+      ip_ = b;
+      return b;
+    } else {
+      return (com.google.protobuf.ByteString) ref;
+    }
+  }
+
+  public static final int USERID_FIELD_NUMBER = 6;
+  private int userId_;
+  /**
+   * <code>int32 userId = 6;</code>
+   */
+  public int getUserId() {
+    return userId_;
+  }
+
+  private byte memoizedIsInitialized = -1;
+  public final boolean isInitialized() {
+    byte isInitialized = memoizedIsInitialized;
+    if (isInitialized == 1) return true;
+    if (isInitialized == 0) return false;
+
+    memoizedIsInitialized = 1;
+    return true;
+  }
+
+  public void writeTo(com.google.protobuf.CodedOutputStream output)
+                      throws java.io.IOException {
+    if (!getTypeCodeBytes().isEmpty()) {
+      com.google.protobuf.GeneratedMessageV3.writeString(output, 1, typeCode_);
+    }
+    if (!getTypeDescBytes().isEmpty()) {
+      com.google.protobuf.GeneratedMessageV3.writeString(output, 2, typeDesc_);
+    }
+    if (!getContentBytes().isEmpty()) {
+      com.google.protobuf.GeneratedMessageV3.writeString(output, 3, content_);
+    }
+    if (!getRemarkBytes().isEmpty()) {
+      com.google.protobuf.GeneratedMessageV3.writeString(output, 4, remark_);
+    }
+    if (!getIpBytes().isEmpty()) {
+      com.google.protobuf.GeneratedMessageV3.writeString(output, 5, ip_);
+    }
+    if (userId_ != 0) {
+      output.writeInt32(6, userId_);
+    }
+  }
+
+  public int getSerializedSize() {
+    int size = memoizedSize;
+    if (size != -1) return size;
+
+    size = 0;
+    if (!getTypeCodeBytes().isEmpty()) {
+      size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, typeCode_);
+    }
+    if (!getTypeDescBytes().isEmpty()) {
+      size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, typeDesc_);
+    }
+    if (!getContentBytes().isEmpty()) {
+      size += com.google.protobuf.GeneratedMessageV3.computeStringSize(3, content_);
+    }
+    if (!getRemarkBytes().isEmpty()) {
+      size += com.google.protobuf.GeneratedMessageV3.computeStringSize(4, remark_);
+    }
+    if (!getIpBytes().isEmpty()) {
+      size += com.google.protobuf.GeneratedMessageV3.computeStringSize(5, ip_);
+    }
+    if (userId_ != 0) {
+      size += com.google.protobuf.CodedOutputStream
+        .computeInt32Size(6, userId_);
+    }
+    memoizedSize = size;
+    return size;
+  }
+
+  private static final long serialVersionUID = 0L;
+  @java.lang.Override
+  public boolean equals(final java.lang.Object obj) {
+    if (obj == this) {
+     return true;
+    }
+    if (!(obj instanceof com.ywt.gapi.base.log.SaveCommentLogRequest)) {
+      return super.equals(obj);
+    }
+    com.ywt.gapi.base.log.SaveCommentLogRequest other = (com.ywt.gapi.base.log.SaveCommentLogRequest) obj;
+
+    boolean result = true;
+    result = result && getTypeCode()
+        .equals(other.getTypeCode());
+    result = result && getTypeDesc()
+        .equals(other.getTypeDesc());
+    result = result && getContent()
+        .equals(other.getContent());
+    result = result && getRemark()
+        .equals(other.getRemark());
+    result = result && getIp()
+        .equals(other.getIp());
+    result = result && (getUserId()
+        == other.getUserId());
+    return result;
+  }
+
+  @java.lang.Override
+  public int hashCode() {
+    if (memoizedHashCode != 0) {
+      return memoizedHashCode;
+    }
+    int hash = 41;
+    hash = (19 * hash) + getDescriptor().hashCode();
+    hash = (37 * hash) + TYPECODE_FIELD_NUMBER;
+    hash = (53 * hash) + getTypeCode().hashCode();
+    hash = (37 * hash) + TYPEDESC_FIELD_NUMBER;
+    hash = (53 * hash) + getTypeDesc().hashCode();
+    hash = (37 * hash) + CONTENT_FIELD_NUMBER;
+    hash = (53 * hash) + getContent().hashCode();
+    hash = (37 * hash) + REMARK_FIELD_NUMBER;
+    hash = (53 * hash) + getRemark().hashCode();
+    hash = (37 * hash) + IP_FIELD_NUMBER;
+    hash = (53 * hash) + getIp().hashCode();
+    hash = (37 * hash) + USERID_FIELD_NUMBER;
+    hash = (53 * hash) + getUserId();
+    hash = (29 * hash) + unknownFields.hashCode();
+    memoizedHashCode = hash;
+    return hash;
+  }
+
+  public static com.ywt.gapi.base.log.SaveCommentLogRequest parseFrom(
+      java.nio.ByteBuffer data)
+      throws com.google.protobuf.InvalidProtocolBufferException {
+    return PARSER.parseFrom(data);
+  }
+  public static com.ywt.gapi.base.log.SaveCommentLogRequest parseFrom(
+      java.nio.ByteBuffer data,
+      com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+      throws com.google.protobuf.InvalidProtocolBufferException {
+    return PARSER.parseFrom(data, extensionRegistry);
+  }
+  public static com.ywt.gapi.base.log.SaveCommentLogRequest parseFrom(
+      com.google.protobuf.ByteString data)
+      throws com.google.protobuf.InvalidProtocolBufferException {
+    return PARSER.parseFrom(data);
+  }
+  public static com.ywt.gapi.base.log.SaveCommentLogRequest parseFrom(
+      com.google.protobuf.ByteString data,
+      com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+      throws com.google.protobuf.InvalidProtocolBufferException {
+    return PARSER.parseFrom(data, extensionRegistry);
+  }
+  public static com.ywt.gapi.base.log.SaveCommentLogRequest parseFrom(byte[] data)
+      throws com.google.protobuf.InvalidProtocolBufferException {
+    return PARSER.parseFrom(data);
+  }
+  public static com.ywt.gapi.base.log.SaveCommentLogRequest parseFrom(
+      byte[] data,
+      com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+      throws com.google.protobuf.InvalidProtocolBufferException {
+    return PARSER.parseFrom(data, extensionRegistry);
+  }
+  public static com.ywt.gapi.base.log.SaveCommentLogRequest parseFrom(java.io.InputStream input)
+      throws java.io.IOException {
+    return com.google.protobuf.GeneratedMessageV3
+        .parseWithIOException(PARSER, input);
+  }
+  public static com.ywt.gapi.base.log.SaveCommentLogRequest 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.ywt.gapi.base.log.SaveCommentLogRequest parseDelimitedFrom(java.io.InputStream input)
+      throws java.io.IOException {
+    return com.google.protobuf.GeneratedMessageV3
+        .parseDelimitedWithIOException(PARSER, input);
+  }
+  public static com.ywt.gapi.base.log.SaveCommentLogRequest 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.ywt.gapi.base.log.SaveCommentLogRequest parseFrom(
+      com.google.protobuf.CodedInputStream input)
+      throws java.io.IOException {
+    return com.google.protobuf.GeneratedMessageV3
+        .parseWithIOException(PARSER, input);
+  }
+  public static com.ywt.gapi.base.log.SaveCommentLogRequest 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 Builder newBuilderForType() { return newBuilder(); }
+  public static Builder newBuilder() {
+    return DEFAULT_INSTANCE.toBuilder();
+  }
+  public static Builder newBuilder(com.ywt.gapi.base.log.SaveCommentLogRequest prototype) {
+    return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
+  }
+  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;
+  }
+  /**
+   * <pre>
+   *记录日志请求
+   * </pre>
+   *
+   * Protobuf type {@code com.ywt.gapi.base.log.SaveCommentLogRequest}
+   */
+  public static final class Builder extends
+      com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
+      // @@protoc_insertion_point(builder_implements:com.ywt.gapi.base.log.SaveCommentLogRequest)
+      com.ywt.gapi.base.log.SaveCommentLogRequestOrBuilder {
+    public static final com.google.protobuf.Descriptors.Descriptor
+        getDescriptor() {
+      return com.ywt.gapi.base.log.Log.internal_static_com_ywt_gapi_base_log_SaveCommentLogRequest_descriptor;
+    }
+
+    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
+        internalGetFieldAccessorTable() {
+      return com.ywt.gapi.base.log.Log.internal_static_com_ywt_gapi_base_log_SaveCommentLogRequest_fieldAccessorTable
+          .ensureFieldAccessorsInitialized(
+              com.ywt.gapi.base.log.SaveCommentLogRequest.class, com.ywt.gapi.base.log.SaveCommentLogRequest.Builder.class);
+    }
+
+    // Construct using com.ywt.gapi.base.log.SaveCommentLogRequest.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 Builder clear() {
+      super.clear();
+      typeCode_ = "";
+
+      typeDesc_ = "";
+
+      content_ = "";
+
+      remark_ = "";
+
+      ip_ = "";
+
+      userId_ = 0;
+
+      return this;
+    }
+
+    public com.google.protobuf.Descriptors.Descriptor
+        getDescriptorForType() {
+      return com.ywt.gapi.base.log.Log.internal_static_com_ywt_gapi_base_log_SaveCommentLogRequest_descriptor;
+    }
+
+    public com.ywt.gapi.base.log.SaveCommentLogRequest getDefaultInstanceForType() {
+      return com.ywt.gapi.base.log.SaveCommentLogRequest.getDefaultInstance();
+    }
+
+    public com.ywt.gapi.base.log.SaveCommentLogRequest build() {
+      com.ywt.gapi.base.log.SaveCommentLogRequest result = buildPartial();
+      if (!result.isInitialized()) {
+        throw newUninitializedMessageException(result);
+      }
+      return result;
+    }
+
+    public com.ywt.gapi.base.log.SaveCommentLogRequest buildPartial() {
+      com.ywt.gapi.base.log.SaveCommentLogRequest result = new com.ywt.gapi.base.log.SaveCommentLogRequest(this);
+      result.typeCode_ = typeCode_;
+      result.typeDesc_ = typeDesc_;
+      result.content_ = content_;
+      result.remark_ = remark_;
+      result.ip_ = ip_;
+      result.userId_ = userId_;
+      onBuilt();
+      return result;
+    }
+
+    public Builder clone() {
+      return (Builder) super.clone();
+    }
+    public Builder setField(
+        com.google.protobuf.Descriptors.FieldDescriptor field,
+        Object value) {
+      return (Builder) super.setField(field, value);
+    }
+    public Builder clearField(
+        com.google.protobuf.Descriptors.FieldDescriptor field) {
+      return (Builder) super.clearField(field);
+    }
+    public Builder clearOneof(
+        com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+      return (Builder) super.clearOneof(oneof);
+    }
+    public Builder setRepeatedField(
+        com.google.protobuf.Descriptors.FieldDescriptor field,
+        int index, Object value) {
+      return (Builder) super.setRepeatedField(field, index, value);
+    }
+    public Builder addRepeatedField(
+        com.google.protobuf.Descriptors.FieldDescriptor field,
+        Object value) {
+      return (Builder) super.addRepeatedField(field, value);
+    }
+    public Builder mergeFrom(com.google.protobuf.Message other) {
+      if (other instanceof com.ywt.gapi.base.log.SaveCommentLogRequest) {
+        return mergeFrom((com.ywt.gapi.base.log.SaveCommentLogRequest)other);
+      } else {
+        super.mergeFrom(other);
+        return this;
+      }
+    }
+
+    public Builder mergeFrom(com.ywt.gapi.base.log.SaveCommentLogRequest other) {
+      if (other == com.ywt.gapi.base.log.SaveCommentLogRequest.getDefaultInstance()) return this;
+      if (!other.getTypeCode().isEmpty()) {
+        typeCode_ = other.typeCode_;
+        onChanged();
+      }
+      if (!other.getTypeDesc().isEmpty()) {
+        typeDesc_ = other.typeDesc_;
+        onChanged();
+      }
+      if (!other.getContent().isEmpty()) {
+        content_ = other.content_;
+        onChanged();
+      }
+      if (!other.getRemark().isEmpty()) {
+        remark_ = other.remark_;
+        onChanged();
+      }
+      if (!other.getIp().isEmpty()) {
+        ip_ = other.ip_;
+        onChanged();
+      }
+      if (other.getUserId() != 0) {
+        setUserId(other.getUserId());
+      }
+      onChanged();
+      return this;
+    }
+
+    public final boolean isInitialized() {
+      return true;
+    }
+
+    public Builder mergeFrom(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      com.ywt.gapi.base.log.SaveCommentLogRequest parsedMessage = null;
+      try {
+        parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+        parsedMessage = (com.ywt.gapi.base.log.SaveCommentLogRequest) e.getUnfinishedMessage();
+        throw e.unwrapIOException();
+      } finally {
+        if (parsedMessage != null) {
+          mergeFrom(parsedMessage);
+        }
+      }
+      return this;
+    }
+
+    private java.lang.Object typeCode_ = "";
+    /**
+     * <pre>
+     * 日志分类编码,自定义
+     * </pre>
+     *
+     * <code>string typeCode = 1;</code>
+     */
+    public java.lang.String getTypeCode() {
+      java.lang.Object ref = typeCode_;
+      if (!(ref instanceof java.lang.String)) {
+        com.google.protobuf.ByteString bs =
+            (com.google.protobuf.ByteString) ref;
+        java.lang.String s = bs.toStringUtf8();
+        typeCode_ = s;
+        return s;
+      } else {
+        return (java.lang.String) ref;
+      }
+    }
+    /**
+     * <pre>
+     * 日志分类编码,自定义
+     * </pre>
+     *
+     * <code>string typeCode = 1;</code>
+     */
+    public com.google.protobuf.ByteString
+        getTypeCodeBytes() {
+      java.lang.Object ref = typeCode_;
+      if (ref instanceof String) {
+        com.google.protobuf.ByteString b = 
+            com.google.protobuf.ByteString.copyFromUtf8(
+                (java.lang.String) ref);
+        typeCode_ = b;
+        return b;
+      } else {
+        return (com.google.protobuf.ByteString) ref;
+      }
+    }
+    /**
+     * <pre>
+     * 日志分类编码,自定义
+     * </pre>
+     *
+     * <code>string typeCode = 1;</code>
+     */
+    public Builder setTypeCode(
+        java.lang.String value) {
+      if (value == null) {
+    throw new NullPointerException();
+  }
+  
+      typeCode_ = value;
+      onChanged();
+      return this;
+    }
+    /**
+     * <pre>
+     * 日志分类编码,自定义
+     * </pre>
+     *
+     * <code>string typeCode = 1;</code>
+     */
+    public Builder clearTypeCode() {
+      
+      typeCode_ = getDefaultInstance().getTypeCode();
+      onChanged();
+      return this;
+    }
+    /**
+     * <pre>
+     * 日志分类编码,自定义
+     * </pre>
+     *
+     * <code>string typeCode = 1;</code>
+     */
+    public Builder setTypeCodeBytes(
+        com.google.protobuf.ByteString value) {
+      if (value == null) {
+    throw new NullPointerException();
+  }
+  checkByteStringIsUtf8(value);
+      
+      typeCode_ = value;
+      onChanged();
+      return this;
+    }
+
+    private java.lang.Object typeDesc_ = "";
+    /**
+     * <pre>
+     * 日志分类描述,自定义
+     * </pre>
+     *
+     * <code>string typeDesc = 2;</code>
+     */
+    public java.lang.String getTypeDesc() {
+      java.lang.Object ref = typeDesc_;
+      if (!(ref instanceof java.lang.String)) {
+        com.google.protobuf.ByteString bs =
+            (com.google.protobuf.ByteString) ref;
+        java.lang.String s = bs.toStringUtf8();
+        typeDesc_ = s;
+        return s;
+      } else {
+        return (java.lang.String) ref;
+      }
+    }
+    /**
+     * <pre>
+     * 日志分类描述,自定义
+     * </pre>
+     *
+     * <code>string typeDesc = 2;</code>
+     */
+    public com.google.protobuf.ByteString
+        getTypeDescBytes() {
+      java.lang.Object ref = typeDesc_;
+      if (ref instanceof String) {
+        com.google.protobuf.ByteString b = 
+            com.google.protobuf.ByteString.copyFromUtf8(
+                (java.lang.String) ref);
+        typeDesc_ = b;
+        return b;
+      } else {
+        return (com.google.protobuf.ByteString) ref;
+      }
+    }
+    /**
+     * <pre>
+     * 日志分类描述,自定义
+     * </pre>
+     *
+     * <code>string typeDesc = 2;</code>
+     */
+    public Builder setTypeDesc(
+        java.lang.String value) {
+      if (value == null) {
+    throw new NullPointerException();
+  }
+  
+      typeDesc_ = value;
+      onChanged();
+      return this;
+    }
+    /**
+     * <pre>
+     * 日志分类描述,自定义
+     * </pre>
+     *
+     * <code>string typeDesc = 2;</code>
+     */
+    public Builder clearTypeDesc() {
+      
+      typeDesc_ = getDefaultInstance().getTypeDesc();
+      onChanged();
+      return this;
+    }
+    /**
+     * <pre>
+     * 日志分类描述,自定义
+     * </pre>
+     *
+     * <code>string typeDesc = 2;</code>
+     */
+    public Builder setTypeDescBytes(
+        com.google.protobuf.ByteString value) {
+      if (value == null) {
+    throw new NullPointerException();
+  }
+  checkByteStringIsUtf8(value);
+      
+      typeDesc_ = value;
+      onChanged();
+      return this;
+    }
+
+    private java.lang.Object content_ = "";
+    /**
+     * <pre>
+     * 日志的内容,自定义
+     * </pre>
+     *
+     * <code>string content = 3;</code>
+     */
+    public java.lang.String getContent() {
+      java.lang.Object ref = content_;
+      if (!(ref instanceof java.lang.String)) {
+        com.google.protobuf.ByteString bs =
+            (com.google.protobuf.ByteString) ref;
+        java.lang.String s = bs.toStringUtf8();
+        content_ = s;
+        return s;
+      } else {
+        return (java.lang.String) ref;
+      }
+    }
+    /**
+     * <pre>
+     * 日志的内容,自定义
+     * </pre>
+     *
+     * <code>string content = 3;</code>
+     */
+    public com.google.protobuf.ByteString
+        getContentBytes() {
+      java.lang.Object ref = content_;
+      if (ref instanceof String) {
+        com.google.protobuf.ByteString b = 
+            com.google.protobuf.ByteString.copyFromUtf8(
+                (java.lang.String) ref);
+        content_ = b;
+        return b;
+      } else {
+        return (com.google.protobuf.ByteString) ref;
+      }
+    }
+    /**
+     * <pre>
+     * 日志的内容,自定义
+     * </pre>
+     *
+     * <code>string content = 3;</code>
+     */
+    public Builder setContent(
+        java.lang.String value) {
+      if (value == null) {
+    throw new NullPointerException();
+  }
+  
+      content_ = value;
+      onChanged();
+      return this;
+    }
+    /**
+     * <pre>
+     * 日志的内容,自定义
+     * </pre>
+     *
+     * <code>string content = 3;</code>
+     */
+    public Builder clearContent() {
+      
+      content_ = getDefaultInstance().getContent();
+      onChanged();
+      return this;
+    }
+    /**
+     * <pre>
+     * 日志的内容,自定义
+     * </pre>
+     *
+     * <code>string content = 3;</code>
+     */
+    public Builder setContentBytes(
+        com.google.protobuf.ByteString value) {
+      if (value == null) {
+    throw new NullPointerException();
+  }
+  checkByteStringIsUtf8(value);
+      
+      content_ = value;
+      onChanged();
+      return this;
+    }
+
+    private java.lang.Object remark_ = "";
+    /**
+     * <pre>
+     * 日志备注,自定义
+     * </pre>
+     *
+     * <code>string remark = 4;</code>
+     */
+    public java.lang.String getRemark() {
+      java.lang.Object ref = remark_;
+      if (!(ref instanceof java.lang.String)) {
+        com.google.protobuf.ByteString bs =
+            (com.google.protobuf.ByteString) ref;
+        java.lang.String s = bs.toStringUtf8();
+        remark_ = s;
+        return s;
+      } else {
+        return (java.lang.String) ref;
+      }
+    }
+    /**
+     * <pre>
+     * 日志备注,自定义
+     * </pre>
+     *
+     * <code>string remark = 4;</code>
+     */
+    public com.google.protobuf.ByteString
+        getRemarkBytes() {
+      java.lang.Object ref = remark_;
+      if (ref instanceof String) {
+        com.google.protobuf.ByteString b = 
+            com.google.protobuf.ByteString.copyFromUtf8(
+                (java.lang.String) ref);
+        remark_ = b;
+        return b;
+      } else {
+        return (com.google.protobuf.ByteString) ref;
+      }
+    }
+    /**
+     * <pre>
+     * 日志备注,自定义
+     * </pre>
+     *
+     * <code>string remark = 4;</code>
+     */
+    public Builder setRemark(
+        java.lang.String value) {
+      if (value == null) {
+    throw new NullPointerException();
+  }
+  
+      remark_ = value;
+      onChanged();
+      return this;
+    }
+    /**
+     * <pre>
+     * 日志备注,自定义
+     * </pre>
+     *
+     * <code>string remark = 4;</code>
+     */
+    public Builder clearRemark() {
+      
+      remark_ = getDefaultInstance().getRemark();
+      onChanged();
+      return this;
+    }
+    /**
+     * <pre>
+     * 日志备注,自定义
+     * </pre>
+     *
+     * <code>string remark = 4;</code>
+     */
+    public Builder setRemarkBytes(
+        com.google.protobuf.ByteString value) {
+      if (value == null) {
+    throw new NullPointerException();
+  }
+  checkByteStringIsUtf8(value);
+      
+      remark_ = value;
+      onChanged();
+      return this;
+    }
+
+    private java.lang.Object ip_ = "";
+    /**
+     * <pre>
+     * ip地址
+     * </pre>
+     *
+     * <code>string ip = 5;</code>
+     */
+    public java.lang.String getIp() {
+      java.lang.Object ref = ip_;
+      if (!(ref instanceof java.lang.String)) {
+        com.google.protobuf.ByteString bs =
+            (com.google.protobuf.ByteString) ref;
+        java.lang.String s = bs.toStringUtf8();
+        ip_ = s;
+        return s;
+      } else {
+        return (java.lang.String) ref;
+      }
+    }
+    /**
+     * <pre>
+     * ip地址
+     * </pre>
+     *
+     * <code>string ip = 5;</code>
+     */
+    public com.google.protobuf.ByteString
+        getIpBytes() {
+      java.lang.Object ref = ip_;
+      if (ref instanceof String) {
+        com.google.protobuf.ByteString b = 
+            com.google.protobuf.ByteString.copyFromUtf8(
+                (java.lang.String) ref);
+        ip_ = b;
+        return b;
+      } else {
+        return (com.google.protobuf.ByteString) ref;
+      }
+    }
+    /**
+     * <pre>
+     * ip地址
+     * </pre>
+     *
+     * <code>string ip = 5;</code>
+     */
+    public Builder setIp(
+        java.lang.String value) {
+      if (value == null) {
+    throw new NullPointerException();
+  }
+  
+      ip_ = value;
+      onChanged();
+      return this;
+    }
+    /**
+     * <pre>
+     * ip地址
+     * </pre>
+     *
+     * <code>string ip = 5;</code>
+     */
+    public Builder clearIp() {
+      
+      ip_ = getDefaultInstance().getIp();
+      onChanged();
+      return this;
+    }
+    /**
+     * <pre>
+     * ip地址
+     * </pre>
+     *
+     * <code>string ip = 5;</code>
+     */
+    public Builder setIpBytes(
+        com.google.protobuf.ByteString value) {
+      if (value == null) {
+    throw new NullPointerException();
+  }
+  checkByteStringIsUtf8(value);
+      
+      ip_ = value;
+      onChanged();
+      return this;
+    }
+
+    private int userId_ ;
+    /**
+     * <code>int32 userId = 6;</code>
+     */
+    public int getUserId() {
+      return userId_;
+    }
+    /**
+     * <code>int32 userId = 6;</code>
+     */
+    public Builder setUserId(int value) {
+      
+      userId_ = value;
+      onChanged();
+      return this;
+    }
+    /**
+     * <code>int32 userId = 6;</code>
+     */
+    public Builder clearUserId() {
+      
+      userId_ = 0;
+      onChanged();
+      return this;
+    }
+    public final Builder setUnknownFields(
+        final com.google.protobuf.UnknownFieldSet unknownFields) {
+      return this;
+    }
+
+    public final Builder mergeUnknownFields(
+        final com.google.protobuf.UnknownFieldSet unknownFields) {
+      return this;
+    }
+
+
+    // @@protoc_insertion_point(builder_scope:com.ywt.gapi.base.log.SaveCommentLogRequest)
+  }
+
+  // @@protoc_insertion_point(class_scope:com.ywt.gapi.base.log.SaveCommentLogRequest)
+  private static final com.ywt.gapi.base.log.SaveCommentLogRequest DEFAULT_INSTANCE;
+  static {
+    DEFAULT_INSTANCE = new com.ywt.gapi.base.log.SaveCommentLogRequest();
+  }
+
+  public static com.ywt.gapi.base.log.SaveCommentLogRequest getDefaultInstance() {
+    return DEFAULT_INSTANCE;
+  }
+
+  private static final com.google.protobuf.Parser<SaveCommentLogRequest>
+      PARSER = new com.google.protobuf.AbstractParser<SaveCommentLogRequest>() {
+    public SaveCommentLogRequest parsePartialFrom(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+        return new SaveCommentLogRequest(input, extensionRegistry);
+    }
+  };
+
+  public static com.google.protobuf.Parser<SaveCommentLogRequest> parser() {
+    return PARSER;
+  }
+
+  @java.lang.Override
+  public com.google.protobuf.Parser<SaveCommentLogRequest> getParserForType() {
+    return PARSER;
+  }
+
+  public com.ywt.gapi.base.log.SaveCommentLogRequest getDefaultInstanceForType() {
+    return DEFAULT_INSTANCE;
+  }
+
+}
+

+ 104 - 0
src/main/java/com/ywt/gapi/base/log/SaveCommentLogRequestOrBuilder.java

@@ -0,0 +1,104 @@
+// Generated by the protocol buffer compiler.  DO NOT EDIT!
+// source: log.proto
+
+package com.ywt.gapi.base.log;
+
+public interface SaveCommentLogRequestOrBuilder extends
+    // @@protoc_insertion_point(interface_extends:com.ywt.gapi.base.log.SaveCommentLogRequest)
+    com.google.protobuf.MessageOrBuilder {
+
+  /**
+   * <pre>
+   * 日志分类编码,自定义
+   * </pre>
+   *
+   * <code>string typeCode = 1;</code>
+   */
+  java.lang.String getTypeCode();
+  /**
+   * <pre>
+   * 日志分类编码,自定义
+   * </pre>
+   *
+   * <code>string typeCode = 1;</code>
+   */
+  com.google.protobuf.ByteString
+      getTypeCodeBytes();
+
+  /**
+   * <pre>
+   * 日志分类描述,自定义
+   * </pre>
+   *
+   * <code>string typeDesc = 2;</code>
+   */
+  java.lang.String getTypeDesc();
+  /**
+   * <pre>
+   * 日志分类描述,自定义
+   * </pre>
+   *
+   * <code>string typeDesc = 2;</code>
+   */
+  com.google.protobuf.ByteString
+      getTypeDescBytes();
+
+  /**
+   * <pre>
+   * 日志的内容,自定义
+   * </pre>
+   *
+   * <code>string content = 3;</code>
+   */
+  java.lang.String getContent();
+  /**
+   * <pre>
+   * 日志的内容,自定义
+   * </pre>
+   *
+   * <code>string content = 3;</code>
+   */
+  com.google.protobuf.ByteString
+      getContentBytes();
+
+  /**
+   * <pre>
+   * 日志备注,自定义
+   * </pre>
+   *
+   * <code>string remark = 4;</code>
+   */
+  java.lang.String getRemark();
+  /**
+   * <pre>
+   * 日志备注,自定义
+   * </pre>
+   *
+   * <code>string remark = 4;</code>
+   */
+  com.google.protobuf.ByteString
+      getRemarkBytes();
+
+  /**
+   * <pre>
+   * ip地址
+   * </pre>
+   *
+   * <code>string ip = 5;</code>
+   */
+  java.lang.String getIp();
+  /**
+   * <pre>
+   * ip地址
+   * </pre>
+   *
+   * <code>string ip = 5;</code>
+   */
+  com.google.protobuf.ByteString
+      getIpBytes();
+
+  /**
+   * <code>int32 userId = 6;</code>
+   */
+  int getUserId();
+}

+ 571 - 0
src/main/java/com/ywt/gapi/base/log/SaveCommentLogResponse.java

@@ -0,0 +1,571 @@
+// Generated by the protocol buffer compiler.  DO NOT EDIT!
+// source: log.proto
+
+package com.ywt.gapi.base.log;
+
+/**
+ * <pre>
+ *记录日志响应
+ * </pre>
+ *
+ * Protobuf type {@code com.ywt.gapi.base.log.SaveCommentLogResponse}
+ */
+public  final class SaveCommentLogResponse extends
+    com.google.protobuf.GeneratedMessageV3 implements
+    // @@protoc_insertion_point(message_implements:com.ywt.gapi.base.log.SaveCommentLogResponse)
+    SaveCommentLogResponseOrBuilder {
+  // Use SaveCommentLogResponse.newBuilder() to construct.
+  private SaveCommentLogResponse(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
+    super(builder);
+  }
+  private SaveCommentLogResponse() {
+    code_ = 0;
+    info_ = "";
+  }
+
+  @java.lang.Override
+  public final com.google.protobuf.UnknownFieldSet
+  getUnknownFields() {
+    return com.google.protobuf.UnknownFieldSet.getDefaultInstance();
+  }
+  private SaveCommentLogResponse(
+      com.google.protobuf.CodedInputStream input,
+      com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+      throws com.google.protobuf.InvalidProtocolBufferException {
+    this();
+    int mutable_bitField0_ = 0;
+    try {
+      boolean done = false;
+      while (!done) {
+        int tag = input.readTag();
+        switch (tag) {
+          case 0:
+            done = true;
+            break;
+          default: {
+            if (!input.skipField(tag)) {
+              done = true;
+            }
+            break;
+          }
+          case 8: {
+
+            code_ = input.readInt32();
+            break;
+          }
+          case 18: {
+            java.lang.String s = input.readStringRequireUtf8();
+
+            info_ = s;
+            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 {
+      makeExtensionsImmutable();
+    }
+  }
+  public static final com.google.protobuf.Descriptors.Descriptor
+      getDescriptor() {
+    return com.ywt.gapi.base.log.Log.internal_static_com_ywt_gapi_base_log_SaveCommentLogResponse_descriptor;
+  }
+
+  protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
+      internalGetFieldAccessorTable() {
+    return com.ywt.gapi.base.log.Log.internal_static_com_ywt_gapi_base_log_SaveCommentLogResponse_fieldAccessorTable
+        .ensureFieldAccessorsInitialized(
+            com.ywt.gapi.base.log.SaveCommentLogResponse.class, com.ywt.gapi.base.log.SaveCommentLogResponse.Builder.class);
+  }
+
+  public static final int CODE_FIELD_NUMBER = 1;
+  private int code_;
+  /**
+   * <code>int32 code = 1;</code>
+   */
+  public int getCode() {
+    return code_;
+  }
+
+  public static final int INFO_FIELD_NUMBER = 2;
+  private volatile java.lang.Object info_;
+  /**
+   * <code>string info = 2;</code>
+   */
+  public java.lang.String getInfo() {
+    java.lang.Object ref = info_;
+    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();
+      info_ = s;
+      return s;
+    }
+  }
+  /**
+   * <code>string info = 2;</code>
+   */
+  public com.google.protobuf.ByteString
+      getInfoBytes() {
+    java.lang.Object ref = info_;
+    if (ref instanceof java.lang.String) {
+      com.google.protobuf.ByteString b = 
+          com.google.protobuf.ByteString.copyFromUtf8(
+              (java.lang.String) ref);
+      info_ = b;
+      return b;
+    } else {
+      return (com.google.protobuf.ByteString) ref;
+    }
+  }
+
+  private byte memoizedIsInitialized = -1;
+  public final boolean isInitialized() {
+    byte isInitialized = memoizedIsInitialized;
+    if (isInitialized == 1) return true;
+    if (isInitialized == 0) return false;
+
+    memoizedIsInitialized = 1;
+    return true;
+  }
+
+  public void writeTo(com.google.protobuf.CodedOutputStream output)
+                      throws java.io.IOException {
+    if (code_ != 0) {
+      output.writeInt32(1, code_);
+    }
+    if (!getInfoBytes().isEmpty()) {
+      com.google.protobuf.GeneratedMessageV3.writeString(output, 2, info_);
+    }
+  }
+
+  public int getSerializedSize() {
+    int size = memoizedSize;
+    if (size != -1) return size;
+
+    size = 0;
+    if (code_ != 0) {
+      size += com.google.protobuf.CodedOutputStream
+        .computeInt32Size(1, code_);
+    }
+    if (!getInfoBytes().isEmpty()) {
+      size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, info_);
+    }
+    memoizedSize = size;
+    return size;
+  }
+
+  private static final long serialVersionUID = 0L;
+  @java.lang.Override
+  public boolean equals(final java.lang.Object obj) {
+    if (obj == this) {
+     return true;
+    }
+    if (!(obj instanceof com.ywt.gapi.base.log.SaveCommentLogResponse)) {
+      return super.equals(obj);
+    }
+    com.ywt.gapi.base.log.SaveCommentLogResponse other = (com.ywt.gapi.base.log.SaveCommentLogResponse) obj;
+
+    boolean result = true;
+    result = result && (getCode()
+        == other.getCode());
+    result = result && getInfo()
+        .equals(other.getInfo());
+    return result;
+  }
+
+  @java.lang.Override
+  public int hashCode() {
+    if (memoizedHashCode != 0) {
+      return memoizedHashCode;
+    }
+    int hash = 41;
+    hash = (19 * hash) + getDescriptor().hashCode();
+    hash = (37 * hash) + CODE_FIELD_NUMBER;
+    hash = (53 * hash) + getCode();
+    hash = (37 * hash) + INFO_FIELD_NUMBER;
+    hash = (53 * hash) + getInfo().hashCode();
+    hash = (29 * hash) + unknownFields.hashCode();
+    memoizedHashCode = hash;
+    return hash;
+  }
+
+  public static com.ywt.gapi.base.log.SaveCommentLogResponse parseFrom(
+      java.nio.ByteBuffer data)
+      throws com.google.protobuf.InvalidProtocolBufferException {
+    return PARSER.parseFrom(data);
+  }
+  public static com.ywt.gapi.base.log.SaveCommentLogResponse parseFrom(
+      java.nio.ByteBuffer data,
+      com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+      throws com.google.protobuf.InvalidProtocolBufferException {
+    return PARSER.parseFrom(data, extensionRegistry);
+  }
+  public static com.ywt.gapi.base.log.SaveCommentLogResponse parseFrom(
+      com.google.protobuf.ByteString data)
+      throws com.google.protobuf.InvalidProtocolBufferException {
+    return PARSER.parseFrom(data);
+  }
+  public static com.ywt.gapi.base.log.SaveCommentLogResponse parseFrom(
+      com.google.protobuf.ByteString data,
+      com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+      throws com.google.protobuf.InvalidProtocolBufferException {
+    return PARSER.parseFrom(data, extensionRegistry);
+  }
+  public static com.ywt.gapi.base.log.SaveCommentLogResponse parseFrom(byte[] data)
+      throws com.google.protobuf.InvalidProtocolBufferException {
+    return PARSER.parseFrom(data);
+  }
+  public static com.ywt.gapi.base.log.SaveCommentLogResponse parseFrom(
+      byte[] data,
+      com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+      throws com.google.protobuf.InvalidProtocolBufferException {
+    return PARSER.parseFrom(data, extensionRegistry);
+  }
+  public static com.ywt.gapi.base.log.SaveCommentLogResponse parseFrom(java.io.InputStream input)
+      throws java.io.IOException {
+    return com.google.protobuf.GeneratedMessageV3
+        .parseWithIOException(PARSER, input);
+  }
+  public static com.ywt.gapi.base.log.SaveCommentLogResponse 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.ywt.gapi.base.log.SaveCommentLogResponse parseDelimitedFrom(java.io.InputStream input)
+      throws java.io.IOException {
+    return com.google.protobuf.GeneratedMessageV3
+        .parseDelimitedWithIOException(PARSER, input);
+  }
+  public static com.ywt.gapi.base.log.SaveCommentLogResponse 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.ywt.gapi.base.log.SaveCommentLogResponse parseFrom(
+      com.google.protobuf.CodedInputStream input)
+      throws java.io.IOException {
+    return com.google.protobuf.GeneratedMessageV3
+        .parseWithIOException(PARSER, input);
+  }
+  public static com.ywt.gapi.base.log.SaveCommentLogResponse 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 Builder newBuilderForType() { return newBuilder(); }
+  public static Builder newBuilder() {
+    return DEFAULT_INSTANCE.toBuilder();
+  }
+  public static Builder newBuilder(com.ywt.gapi.base.log.SaveCommentLogResponse prototype) {
+    return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
+  }
+  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;
+  }
+  /**
+   * <pre>
+   *记录日志响应
+   * </pre>
+   *
+   * Protobuf type {@code com.ywt.gapi.base.log.SaveCommentLogResponse}
+   */
+  public static final class Builder extends
+      com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
+      // @@protoc_insertion_point(builder_implements:com.ywt.gapi.base.log.SaveCommentLogResponse)
+      com.ywt.gapi.base.log.SaveCommentLogResponseOrBuilder {
+    public static final com.google.protobuf.Descriptors.Descriptor
+        getDescriptor() {
+      return com.ywt.gapi.base.log.Log.internal_static_com_ywt_gapi_base_log_SaveCommentLogResponse_descriptor;
+    }
+
+    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
+        internalGetFieldAccessorTable() {
+      return com.ywt.gapi.base.log.Log.internal_static_com_ywt_gapi_base_log_SaveCommentLogResponse_fieldAccessorTable
+          .ensureFieldAccessorsInitialized(
+              com.ywt.gapi.base.log.SaveCommentLogResponse.class, com.ywt.gapi.base.log.SaveCommentLogResponse.Builder.class);
+    }
+
+    // Construct using com.ywt.gapi.base.log.SaveCommentLogResponse.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 Builder clear() {
+      super.clear();
+      code_ = 0;
+
+      info_ = "";
+
+      return this;
+    }
+
+    public com.google.protobuf.Descriptors.Descriptor
+        getDescriptorForType() {
+      return com.ywt.gapi.base.log.Log.internal_static_com_ywt_gapi_base_log_SaveCommentLogResponse_descriptor;
+    }
+
+    public com.ywt.gapi.base.log.SaveCommentLogResponse getDefaultInstanceForType() {
+      return com.ywt.gapi.base.log.SaveCommentLogResponse.getDefaultInstance();
+    }
+
+    public com.ywt.gapi.base.log.SaveCommentLogResponse build() {
+      com.ywt.gapi.base.log.SaveCommentLogResponse result = buildPartial();
+      if (!result.isInitialized()) {
+        throw newUninitializedMessageException(result);
+      }
+      return result;
+    }
+
+    public com.ywt.gapi.base.log.SaveCommentLogResponse buildPartial() {
+      com.ywt.gapi.base.log.SaveCommentLogResponse result = new com.ywt.gapi.base.log.SaveCommentLogResponse(this);
+      result.code_ = code_;
+      result.info_ = info_;
+      onBuilt();
+      return result;
+    }
+
+    public Builder clone() {
+      return (Builder) super.clone();
+    }
+    public Builder setField(
+        com.google.protobuf.Descriptors.FieldDescriptor field,
+        Object value) {
+      return (Builder) super.setField(field, value);
+    }
+    public Builder clearField(
+        com.google.protobuf.Descriptors.FieldDescriptor field) {
+      return (Builder) super.clearField(field);
+    }
+    public Builder clearOneof(
+        com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+      return (Builder) super.clearOneof(oneof);
+    }
+    public Builder setRepeatedField(
+        com.google.protobuf.Descriptors.FieldDescriptor field,
+        int index, Object value) {
+      return (Builder) super.setRepeatedField(field, index, value);
+    }
+    public Builder addRepeatedField(
+        com.google.protobuf.Descriptors.FieldDescriptor field,
+        Object value) {
+      return (Builder) super.addRepeatedField(field, value);
+    }
+    public Builder mergeFrom(com.google.protobuf.Message other) {
+      if (other instanceof com.ywt.gapi.base.log.SaveCommentLogResponse) {
+        return mergeFrom((com.ywt.gapi.base.log.SaveCommentLogResponse)other);
+      } else {
+        super.mergeFrom(other);
+        return this;
+      }
+    }
+
+    public Builder mergeFrom(com.ywt.gapi.base.log.SaveCommentLogResponse other) {
+      if (other == com.ywt.gapi.base.log.SaveCommentLogResponse.getDefaultInstance()) return this;
+      if (other.getCode() != 0) {
+        setCode(other.getCode());
+      }
+      if (!other.getInfo().isEmpty()) {
+        info_ = other.info_;
+        onChanged();
+      }
+      onChanged();
+      return this;
+    }
+
+    public final boolean isInitialized() {
+      return true;
+    }
+
+    public Builder mergeFrom(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      com.ywt.gapi.base.log.SaveCommentLogResponse parsedMessage = null;
+      try {
+        parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+        parsedMessage = (com.ywt.gapi.base.log.SaveCommentLogResponse) e.getUnfinishedMessage();
+        throw e.unwrapIOException();
+      } finally {
+        if (parsedMessage != null) {
+          mergeFrom(parsedMessage);
+        }
+      }
+      return this;
+    }
+
+    private int code_ ;
+    /**
+     * <code>int32 code = 1;</code>
+     */
+    public int getCode() {
+      return code_;
+    }
+    /**
+     * <code>int32 code = 1;</code>
+     */
+    public Builder setCode(int value) {
+      
+      code_ = value;
+      onChanged();
+      return this;
+    }
+    /**
+     * <code>int32 code = 1;</code>
+     */
+    public Builder clearCode() {
+      
+      code_ = 0;
+      onChanged();
+      return this;
+    }
+
+    private java.lang.Object info_ = "";
+    /**
+     * <code>string info = 2;</code>
+     */
+    public java.lang.String getInfo() {
+      java.lang.Object ref = info_;
+      if (!(ref instanceof java.lang.String)) {
+        com.google.protobuf.ByteString bs =
+            (com.google.protobuf.ByteString) ref;
+        java.lang.String s = bs.toStringUtf8();
+        info_ = s;
+        return s;
+      } else {
+        return (java.lang.String) ref;
+      }
+    }
+    /**
+     * <code>string info = 2;</code>
+     */
+    public com.google.protobuf.ByteString
+        getInfoBytes() {
+      java.lang.Object ref = info_;
+      if (ref instanceof String) {
+        com.google.protobuf.ByteString b = 
+            com.google.protobuf.ByteString.copyFromUtf8(
+                (java.lang.String) ref);
+        info_ = b;
+        return b;
+      } else {
+        return (com.google.protobuf.ByteString) ref;
+      }
+    }
+    /**
+     * <code>string info = 2;</code>
+     */
+    public Builder setInfo(
+        java.lang.String value) {
+      if (value == null) {
+    throw new NullPointerException();
+  }
+  
+      info_ = value;
+      onChanged();
+      return this;
+    }
+    /**
+     * <code>string info = 2;</code>
+     */
+    public Builder clearInfo() {
+      
+      info_ = getDefaultInstance().getInfo();
+      onChanged();
+      return this;
+    }
+    /**
+     * <code>string info = 2;</code>
+     */
+    public Builder setInfoBytes(
+        com.google.protobuf.ByteString value) {
+      if (value == null) {
+    throw new NullPointerException();
+  }
+  checkByteStringIsUtf8(value);
+      
+      info_ = value;
+      onChanged();
+      return this;
+    }
+    public final Builder setUnknownFields(
+        final com.google.protobuf.UnknownFieldSet unknownFields) {
+      return this;
+    }
+
+    public final Builder mergeUnknownFields(
+        final com.google.protobuf.UnknownFieldSet unknownFields) {
+      return this;
+    }
+
+
+    // @@protoc_insertion_point(builder_scope:com.ywt.gapi.base.log.SaveCommentLogResponse)
+  }
+
+  // @@protoc_insertion_point(class_scope:com.ywt.gapi.base.log.SaveCommentLogResponse)
+  private static final com.ywt.gapi.base.log.SaveCommentLogResponse DEFAULT_INSTANCE;
+  static {
+    DEFAULT_INSTANCE = new com.ywt.gapi.base.log.SaveCommentLogResponse();
+  }
+
+  public static com.ywt.gapi.base.log.SaveCommentLogResponse getDefaultInstance() {
+    return DEFAULT_INSTANCE;
+  }
+
+  private static final com.google.protobuf.Parser<SaveCommentLogResponse>
+      PARSER = new com.google.protobuf.AbstractParser<SaveCommentLogResponse>() {
+    public SaveCommentLogResponse parsePartialFrom(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+        return new SaveCommentLogResponse(input, extensionRegistry);
+    }
+  };
+
+  public static com.google.protobuf.Parser<SaveCommentLogResponse> parser() {
+    return PARSER;
+  }
+
+  @java.lang.Override
+  public com.google.protobuf.Parser<SaveCommentLogResponse> getParserForType() {
+    return PARSER;
+  }
+
+  public com.ywt.gapi.base.log.SaveCommentLogResponse getDefaultInstanceForType() {
+    return DEFAULT_INSTANCE;
+  }
+
+}
+

+ 24 - 0
src/main/java/com/ywt/gapi/base/log/SaveCommentLogResponseOrBuilder.java

@@ -0,0 +1,24 @@
+// Generated by the protocol buffer compiler.  DO NOT EDIT!
+// source: log.proto
+
+package com.ywt.gapi.base.log;
+
+public interface SaveCommentLogResponseOrBuilder extends
+    // @@protoc_insertion_point(interface_extends:com.ywt.gapi.base.log.SaveCommentLogResponse)
+    com.google.protobuf.MessageOrBuilder {
+
+  /**
+   * <code>int32 code = 1;</code>
+   */
+  int getCode();
+
+  /**
+   * <code>string info = 2;</code>
+   */
+  java.lang.String getInfo();
+  /**
+   * <code>string info = 2;</code>
+   */
+  com.google.protobuf.ByteString
+      getInfoBytes();
+}

+ 999 - 0
src/main/java/com/ywt/gapi/base/log/SaveOpenHisPushApiLogRequest.java

@@ -0,0 +1,999 @@
+// Generated by the protocol buffer compiler.  DO NOT EDIT!
+// source: log.proto
+
+package com.ywt.gapi.base.log;
+
+/**
+ * <pre>
+ *记录日志请求
+ * </pre>
+ *
+ * Protobuf type {@code com.ywt.gapi.base.log.SaveOpenHisPushApiLogRequest}
+ */
+public  final class SaveOpenHisPushApiLogRequest extends
+    com.google.protobuf.GeneratedMessageV3 implements
+    // @@protoc_insertion_point(message_implements:com.ywt.gapi.base.log.SaveOpenHisPushApiLogRequest)
+    SaveOpenHisPushApiLogRequestOrBuilder {
+  // Use SaveOpenHisPushApiLogRequest.newBuilder() to construct.
+  private SaveOpenHisPushApiLogRequest(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
+    super(builder);
+  }
+  private SaveOpenHisPushApiLogRequest() {
+    path_ = "";
+    req_ = "";
+    res_ = "";
+    difftime_ = 0;
+    httpStatus_ = 0;
+  }
+
+  @java.lang.Override
+  public final com.google.protobuf.UnknownFieldSet
+  getUnknownFields() {
+    return com.google.protobuf.UnknownFieldSet.getDefaultInstance();
+  }
+  private SaveOpenHisPushApiLogRequest(
+      com.google.protobuf.CodedInputStream input,
+      com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+      throws com.google.protobuf.InvalidProtocolBufferException {
+    this();
+    int mutable_bitField0_ = 0;
+    try {
+      boolean done = false;
+      while (!done) {
+        int tag = input.readTag();
+        switch (tag) {
+          case 0:
+            done = true;
+            break;
+          default: {
+            if (!input.skipField(tag)) {
+              done = true;
+            }
+            break;
+          }
+          case 10: {
+            java.lang.String s = input.readStringRequireUtf8();
+
+            path_ = s;
+            break;
+          }
+          case 18: {
+            java.lang.String s = input.readStringRequireUtf8();
+
+            req_ = s;
+            break;
+          }
+          case 26: {
+            java.lang.String s = input.readStringRequireUtf8();
+
+            res_ = s;
+            break;
+          }
+          case 32: {
+
+            difftime_ = input.readInt32();
+            break;
+          }
+          case 48: {
+
+            httpStatus_ = input.readInt32();
+            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 {
+      makeExtensionsImmutable();
+    }
+  }
+  public static final com.google.protobuf.Descriptors.Descriptor
+      getDescriptor() {
+    return com.ywt.gapi.base.log.Log.internal_static_com_ywt_gapi_base_log_SaveOpenHisPushApiLogRequest_descriptor;
+  }
+
+  protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
+      internalGetFieldAccessorTable() {
+    return com.ywt.gapi.base.log.Log.internal_static_com_ywt_gapi_base_log_SaveOpenHisPushApiLogRequest_fieldAccessorTable
+        .ensureFieldAccessorsInitialized(
+            com.ywt.gapi.base.log.SaveOpenHisPushApiLogRequest.class, com.ywt.gapi.base.log.SaveOpenHisPushApiLogRequest.Builder.class);
+  }
+
+  public static final int PATH_FIELD_NUMBER = 1;
+  private volatile java.lang.Object path_;
+  /**
+   * <pre>
+   * 请求路径
+   * </pre>
+   *
+   * <code>string path = 1;</code>
+   */
+  public java.lang.String getPath() {
+    java.lang.Object ref = path_;
+    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();
+      path_ = s;
+      return s;
+    }
+  }
+  /**
+   * <pre>
+   * 请求路径
+   * </pre>
+   *
+   * <code>string path = 1;</code>
+   */
+  public com.google.protobuf.ByteString
+      getPathBytes() {
+    java.lang.Object ref = path_;
+    if (ref instanceof java.lang.String) {
+      com.google.protobuf.ByteString b = 
+          com.google.protobuf.ByteString.copyFromUtf8(
+              (java.lang.String) ref);
+      path_ = b;
+      return b;
+    } else {
+      return (com.google.protobuf.ByteString) ref;
+    }
+  }
+
+  public static final int REQ_FIELD_NUMBER = 2;
+  private volatile java.lang.Object req_;
+  /**
+   * <pre>
+   * 请求json
+   * </pre>
+   *
+   * <code>string req = 2;</code>
+   */
+  public java.lang.String getReq() {
+    java.lang.Object ref = req_;
+    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();
+      req_ = s;
+      return s;
+    }
+  }
+  /**
+   * <pre>
+   * 请求json
+   * </pre>
+   *
+   * <code>string req = 2;</code>
+   */
+  public com.google.protobuf.ByteString
+      getReqBytes() {
+    java.lang.Object ref = req_;
+    if (ref instanceof java.lang.String) {
+      com.google.protobuf.ByteString b = 
+          com.google.protobuf.ByteString.copyFromUtf8(
+              (java.lang.String) ref);
+      req_ = b;
+      return b;
+    } else {
+      return (com.google.protobuf.ByteString) ref;
+    }
+  }
+
+  public static final int RES_FIELD_NUMBER = 3;
+  private volatile java.lang.Object res_;
+  /**
+   * <pre>
+   * 响应json
+   * </pre>
+   *
+   * <code>string res = 3;</code>
+   */
+  public java.lang.String getRes() {
+    java.lang.Object ref = res_;
+    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();
+      res_ = s;
+      return s;
+    }
+  }
+  /**
+   * <pre>
+   * 响应json
+   * </pre>
+   *
+   * <code>string res = 3;</code>
+   */
+  public com.google.protobuf.ByteString
+      getResBytes() {
+    java.lang.Object ref = res_;
+    if (ref instanceof java.lang.String) {
+      com.google.protobuf.ByteString b = 
+          com.google.protobuf.ByteString.copyFromUtf8(
+              (java.lang.String) ref);
+      res_ = b;
+      return b;
+    } else {
+      return (com.google.protobuf.ByteString) ref;
+    }
+  }
+
+  public static final int DIFFTIME_FIELD_NUMBER = 4;
+  private int difftime_;
+  /**
+   * <pre>
+   * 响应时间
+   * </pre>
+   *
+   * <code>int32 difftime = 4;</code>
+   */
+  public int getDifftime() {
+    return difftime_;
+  }
+
+  public static final int HTTPSTATUS_FIELD_NUMBER = 6;
+  private int httpStatus_;
+  /**
+   * <pre>
+   * 响应状态
+   * </pre>
+   *
+   * <code>int32 httpStatus = 6;</code>
+   */
+  public int getHttpStatus() {
+    return httpStatus_;
+  }
+
+  private byte memoizedIsInitialized = -1;
+  public final boolean isInitialized() {
+    byte isInitialized = memoizedIsInitialized;
+    if (isInitialized == 1) return true;
+    if (isInitialized == 0) return false;
+
+    memoizedIsInitialized = 1;
+    return true;
+  }
+
+  public void writeTo(com.google.protobuf.CodedOutputStream output)
+                      throws java.io.IOException {
+    if (!getPathBytes().isEmpty()) {
+      com.google.protobuf.GeneratedMessageV3.writeString(output, 1, path_);
+    }
+    if (!getReqBytes().isEmpty()) {
+      com.google.protobuf.GeneratedMessageV3.writeString(output, 2, req_);
+    }
+    if (!getResBytes().isEmpty()) {
+      com.google.protobuf.GeneratedMessageV3.writeString(output, 3, res_);
+    }
+    if (difftime_ != 0) {
+      output.writeInt32(4, difftime_);
+    }
+    if (httpStatus_ != 0) {
+      output.writeInt32(6, httpStatus_);
+    }
+  }
+
+  public int getSerializedSize() {
+    int size = memoizedSize;
+    if (size != -1) return size;
+
+    size = 0;
+    if (!getPathBytes().isEmpty()) {
+      size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, path_);
+    }
+    if (!getReqBytes().isEmpty()) {
+      size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, req_);
+    }
+    if (!getResBytes().isEmpty()) {
+      size += com.google.protobuf.GeneratedMessageV3.computeStringSize(3, res_);
+    }
+    if (difftime_ != 0) {
+      size += com.google.protobuf.CodedOutputStream
+        .computeInt32Size(4, difftime_);
+    }
+    if (httpStatus_ != 0) {
+      size += com.google.protobuf.CodedOutputStream
+        .computeInt32Size(6, httpStatus_);
+    }
+    memoizedSize = size;
+    return size;
+  }
+
+  private static final long serialVersionUID = 0L;
+  @java.lang.Override
+  public boolean equals(final java.lang.Object obj) {
+    if (obj == this) {
+     return true;
+    }
+    if (!(obj instanceof com.ywt.gapi.base.log.SaveOpenHisPushApiLogRequest)) {
+      return super.equals(obj);
+    }
+    com.ywt.gapi.base.log.SaveOpenHisPushApiLogRequest other = (com.ywt.gapi.base.log.SaveOpenHisPushApiLogRequest) obj;
+
+    boolean result = true;
+    result = result && getPath()
+        .equals(other.getPath());
+    result = result && getReq()
+        .equals(other.getReq());
+    result = result && getRes()
+        .equals(other.getRes());
+    result = result && (getDifftime()
+        == other.getDifftime());
+    result = result && (getHttpStatus()
+        == other.getHttpStatus());
+    return result;
+  }
+
+  @java.lang.Override
+  public int hashCode() {
+    if (memoizedHashCode != 0) {
+      return memoizedHashCode;
+    }
+    int hash = 41;
+    hash = (19 * hash) + getDescriptor().hashCode();
+    hash = (37 * hash) + PATH_FIELD_NUMBER;
+    hash = (53 * hash) + getPath().hashCode();
+    hash = (37 * hash) + REQ_FIELD_NUMBER;
+    hash = (53 * hash) + getReq().hashCode();
+    hash = (37 * hash) + RES_FIELD_NUMBER;
+    hash = (53 * hash) + getRes().hashCode();
+    hash = (37 * hash) + DIFFTIME_FIELD_NUMBER;
+    hash = (53 * hash) + getDifftime();
+    hash = (37 * hash) + HTTPSTATUS_FIELD_NUMBER;
+    hash = (53 * hash) + getHttpStatus();
+    hash = (29 * hash) + unknownFields.hashCode();
+    memoizedHashCode = hash;
+    return hash;
+  }
+
+  public static com.ywt.gapi.base.log.SaveOpenHisPushApiLogRequest parseFrom(
+      java.nio.ByteBuffer data)
+      throws com.google.protobuf.InvalidProtocolBufferException {
+    return PARSER.parseFrom(data);
+  }
+  public static com.ywt.gapi.base.log.SaveOpenHisPushApiLogRequest parseFrom(
+      java.nio.ByteBuffer data,
+      com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+      throws com.google.protobuf.InvalidProtocolBufferException {
+    return PARSER.parseFrom(data, extensionRegistry);
+  }
+  public static com.ywt.gapi.base.log.SaveOpenHisPushApiLogRequest parseFrom(
+      com.google.protobuf.ByteString data)
+      throws com.google.protobuf.InvalidProtocolBufferException {
+    return PARSER.parseFrom(data);
+  }
+  public static com.ywt.gapi.base.log.SaveOpenHisPushApiLogRequest parseFrom(
+      com.google.protobuf.ByteString data,
+      com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+      throws com.google.protobuf.InvalidProtocolBufferException {
+    return PARSER.parseFrom(data, extensionRegistry);
+  }
+  public static com.ywt.gapi.base.log.SaveOpenHisPushApiLogRequest parseFrom(byte[] data)
+      throws com.google.protobuf.InvalidProtocolBufferException {
+    return PARSER.parseFrom(data);
+  }
+  public static com.ywt.gapi.base.log.SaveOpenHisPushApiLogRequest parseFrom(
+      byte[] data,
+      com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+      throws com.google.protobuf.InvalidProtocolBufferException {
+    return PARSER.parseFrom(data, extensionRegistry);
+  }
+  public static com.ywt.gapi.base.log.SaveOpenHisPushApiLogRequest parseFrom(java.io.InputStream input)
+      throws java.io.IOException {
+    return com.google.protobuf.GeneratedMessageV3
+        .parseWithIOException(PARSER, input);
+  }
+  public static com.ywt.gapi.base.log.SaveOpenHisPushApiLogRequest 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.ywt.gapi.base.log.SaveOpenHisPushApiLogRequest parseDelimitedFrom(java.io.InputStream input)
+      throws java.io.IOException {
+    return com.google.protobuf.GeneratedMessageV3
+        .parseDelimitedWithIOException(PARSER, input);
+  }
+  public static com.ywt.gapi.base.log.SaveOpenHisPushApiLogRequest 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.ywt.gapi.base.log.SaveOpenHisPushApiLogRequest parseFrom(
+      com.google.protobuf.CodedInputStream input)
+      throws java.io.IOException {
+    return com.google.protobuf.GeneratedMessageV3
+        .parseWithIOException(PARSER, input);
+  }
+  public static com.ywt.gapi.base.log.SaveOpenHisPushApiLogRequest 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 Builder newBuilderForType() { return newBuilder(); }
+  public static Builder newBuilder() {
+    return DEFAULT_INSTANCE.toBuilder();
+  }
+  public static Builder newBuilder(com.ywt.gapi.base.log.SaveOpenHisPushApiLogRequest prototype) {
+    return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
+  }
+  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;
+  }
+  /**
+   * <pre>
+   *记录日志请求
+   * </pre>
+   *
+   * Protobuf type {@code com.ywt.gapi.base.log.SaveOpenHisPushApiLogRequest}
+   */
+  public static final class Builder extends
+      com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
+      // @@protoc_insertion_point(builder_implements:com.ywt.gapi.base.log.SaveOpenHisPushApiLogRequest)
+      com.ywt.gapi.base.log.SaveOpenHisPushApiLogRequestOrBuilder {
+    public static final com.google.protobuf.Descriptors.Descriptor
+        getDescriptor() {
+      return com.ywt.gapi.base.log.Log.internal_static_com_ywt_gapi_base_log_SaveOpenHisPushApiLogRequest_descriptor;
+    }
+
+    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
+        internalGetFieldAccessorTable() {
+      return com.ywt.gapi.base.log.Log.internal_static_com_ywt_gapi_base_log_SaveOpenHisPushApiLogRequest_fieldAccessorTable
+          .ensureFieldAccessorsInitialized(
+              com.ywt.gapi.base.log.SaveOpenHisPushApiLogRequest.class, com.ywt.gapi.base.log.SaveOpenHisPushApiLogRequest.Builder.class);
+    }
+
+    // Construct using com.ywt.gapi.base.log.SaveOpenHisPushApiLogRequest.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 Builder clear() {
+      super.clear();
+      path_ = "";
+
+      req_ = "";
+
+      res_ = "";
+
+      difftime_ = 0;
+
+      httpStatus_ = 0;
+
+      return this;
+    }
+
+    public com.google.protobuf.Descriptors.Descriptor
+        getDescriptorForType() {
+      return com.ywt.gapi.base.log.Log.internal_static_com_ywt_gapi_base_log_SaveOpenHisPushApiLogRequest_descriptor;
+    }
+
+    public com.ywt.gapi.base.log.SaveOpenHisPushApiLogRequest getDefaultInstanceForType() {
+      return com.ywt.gapi.base.log.SaveOpenHisPushApiLogRequest.getDefaultInstance();
+    }
+
+    public com.ywt.gapi.base.log.SaveOpenHisPushApiLogRequest build() {
+      com.ywt.gapi.base.log.SaveOpenHisPushApiLogRequest result = buildPartial();
+      if (!result.isInitialized()) {
+        throw newUninitializedMessageException(result);
+      }
+      return result;
+    }
+
+    public com.ywt.gapi.base.log.SaveOpenHisPushApiLogRequest buildPartial() {
+      com.ywt.gapi.base.log.SaveOpenHisPushApiLogRequest result = new com.ywt.gapi.base.log.SaveOpenHisPushApiLogRequest(this);
+      result.path_ = path_;
+      result.req_ = req_;
+      result.res_ = res_;
+      result.difftime_ = difftime_;
+      result.httpStatus_ = httpStatus_;
+      onBuilt();
+      return result;
+    }
+
+    public Builder clone() {
+      return (Builder) super.clone();
+    }
+    public Builder setField(
+        com.google.protobuf.Descriptors.FieldDescriptor field,
+        Object value) {
+      return (Builder) super.setField(field, value);
+    }
+    public Builder clearField(
+        com.google.protobuf.Descriptors.FieldDescriptor field) {
+      return (Builder) super.clearField(field);
+    }
+    public Builder clearOneof(
+        com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+      return (Builder) super.clearOneof(oneof);
+    }
+    public Builder setRepeatedField(
+        com.google.protobuf.Descriptors.FieldDescriptor field,
+        int index, Object value) {
+      return (Builder) super.setRepeatedField(field, index, value);
+    }
+    public Builder addRepeatedField(
+        com.google.protobuf.Descriptors.FieldDescriptor field,
+        Object value) {
+      return (Builder) super.addRepeatedField(field, value);
+    }
+    public Builder mergeFrom(com.google.protobuf.Message other) {
+      if (other instanceof com.ywt.gapi.base.log.SaveOpenHisPushApiLogRequest) {
+        return mergeFrom((com.ywt.gapi.base.log.SaveOpenHisPushApiLogRequest)other);
+      } else {
+        super.mergeFrom(other);
+        return this;
+      }
+    }
+
+    public Builder mergeFrom(com.ywt.gapi.base.log.SaveOpenHisPushApiLogRequest other) {
+      if (other == com.ywt.gapi.base.log.SaveOpenHisPushApiLogRequest.getDefaultInstance()) return this;
+      if (!other.getPath().isEmpty()) {
+        path_ = other.path_;
+        onChanged();
+      }
+      if (!other.getReq().isEmpty()) {
+        req_ = other.req_;
+        onChanged();
+      }
+      if (!other.getRes().isEmpty()) {
+        res_ = other.res_;
+        onChanged();
+      }
+      if (other.getDifftime() != 0) {
+        setDifftime(other.getDifftime());
+      }
+      if (other.getHttpStatus() != 0) {
+        setHttpStatus(other.getHttpStatus());
+      }
+      onChanged();
+      return this;
+    }
+
+    public final boolean isInitialized() {
+      return true;
+    }
+
+    public Builder mergeFrom(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      com.ywt.gapi.base.log.SaveOpenHisPushApiLogRequest parsedMessage = null;
+      try {
+        parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+        parsedMessage = (com.ywt.gapi.base.log.SaveOpenHisPushApiLogRequest) e.getUnfinishedMessage();
+        throw e.unwrapIOException();
+      } finally {
+        if (parsedMessage != null) {
+          mergeFrom(parsedMessage);
+        }
+      }
+      return this;
+    }
+
+    private java.lang.Object path_ = "";
+    /**
+     * <pre>
+     * 请求路径
+     * </pre>
+     *
+     * <code>string path = 1;</code>
+     */
+    public java.lang.String getPath() {
+      java.lang.Object ref = path_;
+      if (!(ref instanceof java.lang.String)) {
+        com.google.protobuf.ByteString bs =
+            (com.google.protobuf.ByteString) ref;
+        java.lang.String s = bs.toStringUtf8();
+        path_ = s;
+        return s;
+      } else {
+        return (java.lang.String) ref;
+      }
+    }
+    /**
+     * <pre>
+     * 请求路径
+     * </pre>
+     *
+     * <code>string path = 1;</code>
+     */
+    public com.google.protobuf.ByteString
+        getPathBytes() {
+      java.lang.Object ref = path_;
+      if (ref instanceof String) {
+        com.google.protobuf.ByteString b = 
+            com.google.protobuf.ByteString.copyFromUtf8(
+                (java.lang.String) ref);
+        path_ = b;
+        return b;
+      } else {
+        return (com.google.protobuf.ByteString) ref;
+      }
+    }
+    /**
+     * <pre>
+     * 请求路径
+     * </pre>
+     *
+     * <code>string path = 1;</code>
+     */
+    public Builder setPath(
+        java.lang.String value) {
+      if (value == null) {
+    throw new NullPointerException();
+  }
+  
+      path_ = value;
+      onChanged();
+      return this;
+    }
+    /**
+     * <pre>
+     * 请求路径
+     * </pre>
+     *
+     * <code>string path = 1;</code>
+     */
+    public Builder clearPath() {
+      
+      path_ = getDefaultInstance().getPath();
+      onChanged();
+      return this;
+    }
+    /**
+     * <pre>
+     * 请求路径
+     * </pre>
+     *
+     * <code>string path = 1;</code>
+     */
+    public Builder setPathBytes(
+        com.google.protobuf.ByteString value) {
+      if (value == null) {
+    throw new NullPointerException();
+  }
+  checkByteStringIsUtf8(value);
+      
+      path_ = value;
+      onChanged();
+      return this;
+    }
+
+    private java.lang.Object req_ = "";
+    /**
+     * <pre>
+     * 请求json
+     * </pre>
+     *
+     * <code>string req = 2;</code>
+     */
+    public java.lang.String getReq() {
+      java.lang.Object ref = req_;
+      if (!(ref instanceof java.lang.String)) {
+        com.google.protobuf.ByteString bs =
+            (com.google.protobuf.ByteString) ref;
+        java.lang.String s = bs.toStringUtf8();
+        req_ = s;
+        return s;
+      } else {
+        return (java.lang.String) ref;
+      }
+    }
+    /**
+     * <pre>
+     * 请求json
+     * </pre>
+     *
+     * <code>string req = 2;</code>
+     */
+    public com.google.protobuf.ByteString
+        getReqBytes() {
+      java.lang.Object ref = req_;
+      if (ref instanceof String) {
+        com.google.protobuf.ByteString b = 
+            com.google.protobuf.ByteString.copyFromUtf8(
+                (java.lang.String) ref);
+        req_ = b;
+        return b;
+      } else {
+        return (com.google.protobuf.ByteString) ref;
+      }
+    }
+    /**
+     * <pre>
+     * 请求json
+     * </pre>
+     *
+     * <code>string req = 2;</code>
+     */
+    public Builder setReq(
+        java.lang.String value) {
+      if (value == null) {
+    throw new NullPointerException();
+  }
+  
+      req_ = value;
+      onChanged();
+      return this;
+    }
+    /**
+     * <pre>
+     * 请求json
+     * </pre>
+     *
+     * <code>string req = 2;</code>
+     */
+    public Builder clearReq() {
+      
+      req_ = getDefaultInstance().getReq();
+      onChanged();
+      return this;
+    }
+    /**
+     * <pre>
+     * 请求json
+     * </pre>
+     *
+     * <code>string req = 2;</code>
+     */
+    public Builder setReqBytes(
+        com.google.protobuf.ByteString value) {
+      if (value == null) {
+    throw new NullPointerException();
+  }
+  checkByteStringIsUtf8(value);
+      
+      req_ = value;
+      onChanged();
+      return this;
+    }
+
+    private java.lang.Object res_ = "";
+    /**
+     * <pre>
+     * 响应json
+     * </pre>
+     *
+     * <code>string res = 3;</code>
+     */
+    public java.lang.String getRes() {
+      java.lang.Object ref = res_;
+      if (!(ref instanceof java.lang.String)) {
+        com.google.protobuf.ByteString bs =
+            (com.google.protobuf.ByteString) ref;
+        java.lang.String s = bs.toStringUtf8();
+        res_ = s;
+        return s;
+      } else {
+        return (java.lang.String) ref;
+      }
+    }
+    /**
+     * <pre>
+     * 响应json
+     * </pre>
+     *
+     * <code>string res = 3;</code>
+     */
+    public com.google.protobuf.ByteString
+        getResBytes() {
+      java.lang.Object ref = res_;
+      if (ref instanceof String) {
+        com.google.protobuf.ByteString b = 
+            com.google.protobuf.ByteString.copyFromUtf8(
+                (java.lang.String) ref);
+        res_ = b;
+        return b;
+      } else {
+        return (com.google.protobuf.ByteString) ref;
+      }
+    }
+    /**
+     * <pre>
+     * 响应json
+     * </pre>
+     *
+     * <code>string res = 3;</code>
+     */
+    public Builder setRes(
+        java.lang.String value) {
+      if (value == null) {
+    throw new NullPointerException();
+  }
+  
+      res_ = value;
+      onChanged();
+      return this;
+    }
+    /**
+     * <pre>
+     * 响应json
+     * </pre>
+     *
+     * <code>string res = 3;</code>
+     */
+    public Builder clearRes() {
+      
+      res_ = getDefaultInstance().getRes();
+      onChanged();
+      return this;
+    }
+    /**
+     * <pre>
+     * 响应json
+     * </pre>
+     *
+     * <code>string res = 3;</code>
+     */
+    public Builder setResBytes(
+        com.google.protobuf.ByteString value) {
+      if (value == null) {
+    throw new NullPointerException();
+  }
+  checkByteStringIsUtf8(value);
+      
+      res_ = value;
+      onChanged();
+      return this;
+    }
+
+    private int difftime_ ;
+    /**
+     * <pre>
+     * 响应时间
+     * </pre>
+     *
+     * <code>int32 difftime = 4;</code>
+     */
+    public int getDifftime() {
+      return difftime_;
+    }
+    /**
+     * <pre>
+     * 响应时间
+     * </pre>
+     *
+     * <code>int32 difftime = 4;</code>
+     */
+    public Builder setDifftime(int value) {
+      
+      difftime_ = value;
+      onChanged();
+      return this;
+    }
+    /**
+     * <pre>
+     * 响应时间
+     * </pre>
+     *
+     * <code>int32 difftime = 4;</code>
+     */
+    public Builder clearDifftime() {
+      
+      difftime_ = 0;
+      onChanged();
+      return this;
+    }
+
+    private int httpStatus_ ;
+    /**
+     * <pre>
+     * 响应状态
+     * </pre>
+     *
+     * <code>int32 httpStatus = 6;</code>
+     */
+    public int getHttpStatus() {
+      return httpStatus_;
+    }
+    /**
+     * <pre>
+     * 响应状态
+     * </pre>
+     *
+     * <code>int32 httpStatus = 6;</code>
+     */
+    public Builder setHttpStatus(int value) {
+      
+      httpStatus_ = value;
+      onChanged();
+      return this;
+    }
+    /**
+     * <pre>
+     * 响应状态
+     * </pre>
+     *
+     * <code>int32 httpStatus = 6;</code>
+     */
+    public Builder clearHttpStatus() {
+      
+      httpStatus_ = 0;
+      onChanged();
+      return this;
+    }
+    public final Builder setUnknownFields(
+        final com.google.protobuf.UnknownFieldSet unknownFields) {
+      return this;
+    }
+
+    public final Builder mergeUnknownFields(
+        final com.google.protobuf.UnknownFieldSet unknownFields) {
+      return this;
+    }
+
+
+    // @@protoc_insertion_point(builder_scope:com.ywt.gapi.base.log.SaveOpenHisPushApiLogRequest)
+  }
+
+  // @@protoc_insertion_point(class_scope:com.ywt.gapi.base.log.SaveOpenHisPushApiLogRequest)
+  private static final com.ywt.gapi.base.log.SaveOpenHisPushApiLogRequest DEFAULT_INSTANCE;
+  static {
+    DEFAULT_INSTANCE = new com.ywt.gapi.base.log.SaveOpenHisPushApiLogRequest();
+  }
+
+  public static com.ywt.gapi.base.log.SaveOpenHisPushApiLogRequest getDefaultInstance() {
+    return DEFAULT_INSTANCE;
+  }
+
+  private static final com.google.protobuf.Parser<SaveOpenHisPushApiLogRequest>
+      PARSER = new com.google.protobuf.AbstractParser<SaveOpenHisPushApiLogRequest>() {
+    public SaveOpenHisPushApiLogRequest parsePartialFrom(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+        return new SaveOpenHisPushApiLogRequest(input, extensionRegistry);
+    }
+  };
+
+  public static com.google.protobuf.Parser<SaveOpenHisPushApiLogRequest> parser() {
+    return PARSER;
+  }
+
+  @java.lang.Override
+  public com.google.protobuf.Parser<SaveOpenHisPushApiLogRequest> getParserForType() {
+    return PARSER;
+  }
+
+  public com.ywt.gapi.base.log.SaveOpenHisPushApiLogRequest getDefaultInstanceForType() {
+    return DEFAULT_INSTANCE;
+  }
+
+}
+

+ 81 - 0
src/main/java/com/ywt/gapi/base/log/SaveOpenHisPushApiLogRequestOrBuilder.java

@@ -0,0 +1,81 @@
+// Generated by the protocol buffer compiler.  DO NOT EDIT!
+// source: log.proto
+
+package com.ywt.gapi.base.log;
+
+public interface SaveOpenHisPushApiLogRequestOrBuilder extends
+    // @@protoc_insertion_point(interface_extends:com.ywt.gapi.base.log.SaveOpenHisPushApiLogRequest)
+    com.google.protobuf.MessageOrBuilder {
+
+  /**
+   * <pre>
+   * 请求路径
+   * </pre>
+   *
+   * <code>string path = 1;</code>
+   */
+  java.lang.String getPath();
+  /**
+   * <pre>
+   * 请求路径
+   * </pre>
+   *
+   * <code>string path = 1;</code>
+   */
+  com.google.protobuf.ByteString
+      getPathBytes();
+
+  /**
+   * <pre>
+   * 请求json
+   * </pre>
+   *
+   * <code>string req = 2;</code>
+   */
+  java.lang.String getReq();
+  /**
+   * <pre>
+   * 请求json
+   * </pre>
+   *
+   * <code>string req = 2;</code>
+   */
+  com.google.protobuf.ByteString
+      getReqBytes();
+
+  /**
+   * <pre>
+   * 响应json
+   * </pre>
+   *
+   * <code>string res = 3;</code>
+   */
+  java.lang.String getRes();
+  /**
+   * <pre>
+   * 响应json
+   * </pre>
+   *
+   * <code>string res = 3;</code>
+   */
+  com.google.protobuf.ByteString
+      getResBytes();
+
+  /**
+   * <pre>
+   * 响应时间
+   * </pre>
+   *
+   * <code>int32 difftime = 4;</code>
+   */
+  int getDifftime();
+
+  /**
+   * <pre>
+   * 响应状态
+   * </pre>
+   *
+   * <code>int32 httpStatus = 6;</code>
+   */
+  int getHttpStatus();
+}

+ 571 - 0
src/main/java/com/ywt/gapi/base/log/SaveOpenHisPushApiLogResponse.java

@@ -0,0 +1,571 @@
+// Generated by the protocol buffer compiler.  DO NOT EDIT!
+// source: log.proto
+
+package com.ywt.gapi.base.log;
+
+/**
+ * <pre>
+ *记录日志响应
+ * </pre>
+ *
+ * Protobuf type {@code com.ywt.gapi.base.log.SaveOpenHisPushApiLogResponse}
+ */
+public  final class SaveOpenHisPushApiLogResponse extends
+    com.google.protobuf.GeneratedMessageV3 implements
+    // @@protoc_insertion_point(message_implements:com.ywt.gapi.base.log.SaveOpenHisPushApiLogResponse)
+    SaveOpenHisPushApiLogResponseOrBuilder {
+  // Use SaveOpenHisPushApiLogResponse.newBuilder() to construct.
+  private SaveOpenHisPushApiLogResponse(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
+    super(builder);
+  }
+  private SaveOpenHisPushApiLogResponse() {
+    code_ = 0;
+    info_ = "";
+  }
+
+  @java.lang.Override
+  public final com.google.protobuf.UnknownFieldSet
+  getUnknownFields() {
+    return com.google.protobuf.UnknownFieldSet.getDefaultInstance();
+  }
+  private SaveOpenHisPushApiLogResponse(
+      com.google.protobuf.CodedInputStream input,
+      com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+      throws com.google.protobuf.InvalidProtocolBufferException {
+    this();
+    int mutable_bitField0_ = 0;
+    try {
+      boolean done = false;
+      while (!done) {
+        int tag = input.readTag();
+        switch (tag) {
+          case 0:
+            done = true;
+            break;
+          default: {
+            if (!input.skipField(tag)) {
+              done = true;
+            }
+            break;
+          }
+          case 8: {
+
+            code_ = input.readInt32();
+            break;
+          }
+          case 18: {
+            java.lang.String s = input.readStringRequireUtf8();
+
+            info_ = s;
+            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 {
+      makeExtensionsImmutable();
+    }
+  }
+  public static final com.google.protobuf.Descriptors.Descriptor
+      getDescriptor() {
+    return com.ywt.gapi.base.log.Log.internal_static_com_ywt_gapi_base_log_SaveOpenHisPushApiLogResponse_descriptor;
+  }
+
+  protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
+      internalGetFieldAccessorTable() {
+    return com.ywt.gapi.base.log.Log.internal_static_com_ywt_gapi_base_log_SaveOpenHisPushApiLogResponse_fieldAccessorTable
+        .ensureFieldAccessorsInitialized(
+            com.ywt.gapi.base.log.SaveOpenHisPushApiLogResponse.class, com.ywt.gapi.base.log.SaveOpenHisPushApiLogResponse.Builder.class);
+  }
+
+  public static final int CODE_FIELD_NUMBER = 1;
+  private int code_;
+  /**
+   * <code>int32 code = 1;</code>
+   */
+  public int getCode() {
+    return code_;
+  }
+
+  public static final int INFO_FIELD_NUMBER = 2;
+  private volatile java.lang.Object info_;
+  /**
+   * <code>string info = 2;</code>
+   */
+  public java.lang.String getInfo() {
+    java.lang.Object ref = info_;
+    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();
+      info_ = s;
+      return s;
+    }
+  }
+  /**
+   * <code>string info = 2;</code>
+   */
+  public com.google.protobuf.ByteString
+      getInfoBytes() {
+    java.lang.Object ref = info_;
+    if (ref instanceof java.lang.String) {
+      com.google.protobuf.ByteString b = 
+          com.google.protobuf.ByteString.copyFromUtf8(
+              (java.lang.String) ref);
+      info_ = b;
+      return b;
+    } else {
+      return (com.google.protobuf.ByteString) ref;
+    }
+  }
+
+  private byte memoizedIsInitialized = -1;
+  public final boolean isInitialized() {
+    byte isInitialized = memoizedIsInitialized;
+    if (isInitialized == 1) return true;
+    if (isInitialized == 0) return false;
+
+    memoizedIsInitialized = 1;
+    return true;
+  }
+
+  public void writeTo(com.google.protobuf.CodedOutputStream output)
+                      throws java.io.IOException {
+    if (code_ != 0) {
+      output.writeInt32(1, code_);
+    }
+    if (!getInfoBytes().isEmpty()) {
+      com.google.protobuf.GeneratedMessageV3.writeString(output, 2, info_);
+    }
+  }
+
+  public int getSerializedSize() {
+    int size = memoizedSize;
+    if (size != -1) return size;
+
+    size = 0;
+    if (code_ != 0) {
+      size += com.google.protobuf.CodedOutputStream
+        .computeInt32Size(1, code_);
+    }
+    if (!getInfoBytes().isEmpty()) {
+      size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, info_);
+    }
+    memoizedSize = size;
+    return size;
+  }
+
+  private static final long serialVersionUID = 0L;
+  @java.lang.Override
+  public boolean equals(final java.lang.Object obj) {
+    if (obj == this) {
+     return true;
+    }
+    if (!(obj instanceof com.ywt.gapi.base.log.SaveOpenHisPushApiLogResponse)) {
+      return super.equals(obj);
+    }
+    com.ywt.gapi.base.log.SaveOpenHisPushApiLogResponse other = (com.ywt.gapi.base.log.SaveOpenHisPushApiLogResponse) obj;
+
+    boolean result = true;
+    result = result && (getCode()
+        == other.getCode());
+    result = result && getInfo()
+        .equals(other.getInfo());
+    return result;
+  }
+
+  @java.lang.Override
+  public int hashCode() {
+    if (memoizedHashCode != 0) {
+      return memoizedHashCode;
+    }
+    int hash = 41;
+    hash = (19 * hash) + getDescriptor().hashCode();
+    hash = (37 * hash) + CODE_FIELD_NUMBER;
+    hash = (53 * hash) + getCode();
+    hash = (37 * hash) + INFO_FIELD_NUMBER;
+    hash = (53 * hash) + getInfo().hashCode();
+    hash = (29 * hash) + unknownFields.hashCode();
+    memoizedHashCode = hash;
+    return hash;
+  }
+
+  public static com.ywt.gapi.base.log.SaveOpenHisPushApiLogResponse parseFrom(
+      java.nio.ByteBuffer data)
+      throws com.google.protobuf.InvalidProtocolBufferException {
+    return PARSER.parseFrom(data);
+  }
+  public static com.ywt.gapi.base.log.SaveOpenHisPushApiLogResponse parseFrom(
+      java.nio.ByteBuffer data,
+      com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+      throws com.google.protobuf.InvalidProtocolBufferException {
+    return PARSER.parseFrom(data, extensionRegistry);
+  }
+  public static com.ywt.gapi.base.log.SaveOpenHisPushApiLogResponse parseFrom(
+      com.google.protobuf.ByteString data)
+      throws com.google.protobuf.InvalidProtocolBufferException {
+    return PARSER.parseFrom(data);
+  }
+  public static com.ywt.gapi.base.log.SaveOpenHisPushApiLogResponse parseFrom(
+      com.google.protobuf.ByteString data,
+      com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+      throws com.google.protobuf.InvalidProtocolBufferException {
+    return PARSER.parseFrom(data, extensionRegistry);
+  }
+  public static com.ywt.gapi.base.log.SaveOpenHisPushApiLogResponse parseFrom(byte[] data)
+      throws com.google.protobuf.InvalidProtocolBufferException {
+    return PARSER.parseFrom(data);
+  }
+  public static com.ywt.gapi.base.log.SaveOpenHisPushApiLogResponse parseFrom(
+      byte[] data,
+      com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+      throws com.google.protobuf.InvalidProtocolBufferException {
+    return PARSER.parseFrom(data, extensionRegistry);
+  }
+  public static com.ywt.gapi.base.log.SaveOpenHisPushApiLogResponse parseFrom(java.io.InputStream input)
+      throws java.io.IOException {
+    return com.google.protobuf.GeneratedMessageV3
+        .parseWithIOException(PARSER, input);
+  }
+  public static com.ywt.gapi.base.log.SaveOpenHisPushApiLogResponse 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.ywt.gapi.base.log.SaveOpenHisPushApiLogResponse parseDelimitedFrom(java.io.InputStream input)
+      throws java.io.IOException {
+    return com.google.protobuf.GeneratedMessageV3
+        .parseDelimitedWithIOException(PARSER, input);
+  }
+  public static com.ywt.gapi.base.log.SaveOpenHisPushApiLogResponse 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.ywt.gapi.base.log.SaveOpenHisPushApiLogResponse parseFrom(
+      com.google.protobuf.CodedInputStream input)
+      throws java.io.IOException {
+    return com.google.protobuf.GeneratedMessageV3
+        .parseWithIOException(PARSER, input);
+  }
+  public static com.ywt.gapi.base.log.SaveOpenHisPushApiLogResponse 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 Builder newBuilderForType() { return newBuilder(); }
+  public static Builder newBuilder() {
+    return DEFAULT_INSTANCE.toBuilder();
+  }
+  public static Builder newBuilder(com.ywt.gapi.base.log.SaveOpenHisPushApiLogResponse prototype) {
+    return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
+  }
+  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;
+  }
+  /**
+   * <pre>
+   *记录日志响应
+   * </pre>
+   *
+   * Protobuf type {@code com.ywt.gapi.base.log.SaveOpenHisPushApiLogResponse}
+   */
+  public static final class Builder extends
+      com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
+      // @@protoc_insertion_point(builder_implements:com.ywt.gapi.base.log.SaveOpenHisPushApiLogResponse)
+      com.ywt.gapi.base.log.SaveOpenHisPushApiLogResponseOrBuilder {
+    public static final com.google.protobuf.Descriptors.Descriptor
+        getDescriptor() {
+      return com.ywt.gapi.base.log.Log.internal_static_com_ywt_gapi_base_log_SaveOpenHisPushApiLogResponse_descriptor;
+    }
+
+    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
+        internalGetFieldAccessorTable() {
+      return com.ywt.gapi.base.log.Log.internal_static_com_ywt_gapi_base_log_SaveOpenHisPushApiLogResponse_fieldAccessorTable
+          .ensureFieldAccessorsInitialized(
+              com.ywt.gapi.base.log.SaveOpenHisPushApiLogResponse.class, com.ywt.gapi.base.log.SaveOpenHisPushApiLogResponse.Builder.class);
+    }
+
+    // Construct using com.ywt.gapi.base.log.SaveOpenHisPushApiLogResponse.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 Builder clear() {
+      super.clear();
+      code_ = 0;
+
+      info_ = "";
+
+      return this;
+    }
+
+    public com.google.protobuf.Descriptors.Descriptor
+        getDescriptorForType() {
+      return com.ywt.gapi.base.log.Log.internal_static_com_ywt_gapi_base_log_SaveOpenHisPushApiLogResponse_descriptor;
+    }
+
+    public com.ywt.gapi.base.log.SaveOpenHisPushApiLogResponse getDefaultInstanceForType() {
+      return com.ywt.gapi.base.log.SaveOpenHisPushApiLogResponse.getDefaultInstance();
+    }
+
+    public com.ywt.gapi.base.log.SaveOpenHisPushApiLogResponse build() {
+      com.ywt.gapi.base.log.SaveOpenHisPushApiLogResponse result = buildPartial();
+      if (!result.isInitialized()) {
+        throw newUninitializedMessageException(result);
+      }
+      return result;
+    }
+
+    public com.ywt.gapi.base.log.SaveOpenHisPushApiLogResponse buildPartial() {
+      com.ywt.gapi.base.log.SaveOpenHisPushApiLogResponse result = new com.ywt.gapi.base.log.SaveOpenHisPushApiLogResponse(this);
+      result.code_ = code_;
+      result.info_ = info_;
+      onBuilt();
+      return result;
+    }
+
+    public Builder clone() {
+      return (Builder) super.clone();
+    }
+    public Builder setField(
+        com.google.protobuf.Descriptors.FieldDescriptor field,
+        Object value) {
+      return (Builder) super.setField(field, value);
+    }
+    public Builder clearField(
+        com.google.protobuf.Descriptors.FieldDescriptor field) {
+      return (Builder) super.clearField(field);
+    }
+    public Builder clearOneof(
+        com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+      return (Builder) super.clearOneof(oneof);
+    }
+    public Builder setRepeatedField(
+        com.google.protobuf.Descriptors.FieldDescriptor field,
+        int index, Object value) {
+      return (Builder) super.setRepeatedField(field, index, value);
+    }
+    public Builder addRepeatedField(
+        com.google.protobuf.Descriptors.FieldDescriptor field,
+        Object value) {
+      return (Builder) super.addRepeatedField(field, value);
+    }
+    public Builder mergeFrom(com.google.protobuf.Message other) {
+      if (other instanceof com.ywt.gapi.base.log.SaveOpenHisPushApiLogResponse) {
+        return mergeFrom((com.ywt.gapi.base.log.SaveOpenHisPushApiLogResponse)other);
+      } else {
+        super.mergeFrom(other);
+        return this;
+      }
+    }
+
+    public Builder mergeFrom(com.ywt.gapi.base.log.SaveOpenHisPushApiLogResponse other) {
+      if (other == com.ywt.gapi.base.log.SaveOpenHisPushApiLogResponse.getDefaultInstance()) return this;
+      if (other.getCode() != 0) {
+        setCode(other.getCode());
+      }
+      if (!other.getInfo().isEmpty()) {
+        info_ = other.info_;
+        onChanged();
+      }
+      onChanged();
+      return this;
+    }
+
+    public final boolean isInitialized() {
+      return true;
+    }
+
+    public Builder mergeFrom(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      com.ywt.gapi.base.log.SaveOpenHisPushApiLogResponse parsedMessage = null;
+      try {
+        parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+        parsedMessage = (com.ywt.gapi.base.log.SaveOpenHisPushApiLogResponse) e.getUnfinishedMessage();
+        throw e.unwrapIOException();
+      } finally {
+        if (parsedMessage != null) {
+          mergeFrom(parsedMessage);
+        }
+      }
+      return this;
+    }
+
+    private int code_ ;
+    /**
+     * <code>int32 code = 1;</code>
+     */
+    public int getCode() {
+      return code_;
+    }
+    /**
+     * <code>int32 code = 1;</code>
+     */
+    public Builder setCode(int value) {
+      
+      code_ = value;
+      onChanged();
+      return this;
+    }
+    /**
+     * <code>int32 code = 1;</code>
+     */
+    public Builder clearCode() {
+      
+      code_ = 0;
+      onChanged();
+      return this;
+    }
+
+    private java.lang.Object info_ = "";
+    /**
+     * <code>string info = 2;</code>
+     */
+    public java.lang.String getInfo() {
+      java.lang.Object ref = info_;
+      if (!(ref instanceof java.lang.String)) {
+        com.google.protobuf.ByteString bs =
+            (com.google.protobuf.ByteString) ref;
+        java.lang.String s = bs.toStringUtf8();
+        info_ = s;
+        return s;
+      } else {
+        return (java.lang.String) ref;
+      }
+    }
+    /**
+     * <code>string info = 2;</code>
+     */
+    public com.google.protobuf.ByteString
+        getInfoBytes() {
+      java.lang.Object ref = info_;
+      if (ref instanceof String) {
+        com.google.protobuf.ByteString b = 
+            com.google.protobuf.ByteString.copyFromUtf8(
+                (java.lang.String) ref);
+        info_ = b;
+        return b;
+      } else {
+        return (com.google.protobuf.ByteString) ref;
+      }
+    }
+    /**
+     * <code>string info = 2;</code>
+     */
+    public Builder setInfo(
+        java.lang.String value) {
+      if (value == null) {
+    throw new NullPointerException();
+  }
+  
+      info_ = value;
+      onChanged();
+      return this;
+    }
+    /**
+     * <code>string info = 2;</code>
+     */
+    public Builder clearInfo() {
+      
+      info_ = getDefaultInstance().getInfo();
+      onChanged();
+      return this;
+    }
+    /**
+     * <code>string info = 2;</code>
+     */
+    public Builder setInfoBytes(
+        com.google.protobuf.ByteString value) {
+      if (value == null) {
+    throw new NullPointerException();
+  }
+  checkByteStringIsUtf8(value);
+      
+      info_ = value;
+      onChanged();
+      return this;
+    }
+    public final Builder setUnknownFields(
+        final com.google.protobuf.UnknownFieldSet unknownFields) {
+      return this;
+    }
+
+    public final Builder mergeUnknownFields(
+        final com.google.protobuf.UnknownFieldSet unknownFields) {
+      return this;
+    }
+
+
+    // @@protoc_insertion_point(builder_scope:com.ywt.gapi.base.log.SaveOpenHisPushApiLogResponse)
+  }
+
+  // @@protoc_insertion_point(class_scope:com.ywt.gapi.base.log.SaveOpenHisPushApiLogResponse)
+  private static final com.ywt.gapi.base.log.SaveOpenHisPushApiLogResponse DEFAULT_INSTANCE;
+  static {
+    DEFAULT_INSTANCE = new com.ywt.gapi.base.log.SaveOpenHisPushApiLogResponse();
+  }
+
+  public static com.ywt.gapi.base.log.SaveOpenHisPushApiLogResponse getDefaultInstance() {
+    return DEFAULT_INSTANCE;
+  }
+
+  private static final com.google.protobuf.Parser<SaveOpenHisPushApiLogResponse>
+      PARSER = new com.google.protobuf.AbstractParser<SaveOpenHisPushApiLogResponse>() {
+    public SaveOpenHisPushApiLogResponse parsePartialFrom(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+        return new SaveOpenHisPushApiLogResponse(input, extensionRegistry);
+    }
+  };
+
+  public static com.google.protobuf.Parser<SaveOpenHisPushApiLogResponse> parser() {
+    return PARSER;
+  }
+
+  @java.lang.Override
+  public com.google.protobuf.Parser<SaveOpenHisPushApiLogResponse> getParserForType() {
+    return PARSER;
+  }
+
+  public com.ywt.gapi.base.log.SaveOpenHisPushApiLogResponse getDefaultInstanceForType() {
+    return DEFAULT_INSTANCE;
+  }
+
+}
+

+ 24 - 0
src/main/java/com/ywt/gapi/base/log/SaveOpenHisPushApiLogResponseOrBuilder.java

@@ -0,0 +1,24 @@
+// Generated by the protocol buffer compiler.  DO NOT EDIT!
+// source: log.proto
+
+package com.ywt.gapi.base.log;
+
+public interface SaveOpenHisPushApiLogResponseOrBuilder extends
+    // @@protoc_insertion_point(interface_extends:com.ywt.gapi.base.log.SaveOpenHisPushApiLogResponse)
+    com.google.protobuf.MessageOrBuilder {
+
+  /**
+   * <code>int32 code = 1;</code>
+   */
+  int getCode();
+
+  /**
+   * <code>string info = 2;</code>
+   */
+  java.lang.String getInfo();
+  /**
+   * <code>string info = 2;</code>
+   */
+  com.google.protobuf.ByteString
+      getInfoBytes();
+}

+ 328 - 0
src/main/java/com/ywt/gapi/base/log/YWTLogService.java

@@ -0,0 +1,328 @@
+// Generated by the protocol buffer compiler.  DO NOT EDIT!
+// source: log.proto
+
+package com.ywt.gapi.base.log;
+
+/**
+ * <pre>
+ *医务通日志服务  // 对应 base-service 项目的 log.js 文件
+ * </pre>
+ *
+ * Protobuf service {@code com.ywt.gapi.base.log.YWTLogService}
+ */
+public  abstract class YWTLogService
+    implements com.google.protobuf.Service {
+  protected YWTLogService() {}
+
+  public interface Interface {
+    /**
+     * <pre>
+     * 记录日志
+     * </pre>
+     *
+     * <code>rpc saveCommentLog(.com.ywt.gapi.base.log.SaveCommentLogRequest) returns (.com.ywt.gapi.base.log.SaveCommentLogResponse);</code>
+     */
+    public abstract void saveCommentLog(
+        com.google.protobuf.RpcController controller,
+        com.ywt.gapi.base.log.SaveCommentLogRequest request,
+        com.google.protobuf.RpcCallback<com.ywt.gapi.base.log.SaveCommentLogResponse> done);
+
+    /**
+     * <pre>
+     * 保存his外转处方日志
+     * </pre>
+     *
+     * <code>rpc saveOpenHisPushApiLog(.com.ywt.gapi.base.log.SaveOpenHisPushApiLogRequest) returns (.com.ywt.gapi.base.log.SaveOpenHisPushApiLogResponse);</code>
+     */
+    public abstract void saveOpenHisPushApiLog(
+        com.google.protobuf.RpcController controller,
+        com.ywt.gapi.base.log.SaveOpenHisPushApiLogRequest request,
+        com.google.protobuf.RpcCallback<com.ywt.gapi.base.log.SaveOpenHisPushApiLogResponse> done);
+
+  }
+
+  public static com.google.protobuf.Service newReflectiveService(
+      final Interface impl) {
+    return new YWTLogService() {
+      @java.lang.Override
+      public  void saveCommentLog(
+          com.google.protobuf.RpcController controller,
+          com.ywt.gapi.base.log.SaveCommentLogRequest request,
+          com.google.protobuf.RpcCallback<com.ywt.gapi.base.log.SaveCommentLogResponse> done) {
+        impl.saveCommentLog(controller, request, done);
+      }
+
+      @java.lang.Override
+      public  void saveOpenHisPushApiLog(
+          com.google.protobuf.RpcController controller,
+          com.ywt.gapi.base.log.SaveOpenHisPushApiLogRequest request,
+          com.google.protobuf.RpcCallback<com.ywt.gapi.base.log.SaveOpenHisPushApiLogResponse> done) {
+        impl.saveOpenHisPushApiLog(controller, request, done);
+      }
+
+    };
+  }
+
+  public static com.google.protobuf.BlockingService
+      newReflectiveBlockingService(final BlockingInterface impl) {
+    return new com.google.protobuf.BlockingService() {
+      public final com.google.protobuf.Descriptors.ServiceDescriptor
+          getDescriptorForType() {
+        return getDescriptor();
+      }
+
+      public final com.google.protobuf.Message callBlockingMethod(
+          com.google.protobuf.Descriptors.MethodDescriptor method,
+          com.google.protobuf.RpcController controller,
+          com.google.protobuf.Message request)
+          throws com.google.protobuf.ServiceException {
+        if (method.getService() != getDescriptor()) {
+          throw new java.lang.IllegalArgumentException(
+            "Service.callBlockingMethod() given method descriptor for " +
+            "wrong service type.");
+        }
+        switch(method.getIndex()) {
+          case 0:
+            return impl.saveCommentLog(controller, (com.ywt.gapi.base.log.SaveCommentLogRequest)request);
+          case 1:
+            return impl.saveOpenHisPushApiLog(controller, (com.ywt.gapi.base.log.SaveOpenHisPushApiLogRequest)request);
+          default:
+            throw new java.lang.AssertionError("Can't get here.");
+        }
+      }
+
+      public final com.google.protobuf.Message
+          getRequestPrototype(
+          com.google.protobuf.Descriptors.MethodDescriptor method) {
+        if (method.getService() != getDescriptor()) {
+          throw new java.lang.IllegalArgumentException(
+            "Service.getRequestPrototype() given method " +
+            "descriptor for wrong service type.");
+        }
+        switch(method.getIndex()) {
+          case 0:
+            return com.ywt.gapi.base.log.SaveCommentLogRequest.getDefaultInstance();
+          case 1:
+            return com.ywt.gapi.base.log.SaveOpenHisPushApiLogRequest.getDefaultInstance();
+          default:
+            throw new java.lang.AssertionError("Can't get here.");
+        }
+      }
+
+      public final com.google.protobuf.Message
+          getResponsePrototype(
+          com.google.protobuf.Descriptors.MethodDescriptor method) {
+        if (method.getService() != getDescriptor()) {
+          throw new java.lang.IllegalArgumentException(
+            "Service.getResponsePrototype() given method " +
+            "descriptor for wrong service type.");
+        }
+        switch(method.getIndex()) {
+          case 0:
+            return com.ywt.gapi.base.log.SaveCommentLogResponse.getDefaultInstance();
+          case 1:
+            return com.ywt.gapi.base.log.SaveOpenHisPushApiLogResponse.getDefaultInstance();
+          default:
+            throw new java.lang.AssertionError("Can't get here.");
+        }
+      }
+
+    };
+  }
+
+  /**
+   * <pre>
+   * 记录日志
+   * </pre>
+   *
+   * <code>rpc saveCommentLog(.com.ywt.gapi.base.log.SaveCommentLogRequest) returns (.com.ywt.gapi.base.log.SaveCommentLogResponse);</code>
+   */
+  public abstract void saveCommentLog(
+      com.google.protobuf.RpcController controller,
+      com.ywt.gapi.base.log.SaveCommentLogRequest request,
+      com.google.protobuf.RpcCallback<com.ywt.gapi.base.log.SaveCommentLogResponse> done);
+
+  /**
+   * <pre>
+   * 保存his外转处方日志
+   * </pre>
+   *
+   * <code>rpc saveOpenHisPushApiLog(.com.ywt.gapi.base.log.SaveOpenHisPushApiLogRequest) returns (.com.ywt.gapi.base.log.SaveOpenHisPushApiLogResponse);</code>
+   */
+  public abstract void saveOpenHisPushApiLog(
+      com.google.protobuf.RpcController controller,
+      com.ywt.gapi.base.log.SaveOpenHisPushApiLogRequest request,
+      com.google.protobuf.RpcCallback<com.ywt.gapi.base.log.SaveOpenHisPushApiLogResponse> done);
+
+  public static final
+      com.google.protobuf.Descriptors.ServiceDescriptor
+      getDescriptor() {
+    return com.ywt.gapi.base.log.Log.getDescriptor().getServices().get(0);
+  }
+  public final com.google.protobuf.Descriptors.ServiceDescriptor
+      getDescriptorForType() {
+    return getDescriptor();
+  }
+
+  public final void callMethod(
+      com.google.protobuf.Descriptors.MethodDescriptor method,
+      com.google.protobuf.RpcController controller,
+      com.google.protobuf.Message request,
+      com.google.protobuf.RpcCallback<
+        com.google.protobuf.Message> done) {
+    if (method.getService() != getDescriptor()) {
+      throw new java.lang.IllegalArgumentException(
+        "Service.callMethod() given method descriptor for wrong " +
+        "service type.");
+    }
+    switch(method.getIndex()) {
+      case 0:
+        this.saveCommentLog(controller, (com.ywt.gapi.base.log.SaveCommentLogRequest)request,
+          com.google.protobuf.RpcUtil.<com.ywt.gapi.base.log.SaveCommentLogResponse>specializeCallback(
+            done));
+        return;
+      case 1:
+        this.saveOpenHisPushApiLog(controller, (com.ywt.gapi.base.log.SaveOpenHisPushApiLogRequest)request,
+          com.google.protobuf.RpcUtil.<com.ywt.gapi.base.log.SaveOpenHisPushApiLogResponse>specializeCallback(
+            done));
+        return;
+      default:
+        throw new java.lang.AssertionError("Can't get here.");
+    }
+  }
+
+  public final com.google.protobuf.Message
+      getRequestPrototype(
+      com.google.protobuf.Descriptors.MethodDescriptor method) {
+    if (method.getService() != getDescriptor()) {
+      throw new java.lang.IllegalArgumentException(
+        "Service.getRequestPrototype() given method " +
+        "descriptor for wrong service type.");
+    }
+    switch(method.getIndex()) {
+      case 0:
+        return com.ywt.gapi.base.log.SaveCommentLogRequest.getDefaultInstance();
+      case 1:
+        return com.ywt.gapi.base.log.SaveOpenHisPushApiLogRequest.getDefaultInstance();
+      default:
+        throw new java.lang.AssertionError("Can't get here.");
+    }
+  }
+
+  public final com.google.protobuf.Message
+      getResponsePrototype(
+      com.google.protobuf.Descriptors.MethodDescriptor method) {
+    if (method.getService() != getDescriptor()) {
+      throw new java.lang.IllegalArgumentException(
+        "Service.getResponsePrototype() given method " +
+        "descriptor for wrong service type.");
+    }
+    switch(method.getIndex()) {
+      case 0:
+        return com.ywt.gapi.base.log.SaveCommentLogResponse.getDefaultInstance();
+      case 1:
+        return com.ywt.gapi.base.log.SaveOpenHisPushApiLogResponse.getDefaultInstance();
+      default:
+        throw new java.lang.AssertionError("Can't get here.");
+    }
+  }
+
+  public static Stub newStub(
+      com.google.protobuf.RpcChannel channel) {
+    return new Stub(channel);
+  }
+
+  public static final class Stub extends com.ywt.gapi.base.log.YWTLogService implements Interface {
+    private Stub(com.google.protobuf.RpcChannel channel) {
+      this.channel = channel;
+    }
+
+    private final com.google.protobuf.RpcChannel channel;
+
+    public com.google.protobuf.RpcChannel getChannel() {
+      return channel;
+    }
+
+    public  void saveCommentLog(
+        com.google.protobuf.RpcController controller,
+        com.ywt.gapi.base.log.SaveCommentLogRequest request,
+        com.google.protobuf.RpcCallback<com.ywt.gapi.base.log.SaveCommentLogResponse> done) {
+      channel.callMethod(
+        getDescriptor().getMethods().get(0),
+        controller,
+        request,
+        com.ywt.gapi.base.log.SaveCommentLogResponse.getDefaultInstance(),
+        com.google.protobuf.RpcUtil.generalizeCallback(
+          done,
+          com.ywt.gapi.base.log.SaveCommentLogResponse.class,
+          com.ywt.gapi.base.log.SaveCommentLogResponse.getDefaultInstance()));
+    }
+
+    public  void saveOpenHisPushApiLog(
+        com.google.protobuf.RpcController controller,
+        com.ywt.gapi.base.log.SaveOpenHisPushApiLogRequest request,
+        com.google.protobuf.RpcCallback<com.ywt.gapi.base.log.SaveOpenHisPushApiLogResponse> done) {
+      channel.callMethod(
+        getDescriptor().getMethods().get(1),
+        controller,
+        request,
+        com.ywt.gapi.base.log.SaveOpenHisPushApiLogResponse.getDefaultInstance(),
+        com.google.protobuf.RpcUtil.generalizeCallback(
+          done,
+          com.ywt.gapi.base.log.SaveOpenHisPushApiLogResponse.class,
+          com.ywt.gapi.base.log.SaveOpenHisPushApiLogResponse.getDefaultInstance()));
+    }
+  }
+
+  public static BlockingInterface newBlockingStub(
+      com.google.protobuf.BlockingRpcChannel channel) {
+    return new BlockingStub(channel);
+  }
+
+  public interface BlockingInterface {
+    public com.ywt.gapi.base.log.SaveCommentLogResponse saveCommentLog(
+        com.google.protobuf.RpcController controller,
+        com.ywt.gapi.base.log.SaveCommentLogRequest request)
+        throws com.google.protobuf.ServiceException;
+
+    public com.ywt.gapi.base.log.SaveOpenHisPushApiLogResponse saveOpenHisPushApiLog(
+        com.google.protobuf.RpcController controller,
+        com.ywt.gapi.base.log.SaveOpenHisPushApiLogRequest request)
+        throws com.google.protobuf.ServiceException;
+  }
+
+  private static final class BlockingStub implements BlockingInterface {
+    private BlockingStub(com.google.protobuf.BlockingRpcChannel channel) {
+      this.channel = channel;
+    }
+
+    private final com.google.protobuf.BlockingRpcChannel channel;
+
+    public com.ywt.gapi.base.log.SaveCommentLogResponse saveCommentLog(
+        com.google.protobuf.RpcController controller,
+        com.ywt.gapi.base.log.SaveCommentLogRequest request)
+        throws com.google.protobuf.ServiceException {
+      return (com.ywt.gapi.base.log.SaveCommentLogResponse) channel.callBlockingMethod(
+        getDescriptor().getMethods().get(0),
+        controller,
+        request,
+        com.ywt.gapi.base.log.SaveCommentLogResponse.getDefaultInstance());
+    }
+
+
+    public com.ywt.gapi.base.log.SaveOpenHisPushApiLogResponse saveOpenHisPushApiLog(
+        com.google.protobuf.RpcController controller,
+        com.ywt.gapi.base.log.SaveOpenHisPushApiLogRequest request)
+        throws com.google.protobuf.ServiceException {
+      return (com.ywt.gapi.base.log.SaveOpenHisPushApiLogResponse) channel.callBlockingMethod(
+        getDescriptor().getMethods().get(1),
+        controller,
+        request,
+        com.ywt.gapi.base.log.SaveOpenHisPushApiLogResponse.getDefaultInstance());
+    }
+
+  }
+
+  // @@protoc_insertion_point(class_scope:com.ywt.gapi.base.log.YWTLogService)
+}
+

+ 357 - 0
src/main/java/com/ywt/gapi/base/log/YWTLogServiceGrpc.java

@@ -0,0 +1,357 @@
+package com.ywt.gapi.base.log;
+
+import static io.grpc.stub.ClientCalls.asyncUnaryCall;
+import static io.grpc.stub.ClientCalls.asyncServerStreamingCall;
+import static io.grpc.stub.ClientCalls.asyncClientStreamingCall;
+import static io.grpc.stub.ClientCalls.asyncBidiStreamingCall;
+import static io.grpc.stub.ClientCalls.blockingUnaryCall;
+import static io.grpc.stub.ClientCalls.blockingServerStreamingCall;
+import static io.grpc.stub.ClientCalls.futureUnaryCall;
+import static io.grpc.MethodDescriptor.generateFullMethodName;
+import static io.grpc.stub.ServerCalls.asyncUnaryCall;
+import static io.grpc.stub.ServerCalls.asyncServerStreamingCall;
+import static io.grpc.stub.ServerCalls.asyncClientStreamingCall;
+import static io.grpc.stub.ServerCalls.asyncBidiStreamingCall;
+import static io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall;
+import static io.grpc.stub.ServerCalls.asyncUnimplementedStreamingCall;
+
+/**
+ * <pre>
+ *医务通日志服务  // 对应 base-service 项目的 log.js 文件
+ * </pre>
+ */
+@javax.annotation.Generated(
+    value = "by gRPC proto compiler (version 1.7.2-SNAPSHOT)",
+    comments = "Source: log.proto")
+public final class YWTLogServiceGrpc {
+
+  private YWTLogServiceGrpc() {}
+
+  public static final String SERVICE_NAME = "com.ywt.gapi.base.log.YWTLogService";
+
+  // Static method descriptors that strictly reflect the proto.
+  @io.grpc.ExperimentalApi("https://github.com/grpc/grpc-java/issues/1901")
+  public static final io.grpc.MethodDescriptor<com.ywt.gapi.base.log.SaveCommentLogRequest,
+      com.ywt.gapi.base.log.SaveCommentLogResponse> METHOD_SAVE_COMMENT_LOG =
+      io.grpc.MethodDescriptor.<com.ywt.gapi.base.log.SaveCommentLogRequest, com.ywt.gapi.base.log.SaveCommentLogResponse>newBuilder()
+          .setType(io.grpc.MethodDescriptor.MethodType.UNARY)
+          .setFullMethodName(generateFullMethodName(
+              "com.ywt.gapi.base.log.YWTLogService", "saveCommentLog"))
+          .setRequestMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(
+              com.ywt.gapi.base.log.SaveCommentLogRequest.getDefaultInstance()))
+          .setResponseMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(
+              com.ywt.gapi.base.log.SaveCommentLogResponse.getDefaultInstance()))
+          .setSchemaDescriptor(new YWTLogServiceMethodDescriptorSupplier("saveCommentLog"))
+          .build();
+  @io.grpc.ExperimentalApi("https://github.com/grpc/grpc-java/issues/1901")
+  public static final io.grpc.MethodDescriptor<com.ywt.gapi.base.log.SaveOpenHisPushApiLogRequest,
+      com.ywt.gapi.base.log.SaveOpenHisPushApiLogResponse> METHOD_SAVE_OPEN_HIS_PUSH_API_LOG =
+      io.grpc.MethodDescriptor.<com.ywt.gapi.base.log.SaveOpenHisPushApiLogRequest, com.ywt.gapi.base.log.SaveOpenHisPushApiLogResponse>newBuilder()
+          .setType(io.grpc.MethodDescriptor.MethodType.UNARY)
+          .setFullMethodName(generateFullMethodName(
+              "com.ywt.gapi.base.log.YWTLogService", "saveOpenHisPushApiLog"))
+          .setRequestMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(
+              com.ywt.gapi.base.log.SaveOpenHisPushApiLogRequest.getDefaultInstance()))
+          .setResponseMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(
+              com.ywt.gapi.base.log.SaveOpenHisPushApiLogResponse.getDefaultInstance()))
+          .setSchemaDescriptor(new YWTLogServiceMethodDescriptorSupplier("saveOpenHisPushApiLog"))
+          .build();
+
+  /**
+   * Creates a new async stub that supports all call types for the service
+   */
+  public static YWTLogServiceStub newStub(io.grpc.Channel channel) {
+    return new YWTLogServiceStub(channel);
+  }
+
+  /**
+   * Creates a new blocking-style stub that supports unary and streaming output calls on the service
+   */
+  public static YWTLogServiceBlockingStub newBlockingStub(
+      io.grpc.Channel channel) {
+    return new YWTLogServiceBlockingStub(channel);
+  }
+
+  /**
+   * Creates a new ListenableFuture-style stub that supports unary calls on the service
+   */
+  public static YWTLogServiceFutureStub newFutureStub(
+      io.grpc.Channel channel) {
+    return new YWTLogServiceFutureStub(channel);
+  }
+
+  /**
+   * <pre>
+   *医务通日志服务  // 对应 base-service 项目的 log.js 文件
+   * </pre>
+   */
+  public static abstract class YWTLogServiceImplBase implements io.grpc.BindableService {
+
+    /**
+     * <pre>
+     * 记录日志
+     * </pre>
+     */
+    public void saveCommentLog(com.ywt.gapi.base.log.SaveCommentLogRequest request,
+        io.grpc.stub.StreamObserver<com.ywt.gapi.base.log.SaveCommentLogResponse> responseObserver) {
+      asyncUnimplementedUnaryCall(METHOD_SAVE_COMMENT_LOG, responseObserver);
+    }
+
+    /**
+     * <pre>
+     * 保存his外转处方日志
+     * </pre>
+     */
+    public void saveOpenHisPushApiLog(com.ywt.gapi.base.log.SaveOpenHisPushApiLogRequest request,
+        io.grpc.stub.StreamObserver<com.ywt.gapi.base.log.SaveOpenHisPushApiLogResponse> responseObserver) {
+      asyncUnimplementedUnaryCall(METHOD_SAVE_OPEN_HIS_PUSH_API_LOG, responseObserver);
+    }
+
+    @java.lang.Override public final io.grpc.ServerServiceDefinition bindService() {
+      return io.grpc.ServerServiceDefinition.builder(getServiceDescriptor())
+          .addMethod(
+            METHOD_SAVE_COMMENT_LOG,
+            asyncUnaryCall(
+              new MethodHandlers<
+                com.ywt.gapi.base.log.SaveCommentLogRequest,
+                com.ywt.gapi.base.log.SaveCommentLogResponse>(
+                  this, METHODID_SAVE_COMMENT_LOG)))
+          .addMethod(
+            METHOD_SAVE_OPEN_HIS_PUSH_API_LOG,
+            asyncUnaryCall(
+              new MethodHandlers<
+                com.ywt.gapi.base.log.SaveOpenHisPushApiLogRequest,
+                com.ywt.gapi.base.log.SaveOpenHisPushApiLogResponse>(
+                  this, METHODID_SAVE_OPEN_HIS_PUSH_API_LOG)))
+          .build();
+    }
+  }
+
+  /**
+   * <pre>
+   *医务通日志服务  // 对应 base-service 项目的 log.js 文件
+   * </pre>
+   */
+  public static final class YWTLogServiceStub extends io.grpc.stub.AbstractStub<YWTLogServiceStub> {
+    private YWTLogServiceStub(io.grpc.Channel channel) {
+      super(channel);
+    }
+
+    private YWTLogServiceStub(io.grpc.Channel channel,
+        io.grpc.CallOptions callOptions) {
+      super(channel, callOptions);
+    }
+
+    @java.lang.Override
+    protected YWTLogServiceStub build(io.grpc.Channel channel,
+        io.grpc.CallOptions callOptions) {
+      return new YWTLogServiceStub(channel, callOptions);
+    }
+
+    /**
+     * <pre>
+     * 记录日志
+     * </pre>
+     */
+    public void saveCommentLog(com.ywt.gapi.base.log.SaveCommentLogRequest request,
+        io.grpc.stub.StreamObserver<com.ywt.gapi.base.log.SaveCommentLogResponse> responseObserver) {
+      asyncUnaryCall(
+          getChannel().newCall(METHOD_SAVE_COMMENT_LOG, getCallOptions()), request, responseObserver);
+    }
+
+    /**
+     * <pre>
+     * 保存his外转处方日志
+     * </pre>
+     */
+    public void saveOpenHisPushApiLog(com.ywt.gapi.base.log.SaveOpenHisPushApiLogRequest request,
+        io.grpc.stub.StreamObserver<com.ywt.gapi.base.log.SaveOpenHisPushApiLogResponse> responseObserver) {
+      asyncUnaryCall(
+          getChannel().newCall(METHOD_SAVE_OPEN_HIS_PUSH_API_LOG, getCallOptions()), request, responseObserver);
+    }
+  }
+
+  /**
+   * <pre>
+   *医务通日志服务  // 对应 base-service 项目的 log.js 文件
+   * </pre>
+   */
+  public static final class YWTLogServiceBlockingStub extends io.grpc.stub.AbstractStub<YWTLogServiceBlockingStub> {
+    private YWTLogServiceBlockingStub(io.grpc.Channel channel) {
+      super(channel);
+    }
+
+    private YWTLogServiceBlockingStub(io.grpc.Channel channel,
+        io.grpc.CallOptions callOptions) {
+      super(channel, callOptions);
+    }
+
+    @java.lang.Override
+    protected YWTLogServiceBlockingStub build(io.grpc.Channel channel,
+        io.grpc.CallOptions callOptions) {
+      return new YWTLogServiceBlockingStub(channel, callOptions);
+    }
+
+    /**
+     * <pre>
+     * 记录日志
+     * </pre>
+     */
+    public com.ywt.gapi.base.log.SaveCommentLogResponse saveCommentLog(com.ywt.gapi.base.log.SaveCommentLogRequest request) {
+      return blockingUnaryCall(
+          getChannel(), METHOD_SAVE_COMMENT_LOG, getCallOptions(), request);
+    }
+
+    /**
+     * <pre>
+     * 保存his外转处方日志
+     * </pre>
+     */
+    public com.ywt.gapi.base.log.SaveOpenHisPushApiLogResponse saveOpenHisPushApiLog(com.ywt.gapi.base.log.SaveOpenHisPushApiLogRequest request) {
+      return blockingUnaryCall(
+          getChannel(), METHOD_SAVE_OPEN_HIS_PUSH_API_LOG, getCallOptions(), request);
+    }
+  }
+
+  /**
+   * <pre>
+   *医务通日志服务  // 对应 base-service 项目的 log.js 文件
+   * </pre>
+   */
+  public static final class YWTLogServiceFutureStub extends io.grpc.stub.AbstractStub<YWTLogServiceFutureStub> {
+    private YWTLogServiceFutureStub(io.grpc.Channel channel) {
+      super(channel);
+    }
+
+    private YWTLogServiceFutureStub(io.grpc.Channel channel,
+        io.grpc.CallOptions callOptions) {
+      super(channel, callOptions);
+    }
+
+    @java.lang.Override
+    protected YWTLogServiceFutureStub build(io.grpc.Channel channel,
+        io.grpc.CallOptions callOptions) {
+      return new YWTLogServiceFutureStub(channel, callOptions);
+    }
+
+    /**
+     * <pre>
+     * 记录日志
+     * </pre>
+     */
+    public com.google.common.util.concurrent.ListenableFuture<com.ywt.gapi.base.log.SaveCommentLogResponse> saveCommentLog(
+        com.ywt.gapi.base.log.SaveCommentLogRequest request) {
+      return futureUnaryCall(
+          getChannel().newCall(METHOD_SAVE_COMMENT_LOG, getCallOptions()), request);
+    }
+
+    /**
+     * <pre>
+     * 保存his外转处方日志
+     * </pre>
+     */
+    public com.google.common.util.concurrent.ListenableFuture<com.ywt.gapi.base.log.SaveOpenHisPushApiLogResponse> saveOpenHisPushApiLog(
+        com.ywt.gapi.base.log.SaveOpenHisPushApiLogRequest request) {
+      return futureUnaryCall(
+          getChannel().newCall(METHOD_SAVE_OPEN_HIS_PUSH_API_LOG, getCallOptions()), request);
+    }
+  }
+
+  private static final int METHODID_SAVE_COMMENT_LOG = 0;
+  private static final int METHODID_SAVE_OPEN_HIS_PUSH_API_LOG = 1;
+
+  private static final class MethodHandlers<Req, Resp> implements
+      io.grpc.stub.ServerCalls.UnaryMethod<Req, Resp>,
+      io.grpc.stub.ServerCalls.ServerStreamingMethod<Req, Resp>,
+      io.grpc.stub.ServerCalls.ClientStreamingMethod<Req, Resp>,
+      io.grpc.stub.ServerCalls.BidiStreamingMethod<Req, Resp> {
+    private final YWTLogServiceImplBase serviceImpl;
+    private final int methodId;
+
+    MethodHandlers(YWTLogServiceImplBase serviceImpl, int methodId) {
+      this.serviceImpl = serviceImpl;
+      this.methodId = methodId;
+    }
+
+    @java.lang.Override
+    @java.lang.SuppressWarnings("unchecked")
+    public void invoke(Req request, io.grpc.stub.StreamObserver<Resp> responseObserver) {
+      switch (methodId) {
+        case METHODID_SAVE_COMMENT_LOG:
+          serviceImpl.saveCommentLog((com.ywt.gapi.base.log.SaveCommentLogRequest) request,
+              (io.grpc.stub.StreamObserver<com.ywt.gapi.base.log.SaveCommentLogResponse>) responseObserver);
+          break;
+        case METHODID_SAVE_OPEN_HIS_PUSH_API_LOG:
+          serviceImpl.saveOpenHisPushApiLog((com.ywt.gapi.base.log.SaveOpenHisPushApiLogRequest) request,
+              (io.grpc.stub.StreamObserver<com.ywt.gapi.base.log.SaveOpenHisPushApiLogResponse>) responseObserver);
+          break;
+        default:
+          throw new AssertionError();
+      }
+    }
+
+    @java.lang.Override
+    @java.lang.SuppressWarnings("unchecked")
+    public io.grpc.stub.StreamObserver<Req> invoke(
+        io.grpc.stub.StreamObserver<Resp> responseObserver) {
+      switch (methodId) {
+        default:
+          throw new AssertionError();
+      }
+    }
+  }
+
+  private static abstract class YWTLogServiceBaseDescriptorSupplier
+      implements io.grpc.protobuf.ProtoFileDescriptorSupplier, io.grpc.protobuf.ProtoServiceDescriptorSupplier {
+    YWTLogServiceBaseDescriptorSupplier() {}
+
+    @java.lang.Override
+    public com.google.protobuf.Descriptors.FileDescriptor getFileDescriptor() {
+      return com.ywt.gapi.base.log.Log.getDescriptor();
+    }
+
+    @java.lang.Override
+    public com.google.protobuf.Descriptors.ServiceDescriptor getServiceDescriptor() {
+      return getFileDescriptor().findServiceByName("YWTLogService");
+    }
+  }
+
+  private static final class YWTLogServiceFileDescriptorSupplier
+      extends YWTLogServiceBaseDescriptorSupplier {
+    YWTLogServiceFileDescriptorSupplier() {}
+  }
+
+  private static final class YWTLogServiceMethodDescriptorSupplier
+      extends YWTLogServiceBaseDescriptorSupplier
+      implements io.grpc.protobuf.ProtoMethodDescriptorSupplier {
+    private final String methodName;
+
+    YWTLogServiceMethodDescriptorSupplier(String methodName) {
+      this.methodName = methodName;
+    }
+
+    @java.lang.Override
+    public com.google.protobuf.Descriptors.MethodDescriptor getMethodDescriptor() {
+      return getServiceDescriptor().findMethodByName(methodName);
+    }
+  }
+
+  private static volatile io.grpc.ServiceDescriptor serviceDescriptor;
+
+  public static io.grpc.ServiceDescriptor getServiceDescriptor() {
+    io.grpc.ServiceDescriptor result = serviceDescriptor;
+    if (result == null) {
+      synchronized (YWTLogServiceGrpc.class) {
+        result = serviceDescriptor;
+        if (result == null) {
+          serviceDescriptor = result = io.grpc.ServiceDescriptor.newBuilder(SERVICE_NAME)
+              .setSchemaDescriptor(new YWTLogServiceFileDescriptorSupplier())
+              .addMethod(METHOD_SAVE_COMMENT_LOG)
+              .addMethod(METHOD_SAVE_OPEN_HIS_PUSH_API_LOG)
+              .build();
+        }
+      }
+    }
+    return result;
+  }
+}

+ 6 - 0
src/main/java/com/ywt/mg/configs/ServiceGrpcStubBeans.java

@@ -1,5 +1,6 @@
 package com.ywt.mg.configs;
 
+import com.ywt.gapi.base.log.YWTLogServiceGrpc;
 import com.ywt.gapi.drug.DrugServiceGrpc;
 import io.grpc.Channel;
 import org.springframework.context.annotation.Bean;
@@ -16,4 +17,9 @@ public class ServiceGrpcStubBeans {
     public DrugServiceGrpc.DrugServiceBlockingStub getDrugServiceBlockingStub(){
         return DrugServiceGrpc.newBlockingStub(agentChannel);
     }
+
+    @Bean(name = "ywtLogServiceBlockingStub")
+    public YWTLogServiceGrpc.YWTLogServiceBlockingStub getYWTLogServiceBlockingStub(){
+        return YWTLogServiceGrpc.newBlockingStub(agentChannel);
+    }
 }

+ 73 - 11
src/main/java/com/ywt/mg/web/controller/DrugController.java

@@ -1,6 +1,9 @@
 package com.ywt.mg.web.controller;
 
 import com.ywt.gapi.ResultCode;
+import com.ywt.gapi.base.log.SaveOpenHisPushApiLogRequest;
+import com.ywt.gapi.base.log.SaveOpenHisPushApiLogResponse;
+import com.ywt.gapi.base.log.YWTLogServiceGrpc;
 import com.ywt.gapi.drug.DrugServiceGrpc;
 import com.ywt.gapi.drug.PrescriptionInfo;
 import com.ywt.gapi.drug.SaveHisOpenApiPrescriptionRequest;
@@ -43,10 +46,33 @@ public class DrugController {
     @Autowired
     private DrugServiceGrpc.DrugServiceBlockingStub drugServiceBlockingStub;
 
+    @Autowired
+    private YWTLogServiceGrpc.YWTLogServiceBlockingStub ywtLogServiceBlockingStub;
+
     private final int TaiheHospitalId = 12;
     private final int BaiyunHospitalId = 41;
 
 
+    BaseResponse saveOpenHisPushApiLog(String path, String req, String res, int difftime, int httpStatus) {
+        try {
+            SaveOpenHisPushApiLogRequest request = SaveOpenHisPushApiLogRequest.newBuilder()
+                    .setPath(path)
+                    .setReq(req)
+                    .setRes(res)
+                    .setDifftime(difftime)
+                    .setHttpStatus(httpStatus)
+                    .build();
+            SaveOpenHisPushApiLogResponse response = ywtLogServiceBlockingStub.saveOpenHisPushApiLog(request);
+            if (response.getCode() == BaseResponse.SUCCEED) {
+                return new BaseResponse().succeed(response.getInfo());
+            }
+            return new BaseResponse().failed(response.getCode(), response.getInfo());
+        } catch (Exception e) {
+            logger.error("DrugController#saveOpenHisPushApiLog(){}", e.getMessage(), e);
+            return new BaseResponse().failedWithAppError("日志插入失败");
+        }
+    }
+
     /**
      * 查询药品订单列表
      */
@@ -60,28 +86,64 @@ public class DrugController {
         logger.info("---eventNo---:{}", eventNo);
         logger.info("---eventType---:{}", eventType);
         logger.info("---eventData---:{}", eventData);
-
+        long startTimeMillis = System.currentTimeMillis();
+        String req = "";
         switch (eventType) {
             case "prescriptionPush":
-                return prescriptionPushApi(eventNo, eventData);
+                // 解析数据
+                PrescriptionPushData prescriptionPushData = parsePrescriptionPushData(eventData);
+                if (prescriptionPushData == null) {
+                    response.failedWithAppError("数据格式不正确");
+                } else {
+                    // 解析之后会解决中文显示的编码问题
+                    req = JsonSerializer.toJson(prescriptionPushData);
+                    logger.info("---- prescriptionPushData: " + req);
+                    response = prescriptionPushApi(eventNo, prescriptionPushData);
+                }
+                break;
             default:
-                return response.failedWithAppError("处理失败,尚未实现该方法");
+                response = response.failedWithAppError("处理失败,尚未实现该方法");
+                break;
         }
+        long endTimeMillis = System.currentTimeMillis();
+
+        String path = "/drug/prescriptionPush";
+        String res = JsonSerializer.toJson(response);
+        Long difftimeLong = new Long(endTimeMillis - startTimeMillis);
+        int difftime = difftimeLong.intValue();
+        int httpStatus = 200;
+        if (response.getCode() == BaseResponse.APP_ERROR) {
+            httpStatus = 500;
+        }
+        // 日志记录
+        saveOpenHisPushApiLog(path, req, res, difftime, httpStatus);
+        return response;
+    }
+
+    /**
+     * 解析处方数据
+     *
+     * @param data {"patient":{"age":"51岁3月13天","birthday":"1971-08-04","gender":"1","height":"","idCard":"341127197108046219","idType":"01","name":"蒋圣武","patientCardNumber":"000000381926","patientNumber":"000265640","patientType":"01","phoneNumber":"13672465144","weight":""},"doctor":{"departmentName":"NFMDXK-内分泌代谢科门诊(黄石院区)","doctorNumber":"9441","gender":"","idCard":"","idType":"","name":"黄永锋","phoneNumber":"","title":"2"},"prescriptions":[{"detail":{"allergyHistory":"","diagnosis":"2型糖尿病","diseaseNumbers":"E11.900","prescriptionNumber":"2534653","prescriptionTime":""},"drugs":[{"adviceId":"2441090||2","daysOfMedication":"30天","doctorAdviceType":"3","dosage":"2片","drugName":"(国)盐酸二甲双胍片[0.25g*100](国基)","drugNumber":"0505040313","drugSpecifications":"0.25g*100","drugType":"01","drugUsage":"口服","flag":"1","frequency":"Tid","medicalInsurance":"","minPackagingUnit":"瓶(100)","note":"","pharmacyType":"01","quantity":2},{"adviceId":"2441090||3","daysOfMedication":"30天","doctorAdviceType":"3","dosage":"50mg","drugName":"阿卡波糖咀嚼片[50mg*10片*6板]","drugNumber":"0505042111","drugSpecifications":"50mg*10片*6板","drugType":"01","drugUsage":"口服(餐时)","flag":"1","frequency":"Tid","medicalInsurance":"","minPackagingUnit":"盒(60)","note":"","pharmacyType":"01","quantity":2},{"adviceId":"2441090||4","daysOfMedication":"15天","doctorAdviceType":"3","dosage":"9g","drugName":"津力达颗粒[9g*9](国基)","drugNumber":"3899030111","drugSpecifications":"9g*9袋/盒","drugType":"01","drugUsage":"口服","flag":"1","frequency":"Tid","medicalInsurance":"","minPackagingUnit":"盒(9)","note":"","pharmacyType":"01","quantity":5}]}],"hospitalId":12}
+     * @return {@link PrescriptionPushData}
+     */
+    private PrescriptionPushData parsePrescriptionPushData(String data) {
+        PrescriptionPushData prescriptionPushData = null;
+        try {
+            prescriptionPushData = JsonSerializer.from(data, PrescriptionPushData.class);
+        } catch (Exception e) {
+            logger.error("DrugController#parsePrescriptionPushData#data(){},{},{}", data, e.getMessage(), e);
+        }
+        return prescriptionPushData;
     }
 
-    private BaseResponse prescriptionPushApi(String eventNo, String eventData) {
+
+    private BaseResponse prescriptionPushApi(String eventNo, PrescriptionPushData prescriptionPushData) {
         DataResponse response = new DataResponse();
         int code = 0;
         String info = "";
         String no = "";
         String platformNo = "";
         try {
-            // {"patient":{"age":"51岁3月13天","birthday":"1971-08-04","gender":"1","height":"","idCard":"341127197108046219","idType":"01","name":"蒋圣武","patientCardNumber":"000000381926","patientNumber":"000265640","patientType":"01","phoneNumber":"13672465144","weight":""},"doctor":{"departmentName":"NFMDXK-内分泌代谢科门诊(黄石院区)","doctorNumber":"9441","gender":"","idCard":"","idType":"","name":"黄永锋","phoneNumber":"","title":"2"},"prescriptions":[{"detail":{"allergyHistory":"","diagnosis":"2型糖尿病","diseaseNumbers":"E11.900","prescriptionNumber":"2534653","prescriptionTime":""},"drugs":[{"adviceId":"2441090||2","daysOfMedication":"30天","doctorAdviceType":"3","dosage":"2片","drugName":"(国)盐酸二甲双胍片[0.25g*100](国基)","drugNumber":"0505040313","drugSpecifications":"0.25g*100","drugType":"01","drugUsage":"口服","flag":"1","frequency":"Tid","medicalInsurance":"","minPackagingUnit":"瓶(100)","note":"","pharmacyType":"01","quantity":2},{"adviceId":"2441090||3","daysOfMedication":"30天","doctorAdviceType":"3","dosage":"50mg","drugName":"阿卡波糖咀嚼片[50mg*10片*6板]","drugNumber":"0505042111","drugSpecifications":"50mg*10片*6板","drugType":"01","drugUsage":"口服(餐时)","flag":"1","frequency":"Tid","medicalInsurance":"","minPackagingUnit":"盒(60)","note":"","pharmacyType":"01","quantity":2},{"adviceId":"2441090||4","daysOfMedication":"15天","doctorAdviceType":"3","dosage":"9g","drugName":"津力达颗粒[9g*9](国基)","drugNumber":"3899030111","drugSpecifications":"9g*9袋/盒","drugType":"01","drugUsage":"口服","flag":"1","frequency":"Tid","medicalInsurance":"","minPackagingUnit":"盒(9)","note":"","pharmacyType":"01","quantity":5}]}],"hospitalId":12}
-            PrescriptionPushData prescriptionPushData = JsonSerializer.from(eventData, PrescriptionPushData.class);
-            if (prescriptionPushData == null) {
-                throw new AppMessageException("数据格式不正确");
-            }
-            logger.info("---- prescriptionPushData: " + JsonSerializer.toJson(prescriptionPushData));
             PatientInfo patient = prescriptionPushData.getPatient();
             DoctorInfo doctor = prescriptionPushData.getDoctor();
             List<com.ywt.mg.models.PrescriptionPushApiRequest.PrescriptionInfo> prescriptions = prescriptionPushData.getPrescriptions();
@@ -193,7 +255,7 @@ public class DrugController {
                 info = savePrescriptionResponse.getInfo();
             }
         } catch (Exception e) {
-            logger.error("DrugController#prescriptionPushApi#eventData:{},{}", eventData, e.getMessage(), e);
+            logger.error("DrugController#prescriptionPushApi#prescriptionPushData:{},{}", JsonSerializer.toJson(prescriptionPushData), e.getMessage(), e);
             if (!Checker.isNone(e.getMessage())) {
                 return response.failedWithAppError("处理失败:" + e.getMessage());
             } else {