duxin 2 лет назад
Родитель
Сommit
5d0f1f988d

+ 10 - 9
api/internal/logic/messagelistlogic.go

@@ -28,15 +28,16 @@ func (l *MessageListLogic) MessageList(req *types.MessageListReq) (resp *types.M
 	result := new(types.MessageListResp)
 	lsi := l.svcCtx.MessageCenter
 	res, err := lsi.UserMsgList(l.ctx, &messageclient.UserMsgListReq{
-		MsgType:    req.MsgType,
-		Appid:      req.AppId,
-		SortSize:   req.SortSize,
-		UserId:     req.UserId,
-		Read:       req.IsRead,
-		OffSet:     req.Offset,
-		PageSize:   req.Size,
-		IsPc:       req.IsPc,
-		MobileHome: req.MobileHome,
+		MsgType:        req.MsgType,
+		Appid:          req.AppId,
+		SortSize:       req.SortSize,
+		UserId:         req.UserId,
+		Read:           req.IsRead,
+		OffSet:         req.Offset,
+		PageSize:       req.Size,
+		IsColumn:       req.IsColumn,
+		IsColumnNewMsg: req.IsColumnNewMsg,
+		IsMsgList:      req.IsMsgList,
 	})
 	if err != nil {
 		return nil, err

+ 11 - 10
api/internal/types/types.go

@@ -159,16 +159,17 @@ type ClearUnreadMsgReq struct {
 }
 
 type MessageListReq struct {
-	UserId     string `header:"mgoUserId"`
-	AppId      string `header:"appId"`
-	EntId      int64  `header:"entId,optional"`
-	SortSize   int64  `json:"sortSize,optional"` //分类获取数
-	Offset     int64  `json:"offset"`            //
-	Size       int64  `json:"size,optional"`
-	MsgType    int64  `json:"msgType,optional"`
-	IsRead     int64  `json:"isRead,optional"`
-	IsPc       bool   `json:"isPc"`
-	MobileHome bool   `json:"mobileHome"`
+	UserId         string `header:"mgoUserId"`
+	AppId          string `header:"appId"`
+	EntId          int64  `header:"entId,optional"`
+	SortSize       int64  `json:"sortSize,optional"` //分类获取数
+	Offset         int64  `json:"offset"`            //
+	Size           int64  `json:"size,optional"`
+	MsgType        int64  `json:"msgType,optional"`
+	IsRead         int64  `json:"isRead,optional"`
+	IsColumn       bool   `json:"isColumn"`       //是否需要获取栏目
+	IsColumnNewMsg bool   `json:"isColumnNewMsg"` //是否需各栏目获取最新消息
+	IsMsgList      bool   `json:"isMsgList"`      //是否需要列表信息
 }
 
 type MessageListResp struct {

+ 11 - 10
api/message.api

@@ -156,16 +156,17 @@ type ClearUnreadMsgReq {
 }
 
 type MessageListReq {
-	UserId     string `header:"mgoUserId"`
-	AppId      string `header:"appId"`
-	EntId      int64  `header:"entId,optional"`
-	SortSize   int64  `json:"sortSize,optional"` //分类获取数
-	Offset     int64  `json:"offset"`            //
-	Size       int64  `json:"size,optional"`
-	MsgType    int64  `json:"msgType,optional"`
-	IsRead     int64  `json:"isRead,optional"`
-	IsPc       bool   `json:"isPc"`
-	MobileHome bool   `json:"mobileHome"`
+	UserId         string `header:"mgoUserId"`
+	AppId          string `header:"appId"`
+	EntId          int64  `header:"entId,optional"`
+	SortSize       int64  `json:"sortSize,optional"` //分类获取数
+	Offset         int64  `json:"offset"`            //
+	Size           int64  `json:"size,optional"`
+	MsgType        int64  `json:"msgType,optional"`
+	IsRead         int64  `json:"isRead,optional"`
+	IsColumn       bool   `json:"isColumn"`       //是否需要获取栏目
+	IsColumnNewMsg bool   `json:"isColumnNewMsg"` //是否需各栏目获取最新消息
+	IsMsgList      bool   `json:"isMsgList"`      //是否需要列表信息
 }
 
 type MessageListResp {

+ 48 - 43
rpc/internal/common/sendMsg.go

@@ -168,39 +168,37 @@ func UserMsgList(this *message.UserMsgListReq) *message.UserMsgList {
 	data := new(message.UserMsgList)
 	//获取栏目下的数据
 	sData := make(map[string][]*message.Messages)
-	if this.MobileHome {
-		if this.SortSize > 0 {
-			sortData := entity.Mysql.SelectBySql(fmt.Sprintf(`SELECT * FROM (
+	if this.IsColumnNewMsg && this.SortSize > 0 {
+		sortData := entity.Mysql.SelectBySql(fmt.Sprintf(`SELECT * FROM (
   			SELECT *, ROW_NUMBER() OVER (PARTITION BY msg_type, receive_userid ORDER BY createtime DESC) AS row_num
   			FROM message
   			WHERE receive_userid = '%s' and isdel = 1 and  appid = %s
 		) AS message_ranked
 		WHERE row_num <=%d;`, this.UserId, this.Appid, this.SortSize))
-			if sortData != nil {
-				for _, v := range *sortData {
-					_id := util.Int64All(v["id"])
-					id := strconv.FormatInt(_id, 10)
-					var msg = message.Messages{
-						Id:            id,
-						Appid:         common.InterfaceToStr(v["appId"]),
-						ReceiveUserId: common.InterfaceToStr(v["receive_userid"]),
-						ReceiveName:   common.InterfaceToStr(v["receive_name"]),
-						SendUserId:    common.InterfaceToStr(v["send_userid"]),
-						SendName:      common.InterfaceToStr(v["send_name"]),
-						Createtime:    common.InterfaceToStr(v["createtime"]),
-						Title:         common.InterfaceToStr(v["title"]),
-						MsgType:       int64(util.IntAll(v["msg_type"])),
-						Link:          common.InterfaceToStr(v["link"]),
-						CiteId:        util.Int64All(v["cite_id"]),
-						Content:       common.InterfaceToStr(v["content"]),
-						IsRead:        util.Int64All(v["isRead"]),
-						MsgLogId:      util.Int64All(v["msg_log_id"]),
-					}
-					if sData[common.InterfaceToStr(v["msg_type"])] == nil {
-						sData[common.InterfaceToStr(v["msg_type"])] = []*message.Messages{&msg}
-					} else {
-						sData[common.InterfaceToStr(v["msg_type"])] = append(sData[common.InterfaceToStr(v["msg_type"])], &msg)
-					}
+		if sortData != nil {
+			for _, v := range *sortData {
+				_id := util.Int64All(v["id"])
+				id := strconv.FormatInt(_id, 10)
+				var msg = message.Messages{
+					Id:            id,
+					Appid:         common.InterfaceToStr(v["appId"]),
+					ReceiveUserId: common.InterfaceToStr(v["receive_userid"]),
+					ReceiveName:   common.InterfaceToStr(v["receive_name"]),
+					SendUserId:    common.InterfaceToStr(v["send_userid"]),
+					SendName:      common.InterfaceToStr(v["send_name"]),
+					Createtime:    common.InterfaceToStr(v["createtime"]),
+					Title:         common.InterfaceToStr(v["title"]),
+					MsgType:       int64(util.IntAll(v["msg_type"])),
+					Link:          common.InterfaceToStr(v["link"]),
+					CiteId:        util.Int64All(v["cite_id"]),
+					Content:       common.InterfaceToStr(v["content"]),
+					IsRead:        util.Int64All(v["isRead"]),
+					MsgLogId:      util.Int64All(v["msg_log_id"]),
+				}
+				if sData[common.InterfaceToStr(v["msg_type"])] == nil {
+					sData[common.InterfaceToStr(v["msg_type"])] = []*message.Messages{&msg}
+				} else {
+					sData[common.InterfaceToStr(v["msg_type"])] = append(sData[common.InterfaceToStr(v["msg_type"])], &msg)
 				}
 			}
 		}
@@ -208,28 +206,33 @@ func UserMsgList(this *message.UserMsgListReq) *message.UserMsgList {
 
 	//消息栏目下的最新消息
 	var columnData []*message.AllSortData
-	if this.IsPc || this.MobileHome {
+	if this.IsColumn {
+		var msgTypes []string
+		columnUnread := make(map[string]int64)
+		for _, v := range entity.MessageColumn {
+			msgTypes = append(msgTypes, fmt.Sprintf(`"%s"`, common.InterfaceToStr(v["msg_type"])))
+		}
+		query := entity.Mysql.SelectBySql(fmt.Sprintf("SELECT msg_type,COUNT(CASE WHEN isRead=0 THEN 1 END) as count  FROM message where receive_userid=? and isdel=1 and appid=? GROUP BY msg_type  ORDER BY FIELD(`msg_type`,%s)", strings.Join(msgTypes, ",")), this.UserId, this.Appid)
+		if query != nil && len(*query) > 0 {
+			for _, v := range *query {
+				columnUnread[common.InterfaceToStr(v["msg_type"])] = common.Int64All(v["count"])
+			}
+		}
 		for _, v := range entity.MessageColumn {
 			var column message.AllSortData
 			column.Name = common.InterfaceToStr(v["name"])
 			column.Img = common.InterfaceToStr(v["img"])
 			column.MsgType = common.Int64All(v["msg_type"])
+			msgType := common.InterfaceToStr(v["msg_type"])
 			//消息未读数
-			sQuery := map[string]interface{}{
-				"receive_userid": this.UserId,
-				"isdel":          1,
-				"appid":          this.Appid,
-				"msg_type":       column.MsgType,
-				"isRead":         0,
-			}
-			column.UnreadMessages = entity.Mysql.Count("message", sQuery)
+			column.UnreadMessages = columnUnread[msgType]
 			unread += column.UnreadMessages
-			column.Data = sData[common.InterfaceToStr(v["msg_type"])]
+			column.Data = sData[msgType]
 			columnData = append(columnData, &column)
 		}
 	}
 
-	if this.IsPc || !this.MobileHome {
+	if this.IsMsgList {
 		data.SortData = columnData
 		count = entity.Mysql.Count("message", cquery)
 		if count > 0 {
@@ -257,10 +260,12 @@ func UserMsgList(this *message.UserMsgListReq) *message.UserMsgList {
 				}
 			}
 		}
-		data.Count = count
-		data.Unread = unread
 	}
-
+	data.Count = count
+	if !this.IsColumn && this.Read == 0 {
+		unread = count
+	}
+	data.Unread = unread
 	return data
 }
 
@@ -313,7 +318,7 @@ func UserUnreadMsgList(this *message.UserUnreadMsgListReq) (int64, []*message.Me
 }
 
 func MessageGetLast(this *message.UserMsgListReq) *message.Messages {
-	if this.IsPc || this.MobileHome {
+	if this.IsColumn {
 		query := map[string]interface{}{
 			"receive_userid": this.UserId,
 			"isdel":          1,

+ 17 - 17
rpc/internal/server/messageserver.go

@@ -4,16 +4,16 @@
 package server
 
 import (
-	message2 "app.yhyue.com/moapp/MessageCenter/rpc/type/message"
 	"context"
 
 	"app.yhyue.com/moapp/MessageCenter/rpc/internal/logic"
 	"app.yhyue.com/moapp/MessageCenter/rpc/internal/svc"
+	"app.yhyue.com/moapp/MessageCenter/rpc/type/message"
 )
 
 type MessageServer struct {
 	svcCtx *svc.ServiceContext
-	message2.UnimplementedMessageServer
+	message.UnimplementedMessageServer
 }
 
 func NewMessageServer(svcCtx *svc.ServiceContext) *MessageServer {
@@ -23,91 +23,91 @@ func NewMessageServer(svcCtx *svc.ServiceContext) *MessageServer {
 }
 
 // 批量保存消息
-func (s *MessageServer) MultipleSaveMsg(ctx context.Context, in *message2.MultipleSaveMsgReq) (*message2.MultipleSaveMsgResp, error) {
+func (s *MessageServer) MultipleSaveMsg(ctx context.Context, in *message.MultipleSaveMsgReq) (*message.MultipleSaveMsgResp, error) {
 	l := logic.NewMultipleSaveMsgLogic(ctx, s.svcCtx)
 	return l.MultipleSaveMsg(in)
 }
 
 //  修改消息阅读状态
-func (s *MessageServer) ChangeReadStatus(ctx context.Context, in *message2.ChangeReadStatusReq) (*message2.Response, error) {
+func (s *MessageServer) ChangeReadStatus(ctx context.Context, in *message.ChangeReadStatusReq) (*message.Response, error) {
 	l := logic.NewChangeReadStatusLogic(ctx, s.svcCtx)
 	return l.ChangeReadStatus(in)
 }
 
 // 指定用户发消息
-func (s *MessageServer) SendUserMsg(ctx context.Context, in *message2.SendMsgRequest) (*message2.Response, error) {
+func (s *MessageServer) SendUserMsg(ctx context.Context, in *message.SendMsgRequest) (*message.Response, error) {
 	l := logic.NewSendUserMsgLogic(ctx, s.svcCtx)
 	return l.SendUserMsg(in)
 }
 
 //   查询指定用户未读消息合计
-func (s *MessageServer) GetUnreadCount(ctx context.Context, in *message2.GetUnreadCountRequest) (*message2.GetUnreadCountResponse, error) {
+func (s *MessageServer) GetUnreadCount(ctx context.Context, in *message.GetUnreadCountRequest) (*message.GetUnreadCountResponse, error) {
 	l := logic.NewGetUnreadCountLogic(ctx, s.svcCtx)
 	return l.GetUnreadCount(in)
 }
 
 //   查询指定用户的历史消息记录
-func (s *MessageServer) FindUserMsg(ctx context.Context, in *message2.FindUserMsgReq) (*message2.FindUserMsgRes, error) {
+func (s *MessageServer) FindUserMsg(ctx context.Context, in *message.FindUserMsgReq) (*message.FindUserMsgRes, error) {
 	l := logic.NewFindUserMsgLogic(ctx, s.svcCtx)
 	return l.FindUserMsg(in)
 }
 
 //   查询指定用户指定分类的未读消息合计
-func (s *MessageServer) GetClassUnreadCount(ctx context.Context, in *message2.GetClassUnreadCountReq) (*message2.GetUnreadCountResponse, error) {
+func (s *MessageServer) GetClassUnreadCount(ctx context.Context, in *message.GetClassUnreadCountReq) (*message.GetUnreadCountResponse, error) {
 	l := logic.NewGetClassUnreadCountLogic(ctx, s.svcCtx)
 	return l.GetClassUnreadCount(in)
 }
 
 //   获取指定用户指定分类的最新一条消息
-func (s *MessageServer) GetLastMessage(ctx context.Context, in *message2.GetLastMessageReq) (*message2.GetLastMessageRes, error) {
+func (s *MessageServer) GetLastMessage(ctx context.Context, in *message.GetLastMessageReq) (*message.GetLastMessageRes, error) {
 	l := logic.NewGetLastMessageLogic(ctx, s.svcCtx)
 	return l.GetLastMessage(in)
 }
 
 // 查看详细详情
-func (s *MessageServer) FindMessageDetail(ctx context.Context, in *message2.MessageDetailReq) (*message2.MessageDetailResp, error) {
+func (s *MessageServer) FindMessageDetail(ctx context.Context, in *message.MessageDetailReq) (*message.MessageDetailResp, error) {
 	l := logic.NewFindMessageDetailLogic(ctx, s.svcCtx)
 	return l.FindMessageDetail(in)
 }
 
 //   获取指定用户的分类及未读消息数量
-func (s *MessageServer) GetUnreadClassCount(ctx context.Context, in *message2.GetUnreadClassCountReq) (*message2.GetUnreadClassCountRes, error) {
+func (s *MessageServer) GetUnreadClassCount(ctx context.Context, in *message.GetUnreadClassCountReq) (*message.GetUnreadClassCountRes, error) {
 	l := logic.NewGetUnreadClassCountLogic(ctx, s.svcCtx)
 	return l.GetUnreadClassCount(in)
 }
 
 //   获取指定用户收到消息的分类
-func (s *MessageServer) GetMsgType(ctx context.Context, in *message2.GetMsgTypeReq) (*message2.GetMsgTypeRes, error) {
+func (s *MessageServer) GetMsgType(ctx context.Context, in *message.GetMsgTypeReq) (*message.GetMsgTypeRes, error) {
 	l := logic.NewGetMsgTypeLogic(ctx, s.svcCtx)
 	return l.GetMsgType(in)
 }
 
 //   查询指定用户的浮标消息
-func (s *MessageServer) FindUserBuoyMsg(ctx context.Context, in *message2.FindUserBuoyMsgReq) (*message2.FindUserBuoyMsgRes, error) {
+func (s *MessageServer) FindUserBuoyMsg(ctx context.Context, in *message.FindUserBuoyMsgReq) (*message.FindUserBuoyMsgRes, error) {
 	l := logic.NewFindUserBuoyMsgLogic(ctx, s.svcCtx)
 	return l.FindUserBuoyMsg(in)
 }
 
 //    一键清空未读消息
-func (s *MessageServer) ClearUnreadMsg(ctx context.Context, in *message2.ClearUnreadMsgReq) (*message2.Response, error) {
+func (s *MessageServer) ClearUnreadMsg(ctx context.Context, in *message.ClearUnreadMsgReq) (*message.Response, error) {
 	l := logic.NewClearUnreadMsgLogic(ctx, s.svcCtx)
 	return l.ClearUnreadMsg(in)
 }
 
 //    new用户消息列表
-func (s *MessageServer) UserMsgList(ctx context.Context, in *message2.UserMsgListReq) (*message2.UserMsgListRes, error) {
+func (s *MessageServer) UserMsgList(ctx context.Context, in *message.UserMsgListReq) (*message.UserMsgListRes, error) {
 	l := logic.NewUserMsgListLogic(ctx, s.svcCtx)
 	return l.UserMsgList(in)
 }
 
 //   发送微信模版消息
-func (s *MessageServer) SendWxTmplMsg(ctx context.Context, in *message2.WxTmplMsg) (*message2.Response, error) {
+func (s *MessageServer) SendWxTmplMsg(ctx context.Context, in *message.WxTmplMsg) (*message.Response, error) {
 	l := logic.NewSendWxTmplMsgLogic(ctx, s.svcCtx)
 	return l.SendWxTmplMsg(in)
 }
 
 //    官网、移动端首页、工作桌面消息滚动
-func (s *MessageServer) UserUnreadMsgList(ctx context.Context, in *message2.UserUnreadMsgListReq) (*message2.UserUnreadMsgListRes, error) {
+func (s *MessageServer) UserUnreadMsgList(ctx context.Context, in *message.UserUnreadMsgListReq) (*message.UserUnreadMsgListRes, error) {
 	l := logic.NewUserUnreadMsgListLogic(ctx, s.svcCtx)
 	return l.UserUnreadMsgList(in)
 }

+ 4 - 2
rpc/message.proto

@@ -188,8 +188,10 @@ message UserMsgListReq {
     int64 msgType = 6; //是否区分类型
     int64 read = 7; // 是否区分已读未读 -1 不区分已读未读  0 未读 1 已读
     int64 SortSize = 8; //分类 每类数
-    bool isPc = 9;
-    bool  mobileHome = 10;
+    bool IsColumn   =9;    //是否需要获取栏目
+    bool IsColumnNewMsg = 10; //是否需各栏目获取最新消息
+    bool IsMsgList =11;  //是否需要列表信息
+
 }
 
 message UserMsgListRes {

+ 50 - 49
rpc/messageclient/message.go

@@ -4,47 +4,48 @@
 package messageclient
 
 import (
-	message2 "app.yhyue.com/moapp/MessageCenter/rpc/type/message"
 	"context"
 
+	"app.yhyue.com/moapp/MessageCenter/rpc/type/message"
+
 	"github.com/zeromicro/go-zero/zrpc"
 	"google.golang.org/grpc"
 )
 
 type (
-	AllSortData            = message2.AllSortData
-	BuoyMessages           = message2.BuoyMessages
-	ChangeReadStatusReq    = message2.ChangeReadStatusReq
-	ClearUnreadMsgReq      = message2.ClearUnreadMsgReq
-	FindUserBuoyMsgReq     = message2.FindUserBuoyMsgReq
-	FindUserBuoyMsgRes     = message2.FindUserBuoyMsgRes
-	FindUserMsgReq         = message2.FindUserMsgReq
-	FindUserMsgRes         = message2.FindUserMsgRes
-	GetClassUnreadCountReq = message2.GetClassUnreadCountReq
-	GetLastMessageReq      = message2.GetLastMessageReq
-	GetLastMessageRes      = message2.GetLastMessageRes
-	GetMsgTypeReq          = message2.GetMsgTypeReq
-	GetMsgTypeRes          = message2.GetMsgTypeRes
-	GetUnreadClassCountReq = message2.GetUnreadClassCountReq
-	GetUnreadClassCountRes = message2.GetUnreadClassCountRes
-	GetUnreadCountRequest  = message2.GetUnreadCountRequest
-	GetUnreadCountResponse = message2.GetUnreadCountResponse
-	MessageDetailReq       = message2.MessageDetailReq
-	MessageDetailResp      = message2.MessageDetailResp
-	Messages               = message2.Messages
-	MultipleSaveMsgReq     = message2.MultipleSaveMsgReq
-	MultipleSaveMsgResp    = message2.MultipleSaveMsgResp
-	ResCount               = message2.ResCount
-	Response               = message2.Response
-	SendMsgRequest         = message2.SendMsgRequest
-	User                   = message2.User
-	UserMsgList            = message2.UserMsgList
-	UserMsgListReq         = message2.UserMsgListReq
-	UserMsgListRes         = message2.UserMsgListRes
-	UserUnreadMsgListReq   = message2.UserUnreadMsgListReq
-	UserUnreadMsgListRes   = message2.UserUnreadMsgListRes
-	WxTmplMsg              = message2.WxTmplMsg
-	WxTmplResponse         = message2.WxTmplResponse
+	AllSortData            = message.AllSortData
+	BuoyMessages           = message.BuoyMessages
+	ChangeReadStatusReq    = message.ChangeReadStatusReq
+	ClearUnreadMsgReq      = message.ClearUnreadMsgReq
+	FindUserBuoyMsgReq     = message.FindUserBuoyMsgReq
+	FindUserBuoyMsgRes     = message.FindUserBuoyMsgRes
+	FindUserMsgReq         = message.FindUserMsgReq
+	FindUserMsgRes         = message.FindUserMsgRes
+	GetClassUnreadCountReq = message.GetClassUnreadCountReq
+	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
+	Messages               = message.Messages
+	MultipleSaveMsgReq     = message.MultipleSaveMsgReq
+	MultipleSaveMsgResp    = message.MultipleSaveMsgResp
+	ResCount               = message.ResCount
+	Response               = message.Response
+	SendMsgRequest         = message.SendMsgRequest
+	User                   = message.User
+	UserMsgList            = message.UserMsgList
+	UserMsgListReq         = message.UserMsgListReq
+	UserMsgListRes         = message.UserMsgListRes
+	UserUnreadMsgListReq   = message.UserUnreadMsgListReq
+	UserUnreadMsgListRes   = message.UserUnreadMsgListRes
+	WxTmplMsg              = message.WxTmplMsg
+	WxTmplResponse         = message.WxTmplResponse
 
 	Message interface {
 		// 批量保存消息
@@ -92,90 +93,90 @@ func NewMessage(cli zrpc.Client) Message {
 
 // 批量保存消息
 func (m *defaultMessage) MultipleSaveMsg(ctx context.Context, in *MultipleSaveMsgReq, opts ...grpc.CallOption) (*MultipleSaveMsgResp, error) {
-	client := message2.NewMessageClient(m.cli.Conn())
+	client := message.NewMessageClient(m.cli.Conn())
 	return client.MultipleSaveMsg(ctx, in, opts...)
 }
 
 //  修改消息阅读状态
 func (m *defaultMessage) ChangeReadStatus(ctx context.Context, in *ChangeReadStatusReq, opts ...grpc.CallOption) (*Response, error) {
-	client := message2.NewMessageClient(m.cli.Conn())
+	client := message.NewMessageClient(m.cli.Conn())
 	return client.ChangeReadStatus(ctx, in, opts...)
 }
 
 // 指定用户发消息
 func (m *defaultMessage) SendUserMsg(ctx context.Context, in *SendMsgRequest, opts ...grpc.CallOption) (*Response, error) {
-	client := message2.NewMessageClient(m.cli.Conn())
+	client := message.NewMessageClient(m.cli.Conn())
 	return client.SendUserMsg(ctx, in, opts...)
 }
 
 //   查询指定用户未读消息合计
 func (m *defaultMessage) GetUnreadCount(ctx context.Context, in *GetUnreadCountRequest, opts ...grpc.CallOption) (*GetUnreadCountResponse, error) {
-	client := message2.NewMessageClient(m.cli.Conn())
+	client := message.NewMessageClient(m.cli.Conn())
 	return client.GetUnreadCount(ctx, in, opts...)
 }
 
 //   查询指定用户的历史消息记录
 func (m *defaultMessage) FindUserMsg(ctx context.Context, in *FindUserMsgReq, opts ...grpc.CallOption) (*FindUserMsgRes, error) {
-	client := message2.NewMessageClient(m.cli.Conn())
+	client := message.NewMessageClient(m.cli.Conn())
 	return client.FindUserMsg(ctx, in, opts...)
 }
 
 //   查询指定用户指定分类的未读消息合计
 func (m *defaultMessage) GetClassUnreadCount(ctx context.Context, in *GetClassUnreadCountReq, opts ...grpc.CallOption) (*GetUnreadCountResponse, error) {
-	client := message2.NewMessageClient(m.cli.Conn())
+	client := message.NewMessageClient(m.cli.Conn())
 	return client.GetClassUnreadCount(ctx, in, opts...)
 }
 
 //   获取指定用户指定分类的最新一条消息
 func (m *defaultMessage) GetLastMessage(ctx context.Context, in *GetLastMessageReq, opts ...grpc.CallOption) (*GetLastMessageRes, error) {
-	client := message2.NewMessageClient(m.cli.Conn())
+	client := message.NewMessageClient(m.cli.Conn())
 	return client.GetLastMessage(ctx, in, opts...)
 }
 
 // 查看详细详情
 func (m *defaultMessage) FindMessageDetail(ctx context.Context, in *MessageDetailReq, opts ...grpc.CallOption) (*MessageDetailResp, error) {
-	client := message2.NewMessageClient(m.cli.Conn())
+	client := message.NewMessageClient(m.cli.Conn())
 	return client.FindMessageDetail(ctx, in, opts...)
 }
 
 //   获取指定用户的分类及未读消息数量
 func (m *defaultMessage) GetUnreadClassCount(ctx context.Context, in *GetUnreadClassCountReq, opts ...grpc.CallOption) (*GetUnreadClassCountRes, error) {
-	client := message2.NewMessageClient(m.cli.Conn())
+	client := message.NewMessageClient(m.cli.Conn())
 	return client.GetUnreadClassCount(ctx, in, opts...)
 }
 
 //   获取指定用户收到消息的分类
 func (m *defaultMessage) GetMsgType(ctx context.Context, in *GetMsgTypeReq, opts ...grpc.CallOption) (*GetMsgTypeRes, error) {
-	client := message2.NewMessageClient(m.cli.Conn())
+	client := message.NewMessageClient(m.cli.Conn())
 	return client.GetMsgType(ctx, in, opts...)
 }
 
 //   查询指定用户的浮标消息
 func (m *defaultMessage) FindUserBuoyMsg(ctx context.Context, in *FindUserBuoyMsgReq, opts ...grpc.CallOption) (*FindUserBuoyMsgRes, error) {
-	client := message2.NewMessageClient(m.cli.Conn())
+	client := message.NewMessageClient(m.cli.Conn())
 	return client.FindUserBuoyMsg(ctx, in, opts...)
 }
 
 //    一键清空未读消息
 func (m *defaultMessage) ClearUnreadMsg(ctx context.Context, in *ClearUnreadMsgReq, opts ...grpc.CallOption) (*Response, error) {
-	client := message2.NewMessageClient(m.cli.Conn())
+	client := message.NewMessageClient(m.cli.Conn())
 	return client.ClearUnreadMsg(ctx, in, opts...)
 }
 
 //    new用户消息列表
 func (m *defaultMessage) UserMsgList(ctx context.Context, in *UserMsgListReq, opts ...grpc.CallOption) (*UserMsgListRes, error) {
-	client := message2.NewMessageClient(m.cli.Conn())
+	client := message.NewMessageClient(m.cli.Conn())
 	return client.UserMsgList(ctx, in, opts...)
 }
 
 //   发送微信模版消息
 func (m *defaultMessage) SendWxTmplMsg(ctx context.Context, in *WxTmplMsg, opts ...grpc.CallOption) (*Response, error) {
-	client := message2.NewMessageClient(m.cli.Conn())
+	client := message.NewMessageClient(m.cli.Conn())
 	return client.SendWxTmplMsg(ctx, in, opts...)
 }
 
 //    官网、移动端首页、工作桌面消息滚动
 func (m *defaultMessage) UserUnreadMsgList(ctx context.Context, in *UserUnreadMsgListReq, opts ...grpc.CallOption) (*UserUnreadMsgListRes, error) {
-	client := message2.NewMessageClient(m.cli.Conn())
+	client := message.NewMessageClient(m.cli.Conn())
 	return client.UserUnreadMsgList(ctx, in, opts...)
 }

+ 165 - 154
rpc/type/message/message.pb.go

@@ -1,6 +1,6 @@
 // Code generated by protoc-gen-go. DO NOT EDIT.
 // versions:
-// 	protoc-gen-go v1.28.0
+// 	protoc-gen-go v1.28.1
 // 	protoc        v3.19.4
 // source: message.proto
 
@@ -819,7 +819,7 @@ func (x *GetClassUnreadCountReq) GetAppid() string {
 	return ""
 }
 
-//查看消息内容
+// 查看消息内容
 type MessageDetailReq struct {
 	state         protoimpl.MessageState
 	sizeCache     protoimpl.SizeCache
@@ -1875,15 +1875,16 @@ type UserMsgListReq struct {
 	sizeCache     protoimpl.SizeCache
 	unknownFields protoimpl.UnknownFields
 
-	UserId     string `protobuf:"bytes,1,opt,name=userId,proto3" json:"userId,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 已读
-	SortSize   int64  `protobuf:"varint,8,opt,name=SortSize,proto3" json:"SortSize,omitempty"` //分类 每类数
-	IsPc       bool   `protobuf:"varint,9,opt,name=isPc,proto3" json:"isPc,omitempty"`
-	MobileHome bool   `protobuf:"varint,10,opt,name=mobileHome,proto3" json:"mobileHome,omitempty"`
+	UserId         string `protobuf:"bytes,1,opt,name=userId,proto3" json:"userId,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 已读
+	SortSize       int64  `protobuf:"varint,8,opt,name=SortSize,proto3" json:"SortSize,omitempty"`              //分类 每类数
+	IsColumn       bool   `protobuf:"varint,9,opt,name=IsColumn,proto3" json:"IsColumn,omitempty"`              //是否需要获取栏目
+	IsColumnNewMsg bool   `protobuf:"varint,10,opt,name=IsColumnNewMsg,proto3" json:"IsColumnNewMsg,omitempty"` //是否需各栏目获取最新消息
+	IsMsgList      bool   `protobuf:"varint,11,opt,name=IsMsgList,proto3" json:"IsMsgList,omitempty"`           //是否需要列表信息
 }
 
 func (x *UserMsgListReq) Reset() {
@@ -1967,16 +1968,23 @@ func (x *UserMsgListReq) GetSortSize() int64 {
 	return 0
 }
 
-func (x *UserMsgListReq) GetIsPc() bool {
+func (x *UserMsgListReq) GetIsColumn() bool {
 	if x != nil {
-		return x.IsPc
+		return x.IsColumn
 	}
 	return false
 }
 
-func (x *UserMsgListReq) GetMobileHome() bool {
+func (x *UserMsgListReq) GetIsColumnNewMsg() bool {
 	if x != nil {
-		return x.MobileHome
+		return x.IsColumnNewMsg
+	}
+	return false
+}
+
+func (x *UserMsgListReq) GetIsMsgList() bool {
+	if x != nil {
+		return x.IsMsgList
 	}
 	return false
 }
@@ -2736,7 +2744,7 @@ var file_message_proto_rawDesc = []byte{
 	0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a,
 	0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x61, 0x70,
 	0x70, 0x49, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x61, 0x70, 0x70, 0x49, 0x64,
-	0x22, 0xf0, 0x01, 0x0a, 0x0e, 0x55, 0x73, 0x65, 0x72, 0x4d, 0x73, 0x67, 0x4c, 0x69, 0x73, 0x74,
+	0x22, 0x9e, 0x02, 0x0a, 0x0e, 0x55, 0x73, 0x65, 0x72, 0x4d, 0x73, 0x67, 0x4c, 0x69, 0x73, 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, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x61, 0x70, 0x70, 0x69,
@@ -2748,146 +2756,149 @@ var file_message_proto_rawDesc = []byte{
 	0x12, 0x0a, 0x04, 0x72, 0x65, 0x61, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x03, 0x52, 0x04, 0x72,
 	0x65, 0x61, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x53, 0x6f, 0x72, 0x74, 0x53, 0x69, 0x7a, 0x65, 0x18,
 	0x08, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x53, 0x6f, 0x72, 0x74, 0x53, 0x69, 0x7a, 0x65, 0x12,
-	0x12, 0x0a, 0x04, 0x69, 0x73, 0x50, 0x63, 0x18, 0x09, 0x20, 0x01, 0x28, 0x08, 0x52, 0x04, 0x69,
-	0x73, 0x50, 0x63, 0x12, 0x1e, 0x0a, 0x0a, 0x6d, 0x6f, 0x62, 0x69, 0x6c, 0x65, 0x48, 0x6f, 0x6d,
-	0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x6d, 0x6f, 0x62, 0x69, 0x6c, 0x65, 0x48,
-	0x6f, 0x6d, 0x65, 0x22, 0xe8, 0x01, 0x0a, 0x0e, 0x55, 0x73, 0x65, 0x72, 0x4d, 0x73, 0x67, 0x4c,
-	0x69, 0x73, 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, 0x6c, 0x69, 0x73, 0x74, 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, 0x6c, 0x69, 0x73, 0x74, 0x12, 0x25, 0x0a, 0x04, 0x6c,
-	0x61, 0x73, 0x74, 0x18, 0x04, 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, 0x6c, 0x61,
-	0x73, 0x74, 0x12, 0x2c, 0x0a, 0x06, 0x63, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x18, 0x05, 0x20, 0x03,
-	0x28, 0x0b, 0x32, 0x14, 0x2e, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x2e, 0x41, 0x6c, 0x6c,
-	0x53, 0x6f, 0x72, 0x74, 0x44, 0x61, 0x74, 0x61, 0x52, 0x06, 0x63, 0x6f, 0x6c, 0x75, 0x6d, 0x6e,
-	0x12, 0x14, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x52,
-	0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x75, 0x6e, 0x72, 0x65, 0x61, 0x64,
-	0x18, 0x07, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x75, 0x6e, 0x72, 0x65, 0x61, 0x64, 0x22, 0x94,
-	0x01, 0x0a, 0x0b, 0x55, 0x73, 0x65, 0x72, 0x4d, 0x73, 0x67, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x25,
-	0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 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, 0x30, 0x0a, 0x08, 0x73, 0x6f, 0x72, 0x74, 0x44, 0x61, 0x74,
-	0x61, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67,
-	0x65, 0x2e, 0x41, 0x6c, 0x6c, 0x53, 0x6f, 0x72, 0x74, 0x44, 0x61, 0x74, 0x61, 0x52, 0x08, 0x73,
-	0x6f, 0x72, 0x74, 0x44, 0x61, 0x74, 0x61, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74,
-	0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x16, 0x0a,
-	0x06, 0x75, 0x6e, 0x72, 0x65, 0x61, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x75,
-	0x6e, 0x72, 0x65, 0x61, 0x64, 0x22, 0xbb, 0x01, 0x0a, 0x09, 0x57, 0x78, 0x54, 0x6d, 0x70, 0x6c,
-	0x4d, 0x73, 0x67, 0x12, 0x14, 0x0a, 0x05, 0x61, 0x70, 0x70, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01,
-	0x28, 0x09, 0x52, 0x05, 0x61, 0x70, 0x70, 0x69, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x75, 0x73, 0x65,
-	0x72, 0x49, 0x64, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x75, 0x73, 0x65, 0x72,
-	0x49, 0x64, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x6f, 0x70, 0x65, 0x6e, 0x49, 0x64, 0x73, 0x18, 0x03,
-	0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6f, 0x70, 0x65, 0x6e, 0x49, 0x64, 0x73, 0x12, 0x20, 0x0a,
-	0x0b, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x73, 0x18, 0x04, 0x20, 0x01,
-	0x28, 0x09, 0x52, 0x0b, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x73, 0x12,
-	0x10, 0x0a, 0x03, 0x75, 0x72, 0x6c, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x72,
-	0x6c, 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, 0x16, 0x0a, 0x06, 0x74,
-	0x6d, 0x70, 0x6c, 0x49, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x6d, 0x70,
-	0x6c, 0x49, 0x64, 0x22, 0x9c, 0x01, 0x0a, 0x0b, 0x41, 0x6c, 0x6c, 0x53, 0x6f, 0x72, 0x74, 0x44,
-	0x61, 0x74, 0x61, 0x12, 0x26, 0x0a, 0x0e, 0x75, 0x6e, 0x72, 0x65, 0x61, 0x64, 0x4d, 0x65, 0x73,
-	0x73, 0x61, 0x67, 0x65, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0e, 0x75, 0x6e, 0x72,
-	0x65, 0x61, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x6e,
-	0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12,
-	0x10, 0x0a, 0x03, 0x69, 0x6d, 0x67, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x69, 0x6d,
-	0x67, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x73, 0x67, 0x54, 0x79, 0x70, 0x65, 0x18, 0x04, 0x20, 0x01,
-	0x28, 0x03, 0x52, 0x07, 0x6d, 0x73, 0x67, 0x54, 0x79, 0x70, 0x65, 0x12, 0x25, 0x0a, 0x04, 0x64,
-	0x61, 0x74, 0x61, 0x18, 0x05, 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, 0x22, 0x48, 0x0a, 0x0e, 0x57, 0x78, 0x54, 0x6d, 0x70, 0x6c, 0x52, 0x65, 0x73, 0x70,
-	0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x73, 0x65, 0x6e, 0x64, 0x54, 0x6f, 0x74, 0x61,
-	0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x73, 0x65, 0x6e, 0x64, 0x54, 0x6f, 0x74,
-	0x61, 0x6c, 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, 0x78, 0x0a, 0x14,
-	0x55, 0x73, 0x65, 0x72, 0x55, 0x6e, 0x72, 0x65, 0x61, 0x64, 0x4d, 0x73, 0x67, 0x4c, 0x69, 0x73,
-	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, 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, 0x22, 0x81, 0x01, 0x0a, 0x14, 0x55, 0x73, 0x65, 0x72, 0x55,
-	0x6e, 0x72, 0x65, 0x61, 0x64, 0x4d, 0x73, 0x67, 0x4c, 0x69, 0x73, 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, 0x6c, 0x69, 0x73, 0x74, 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,
-	0x6c, 0x69, 0x73, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x04, 0x20,
-	0x01, 0x28, 0x03, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x32, 0xcb, 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, 0x43, 0x0a, 0x10, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x52, 0x65,
-	0x61, 0x64, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x1c, 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, 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, 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,
+	0x1a, 0x0a, 0x08, 0x49, 0x73, 0x43, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x18, 0x09, 0x20, 0x01, 0x28,
+	0x08, 0x52, 0x08, 0x49, 0x73, 0x43, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x12, 0x26, 0x0a, 0x0e, 0x49,
+	0x73, 0x43, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x4e, 0x65, 0x77, 0x4d, 0x73, 0x67, 0x18, 0x0a, 0x20,
+	0x01, 0x28, 0x08, 0x52, 0x0e, 0x49, 0x73, 0x43, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x4e, 0x65, 0x77,
+	0x4d, 0x73, 0x67, 0x12, 0x1c, 0x0a, 0x09, 0x49, 0x73, 0x4d, 0x73, 0x67, 0x4c, 0x69, 0x73, 0x74,
+	0x18, 0x0b, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x49, 0x73, 0x4d, 0x73, 0x67, 0x4c, 0x69, 0x73,
+	0x74, 0x22, 0xe8, 0x01, 0x0a, 0x0e, 0x55, 0x73, 0x65, 0x72, 0x4d, 0x73, 0x67, 0x4c, 0x69, 0x73,
+	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, 0x6c, 0x69, 0x73, 0x74, 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, 0x6c, 0x69, 0x73, 0x74, 0x12, 0x25, 0x0a, 0x04, 0x6c, 0x61, 0x73,
+	0x74, 0x18, 0x04, 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, 0x6c, 0x61, 0x73, 0x74,
+	0x12, 0x2c, 0x0a, 0x06, 0x63, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b,
+	0x32, 0x14, 0x2e, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x2e, 0x41, 0x6c, 0x6c, 0x53, 0x6f,
+	0x72, 0x74, 0x44, 0x61, 0x74, 0x61, 0x52, 0x06, 0x63, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x12, 0x14,
+	0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x63,
+	0x6f, 0x75, 0x6e, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x75, 0x6e, 0x72, 0x65, 0x61, 0x64, 0x18, 0x07,
+	0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x75, 0x6e, 0x72, 0x65, 0x61, 0x64, 0x22, 0x94, 0x01, 0x0a,
+	0x0b, 0x55, 0x73, 0x65, 0x72, 0x4d, 0x73, 0x67, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x25, 0x0a, 0x04,
+	0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 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, 0x30, 0x0a, 0x08, 0x73, 0x6f, 0x72, 0x74, 0x44, 0x61, 0x74, 0x61, 0x18,
+	0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x2e,
+	0x41, 0x6c, 0x6c, 0x53, 0x6f, 0x72, 0x74, 0x44, 0x61, 0x74, 0x61, 0x52, 0x08, 0x73, 0x6f, 0x72,
+	0x74, 0x44, 0x61, 0x74, 0x61, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03,
+	0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x75,
+	0x6e, 0x72, 0x65, 0x61, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x75, 0x6e, 0x72,
+	0x65, 0x61, 0x64, 0x22, 0xbb, 0x01, 0x0a, 0x09, 0x57, 0x78, 0x54, 0x6d, 0x70, 0x6c, 0x4d, 0x73,
+	0x67, 0x12, 0x14, 0x0a, 0x05, 0x61, 0x70, 0x70, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09,
+	0x52, 0x05, 0x61, 0x70, 0x70, 0x69, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x75, 0x73, 0x65, 0x72, 0x49,
+	0x64, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64,
+	0x73, 0x12, 0x18, 0x0a, 0x07, 0x6f, 0x70, 0x65, 0x6e, 0x49, 0x64, 0x73, 0x18, 0x03, 0x20, 0x01,
+	0x28, 0x09, 0x52, 0x07, 0x6f, 0x70, 0x65, 0x6e, 0x49, 0x64, 0x73, 0x12, 0x20, 0x0a, 0x0b, 0x70,
+	0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09,
+	0x52, 0x0b, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x73, 0x12, 0x10, 0x0a,
+	0x03, 0x75, 0x72, 0x6c, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x72, 0x6c, 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, 0x16, 0x0a, 0x06, 0x74, 0x6d, 0x70,
+	0x6c, 0x49, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x6d, 0x70, 0x6c, 0x49,
+	0x64, 0x22, 0x9c, 0x01, 0x0a, 0x0b, 0x41, 0x6c, 0x6c, 0x53, 0x6f, 0x72, 0x74, 0x44, 0x61, 0x74,
+	0x61, 0x12, 0x26, 0x0a, 0x0e, 0x75, 0x6e, 0x72, 0x65, 0x61, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61,
+	0x67, 0x65, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0e, 0x75, 0x6e, 0x72, 0x65, 0x61,
+	0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d,
+	0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x10, 0x0a,
+	0x03, 0x69, 0x6d, 0x67, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x69, 0x6d, 0x67, 0x12,
+	0x18, 0x0a, 0x07, 0x6d, 0x73, 0x67, 0x54, 0x79, 0x70, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03,
+	0x52, 0x07, 0x6d, 0x73, 0x67, 0x54, 0x79, 0x70, 0x65, 0x12, 0x25, 0x0a, 0x04, 0x64, 0x61, 0x74,
+	0x61, 0x18, 0x05, 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,
+	0x22, 0x48, 0x0a, 0x0e, 0x57, 0x78, 0x54, 0x6d, 0x70, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e,
+	0x73, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x73, 0x65, 0x6e, 0x64, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x18,
+	0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x73, 0x65, 0x6e, 0x64, 0x54, 0x6f, 0x74, 0x61, 0x6c,
+	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, 0x78, 0x0a, 0x14, 0x55, 0x73,
+	0x65, 0x72, 0x55, 0x6e, 0x72, 0x65, 0x61, 0x64, 0x4d, 0x73, 0x67, 0x4c, 0x69, 0x73, 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, 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, 0x22, 0x81, 0x01, 0x0a, 0x14, 0x55, 0x73, 0x65, 0x72, 0x55, 0x6e, 0x72,
+	0x65, 0x61, 0x64, 0x4d, 0x73, 0x67, 0x4c, 0x69, 0x73, 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, 0x6c,
+	0x69, 0x73, 0x74, 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, 0x6c, 0x69,
+	0x73, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28,
+	0x03, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x32, 0xcb, 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, 0x43, 0x0a, 0x10, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x52, 0x65, 0x61, 0x64,
+	0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x1c, 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, 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, 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, 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, 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, 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, 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, 0x12, 0x3f, 0x0a, 0x0e, 0x43,
-	0x6c, 0x65, 0x61, 0x72, 0x55, 0x6e, 0x72, 0x65, 0x61, 0x64, 0x4d, 0x73, 0x67, 0x12, 0x1a, 0x2e,
-	0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x2e, 0x43, 0x6c, 0x65, 0x61, 0x72, 0x55, 0x6e, 0x72,
-	0x65, 0x61, 0x64, 0x4d, 0x73, 0x67, 0x52, 0x65, 0x71, 0x1a, 0x11, 0x2e, 0x6d, 0x65, 0x73, 0x73,
-	0x61, 0x67, 0x65, 0x2e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3f, 0x0a, 0x0b,
-	0x55, 0x73, 0x65, 0x72, 0x4d, 0x73, 0x67, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x17, 0x2e, 0x6d, 0x65,
-	0x73, 0x73, 0x61, 0x67, 0x65, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x4d, 0x73, 0x67, 0x4c, 0x69, 0x73,
-	0x74, 0x52, 0x65, 0x71, 0x1a, 0x17, 0x2e, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x2e, 0x55,
-	0x73, 0x65, 0x72, 0x4d, 0x73, 0x67, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x12, 0x36, 0x0a,
-	0x0d, 0x53, 0x65, 0x6e, 0x64, 0x57, 0x78, 0x54, 0x6d, 0x70, 0x6c, 0x4d, 0x73, 0x67, 0x12, 0x12,
-	0x2e, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x2e, 0x57, 0x78, 0x54, 0x6d, 0x70, 0x6c, 0x4d,
-	0x73, 0x67, 0x1a, 0x11, 0x2e, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x2e, 0x52, 0x65, 0x73,
-	0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x51, 0x0a, 0x11, 0x55, 0x73, 0x65, 0x72, 0x55, 0x6e, 0x72,
-	0x65, 0x61, 0x64, 0x4d, 0x73, 0x67, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x1d, 0x2e, 0x6d, 0x65, 0x73,
-	0x73, 0x61, 0x67, 0x65, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x55, 0x6e, 0x72, 0x65, 0x61, 0x64, 0x4d,
-	0x73, 0x67, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x1a, 0x1d, 0x2e, 0x6d, 0x65, 0x73, 0x73,
-	0x61, 0x67, 0x65, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x55, 0x6e, 0x72, 0x65, 0x61, 0x64, 0x4d, 0x73,
-	0x67, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x42, 0x0a, 0x5a, 0x08, 0x6d, 0x65, 0x73, 0x73,
-	0x61, 0x67, 0x65, 0x2f, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
+	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, 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, 0x12, 0x3f, 0x0a, 0x0e, 0x43, 0x6c, 0x65,
+	0x61, 0x72, 0x55, 0x6e, 0x72, 0x65, 0x61, 0x64, 0x4d, 0x73, 0x67, 0x12, 0x1a, 0x2e, 0x6d, 0x65,
+	0x73, 0x73, 0x61, 0x67, 0x65, 0x2e, 0x43, 0x6c, 0x65, 0x61, 0x72, 0x55, 0x6e, 0x72, 0x65, 0x61,
+	0x64, 0x4d, 0x73, 0x67, 0x52, 0x65, 0x71, 0x1a, 0x11, 0x2e, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67,
+	0x65, 0x2e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3f, 0x0a, 0x0b, 0x55, 0x73,
+	0x65, 0x72, 0x4d, 0x73, 0x67, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x17, 0x2e, 0x6d, 0x65, 0x73, 0x73,
+	0x61, 0x67, 0x65, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x4d, 0x73, 0x67, 0x4c, 0x69, 0x73, 0x74, 0x52,
+	0x65, 0x71, 0x1a, 0x17, 0x2e, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x2e, 0x55, 0x73, 0x65,
+	0x72, 0x4d, 0x73, 0x67, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x12, 0x36, 0x0a, 0x0d, 0x53,
+	0x65, 0x6e, 0x64, 0x57, 0x78, 0x54, 0x6d, 0x70, 0x6c, 0x4d, 0x73, 0x67, 0x12, 0x12, 0x2e, 0x6d,
+	0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x2e, 0x57, 0x78, 0x54, 0x6d, 0x70, 0x6c, 0x4d, 0x73, 0x67,
+	0x1a, 0x11, 0x2e, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x2e, 0x52, 0x65, 0x73, 0x70, 0x6f,
+	0x6e, 0x73, 0x65, 0x12, 0x51, 0x0a, 0x11, 0x55, 0x73, 0x65, 0x72, 0x55, 0x6e, 0x72, 0x65, 0x61,
+	0x64, 0x4d, 0x73, 0x67, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x1d, 0x2e, 0x6d, 0x65, 0x73, 0x73, 0x61,
+	0x67, 0x65, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x55, 0x6e, 0x72, 0x65, 0x61, 0x64, 0x4d, 0x73, 0x67,
+	0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x1a, 0x1d, 0x2e, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67,
+	0x65, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x55, 0x6e, 0x72, 0x65, 0x61, 0x64, 0x4d, 0x73, 0x67, 0x4c,
+	0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x42, 0x0a, 0x5a, 0x08, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67,
+	0x65, 0x2f, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
 }
 
 var (

+ 28 - 28
rpc/type/message/message_grpc.pb.go

@@ -22,35 +22,35 @@ const _ = grpc.SupportPackageIsVersion7
 //
 // 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 *ChangeReadStatusReq, opts ...grpc.CallOption) (*Response, error)
-	//指定用户发消息
+	// 指定用户发消息
 	SendUserMsg(ctx context.Context, in *SendMsgRequest, 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)
-	//  查询指定用户的浮标消息
+	// 查询指定用户的浮标消息
 	FindUserBuoyMsg(ctx context.Context, in *FindUserBuoyMsgReq, opts ...grpc.CallOption) (*FindUserBuoyMsgRes, error)
-	//   一键清空未读消息
+	// 一键清空未读消息
 	ClearUnreadMsg(ctx context.Context, in *ClearUnreadMsgReq, opts ...grpc.CallOption) (*Response, error)
-	//   new用户消息列表
+	// new用户消息列表
 	UserMsgList(ctx context.Context, in *UserMsgListReq, opts ...grpc.CallOption) (*UserMsgListRes, error)
-	//  发送微信模版消息
+	// 发送微信模版消息
 	SendWxTmplMsg(ctx context.Context, in *WxTmplMsg, opts ...grpc.CallOption) (*Response, error)
-	//   官网、移动端首页、工作桌面消息滚动
+	// 官网、移动端首页、工作桌面消息滚动
 	UserUnreadMsgList(ctx context.Context, in *UserUnreadMsgListReq, opts ...grpc.CallOption) (*UserUnreadMsgListRes, error)
 }
 
@@ -201,35 +201,35 @@ func (c *messageClient) UserUnreadMsgList(ctx context.Context, in *UserUnreadMsg
 // All implementations must embed UnimplementedMessageServer
 // for forward compatibility
 type MessageServer interface {
-	//批量保存消息
+	// 批量保存消息
 	MultipleSaveMsg(context.Context, *MultipleSaveMsgReq) (*MultipleSaveMsgResp, error)
 	// 修改消息阅读状态
 	ChangeReadStatus(context.Context, *ChangeReadStatusReq) (*Response, error)
-	//指定用户发消息
+	// 指定用户发消息
 	SendUserMsg(context.Context, *SendMsgRequest) (*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)
-	//  查询指定用户的浮标消息
+	// 查询指定用户的浮标消息
 	FindUserBuoyMsg(context.Context, *FindUserBuoyMsgReq) (*FindUserBuoyMsgRes, error)
-	//   一键清空未读消息
+	// 一键清空未读消息
 	ClearUnreadMsg(context.Context, *ClearUnreadMsgReq) (*Response, error)
-	//   new用户消息列表
+	// new用户消息列表
 	UserMsgList(context.Context, *UserMsgListReq) (*UserMsgListRes, error)
-	//  发送微信模版消息
+	// 发送微信模版消息
 	SendWxTmplMsg(context.Context, *WxTmplMsg) (*Response, error)
-	//   官网、移动端首页、工作桌面消息滚动
+	// 官网、移动端首页、工作桌面消息滚动
 	UserUnreadMsgList(context.Context, *UserUnreadMsgListReq) (*UserUnreadMsgListRes, error)
 	mustEmbedUnimplementedMessageServer()
 }