Browse Source

fix:浮标消息返回地址

fuwencai 2 years ago
parent
commit
623162502d

+ 1 - 1
README.md

@@ -1,4 +1,4 @@
 消息中台
-goctl rpc proto -src message.proto -dir .
+goctl rpc proto -src message.proto -dir .goctl rpc protoc message.proto --go_out=./type --go-grpc_out=./type --zrpc_out=.
 goctl api go -api message.api -dir .
 

+ 1 - 1
entity/util.go

@@ -1,7 +1,7 @@
 package entity
 
 import (
-	"app.yhyue.com/moapp/MessageCenter/rpc/message"
+	"app.yhyue.com/moapp/MessageCenter/rpc/type/message"
 	"app.yhyue.com/moapp/jybase/redis"
 	"encoding/json"
 	"fmt"

+ 1 - 0
go.mod

@@ -10,5 +10,6 @@ require (
 	github.com/zeromicro/go-zero v1.3.5
 	go.etcd.io/etcd/client/v3 v3.5.4
 	google.golang.org/grpc v1.47.0
+	google.golang.org/protobuf v1.28.0
 
 )

+ 1 - 1
rpc/internal/logic/deletemultiplemessagelogic.go

@@ -1,8 +1,8 @@
 package logic
 
 import (
-	"app.yhyue.com/moapp/MessageCenter/rpc/message"
 	"app.yhyue.com/moapp/MessageCenter/rpc/messageclient"
+	"app.yhyue.com/moapp/MessageCenter/rpc/type/message"
 	"app.yhyue.com/moapp/MessageCenter/service"
 	"context"
 	"strings"

+ 1 - 1
rpc/internal/logic/finduserbuoymsglogic.go

@@ -1,11 +1,11 @@
 package logic
 
 import (
+	"app.yhyue.com/moapp/MessageCenter/rpc/type/message"
 	"app.yhyue.com/moapp/MessageCenter/service"
 	"context"
 
 	"app.yhyue.com/moapp/MessageCenter/rpc/internal/svc"
-	"app.yhyue.com/moapp/MessageCenter/rpc/message"
 
 	"github.com/zeromicro/go-zero/core/logx"
 )

+ 2 - 1
rpc/internal/server/messageserver.go

@@ -8,11 +8,12 @@ import (
 
 	"app.yhyue.com/moapp/MessageCenter/rpc/internal/logic"
 	"app.yhyue.com/moapp/MessageCenter/rpc/internal/svc"
-	"app.yhyue.com/moapp/MessageCenter/rpc/message"
+	"app.yhyue.com/moapp/MessageCenter/rpc/type/message"
 )
 
 type MessageServer struct {
 	svcCtx *svc.ServiceContext
+	message.UnimplementedMessageServer
 }
 
 func NewMessageServer(svcCtx *svc.ServiceContext) *MessageServer {

+ 1 - 1
rpc/message.go

@@ -8,7 +8,7 @@ import (
 	"app.yhyue.com/moapp/MessageCenter/rpc/internal/config"
 	"app.yhyue.com/moapp/MessageCenter/rpc/internal/server"
 	"app.yhyue.com/moapp/MessageCenter/rpc/internal/svc"
-	"app.yhyue.com/moapp/MessageCenter/rpc/message"
+	"app.yhyue.com/moapp/MessageCenter/rpc/type/message"
 	"app.yhyue.com/moapp/jybase/mysql"
 	"app.yhyue.com/moapp/jybase/redis"
 	"flag"

+ 0 - 2455
rpc/message/message.pb.go

@@ -1,2455 +0,0 @@
-// Code generated by protoc-gen-go. DO NOT EDIT.
-// source: message.proto
-
-package message
-
-import (
-	context "context"
-	fmt "fmt"
-	proto "github.com/golang/protobuf/proto"
-	grpc "google.golang.org/grpc"
-	codes "google.golang.org/grpc/codes"
-	status "google.golang.org/grpc/status"
-	math "math"
-)
-
-// Reference imports to suppress errors if they are not otherwise used.
-var _ = proto.Marshal
-var _ = fmt.Errorf
-var _ = math.Inf
-
-// This is a compile-time assertion to ensure that this generated file
-// is compatible with the proto package it is being compiled against.
-// A compilation error at this line likely means your copy of the
-// proto package needs to be updated.
-const _ = proto.ProtoPackageIsVersion3 // please upgrade the proto package
-
-type SendMsgRequest struct {
-	ReceiveUserId        string   `protobuf:"bytes,1,opt,name=receiveUserId,proto3" json:"receiveUserId,omitempty"`
-	ReceiveName          string   `protobuf:"bytes,2,opt,name=receiveName,proto3" json:"receiveName,omitempty"`
-	SendUserId           string   `protobuf:"bytes,3,opt,name=sendUserId,proto3" json:"sendUserId,omitempty"`
-	SendName             string   `protobuf:"bytes,4,opt,name=sendName,proto3" json:"sendName,omitempty"`
-	Title                string   `protobuf:"bytes,5,opt,name=title,proto3" json:"title,omitempty"`
-	Content              string   `protobuf:"bytes,6,opt,name=content,proto3" json:"content,omitempty"`
-	MsgType              int64    `protobuf:"varint,7,opt,name=msgType,proto3" json:"msgType,omitempty"`
-	Link                 string   `protobuf:"bytes,8,opt,name=link,proto3" json:"link,omitempty"`
-	CiteId               int64    `protobuf:"varint,9,opt,name=citeId,proto3" json:"citeId,omitempty"`
-	Appid                string   `protobuf:"bytes,10,opt,name=appid,proto3" json:"appid,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
-}
-
-func (m *SendMsgRequest) Reset()         { *m = SendMsgRequest{} }
-func (m *SendMsgRequest) String() string { return proto.CompactTextString(m) }
-func (*SendMsgRequest) ProtoMessage()    {}
-func (*SendMsgRequest) Descriptor() ([]byte, []int) {
-	return fileDescriptor_33c57e4bae7b9afd, []int{0}
-}
-
-func (m *SendMsgRequest) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_SendMsgRequest.Unmarshal(m, b)
-}
-func (m *SendMsgRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_SendMsgRequest.Marshal(b, m, deterministic)
-}
-func (m *SendMsgRequest) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_SendMsgRequest.Merge(m, src)
-}
-func (m *SendMsgRequest) XXX_Size() int {
-	return xxx_messageInfo_SendMsgRequest.Size(m)
-}
-func (m *SendMsgRequest) XXX_DiscardUnknown() {
-	xxx_messageInfo_SendMsgRequest.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_SendMsgRequest proto.InternalMessageInfo
-
-func (m *SendMsgRequest) GetReceiveUserId() string {
-	if m != nil {
-		return m.ReceiveUserId
-	}
-	return ""
-}
-
-func (m *SendMsgRequest) GetReceiveName() string {
-	if m != nil {
-		return m.ReceiveName
-	}
-	return ""
-}
-
-func (m *SendMsgRequest) GetSendUserId() string {
-	if m != nil {
-		return m.SendUserId
-	}
-	return ""
-}
-
-func (m *SendMsgRequest) GetSendName() string {
-	if m != nil {
-		return m.SendName
-	}
-	return ""
-}
-
-func (m *SendMsgRequest) GetTitle() string {
-	if m != nil {
-		return m.Title
-	}
-	return ""
-}
-
-func (m *SendMsgRequest) GetContent() string {
-	if m != nil {
-		return m.Content
-	}
-	return ""
-}
-
-func (m *SendMsgRequest) GetMsgType() int64 {
-	if m != nil {
-		return m.MsgType
-	}
-	return 0
-}
-
-func (m *SendMsgRequest) GetLink() string {
-	if m != nil {
-		return m.Link
-	}
-	return ""
-}
-
-func (m *SendMsgRequest) GetCiteId() int64 {
-	if m != nil {
-		return m.CiteId
-	}
-	return 0
-}
-
-func (m *SendMsgRequest) GetAppid() string {
-	if m != nil {
-		return m.Appid
-	}
-	return ""
-}
-
-type ChangeReadStatusRequest struct {
-	Id                   string   `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
-	ReadStatus           int64    `protobuf:"varint,2,opt,name=readStatus,proto3" json:"readStatus,omitempty"`
-	Appid                string   `protobuf:"bytes,3,opt,name=appid,proto3" json:"appid,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
-}
-
-func (m *ChangeReadStatusRequest) Reset()         { *m = ChangeReadStatusRequest{} }
-func (m *ChangeReadStatusRequest) String() string { return proto.CompactTextString(m) }
-func (*ChangeReadStatusRequest) ProtoMessage()    {}
-func (*ChangeReadStatusRequest) Descriptor() ([]byte, []int) {
-	return fileDescriptor_33c57e4bae7b9afd, []int{1}
-}
-
-func (m *ChangeReadStatusRequest) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_ChangeReadStatusRequest.Unmarshal(m, b)
-}
-func (m *ChangeReadStatusRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_ChangeReadStatusRequest.Marshal(b, m, deterministic)
-}
-func (m *ChangeReadStatusRequest) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_ChangeReadStatusRequest.Merge(m, src)
-}
-func (m *ChangeReadStatusRequest) XXX_Size() int {
-	return xxx_messageInfo_ChangeReadStatusRequest.Size(m)
-}
-func (m *ChangeReadStatusRequest) XXX_DiscardUnknown() {
-	xxx_messageInfo_ChangeReadStatusRequest.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_ChangeReadStatusRequest proto.InternalMessageInfo
-
-func (m *ChangeReadStatusRequest) GetId() string {
-	if m != nil {
-		return m.Id
-	}
-	return ""
-}
-
-func (m *ChangeReadStatusRequest) GetReadStatus() int64 {
-	if m != nil {
-		return m.ReadStatus
-	}
-	return 0
-}
-
-func (m *ChangeReadStatusRequest) GetAppid() string {
-	if m != nil {
-		return m.Appid
-	}
-	return ""
-}
-
-type ResCount struct {
-	MsgType              int64    `protobuf:"varint,1,opt,name=msgType,proto3" json:"msgType,omitempty"`
-	Count                int64    `protobuf:"varint,2,opt,name=count,proto3" json:"count,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
-}
-
-func (m *ResCount) Reset()         { *m = ResCount{} }
-func (m *ResCount) String() string { return proto.CompactTextString(m) }
-func (*ResCount) ProtoMessage()    {}
-func (*ResCount) Descriptor() ([]byte, []int) {
-	return fileDescriptor_33c57e4bae7b9afd, []int{2}
-}
-
-func (m *ResCount) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_ResCount.Unmarshal(m, b)
-}
-func (m *ResCount) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_ResCount.Marshal(b, m, deterministic)
-}
-func (m *ResCount) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_ResCount.Merge(m, src)
-}
-func (m *ResCount) XXX_Size() int {
-	return xxx_messageInfo_ResCount.Size(m)
-}
-func (m *ResCount) XXX_DiscardUnknown() {
-	xxx_messageInfo_ResCount.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_ResCount proto.InternalMessageInfo
-
-func (m *ResCount) GetMsgType() int64 {
-	if m != nil {
-		return m.MsgType
-	}
-	return 0
-}
-
-func (m *ResCount) GetCount() int64 {
-	if m != nil {
-		return m.Count
-	}
-	return 0
-}
-
-// 删除单一消息
-type DeleteSingleMessageRequest struct {
-	Id                   string   `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
-	Appid                string   `protobuf:"bytes,3,opt,name=appid,proto3" json:"appid,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
-}
-
-func (m *DeleteSingleMessageRequest) Reset()         { *m = DeleteSingleMessageRequest{} }
-func (m *DeleteSingleMessageRequest) String() string { return proto.CompactTextString(m) }
-func (*DeleteSingleMessageRequest) ProtoMessage()    {}
-func (*DeleteSingleMessageRequest) Descriptor() ([]byte, []int) {
-	return fileDescriptor_33c57e4bae7b9afd, []int{3}
-}
-
-func (m *DeleteSingleMessageRequest) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_DeleteSingleMessageRequest.Unmarshal(m, b)
-}
-func (m *DeleteSingleMessageRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_DeleteSingleMessageRequest.Marshal(b, m, deterministic)
-}
-func (m *DeleteSingleMessageRequest) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_DeleteSingleMessageRequest.Merge(m, src)
-}
-func (m *DeleteSingleMessageRequest) XXX_Size() int {
-	return xxx_messageInfo_DeleteSingleMessageRequest.Size(m)
-}
-func (m *DeleteSingleMessageRequest) XXX_DiscardUnknown() {
-	xxx_messageInfo_DeleteSingleMessageRequest.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_DeleteSingleMessageRequest proto.InternalMessageInfo
-
-func (m *DeleteSingleMessageRequest) GetId() string {
-	if m != nil {
-		return m.Id
-	}
-	return ""
-}
-
-func (m *DeleteSingleMessageRequest) GetAppid() string {
-	if m != nil {
-		return m.Appid
-	}
-	return ""
-}
-
-// 批量删除消息
-type DeleteMultipleMessageRequest struct {
-	Id                   string   `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
-	Appid                string   `protobuf:"bytes,3,opt,name=appid,proto3" json:"appid,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
-}
-
-func (m *DeleteMultipleMessageRequest) Reset()         { *m = DeleteMultipleMessageRequest{} }
-func (m *DeleteMultipleMessageRequest) String() string { return proto.CompactTextString(m) }
-func (*DeleteMultipleMessageRequest) ProtoMessage()    {}
-func (*DeleteMultipleMessageRequest) Descriptor() ([]byte, []int) {
-	return fileDescriptor_33c57e4bae7b9afd, []int{4}
-}
-
-func (m *DeleteMultipleMessageRequest) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_DeleteMultipleMessageRequest.Unmarshal(m, b)
-}
-func (m *DeleteMultipleMessageRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_DeleteMultipleMessageRequest.Marshal(b, m, deterministic)
-}
-func (m *DeleteMultipleMessageRequest) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_DeleteMultipleMessageRequest.Merge(m, src)
-}
-func (m *DeleteMultipleMessageRequest) XXX_Size() int {
-	return xxx_messageInfo_DeleteMultipleMessageRequest.Size(m)
-}
-func (m *DeleteMultipleMessageRequest) XXX_DiscardUnknown() {
-	xxx_messageInfo_DeleteMultipleMessageRequest.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_DeleteMultipleMessageRequest proto.InternalMessageInfo
-
-func (m *DeleteMultipleMessageRequest) GetId() string {
-	if m != nil {
-		return m.Id
-	}
-	return ""
-}
-
-func (m *DeleteMultipleMessageRequest) GetAppid() string {
-	if m != nil {
-		return m.Appid
-	}
-	return ""
-}
-
-// 查询指定用户未读消息合计
-type GetUnreadCountRequest struct {
-	UserId               string   `protobuf:"bytes,1,opt,name=userId,proto3" json:"userId,omitempty"`
-	Appid                string   `protobuf:"bytes,2,opt,name=appid,proto3" json:"appid,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
-}
-
-func (m *GetUnreadCountRequest) Reset()         { *m = GetUnreadCountRequest{} }
-func (m *GetUnreadCountRequest) String() string { return proto.CompactTextString(m) }
-func (*GetUnreadCountRequest) ProtoMessage()    {}
-func (*GetUnreadCountRequest) Descriptor() ([]byte, []int) {
-	return fileDescriptor_33c57e4bae7b9afd, []int{5}
-}
-
-func (m *GetUnreadCountRequest) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_GetUnreadCountRequest.Unmarshal(m, b)
-}
-func (m *GetUnreadCountRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_GetUnreadCountRequest.Marshal(b, m, deterministic)
-}
-func (m *GetUnreadCountRequest) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_GetUnreadCountRequest.Merge(m, src)
-}
-func (m *GetUnreadCountRequest) XXX_Size() int {
-	return xxx_messageInfo_GetUnreadCountRequest.Size(m)
-}
-func (m *GetUnreadCountRequest) XXX_DiscardUnknown() {
-	xxx_messageInfo_GetUnreadCountRequest.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_GetUnreadCountRequest proto.InternalMessageInfo
-
-func (m *GetUnreadCountRequest) GetUserId() string {
-	if m != nil {
-		return m.UserId
-	}
-	return ""
-}
-
-func (m *GetUnreadCountRequest) GetAppid() string {
-	if m != nil {
-		return m.Appid
-	}
-	return ""
-}
-
-type Response struct {
-	Code                 int64    `protobuf:"varint,1,opt,name=code,proto3" json:"code,omitempty"`
-	Message              string   `protobuf:"bytes,2,opt,name=message,proto3" json:"message,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
-}
-
-func (m *Response) Reset()         { *m = Response{} }
-func (m *Response) String() string { return proto.CompactTextString(m) }
-func (*Response) ProtoMessage()    {}
-func (*Response) Descriptor() ([]byte, []int) {
-	return fileDescriptor_33c57e4bae7b9afd, []int{6}
-}
-
-func (m *Response) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_Response.Unmarshal(m, b)
-}
-func (m *Response) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_Response.Marshal(b, m, deterministic)
-}
-func (m *Response) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_Response.Merge(m, src)
-}
-func (m *Response) XXX_Size() int {
-	return xxx_messageInfo_Response.Size(m)
-}
-func (m *Response) XXX_DiscardUnknown() {
-	xxx_messageInfo_Response.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_Response proto.InternalMessageInfo
-
-func (m *Response) GetCode() int64 {
-	if m != nil {
-		return m.Code
-	}
-	return 0
-}
-
-func (m *Response) GetMessage() string {
-	if m != nil {
-		return m.Message
-	}
-	return ""
-}
-
-type GetUnreadCountResponse struct {
-	Code                 int64    `protobuf:"varint,1,opt,name=code,proto3" json:"code,omitempty"`
-	Message              string   `protobuf:"bytes,2,opt,name=message,proto3" json:"message,omitempty"`
-	Count                int64    `protobuf:"varint,3,opt,name=count,proto3" json:"count,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
-}
-
-func (m *GetUnreadCountResponse) Reset()         { *m = GetUnreadCountResponse{} }
-func (m *GetUnreadCountResponse) String() string { return proto.CompactTextString(m) }
-func (*GetUnreadCountResponse) ProtoMessage()    {}
-func (*GetUnreadCountResponse) Descriptor() ([]byte, []int) {
-	return fileDescriptor_33c57e4bae7b9afd, []int{7}
-}
-
-func (m *GetUnreadCountResponse) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_GetUnreadCountResponse.Unmarshal(m, b)
-}
-func (m *GetUnreadCountResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_GetUnreadCountResponse.Marshal(b, m, deterministic)
-}
-func (m *GetUnreadCountResponse) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_GetUnreadCountResponse.Merge(m, src)
-}
-func (m *GetUnreadCountResponse) XXX_Size() int {
-	return xxx_messageInfo_GetUnreadCountResponse.Size(m)
-}
-func (m *GetUnreadCountResponse) XXX_DiscardUnknown() {
-	xxx_messageInfo_GetUnreadCountResponse.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_GetUnreadCountResponse proto.InternalMessageInfo
-
-func (m *GetUnreadCountResponse) GetCode() int64 {
-	if m != nil {
-		return m.Code
-	}
-	return 0
-}
-
-func (m *GetUnreadCountResponse) GetMessage() string {
-	if m != nil {
-		return m.Message
-	}
-	return ""
-}
-
-func (m *GetUnreadCountResponse) GetCount() int64 {
-	if m != nil {
-		return m.Count
-	}
-	return 0
-}
-
-type FindUserMsgReq struct {
-	UserId               string   `protobuf:"bytes,1,opt,name=userId,proto3" json:"userId,omitempty"`
-	ReceiveUserId        string   `protobuf:"bytes,2,opt,name=receiveUserId,proto3" json:"receiveUserId,omitempty"`
-	Appid                string   `protobuf:"bytes,3,opt,name=appid,proto3" json:"appid,omitempty"`
-	OffSet               int64    `protobuf:"varint,4,opt,name=offSet,proto3" json:"offSet,omitempty"`
-	PageSize             int64    `protobuf:"varint,5,opt,name=pageSize,proto3" json:"pageSize,omitempty"`
-	MsgType              int64    `protobuf:"varint,6,opt,name=msgType,proto3" json:"msgType,omitempty"`
-	Read                 int64    `protobuf:"varint,7,opt,name=read,proto3" json:"read,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
-}
-
-func (m *FindUserMsgReq) Reset()         { *m = FindUserMsgReq{} }
-func (m *FindUserMsgReq) String() string { return proto.CompactTextString(m) }
-func (*FindUserMsgReq) ProtoMessage()    {}
-func (*FindUserMsgReq) Descriptor() ([]byte, []int) {
-	return fileDescriptor_33c57e4bae7b9afd, []int{8}
-}
-
-func (m *FindUserMsgReq) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_FindUserMsgReq.Unmarshal(m, b)
-}
-func (m *FindUserMsgReq) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_FindUserMsgReq.Marshal(b, m, deterministic)
-}
-func (m *FindUserMsgReq) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_FindUserMsgReq.Merge(m, src)
-}
-func (m *FindUserMsgReq) XXX_Size() int {
-	return xxx_messageInfo_FindUserMsgReq.Size(m)
-}
-func (m *FindUserMsgReq) XXX_DiscardUnknown() {
-	xxx_messageInfo_FindUserMsgReq.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_FindUserMsgReq proto.InternalMessageInfo
-
-func (m *FindUserMsgReq) GetUserId() string {
-	if m != nil {
-		return m.UserId
-	}
-	return ""
-}
-
-func (m *FindUserMsgReq) GetReceiveUserId() string {
-	if m != nil {
-		return m.ReceiveUserId
-	}
-	return ""
-}
-
-func (m *FindUserMsgReq) GetAppid() string {
-	if m != nil {
-		return m.Appid
-	}
-	return ""
-}
-
-func (m *FindUserMsgReq) GetOffSet() int64 {
-	if m != nil {
-		return m.OffSet
-	}
-	return 0
-}
-
-func (m *FindUserMsgReq) GetPageSize() int64 {
-	if m != nil {
-		return m.PageSize
-	}
-	return 0
-}
-
-func (m *FindUserMsgReq) GetMsgType() int64 {
-	if m != nil {
-		return m.MsgType
-	}
-	return 0
-}
-
-func (m *FindUserMsgReq) GetRead() int64 {
-	if m != nil {
-		return m.Read
-	}
-	return 0
-}
-
-type Messages struct {
-	ReceiveUserId        string   `protobuf:"bytes,1,opt,name=receiveUserId,proto3" json:"receiveUserId,omitempty"`
-	ReceiveName          string   `protobuf:"bytes,2,opt,name=receiveName,proto3" json:"receiveName,omitempty"`
-	SendUserId           string   `protobuf:"bytes,3,opt,name=sendUserId,proto3" json:"sendUserId,omitempty"`
-	SendName             string   `protobuf:"bytes,4,opt,name=sendName,proto3" json:"sendName,omitempty"`
-	Title                string   `protobuf:"bytes,5,opt,name=title,proto3" json:"title,omitempty"`
-	Content              string   `protobuf:"bytes,6,opt,name=content,proto3" json:"content,omitempty"`
-	MsgType              int64    `protobuf:"varint,7,opt,name=msgType,proto3" json:"msgType,omitempty"`
-	Link                 string   `protobuf:"bytes,8,opt,name=link,proto3" json:"link,omitempty"`
-	CiteId               int64    `protobuf:"varint,9,opt,name=citeId,proto3" json:"citeId,omitempty"`
-	IsRead               int64    `protobuf:"varint,10,opt,name=isRead,proto3" json:"isRead,omitempty"`
-	Createtime           string   `protobuf:"bytes,11,opt,name=createtime,proto3" json:"createtime,omitempty"`
-	Appid                string   `protobuf:"bytes,12,opt,name=appid,proto3" json:"appid,omitempty"`
-	Id                   string   `protobuf:"bytes,13,opt,name=id,proto3" json:"id,omitempty"`
-	MsgLogId             int64    `protobuf:"varint,14,opt,name=msgLogId,proto3" json:"msgLogId,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
-}
-
-func (m *Messages) Reset()         { *m = Messages{} }
-func (m *Messages) String() string { return proto.CompactTextString(m) }
-func (*Messages) ProtoMessage()    {}
-func (*Messages) Descriptor() ([]byte, []int) {
-	return fileDescriptor_33c57e4bae7b9afd, []int{9}
-}
-
-func (m *Messages) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_Messages.Unmarshal(m, b)
-}
-func (m *Messages) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_Messages.Marshal(b, m, deterministic)
-}
-func (m *Messages) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_Messages.Merge(m, src)
-}
-func (m *Messages) XXX_Size() int {
-	return xxx_messageInfo_Messages.Size(m)
-}
-func (m *Messages) XXX_DiscardUnknown() {
-	xxx_messageInfo_Messages.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_Messages proto.InternalMessageInfo
-
-func (m *Messages) GetReceiveUserId() string {
-	if m != nil {
-		return m.ReceiveUserId
-	}
-	return ""
-}
-
-func (m *Messages) GetReceiveName() string {
-	if m != nil {
-		return m.ReceiveName
-	}
-	return ""
-}
-
-func (m *Messages) GetSendUserId() string {
-	if m != nil {
-		return m.SendUserId
-	}
-	return ""
-}
-
-func (m *Messages) GetSendName() string {
-	if m != nil {
-		return m.SendName
-	}
-	return ""
-}
-
-func (m *Messages) GetTitle() string {
-	if m != nil {
-		return m.Title
-	}
-	return ""
-}
-
-func (m *Messages) GetContent() string {
-	if m != nil {
-		return m.Content
-	}
-	return ""
-}
-
-func (m *Messages) GetMsgType() int64 {
-	if m != nil {
-		return m.MsgType
-	}
-	return 0
-}
-
-func (m *Messages) GetLink() string {
-	if m != nil {
-		return m.Link
-	}
-	return ""
-}
-
-func (m *Messages) GetCiteId() int64 {
-	if m != nil {
-		return m.CiteId
-	}
-	return 0
-}
-
-func (m *Messages) GetIsRead() int64 {
-	if m != nil {
-		return m.IsRead
-	}
-	return 0
-}
-
-func (m *Messages) GetCreatetime() string {
-	if m != nil {
-		return m.Createtime
-	}
-	return ""
-}
-
-func (m *Messages) GetAppid() string {
-	if m != nil {
-		return m.Appid
-	}
-	return ""
-}
-
-func (m *Messages) GetId() string {
-	if m != nil {
-		return m.Id
-	}
-	return ""
-}
-
-func (m *Messages) GetMsgLogId() int64 {
-	if m != nil {
-		return m.MsgLogId
-	}
-	return 0
-}
-
-type FindUserMsgRes struct {
-	Code                 int64       `protobuf:"varint,1,opt,name=code,proto3" json:"code,omitempty"`
-	Message              string      `protobuf:"bytes,2,opt,name=message,proto3" json:"message,omitempty"`
-	Data                 []*Messages `protobuf:"bytes,3,rep,name=data,proto3" json:"data,omitempty"`
-	Count                int64       `protobuf:"varint,4,opt,name=count,proto3" json:"count,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}    `json:"-"`
-	XXX_unrecognized     []byte      `json:"-"`
-	XXX_sizecache        int32       `json:"-"`
-}
-
-func (m *FindUserMsgRes) Reset()         { *m = FindUserMsgRes{} }
-func (m *FindUserMsgRes) String() string { return proto.CompactTextString(m) }
-func (*FindUserMsgRes) ProtoMessage()    {}
-func (*FindUserMsgRes) Descriptor() ([]byte, []int) {
-	return fileDescriptor_33c57e4bae7b9afd, []int{10}
-}
-
-func (m *FindUserMsgRes) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_FindUserMsgRes.Unmarshal(m, b)
-}
-func (m *FindUserMsgRes) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_FindUserMsgRes.Marshal(b, m, deterministic)
-}
-func (m *FindUserMsgRes) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_FindUserMsgRes.Merge(m, src)
-}
-func (m *FindUserMsgRes) XXX_Size() int {
-	return xxx_messageInfo_FindUserMsgRes.Size(m)
-}
-func (m *FindUserMsgRes) XXX_DiscardUnknown() {
-	xxx_messageInfo_FindUserMsgRes.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_FindUserMsgRes proto.InternalMessageInfo
-
-func (m *FindUserMsgRes) GetCode() int64 {
-	if m != nil {
-		return m.Code
-	}
-	return 0
-}
-
-func (m *FindUserMsgRes) GetMessage() string {
-	if m != nil {
-		return m.Message
-	}
-	return ""
-}
-
-func (m *FindUserMsgRes) GetData() []*Messages {
-	if m != nil {
-		return m.Data
-	}
-	return nil
-}
-
-func (m *FindUserMsgRes) GetCount() int64 {
-	if m != nil {
-		return m.Count
-	}
-	return 0
-}
-
-type GetClassUnreadCountReq struct {
-	UserId               string   `protobuf:"bytes,1,opt,name=userId,proto3" json:"userId,omitempty"`
-	MsgType              int64    `protobuf:"varint,2,opt,name=msgType,proto3" json:"msgType,omitempty"`
-	Appid                string   `protobuf:"bytes,3,opt,name=appid,proto3" json:"appid,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
-}
-
-func (m *GetClassUnreadCountReq) Reset()         { *m = GetClassUnreadCountReq{} }
-func (m *GetClassUnreadCountReq) String() string { return proto.CompactTextString(m) }
-func (*GetClassUnreadCountReq) ProtoMessage()    {}
-func (*GetClassUnreadCountReq) Descriptor() ([]byte, []int) {
-	return fileDescriptor_33c57e4bae7b9afd, []int{11}
-}
-
-func (m *GetClassUnreadCountReq) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_GetClassUnreadCountReq.Unmarshal(m, b)
-}
-func (m *GetClassUnreadCountReq) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_GetClassUnreadCountReq.Marshal(b, m, deterministic)
-}
-func (m *GetClassUnreadCountReq) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_GetClassUnreadCountReq.Merge(m, src)
-}
-func (m *GetClassUnreadCountReq) XXX_Size() int {
-	return xxx_messageInfo_GetClassUnreadCountReq.Size(m)
-}
-func (m *GetClassUnreadCountReq) XXX_DiscardUnknown() {
-	xxx_messageInfo_GetClassUnreadCountReq.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_GetClassUnreadCountReq proto.InternalMessageInfo
-
-func (m *GetClassUnreadCountReq) GetUserId() string {
-	if m != nil {
-		return m.UserId
-	}
-	return ""
-}
-
-func (m *GetClassUnreadCountReq) GetMsgType() int64 {
-	if m != nil {
-		return m.MsgType
-	}
-	return 0
-}
-
-func (m *GetClassUnreadCountReq) GetAppid() string {
-	if m != nil {
-		return m.Appid
-	}
-	return ""
-}
-
-//查看消息内容
-type MessageDetailReq struct {
-	Id                   string   `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
-}
-
-func (m *MessageDetailReq) Reset()         { *m = MessageDetailReq{} }
-func (m *MessageDetailReq) String() string { return proto.CompactTextString(m) }
-func (*MessageDetailReq) ProtoMessage()    {}
-func (*MessageDetailReq) Descriptor() ([]byte, []int) {
-	return fileDescriptor_33c57e4bae7b9afd, []int{12}
-}
-
-func (m *MessageDetailReq) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_MessageDetailReq.Unmarshal(m, b)
-}
-func (m *MessageDetailReq) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_MessageDetailReq.Marshal(b, m, deterministic)
-}
-func (m *MessageDetailReq) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_MessageDetailReq.Merge(m, src)
-}
-func (m *MessageDetailReq) XXX_Size() int {
-	return xxx_messageInfo_MessageDetailReq.Size(m)
-}
-func (m *MessageDetailReq) XXX_DiscardUnknown() {
-	xxx_messageInfo_MessageDetailReq.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_MessageDetailReq proto.InternalMessageInfo
-
-func (m *MessageDetailReq) GetId() string {
-	if m != nil {
-		return m.Id
-	}
-	return ""
-}
-
-type MessageDetailResp struct {
-	Code                 int64     `protobuf:"varint,1,opt,name=code,proto3" json:"code,omitempty"`
-	Message              string    `protobuf:"bytes,2,opt,name=message,proto3" json:"message,omitempty"`
-	Data                 *Messages `protobuf:"bytes,3,opt,name=data,proto3" json:"data,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}  `json:"-"`
-	XXX_unrecognized     []byte    `json:"-"`
-	XXX_sizecache        int32     `json:"-"`
-}
-
-func (m *MessageDetailResp) Reset()         { *m = MessageDetailResp{} }
-func (m *MessageDetailResp) String() string { return proto.CompactTextString(m) }
-func (*MessageDetailResp) ProtoMessage()    {}
-func (*MessageDetailResp) Descriptor() ([]byte, []int) {
-	return fileDescriptor_33c57e4bae7b9afd, []int{13}
-}
-
-func (m *MessageDetailResp) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_MessageDetailResp.Unmarshal(m, b)
-}
-func (m *MessageDetailResp) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_MessageDetailResp.Marshal(b, m, deterministic)
-}
-func (m *MessageDetailResp) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_MessageDetailResp.Merge(m, src)
-}
-func (m *MessageDetailResp) XXX_Size() int {
-	return xxx_messageInfo_MessageDetailResp.Size(m)
-}
-func (m *MessageDetailResp) XXX_DiscardUnknown() {
-	xxx_messageInfo_MessageDetailResp.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_MessageDetailResp proto.InternalMessageInfo
-
-func (m *MessageDetailResp) GetCode() int64 {
-	if m != nil {
-		return m.Code
-	}
-	return 0
-}
-
-func (m *MessageDetailResp) GetMessage() string {
-	if m != nil {
-		return m.Message
-	}
-	return ""
-}
-
-func (m *MessageDetailResp) GetData() *Messages {
-	if m != nil {
-		return m.Data
-	}
-	return nil
-}
-
-type GetLastMessageReq struct {
-	UserId               string   `protobuf:"bytes,1,opt,name=userId,proto3" json:"userId,omitempty"`
-	MsgType              int64    `protobuf:"varint,2,opt,name=msgType,proto3" json:"msgType,omitempty"`
-	Appid                string   `protobuf:"bytes,3,opt,name=appid,proto3" json:"appid,omitempty"`
-	IsRead               int64    `protobuf:"varint,4,opt,name=isRead,proto3" json:"isRead,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
-}
-
-func (m *GetLastMessageReq) Reset()         { *m = GetLastMessageReq{} }
-func (m *GetLastMessageReq) String() string { return proto.CompactTextString(m) }
-func (*GetLastMessageReq) ProtoMessage()    {}
-func (*GetLastMessageReq) Descriptor() ([]byte, []int) {
-	return fileDescriptor_33c57e4bae7b9afd, []int{14}
-}
-
-func (m *GetLastMessageReq) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_GetLastMessageReq.Unmarshal(m, b)
-}
-func (m *GetLastMessageReq) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_GetLastMessageReq.Marshal(b, m, deterministic)
-}
-func (m *GetLastMessageReq) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_GetLastMessageReq.Merge(m, src)
-}
-func (m *GetLastMessageReq) XXX_Size() int {
-	return xxx_messageInfo_GetLastMessageReq.Size(m)
-}
-func (m *GetLastMessageReq) XXX_DiscardUnknown() {
-	xxx_messageInfo_GetLastMessageReq.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_GetLastMessageReq proto.InternalMessageInfo
-
-func (m *GetLastMessageReq) GetUserId() string {
-	if m != nil {
-		return m.UserId
-	}
-	return ""
-}
-
-func (m *GetLastMessageReq) GetMsgType() int64 {
-	if m != nil {
-		return m.MsgType
-	}
-	return 0
-}
-
-func (m *GetLastMessageReq) GetAppid() string {
-	if m != nil {
-		return m.Appid
-	}
-	return ""
-}
-
-func (m *GetLastMessageReq) GetIsRead() int64 {
-	if m != nil {
-		return m.IsRead
-	}
-	return 0
-}
-
-type GetLastMessageRes struct {
-	Code                 int64     `protobuf:"varint,1,opt,name=code,proto3" json:"code,omitempty"`
-	Message              string    `protobuf:"bytes,2,opt,name=message,proto3" json:"message,omitempty"`
-	Data                 *Messages `protobuf:"bytes,3,opt,name=data,proto3" json:"data,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}  `json:"-"`
-	XXX_unrecognized     []byte    `json:"-"`
-	XXX_sizecache        int32     `json:"-"`
-}
-
-func (m *GetLastMessageRes) Reset()         { *m = GetLastMessageRes{} }
-func (m *GetLastMessageRes) String() string { return proto.CompactTextString(m) }
-func (*GetLastMessageRes) ProtoMessage()    {}
-func (*GetLastMessageRes) Descriptor() ([]byte, []int) {
-	return fileDescriptor_33c57e4bae7b9afd, []int{15}
-}
-
-func (m *GetLastMessageRes) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_GetLastMessageRes.Unmarshal(m, b)
-}
-func (m *GetLastMessageRes) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_GetLastMessageRes.Marshal(b, m, deterministic)
-}
-func (m *GetLastMessageRes) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_GetLastMessageRes.Merge(m, src)
-}
-func (m *GetLastMessageRes) XXX_Size() int {
-	return xxx_messageInfo_GetLastMessageRes.Size(m)
-}
-func (m *GetLastMessageRes) XXX_DiscardUnknown() {
-	xxx_messageInfo_GetLastMessageRes.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_GetLastMessageRes proto.InternalMessageInfo
-
-func (m *GetLastMessageRes) GetCode() int64 {
-	if m != nil {
-		return m.Code
-	}
-	return 0
-}
-
-func (m *GetLastMessageRes) GetMessage() string {
-	if m != nil {
-		return m.Message
-	}
-	return ""
-}
-
-func (m *GetLastMessageRes) GetData() *Messages {
-	if m != nil {
-		return m.Data
-	}
-	return nil
-}
-
-// 获取用户分类的的未读消息分类及数量 及分类下最新的消息
-type GetUnreadClassCountReq struct {
-	UserId               string   `protobuf:"bytes,1,opt,name=userId,proto3" json:"userId,omitempty"`
-	Appid                string   `protobuf:"bytes,2,opt,name=appid,proto3" json:"appid,omitempty"`
-	NeedMsg              bool     `protobuf:"varint,3,opt,name=needMsg,proto3" json:"needMsg,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
-}
-
-func (m *GetUnreadClassCountReq) Reset()         { *m = GetUnreadClassCountReq{} }
-func (m *GetUnreadClassCountReq) String() string { return proto.CompactTextString(m) }
-func (*GetUnreadClassCountReq) ProtoMessage()    {}
-func (*GetUnreadClassCountReq) Descriptor() ([]byte, []int) {
-	return fileDescriptor_33c57e4bae7b9afd, []int{16}
-}
-
-func (m *GetUnreadClassCountReq) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_GetUnreadClassCountReq.Unmarshal(m, b)
-}
-func (m *GetUnreadClassCountReq) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_GetUnreadClassCountReq.Marshal(b, m, deterministic)
-}
-func (m *GetUnreadClassCountReq) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_GetUnreadClassCountReq.Merge(m, src)
-}
-func (m *GetUnreadClassCountReq) XXX_Size() int {
-	return xxx_messageInfo_GetUnreadClassCountReq.Size(m)
-}
-func (m *GetUnreadClassCountReq) XXX_DiscardUnknown() {
-	xxx_messageInfo_GetUnreadClassCountReq.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_GetUnreadClassCountReq proto.InternalMessageInfo
-
-func (m *GetUnreadClassCountReq) GetUserId() string {
-	if m != nil {
-		return m.UserId
-	}
-	return ""
-}
-
-func (m *GetUnreadClassCountReq) GetAppid() string {
-	if m != nil {
-		return m.Appid
-	}
-	return ""
-}
-
-func (m *GetUnreadClassCountReq) GetNeedMsg() bool {
-	if m != nil {
-		return m.NeedMsg
-	}
-	return false
-}
-
-type GetUnreadClassCountRes struct {
-	Code                 int64       `protobuf:"varint,1,opt,name=code,proto3" json:"code,omitempty"`
-	Message              string      `protobuf:"bytes,2,opt,name=message,proto3" json:"message,omitempty"`
-	Data                 []*ResCount `protobuf:"bytes,3,rep,name=data,proto3" json:"data,omitempty"`
-	Info                 []*Messages `protobuf:"bytes,4,rep,name=info,proto3" json:"info,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}    `json:"-"`
-	XXX_unrecognized     []byte      `json:"-"`
-	XXX_sizecache        int32       `json:"-"`
-}
-
-func (m *GetUnreadClassCountRes) Reset()         { *m = GetUnreadClassCountRes{} }
-func (m *GetUnreadClassCountRes) String() string { return proto.CompactTextString(m) }
-func (*GetUnreadClassCountRes) ProtoMessage()    {}
-func (*GetUnreadClassCountRes) Descriptor() ([]byte, []int) {
-	return fileDescriptor_33c57e4bae7b9afd, []int{17}
-}
-
-func (m *GetUnreadClassCountRes) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_GetUnreadClassCountRes.Unmarshal(m, b)
-}
-func (m *GetUnreadClassCountRes) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_GetUnreadClassCountRes.Marshal(b, m, deterministic)
-}
-func (m *GetUnreadClassCountRes) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_GetUnreadClassCountRes.Merge(m, src)
-}
-func (m *GetUnreadClassCountRes) XXX_Size() int {
-	return xxx_messageInfo_GetUnreadClassCountRes.Size(m)
-}
-func (m *GetUnreadClassCountRes) XXX_DiscardUnknown() {
-	xxx_messageInfo_GetUnreadClassCountRes.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_GetUnreadClassCountRes proto.InternalMessageInfo
-
-func (m *GetUnreadClassCountRes) GetCode() int64 {
-	if m != nil {
-		return m.Code
-	}
-	return 0
-}
-
-func (m *GetUnreadClassCountRes) GetMessage() string {
-	if m != nil {
-		return m.Message
-	}
-	return ""
-}
-
-func (m *GetUnreadClassCountRes) GetData() []*ResCount {
-	if m != nil {
-		return m.Data
-	}
-	return nil
-}
-
-func (m *GetUnreadClassCountRes) GetInfo() []*Messages {
-	if m != nil {
-		return m.Info
-	}
-	return nil
-}
-
-type GetMsgTypeReq struct {
-	UserId               string   `protobuf:"bytes,1,opt,name=userId,proto3" json:"userId,omitempty"`
-	Appid                string   `protobuf:"bytes,2,opt,name=appid,proto3" json:"appid,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
-}
-
-func (m *GetMsgTypeReq) Reset()         { *m = GetMsgTypeReq{} }
-func (m *GetMsgTypeReq) String() string { return proto.CompactTextString(m) }
-func (*GetMsgTypeReq) ProtoMessage()    {}
-func (*GetMsgTypeReq) Descriptor() ([]byte, []int) {
-	return fileDescriptor_33c57e4bae7b9afd, []int{18}
-}
-
-func (m *GetMsgTypeReq) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_GetMsgTypeReq.Unmarshal(m, b)
-}
-func (m *GetMsgTypeReq) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_GetMsgTypeReq.Marshal(b, m, deterministic)
-}
-func (m *GetMsgTypeReq) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_GetMsgTypeReq.Merge(m, src)
-}
-func (m *GetMsgTypeReq) XXX_Size() int {
-	return xxx_messageInfo_GetMsgTypeReq.Size(m)
-}
-func (m *GetMsgTypeReq) XXX_DiscardUnknown() {
-	xxx_messageInfo_GetMsgTypeReq.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_GetMsgTypeReq proto.InternalMessageInfo
-
-func (m *GetMsgTypeReq) GetUserId() string {
-	if m != nil {
-		return m.UserId
-	}
-	return ""
-}
-
-func (m *GetMsgTypeReq) GetAppid() string {
-	if m != nil {
-		return m.Appid
-	}
-	return ""
-}
-
-type GetMsgTypeRes struct {
-	Code                 int64    `protobuf:"varint,1,opt,name=code,proto3" json:"code,omitempty"`
-	Message              string   `protobuf:"bytes,2,opt,name=message,proto3" json:"message,omitempty"`
-	Data                 []int64  `protobuf:"varint,3,rep,packed,name=data,proto3" json:"data,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
-}
-
-func (m *GetMsgTypeRes) Reset()         { *m = GetMsgTypeRes{} }
-func (m *GetMsgTypeRes) String() string { return proto.CompactTextString(m) }
-func (*GetMsgTypeRes) ProtoMessage()    {}
-func (*GetMsgTypeRes) Descriptor() ([]byte, []int) {
-	return fileDescriptor_33c57e4bae7b9afd, []int{19}
-}
-
-func (m *GetMsgTypeRes) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_GetMsgTypeRes.Unmarshal(m, b)
-}
-func (m *GetMsgTypeRes) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_GetMsgTypeRes.Marshal(b, m, deterministic)
-}
-func (m *GetMsgTypeRes) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_GetMsgTypeRes.Merge(m, src)
-}
-func (m *GetMsgTypeRes) XXX_Size() int {
-	return xxx_messageInfo_GetMsgTypeRes.Size(m)
-}
-func (m *GetMsgTypeRes) XXX_DiscardUnknown() {
-	xxx_messageInfo_GetMsgTypeRes.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_GetMsgTypeRes proto.InternalMessageInfo
-
-func (m *GetMsgTypeRes) GetCode() int64 {
-	if m != nil {
-		return m.Code
-	}
-	return 0
-}
-
-func (m *GetMsgTypeRes) GetMessage() string {
-	if m != nil {
-		return m.Message
-	}
-	return ""
-}
-
-func (m *GetMsgTypeRes) GetData() []int64 {
-	if m != nil {
-		return m.Data
-	}
-	return nil
-}
-
-//更新分类下消息状态 已读、未读
-type UpdateMessageReadReq struct {
-	MsgType              int64    `protobuf:"varint,1,opt,name=msgType,proto3" json:"msgType,omitempty"`
-	ReceiveUserid        string   `protobuf:"bytes,2,opt,name=receiveUserid,proto3" json:"receiveUserid,omitempty"`
-	AppId                string   `protobuf:"bytes,3,opt,name=appId,proto3" json:"appId,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
-}
-
-func (m *UpdateMessageReadReq) Reset()         { *m = UpdateMessageReadReq{} }
-func (m *UpdateMessageReadReq) String() string { return proto.CompactTextString(m) }
-func (*UpdateMessageReadReq) ProtoMessage()    {}
-func (*UpdateMessageReadReq) Descriptor() ([]byte, []int) {
-	return fileDescriptor_33c57e4bae7b9afd, []int{20}
-}
-
-func (m *UpdateMessageReadReq) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_UpdateMessageReadReq.Unmarshal(m, b)
-}
-func (m *UpdateMessageReadReq) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_UpdateMessageReadReq.Marshal(b, m, deterministic)
-}
-func (m *UpdateMessageReadReq) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_UpdateMessageReadReq.Merge(m, src)
-}
-func (m *UpdateMessageReadReq) XXX_Size() int {
-	return xxx_messageInfo_UpdateMessageReadReq.Size(m)
-}
-func (m *UpdateMessageReadReq) XXX_DiscardUnknown() {
-	xxx_messageInfo_UpdateMessageReadReq.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_UpdateMessageReadReq proto.InternalMessageInfo
-
-func (m *UpdateMessageReadReq) GetMsgType() int64 {
-	if m != nil {
-		return m.MsgType
-	}
-	return 0
-}
-
-func (m *UpdateMessageReadReq) GetReceiveUserid() string {
-	if m != nil {
-		return m.ReceiveUserid
-	}
-	return ""
-}
-
-func (m *UpdateMessageReadReq) GetAppId() string {
-	if m != nil {
-		return m.AppId
-	}
-	return ""
-}
-
-type UpdateMessageReadResp struct {
-	Code                 int64    `protobuf:"varint,1,opt,name=code,proto3" json:"code,omitempty"`
-	Message              string   `protobuf:"bytes,2,opt,name=message,proto3" json:"message,omitempty"`
-	Status               int64    `protobuf:"varint,3,opt,name=status,proto3" json:"status,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
-}
-
-func (m *UpdateMessageReadResp) Reset()         { *m = UpdateMessageReadResp{} }
-func (m *UpdateMessageReadResp) String() string { return proto.CompactTextString(m) }
-func (*UpdateMessageReadResp) ProtoMessage()    {}
-func (*UpdateMessageReadResp) Descriptor() ([]byte, []int) {
-	return fileDescriptor_33c57e4bae7b9afd, []int{21}
-}
-
-func (m *UpdateMessageReadResp) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_UpdateMessageReadResp.Unmarshal(m, b)
-}
-func (m *UpdateMessageReadResp) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_UpdateMessageReadResp.Marshal(b, m, deterministic)
-}
-func (m *UpdateMessageReadResp) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_UpdateMessageReadResp.Merge(m, src)
-}
-func (m *UpdateMessageReadResp) XXX_Size() int {
-	return xxx_messageInfo_UpdateMessageReadResp.Size(m)
-}
-func (m *UpdateMessageReadResp) XXX_DiscardUnknown() {
-	xxx_messageInfo_UpdateMessageReadResp.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_UpdateMessageReadResp proto.InternalMessageInfo
-
-func (m *UpdateMessageReadResp) GetCode() int64 {
-	if m != nil {
-		return m.Code
-	}
-	return 0
-}
-
-func (m *UpdateMessageReadResp) GetMessage() string {
-	if m != nil {
-		return m.Message
-	}
-	return ""
-}
-
-func (m *UpdateMessageReadResp) GetStatus() int64 {
-	if m != nil {
-		return m.Status
-	}
-	return 0
-}
-
-type User struct {
-	UserId               string   `protobuf:"bytes,1,opt,name=userId,proto3" json:"userId,omitempty"`
-	UserName             string   `protobuf:"bytes,2,opt,name=userName,proto3" json:"userName,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
-}
-
-func (m *User) Reset()         { *m = User{} }
-func (m *User) String() string { return proto.CompactTextString(m) }
-func (*User) ProtoMessage()    {}
-func (*User) Descriptor() ([]byte, []int) {
-	return fileDescriptor_33c57e4bae7b9afd, []int{22}
-}
-
-func (m *User) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_User.Unmarshal(m, b)
-}
-func (m *User) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_User.Marshal(b, m, deterministic)
-}
-func (m *User) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_User.Merge(m, src)
-}
-func (m *User) XXX_Size() int {
-	return xxx_messageInfo_User.Size(m)
-}
-func (m *User) XXX_DiscardUnknown() {
-	xxx_messageInfo_User.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_User proto.InternalMessageInfo
-
-func (m *User) GetUserId() string {
-	if m != nil {
-		return m.UserId
-	}
-	return ""
-}
-
-func (m *User) GetUserName() string {
-	if m != nil {
-		return m.UserName
-	}
-	return ""
-}
-
-type MultipleSaveMsgReq struct {
-	UserIds              string   `protobuf:"bytes,1,opt,name=userIds,proto3" json:"userIds,omitempty"`
-	UserNames            string   `protobuf:"bytes,2,opt,name=userNames,proto3" json:"userNames,omitempty"`
-	SendUserId           string   `protobuf:"bytes,3,opt,name=sendUserId,proto3" json:"sendUserId,omitempty"`
-	SendName             string   `protobuf:"bytes,4,opt,name=sendName,proto3" json:"sendName,omitempty"`
-	Title                string   `protobuf:"bytes,5,opt,name=title,proto3" json:"title,omitempty"`
-	Content              string   `protobuf:"bytes,6,opt,name=content,proto3" json:"content,omitempty"`
-	MsgType              int64    `protobuf:"varint,7,opt,name=msgType,proto3" json:"msgType,omitempty"`
-	Link                 string   `protobuf:"bytes,8,opt,name=link,proto3" json:"link,omitempty"`
-	CiteId               int64    `protobuf:"varint,9,opt,name=citeId,proto3" json:"citeId,omitempty"`
-	Appid                string   `protobuf:"bytes,10,opt,name=appid,proto3" json:"appid,omitempty"`
-	MsgLogId             int64    `protobuf:"varint,11,opt,name=msgLogId,proto3" json:"msgLogId,omitempty"`
-	ShowBuoy             int64    `protobuf:"varint,12,opt,name=showBuoy,proto3" json:"showBuoy,omitempty"`
-	ShowContent          string   `protobuf:"bytes,13,opt,name=showContent,proto3" json:"showContent,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
-}
-
-func (m *MultipleSaveMsgReq) Reset()         { *m = MultipleSaveMsgReq{} }
-func (m *MultipleSaveMsgReq) String() string { return proto.CompactTextString(m) }
-func (*MultipleSaveMsgReq) ProtoMessage()    {}
-func (*MultipleSaveMsgReq) Descriptor() ([]byte, []int) {
-	return fileDescriptor_33c57e4bae7b9afd, []int{23}
-}
-
-func (m *MultipleSaveMsgReq) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_MultipleSaveMsgReq.Unmarshal(m, b)
-}
-func (m *MultipleSaveMsgReq) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_MultipleSaveMsgReq.Marshal(b, m, deterministic)
-}
-func (m *MultipleSaveMsgReq) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_MultipleSaveMsgReq.Merge(m, src)
-}
-func (m *MultipleSaveMsgReq) XXX_Size() int {
-	return xxx_messageInfo_MultipleSaveMsgReq.Size(m)
-}
-func (m *MultipleSaveMsgReq) XXX_DiscardUnknown() {
-	xxx_messageInfo_MultipleSaveMsgReq.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_MultipleSaveMsgReq proto.InternalMessageInfo
-
-func (m *MultipleSaveMsgReq) GetUserIds() string {
-	if m != nil {
-		return m.UserIds
-	}
-	return ""
-}
-
-func (m *MultipleSaveMsgReq) GetUserNames() string {
-	if m != nil {
-		return m.UserNames
-	}
-	return ""
-}
-
-func (m *MultipleSaveMsgReq) GetSendUserId() string {
-	if m != nil {
-		return m.SendUserId
-	}
-	return ""
-}
-
-func (m *MultipleSaveMsgReq) GetSendName() string {
-	if m != nil {
-		return m.SendName
-	}
-	return ""
-}
-
-func (m *MultipleSaveMsgReq) GetTitle() string {
-	if m != nil {
-		return m.Title
-	}
-	return ""
-}
-
-func (m *MultipleSaveMsgReq) GetContent() string {
-	if m != nil {
-		return m.Content
-	}
-	return ""
-}
-
-func (m *MultipleSaveMsgReq) GetMsgType() int64 {
-	if m != nil {
-		return m.MsgType
-	}
-	return 0
-}
-
-func (m *MultipleSaveMsgReq) GetLink() string {
-	if m != nil {
-		return m.Link
-	}
-	return ""
-}
-
-func (m *MultipleSaveMsgReq) GetCiteId() int64 {
-	if m != nil {
-		return m.CiteId
-	}
-	return 0
-}
-
-func (m *MultipleSaveMsgReq) GetAppid() string {
-	if m != nil {
-		return m.Appid
-	}
-	return ""
-}
-
-func (m *MultipleSaveMsgReq) GetMsgLogId() int64 {
-	if m != nil {
-		return m.MsgLogId
-	}
-	return 0
-}
-
-func (m *MultipleSaveMsgReq) GetShowBuoy() int64 {
-	if m != nil {
-		return m.ShowBuoy
-	}
-	return 0
-}
-
-func (m *MultipleSaveMsgReq) GetShowContent() string {
-	if m != nil {
-		return m.ShowContent
-	}
-	return ""
-}
-
-type MultipleSaveMsgResp struct {
-	Code                 int64    `protobuf:"varint,1,opt,name=code,proto3" json:"code,omitempty"`
-	Message              string   `protobuf:"bytes,2,opt,name=message,proto3" json:"message,omitempty"`
-	ErrCount             int64    `protobuf:"varint,3,opt,name=errCount,proto3" json:"errCount,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
-}
-
-func (m *MultipleSaveMsgResp) Reset()         { *m = MultipleSaveMsgResp{} }
-func (m *MultipleSaveMsgResp) String() string { return proto.CompactTextString(m) }
-func (*MultipleSaveMsgResp) ProtoMessage()    {}
-func (*MultipleSaveMsgResp) Descriptor() ([]byte, []int) {
-	return fileDescriptor_33c57e4bae7b9afd, []int{24}
-}
-
-func (m *MultipleSaveMsgResp) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_MultipleSaveMsgResp.Unmarshal(m, b)
-}
-func (m *MultipleSaveMsgResp) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_MultipleSaveMsgResp.Marshal(b, m, deterministic)
-}
-func (m *MultipleSaveMsgResp) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_MultipleSaveMsgResp.Merge(m, src)
-}
-func (m *MultipleSaveMsgResp) XXX_Size() int {
-	return xxx_messageInfo_MultipleSaveMsgResp.Size(m)
-}
-func (m *MultipleSaveMsgResp) XXX_DiscardUnknown() {
-	xxx_messageInfo_MultipleSaveMsgResp.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_MultipleSaveMsgResp proto.InternalMessageInfo
-
-func (m *MultipleSaveMsgResp) GetCode() int64 {
-	if m != nil {
-		return m.Code
-	}
-	return 0
-}
-
-func (m *MultipleSaveMsgResp) GetMessage() string {
-	if m != nil {
-		return m.Message
-	}
-	return ""
-}
-
-func (m *MultipleSaveMsgResp) GetErrCount() int64 {
-	if m != nil {
-		return m.ErrCount
-	}
-	return 0
-}
-
-type FindUserBuoyMsgReq struct {
-	UserId               string   `protobuf:"bytes,1,opt,name=userId,proto3" json:"userId,omitempty"`
-	Appid                string   `protobuf:"bytes,2,opt,name=appid,proto3" json:"appid,omitempty"`
-	PageSize             int64    `protobuf:"varint,3,opt,name=pageSize,proto3" json:"pageSize,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
-}
-
-func (m *FindUserBuoyMsgReq) Reset()         { *m = FindUserBuoyMsgReq{} }
-func (m *FindUserBuoyMsgReq) String() string { return proto.CompactTextString(m) }
-func (*FindUserBuoyMsgReq) ProtoMessage()    {}
-func (*FindUserBuoyMsgReq) Descriptor() ([]byte, []int) {
-	return fileDescriptor_33c57e4bae7b9afd, []int{25}
-}
-
-func (m *FindUserBuoyMsgReq) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_FindUserBuoyMsgReq.Unmarshal(m, b)
-}
-func (m *FindUserBuoyMsgReq) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_FindUserBuoyMsgReq.Marshal(b, m, deterministic)
-}
-func (m *FindUserBuoyMsgReq) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_FindUserBuoyMsgReq.Merge(m, src)
-}
-func (m *FindUserBuoyMsgReq) XXX_Size() int {
-	return xxx_messageInfo_FindUserBuoyMsgReq.Size(m)
-}
-func (m *FindUserBuoyMsgReq) XXX_DiscardUnknown() {
-	xxx_messageInfo_FindUserBuoyMsgReq.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_FindUserBuoyMsgReq proto.InternalMessageInfo
-
-func (m *FindUserBuoyMsgReq) GetUserId() string {
-	if m != nil {
-		return m.UserId
-	}
-	return ""
-}
-
-func (m *FindUserBuoyMsgReq) GetAppid() string {
-	if m != nil {
-		return m.Appid
-	}
-	return ""
-}
-
-func (m *FindUserBuoyMsgReq) GetPageSize() int64 {
-	if m != nil {
-		return m.PageSize
-	}
-	return 0
-}
-
-type FindUserBuoyMsgRes struct {
-	Code                 int64           `protobuf:"varint,1,opt,name=code,proto3" json:"code,omitempty"`
-	Message              string          `protobuf:"bytes,2,opt,name=message,proto3" json:"message,omitempty"`
-	Data                 []*BuoyMessages `protobuf:"bytes,3,rep,name=data,proto3" json:"data,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}        `json:"-"`
-	XXX_unrecognized     []byte          `json:"-"`
-	XXX_sizecache        int32           `json:"-"`
-}
-
-func (m *FindUserBuoyMsgRes) Reset()         { *m = FindUserBuoyMsgRes{} }
-func (m *FindUserBuoyMsgRes) String() string { return proto.CompactTextString(m) }
-func (*FindUserBuoyMsgRes) ProtoMessage()    {}
-func (*FindUserBuoyMsgRes) Descriptor() ([]byte, []int) {
-	return fileDescriptor_33c57e4bae7b9afd, []int{26}
-}
-
-func (m *FindUserBuoyMsgRes) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_FindUserBuoyMsgRes.Unmarshal(m, b)
-}
-func (m *FindUserBuoyMsgRes) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_FindUserBuoyMsgRes.Marshal(b, m, deterministic)
-}
-func (m *FindUserBuoyMsgRes) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_FindUserBuoyMsgRes.Merge(m, src)
-}
-func (m *FindUserBuoyMsgRes) XXX_Size() int {
-	return xxx_messageInfo_FindUserBuoyMsgRes.Size(m)
-}
-func (m *FindUserBuoyMsgRes) XXX_DiscardUnknown() {
-	xxx_messageInfo_FindUserBuoyMsgRes.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_FindUserBuoyMsgRes proto.InternalMessageInfo
-
-func (m *FindUserBuoyMsgRes) GetCode() int64 {
-	if m != nil {
-		return m.Code
-	}
-	return 0
-}
-
-func (m *FindUserBuoyMsgRes) GetMessage() string {
-	if m != nil {
-		return m.Message
-	}
-	return ""
-}
-
-func (m *FindUserBuoyMsgRes) GetData() []*BuoyMessages {
-	if m != nil {
-		return m.Data
-	}
-	return nil
-}
-
-type BuoyMessages struct {
-	Id                   string   `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
-	BuoyDetail           string   `protobuf:"bytes,2,opt,name=buoy_detail,json=buoyDetail,proto3" json:"buoy_detail,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
-}
-
-func (m *BuoyMessages) Reset()         { *m = BuoyMessages{} }
-func (m *BuoyMessages) String() string { return proto.CompactTextString(m) }
-func (*BuoyMessages) ProtoMessage()    {}
-func (*BuoyMessages) Descriptor() ([]byte, []int) {
-	return fileDescriptor_33c57e4bae7b9afd, []int{27}
-}
-
-func (m *BuoyMessages) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_BuoyMessages.Unmarshal(m, b)
-}
-func (m *BuoyMessages) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_BuoyMessages.Marshal(b, m, deterministic)
-}
-func (m *BuoyMessages) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_BuoyMessages.Merge(m, src)
-}
-func (m *BuoyMessages) XXX_Size() int {
-	return xxx_messageInfo_BuoyMessages.Size(m)
-}
-func (m *BuoyMessages) XXX_DiscardUnknown() {
-	xxx_messageInfo_BuoyMessages.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_BuoyMessages proto.InternalMessageInfo
-
-func (m *BuoyMessages) GetId() string {
-	if m != nil {
-		return m.Id
-	}
-	return ""
-}
-
-func (m *BuoyMessages) GetBuoyDetail() string {
-	if m != nil {
-		return m.BuoyDetail
-	}
-	return ""
-}
-
-func init() {
-	proto.RegisterType((*SendMsgRequest)(nil), "message.SendMsgRequest")
-	proto.RegisterType((*ChangeReadStatusRequest)(nil), "message.ChangeReadStatusRequest")
-	proto.RegisterType((*ResCount)(nil), "message.ResCount")
-	proto.RegisterType((*DeleteSingleMessageRequest)(nil), "message.DeleteSingleMessageRequest")
-	proto.RegisterType((*DeleteMultipleMessageRequest)(nil), "message.DeleteMultipleMessageRequest")
-	proto.RegisterType((*GetUnreadCountRequest)(nil), "message.GetUnreadCountRequest")
-	proto.RegisterType((*Response)(nil), "message.Response")
-	proto.RegisterType((*GetUnreadCountResponse)(nil), "message.GetUnreadCountResponse")
-	proto.RegisterType((*FindUserMsgReq)(nil), "message.FindUserMsgReq")
-	proto.RegisterType((*Messages)(nil), "message.Messages")
-	proto.RegisterType((*FindUserMsgRes)(nil), "message.FindUserMsgRes")
-	proto.RegisterType((*GetClassUnreadCountReq)(nil), "message.GetClassUnreadCountReq")
-	proto.RegisterType((*MessageDetailReq)(nil), "message.MessageDetailReq")
-	proto.RegisterType((*MessageDetailResp)(nil), "message.MessageDetailResp")
-	proto.RegisterType((*GetLastMessageReq)(nil), "message.GetLastMessageReq")
-	proto.RegisterType((*GetLastMessageRes)(nil), "message.GetLastMessageRes")
-	proto.RegisterType((*GetUnreadClassCountReq)(nil), "message.GetUnreadClassCountReq")
-	proto.RegisterType((*GetUnreadClassCountRes)(nil), "message.GetUnreadClassCountRes")
-	proto.RegisterType((*GetMsgTypeReq)(nil), "message.GetMsgTypeReq")
-	proto.RegisterType((*GetMsgTypeRes)(nil), "message.GetMsgTypeRes")
-	proto.RegisterType((*UpdateMessageReadReq)(nil), "message.UpdateMessageReadReq")
-	proto.RegisterType((*UpdateMessageReadResp)(nil), "message.UpdateMessageReadResp")
-	proto.RegisterType((*User)(nil), "message.user")
-	proto.RegisterType((*MultipleSaveMsgReq)(nil), "message.multipleSaveMsgReq")
-	proto.RegisterType((*MultipleSaveMsgResp)(nil), "message.multipleSaveMsgResp")
-	proto.RegisterType((*FindUserBuoyMsgReq)(nil), "message.FindUserBuoyMsgReq")
-	proto.RegisterType((*FindUserBuoyMsgRes)(nil), "message.FindUserBuoyMsgRes")
-	proto.RegisterType((*BuoyMessages)(nil), "message.BuoyMessages")
-}
-
-func init() { proto.RegisterFile("message.proto", fileDescriptor_33c57e4bae7b9afd) }
-
-var fileDescriptor_33c57e4bae7b9afd = []byte{
-	// 1123 bytes of a gzipped FileDescriptorProto
-	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe4, 0x58, 0xef, 0x6e, 0xe3, 0x44,
-	0x10, 0x57, 0xe2, 0x34, 0x49, 0x27, 0xd7, 0xdc, 0x65, 0xdb, 0xe6, 0x8c, 0x29, 0xbd, 0xc8, 0x50,
-	0xa9, 0x7c, 0xb9, 0x0f, 0xc7, 0x17, 0x38, 0x81, 0x4e, 0xba, 0x14, 0x4a, 0xa0, 0x41, 0x3a, 0x87,
-	0x8a, 0x2f, 0x40, 0xcf, 0x17, 0x4f, 0x53, 0x8b, 0xc4, 0x36, 0xd9, 0xcd, 0xa1, 0xc2, 0x6b, 0xf0,
-	0x00, 0x3c, 0x06, 0x4f, 0xc0, 0xe3, 0xf0, 0x08, 0x08, 0xed, 0x1f, 0xdb, 0x6b, 0x67, 0xdd, 0x2a,
-	0xd5, 0xf1, 0x85, 0xfb, 0xe6, 0x99, 0x9d, 0x9d, 0xd9, 0x99, 0x9d, 0x3f, 0xbf, 0x35, 0xec, 0x2c,
-	0x90, 0x52, 0x7f, 0x86, 0x8f, 0x93, 0x65, 0xcc, 0x62, 0xd2, 0x52, 0xa4, 0xfb, 0x47, 0x1d, 0xba,
-	0x13, 0x8c, 0x82, 0x31, 0x9d, 0x79, 0xf8, 0xf3, 0x0a, 0x29, 0x23, 0x1f, 0xc0, 0xce, 0x12, 0xa7,
-	0x18, 0xbe, 0xc6, 0x73, 0x8a, 0xcb, 0x51, 0x60, 0xd7, 0x06, 0xb5, 0xe3, 0x6d, 0xaf, 0xc8, 0x24,
-	0x03, 0xe8, 0x28, 0xc6, 0x37, 0xfe, 0x02, 0xed, 0xba, 0x90, 0xd1, 0x59, 0xe4, 0x10, 0x80, 0x62,
-	0x14, 0x28, 0x25, 0x96, 0x10, 0xd0, 0x38, 0xc4, 0x81, 0x36, 0xa7, 0xc4, 0xf6, 0x86, 0x58, 0xcd,
-	0x68, 0xb2, 0x07, 0x5b, 0x2c, 0x64, 0x73, 0xb4, 0xb7, 0xc4, 0x82, 0x24, 0x88, 0x0d, 0xad, 0x69,
-	0x1c, 0x31, 0x8c, 0x98, 0xdd, 0x14, 0xfc, 0x94, 0xe4, 0x2b, 0x0b, 0x3a, 0xfb, 0xf6, 0x3a, 0x41,
-	0xbb, 0x35, 0xa8, 0x1d, 0x5b, 0x5e, 0x4a, 0x12, 0x02, 0x8d, 0x79, 0x18, 0xfd, 0x64, 0xb7, 0xc5,
-	0x06, 0xf1, 0x4d, 0xfa, 0xd0, 0x9c, 0x86, 0x0c, 0x47, 0x81, 0xbd, 0x2d, 0x84, 0x15, 0xc5, 0xad,
-	0xfa, 0x49, 0x12, 0x06, 0x36, 0x48, 0xab, 0x82, 0x70, 0x2f, 0xe0, 0xe1, 0xf0, 0xca, 0x8f, 0x66,
-	0xe8, 0xa1, 0x1f, 0x4c, 0x98, 0xcf, 0x56, 0x34, 0x0d, 0x55, 0x17, 0xea, 0x61, 0x1a, 0x9f, 0x7a,
-	0x18, 0x70, 0x97, 0x97, 0x99, 0x90, 0x88, 0x89, 0xe5, 0x69, 0x9c, 0xdc, 0x80, 0xa5, 0x1b, 0x78,
-	0x0a, 0x6d, 0x0f, 0xe9, 0x30, 0x5e, 0x15, 0x1d, 0xa9, 0x15, 0x1d, 0xd9, 0x83, 0xad, 0x29, 0x17,
-	0x51, 0x6a, 0x25, 0xe1, 0x3e, 0x07, 0xe7, 0x04, 0xe7, 0xc8, 0x70, 0x12, 0x46, 0xb3, 0x39, 0x8e,
-	0xe5, 0xb5, 0x56, 0x9d, 0xcf, 0x6c, 0xff, 0x04, 0x0e, 0xa4, 0x8e, 0xf1, 0x6a, 0xce, 0xc2, 0xe4,
-	0x8e, 0x5a, 0x3e, 0x87, 0xfd, 0x53, 0x64, 0xe7, 0x11, 0x77, 0x57, 0xf8, 0x92, 0x6e, 0xef, 0x43,
-	0x73, 0xa5, 0x27, 0x92, 0xa2, 0x72, 0x35, 0x75, 0x5d, 0xcd, 0xc7, 0x22, 0x18, 0x49, 0x1c, 0x51,
-	0x71, 0x77, 0xd3, 0x38, 0x48, 0x23, 0x21, 0xbe, 0x45, 0x80, 0xe4, 0xf1, 0xd4, 0xbe, 0x2c, 0x95,
-	0xbf, 0x87, 0x7e, 0xf9, 0x00, 0x77, 0xd1, 0x93, 0x07, 0xda, 0xd2, 0x03, 0xfd, 0x57, 0x0d, 0xba,
-	0x5f, 0x84, 0x32, 0x79, 0x65, 0xb1, 0x54, 0x3a, 0xb6, 0x56, 0x40, 0x75, 0x53, 0x01, 0x19, 0xa3,
-	0xc8, 0x75, 0xc6, 0x97, 0x97, 0x13, 0x64, 0xa2, 0x24, 0x2c, 0x4f, 0x51, 0xbc, 0x58, 0x12, 0x7f,
-	0x86, 0x93, 0xf0, 0x57, 0x59, 0x13, 0x96, 0x97, 0xd1, 0x7a, 0xce, 0x34, 0xd7, 0x92, 0x9f, 0x47,
-	0x43, 0xd5, 0x84, 0xf8, 0x76, 0xff, 0xa9, 0x43, 0x5b, 0x5d, 0x30, 0x7d, 0x8b, 0x6b, 0xbd, 0x0f,
-	0xcd, 0x90, 0xf2, 0x8a, 0x16, 0xc5, 0x6e, 0x79, 0x8a, 0xe2, 0x9e, 0x4c, 0x97, 0xe8, 0x33, 0x64,
-	0xe1, 0x02, 0xed, 0x8e, 0xf4, 0x24, 0xe7, 0xe4, 0xd7, 0x76, 0x4f, 0xbf, 0x36, 0x59, 0x22, 0x3b,
-	0x59, 0x89, 0x38, 0xd0, 0x5e, 0xd0, 0xd9, 0x59, 0x3c, 0x1b, 0x05, 0x76, 0x57, 0x5e, 0x57, 0x4a,
-	0xbb, 0xbf, 0x95, 0x12, 0x89, 0x6e, 0x98, 0x9f, 0x47, 0xd0, 0x08, 0x7c, 0xe6, 0xdb, 0xd6, 0xc0,
-	0x3a, 0xee, 0x3c, 0xe9, 0x3d, 0x4e, 0x3b, 0x7b, 0x7a, 0xa9, 0x9e, 0x58, 0xce, 0xd3, 0xb8, 0xa1,
-	0xa7, 0xf1, 0x4b, 0x51, 0x24, 0xc3, 0xb9, 0x4f, 0x69, 0xb1, 0x54, 0x2b, 0xb3, 0x59, 0x0b, 0x77,
-	0x7d, 0xad, 0x23, 0x19, 0xfa, 0x80, 0x0b, 0x0f, 0xd4, 0x49, 0x4e, 0x90, 0xf9, 0xe1, 0x9c, 0xeb,
-	0x2e, 0x75, 0x10, 0xf7, 0x0a, 0x7a, 0x25, 0x19, 0x9a, 0xdc, 0x39, 0x0a, 0xb5, 0x1b, 0xa2, 0xe0,
-	0x52, 0xe8, 0x9d, 0x22, 0x3b, 0xf3, 0x29, 0xcb, 0x9b, 0xda, 0x9b, 0x72, 0x55, 0xcb, 0xa1, 0x86,
-	0x9e, 0x43, 0xdc, 0xbd, 0xb2, 0x51, 0xfa, 0xdf, 0xb8, 0xf7, 0x52, 0xef, 0x79, 0xfc, 0x52, 0x6f,
-	0xbd, 0x4e, 0x63, 0xd7, 0xe5, 0x07, 0x89, 0x10, 0x39, 0x0a, 0x10, 0x16, 0xdb, 0x5e, 0x4a, 0xba,
-	0xbf, 0xd7, 0x2a, 0x4c, 0xbc, 0xa9, 0xb4, 0x4d, 0x47, 0x9f, 0x4a, 0xdb, 0x23, 0x68, 0x84, 0xd1,
-	0x65, 0x6c, 0x37, 0x2a, 0xb3, 0x9b, 0x2f, 0xbb, 0x9f, 0xc1, 0xce, 0x29, 0xb2, 0xb1, 0xbc, 0x9e,
-	0x8d, 0xfd, 0x75, 0x5f, 0x14, 0xb7, 0x6f, 0xea, 0x0b, 0xd1, 0x7c, 0xb1, 0xd4, 0x55, 0xcc, 0x61,
-	0xef, 0x3c, 0x09, 0x7c, 0x96, 0x4f, 0x4f, 0x3f, 0xe0, 0x07, 0xab, 0x9e, 0xe8, 0xc5, 0xe6, 0x1b,
-	0x9a, 0xe6, 0x44, 0x36, 0x6d, 0x47, 0x7a, 0xea, 0x8d, 0x02, 0xf7, 0x07, 0xd8, 0x37, 0x58, 0xdb,
-	0xb8, 0x8a, 0xfa, 0xd0, 0xa4, 0x12, 0xac, 0xc8, 0x61, 0xa7, 0x28, 0xf7, 0x29, 0x34, 0x78, 0xfc,
-	0x2a, 0xa3, 0xea, 0x40, 0x9b, 0x7f, 0x69, 0xe3, 0x20, 0xa3, 0xdd, 0xbf, 0xeb, 0x40, 0x16, 0x0a,
-	0x49, 0x4c, 0xfc, 0xd7, 0xa8, 0xa6, 0xa5, 0x0d, 0x2d, 0xb9, 0x99, 0x2a, 0x5d, 0x29, 0x49, 0x0e,
-	0x60, 0x3b, 0xdd, 0x4c, 0x95, 0xb6, 0x9c, 0xf1, 0x7f, 0x81, 0x91, 0x85, 0x91, 0xd0, 0x29, 0x8e,
-	0x04, 0xe1, 0xc3, 0x55, 0xfc, 0xcb, 0xf3, 0x55, 0x7c, 0x2d, 0xe6, 0x8a, 0xe5, 0x65, 0x34, 0x1f,
-	0xbe, 0xfc, 0x7b, 0xa8, 0x4e, 0x2c, 0x67, 0x8c, 0xce, 0x72, 0x2f, 0x60, 0x77, 0x2d, 0xde, 0x1b,
-	0x67, 0x82, 0x03, 0x6d, 0x5c, 0x2e, 0x87, 0x1a, 0xf0, 0xc9, 0x68, 0xf7, 0x47, 0x20, 0xe9, 0xc4,
-	0xe2, 0x47, 0xba, 0x05, 0xfe, 0x98, 0x3b, 0x8c, 0x0e, 0x60, 0xac, 0x22, 0x80, 0x71, 0x17, 0x06,
-	0xfd, 0x9b, 0x96, 0xe4, 0x87, 0x85, 0xf6, 0xb2, 0x9f, 0xf5, 0x0d, 0xa1, 0xb0, 0xd8, 0x34, 0x9f,
-	0xc1, 0x3d, 0x9d, 0xbb, 0x86, 0x6f, 0x1f, 0x41, 0xe7, 0xd5, 0x2a, 0xbe, 0xbe, 0x08, 0xc4, 0x6c,
-	0x52, 0x86, 0x80, 0xb3, 0xe4, 0xb4, 0x7a, 0xf2, 0x67, 0x1b, 0x5a, 0x6a, 0x37, 0x39, 0x83, 0xfb,
-	0xa5, 0xe0, 0x93, 0x77, 0x33, 0xe3, 0xeb, 0x65, 0xe0, 0x1c, 0x54, 0x2f, 0xd2, 0x84, 0x9c, 0xc2,
-	0x83, 0xf2, 0x5b, 0x83, 0x0c, 0xb2, 0x1d, 0x15, 0xcf, 0x10, 0xa7, 0xd0, 0x4c, 0x25, 0xe4, 0xfd,
-	0x04, 0x3a, 0x13, 0xcc, 0x40, 0x06, 0x79, 0x98, 0x49, 0x14, 0x1f, 0x7b, 0xa6, 0xad, 0x63, 0xd8,
-	0x35, 0x3c, 0x29, 0xc8, 0xfb, 0x99, 0x64, 0xf5, 0x83, 0xc3, 0xa4, 0xee, 0x05, 0xec, 0x1b, 0x5f,
-	0x17, 0xe4, 0xa8, 0xa4, 0xd0, 0xfc, 0xfa, 0x30, 0xab, 0xec, 0x16, 0x91, 0x3e, 0x39, 0xcc, 0x84,
-	0x8c, 0x6f, 0x10, 0xe7, 0x51, 0xe5, 0xba, 0x52, 0xf9, 0x0c, 0x3a, 0x1a, 0x28, 0xd3, 0xe2, 0x55,
-	0xc4, 0xfc, 0x4e, 0xc5, 0x02, 0x25, 0xdf, 0xc1, 0xae, 0x01, 0x58, 0x91, 0x82, 0x61, 0x03, 0xec,
-	0xba, 0xfd, 0x64, 0x5f, 0x0a, 0x67, 0x35, 0x30, 0x41, 0x1c, 0x7d, 0x4b, 0x11, 0xda, 0x38, 0xd5,
-	0x6b, 0x94, 0x7c, 0x05, 0x3d, 0x7e, 0xe8, 0x02, 0xf2, 0x22, 0xef, 0x94, 0x27, 0x6c, 0x86, 0xda,
-	0x34, 0x5d, 0xeb, 0x60, 0x4d, 0xba, 0x5b, 0x46, 0x05, 0xc4, 0xe4, 0x8d, 0x0e, 0x4b, 0x9c, 0x5b,
-	0x04, 0x28, 0xf9, 0x14, 0x20, 0x9f, 0xcc, 0xa4, 0xaf, 0x8b, 0xe7, 0xd3, 0xde, 0x31, 0xf3, 0x29,
-	0xf1, 0xa0, 0xb7, 0x36, 0x16, 0xc9, 0x7b, 0x99, 0xb0, 0x69, 0x40, 0x3b, 0x87, 0x37, 0x2d, 0xd3,
-	0x84, 0x7c, 0x0d, 0xf7, 0x4b, 0xdd, 0x49, 0xab, 0xf0, 0xf5, 0xbe, 0xe8, 0xdc, 0xb0, 0x48, 0x5f,
-	0x35, 0xc5, 0xff, 0x97, 0x8f, 0xfe, 0x0d, 0x00, 0x00, 0xff, 0xff, 0xbf, 0x98, 0xf5, 0x70, 0x90,
-	0x11, 0x00, 0x00,
-}
-
-// Reference imports to suppress errors if they are not otherwise used.
-var _ context.Context
-var _ grpc.ClientConn
-
-// This is a compile-time assertion to ensure that this generated file
-// is compatible with the grpc package it is being compiled against.
-const _ = grpc.SupportPackageIsVersion4
-
-// MessageClient is the client API for Message service.
-//
-// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream.
-type MessageClient interface {
-	//批量保存消息
-	MultipleSaveMsg(ctx context.Context, in *MultipleSaveMsgReq, opts ...grpc.CallOption) (*MultipleSaveMsgResp, error)
-	// 修改消息阅读状态
-	ChangeReadStatus(ctx context.Context, in *ChangeReadStatusRequest, opts ...grpc.CallOption) (*Response, error)
-	//指定用户发消息
-	SendUserMsg(ctx context.Context, in *SendMsgRequest, opts ...grpc.CallOption) (*Response, error)
-	// 删除单一消息
-	DeleteSingleMessage(ctx context.Context, in *DeleteSingleMessageRequest, opts ...grpc.CallOption) (*Response, error)
-	// 删除多条消息
-	DeleteMultipleMessage(ctx context.Context, in *DeleteMultipleMessageRequest, opts ...grpc.CallOption) (*Response, error)
-	//  查询指定用户未读消息合计
-	GetUnreadCount(ctx context.Context, in *GetUnreadCountRequest, opts ...grpc.CallOption) (*GetUnreadCountResponse, error)
-	//  查询指定用户的历史消息记录
-	FindUserMsg(ctx context.Context, in *FindUserMsgReq, opts ...grpc.CallOption) (*FindUserMsgRes, error)
-	//  查询指定用户指定分类的未读消息合计
-	GetClassUnreadCount(ctx context.Context, in *GetClassUnreadCountReq, opts ...grpc.CallOption) (*GetUnreadCountResponse, error)
-	//  获取指定用户指定分类的最新一条消息
-	GetLastMessage(ctx context.Context, in *GetLastMessageReq, opts ...grpc.CallOption) (*GetLastMessageRes, error)
-	//查看详细详情
-	FindMessageDetail(ctx context.Context, in *MessageDetailReq, opts ...grpc.CallOption) (*MessageDetailResp, error)
-	//  获取指定用户的分类及未读消息数量
-	GetUnreadClassCount(ctx context.Context, in *GetUnreadClassCountReq, opts ...grpc.CallOption) (*GetUnreadClassCountRes, error)
-	//  获取指定用户收到消息的分类
-	GetMsgType(ctx context.Context, in *GetMsgTypeReq, opts ...grpc.CallOption) (*GetMsgTypeRes, error)
-	//修改用户指定分类下的消息已读未读
-	UpdateMessageRead(ctx context.Context, in *UpdateMessageReadReq, opts ...grpc.CallOption) (*UpdateMessageReadResp, error)
-	//  查询指定用户的浮标消息
-	FindUserBuoyMsg(ctx context.Context, in *FindUserBuoyMsgReq, opts ...grpc.CallOption) (*FindUserBuoyMsgRes, error)
-}
-
-type messageClient struct {
-	cc *grpc.ClientConn
-}
-
-func NewMessageClient(cc *grpc.ClientConn) MessageClient {
-	return &messageClient{cc}
-}
-
-func (c *messageClient) MultipleSaveMsg(ctx context.Context, in *MultipleSaveMsgReq, opts ...grpc.CallOption) (*MultipleSaveMsgResp, error) {
-	out := new(MultipleSaveMsgResp)
-	err := c.cc.Invoke(ctx, "/message.Message/multipleSaveMsg", in, out, opts...)
-	if err != nil {
-		return nil, err
-	}
-	return out, nil
-}
-
-func (c *messageClient) ChangeReadStatus(ctx context.Context, in *ChangeReadStatusRequest, opts ...grpc.CallOption) (*Response, error) {
-	out := new(Response)
-	err := c.cc.Invoke(ctx, "/message.Message/ChangeReadStatus", in, out, opts...)
-	if err != nil {
-		return nil, err
-	}
-	return out, nil
-}
-
-func (c *messageClient) SendUserMsg(ctx context.Context, in *SendMsgRequest, opts ...grpc.CallOption) (*Response, error) {
-	out := new(Response)
-	err := c.cc.Invoke(ctx, "/message.Message/SendUserMsg", in, out, opts...)
-	if err != nil {
-		return nil, err
-	}
-	return out, nil
-}
-
-func (c *messageClient) DeleteSingleMessage(ctx context.Context, in *DeleteSingleMessageRequest, opts ...grpc.CallOption) (*Response, error) {
-	out := new(Response)
-	err := c.cc.Invoke(ctx, "/message.Message/DeleteSingleMessage", in, out, opts...)
-	if err != nil {
-		return nil, err
-	}
-	return out, nil
-}
-
-func (c *messageClient) DeleteMultipleMessage(ctx context.Context, in *DeleteMultipleMessageRequest, opts ...grpc.CallOption) (*Response, error) {
-	out := new(Response)
-	err := c.cc.Invoke(ctx, "/message.Message/DeleteMultipleMessage", in, out, opts...)
-	if err != nil {
-		return nil, err
-	}
-	return out, nil
-}
-
-func (c *messageClient) GetUnreadCount(ctx context.Context, in *GetUnreadCountRequest, opts ...grpc.CallOption) (*GetUnreadCountResponse, error) {
-	out := new(GetUnreadCountResponse)
-	err := c.cc.Invoke(ctx, "/message.Message/GetUnreadCount", in, out, opts...)
-	if err != nil {
-		return nil, err
-	}
-	return out, nil
-}
-
-func (c *messageClient) FindUserMsg(ctx context.Context, in *FindUserMsgReq, opts ...grpc.CallOption) (*FindUserMsgRes, error) {
-	out := new(FindUserMsgRes)
-	err := c.cc.Invoke(ctx, "/message.Message/FindUserMsg", in, out, opts...)
-	if err != nil {
-		return nil, err
-	}
-	return out, nil
-}
-
-func (c *messageClient) GetClassUnreadCount(ctx context.Context, in *GetClassUnreadCountReq, opts ...grpc.CallOption) (*GetUnreadCountResponse, error) {
-	out := new(GetUnreadCountResponse)
-	err := c.cc.Invoke(ctx, "/message.Message/GetClassUnreadCount", in, out, opts...)
-	if err != nil {
-		return nil, err
-	}
-	return out, nil
-}
-
-func (c *messageClient) GetLastMessage(ctx context.Context, in *GetLastMessageReq, opts ...grpc.CallOption) (*GetLastMessageRes, error) {
-	out := new(GetLastMessageRes)
-	err := c.cc.Invoke(ctx, "/message.Message/GetLastMessage", in, out, opts...)
-	if err != nil {
-		return nil, err
-	}
-	return out, nil
-}
-
-func (c *messageClient) FindMessageDetail(ctx context.Context, in *MessageDetailReq, opts ...grpc.CallOption) (*MessageDetailResp, error) {
-	out := new(MessageDetailResp)
-	err := c.cc.Invoke(ctx, "/message.Message/FindMessageDetail", in, out, opts...)
-	if err != nil {
-		return nil, err
-	}
-	return out, nil
-}
-
-func (c *messageClient) GetUnreadClassCount(ctx context.Context, in *GetUnreadClassCountReq, opts ...grpc.CallOption) (*GetUnreadClassCountRes, error) {
-	out := new(GetUnreadClassCountRes)
-	err := c.cc.Invoke(ctx, "/message.Message/GetUnreadClassCount", in, out, opts...)
-	if err != nil {
-		return nil, err
-	}
-	return out, nil
-}
-
-func (c *messageClient) GetMsgType(ctx context.Context, in *GetMsgTypeReq, opts ...grpc.CallOption) (*GetMsgTypeRes, error) {
-	out := new(GetMsgTypeRes)
-	err := c.cc.Invoke(ctx, "/message.Message/GetMsgType", in, out, opts...)
-	if err != nil {
-		return nil, err
-	}
-	return out, nil
-}
-
-func (c *messageClient) UpdateMessageRead(ctx context.Context, in *UpdateMessageReadReq, opts ...grpc.CallOption) (*UpdateMessageReadResp, error) {
-	out := new(UpdateMessageReadResp)
-	err := c.cc.Invoke(ctx, "/message.Message/UpdateMessageRead", in, out, opts...)
-	if err != nil {
-		return nil, err
-	}
-	return out, nil
-}
-
-func (c *messageClient) FindUserBuoyMsg(ctx context.Context, in *FindUserBuoyMsgReq, opts ...grpc.CallOption) (*FindUserBuoyMsgRes, error) {
-	out := new(FindUserBuoyMsgRes)
-	err := c.cc.Invoke(ctx, "/message.Message/FindUserBuoyMsg", in, out, opts...)
-	if err != nil {
-		return nil, err
-	}
-	return out, nil
-}
-
-// MessageServer is the server API for Message service.
-type MessageServer interface {
-	//批量保存消息
-	MultipleSaveMsg(context.Context, *MultipleSaveMsgReq) (*MultipleSaveMsgResp, error)
-	// 修改消息阅读状态
-	ChangeReadStatus(context.Context, *ChangeReadStatusRequest) (*Response, error)
-	//指定用户发消息
-	SendUserMsg(context.Context, *SendMsgRequest) (*Response, error)
-	// 删除单一消息
-	DeleteSingleMessage(context.Context, *DeleteSingleMessageRequest) (*Response, error)
-	// 删除多条消息
-	DeleteMultipleMessage(context.Context, *DeleteMultipleMessageRequest) (*Response, error)
-	//  查询指定用户未读消息合计
-	GetUnreadCount(context.Context, *GetUnreadCountRequest) (*GetUnreadCountResponse, error)
-	//  查询指定用户的历史消息记录
-	FindUserMsg(context.Context, *FindUserMsgReq) (*FindUserMsgRes, error)
-	//  查询指定用户指定分类的未读消息合计
-	GetClassUnreadCount(context.Context, *GetClassUnreadCountReq) (*GetUnreadCountResponse, error)
-	//  获取指定用户指定分类的最新一条消息
-	GetLastMessage(context.Context, *GetLastMessageReq) (*GetLastMessageRes, error)
-	//查看详细详情
-	FindMessageDetail(context.Context, *MessageDetailReq) (*MessageDetailResp, error)
-	//  获取指定用户的分类及未读消息数量
-	GetUnreadClassCount(context.Context, *GetUnreadClassCountReq) (*GetUnreadClassCountRes, error)
-	//  获取指定用户收到消息的分类
-	GetMsgType(context.Context, *GetMsgTypeReq) (*GetMsgTypeRes, error)
-	//修改用户指定分类下的消息已读未读
-	UpdateMessageRead(context.Context, *UpdateMessageReadReq) (*UpdateMessageReadResp, error)
-	//  查询指定用户的浮标消息
-	FindUserBuoyMsg(context.Context, *FindUserBuoyMsgReq) (*FindUserBuoyMsgRes, error)
-}
-
-// UnimplementedMessageServer can be embedded to have forward compatible implementations.
-type UnimplementedMessageServer struct {
-}
-
-func (*UnimplementedMessageServer) MultipleSaveMsg(ctx context.Context, req *MultipleSaveMsgReq) (*MultipleSaveMsgResp, error) {
-	return nil, status.Errorf(codes.Unimplemented, "method MultipleSaveMsg not implemented")
-}
-func (*UnimplementedMessageServer) ChangeReadStatus(ctx context.Context, req *ChangeReadStatusRequest) (*Response, error) {
-	return nil, status.Errorf(codes.Unimplemented, "method ChangeReadStatus not implemented")
-}
-func (*UnimplementedMessageServer) SendUserMsg(ctx context.Context, req *SendMsgRequest) (*Response, error) {
-	return nil, status.Errorf(codes.Unimplemented, "method SendUserMsg not implemented")
-}
-func (*UnimplementedMessageServer) DeleteSingleMessage(ctx context.Context, req *DeleteSingleMessageRequest) (*Response, error) {
-	return nil, status.Errorf(codes.Unimplemented, "method DeleteSingleMessage not implemented")
-}
-func (*UnimplementedMessageServer) DeleteMultipleMessage(ctx context.Context, req *DeleteMultipleMessageRequest) (*Response, error) {
-	return nil, status.Errorf(codes.Unimplemented, "method DeleteMultipleMessage not implemented")
-}
-func (*UnimplementedMessageServer) GetUnreadCount(ctx context.Context, req *GetUnreadCountRequest) (*GetUnreadCountResponse, error) {
-	return nil, status.Errorf(codes.Unimplemented, "method GetUnreadCount not implemented")
-}
-func (*UnimplementedMessageServer) FindUserMsg(ctx context.Context, req *FindUserMsgReq) (*FindUserMsgRes, error) {
-	return nil, status.Errorf(codes.Unimplemented, "method FindUserMsg not implemented")
-}
-func (*UnimplementedMessageServer) GetClassUnreadCount(ctx context.Context, req *GetClassUnreadCountReq) (*GetUnreadCountResponse, error) {
-	return nil, status.Errorf(codes.Unimplemented, "method GetClassUnreadCount not implemented")
-}
-func (*UnimplementedMessageServer) GetLastMessage(ctx context.Context, req *GetLastMessageReq) (*GetLastMessageRes, error) {
-	return nil, status.Errorf(codes.Unimplemented, "method GetLastMessage not implemented")
-}
-func (*UnimplementedMessageServer) FindMessageDetail(ctx context.Context, req *MessageDetailReq) (*MessageDetailResp, error) {
-	return nil, status.Errorf(codes.Unimplemented, "method FindMessageDetail not implemented")
-}
-func (*UnimplementedMessageServer) GetUnreadClassCount(ctx context.Context, req *GetUnreadClassCountReq) (*GetUnreadClassCountRes, error) {
-	return nil, status.Errorf(codes.Unimplemented, "method GetUnreadClassCount not implemented")
-}
-func (*UnimplementedMessageServer) GetMsgType(ctx context.Context, req *GetMsgTypeReq) (*GetMsgTypeRes, error) {
-	return nil, status.Errorf(codes.Unimplemented, "method GetMsgType not implemented")
-}
-func (*UnimplementedMessageServer) UpdateMessageRead(ctx context.Context, req *UpdateMessageReadReq) (*UpdateMessageReadResp, error) {
-	return nil, status.Errorf(codes.Unimplemented, "method UpdateMessageRead not implemented")
-}
-func (*UnimplementedMessageServer) FindUserBuoyMsg(ctx context.Context, req *FindUserBuoyMsgReq) (*FindUserBuoyMsgRes, error) {
-	return nil, status.Errorf(codes.Unimplemented, "method FindUserBuoyMsg not implemented")
-}
-
-func RegisterMessageServer(s *grpc.Server, srv MessageServer) {
-	s.RegisterService(&_Message_serviceDesc, srv)
-}
-
-func _Message_MultipleSaveMsg_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
-	in := new(MultipleSaveMsgReq)
-	if err := dec(in); err != nil {
-		return nil, err
-	}
-	if interceptor == nil {
-		return srv.(MessageServer).MultipleSaveMsg(ctx, in)
-	}
-	info := &grpc.UnaryServerInfo{
-		Server:     srv,
-		FullMethod: "/message.Message/MultipleSaveMsg",
-	}
-	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
-		return srv.(MessageServer).MultipleSaveMsg(ctx, req.(*MultipleSaveMsgReq))
-	}
-	return interceptor(ctx, in, info, handler)
-}
-
-func _Message_ChangeReadStatus_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
-	in := new(ChangeReadStatusRequest)
-	if err := dec(in); err != nil {
-		return nil, err
-	}
-	if interceptor == nil {
-		return srv.(MessageServer).ChangeReadStatus(ctx, in)
-	}
-	info := &grpc.UnaryServerInfo{
-		Server:     srv,
-		FullMethod: "/message.Message/ChangeReadStatus",
-	}
-	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
-		return srv.(MessageServer).ChangeReadStatus(ctx, req.(*ChangeReadStatusRequest))
-	}
-	return interceptor(ctx, in, info, handler)
-}
-
-func _Message_SendUserMsg_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
-	in := new(SendMsgRequest)
-	if err := dec(in); err != nil {
-		return nil, err
-	}
-	if interceptor == nil {
-		return srv.(MessageServer).SendUserMsg(ctx, in)
-	}
-	info := &grpc.UnaryServerInfo{
-		Server:     srv,
-		FullMethod: "/message.Message/SendUserMsg",
-	}
-	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
-		return srv.(MessageServer).SendUserMsg(ctx, req.(*SendMsgRequest))
-	}
-	return interceptor(ctx, in, info, handler)
-}
-
-func _Message_DeleteSingleMessage_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
-	in := new(DeleteSingleMessageRequest)
-	if err := dec(in); err != nil {
-		return nil, err
-	}
-	if interceptor == nil {
-		return srv.(MessageServer).DeleteSingleMessage(ctx, in)
-	}
-	info := &grpc.UnaryServerInfo{
-		Server:     srv,
-		FullMethod: "/message.Message/DeleteSingleMessage",
-	}
-	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
-		return srv.(MessageServer).DeleteSingleMessage(ctx, req.(*DeleteSingleMessageRequest))
-	}
-	return interceptor(ctx, in, info, handler)
-}
-
-func _Message_DeleteMultipleMessage_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
-	in := new(DeleteMultipleMessageRequest)
-	if err := dec(in); err != nil {
-		return nil, err
-	}
-	if interceptor == nil {
-		return srv.(MessageServer).DeleteMultipleMessage(ctx, in)
-	}
-	info := &grpc.UnaryServerInfo{
-		Server:     srv,
-		FullMethod: "/message.Message/DeleteMultipleMessage",
-	}
-	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
-		return srv.(MessageServer).DeleteMultipleMessage(ctx, req.(*DeleteMultipleMessageRequest))
-	}
-	return interceptor(ctx, in, info, handler)
-}
-
-func _Message_GetUnreadCount_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
-	in := new(GetUnreadCountRequest)
-	if err := dec(in); err != nil {
-		return nil, err
-	}
-	if interceptor == nil {
-		return srv.(MessageServer).GetUnreadCount(ctx, in)
-	}
-	info := &grpc.UnaryServerInfo{
-		Server:     srv,
-		FullMethod: "/message.Message/GetUnreadCount",
-	}
-	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
-		return srv.(MessageServer).GetUnreadCount(ctx, req.(*GetUnreadCountRequest))
-	}
-	return interceptor(ctx, in, info, handler)
-}
-
-func _Message_FindUserMsg_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
-	in := new(FindUserMsgReq)
-	if err := dec(in); err != nil {
-		return nil, err
-	}
-	if interceptor == nil {
-		return srv.(MessageServer).FindUserMsg(ctx, in)
-	}
-	info := &grpc.UnaryServerInfo{
-		Server:     srv,
-		FullMethod: "/message.Message/FindUserMsg",
-	}
-	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
-		return srv.(MessageServer).FindUserMsg(ctx, req.(*FindUserMsgReq))
-	}
-	return interceptor(ctx, in, info, handler)
-}
-
-func _Message_GetClassUnreadCount_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
-	in := new(GetClassUnreadCountReq)
-	if err := dec(in); err != nil {
-		return nil, err
-	}
-	if interceptor == nil {
-		return srv.(MessageServer).GetClassUnreadCount(ctx, in)
-	}
-	info := &grpc.UnaryServerInfo{
-		Server:     srv,
-		FullMethod: "/message.Message/GetClassUnreadCount",
-	}
-	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
-		return srv.(MessageServer).GetClassUnreadCount(ctx, req.(*GetClassUnreadCountReq))
-	}
-	return interceptor(ctx, in, info, handler)
-}
-
-func _Message_GetLastMessage_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
-	in := new(GetLastMessageReq)
-	if err := dec(in); err != nil {
-		return nil, err
-	}
-	if interceptor == nil {
-		return srv.(MessageServer).GetLastMessage(ctx, in)
-	}
-	info := &grpc.UnaryServerInfo{
-		Server:     srv,
-		FullMethod: "/message.Message/GetLastMessage",
-	}
-	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
-		return srv.(MessageServer).GetLastMessage(ctx, req.(*GetLastMessageReq))
-	}
-	return interceptor(ctx, in, info, handler)
-}
-
-func _Message_FindMessageDetail_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
-	in := new(MessageDetailReq)
-	if err := dec(in); err != nil {
-		return nil, err
-	}
-	if interceptor == nil {
-		return srv.(MessageServer).FindMessageDetail(ctx, in)
-	}
-	info := &grpc.UnaryServerInfo{
-		Server:     srv,
-		FullMethod: "/message.Message/FindMessageDetail",
-	}
-	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
-		return srv.(MessageServer).FindMessageDetail(ctx, req.(*MessageDetailReq))
-	}
-	return interceptor(ctx, in, info, handler)
-}
-
-func _Message_GetUnreadClassCount_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
-	in := new(GetUnreadClassCountReq)
-	if err := dec(in); err != nil {
-		return nil, err
-	}
-	if interceptor == nil {
-		return srv.(MessageServer).GetUnreadClassCount(ctx, in)
-	}
-	info := &grpc.UnaryServerInfo{
-		Server:     srv,
-		FullMethod: "/message.Message/GetUnreadClassCount",
-	}
-	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
-		return srv.(MessageServer).GetUnreadClassCount(ctx, req.(*GetUnreadClassCountReq))
-	}
-	return interceptor(ctx, in, info, handler)
-}
-
-func _Message_GetMsgType_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
-	in := new(GetMsgTypeReq)
-	if err := dec(in); err != nil {
-		return nil, err
-	}
-	if interceptor == nil {
-		return srv.(MessageServer).GetMsgType(ctx, in)
-	}
-	info := &grpc.UnaryServerInfo{
-		Server:     srv,
-		FullMethod: "/message.Message/GetMsgType",
-	}
-	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
-		return srv.(MessageServer).GetMsgType(ctx, req.(*GetMsgTypeReq))
-	}
-	return interceptor(ctx, in, info, handler)
-}
-
-func _Message_UpdateMessageRead_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
-	in := new(UpdateMessageReadReq)
-	if err := dec(in); err != nil {
-		return nil, err
-	}
-	if interceptor == nil {
-		return srv.(MessageServer).UpdateMessageRead(ctx, in)
-	}
-	info := &grpc.UnaryServerInfo{
-		Server:     srv,
-		FullMethod: "/message.Message/UpdateMessageRead",
-	}
-	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
-		return srv.(MessageServer).UpdateMessageRead(ctx, req.(*UpdateMessageReadReq))
-	}
-	return interceptor(ctx, in, info, handler)
-}
-
-func _Message_FindUserBuoyMsg_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
-	in := new(FindUserBuoyMsgReq)
-	if err := dec(in); err != nil {
-		return nil, err
-	}
-	if interceptor == nil {
-		return srv.(MessageServer).FindUserBuoyMsg(ctx, in)
-	}
-	info := &grpc.UnaryServerInfo{
-		Server:     srv,
-		FullMethod: "/message.Message/FindUserBuoyMsg",
-	}
-	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
-		return srv.(MessageServer).FindUserBuoyMsg(ctx, req.(*FindUserBuoyMsgReq))
-	}
-	return interceptor(ctx, in, info, handler)
-}
-
-var _Message_serviceDesc = grpc.ServiceDesc{
-	ServiceName: "message.Message",
-	HandlerType: (*MessageServer)(nil),
-	Methods: []grpc.MethodDesc{
-		{
-			MethodName: "multipleSaveMsg",
-			Handler:    _Message_MultipleSaveMsg_Handler,
-		},
-		{
-			MethodName: "ChangeReadStatus",
-			Handler:    _Message_ChangeReadStatus_Handler,
-		},
-		{
-			MethodName: "SendUserMsg",
-			Handler:    _Message_SendUserMsg_Handler,
-		},
-		{
-			MethodName: "DeleteSingleMessage",
-			Handler:    _Message_DeleteSingleMessage_Handler,
-		},
-		{
-			MethodName: "DeleteMultipleMessage",
-			Handler:    _Message_DeleteMultipleMessage_Handler,
-		},
-		{
-			MethodName: "GetUnreadCount",
-			Handler:    _Message_GetUnreadCount_Handler,
-		},
-		{
-			MethodName: "FindUserMsg",
-			Handler:    _Message_FindUserMsg_Handler,
-		},
-		{
-			MethodName: "GetClassUnreadCount",
-			Handler:    _Message_GetClassUnreadCount_Handler,
-		},
-		{
-			MethodName: "GetLastMessage",
-			Handler:    _Message_GetLastMessage_Handler,
-		},
-		{
-			MethodName: "FindMessageDetail",
-			Handler:    _Message_FindMessageDetail_Handler,
-		},
-		{
-			MethodName: "GetUnreadClassCount",
-			Handler:    _Message_GetUnreadClassCount_Handler,
-		},
-		{
-			MethodName: "GetMsgType",
-			Handler:    _Message_GetMsgType_Handler,
-		},
-		{
-			MethodName: "UpdateMessageRead",
-			Handler:    _Message_UpdateMessageRead_Handler,
-		},
-		{
-			MethodName: "FindUserBuoyMsg",
-			Handler:    _Message_FindUserBuoyMsg_Handler,
-		},
-	},
-	Streams:  []grpc.StreamDesc{},
-	Metadata: "message.proto",
-}

+ 65 - 66
rpc/messageclient/message.go

@@ -1,77 +1,76 @@
 // Code generated by goctl. DO NOT EDIT!
 // Source: message.proto
 
-//go:generate mockgen -destination ./message_mock.go -package messageclient -source $GOFILE
-
 package messageclient
 
 import (
 	"context"
 
-	"app.yhyue.com/moapp/MessageCenter/rpc/message"
+	"app.yhyue.com/moapp/MessageCenter/rpc/type/message"
 
 	"github.com/zeromicro/go-zero/zrpc"
+	"google.golang.org/grpc"
 )
 
 type (
-	GetUnreadClassCountReq       = message.GetUnreadClassCountReq
-	GetMsgTypeReq                = message.GetMsgTypeReq
-	Messages                     = message.Messages
-	FindUserMsgRes               = message.FindUserMsgRes
-	DeleteSingleMessageRequest   = message.DeleteSingleMessageRequest
-	GetUnreadCountRequest        = message.GetUnreadCountRequest
-	UpdateMessageReadReq         = message.UpdateMessageReadReq
-	FindUserBuoyMsgReq           = message.FindUserBuoyMsgReq
-	MessageDetailReq             = message.MessageDetailReq
-	GetMsgTypeRes                = message.GetMsgTypeRes
-	User                         = message.User
-	SendMsgRequest               = message.SendMsgRequest
-	GetLastMessageReq            = message.GetLastMessageReq
-	UpdateMessageReadResp        = message.UpdateMessageReadResp
-	GetUnreadClassCountRes       = message.GetUnreadClassCountRes
+	BuoyMessages                 = message.BuoyMessages
 	ChangeReadStatusRequest      = message.ChangeReadStatusRequest
-	ResCount                     = message.ResCount
 	DeleteMultipleMessageRequest = message.DeleteMultipleMessageRequest
+	DeleteSingleMessageRequest   = message.DeleteSingleMessageRequest
+	FindUserBuoyMsgReq           = message.FindUserBuoyMsgReq
+	FindUserBuoyMsgRes           = message.FindUserBuoyMsgRes
 	FindUserMsgReq               = message.FindUserMsgReq
+	FindUserMsgRes               = message.FindUserMsgRes
 	GetClassUnreadCountReq       = message.GetClassUnreadCountReq
-	MultipleSaveMsgReq           = message.MultipleSaveMsgReq
-	Response                     = message.Response
+	GetLastMessageReq            = message.GetLastMessageReq
+	GetLastMessageRes            = message.GetLastMessageRes
+	GetMsgTypeReq                = message.GetMsgTypeReq
+	GetMsgTypeRes                = message.GetMsgTypeRes
+	GetUnreadClassCountReq       = message.GetUnreadClassCountReq
+	GetUnreadClassCountRes       = message.GetUnreadClassCountRes
+	GetUnreadCountRequest        = message.GetUnreadCountRequest
 	GetUnreadCountResponse       = message.GetUnreadCountResponse
+	MessageDetailReq             = message.MessageDetailReq
 	MessageDetailResp            = message.MessageDetailResp
-	GetLastMessageRes            = message.GetLastMessageRes
+	Messages                     = message.Messages
+	MultipleSaveMsgReq           = message.MultipleSaveMsgReq
 	MultipleSaveMsgResp          = message.MultipleSaveMsgResp
-	FindUserBuoyMsgRes           = message.FindUserBuoyMsgRes
-	BuoyMessages                 = message.BuoyMessages
+	ResCount                     = message.ResCount
+	Response                     = message.Response
+	SendMsgRequest               = message.SendMsgRequest
+	UpdateMessageReadReq         = message.UpdateMessageReadReq
+	UpdateMessageReadResp        = message.UpdateMessageReadResp
+	User                         = message.User
 
 	Message interface {
 		// 批量保存消息
-		MultipleSaveMsg(ctx context.Context, in *MultipleSaveMsgReq) (*MultipleSaveMsgResp, error)
+		MultipleSaveMsg(ctx context.Context, in *MultipleSaveMsgReq, opts ...grpc.CallOption) (*MultipleSaveMsgResp, error)
 		//  修改消息阅读状态
-		ChangeReadStatus(ctx context.Context, in *ChangeReadStatusRequest) (*Response, error)
+		ChangeReadStatus(ctx context.Context, in *ChangeReadStatusRequest, opts ...grpc.CallOption) (*Response, error)
 		// 指定用户发消息
-		SendUserMsg(ctx context.Context, in *SendMsgRequest) (*Response, error)
+		SendUserMsg(ctx context.Context, in *SendMsgRequest, opts ...grpc.CallOption) (*Response, error)
 		//  删除单一消息
-		DeleteSingleMessage(ctx context.Context, in *DeleteSingleMessageRequest) (*Response, error)
+		DeleteSingleMessage(ctx context.Context, in *DeleteSingleMessageRequest, opts ...grpc.CallOption) (*Response, error)
 		//  删除多条消息
-		DeleteMultipleMessage(ctx context.Context, in *DeleteMultipleMessageRequest) (*Response, error)
+		DeleteMultipleMessage(ctx context.Context, in *DeleteMultipleMessageRequest, opts ...grpc.CallOption) (*Response, error)
 		//   查询指定用户未读消息合计
-		GetUnreadCount(ctx context.Context, in *GetUnreadCountRequest) (*GetUnreadCountResponse, error)
+		GetUnreadCount(ctx context.Context, in *GetUnreadCountRequest, opts ...grpc.CallOption) (*GetUnreadCountResponse, error)
 		//   查询指定用户的历史消息记录
-		FindUserMsg(ctx context.Context, in *FindUserMsgReq) (*FindUserMsgRes, error)
+		FindUserMsg(ctx context.Context, in *FindUserMsgReq, opts ...grpc.CallOption) (*FindUserMsgRes, error)
 		//   查询指定用户指定分类的未读消息合计
-		GetClassUnreadCount(ctx context.Context, in *GetClassUnreadCountReq) (*GetUnreadCountResponse, error)
+		GetClassUnreadCount(ctx context.Context, in *GetClassUnreadCountReq, opts ...grpc.CallOption) (*GetUnreadCountResponse, error)
 		//   获取指定用户指定分类的最新一条消息
-		GetLastMessage(ctx context.Context, in *GetLastMessageReq) (*GetLastMessageRes, error)
+		GetLastMessage(ctx context.Context, in *GetLastMessageReq, opts ...grpc.CallOption) (*GetLastMessageRes, error)
 		// 查看详细详情
-		FindMessageDetail(ctx context.Context, in *MessageDetailReq) (*MessageDetailResp, error)
+		FindMessageDetail(ctx context.Context, in *MessageDetailReq, opts ...grpc.CallOption) (*MessageDetailResp, error)
 		//   获取指定用户的分类及未读消息数量
-		GetUnreadClassCount(ctx context.Context, in *GetUnreadClassCountReq) (*GetUnreadClassCountRes, error)
+		GetUnreadClassCount(ctx context.Context, in *GetUnreadClassCountReq, opts ...grpc.CallOption) (*GetUnreadClassCountRes, error)
 		//   获取指定用户收到消息的分类
-		GetMsgType(ctx context.Context, in *GetMsgTypeReq) (*GetMsgTypeRes, error)
+		GetMsgType(ctx context.Context, in *GetMsgTypeReq, opts ...grpc.CallOption) (*GetMsgTypeRes, error)
 		// 修改用户指定分类下的消息已读未读
-		UpdateMessageRead(ctx context.Context, in *UpdateMessageReadReq) (*UpdateMessageReadResp, error)
+		UpdateMessageRead(ctx context.Context, in *UpdateMessageReadReq, opts ...grpc.CallOption) (*UpdateMessageReadResp, error)
 		//   查询指定用户的浮标消息
-		FindUserBuoyMsg(ctx context.Context, in *FindUserBuoyMsgReq) (*FindUserBuoyMsgRes, error)
+		FindUserBuoyMsg(ctx context.Context, in *FindUserBuoyMsgReq, opts ...grpc.CallOption) (*FindUserBuoyMsgRes, error)
 	}
 
 	defaultMessage struct {
@@ -86,85 +85,85 @@ func NewMessage(cli zrpc.Client) Message {
 }
 
 // 批量保存消息
-func (m *defaultMessage) MultipleSaveMsg(ctx context.Context, in *MultipleSaveMsgReq) (*MultipleSaveMsgResp, error) {
+func (m *defaultMessage) MultipleSaveMsg(ctx context.Context, in *MultipleSaveMsgReq, opts ...grpc.CallOption) (*MultipleSaveMsgResp, error) {
 	client := message.NewMessageClient(m.cli.Conn())
-	return client.MultipleSaveMsg(ctx, in)
+	return client.MultipleSaveMsg(ctx, in, opts...)
 }
 
 //  修改消息阅读状态
-func (m *defaultMessage) ChangeReadStatus(ctx context.Context, in *ChangeReadStatusRequest) (*Response, error) {
+func (m *defaultMessage) ChangeReadStatus(ctx context.Context, in *ChangeReadStatusRequest, opts ...grpc.CallOption) (*Response, error) {
 	client := message.NewMessageClient(m.cli.Conn())
-	return client.ChangeReadStatus(ctx, in)
+	return client.ChangeReadStatus(ctx, in, opts...)
 }
 
 // 指定用户发消息
-func (m *defaultMessage) SendUserMsg(ctx context.Context, in *SendMsgRequest) (*Response, error) {
+func (m *defaultMessage) SendUserMsg(ctx context.Context, in *SendMsgRequest, opts ...grpc.CallOption) (*Response, error) {
 	client := message.NewMessageClient(m.cli.Conn())
-	return client.SendUserMsg(ctx, in)
+	return client.SendUserMsg(ctx, in, opts...)
 }
 
 //  删除单一消息
-func (m *defaultMessage) DeleteSingleMessage(ctx context.Context, in *DeleteSingleMessageRequest) (*Response, error) {
+func (m *defaultMessage) DeleteSingleMessage(ctx context.Context, in *DeleteSingleMessageRequest, opts ...grpc.CallOption) (*Response, error) {
 	client := message.NewMessageClient(m.cli.Conn())
-	return client.DeleteSingleMessage(ctx, in)
+	return client.DeleteSingleMessage(ctx, in, opts...)
 }
 
 //  删除多条消息
-func (m *defaultMessage) DeleteMultipleMessage(ctx context.Context, in *DeleteMultipleMessageRequest) (*Response, error) {
+func (m *defaultMessage) DeleteMultipleMessage(ctx context.Context, in *DeleteMultipleMessageRequest, opts ...grpc.CallOption) (*Response, error) {
 	client := message.NewMessageClient(m.cli.Conn())
-	return client.DeleteMultipleMessage(ctx, in)
+	return client.DeleteMultipleMessage(ctx, in, opts...)
 }
 
 //   查询指定用户未读消息合计
-func (m *defaultMessage) GetUnreadCount(ctx context.Context, in *GetUnreadCountRequest) (*GetUnreadCountResponse, error) {
+func (m *defaultMessage) GetUnreadCount(ctx context.Context, in *GetUnreadCountRequest, opts ...grpc.CallOption) (*GetUnreadCountResponse, error) {
 	client := message.NewMessageClient(m.cli.Conn())
-	return client.GetUnreadCount(ctx, in)
+	return client.GetUnreadCount(ctx, in, opts...)
 }
 
 //   查询指定用户的历史消息记录
-func (m *defaultMessage) FindUserMsg(ctx context.Context, in *FindUserMsgReq) (*FindUserMsgRes, error) {
+func (m *defaultMessage) FindUserMsg(ctx context.Context, in *FindUserMsgReq, opts ...grpc.CallOption) (*FindUserMsgRes, error) {
 	client := message.NewMessageClient(m.cli.Conn())
-	return client.FindUserMsg(ctx, in)
+	return client.FindUserMsg(ctx, in, opts...)
 }
 
 //   查询指定用户指定分类的未读消息合计
-func (m *defaultMessage) GetClassUnreadCount(ctx context.Context, in *GetClassUnreadCountReq) (*GetUnreadCountResponse, error) {
+func (m *defaultMessage) GetClassUnreadCount(ctx context.Context, in *GetClassUnreadCountReq, opts ...grpc.CallOption) (*GetUnreadCountResponse, error) {
 	client := message.NewMessageClient(m.cli.Conn())
-	return client.GetClassUnreadCount(ctx, in)
+	return client.GetClassUnreadCount(ctx, in, opts...)
 }
 
 //   获取指定用户指定分类的最新一条消息
-func (m *defaultMessage) GetLastMessage(ctx context.Context, in *GetLastMessageReq) (*GetLastMessageRes, error) {
+func (m *defaultMessage) GetLastMessage(ctx context.Context, in *GetLastMessageReq, opts ...grpc.CallOption) (*GetLastMessageRes, error) {
 	client := message.NewMessageClient(m.cli.Conn())
-	return client.GetLastMessage(ctx, in)
+	return client.GetLastMessage(ctx, in, opts...)
 }
 
 // 查看详细详情
-func (m *defaultMessage) FindMessageDetail(ctx context.Context, in *MessageDetailReq) (*MessageDetailResp, error) {
+func (m *defaultMessage) FindMessageDetail(ctx context.Context, in *MessageDetailReq, opts ...grpc.CallOption) (*MessageDetailResp, error) {
 	client := message.NewMessageClient(m.cli.Conn())
-	return client.FindMessageDetail(ctx, in)
+	return client.FindMessageDetail(ctx, in, opts...)
 }
 
 //   获取指定用户的分类及未读消息数量
-func (m *defaultMessage) GetUnreadClassCount(ctx context.Context, in *GetUnreadClassCountReq) (*GetUnreadClassCountRes, error) {
+func (m *defaultMessage) GetUnreadClassCount(ctx context.Context, in *GetUnreadClassCountReq, opts ...grpc.CallOption) (*GetUnreadClassCountRes, error) {
 	client := message.NewMessageClient(m.cli.Conn())
-	return client.GetUnreadClassCount(ctx, in)
+	return client.GetUnreadClassCount(ctx, in, opts...)
 }
 
 //   获取指定用户收到消息的分类
-func (m *defaultMessage) GetMsgType(ctx context.Context, in *GetMsgTypeReq) (*GetMsgTypeRes, error) {
+func (m *defaultMessage) GetMsgType(ctx context.Context, in *GetMsgTypeReq, opts ...grpc.CallOption) (*GetMsgTypeRes, error) {
 	client := message.NewMessageClient(m.cli.Conn())
-	return client.GetMsgType(ctx, in)
+	return client.GetMsgType(ctx, in, opts...)
 }
 
 // 修改用户指定分类下的消息已读未读
-func (m *defaultMessage) UpdateMessageRead(ctx context.Context, in *UpdateMessageReadReq) (*UpdateMessageReadResp, error) {
+func (m *defaultMessage) UpdateMessageRead(ctx context.Context, in *UpdateMessageReadReq, opts ...grpc.CallOption) (*UpdateMessageReadResp, error) {
 	client := message.NewMessageClient(m.cli.Conn())
-	return client.UpdateMessageRead(ctx, in)
+	return client.UpdateMessageRead(ctx, in, opts...)
 }
 
 //   查询指定用户的浮标消息
-func (m *defaultMessage) FindUserBuoyMsg(ctx context.Context, in *FindUserBuoyMsgReq) (*FindUserBuoyMsgRes, error) {
+func (m *defaultMessage) FindUserBuoyMsg(ctx context.Context, in *FindUserBuoyMsgReq, opts ...grpc.CallOption) (*FindUserBuoyMsgRes, error) {
 	client := message.NewMessageClient(m.cli.Conn())
-	return client.FindUserBuoyMsg(ctx, in)
+	return client.FindUserBuoyMsg(ctx, in, opts...)
 }

+ 2765 - 0
rpc/type/message/message.pb.go

@@ -0,0 +1,2765 @@
+// Code generated by protoc-gen-go. DO NOT EDIT.
+// versions:
+// 	protoc-gen-go v1.28.0
+// 	protoc        v3.19.4
+// source: message.proto
+
+package message
+
+import (
+	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
+	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
+	reflect "reflect"
+	sync "sync"
+)
+
+const (
+	// Verify that this generated code is sufficiently up-to-date.
+	_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
+	// Verify that runtime/protoimpl is sufficiently up-to-date.
+	_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
+)
+
+type SendMsgRequest struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
+	ReceiveUserId string `protobuf:"bytes,1,opt,name=receiveUserId,proto3" json:"receiveUserId,omitempty"` //接收方用户ID
+	ReceiveName   string `protobuf:"bytes,2,opt,name=receiveName,proto3" json:"receiveName,omitempty"`     //接收方用户名
+	SendUserId    string `protobuf:"bytes,3,opt,name=sendUserId,proto3" json:"sendUserId,omitempty"`       //发送方用户ID
+	SendName      string `protobuf:"bytes,4,opt,name=sendName,proto3" json:"sendName,omitempty"`           //发送方用户名
+	Title         string `protobuf:"bytes,5,opt,name=title,proto3" json:"title,omitempty"`                 //主题
+	Content       string `protobuf:"bytes,6,opt,name=content,proto3" json:"content,omitempty"`             //内容
+	MsgType       int64  `protobuf:"varint,7,opt,name=msgType,proto3" json:"msgType,omitempty"`            //消息类型 1:客服   2:系统通知  3:营销   4:用户会话
+	Link          string `protobuf:"bytes,8,opt,name=link,proto3" json:"link,omitempty"`                   //跳转链接
+	CiteId        int64  `protobuf:"varint,9,opt,name=citeId,proto3" json:"citeId,omitempty"`              //引用id
+	Appid         string `protobuf:"bytes,10,opt,name=appid,proto3" json:"appid,omitempty"`                //应用标识
+}
+
+func (x *SendMsgRequest) Reset() {
+	*x = SendMsgRequest{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_message_proto_msgTypes[0]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *SendMsgRequest) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*SendMsgRequest) ProtoMessage() {}
+
+func (x *SendMsgRequest) ProtoReflect() protoreflect.Message {
+	mi := &file_message_proto_msgTypes[0]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use SendMsgRequest.ProtoReflect.Descriptor instead.
+func (*SendMsgRequest) Descriptor() ([]byte, []int) {
+	return file_message_proto_rawDescGZIP(), []int{0}
+}
+
+func (x *SendMsgRequest) GetReceiveUserId() string {
+	if x != nil {
+		return x.ReceiveUserId
+	}
+	return ""
+}
+
+func (x *SendMsgRequest) GetReceiveName() string {
+	if x != nil {
+		return x.ReceiveName
+	}
+	return ""
+}
+
+func (x *SendMsgRequest) GetSendUserId() string {
+	if x != nil {
+		return x.SendUserId
+	}
+	return ""
+}
+
+func (x *SendMsgRequest) GetSendName() string {
+	if x != nil {
+		return x.SendName
+	}
+	return ""
+}
+
+func (x *SendMsgRequest) GetTitle() string {
+	if x != nil {
+		return x.Title
+	}
+	return ""
+}
+
+func (x *SendMsgRequest) GetContent() string {
+	if x != nil {
+		return x.Content
+	}
+	return ""
+}
+
+func (x *SendMsgRequest) GetMsgType() int64 {
+	if x != nil {
+		return x.MsgType
+	}
+	return 0
+}
+
+func (x *SendMsgRequest) GetLink() string {
+	if x != nil {
+		return x.Link
+	}
+	return ""
+}
+
+func (x *SendMsgRequest) GetCiteId() int64 {
+	if x != nil {
+		return x.CiteId
+	}
+	return 0
+}
+
+func (x *SendMsgRequest) GetAppid() string {
+	if x != nil {
+		return x.Appid
+	}
+	return ""
+}
+
+type ChangeReadStatusRequest struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
+	Id         string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`                  // 消息id
+	ReadStatus int64  `protobuf:"varint,2,opt,name=readStatus,proto3" json:"readStatus,omitempty"` // 阅读状态 0-未读 1-已读
+	Appid      string `protobuf:"bytes,3,opt,name=appid,proto3" json:"appid,omitempty"`            //应用标识
+}
+
+func (x *ChangeReadStatusRequest) Reset() {
+	*x = ChangeReadStatusRequest{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_message_proto_msgTypes[1]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *ChangeReadStatusRequest) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*ChangeReadStatusRequest) ProtoMessage() {}
+
+func (x *ChangeReadStatusRequest) ProtoReflect() protoreflect.Message {
+	mi := &file_message_proto_msgTypes[1]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use ChangeReadStatusRequest.ProtoReflect.Descriptor instead.
+func (*ChangeReadStatusRequest) Descriptor() ([]byte, []int) {
+	return file_message_proto_rawDescGZIP(), []int{1}
+}
+
+func (x *ChangeReadStatusRequest) GetId() string {
+	if x != nil {
+		return x.Id
+	}
+	return ""
+}
+
+func (x *ChangeReadStatusRequest) GetReadStatus() int64 {
+	if x != nil {
+		return x.ReadStatus
+	}
+	return 0
+}
+
+func (x *ChangeReadStatusRequest) GetAppid() string {
+	if x != nil {
+		return x.Appid
+	}
+	return ""
+}
+
+type ResCount struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
+	MsgType int64 `protobuf:"varint,1,opt,name=msgType,proto3" json:"msgType,omitempty"` // 类型及未读数量
+	Count   int64 `protobuf:"varint,2,opt,name=count,proto3" json:"count,omitempty"`     // 类型及未读数量
+}
+
+func (x *ResCount) Reset() {
+	*x = ResCount{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_message_proto_msgTypes[2]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *ResCount) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*ResCount) ProtoMessage() {}
+
+func (x *ResCount) ProtoReflect() protoreflect.Message {
+	mi := &file_message_proto_msgTypes[2]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use ResCount.ProtoReflect.Descriptor instead.
+func (*ResCount) Descriptor() ([]byte, []int) {
+	return file_message_proto_rawDescGZIP(), []int{2}
+}
+
+func (x *ResCount) GetMsgType() int64 {
+	if x != nil {
+		return x.MsgType
+	}
+	return 0
+}
+
+func (x *ResCount) GetCount() int64 {
+	if x != nil {
+		return x.Count
+	}
+	return 0
+}
+
+// 删除单一消息
+type DeleteSingleMessageRequest struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
+	Id    string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`       // 消息id
+	Appid string `protobuf:"bytes,3,opt,name=appid,proto3" json:"appid,omitempty"` //应用标识
+}
+
+func (x *DeleteSingleMessageRequest) Reset() {
+	*x = DeleteSingleMessageRequest{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_message_proto_msgTypes[3]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *DeleteSingleMessageRequest) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*DeleteSingleMessageRequest) ProtoMessage() {}
+
+func (x *DeleteSingleMessageRequest) ProtoReflect() protoreflect.Message {
+	mi := &file_message_proto_msgTypes[3]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use DeleteSingleMessageRequest.ProtoReflect.Descriptor instead.
+func (*DeleteSingleMessageRequest) Descriptor() ([]byte, []int) {
+	return file_message_proto_rawDescGZIP(), []int{3}
+}
+
+func (x *DeleteSingleMessageRequest) GetId() string {
+	if x != nil {
+		return x.Id
+	}
+	return ""
+}
+
+func (x *DeleteSingleMessageRequest) GetAppid() string {
+	if x != nil {
+		return x.Appid
+	}
+	return ""
+}
+
+// 批量删除消息
+type DeleteMultipleMessageRequest struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
+	Id    string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`       // 多条消息id, 逗号分隔
+	Appid string `protobuf:"bytes,3,opt,name=appid,proto3" json:"appid,omitempty"` //应用标识
+}
+
+func (x *DeleteMultipleMessageRequest) Reset() {
+	*x = DeleteMultipleMessageRequest{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_message_proto_msgTypes[4]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *DeleteMultipleMessageRequest) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*DeleteMultipleMessageRequest) ProtoMessage() {}
+
+func (x *DeleteMultipleMessageRequest) ProtoReflect() protoreflect.Message {
+	mi := &file_message_proto_msgTypes[4]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use DeleteMultipleMessageRequest.ProtoReflect.Descriptor instead.
+func (*DeleteMultipleMessageRequest) Descriptor() ([]byte, []int) {
+	return file_message_proto_rawDescGZIP(), []int{4}
+}
+
+func (x *DeleteMultipleMessageRequest) GetId() string {
+	if x != nil {
+		return x.Id
+	}
+	return ""
+}
+
+func (x *DeleteMultipleMessageRequest) GetAppid() string {
+	if x != nil {
+		return x.Appid
+	}
+	return ""
+}
+
+// 查询指定用户未读消息合计
+type GetUnreadCountRequest struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
+	UserId string `protobuf:"bytes,1,opt,name=userId,proto3" json:"userId,omitempty"` // 用户id
+	Appid  string `protobuf:"bytes,2,opt,name=appid,proto3" json:"appid,omitempty"`   //应用标识
+}
+
+func (x *GetUnreadCountRequest) Reset() {
+	*x = GetUnreadCountRequest{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_message_proto_msgTypes[5]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *GetUnreadCountRequest) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*GetUnreadCountRequest) ProtoMessage() {}
+
+func (x *GetUnreadCountRequest) ProtoReflect() protoreflect.Message {
+	mi := &file_message_proto_msgTypes[5]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use GetUnreadCountRequest.ProtoReflect.Descriptor instead.
+func (*GetUnreadCountRequest) Descriptor() ([]byte, []int) {
+	return file_message_proto_rawDescGZIP(), []int{5}
+}
+
+func (x *GetUnreadCountRequest) GetUserId() string {
+	if x != nil {
+		return x.UserId
+	}
+	return ""
+}
+
+func (x *GetUnreadCountRequest) GetAppid() string {
+	if x != nil {
+		return x.Appid
+	}
+	return ""
+}
+
+type Response struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
+	Code    int64  `protobuf:"varint,1,opt,name=code,proto3" json:"code,omitempty"`      //状态码
+	Message string `protobuf:"bytes,2,opt,name=message,proto3" json:"message,omitempty"` //响应消息
+}
+
+func (x *Response) Reset() {
+	*x = Response{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_message_proto_msgTypes[6]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *Response) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*Response) ProtoMessage() {}
+
+func (x *Response) ProtoReflect() protoreflect.Message {
+	mi := &file_message_proto_msgTypes[6]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use Response.ProtoReflect.Descriptor instead.
+func (*Response) Descriptor() ([]byte, []int) {
+	return file_message_proto_rawDescGZIP(), []int{6}
+}
+
+func (x *Response) GetCode() int64 {
+	if x != nil {
+		return x.Code
+	}
+	return 0
+}
+
+func (x *Response) GetMessage() string {
+	if x != nil {
+		return x.Message
+	}
+	return ""
+}
+
+type GetUnreadCountResponse struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
+	Code    int64  `protobuf:"varint,1,opt,name=code,proto3" json:"code,omitempty"`      //状态码
+	Message string `protobuf:"bytes,2,opt,name=message,proto3" json:"message,omitempty"` //响应消息
+	Count   int64  `protobuf:"varint,3,opt,name=count,proto3" json:"count,omitempty"`    //
+}
+
+func (x *GetUnreadCountResponse) Reset() {
+	*x = GetUnreadCountResponse{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_message_proto_msgTypes[7]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *GetUnreadCountResponse) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*GetUnreadCountResponse) ProtoMessage() {}
+
+func (x *GetUnreadCountResponse) ProtoReflect() protoreflect.Message {
+	mi := &file_message_proto_msgTypes[7]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use GetUnreadCountResponse.ProtoReflect.Descriptor instead.
+func (*GetUnreadCountResponse) Descriptor() ([]byte, []int) {
+	return file_message_proto_rawDescGZIP(), []int{7}
+}
+
+func (x *GetUnreadCountResponse) GetCode() int64 {
+	if x != nil {
+		return x.Code
+	}
+	return 0
+}
+
+func (x *GetUnreadCountResponse) GetMessage() string {
+	if x != nil {
+		return x.Message
+	}
+	return ""
+}
+
+func (x *GetUnreadCountResponse) GetCount() int64 {
+	if x != nil {
+		return x.Count
+	}
+	return 0
+}
+
+type FindUserMsgReq struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
+	UserId        string `protobuf:"bytes,1,opt,name=userId,proto3" json:"userId,omitempty"`               //用户id
+	ReceiveUserId string `protobuf:"bytes,2,opt,name=receiveUserId,proto3" json:"receiveUserId,omitempty"` //聊天方用户id
+	Appid         string `protobuf:"bytes,3,opt,name=appid,proto3" json:"appid,omitempty"`                 //应用标识
+	OffSet        int64  `protobuf:"varint,4,opt,name=offSet,proto3" json:"offSet,omitempty"`              //当前
+	PageSize      int64  `protobuf:"varint,5,opt,name=pageSize,proto3" json:"pageSize,omitempty"`          //大小
+	MsgType       int64  `protobuf:"varint,6,opt,name=msgType,proto3" json:"msgType,omitempty"`            //是否区分类型
+	Read          int64  `protobuf:"varint,7,opt,name=read,proto3" json:"read,omitempty"`                  // 是否区分已读未读 -1 不区分已读未读  0 未读 1 已读
+}
+
+func (x *FindUserMsgReq) Reset() {
+	*x = FindUserMsgReq{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_message_proto_msgTypes[8]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *FindUserMsgReq) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*FindUserMsgReq) ProtoMessage() {}
+
+func (x *FindUserMsgReq) ProtoReflect() protoreflect.Message {
+	mi := &file_message_proto_msgTypes[8]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use FindUserMsgReq.ProtoReflect.Descriptor instead.
+func (*FindUserMsgReq) Descriptor() ([]byte, []int) {
+	return file_message_proto_rawDescGZIP(), []int{8}
+}
+
+func (x *FindUserMsgReq) GetUserId() string {
+	if x != nil {
+		return x.UserId
+	}
+	return ""
+}
+
+func (x *FindUserMsgReq) GetReceiveUserId() string {
+	if x != nil {
+		return x.ReceiveUserId
+	}
+	return ""
+}
+
+func (x *FindUserMsgReq) GetAppid() string {
+	if x != nil {
+		return x.Appid
+	}
+	return ""
+}
+
+func (x *FindUserMsgReq) GetOffSet() int64 {
+	if x != nil {
+		return x.OffSet
+	}
+	return 0
+}
+
+func (x *FindUserMsgReq) GetPageSize() int64 {
+	if x != nil {
+		return x.PageSize
+	}
+	return 0
+}
+
+func (x *FindUserMsgReq) GetMsgType() int64 {
+	if x != nil {
+		return x.MsgType
+	}
+	return 0
+}
+
+func (x *FindUserMsgReq) GetRead() int64 {
+	if x != nil {
+		return x.Read
+	}
+	return 0
+}
+
+type Messages struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
+	ReceiveUserId string `protobuf:"bytes,1,opt,name=receiveUserId,proto3" json:"receiveUserId,omitempty"` //接收方用户ID
+	ReceiveName   string `protobuf:"bytes,2,opt,name=receiveName,proto3" json:"receiveName,omitempty"`     //接收方用户名
+	SendUserId    string `protobuf:"bytes,3,opt,name=sendUserId,proto3" json:"sendUserId,omitempty"`       //发送方用户ID
+	SendName      string `protobuf:"bytes,4,opt,name=sendName,proto3" json:"sendName,omitempty"`           //发送方用户名
+	Title         string `protobuf:"bytes,5,opt,name=title,proto3" json:"title,omitempty"`                 //主题
+	Content       string `protobuf:"bytes,6,opt,name=content,proto3" json:"content,omitempty"`             //内容
+	MsgType       int64  `protobuf:"varint,7,opt,name=msgType,proto3" json:"msgType,omitempty"`            //消息类型 1:客服   2:系统通知  3:营销   4:用户会话
+	Link          string `protobuf:"bytes,8,opt,name=link,proto3" json:"link,omitempty"`                   //跳转链接
+	CiteId        int64  `protobuf:"varint,9,opt,name=citeId,proto3" json:"citeId,omitempty"`              //引用id
+	IsRead        int64  `protobuf:"varint,10,opt,name=isRead,proto3" json:"isRead,omitempty"`             //已读未读 0:未读  1:已读
+	Createtime    string `protobuf:"bytes,11,opt,name=createtime,proto3" json:"createtime,omitempty"`
+	Appid         string `protobuf:"bytes,12,opt,name=appid,proto3" json:"appid,omitempty"` //应用标识
+	Id            string `protobuf:"bytes,13,opt,name=id,proto3" json:"id,omitempty"`       //消息id
+	MsgLogId      int64  `protobuf:"varint,14,opt,name=msgLogId,proto3" json:"msgLogId,omitempty"`
+}
+
+func (x *Messages) Reset() {
+	*x = Messages{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_message_proto_msgTypes[9]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *Messages) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*Messages) ProtoMessage() {}
+
+func (x *Messages) ProtoReflect() protoreflect.Message {
+	mi := &file_message_proto_msgTypes[9]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use Messages.ProtoReflect.Descriptor instead.
+func (*Messages) Descriptor() ([]byte, []int) {
+	return file_message_proto_rawDescGZIP(), []int{9}
+}
+
+func (x *Messages) GetReceiveUserId() string {
+	if x != nil {
+		return x.ReceiveUserId
+	}
+	return ""
+}
+
+func (x *Messages) GetReceiveName() string {
+	if x != nil {
+		return x.ReceiveName
+	}
+	return ""
+}
+
+func (x *Messages) GetSendUserId() string {
+	if x != nil {
+		return x.SendUserId
+	}
+	return ""
+}
+
+func (x *Messages) GetSendName() string {
+	if x != nil {
+		return x.SendName
+	}
+	return ""
+}
+
+func (x *Messages) GetTitle() string {
+	if x != nil {
+		return x.Title
+	}
+	return ""
+}
+
+func (x *Messages) GetContent() string {
+	if x != nil {
+		return x.Content
+	}
+	return ""
+}
+
+func (x *Messages) GetMsgType() int64 {
+	if x != nil {
+		return x.MsgType
+	}
+	return 0
+}
+
+func (x *Messages) GetLink() string {
+	if x != nil {
+		return x.Link
+	}
+	return ""
+}
+
+func (x *Messages) GetCiteId() int64 {
+	if x != nil {
+		return x.CiteId
+	}
+	return 0
+}
+
+func (x *Messages) GetIsRead() int64 {
+	if x != nil {
+		return x.IsRead
+	}
+	return 0
+}
+
+func (x *Messages) GetCreatetime() string {
+	if x != nil {
+		return x.Createtime
+	}
+	return ""
+}
+
+func (x *Messages) GetAppid() string {
+	if x != nil {
+		return x.Appid
+	}
+	return ""
+}
+
+func (x *Messages) GetId() string {
+	if x != nil {
+		return x.Id
+	}
+	return ""
+}
+
+func (x *Messages) GetMsgLogId() int64 {
+	if x != nil {
+		return x.MsgLogId
+	}
+	return 0
+}
+
+type FindUserMsgRes struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
+	Code    int64       `protobuf:"varint,1,opt,name=code,proto3" json:"code,omitempty"`      //状态码
+	Message string      `protobuf:"bytes,2,opt,name=message,proto3" json:"message,omitempty"` //响应消息
+	Data    []*Messages `protobuf:"bytes,3,rep,name=data,proto3" json:"data,omitempty"`       //
+	Count   int64       `protobuf:"varint,4,opt,name=count,proto3" json:"count,omitempty"`    //总数
+}
+
+func (x *FindUserMsgRes) Reset() {
+	*x = FindUserMsgRes{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_message_proto_msgTypes[10]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *FindUserMsgRes) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*FindUserMsgRes) ProtoMessage() {}
+
+func (x *FindUserMsgRes) ProtoReflect() protoreflect.Message {
+	mi := &file_message_proto_msgTypes[10]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use FindUserMsgRes.ProtoReflect.Descriptor instead.
+func (*FindUserMsgRes) Descriptor() ([]byte, []int) {
+	return file_message_proto_rawDescGZIP(), []int{10}
+}
+
+func (x *FindUserMsgRes) GetCode() int64 {
+	if x != nil {
+		return x.Code
+	}
+	return 0
+}
+
+func (x *FindUserMsgRes) GetMessage() string {
+	if x != nil {
+		return x.Message
+	}
+	return ""
+}
+
+func (x *FindUserMsgRes) GetData() []*Messages {
+	if x != nil {
+		return x.Data
+	}
+	return nil
+}
+
+func (x *FindUserMsgRes) GetCount() int64 {
+	if x != nil {
+		return x.Count
+	}
+	return 0
+}
+
+type GetClassUnreadCountReq struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
+	UserId  string `protobuf:"bytes,1,opt,name=userId,proto3" json:"userId,omitempty"`    // 用户id
+	MsgType int64  `protobuf:"varint,2,opt,name=msgType,proto3" json:"msgType,omitempty"` //分类 1:客服   2:系统通知  3:营销   4:用户会话
+	Appid   string `protobuf:"bytes,3,opt,name=appid,proto3" json:"appid,omitempty"`      //应用标识
+}
+
+func (x *GetClassUnreadCountReq) Reset() {
+	*x = GetClassUnreadCountReq{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_message_proto_msgTypes[11]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *GetClassUnreadCountReq) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*GetClassUnreadCountReq) ProtoMessage() {}
+
+func (x *GetClassUnreadCountReq) ProtoReflect() protoreflect.Message {
+	mi := &file_message_proto_msgTypes[11]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use GetClassUnreadCountReq.ProtoReflect.Descriptor instead.
+func (*GetClassUnreadCountReq) Descriptor() ([]byte, []int) {
+	return file_message_proto_rawDescGZIP(), []int{11}
+}
+
+func (x *GetClassUnreadCountReq) GetUserId() string {
+	if x != nil {
+		return x.UserId
+	}
+	return ""
+}
+
+func (x *GetClassUnreadCountReq) GetMsgType() int64 {
+	if x != nil {
+		return x.MsgType
+	}
+	return 0
+}
+
+func (x *GetClassUnreadCountReq) GetAppid() string {
+	if x != nil {
+		return x.Appid
+	}
+	return ""
+}
+
+//查看消息内容
+type MessageDetailReq struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
+	Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` //消息id
+}
+
+func (x *MessageDetailReq) Reset() {
+	*x = MessageDetailReq{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_message_proto_msgTypes[12]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *MessageDetailReq) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*MessageDetailReq) ProtoMessage() {}
+
+func (x *MessageDetailReq) ProtoReflect() protoreflect.Message {
+	mi := &file_message_proto_msgTypes[12]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use MessageDetailReq.ProtoReflect.Descriptor instead.
+func (*MessageDetailReq) Descriptor() ([]byte, []int) {
+	return file_message_proto_rawDescGZIP(), []int{12}
+}
+
+func (x *MessageDetailReq) GetId() string {
+	if x != nil {
+		return x.Id
+	}
+	return ""
+}
+
+type MessageDetailResp struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
+	Code    int64     `protobuf:"varint,1,opt,name=code,proto3" json:"code,omitempty"`      //状态码
+	Message string    `protobuf:"bytes,2,opt,name=message,proto3" json:"message,omitempty"` //响应消息
+	Data    *Messages `protobuf:"bytes,3,opt,name=data,proto3" json:"data,omitempty"`       //
+}
+
+func (x *MessageDetailResp) Reset() {
+	*x = MessageDetailResp{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_message_proto_msgTypes[13]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *MessageDetailResp) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*MessageDetailResp) ProtoMessage() {}
+
+func (x *MessageDetailResp) ProtoReflect() protoreflect.Message {
+	mi := &file_message_proto_msgTypes[13]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use MessageDetailResp.ProtoReflect.Descriptor instead.
+func (*MessageDetailResp) Descriptor() ([]byte, []int) {
+	return file_message_proto_rawDescGZIP(), []int{13}
+}
+
+func (x *MessageDetailResp) GetCode() int64 {
+	if x != nil {
+		return x.Code
+	}
+	return 0
+}
+
+func (x *MessageDetailResp) GetMessage() string {
+	if x != nil {
+		return x.Message
+	}
+	return ""
+}
+
+func (x *MessageDetailResp) GetData() *Messages {
+	if x != nil {
+		return x.Data
+	}
+	return nil
+}
+
+type GetLastMessageReq struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
+	UserId  string `protobuf:"bytes,1,opt,name=userId,proto3" json:"userId,omitempty"`    // 用户id
+	MsgType int64  `protobuf:"varint,2,opt,name=msgType,proto3" json:"msgType,omitempty"` //分类 1:客服   2:系统通知  3:营销   4:用户会话
+	Appid   string `protobuf:"bytes,3,opt,name=appid,proto3" json:"appid,omitempty"`      //应用标识
+	IsRead  int64  `protobuf:"varint,4,opt,name=isRead,proto3" json:"isRead,omitempty"`   // 0:未读  1:已读  -1 不区分
+}
+
+func (x *GetLastMessageReq) Reset() {
+	*x = GetLastMessageReq{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_message_proto_msgTypes[14]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *GetLastMessageReq) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*GetLastMessageReq) ProtoMessage() {}
+
+func (x *GetLastMessageReq) ProtoReflect() protoreflect.Message {
+	mi := &file_message_proto_msgTypes[14]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use GetLastMessageReq.ProtoReflect.Descriptor instead.
+func (*GetLastMessageReq) Descriptor() ([]byte, []int) {
+	return file_message_proto_rawDescGZIP(), []int{14}
+}
+
+func (x *GetLastMessageReq) GetUserId() string {
+	if x != nil {
+		return x.UserId
+	}
+	return ""
+}
+
+func (x *GetLastMessageReq) GetMsgType() int64 {
+	if x != nil {
+		return x.MsgType
+	}
+	return 0
+}
+
+func (x *GetLastMessageReq) GetAppid() string {
+	if x != nil {
+		return x.Appid
+	}
+	return ""
+}
+
+func (x *GetLastMessageReq) GetIsRead() int64 {
+	if x != nil {
+		return x.IsRead
+	}
+	return 0
+}
+
+type GetLastMessageRes struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
+	Code    int64     `protobuf:"varint,1,opt,name=code,proto3" json:"code,omitempty"`      //状态码
+	Message string    `protobuf:"bytes,2,opt,name=message,proto3" json:"message,omitempty"` //响应消息
+	Data    *Messages `protobuf:"bytes,3,opt,name=data,proto3" json:"data,omitempty"`       //
+}
+
+func (x *GetLastMessageRes) Reset() {
+	*x = GetLastMessageRes{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_message_proto_msgTypes[15]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *GetLastMessageRes) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*GetLastMessageRes) ProtoMessage() {}
+
+func (x *GetLastMessageRes) ProtoReflect() protoreflect.Message {
+	mi := &file_message_proto_msgTypes[15]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use GetLastMessageRes.ProtoReflect.Descriptor instead.
+func (*GetLastMessageRes) Descriptor() ([]byte, []int) {
+	return file_message_proto_rawDescGZIP(), []int{15}
+}
+
+func (x *GetLastMessageRes) GetCode() int64 {
+	if x != nil {
+		return x.Code
+	}
+	return 0
+}
+
+func (x *GetLastMessageRes) GetMessage() string {
+	if x != nil {
+		return x.Message
+	}
+	return ""
+}
+
+func (x *GetLastMessageRes) GetData() *Messages {
+	if x != nil {
+		return x.Data
+	}
+	return nil
+}
+
+// 获取用户分类的的未读消息分类及数量 及分类下最新的消息
+type GetUnreadClassCountReq struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
+	UserId  string `protobuf:"bytes,1,opt,name=userId,proto3" json:"userId,omitempty"`    // 用户id
+	Appid   string `protobuf:"bytes,2,opt,name=appid,proto3" json:"appid,omitempty"`      //应用标识
+	NeedMsg bool   `protobuf:"varint,3,opt,name=needMsg,proto3" json:"needMsg,omitempty"` //是否需要分类下的最新一条消息
+}
+
+func (x *GetUnreadClassCountReq) Reset() {
+	*x = GetUnreadClassCountReq{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_message_proto_msgTypes[16]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *GetUnreadClassCountReq) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*GetUnreadClassCountReq) ProtoMessage() {}
+
+func (x *GetUnreadClassCountReq) ProtoReflect() protoreflect.Message {
+	mi := &file_message_proto_msgTypes[16]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use GetUnreadClassCountReq.ProtoReflect.Descriptor instead.
+func (*GetUnreadClassCountReq) Descriptor() ([]byte, []int) {
+	return file_message_proto_rawDescGZIP(), []int{16}
+}
+
+func (x *GetUnreadClassCountReq) GetUserId() string {
+	if x != nil {
+		return x.UserId
+	}
+	return ""
+}
+
+func (x *GetUnreadClassCountReq) GetAppid() string {
+	if x != nil {
+		return x.Appid
+	}
+	return ""
+}
+
+func (x *GetUnreadClassCountReq) GetNeedMsg() bool {
+	if x != nil {
+		return x.NeedMsg
+	}
+	return false
+}
+
+type GetUnreadClassCountRes struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
+	Code    int64       `protobuf:"varint,1,opt,name=code,proto3" json:"code,omitempty"`      //状态码
+	Message string      `protobuf:"bytes,2,opt,name=message,proto3" json:"message,omitempty"` //响应消息
+	Data    []*ResCount `protobuf:"bytes,3,rep,name=data,proto3" json:"data,omitempty"`       //
+	Info    []*Messages `protobuf:"bytes,4,rep,name=info,proto3" json:"info,omitempty"`       // 每个类型最新消息列表
+}
+
+func (x *GetUnreadClassCountRes) Reset() {
+	*x = GetUnreadClassCountRes{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_message_proto_msgTypes[17]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *GetUnreadClassCountRes) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*GetUnreadClassCountRes) ProtoMessage() {}
+
+func (x *GetUnreadClassCountRes) ProtoReflect() protoreflect.Message {
+	mi := &file_message_proto_msgTypes[17]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use GetUnreadClassCountRes.ProtoReflect.Descriptor instead.
+func (*GetUnreadClassCountRes) Descriptor() ([]byte, []int) {
+	return file_message_proto_rawDescGZIP(), []int{17}
+}
+
+func (x *GetUnreadClassCountRes) GetCode() int64 {
+	if x != nil {
+		return x.Code
+	}
+	return 0
+}
+
+func (x *GetUnreadClassCountRes) GetMessage() string {
+	if x != nil {
+		return x.Message
+	}
+	return ""
+}
+
+func (x *GetUnreadClassCountRes) GetData() []*ResCount {
+	if x != nil {
+		return x.Data
+	}
+	return nil
+}
+
+func (x *GetUnreadClassCountRes) GetInfo() []*Messages {
+	if x != nil {
+		return x.Info
+	}
+	return nil
+}
+
+type GetMsgTypeReq struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
+	UserId string `protobuf:"bytes,1,opt,name=userId,proto3" json:"userId,omitempty"` // 用户id
+	Appid  string `protobuf:"bytes,2,opt,name=appid,proto3" json:"appid,omitempty"`   //应用标识
+}
+
+func (x *GetMsgTypeReq) Reset() {
+	*x = GetMsgTypeReq{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_message_proto_msgTypes[18]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *GetMsgTypeReq) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*GetMsgTypeReq) ProtoMessage() {}
+
+func (x *GetMsgTypeReq) ProtoReflect() protoreflect.Message {
+	mi := &file_message_proto_msgTypes[18]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use GetMsgTypeReq.ProtoReflect.Descriptor instead.
+func (*GetMsgTypeReq) Descriptor() ([]byte, []int) {
+	return file_message_proto_rawDescGZIP(), []int{18}
+}
+
+func (x *GetMsgTypeReq) GetUserId() string {
+	if x != nil {
+		return x.UserId
+	}
+	return ""
+}
+
+func (x *GetMsgTypeReq) GetAppid() string {
+	if x != nil {
+		return x.Appid
+	}
+	return ""
+}
+
+type GetMsgTypeRes struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
+	Code    int64   `protobuf:"varint,1,opt,name=code,proto3" json:"code,omitempty"`        //状态码
+	Message string  `protobuf:"bytes,2,opt,name=message,proto3" json:"message,omitempty"`   //响应消息
+	Data    []int64 `protobuf:"varint,3,rep,packed,name=data,proto3" json:"data,omitempty"` //
+}
+
+func (x *GetMsgTypeRes) Reset() {
+	*x = GetMsgTypeRes{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_message_proto_msgTypes[19]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *GetMsgTypeRes) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*GetMsgTypeRes) ProtoMessage() {}
+
+func (x *GetMsgTypeRes) ProtoReflect() protoreflect.Message {
+	mi := &file_message_proto_msgTypes[19]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use GetMsgTypeRes.ProtoReflect.Descriptor instead.
+func (*GetMsgTypeRes) Descriptor() ([]byte, []int) {
+	return file_message_proto_rawDescGZIP(), []int{19}
+}
+
+func (x *GetMsgTypeRes) GetCode() int64 {
+	if x != nil {
+		return x.Code
+	}
+	return 0
+}
+
+func (x *GetMsgTypeRes) GetMessage() string {
+	if x != nil {
+		return x.Message
+	}
+	return ""
+}
+
+func (x *GetMsgTypeRes) GetData() []int64 {
+	if x != nil {
+		return x.Data
+	}
+	return nil
+}
+
+//更新分类下消息状态 已读、未读
+type UpdateMessageReadReq struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
+	MsgType       int64  `protobuf:"varint,1,opt,name=msgType,proto3" json:"msgType,omitempty"`
+	ReceiveUserid string `protobuf:"bytes,2,opt,name=receiveUserid,proto3" json:"receiveUserid,omitempty"`
+	AppId         string `protobuf:"bytes,3,opt,name=appId,proto3" json:"appId,omitempty"`
+}
+
+func (x *UpdateMessageReadReq) Reset() {
+	*x = UpdateMessageReadReq{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_message_proto_msgTypes[20]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *UpdateMessageReadReq) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*UpdateMessageReadReq) ProtoMessage() {}
+
+func (x *UpdateMessageReadReq) ProtoReflect() protoreflect.Message {
+	mi := &file_message_proto_msgTypes[20]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use UpdateMessageReadReq.ProtoReflect.Descriptor instead.
+func (*UpdateMessageReadReq) Descriptor() ([]byte, []int) {
+	return file_message_proto_rawDescGZIP(), []int{20}
+}
+
+func (x *UpdateMessageReadReq) GetMsgType() int64 {
+	if x != nil {
+		return x.MsgType
+	}
+	return 0
+}
+
+func (x *UpdateMessageReadReq) GetReceiveUserid() string {
+	if x != nil {
+		return x.ReceiveUserid
+	}
+	return ""
+}
+
+func (x *UpdateMessageReadReq) GetAppId() string {
+	if x != nil {
+		return x.AppId
+	}
+	return ""
+}
+
+type UpdateMessageReadResp struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
+	Code    int64  `protobuf:"varint,1,opt,name=code,proto3" json:"code,omitempty"`      //状态码
+	Message string `protobuf:"bytes,2,opt,name=message,proto3" json:"message,omitempty"` //响应消息
+	Status  int64  `protobuf:"varint,3,opt,name=status,proto3" json:"status,omitempty"`
+}
+
+func (x *UpdateMessageReadResp) Reset() {
+	*x = UpdateMessageReadResp{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_message_proto_msgTypes[21]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *UpdateMessageReadResp) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*UpdateMessageReadResp) ProtoMessage() {}
+
+func (x *UpdateMessageReadResp) ProtoReflect() protoreflect.Message {
+	mi := &file_message_proto_msgTypes[21]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use UpdateMessageReadResp.ProtoReflect.Descriptor instead.
+func (*UpdateMessageReadResp) Descriptor() ([]byte, []int) {
+	return file_message_proto_rawDescGZIP(), []int{21}
+}
+
+func (x *UpdateMessageReadResp) GetCode() int64 {
+	if x != nil {
+		return x.Code
+	}
+	return 0
+}
+
+func (x *UpdateMessageReadResp) GetMessage() string {
+	if x != nil {
+		return x.Message
+	}
+	return ""
+}
+
+func (x *UpdateMessageReadResp) GetStatus() int64 {
+	if x != nil {
+		return x.Status
+	}
+	return 0
+}
+
+type User struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
+	UserId   string `protobuf:"bytes,1,opt,name=userId,proto3" json:"userId,omitempty"`
+	UserName string `protobuf:"bytes,2,opt,name=userName,proto3" json:"userName,omitempty"`
+}
+
+func (x *User) Reset() {
+	*x = User{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_message_proto_msgTypes[22]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *User) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*User) ProtoMessage() {}
+
+func (x *User) ProtoReflect() protoreflect.Message {
+	mi := &file_message_proto_msgTypes[22]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use User.ProtoReflect.Descriptor instead.
+func (*User) Descriptor() ([]byte, []int) {
+	return file_message_proto_rawDescGZIP(), []int{22}
+}
+
+func (x *User) GetUserId() string {
+	if x != nil {
+		return x.UserId
+	}
+	return ""
+}
+
+func (x *User) GetUserName() string {
+	if x != nil {
+		return x.UserName
+	}
+	return ""
+}
+
+type MultipleSaveMsgReq struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
+	UserIds     string `protobuf:"bytes,1,opt,name=userIds,proto3" json:"userIds,omitempty"`
+	UserNames   string `protobuf:"bytes,2,opt,name=userNames,proto3" json:"userNames,omitempty"`
+	SendUserId  string `protobuf:"bytes,3,opt,name=sendUserId,proto3" json:"sendUserId,omitempty"`    //发送方用户ID
+	SendName    string `protobuf:"bytes,4,opt,name=sendName,proto3" json:"sendName,omitempty"`        //发送方用户名
+	Title       string `protobuf:"bytes,5,opt,name=title,proto3" json:"title,omitempty"`              //主题
+	Content     string `protobuf:"bytes,6,opt,name=content,proto3" json:"content,omitempty"`          //内容
+	MsgType     int64  `protobuf:"varint,7,opt,name=msgType,proto3" json:"msgType,omitempty"`         //消息类型 1:客服   2:系统通知  3:营销   4:用户会话
+	Link        string `protobuf:"bytes,8,opt,name=link,proto3" json:"link,omitempty"`                //跳转链接
+	CiteId      int64  `protobuf:"varint,9,opt,name=citeId,proto3" json:"citeId,omitempty"`           //引用id
+	Appid       string `protobuf:"bytes,10,opt,name=appid,proto3" json:"appid,omitempty"`             //应用标识
+	MsgLogId    int64  `protobuf:"varint,11,opt,name=msgLogId,proto3" json:"msgLogId,omitempty"`      //消息记录表id
+	ShowBuoy    int64  `protobuf:"varint,12,opt,name=showBuoy,proto3" json:"showBuoy,omitempty"`      //是否展示为浮标
+	ShowContent string `protobuf:"bytes,13,opt,name=showContent,proto3" json:"showContent,omitempty"` //展示文案
+}
+
+func (x *MultipleSaveMsgReq) Reset() {
+	*x = MultipleSaveMsgReq{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_message_proto_msgTypes[23]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *MultipleSaveMsgReq) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*MultipleSaveMsgReq) ProtoMessage() {}
+
+func (x *MultipleSaveMsgReq) ProtoReflect() protoreflect.Message {
+	mi := &file_message_proto_msgTypes[23]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use MultipleSaveMsgReq.ProtoReflect.Descriptor instead.
+func (*MultipleSaveMsgReq) Descriptor() ([]byte, []int) {
+	return file_message_proto_rawDescGZIP(), []int{23}
+}
+
+func (x *MultipleSaveMsgReq) GetUserIds() string {
+	if x != nil {
+		return x.UserIds
+	}
+	return ""
+}
+
+func (x *MultipleSaveMsgReq) GetUserNames() string {
+	if x != nil {
+		return x.UserNames
+	}
+	return ""
+}
+
+func (x *MultipleSaveMsgReq) GetSendUserId() string {
+	if x != nil {
+		return x.SendUserId
+	}
+	return ""
+}
+
+func (x *MultipleSaveMsgReq) GetSendName() string {
+	if x != nil {
+		return x.SendName
+	}
+	return ""
+}
+
+func (x *MultipleSaveMsgReq) GetTitle() string {
+	if x != nil {
+		return x.Title
+	}
+	return ""
+}
+
+func (x *MultipleSaveMsgReq) GetContent() string {
+	if x != nil {
+		return x.Content
+	}
+	return ""
+}
+
+func (x *MultipleSaveMsgReq) GetMsgType() int64 {
+	if x != nil {
+		return x.MsgType
+	}
+	return 0
+}
+
+func (x *MultipleSaveMsgReq) GetLink() string {
+	if x != nil {
+		return x.Link
+	}
+	return ""
+}
+
+func (x *MultipleSaveMsgReq) GetCiteId() int64 {
+	if x != nil {
+		return x.CiteId
+	}
+	return 0
+}
+
+func (x *MultipleSaveMsgReq) GetAppid() string {
+	if x != nil {
+		return x.Appid
+	}
+	return ""
+}
+
+func (x *MultipleSaveMsgReq) GetMsgLogId() int64 {
+	if x != nil {
+		return x.MsgLogId
+	}
+	return 0
+}
+
+func (x *MultipleSaveMsgReq) GetShowBuoy() int64 {
+	if x != nil {
+		return x.ShowBuoy
+	}
+	return 0
+}
+
+func (x *MultipleSaveMsgReq) GetShowContent() string {
+	if x != nil {
+		return x.ShowContent
+	}
+	return ""
+}
+
+type MultipleSaveMsgResp struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
+	Code     int64  `protobuf:"varint,1,opt,name=code,proto3" json:"code,omitempty"`         //状态码
+	Message  string `protobuf:"bytes,2,opt,name=message,proto3" json:"message,omitempty"`    //响应消息
+	ErrCount int64  `protobuf:"varint,3,opt,name=errCount,proto3" json:"errCount,omitempty"` // 保存出错数量
+}
+
+func (x *MultipleSaveMsgResp) Reset() {
+	*x = MultipleSaveMsgResp{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_message_proto_msgTypes[24]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *MultipleSaveMsgResp) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*MultipleSaveMsgResp) ProtoMessage() {}
+
+func (x *MultipleSaveMsgResp) ProtoReflect() protoreflect.Message {
+	mi := &file_message_proto_msgTypes[24]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use MultipleSaveMsgResp.ProtoReflect.Descriptor instead.
+func (*MultipleSaveMsgResp) Descriptor() ([]byte, []int) {
+	return file_message_proto_rawDescGZIP(), []int{24}
+}
+
+func (x *MultipleSaveMsgResp) GetCode() int64 {
+	if x != nil {
+		return x.Code
+	}
+	return 0
+}
+
+func (x *MultipleSaveMsgResp) GetMessage() string {
+	if x != nil {
+		return x.Message
+	}
+	return ""
+}
+
+func (x *MultipleSaveMsgResp) GetErrCount() int64 {
+	if x != nil {
+		return x.ErrCount
+	}
+	return 0
+}
+
+type FindUserBuoyMsgReq struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
+	UserId   string `protobuf:"bytes,1,opt,name=userId,proto3" json:"userId,omitempty"`      //用户id
+	Appid    string `protobuf:"bytes,2,opt,name=appid,proto3" json:"appid,omitempty"`        //应用标识
+	PageSize int64  `protobuf:"varint,3,opt,name=pageSize,proto3" json:"pageSize,omitempty"` //大小
+}
+
+func (x *FindUserBuoyMsgReq) Reset() {
+	*x = FindUserBuoyMsgReq{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_message_proto_msgTypes[25]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *FindUserBuoyMsgReq) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*FindUserBuoyMsgReq) ProtoMessage() {}
+
+func (x *FindUserBuoyMsgReq) ProtoReflect() protoreflect.Message {
+	mi := &file_message_proto_msgTypes[25]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use FindUserBuoyMsgReq.ProtoReflect.Descriptor instead.
+func (*FindUserBuoyMsgReq) Descriptor() ([]byte, []int) {
+	return file_message_proto_rawDescGZIP(), []int{25}
+}
+
+func (x *FindUserBuoyMsgReq) GetUserId() string {
+	if x != nil {
+		return x.UserId
+	}
+	return ""
+}
+
+func (x *FindUserBuoyMsgReq) GetAppid() string {
+	if x != nil {
+		return x.Appid
+	}
+	return ""
+}
+
+func (x *FindUserBuoyMsgReq) GetPageSize() int64 {
+	if x != nil {
+		return x.PageSize
+	}
+	return 0
+}
+
+type FindUserBuoyMsgRes struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
+	Code    int64           `protobuf:"varint,1,opt,name=code,proto3" json:"code,omitempty"`      //状态码
+	Message string          `protobuf:"bytes,2,opt,name=message,proto3" json:"message,omitempty"` //响应消息
+	Data    []*BuoyMessages `protobuf:"bytes,3,rep,name=data,proto3" json:"data,omitempty"`       //
+}
+
+func (x *FindUserBuoyMsgRes) Reset() {
+	*x = FindUserBuoyMsgRes{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_message_proto_msgTypes[26]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *FindUserBuoyMsgRes) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*FindUserBuoyMsgRes) ProtoMessage() {}
+
+func (x *FindUserBuoyMsgRes) ProtoReflect() protoreflect.Message {
+	mi := &file_message_proto_msgTypes[26]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use FindUserBuoyMsgRes.ProtoReflect.Descriptor instead.
+func (*FindUserBuoyMsgRes) Descriptor() ([]byte, []int) {
+	return file_message_proto_rawDescGZIP(), []int{26}
+}
+
+func (x *FindUserBuoyMsgRes) GetCode() int64 {
+	if x != nil {
+		return x.Code
+	}
+	return 0
+}
+
+func (x *FindUserBuoyMsgRes) GetMessage() string {
+	if x != nil {
+		return x.Message
+	}
+	return ""
+}
+
+func (x *FindUserBuoyMsgRes) GetData() []*BuoyMessages {
+	if x != nil {
+		return x.Data
+	}
+	return nil
+}
+
+type BuoyMessages struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
+	Id         string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`                                   //消息id
+	BuoyDetail string `protobuf:"bytes,2,opt,name=buoy_detail,json=buoyDetail,proto3" json:"buoy_detail,omitempty"` //浮标内容
+	PcUrl      string `protobuf:"bytes,3,opt,name=pcUrl,proto3" json:"pcUrl,omitempty"`
+	AndroidUrl string `protobuf:"bytes,4,opt,name=androidUrl,proto3" json:"androidUrl,omitempty"`
+	IosUrl     string `protobuf:"bytes,5,opt,name=iosUrl,proto3" json:"iosUrl,omitempty"`
+	WeChatUrl  string `protobuf:"bytes,6,opt,name=weChatUrl,proto3" json:"weChatUrl,omitempty"`
+}
+
+func (x *BuoyMessages) Reset() {
+	*x = BuoyMessages{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_message_proto_msgTypes[27]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *BuoyMessages) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*BuoyMessages) ProtoMessage() {}
+
+func (x *BuoyMessages) ProtoReflect() protoreflect.Message {
+	mi := &file_message_proto_msgTypes[27]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use BuoyMessages.ProtoReflect.Descriptor instead.
+func (*BuoyMessages) Descriptor() ([]byte, []int) {
+	return file_message_proto_rawDescGZIP(), []int{27}
+}
+
+func (x *BuoyMessages) GetId() string {
+	if x != nil {
+		return x.Id
+	}
+	return ""
+}
+
+func (x *BuoyMessages) GetBuoyDetail() string {
+	if x != nil {
+		return x.BuoyDetail
+	}
+	return ""
+}
+
+func (x *BuoyMessages) GetPcUrl() string {
+	if x != nil {
+		return x.PcUrl
+	}
+	return ""
+}
+
+func (x *BuoyMessages) GetAndroidUrl() string {
+	if x != nil {
+		return x.AndroidUrl
+	}
+	return ""
+}
+
+func (x *BuoyMessages) GetIosUrl() string {
+	if x != nil {
+		return x.IosUrl
+	}
+	return ""
+}
+
+func (x *BuoyMessages) GetWeChatUrl() string {
+	if x != nil {
+		return x.WeChatUrl
+	}
+	return ""
+}
+
+var File_message_proto protoreflect.FileDescriptor
+
+var file_message_proto_rawDesc = []byte{
+	0x0a, 0x0d, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12,
+	0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x22, 0xa0, 0x02, 0x0a, 0x0e, 0x53, 0x65, 0x6e,
+	0x64, 0x4d, 0x73, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x24, 0x0a, 0x0d, 0x72,
+	0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x55, 0x73, 0x65, 0x72, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01,
+	0x28, 0x09, 0x52, 0x0d, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x55, 0x73, 0x65, 0x72, 0x49,
+	0x64, 0x12, 0x20, 0x0a, 0x0b, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x4e, 0x61, 0x6d, 0x65,
+	0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x4e,
+	0x61, 0x6d, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x73, 0x65, 0x6e, 0x64, 0x55, 0x73, 0x65, 0x72, 0x49,
+	0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x73, 0x65, 0x6e, 0x64, 0x55, 0x73, 0x65,
+	0x72, 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x73, 0x65, 0x6e, 0x64, 0x4e, 0x61, 0x6d, 0x65, 0x18,
+	0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x73, 0x65, 0x6e, 0x64, 0x4e, 0x61, 0x6d, 0x65, 0x12,
+	0x14, 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05,
+	0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74,
+	0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x12,
+	0x18, 0x0a, 0x07, 0x6d, 0x73, 0x67, 0x54, 0x79, 0x70, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x03,
+	0x52, 0x07, 0x6d, 0x73, 0x67, 0x54, 0x79, 0x70, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6c, 0x69, 0x6e,
+	0x6b, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6c, 0x69, 0x6e, 0x6b, 0x12, 0x16, 0x0a,
+	0x06, 0x63, 0x69, 0x74, 0x65, 0x49, 0x64, 0x18, 0x09, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x63,
+	0x69, 0x74, 0x65, 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x61, 0x70, 0x70, 0x69, 0x64, 0x18, 0x0a,
+	0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x61, 0x70, 0x70, 0x69, 0x64, 0x22, 0x5f, 0x0a, 0x17, 0x43,
+	0x68, 0x61, 0x6e, 0x67, 0x65, 0x52, 0x65, 0x61, 0x64, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52,
+	0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01,
+	0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x72, 0x65, 0x61, 0x64, 0x53, 0x74,
+	0x61, 0x74, 0x75, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x72, 0x65, 0x61, 0x64,
+	0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x61, 0x70, 0x70, 0x69, 0x64, 0x18,
+	0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x61, 0x70, 0x70, 0x69, 0x64, 0x22, 0x3a, 0x0a, 0x08,
+	0x52, 0x65, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x73, 0x67, 0x54,
+	0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x6d, 0x73, 0x67, 0x54, 0x79,
+	0x70, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28,
+	0x03, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x42, 0x0a, 0x1a, 0x44, 0x65, 0x6c, 0x65,
+	0x74, 0x65, 0x53, 0x69, 0x6e, 0x67, 0x6c, 0x65, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52,
+	0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01,
+	0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x61, 0x70, 0x70, 0x69, 0x64, 0x18,
+	0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x61, 0x70, 0x70, 0x69, 0x64, 0x22, 0x44, 0x0a, 0x1c,
+	0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x70, 0x6c, 0x65, 0x4d, 0x65,
+	0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x0e, 0x0a, 0x02,
+	0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x14, 0x0a, 0x05,
+	0x61, 0x70, 0x70, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x61, 0x70, 0x70,
+	0x69, 0x64, 0x22, 0x45, 0x0a, 0x15, 0x47, 0x65, 0x74, 0x55, 0x6e, 0x72, 0x65, 0x61, 0x64, 0x43,
+	0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x75,
+	0x73, 0x65, 0x72, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x75, 0x73, 0x65,
+	0x72, 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x61, 0x70, 0x70, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01,
+	0x28, 0x09, 0x52, 0x05, 0x61, 0x70, 0x70, 0x69, 0x64, 0x22, 0x38, 0x0a, 0x08, 0x52, 0x65, 0x73,
+	0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20,
+	0x01, 0x28, 0x03, 0x52, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x65, 0x73,
+	0x73, 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73,
+	0x61, 0x67, 0x65, 0x22, 0x5c, 0x0a, 0x16, 0x47, 0x65, 0x74, 0x55, 0x6e, 0x72, 0x65, 0x61, 0x64,
+	0x43, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x12, 0x0a,
+	0x04, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x04, 0x63, 0x6f, 0x64,
+	0x65, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01,
+	0x28, 0x09, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x63,
+	0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e,
+	0x74, 0x22, 0xc6, 0x01, 0x0a, 0x0e, 0x46, 0x69, 0x6e, 0x64, 0x55, 0x73, 0x65, 0x72, 0x4d, 0x73,
+	0x67, 0x52, 0x65, 0x71, 0x12, 0x16, 0x0a, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x18, 0x01,
+	0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x12, 0x24, 0x0a, 0x0d,
+	0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x55, 0x73, 0x65, 0x72, 0x49, 0x64, 0x18, 0x02, 0x20,
+	0x01, 0x28, 0x09, 0x52, 0x0d, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x55, 0x73, 0x65, 0x72,
+	0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x61, 0x70, 0x70, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28,
+	0x09, 0x52, 0x05, 0x61, 0x70, 0x70, 0x69, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x6f, 0x66, 0x66, 0x53,
+	0x65, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x6f, 0x66, 0x66, 0x53, 0x65, 0x74,
+	0x12, 0x1a, 0x0a, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x18, 0x05, 0x20, 0x01,
+	0x28, 0x03, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x18, 0x0a, 0x07,
+	0x6d, 0x73, 0x67, 0x54, 0x79, 0x70, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x6d,
+	0x73, 0x67, 0x54, 0x79, 0x70, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x72, 0x65, 0x61, 0x64, 0x18, 0x07,
+	0x20, 0x01, 0x28, 0x03, 0x52, 0x04, 0x72, 0x65, 0x61, 0x64, 0x22, 0xfe, 0x02, 0x0a, 0x08, 0x4d,
+	0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x12, 0x24, 0x0a, 0x0d, 0x72, 0x65, 0x63, 0x65, 0x69,
+	0x76, 0x65, 0x55, 0x73, 0x65, 0x72, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d,
+	0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x55, 0x73, 0x65, 0x72, 0x49, 0x64, 0x12, 0x20, 0x0a,
+	0x0b, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01,
+	0x28, 0x09, 0x52, 0x0b, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12,
+	0x1e, 0x0a, 0x0a, 0x73, 0x65, 0x6e, 0x64, 0x55, 0x73, 0x65, 0x72, 0x49, 0x64, 0x18, 0x03, 0x20,
+	0x01, 0x28, 0x09, 0x52, 0x0a, 0x73, 0x65, 0x6e, 0x64, 0x55, 0x73, 0x65, 0x72, 0x49, 0x64, 0x12,
+	0x1a, 0x0a, 0x08, 0x73, 0x65, 0x6e, 0x64, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28,
+	0x09, 0x52, 0x08, 0x73, 0x65, 0x6e, 0x64, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x74,
+	0x69, 0x74, 0x6c, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c,
+	0x65, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01,
+	0x28, 0x09, 0x52, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x6d,
+	0x73, 0x67, 0x54, 0x79, 0x70, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x6d, 0x73,
+	0x67, 0x54, 0x79, 0x70, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6c, 0x69, 0x6e, 0x6b, 0x18, 0x08, 0x20,
+	0x01, 0x28, 0x09, 0x52, 0x04, 0x6c, 0x69, 0x6e, 0x6b, 0x12, 0x16, 0x0a, 0x06, 0x63, 0x69, 0x74,
+	0x65, 0x49, 0x64, 0x18, 0x09, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x63, 0x69, 0x74, 0x65, 0x49,
+	0x64, 0x12, 0x16, 0x0a, 0x06, 0x69, 0x73, 0x52, 0x65, 0x61, 0x64, 0x18, 0x0a, 0x20, 0x01, 0x28,
+	0x03, 0x52, 0x06, 0x69, 0x73, 0x52, 0x65, 0x61, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x63, 0x72, 0x65,
+	0x61, 0x74, 0x65, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x63,
+	0x72, 0x65, 0x61, 0x74, 0x65, 0x74, 0x69, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x61, 0x70, 0x70,
+	0x69, 0x64, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x61, 0x70, 0x70, 0x69, 0x64, 0x12,
+	0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12,
+	0x1a, 0x0a, 0x08, 0x6d, 0x73, 0x67, 0x4c, 0x6f, 0x67, 0x49, 0x64, 0x18, 0x0e, 0x20, 0x01, 0x28,
+	0x03, 0x52, 0x08, 0x6d, 0x73, 0x67, 0x4c, 0x6f, 0x67, 0x49, 0x64, 0x22, 0x7b, 0x0a, 0x0e, 0x46,
+	0x69, 0x6e, 0x64, 0x55, 0x73, 0x65, 0x72, 0x4d, 0x73, 0x67, 0x52, 0x65, 0x73, 0x12, 0x12, 0x0a,
+	0x04, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x04, 0x63, 0x6f, 0x64,
+	0x65, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01,
+	0x28, 0x09, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x25, 0x0a, 0x04, 0x64,
+	0x61, 0x74, 0x61, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x6d, 0x65, 0x73, 0x73,
+	0x61, 0x67, 0x65, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x52, 0x04, 0x64, 0x61,
+	0x74, 0x61, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28,
+	0x03, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x60, 0x0a, 0x16, 0x47, 0x65, 0x74, 0x43,
+	0x6c, 0x61, 0x73, 0x73, 0x55, 0x6e, 0x72, 0x65, 0x61, 0x64, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x52,
+	0x65, 0x71, 0x12, 0x16, 0x0a, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01,
+	0x28, 0x09, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x73,
+	0x67, 0x54, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x6d, 0x73, 0x67,
+	0x54, 0x79, 0x70, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x61, 0x70, 0x70, 0x69, 0x64, 0x18, 0x03, 0x20,
+	0x01, 0x28, 0x09, 0x52, 0x05, 0x61, 0x70, 0x70, 0x69, 0x64, 0x22, 0x22, 0x0a, 0x10, 0x4d, 0x65,
+	0x73, 0x73, 0x61, 0x67, 0x65, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x52, 0x65, 0x71, 0x12, 0x0e,
+	0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x22, 0x68,
+	0x0a, 0x11, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x52,
+	0x65, 0x73, 0x70, 0x12, 0x12, 0x0a, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28,
+	0x03, 0x52, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61,
+	0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67,
+	0x65, 0x12, 0x25, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32,
+	0x11, 0x2e, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67,
+	0x65, 0x73, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, 0x73, 0x0a, 0x11, 0x47, 0x65, 0x74, 0x4c,
+	0x61, 0x73, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x12, 0x16, 0x0a,
+	0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x75,
+	0x73, 0x65, 0x72, 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x73, 0x67, 0x54, 0x79, 0x70, 0x65,
+	0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x6d, 0x73, 0x67, 0x54, 0x79, 0x70, 0x65, 0x12,
+	0x14, 0x0a, 0x05, 0x61, 0x70, 0x70, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05,
+	0x61, 0x70, 0x70, 0x69, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x69, 0x73, 0x52, 0x65, 0x61, 0x64, 0x18,
+	0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x69, 0x73, 0x52, 0x65, 0x61, 0x64, 0x22, 0x68, 0x0a,
+	0x11, 0x47, 0x65, 0x74, 0x4c, 0x61, 0x73, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52,
+	0x65, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03,
+	0x52, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67,
+	0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65,
+	0x12, 0x25, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11,
+	0x2e, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65,
+	0x73, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, 0x60, 0x0a, 0x16, 0x47, 0x65, 0x74, 0x55, 0x6e,
+	0x72, 0x65, 0x61, 0x64, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65,
+	0x71, 0x12, 0x16, 0x0a, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28,
+	0x09, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x61, 0x70, 0x70,
+	0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x61, 0x70, 0x70, 0x69, 0x64, 0x12,
+	0x18, 0x0a, 0x07, 0x6e, 0x65, 0x65, 0x64, 0x4d, 0x73, 0x67, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08,
+	0x52, 0x07, 0x6e, 0x65, 0x65, 0x64, 0x4d, 0x73, 0x67, 0x22, 0x94, 0x01, 0x0a, 0x16, 0x47, 0x65,
+	0x74, 0x55, 0x6e, 0x72, 0x65, 0x61, 0x64, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x43, 0x6f, 0x75, 0x6e,
+	0x74, 0x52, 0x65, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01,
+	0x28, 0x03, 0x52, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73,
+	0x61, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61,
+	0x67, 0x65, 0x12, 0x25, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b,
+	0x32, 0x11, 0x2e, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x2e, 0x52, 0x65, 0x73, 0x43, 0x6f,
+	0x75, 0x6e, 0x74, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x12, 0x25, 0x0a, 0x04, 0x69, 0x6e, 0x66,
+	0x6f, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67,
+	0x65, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x52, 0x04, 0x69, 0x6e, 0x66, 0x6f,
+	0x22, 0x3d, 0x0a, 0x0d, 0x47, 0x65, 0x74, 0x4d, 0x73, 0x67, 0x54, 0x79, 0x70, 0x65, 0x52, 0x65,
+	0x71, 0x12, 0x16, 0x0a, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28,
+	0x09, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x61, 0x70, 0x70,
+	0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x61, 0x70, 0x70, 0x69, 0x64, 0x22,
+	0x51, 0x0a, 0x0d, 0x47, 0x65, 0x74, 0x4d, 0x73, 0x67, 0x54, 0x79, 0x70, 0x65, 0x52, 0x65, 0x73,
+	0x12, 0x12, 0x0a, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x04,
+	0x63, 0x6f, 0x64, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18,
+	0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x12,
+	0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x03, 0x20, 0x03, 0x28, 0x03, 0x52, 0x04, 0x64, 0x61,
+	0x74, 0x61, 0x22, 0x6c, 0x0a, 0x14, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4d, 0x65, 0x73, 0x73,
+	0x61, 0x67, 0x65, 0x52, 0x65, 0x61, 0x64, 0x52, 0x65, 0x71, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x73,
+	0x67, 0x54, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x6d, 0x73, 0x67,
+	0x54, 0x79, 0x70, 0x65, 0x12, 0x24, 0x0a, 0x0d, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x55,
+	0x73, 0x65, 0x72, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x72, 0x65, 0x63,
+	0x65, 0x69, 0x76, 0x65, 0x55, 0x73, 0x65, 0x72, 0x69, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x61, 0x70,
+	0x70, 0x49, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x61, 0x70, 0x70, 0x49, 0x64,
+	0x22, 0x5d, 0x0a, 0x15, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67,
+	0x65, 0x52, 0x65, 0x61, 0x64, 0x52, 0x65, 0x73, 0x70, 0x12, 0x12, 0x0a, 0x04, 0x63, 0x6f, 0x64,
+	0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x12, 0x18, 0x0a,
+	0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07,
+	0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75,
+	0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x22,
+	0x3a, 0x0a, 0x04, 0x75, 0x73, 0x65, 0x72, 0x12, 0x16, 0x0a, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49,
+	0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x12,
+	0x1a, 0x0a, 0x08, 0x75, 0x73, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28,
+	0x09, 0x52, 0x08, 0x75, 0x73, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0xee, 0x02, 0x0a, 0x12,
+	0x6d, 0x75, 0x6c, 0x74, 0x69, 0x70, 0x6c, 0x65, 0x53, 0x61, 0x76, 0x65, 0x4d, 0x73, 0x67, 0x52,
+	0x65, 0x71, 0x12, 0x18, 0x0a, 0x07, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x73, 0x18, 0x01, 0x20,
+	0x01, 0x28, 0x09, 0x52, 0x07, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x73, 0x12, 0x1c, 0x0a, 0x09,
+	0x75, 0x73, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52,
+	0x09, 0x75, 0x73, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x12, 0x1e, 0x0a, 0x0a, 0x73, 0x65,
+	0x6e, 0x64, 0x55, 0x73, 0x65, 0x72, 0x49, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a,
+	0x73, 0x65, 0x6e, 0x64, 0x55, 0x73, 0x65, 0x72, 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x73, 0x65,
+	0x6e, 0x64, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x73, 0x65,
+	0x6e, 0x64, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18,
+	0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x18, 0x0a, 0x07,
+	0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63,
+	0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x73, 0x67, 0x54, 0x79, 0x70,
+	0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x6d, 0x73, 0x67, 0x54, 0x79, 0x70, 0x65,
+	0x12, 0x12, 0x0a, 0x04, 0x6c, 0x69, 0x6e, 0x6b, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04,
+	0x6c, 0x69, 0x6e, 0x6b, 0x12, 0x16, 0x0a, 0x06, 0x63, 0x69, 0x74, 0x65, 0x49, 0x64, 0x18, 0x09,
+	0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x63, 0x69, 0x74, 0x65, 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05,
+	0x61, 0x70, 0x70, 0x69, 0x64, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x61, 0x70, 0x70,
+	0x69, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x6d, 0x73, 0x67, 0x4c, 0x6f, 0x67, 0x49, 0x64, 0x18, 0x0b,
+	0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x6d, 0x73, 0x67, 0x4c, 0x6f, 0x67, 0x49, 0x64, 0x12, 0x1a,
+	0x0a, 0x08, 0x73, 0x68, 0x6f, 0x77, 0x42, 0x75, 0x6f, 0x79, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x03,
+	0x52, 0x08, 0x73, 0x68, 0x6f, 0x77, 0x42, 0x75, 0x6f, 0x79, 0x12, 0x20, 0x0a, 0x0b, 0x73, 0x68,
+	0x6f, 0x77, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52,
+	0x0b, 0x73, 0x68, 0x6f, 0x77, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x22, 0x5f, 0x0a, 0x13,
+	0x6d, 0x75, 0x6c, 0x74, 0x69, 0x70, 0x6c, 0x65, 0x53, 0x61, 0x76, 0x65, 0x4d, 0x73, 0x67, 0x52,
+	0x65, 0x73, 0x70, 0x12, 0x12, 0x0a, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28,
+	0x03, 0x52, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61,
+	0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67,
+	0x65, 0x12, 0x1a, 0x0a, 0x08, 0x65, 0x72, 0x72, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20,
+	0x01, 0x28, 0x03, 0x52, 0x08, 0x65, 0x72, 0x72, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x5e, 0x0a,
+	0x12, 0x46, 0x69, 0x6e, 0x64, 0x55, 0x73, 0x65, 0x72, 0x42, 0x75, 0x6f, 0x79, 0x4d, 0x73, 0x67,
+	0x52, 0x65, 0x71, 0x12, 0x16, 0x0a, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x18, 0x01, 0x20,
+	0x01, 0x28, 0x09, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x61,
+	0x70, 0x70, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x61, 0x70, 0x70, 0x69,
+	0x64, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x18, 0x03, 0x20,
+	0x01, 0x28, 0x03, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x22, 0x6d, 0x0a,
+	0x12, 0x46, 0x69, 0x6e, 0x64, 0x55, 0x73, 0x65, 0x72, 0x42, 0x75, 0x6f, 0x79, 0x4d, 0x73, 0x67,
+	0x52, 0x65, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28,
+	0x03, 0x52, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61,
+	0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67,
+	0x65, 0x12, 0x29, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32,
+	0x15, 0x2e, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x2e, 0x42, 0x75, 0x6f, 0x79, 0x4d, 0x65,
+	0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, 0xab, 0x01, 0x0a,
+	0x0c, 0x42, 0x75, 0x6f, 0x79, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x12, 0x0e, 0x0a,
+	0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x1f, 0x0a,
+	0x0b, 0x62, 0x75, 0x6f, 0x79, 0x5f, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x18, 0x02, 0x20, 0x01,
+	0x28, 0x09, 0x52, 0x0a, 0x62, 0x75, 0x6f, 0x79, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x12, 0x14,
+	0x0a, 0x05, 0x70, 0x63, 0x55, 0x72, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x70,
+	0x63, 0x55, 0x72, 0x6c, 0x12, 0x1e, 0x0a, 0x0a, 0x61, 0x6e, 0x64, 0x72, 0x6f, 0x69, 0x64, 0x55,
+	0x72, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x61, 0x6e, 0x64, 0x72, 0x6f, 0x69,
+	0x64, 0x55, 0x72, 0x6c, 0x12, 0x16, 0x0a, 0x06, 0x69, 0x6f, 0x73, 0x55, 0x72, 0x6c, 0x18, 0x05,
+	0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x69, 0x6f, 0x73, 0x55, 0x72, 0x6c, 0x12, 0x1c, 0x0a, 0x09,
+	0x77, 0x65, 0x43, 0x68, 0x61, 0x74, 0x55, 0x72, 0x6c, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52,
+	0x09, 0x77, 0x65, 0x43, 0x68, 0x61, 0x74, 0x55, 0x72, 0x6c, 0x32, 0xb8, 0x08, 0x0a, 0x07, 0x4d,
+	0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x4c, 0x0a, 0x0f, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x70,
+	0x6c, 0x65, 0x53, 0x61, 0x76, 0x65, 0x4d, 0x73, 0x67, 0x12, 0x1b, 0x2e, 0x6d, 0x65, 0x73, 0x73,
+	0x61, 0x67, 0x65, 0x2e, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x70, 0x6c, 0x65, 0x53, 0x61, 0x76, 0x65,
+	0x4d, 0x73, 0x67, 0x52, 0x65, 0x71, 0x1a, 0x1c, 0x2e, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65,
+	0x2e, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x70, 0x6c, 0x65, 0x53, 0x61, 0x76, 0x65, 0x4d, 0x73, 0x67,
+	0x52, 0x65, 0x73, 0x70, 0x12, 0x47, 0x0a, 0x10, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x52, 0x65,
+	0x61, 0x64, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x20, 0x2e, 0x6d, 0x65, 0x73, 0x73, 0x61,
+	0x67, 0x65, 0x2e, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x52, 0x65, 0x61, 0x64, 0x53, 0x74, 0x61,
+	0x74, 0x75, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x11, 0x2e, 0x6d, 0x65, 0x73,
+	0x73, 0x61, 0x67, 0x65, 0x2e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x39, 0x0a,
+	0x0b, 0x53, 0x65, 0x6e, 0x64, 0x55, 0x73, 0x65, 0x72, 0x4d, 0x73, 0x67, 0x12, 0x17, 0x2e, 0x6d,
+	0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x2e, 0x53, 0x65, 0x6e, 0x64, 0x4d, 0x73, 0x67, 0x52, 0x65,
+	0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x11, 0x2e, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x2e,
+	0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x4d, 0x0a, 0x13, 0x44, 0x65, 0x6c, 0x65,
+	0x74, 0x65, 0x53, 0x69, 0x6e, 0x67, 0x6c, 0x65, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12,
+	0x23, 0x2e, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65,
+	0x53, 0x69, 0x6e, 0x67, 0x6c, 0x65, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x65, 0x71,
+	0x75, 0x65, 0x73, 0x74, 0x1a, 0x11, 0x2e, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x2e, 0x52,
+	0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x51, 0x0a, 0x15, 0x44, 0x65, 0x6c, 0x65, 0x74,
+	0x65, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x70, 0x6c, 0x65, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65,
+	0x12, 0x25, 0x2e, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74,
+	0x65, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x70, 0x6c, 0x65, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65,
+	0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x11, 0x2e, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67,
+	0x65, 0x2e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x51, 0x0a, 0x0e, 0x47, 0x65,
+	0x74, 0x55, 0x6e, 0x72, 0x65, 0x61, 0x64, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x1e, 0x2e, 0x6d,
+	0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x2e, 0x47, 0x65, 0x74, 0x55, 0x6e, 0x72, 0x65, 0x61, 0x64,
+	0x43, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1f, 0x2e, 0x6d,
+	0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x2e, 0x47, 0x65, 0x74, 0x55, 0x6e, 0x72, 0x65, 0x61, 0x64,
+	0x43, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3f, 0x0a,
+	0x0b, 0x46, 0x69, 0x6e, 0x64, 0x55, 0x73, 0x65, 0x72, 0x4d, 0x73, 0x67, 0x12, 0x17, 0x2e, 0x6d,
+	0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x2e, 0x46, 0x69, 0x6e, 0x64, 0x55, 0x73, 0x65, 0x72, 0x4d,
+	0x73, 0x67, 0x52, 0x65, 0x71, 0x1a, 0x17, 0x2e, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x2e,
+	0x46, 0x69, 0x6e, 0x64, 0x55, 0x73, 0x65, 0x72, 0x4d, 0x73, 0x67, 0x52, 0x65, 0x73, 0x12, 0x57,
+	0x0a, 0x13, 0x47, 0x65, 0x74, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x55, 0x6e, 0x72, 0x65, 0x61, 0x64,
+	0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x1f, 0x2e, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x2e,
+	0x47, 0x65, 0x74, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x55, 0x6e, 0x72, 0x65, 0x61, 0x64, 0x43, 0x6f,
+	0x75, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x1a, 0x1f, 0x2e, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65,
+	0x2e, 0x47, 0x65, 0x74, 0x55, 0x6e, 0x72, 0x65, 0x61, 0x64, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x52,
+	0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x48, 0x0a, 0x0e, 0x47, 0x65, 0x74, 0x4c, 0x61,
+	0x73, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x1a, 0x2e, 0x6d, 0x65, 0x73, 0x73,
+	0x61, 0x67, 0x65, 0x2e, 0x47, 0x65, 0x74, 0x4c, 0x61, 0x73, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61,
+	0x67, 0x65, 0x52, 0x65, 0x71, 0x1a, 0x1a, 0x2e, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x2e,
+	0x47, 0x65, 0x74, 0x4c, 0x61, 0x73, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x65,
+	0x73, 0x12, 0x4a, 0x0a, 0x11, 0x46, 0x69, 0x6e, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65,
+	0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x12, 0x19, 0x2e, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65,
+	0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x52, 0x65,
+	0x71, 0x1a, 0x1a, 0x2e, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x2e, 0x4d, 0x65, 0x73, 0x73,
+	0x61, 0x67, 0x65, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x12, 0x57, 0x0a,
+	0x13, 0x47, 0x65, 0x74, 0x55, 0x6e, 0x72, 0x65, 0x61, 0x64, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x43,
+	0x6f, 0x75, 0x6e, 0x74, 0x12, 0x1f, 0x2e, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x2e, 0x47,
+	0x65, 0x74, 0x55, 0x6e, 0x72, 0x65, 0x61, 0x64, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x43, 0x6f, 0x75,
+	0x6e, 0x74, 0x52, 0x65, 0x71, 0x1a, 0x1f, 0x2e, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x2e,
+	0x47, 0x65, 0x74, 0x55, 0x6e, 0x72, 0x65, 0x61, 0x64, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x43, 0x6f,
+	0x75, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x12, 0x3c, 0x0a, 0x0a, 0x47, 0x65, 0x74, 0x4d, 0x73, 0x67,
+	0x54, 0x79, 0x70, 0x65, 0x12, 0x16, 0x2e, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x2e, 0x47,
+	0x65, 0x74, 0x4d, 0x73, 0x67, 0x54, 0x79, 0x70, 0x65, 0x52, 0x65, 0x71, 0x1a, 0x16, 0x2e, 0x6d,
+	0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x2e, 0x47, 0x65, 0x74, 0x4d, 0x73, 0x67, 0x54, 0x79, 0x70,
+	0x65, 0x52, 0x65, 0x73, 0x12, 0x52, 0x0a, 0x11, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4d, 0x65,
+	0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x65, 0x61, 0x64, 0x12, 0x1d, 0x2e, 0x6d, 0x65, 0x73, 0x73,
+	0x61, 0x67, 0x65, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67,
+	0x65, 0x52, 0x65, 0x61, 0x64, 0x52, 0x65, 0x71, 0x1a, 0x1e, 0x2e, 0x6d, 0x65, 0x73, 0x73, 0x61,
+	0x67, 0x65, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65,
+	0x52, 0x65, 0x61, 0x64, 0x52, 0x65, 0x73, 0x70, 0x12, 0x4b, 0x0a, 0x0f, 0x46, 0x69, 0x6e, 0x64,
+	0x55, 0x73, 0x65, 0x72, 0x42, 0x75, 0x6f, 0x79, 0x4d, 0x73, 0x67, 0x12, 0x1b, 0x2e, 0x6d, 0x65,
+	0x73, 0x73, 0x61, 0x67, 0x65, 0x2e, 0x46, 0x69, 0x6e, 0x64, 0x55, 0x73, 0x65, 0x72, 0x42, 0x75,
+	0x6f, 0x79, 0x4d, 0x73, 0x67, 0x52, 0x65, 0x71, 0x1a, 0x1b, 0x2e, 0x6d, 0x65, 0x73, 0x73, 0x61,
+	0x67, 0x65, 0x2e, 0x46, 0x69, 0x6e, 0x64, 0x55, 0x73, 0x65, 0x72, 0x42, 0x75, 0x6f, 0x79, 0x4d,
+	0x73, 0x67, 0x52, 0x65, 0x73, 0x42, 0x0a, 0x5a, 0x08, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65,
+	0x2f, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
+}
+
+var (
+	file_message_proto_rawDescOnce sync.Once
+	file_message_proto_rawDescData = file_message_proto_rawDesc
+)
+
+func file_message_proto_rawDescGZIP() []byte {
+	file_message_proto_rawDescOnce.Do(func() {
+		file_message_proto_rawDescData = protoimpl.X.CompressGZIP(file_message_proto_rawDescData)
+	})
+	return file_message_proto_rawDescData
+}
+
+var file_message_proto_msgTypes = make([]protoimpl.MessageInfo, 28)
+var file_message_proto_goTypes = []interface{}{
+	(*SendMsgRequest)(nil),               // 0: message.SendMsgRequest
+	(*ChangeReadStatusRequest)(nil),      // 1: message.ChangeReadStatusRequest
+	(*ResCount)(nil),                     // 2: message.ResCount
+	(*DeleteSingleMessageRequest)(nil),   // 3: message.DeleteSingleMessageRequest
+	(*DeleteMultipleMessageRequest)(nil), // 4: message.DeleteMultipleMessageRequest
+	(*GetUnreadCountRequest)(nil),        // 5: message.GetUnreadCountRequest
+	(*Response)(nil),                     // 6: message.Response
+	(*GetUnreadCountResponse)(nil),       // 7: message.GetUnreadCountResponse
+	(*FindUserMsgReq)(nil),               // 8: message.FindUserMsgReq
+	(*Messages)(nil),                     // 9: message.Messages
+	(*FindUserMsgRes)(nil),               // 10: message.FindUserMsgRes
+	(*GetClassUnreadCountReq)(nil),       // 11: message.GetClassUnreadCountReq
+	(*MessageDetailReq)(nil),             // 12: message.MessageDetailReq
+	(*MessageDetailResp)(nil),            // 13: message.MessageDetailResp
+	(*GetLastMessageReq)(nil),            // 14: message.GetLastMessageReq
+	(*GetLastMessageRes)(nil),            // 15: message.GetLastMessageRes
+	(*GetUnreadClassCountReq)(nil),       // 16: message.GetUnreadClassCountReq
+	(*GetUnreadClassCountRes)(nil),       // 17: message.GetUnreadClassCountRes
+	(*GetMsgTypeReq)(nil),                // 18: message.GetMsgTypeReq
+	(*GetMsgTypeRes)(nil),                // 19: message.GetMsgTypeRes
+	(*UpdateMessageReadReq)(nil),         // 20: message.UpdateMessageReadReq
+	(*UpdateMessageReadResp)(nil),        // 21: message.UpdateMessageReadResp
+	(*User)(nil),                         // 22: message.user
+	(*MultipleSaveMsgReq)(nil),           // 23: message.multipleSaveMsgReq
+	(*MultipleSaveMsgResp)(nil),          // 24: message.multipleSaveMsgResp
+	(*FindUserBuoyMsgReq)(nil),           // 25: message.FindUserBuoyMsgReq
+	(*FindUserBuoyMsgRes)(nil),           // 26: message.FindUserBuoyMsgRes
+	(*BuoyMessages)(nil),                 // 27: message.BuoyMessages
+}
+var file_message_proto_depIdxs = []int32{
+	9,  // 0: message.FindUserMsgRes.data:type_name -> message.Messages
+	9,  // 1: message.MessageDetailResp.data:type_name -> message.Messages
+	9,  // 2: message.GetLastMessageRes.data:type_name -> message.Messages
+	2,  // 3: message.GetUnreadClassCountRes.data:type_name -> message.ResCount
+	9,  // 4: message.GetUnreadClassCountRes.info:type_name -> message.Messages
+	27, // 5: message.FindUserBuoyMsgRes.data:type_name -> message.BuoyMessages
+	23, // 6: message.Message.multipleSaveMsg:input_type -> message.multipleSaveMsgReq
+	1,  // 7: message.Message.ChangeReadStatus:input_type -> message.ChangeReadStatusRequest
+	0,  // 8: message.Message.SendUserMsg:input_type -> message.SendMsgRequest
+	3,  // 9: message.Message.DeleteSingleMessage:input_type -> message.DeleteSingleMessageRequest
+	4,  // 10: message.Message.DeleteMultipleMessage:input_type -> message.DeleteMultipleMessageRequest
+	5,  // 11: message.Message.GetUnreadCount:input_type -> message.GetUnreadCountRequest
+	8,  // 12: message.Message.FindUserMsg:input_type -> message.FindUserMsgReq
+	11, // 13: message.Message.GetClassUnreadCount:input_type -> message.GetClassUnreadCountReq
+	14, // 14: message.Message.GetLastMessage:input_type -> message.GetLastMessageReq
+	12, // 15: message.Message.FindMessageDetail:input_type -> message.MessageDetailReq
+	16, // 16: message.Message.GetUnreadClassCount:input_type -> message.GetUnreadClassCountReq
+	18, // 17: message.Message.GetMsgType:input_type -> message.GetMsgTypeReq
+	20, // 18: message.Message.UpdateMessageRead:input_type -> message.UpdateMessageReadReq
+	25, // 19: message.Message.FindUserBuoyMsg:input_type -> message.FindUserBuoyMsgReq
+	24, // 20: message.Message.multipleSaveMsg:output_type -> message.multipleSaveMsgResp
+	6,  // 21: message.Message.ChangeReadStatus:output_type -> message.Response
+	6,  // 22: message.Message.SendUserMsg:output_type -> message.Response
+	6,  // 23: message.Message.DeleteSingleMessage:output_type -> message.Response
+	6,  // 24: message.Message.DeleteMultipleMessage:output_type -> message.Response
+	7,  // 25: message.Message.GetUnreadCount:output_type -> message.GetUnreadCountResponse
+	10, // 26: message.Message.FindUserMsg:output_type -> message.FindUserMsgRes
+	7,  // 27: message.Message.GetClassUnreadCount:output_type -> message.GetUnreadCountResponse
+	15, // 28: message.Message.GetLastMessage:output_type -> message.GetLastMessageRes
+	13, // 29: message.Message.FindMessageDetail:output_type -> message.MessageDetailResp
+	17, // 30: message.Message.GetUnreadClassCount:output_type -> message.GetUnreadClassCountRes
+	19, // 31: message.Message.GetMsgType:output_type -> message.GetMsgTypeRes
+	21, // 32: message.Message.UpdateMessageRead:output_type -> message.UpdateMessageReadResp
+	26, // 33: message.Message.FindUserBuoyMsg:output_type -> message.FindUserBuoyMsgRes
+	20, // [20:34] is the sub-list for method output_type
+	6,  // [6:20] is the sub-list for method input_type
+	6,  // [6:6] is the sub-list for extension type_name
+	6,  // [6:6] is the sub-list for extension extendee
+	0,  // [0:6] is the sub-list for field type_name
+}
+
+func init() { file_message_proto_init() }
+func file_message_proto_init() {
+	if File_message_proto != nil {
+		return
+	}
+	if !protoimpl.UnsafeEnabled {
+		file_message_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*SendMsgRequest); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_message_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*ChangeReadStatusRequest); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_message_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*ResCount); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_message_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*DeleteSingleMessageRequest); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_message_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*DeleteMultipleMessageRequest); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_message_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*GetUnreadCountRequest); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_message_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*Response); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_message_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*GetUnreadCountResponse); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_message_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*FindUserMsgReq); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_message_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*Messages); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_message_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*FindUserMsgRes); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_message_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*GetClassUnreadCountReq); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_message_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*MessageDetailReq); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_message_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*MessageDetailResp); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_message_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*GetLastMessageReq); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_message_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*GetLastMessageRes); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_message_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*GetUnreadClassCountReq); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_message_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*GetUnreadClassCountRes); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_message_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*GetMsgTypeReq); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_message_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*GetMsgTypeRes); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_message_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*UpdateMessageReadReq); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_message_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*UpdateMessageReadResp); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_message_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*User); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_message_proto_msgTypes[23].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*MultipleSaveMsgReq); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_message_proto_msgTypes[24].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*MultipleSaveMsgResp); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_message_proto_msgTypes[25].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*FindUserBuoyMsgReq); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_message_proto_msgTypes[26].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*FindUserBuoyMsgRes); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_message_proto_msgTypes[27].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*BuoyMessages); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+	}
+	type x struct{}
+	out := protoimpl.TypeBuilder{
+		File: protoimpl.DescBuilder{
+			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
+			RawDescriptor: file_message_proto_rawDesc,
+			NumEnums:      0,
+			NumMessages:   28,
+			NumExtensions: 0,
+			NumServices:   1,
+		},
+		GoTypes:           file_message_proto_goTypes,
+		DependencyIndexes: file_message_proto_depIdxs,
+		MessageInfos:      file_message_proto_msgTypes,
+	}.Build()
+	File_message_proto = out.File
+	file_message_proto_rawDesc = nil
+	file_message_proto_goTypes = nil
+	file_message_proto_depIdxs = nil
+}

+ 601 - 0
rpc/type/message/message_grpc.pb.go

@@ -0,0 +1,601 @@
+// Code generated by protoc-gen-go-grpc. DO NOT EDIT.
+// versions:
+// - protoc-gen-go-grpc v1.2.0
+// - protoc             v3.19.4
+// source: message.proto
+
+package message
+
+import (
+	context "context"
+	grpc "google.golang.org/grpc"
+	codes "google.golang.org/grpc/codes"
+	status "google.golang.org/grpc/status"
+)
+
+// This is a compile-time assertion to ensure that this generated file
+// is compatible with the grpc package it is being compiled against.
+// Requires gRPC-Go v1.32.0 or later.
+const _ = grpc.SupportPackageIsVersion7
+
+// MessageClient is the client API for Message service.
+//
+// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream.
+type MessageClient interface {
+	//批量保存消息
+	MultipleSaveMsg(ctx context.Context, in *MultipleSaveMsgReq, opts ...grpc.CallOption) (*MultipleSaveMsgResp, error)
+	// 修改消息阅读状态
+	ChangeReadStatus(ctx context.Context, in *ChangeReadStatusRequest, opts ...grpc.CallOption) (*Response, error)
+	//指定用户发消息
+	SendUserMsg(ctx context.Context, in *SendMsgRequest, opts ...grpc.CallOption) (*Response, error)
+	// 删除单一消息
+	DeleteSingleMessage(ctx context.Context, in *DeleteSingleMessageRequest, opts ...grpc.CallOption) (*Response, error)
+	// 删除多条消息
+	DeleteMultipleMessage(ctx context.Context, in *DeleteMultipleMessageRequest, opts ...grpc.CallOption) (*Response, error)
+	//  查询指定用户未读消息合计
+	GetUnreadCount(ctx context.Context, in *GetUnreadCountRequest, opts ...grpc.CallOption) (*GetUnreadCountResponse, error)
+	//  查询指定用户的历史消息记录
+	FindUserMsg(ctx context.Context, in *FindUserMsgReq, opts ...grpc.CallOption) (*FindUserMsgRes, error)
+	//  查询指定用户指定分类的未读消息合计
+	GetClassUnreadCount(ctx context.Context, in *GetClassUnreadCountReq, opts ...grpc.CallOption) (*GetUnreadCountResponse, error)
+	//  获取指定用户指定分类的最新一条消息
+	GetLastMessage(ctx context.Context, in *GetLastMessageReq, opts ...grpc.CallOption) (*GetLastMessageRes, error)
+	//查看详细详情
+	FindMessageDetail(ctx context.Context, in *MessageDetailReq, opts ...grpc.CallOption) (*MessageDetailResp, error)
+	//  获取指定用户的分类及未读消息数量
+	GetUnreadClassCount(ctx context.Context, in *GetUnreadClassCountReq, opts ...grpc.CallOption) (*GetUnreadClassCountRes, error)
+	//  获取指定用户收到消息的分类
+	GetMsgType(ctx context.Context, in *GetMsgTypeReq, opts ...grpc.CallOption) (*GetMsgTypeRes, error)
+	//修改用户指定分类下的消息已读未读
+	UpdateMessageRead(ctx context.Context, in *UpdateMessageReadReq, opts ...grpc.CallOption) (*UpdateMessageReadResp, error)
+	//  查询指定用户的浮标消息
+	FindUserBuoyMsg(ctx context.Context, in *FindUserBuoyMsgReq, opts ...grpc.CallOption) (*FindUserBuoyMsgRes, error)
+}
+
+type messageClient struct {
+	cc grpc.ClientConnInterface
+}
+
+func NewMessageClient(cc grpc.ClientConnInterface) MessageClient {
+	return &messageClient{cc}
+}
+
+func (c *messageClient) MultipleSaveMsg(ctx context.Context, in *MultipleSaveMsgReq, opts ...grpc.CallOption) (*MultipleSaveMsgResp, error) {
+	out := new(MultipleSaveMsgResp)
+	err := c.cc.Invoke(ctx, "/message.Message/multipleSaveMsg", in, out, opts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *messageClient) ChangeReadStatus(ctx context.Context, in *ChangeReadStatusRequest, opts ...grpc.CallOption) (*Response, error) {
+	out := new(Response)
+	err := c.cc.Invoke(ctx, "/message.Message/ChangeReadStatus", in, out, opts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *messageClient) SendUserMsg(ctx context.Context, in *SendMsgRequest, opts ...grpc.CallOption) (*Response, error) {
+	out := new(Response)
+	err := c.cc.Invoke(ctx, "/message.Message/SendUserMsg", in, out, opts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *messageClient) DeleteSingleMessage(ctx context.Context, in *DeleteSingleMessageRequest, opts ...grpc.CallOption) (*Response, error) {
+	out := new(Response)
+	err := c.cc.Invoke(ctx, "/message.Message/DeleteSingleMessage", in, out, opts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *messageClient) DeleteMultipleMessage(ctx context.Context, in *DeleteMultipleMessageRequest, opts ...grpc.CallOption) (*Response, error) {
+	out := new(Response)
+	err := c.cc.Invoke(ctx, "/message.Message/DeleteMultipleMessage", in, out, opts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *messageClient) GetUnreadCount(ctx context.Context, in *GetUnreadCountRequest, opts ...grpc.CallOption) (*GetUnreadCountResponse, error) {
+	out := new(GetUnreadCountResponse)
+	err := c.cc.Invoke(ctx, "/message.Message/GetUnreadCount", in, out, opts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *messageClient) FindUserMsg(ctx context.Context, in *FindUserMsgReq, opts ...grpc.CallOption) (*FindUserMsgRes, error) {
+	out := new(FindUserMsgRes)
+	err := c.cc.Invoke(ctx, "/message.Message/FindUserMsg", in, out, opts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *messageClient) GetClassUnreadCount(ctx context.Context, in *GetClassUnreadCountReq, opts ...grpc.CallOption) (*GetUnreadCountResponse, error) {
+	out := new(GetUnreadCountResponse)
+	err := c.cc.Invoke(ctx, "/message.Message/GetClassUnreadCount", in, out, opts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *messageClient) GetLastMessage(ctx context.Context, in *GetLastMessageReq, opts ...grpc.CallOption) (*GetLastMessageRes, error) {
+	out := new(GetLastMessageRes)
+	err := c.cc.Invoke(ctx, "/message.Message/GetLastMessage", in, out, opts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *messageClient) FindMessageDetail(ctx context.Context, in *MessageDetailReq, opts ...grpc.CallOption) (*MessageDetailResp, error) {
+	out := new(MessageDetailResp)
+	err := c.cc.Invoke(ctx, "/message.Message/FindMessageDetail", in, out, opts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *messageClient) GetUnreadClassCount(ctx context.Context, in *GetUnreadClassCountReq, opts ...grpc.CallOption) (*GetUnreadClassCountRes, error) {
+	out := new(GetUnreadClassCountRes)
+	err := c.cc.Invoke(ctx, "/message.Message/GetUnreadClassCount", in, out, opts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *messageClient) GetMsgType(ctx context.Context, in *GetMsgTypeReq, opts ...grpc.CallOption) (*GetMsgTypeRes, error) {
+	out := new(GetMsgTypeRes)
+	err := c.cc.Invoke(ctx, "/message.Message/GetMsgType", in, out, opts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *messageClient) UpdateMessageRead(ctx context.Context, in *UpdateMessageReadReq, opts ...grpc.CallOption) (*UpdateMessageReadResp, error) {
+	out := new(UpdateMessageReadResp)
+	err := c.cc.Invoke(ctx, "/message.Message/UpdateMessageRead", in, out, opts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *messageClient) FindUserBuoyMsg(ctx context.Context, in *FindUserBuoyMsgReq, opts ...grpc.CallOption) (*FindUserBuoyMsgRes, error) {
+	out := new(FindUserBuoyMsgRes)
+	err := c.cc.Invoke(ctx, "/message.Message/FindUserBuoyMsg", in, out, opts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+// MessageServer is the server API for Message service.
+// All implementations must embed UnimplementedMessageServer
+// for forward compatibility
+type MessageServer interface {
+	//批量保存消息
+	MultipleSaveMsg(context.Context, *MultipleSaveMsgReq) (*MultipleSaveMsgResp, error)
+	// 修改消息阅读状态
+	ChangeReadStatus(context.Context, *ChangeReadStatusRequest) (*Response, error)
+	//指定用户发消息
+	SendUserMsg(context.Context, *SendMsgRequest) (*Response, error)
+	// 删除单一消息
+	DeleteSingleMessage(context.Context, *DeleteSingleMessageRequest) (*Response, error)
+	// 删除多条消息
+	DeleteMultipleMessage(context.Context, *DeleteMultipleMessageRequest) (*Response, error)
+	//  查询指定用户未读消息合计
+	GetUnreadCount(context.Context, *GetUnreadCountRequest) (*GetUnreadCountResponse, error)
+	//  查询指定用户的历史消息记录
+	FindUserMsg(context.Context, *FindUserMsgReq) (*FindUserMsgRes, error)
+	//  查询指定用户指定分类的未读消息合计
+	GetClassUnreadCount(context.Context, *GetClassUnreadCountReq) (*GetUnreadCountResponse, error)
+	//  获取指定用户指定分类的最新一条消息
+	GetLastMessage(context.Context, *GetLastMessageReq) (*GetLastMessageRes, error)
+	//查看详细详情
+	FindMessageDetail(context.Context, *MessageDetailReq) (*MessageDetailResp, error)
+	//  获取指定用户的分类及未读消息数量
+	GetUnreadClassCount(context.Context, *GetUnreadClassCountReq) (*GetUnreadClassCountRes, error)
+	//  获取指定用户收到消息的分类
+	GetMsgType(context.Context, *GetMsgTypeReq) (*GetMsgTypeRes, error)
+	//修改用户指定分类下的消息已读未读
+	UpdateMessageRead(context.Context, *UpdateMessageReadReq) (*UpdateMessageReadResp, error)
+	//  查询指定用户的浮标消息
+	FindUserBuoyMsg(context.Context, *FindUserBuoyMsgReq) (*FindUserBuoyMsgRes, error)
+	mustEmbedUnimplementedMessageServer()
+}
+
+// UnimplementedMessageServer must be embedded to have forward compatible implementations.
+type UnimplementedMessageServer struct {
+}
+
+func (UnimplementedMessageServer) MultipleSaveMsg(context.Context, *MultipleSaveMsgReq) (*MultipleSaveMsgResp, error) {
+	return nil, status.Errorf(codes.Unimplemented, "method MultipleSaveMsg not implemented")
+}
+func (UnimplementedMessageServer) ChangeReadStatus(context.Context, *ChangeReadStatusRequest) (*Response, error) {
+	return nil, status.Errorf(codes.Unimplemented, "method ChangeReadStatus not implemented")
+}
+func (UnimplementedMessageServer) SendUserMsg(context.Context, *SendMsgRequest) (*Response, error) {
+	return nil, status.Errorf(codes.Unimplemented, "method SendUserMsg not implemented")
+}
+func (UnimplementedMessageServer) DeleteSingleMessage(context.Context, *DeleteSingleMessageRequest) (*Response, error) {
+	return nil, status.Errorf(codes.Unimplemented, "method DeleteSingleMessage not implemented")
+}
+func (UnimplementedMessageServer) DeleteMultipleMessage(context.Context, *DeleteMultipleMessageRequest) (*Response, error) {
+	return nil, status.Errorf(codes.Unimplemented, "method DeleteMultipleMessage not implemented")
+}
+func (UnimplementedMessageServer) GetUnreadCount(context.Context, *GetUnreadCountRequest) (*GetUnreadCountResponse, error) {
+	return nil, status.Errorf(codes.Unimplemented, "method GetUnreadCount not implemented")
+}
+func (UnimplementedMessageServer) FindUserMsg(context.Context, *FindUserMsgReq) (*FindUserMsgRes, error) {
+	return nil, status.Errorf(codes.Unimplemented, "method FindUserMsg not implemented")
+}
+func (UnimplementedMessageServer) GetClassUnreadCount(context.Context, *GetClassUnreadCountReq) (*GetUnreadCountResponse, error) {
+	return nil, status.Errorf(codes.Unimplemented, "method GetClassUnreadCount not implemented")
+}
+func (UnimplementedMessageServer) GetLastMessage(context.Context, *GetLastMessageReq) (*GetLastMessageRes, error) {
+	return nil, status.Errorf(codes.Unimplemented, "method GetLastMessage not implemented")
+}
+func (UnimplementedMessageServer) FindMessageDetail(context.Context, *MessageDetailReq) (*MessageDetailResp, error) {
+	return nil, status.Errorf(codes.Unimplemented, "method FindMessageDetail not implemented")
+}
+func (UnimplementedMessageServer) GetUnreadClassCount(context.Context, *GetUnreadClassCountReq) (*GetUnreadClassCountRes, error) {
+	return nil, status.Errorf(codes.Unimplemented, "method GetUnreadClassCount not implemented")
+}
+func (UnimplementedMessageServer) GetMsgType(context.Context, *GetMsgTypeReq) (*GetMsgTypeRes, error) {
+	return nil, status.Errorf(codes.Unimplemented, "method GetMsgType not implemented")
+}
+func (UnimplementedMessageServer) UpdateMessageRead(context.Context, *UpdateMessageReadReq) (*UpdateMessageReadResp, error) {
+	return nil, status.Errorf(codes.Unimplemented, "method UpdateMessageRead not implemented")
+}
+func (UnimplementedMessageServer) FindUserBuoyMsg(context.Context, *FindUserBuoyMsgReq) (*FindUserBuoyMsgRes, error) {
+	return nil, status.Errorf(codes.Unimplemented, "method FindUserBuoyMsg not implemented")
+}
+func (UnimplementedMessageServer) mustEmbedUnimplementedMessageServer() {}
+
+// UnsafeMessageServer may be embedded to opt out of forward compatibility for this service.
+// Use of this interface is not recommended, as added methods to MessageServer will
+// result in compilation errors.
+type UnsafeMessageServer interface {
+	mustEmbedUnimplementedMessageServer()
+}
+
+func RegisterMessageServer(s grpc.ServiceRegistrar, srv MessageServer) {
+	s.RegisterService(&Message_ServiceDesc, srv)
+}
+
+func _Message_MultipleSaveMsg_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(MultipleSaveMsgReq)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(MessageServer).MultipleSaveMsg(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: "/message.Message/multipleSaveMsg",
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(MessageServer).MultipleSaveMsg(ctx, req.(*MultipleSaveMsgReq))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _Message_ChangeReadStatus_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(ChangeReadStatusRequest)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(MessageServer).ChangeReadStatus(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: "/message.Message/ChangeReadStatus",
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(MessageServer).ChangeReadStatus(ctx, req.(*ChangeReadStatusRequest))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _Message_SendUserMsg_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(SendMsgRequest)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(MessageServer).SendUserMsg(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: "/message.Message/SendUserMsg",
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(MessageServer).SendUserMsg(ctx, req.(*SendMsgRequest))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _Message_DeleteSingleMessage_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(DeleteSingleMessageRequest)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(MessageServer).DeleteSingleMessage(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: "/message.Message/DeleteSingleMessage",
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(MessageServer).DeleteSingleMessage(ctx, req.(*DeleteSingleMessageRequest))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _Message_DeleteMultipleMessage_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(DeleteMultipleMessageRequest)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(MessageServer).DeleteMultipleMessage(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: "/message.Message/DeleteMultipleMessage",
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(MessageServer).DeleteMultipleMessage(ctx, req.(*DeleteMultipleMessageRequest))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _Message_GetUnreadCount_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(GetUnreadCountRequest)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(MessageServer).GetUnreadCount(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: "/message.Message/GetUnreadCount",
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(MessageServer).GetUnreadCount(ctx, req.(*GetUnreadCountRequest))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _Message_FindUserMsg_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(FindUserMsgReq)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(MessageServer).FindUserMsg(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: "/message.Message/FindUserMsg",
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(MessageServer).FindUserMsg(ctx, req.(*FindUserMsgReq))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _Message_GetClassUnreadCount_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(GetClassUnreadCountReq)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(MessageServer).GetClassUnreadCount(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: "/message.Message/GetClassUnreadCount",
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(MessageServer).GetClassUnreadCount(ctx, req.(*GetClassUnreadCountReq))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _Message_GetLastMessage_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(GetLastMessageReq)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(MessageServer).GetLastMessage(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: "/message.Message/GetLastMessage",
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(MessageServer).GetLastMessage(ctx, req.(*GetLastMessageReq))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _Message_FindMessageDetail_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(MessageDetailReq)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(MessageServer).FindMessageDetail(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: "/message.Message/FindMessageDetail",
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(MessageServer).FindMessageDetail(ctx, req.(*MessageDetailReq))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _Message_GetUnreadClassCount_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(GetUnreadClassCountReq)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(MessageServer).GetUnreadClassCount(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: "/message.Message/GetUnreadClassCount",
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(MessageServer).GetUnreadClassCount(ctx, req.(*GetUnreadClassCountReq))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _Message_GetMsgType_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(GetMsgTypeReq)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(MessageServer).GetMsgType(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: "/message.Message/GetMsgType",
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(MessageServer).GetMsgType(ctx, req.(*GetMsgTypeReq))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _Message_UpdateMessageRead_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(UpdateMessageReadReq)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(MessageServer).UpdateMessageRead(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: "/message.Message/UpdateMessageRead",
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(MessageServer).UpdateMessageRead(ctx, req.(*UpdateMessageReadReq))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _Message_FindUserBuoyMsg_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(FindUserBuoyMsgReq)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(MessageServer).FindUserBuoyMsg(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: "/message.Message/FindUserBuoyMsg",
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(MessageServer).FindUserBuoyMsg(ctx, req.(*FindUserBuoyMsgReq))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+// Message_ServiceDesc is the grpc.ServiceDesc for Message service.
+// It's only intended for direct use with grpc.RegisterService,
+// and not to be introspected or modified (even as a copy)
+var Message_ServiceDesc = grpc.ServiceDesc{
+	ServiceName: "message.Message",
+	HandlerType: (*MessageServer)(nil),
+	Methods: []grpc.MethodDesc{
+		{
+			MethodName: "multipleSaveMsg",
+			Handler:    _Message_MultipleSaveMsg_Handler,
+		},
+		{
+			MethodName: "ChangeReadStatus",
+			Handler:    _Message_ChangeReadStatus_Handler,
+		},
+		{
+			MethodName: "SendUserMsg",
+			Handler:    _Message_SendUserMsg_Handler,
+		},
+		{
+			MethodName: "DeleteSingleMessage",
+			Handler:    _Message_DeleteSingleMessage_Handler,
+		},
+		{
+			MethodName: "DeleteMultipleMessage",
+			Handler:    _Message_DeleteMultipleMessage_Handler,
+		},
+		{
+			MethodName: "GetUnreadCount",
+			Handler:    _Message_GetUnreadCount_Handler,
+		},
+		{
+			MethodName: "FindUserMsg",
+			Handler:    _Message_FindUserMsg_Handler,
+		},
+		{
+			MethodName: "GetClassUnreadCount",
+			Handler:    _Message_GetClassUnreadCount_Handler,
+		},
+		{
+			MethodName: "GetLastMessage",
+			Handler:    _Message_GetLastMessage_Handler,
+		},
+		{
+			MethodName: "FindMessageDetail",
+			Handler:    _Message_FindMessageDetail_Handler,
+		},
+		{
+			MethodName: "GetUnreadClassCount",
+			Handler:    _Message_GetUnreadClassCount_Handler,
+		},
+		{
+			MethodName: "GetMsgType",
+			Handler:    _Message_GetMsgType_Handler,
+		},
+		{
+			MethodName: "UpdateMessageRead",
+			Handler:    _Message_UpdateMessageRead_Handler,
+		},
+		{
+			MethodName: "FindUserBuoyMsg",
+			Handler:    _Message_FindUserBuoyMsg_Handler,
+		},
+	},
+	Streams:  []grpc.StreamDesc{},
+	Metadata: "message.proto",
+}

+ 31 - 1
service/getBuoyMsg.go

@@ -2,10 +2,11 @@ package service
 
 import (
 	"app.yhyue.com/moapp/MessageCenter/entity"
-	"app.yhyue.com/moapp/MessageCenter/rpc/message"
+	"app.yhyue.com/moapp/MessageCenter/rpc/type/message"
 	"app.yhyue.com/moapp/MessageCenter/util"
 	"fmt"
 	"strconv"
+	"strings"
 )
 
 func FindUserBuoyMsg(this *message.FindUserBuoyMsgReq) *message.FindUserBuoyMsgRes {
@@ -17,9 +18,16 @@ func FindUserBuoyMsg(this *message.FindUserBuoyMsgReq) *message.FindUserBuoyMsgR
 		for _, v := range *res {
 			_id := util.Int64All(v["id"])
 			id := strconv.FormatInt(_id, 10)
+			links2 := util.ObjToString((v["link"]))
+			link2, androidUrl2, iosUrl2, weChatUrl2 := LinkSplit(links2)
+
 			data.Data = append(data.Data, &message.BuoyMessages{
 				Id:         id,
 				BuoyDetail: util.ObjToString(v["show_content"]),
+				PcUrl:      link2,
+				AndroidUrl: androidUrl2,
+				IosUrl:     iosUrl2,
+				WeChatUrl:  weChatUrl2,
 			})
 		}
 	}
@@ -32,3 +40,25 @@ func FindUserBuoyMsg(this *message.FindUserBuoyMsgReq) *message.FindUserBuoyMsgR
 	}
 	return &data
 }
+func LinkSplit(url string) (link, androidUrl, iosUrl, weChatUrl string) {
+
+	if url != "" {
+		arr := strings.Split(url, ",")
+		if len(arr) == 4 {
+			link = arr[0]
+			androidUrl = arr[1]
+			iosUrl = arr[2]
+			weChatUrl = arr[3]
+		} else {
+			if len(arr) > 0 {
+				link = arr[0]
+			} else {
+				link = ""
+			}
+			androidUrl = ""
+			iosUrl = ""
+			weChatUrl = ""
+		}
+	}
+	return link, androidUrl, iosUrl, weChatUrl
+}

+ 1 - 1
service/messageService.go

@@ -2,7 +2,7 @@ package service
 
 import (
 	"app.yhyue.com/moapp/MessageCenter/entity"
-	"app.yhyue.com/moapp/MessageCenter/rpc/message"
+	"app.yhyue.com/moapp/MessageCenter/rpc/type/message"
 	"app.yhyue.com/moapp/MessageCenter/util"
 	qutil "app.yhyue.com/moapp/jybase/common"
 	"errors"

+ 5 - 5
service/sendMsg.go

@@ -2,7 +2,7 @@ package service
 
 import (
 	"app.yhyue.com/moapp/MessageCenter/entity"
-	"app.yhyue.com/moapp/MessageCenter/rpc/message"
+	"app.yhyue.com/moapp/MessageCenter/rpc/type/message"
 	"app.yhyue.com/moapp/MessageCenter/util"
 	"app.yhyue.com/moapp/jybase/redis"
 	"database/sql"
@@ -246,8 +246,8 @@ func MultSave(this message.MultipleSaveMsgReq) (int64, string) {
 				logx.Info("执行事务是否成功:", ok)
 				if ok {
 					ok1 := MsgCountAdd(v, strconv.Itoa(int(this.MsgType)), this.Appid)
-					if !ok1{
-						log.Println("存redis:", ok1,v)
+					if !ok1 {
+						log.Println("存redis:", ok1, v)
 					}
 				}
 			} else {
@@ -255,8 +255,8 @@ func MultSave(this message.MultipleSaveMsgReq) (int64, string) {
 				logx.Info("插入消息返回 in1 id:", in)
 				if in > -1 {
 					ok := MsgCountAdd(v, strconv.Itoa(int(this.MsgType)), this.Appid)
-					if !ok{
-						log.Println("存redis:", ok,v)
+					if !ok {
+						log.Println("存redis:", ok, v)
 					}
 				}
 			}