Bläddra i källkod

查询用户未读消息api

renjiaojiao 2 år sedan
förälder
incheckning
5a20189674

+ 0 - 29
api/internal/handler/messagesetreadstatushandler.go

@@ -1,29 +0,0 @@
-package handler
-
-import (
-	"net/http"
-
-	"app.yhyue.com/moapp/MessageCenter/api/internal/logic"
-	"app.yhyue.com/moapp/MessageCenter/api/internal/svc"
-	"app.yhyue.com/moapp/MessageCenter/api/internal/types"
-
-	"github.com/zeromicro/go-zero/rest/httpx"
-)
-
-func MessageSetReadStatusHandler(ctx *svc.ServiceContext) http.HandlerFunc {
-	return func(w http.ResponseWriter, r *http.Request) {
-		var req types.MsgReadStatusReq
-		if err := httpx.Parse(r, &req); err != nil {
-			httpx.Error(w, err)
-			return
-		}
-
-		l := logic.NewMessageSetReadStatusLogic(r.Context(), ctx)
-		resp, err := l.MessageSetReadStatus(req)
-		if err != nil {
-			httpx.Error(w, err)
-		} else {
-			httpx.OkJson(w, resp)
-		}
-	}
-}

+ 5 - 10
api/internal/handler/routes.go

@@ -12,11 +12,6 @@ import (
 func RegisterHandlers(server *rest.Server, serverCtx *svc.ServiceContext) {
 	server.AddRoutes(
 		[]rest.Route{
-			{
-				Method:  http.MethodGet,
-				Path:    "/messageCenter/messageDelete",
-				Handler: MessageDeleteHandler(serverCtx),
-			},
 			{
 				Method:  http.MethodGet,
 				Path:    "/messageCenter/messageDetail",
@@ -47,11 +42,6 @@ func RegisterHandlers(server *rest.Server, serverCtx *svc.ServiceContext) {
 				Path:    "/messageCenter/messageType",
 				Handler: MessageTypeHandler(serverCtx),
 			},
-			{
-				Method:  http.MethodPost,
-				Path:    "/messageCenter/messageSetReadStatus",
-				Handler: MessageSetReadStatusHandler(serverCtx),
-			},
 			{
 				Method:  http.MethodPost,
 				Path:    "/messageCenter/markRead",
@@ -82,6 +72,11 @@ func RegisterHandlers(server *rest.Server, serverCtx *svc.ServiceContext) {
 				Path:    "/messageCenter/MessageList",
 				Handler: MessageListHandler(serverCtx),
 			},
+			{
+				Method:  http.MethodPost,
+				Path:    "/messageCenter/unreadMessages",
+				Handler: UnreadMessagesHandler(serverCtx),
+			},
 		},
 	)
 }

+ 4 - 5
api/internal/handler/messagedeletehandler.go → api/internal/handler/unreadmessageshandler.go

@@ -6,20 +6,19 @@ import (
 	"app.yhyue.com/moapp/MessageCenter/api/internal/logic"
 	"app.yhyue.com/moapp/MessageCenter/api/internal/svc"
 	"app.yhyue.com/moapp/MessageCenter/api/internal/types"
-
 	"github.com/zeromicro/go-zero/rest/httpx"
 )
 
-func MessageDeleteHandler(ctx *svc.ServiceContext) http.HandlerFunc {
+func UnreadMessagesHandler(svcCtx *svc.ServiceContext) http.HandlerFunc {
 	return func(w http.ResponseWriter, r *http.Request) {
-		var req types.MessageDeleteReq
+		var req types.UnreadMessageReq
 		if err := httpx.Parse(r, &req); err != nil {
 			httpx.Error(w, err)
 			return
 		}
 
-		l := logic.NewMessageDeleteLogic(r.Context(), ctx)
-		resp, err := l.MessageDelete(req)
+		l := logic.NewUnreadMessagesLogic(r.Context(), svcCtx)
+		resp, err := l.UnreadMessages(&req)
 		if err != nil {
 			httpx.Error(w, err)
 		} else {

+ 1 - 1
api/internal/logic/markreadlogic.go

@@ -26,7 +26,7 @@ func NewMarkReadLogic(ctx context.Context, svcCtx *svc.ServiceContext) MarkReadL
 func (l *MarkReadLogic) MarkRead(req types.MarkReadReq) (*types.MarkReadRes, error) {
 	result := &types.MarkReadRes{}
 	lsi := l.svcCtx.MessageCenter
-	resp, err := lsi.ChangeReadStatus(l.ctx, &messageclient.ChangeReadStatusRequest{
+	resp, err := lsi.ChangeReadStatus(l.ctx, &messageclient.ChangeReadStatusReq{
 		Appid:      req.AppId,
 		ReadStatus: 1,
 		Id:         req.MsgId,

+ 0 - 41
api/internal/logic/messagesetreadstatuslogic.go

@@ -1,41 +0,0 @@
-package logic
-
-import (
-	"app.yhyue.com/moapp/MessageCenter/api/internal/svc"
-	"app.yhyue.com/moapp/MessageCenter/api/internal/types"
-	"app.yhyue.com/moapp/MessageCenter/rpc/messageclient"
-	"context"
-
-	"github.com/zeromicro/go-zero/core/logx"
-)
-
-type MessageSetReadStatusLogic struct {
-	logx.Logger
-	ctx    context.Context
-	svcCtx *svc.ServiceContext
-}
-
-func NewMessageSetReadStatusLogic(ctx context.Context, svcCtx *svc.ServiceContext) MessageSetReadStatusLogic {
-	return MessageSetReadStatusLogic{
-		Logger: logx.WithContext(ctx),
-		ctx:    ctx,
-		svcCtx: svcCtx,
-	}
-}
-
-func (l *MessageSetReadStatusLogic) MessageSetReadStatus(req types.MsgReadStatusReq) (*types.MsgReadStatusResp, error) {
-	result := &types.MsgReadStatusResp{}
-	lsi := l.svcCtx.MessageCenter
-	resp, err := lsi.UpdateMessageRead(l.ctx, &messageclient.UpdateMessageReadReq{
-		AppId:         req.AppId,
-		ReceiveUserid: req.UserId,
-		MsgType:       int64(req.MsgType),
-	})
-	if err != nil {
-		return nil, err
-	}
-	result.Code = resp.Code
-	result.Message = resp.Message
-	result.Status = resp.Status
-	return result, nil
-}

+ 60 - 0
api/internal/logic/unreadmessageslogic.go

@@ -0,0 +1,60 @@
+package logic
+
+import (
+	"app.yhyue.com/moapp/MessageCenter/api/internal/svc"
+	"app.yhyue.com/moapp/MessageCenter/api/internal/types"
+	"app.yhyue.com/moapp/MessageCenter/rpc/messageclient"
+	"context"
+	"log"
+
+	"github.com/zeromicro/go-zero/core/logx"
+)
+
+type UnreadMessagesLogic struct {
+	logx.Logger
+	ctx    context.Context
+	svcCtx *svc.ServiceContext
+}
+
+func NewUnreadMessagesLogic(ctx context.Context, svcCtx *svc.ServiceContext) *UnreadMessagesLogic {
+	return &UnreadMessagesLogic{
+		Logger: logx.WithContext(ctx),
+		ctx:    ctx,
+		svcCtx: svcCtx,
+	}
+}
+
+func (l *UnreadMessagesLogic) UnreadMessages(req *types.UnreadMessageReq) (resp *types.UnreadMessageResp, err error) {
+	result := &types.UnreadMessageResp{}
+	lsi := l.svcCtx.MessageCenter
+	res, err := lsi.UserUnreadMsgList(l.ctx, &messageclient.UserUnreadMsgListReq{
+		UserId:   req.UserId,
+		Appid:    req.AppId,
+		PageSize: req.PageSize,
+		OffSet:   req.Offset,
+	})
+	if err != nil {
+		return nil, err
+	}
+	if res.List != nil && len(res.List) > 0 {
+		for _, v := range res.List {
+			result.Data = append(result.Data, map[string]interface{}{
+				"id":         v.Id,
+				"appid":      v.Appid,
+				"createtime": v.Createtime,
+				"title":      v.Title,
+				"msg_type":   v.MsgType,
+				"link":       v.Link,
+				"content":    v.Content,
+				"isRead":     v.IsRead,
+				"msgLogId":   v.MsgLogId,
+				"url":        v.Url,
+			})
+		}
+	}
+	log.Println(result.Data)
+	result.Code = res.Code
+	result.Message = res.Message
+	result.Total = res.Count
+	return result, nil
+}

+ 16 - 2
api/internal/types/types.go

@@ -63,8 +63,8 @@ type MessageUnreadClassCountRes struct {
 }
 
 type MessageUnreadCountReq struct {
-	UserId string `form:"userId"`
-	AppId  string `form:"appId"`
+	UserId string `header:"mgoUserId"`
+	AppId  string `header:"appId"`
 }
 
 type MessageUnreadCountRes struct {
@@ -179,3 +179,17 @@ type MessageListResp struct {
 	Total   int64                    `json:"total"`
 	Column  []map[string]interface{} `json:"column"`
 }
+
+type UnreadMessageReq struct {
+	UserId   string `header:"mgoUserId"`
+	AppId    string `header:"appId"`
+	Offset   int64  `json:"offset"` //
+	PageSize int64  `json:"pageSize"`
+}
+
+type UnreadMessageResp struct {
+	Code    int64                    `json:"code"`
+	Message string                   `json:"message"`
+	Data    []map[string]interface{} `json:"data"`
+	Total   int64                    `json:"total"`
+}

+ 19 - 4
api/message.api

@@ -64,8 +64,8 @@ type MessageUnreadClassCountRes {
 	Data    []map[string]interface{} `json:"data"`
 }
 type MessageUnreadCountReq {
-	UserId string `form:"userId"`
-	AppId  string `form:"appId"`
+	UserId string `header:"mgoUserId"`
+	AppId  string `header:"appId"`
 }
 type MessageUnreadCountRes {
 	Code    int64                  `json:"code"`
@@ -176,11 +176,23 @@ type MessageListResp {
 	Total   int64                    `json:"total"`
 	Column  []map[string]interface{} `json:"column"`
 }
+type UnreadMessageReq {
+	UserId   string `header:"mgoUserId"`
+	AppId    string `header:"appId"`
+	Offset   int64  `json:"offset"` //
+	PageSize int64  `json:"pageSize"`
+}
+type UnreadMessageResp {
+	Code    int64                    `json:"code"`
+	Message string                   `json:"message"`
+	Data    []map[string]interface{} `json:"data"`
+	Total   int64                    `json:"total"`
+}
 
 service message-api {
-
+	
 	//查询消息详情
-	@handler MessageDetailHandler // TODO: set handler name and delete this comment
+	@handler MessageDetailHandler
 	get /messageCenter/messageDetail (MessageDetailReq) returns (MessageDetailResp)
 	// 获取指定类型的最新一条未读消息
 	@handler MessageGetLastHandler
@@ -218,4 +230,7 @@ service message-api {
 	
 	@handler MessageList
 	post /messageCenter/MessageList (MessageListReq) returns (MessageListResp)
+	
+	@handler UnreadMessages
+	post /messageCenter/unreadMessages (UnreadMessageReq) returns (UnreadMessageResp)
 }

+ 1 - 0
rpc/internal/common/sendMsg.go

@@ -269,6 +269,7 @@ func UserUnreadMsgList(this *message.UserUnreadMsgListReq) (int64, []*message.Me
 		"appid":          this.Appid,
 		"isRead":         0,
 	}
+	log.Println(cquery)
 	count = entity.Mysql.Count("message", cquery)
 	if count > 0 {
 		res := entity.Mysql.Find("message", cquery, "", "createtime desc", (int(this.OffSet)-1)*int(this.PageSize), int(this.PageSize))

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

@@ -23,7 +23,7 @@ func NewChangeReadStatusLogic(ctx context.Context, svcCtx *svc.ServiceContext) *
 	}
 }
 
-func (l *ChangeReadStatusLogic) ChangeReadStatus(in *messageclient.ChangeReadStatusRequest) (*messageclient.Response, error) {
+func (l *ChangeReadStatusLogic) ChangeReadStatus(in *messageclient.ChangeReadStatusReq) (*messageclient.Response, error) {
 	// todo: add your logic here and delete this line
 	m := &service.MessageService{}
 	code, msg := m.ChangeReadStatus(in)

+ 2 - 0
rpc/internal/logic/userunreadmsglistlogic.go

@@ -4,6 +4,7 @@ import (
 	service "app.yhyue.com/moapp/MessageCenter/rpc/internal/common"
 	"app.yhyue.com/moapp/MessageCenter/rpc/type/message"
 	"context"
+	"log"
 
 	"app.yhyue.com/moapp/MessageCenter/rpc/internal/svc"
 	"github.com/zeromicro/go-zero/core/logx"
@@ -27,6 +28,7 @@ func NewUserUnreadMsgListLogic(ctx context.Context, svcCtx *svc.ServiceContext)
 func (l *UserUnreadMsgListLogic) UserUnreadMsgList(in *message.UserUnreadMsgListReq) (*message.UserUnreadMsgListRes, error) {
 	data := new(message.UserUnreadMsgListRes)
 	count, res := service.UserUnreadMsgList(in) //具体信息
+	log.Println(count, res)
 	if count > 0 && len(res) > 0 {
 		data.List = res
 		data.Count = count

+ 79 - 39
rpc/messageclient/message.go

@@ -4,45 +4,53 @@
 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 (
-	BuoyMessages            = message.BuoyMessages
-	ChangeReadStatusRequest = message.ChangeReadStatusReq
-	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
+	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
 
 	Message interface {
 		// 批量保存消息
 		MultipleSaveMsg(ctx context.Context, in *MultipleSaveMsgReq, opts ...grpc.CallOption) (*MultipleSaveMsgResp, error)
 		//  修改消息阅读状态
-		ChangeReadStatus(ctx context.Context, in *ChangeReadStatusRequest, opts ...grpc.CallOption) (*Response, error)
+		ChangeReadStatus(ctx context.Context, in *ChangeReadStatusReq, opts ...grpc.CallOption) (*Response, error)
 		// 指定用户发消息
 		SendUserMsg(ctx context.Context, in *SendMsgRequest, opts ...grpc.CallOption) (*Response, error)
 		//   查询指定用户未读消息合计
@@ -61,6 +69,14 @@ type (
 		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用户消息列表
+		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)
 	}
 
 	defaultMessage struct {
@@ -76,66 +92,90 @@ func NewMessage(cli zrpc.Client) Message {
 
 // 批量保存消息
 func (m *defaultMessage) MultipleSaveMsg(ctx context.Context, in *MultipleSaveMsgReq, opts ...grpc.CallOption) (*MultipleSaveMsgResp, error) {
-	client := message.NewMessageClient(m.cli.Conn())
+	client := message2.NewMessageClient(m.cli.Conn())
 	return client.MultipleSaveMsg(ctx, in, opts...)
 }
 
 //  修改消息阅读状态
-func (m *defaultMessage) ChangeReadStatus(ctx context.Context, in *ChangeReadStatusRequest, opts ...grpc.CallOption) (*Response, error) {
-	client := message.NewMessageClient(m.cli.Conn())
+func (m *defaultMessage) ChangeReadStatus(ctx context.Context, in *ChangeReadStatusReq, opts ...grpc.CallOption) (*Response, error) {
+	client := message2.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 := message.NewMessageClient(m.cli.Conn())
+	client := message2.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 := message.NewMessageClient(m.cli.Conn())
+	client := message2.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 := message.NewMessageClient(m.cli.Conn())
+	client := message2.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 := message.NewMessageClient(m.cli.Conn())
+	client := message2.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 := message.NewMessageClient(m.cli.Conn())
+	client := message2.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 := message.NewMessageClient(m.cli.Conn())
+	client := message2.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 := message.NewMessageClient(m.cli.Conn())
+	client := message2.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 := message.NewMessageClient(m.cli.Conn())
+	client := message2.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 := message.NewMessageClient(m.cli.Conn())
+	client := message2.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())
+	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())
+	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())
+	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())
+	return client.UserUnreadMsgList(ctx, in, opts...)
+}