Ver Fonte

Merge branch 'feature/v1.2.7' into dev/v1.2.7_rjj

# Conflicts:
#	rpc/internal/server/messageserver.go
#	rpc/messageclient/message.go
#	rpc/type/message/message.pb.go
#	rpc/type/message/message_grpc.pb.go
renjiaojiao há 2 anos atrás
pai
commit
981fedd49f

+ 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

@@ -140,16 +140,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

@@ -137,16 +137,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

@@ -115,39 +115,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)
 				}
 			}
 		}
@@ -155,28 +153,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 {
@@ -204,10 +207,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
 }
 
@@ -260,7 +265,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,

+ 6 - 0
rpc/internal/server/messageserver.go

@@ -34,6 +34,12 @@ func (s *MessageServer) ChangeReadStatus(ctx context.Context, in *message2.Chang
 	return l.ChangeReadStatus(in)
 }
 
+// 指定用户发消息
+func (s *MessageServer) SendUserMsg(ctx context.Context, in *message2.SendMsgRequest) (*message2.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) {
 	l := logic.NewGetUnreadCountLogic(ctx, s.svcCtx)

+ 4 - 2
rpc/message.proto

@@ -175,8 +175,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 {

+ 43 - 1
rpc/messageclient/message.go

@@ -4,14 +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            = 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
 	AllSortData            = message2.AllSortData
 	BuoyMessages           = message2.BuoyMessages
 	ChangeReadStatusReq    = message2.ChangeReadStatusReq
@@ -50,6 +84,8 @@ type (
 		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)
 		//   查询指定用户的历史消息记录
@@ -99,6 +135,12 @@ func (m *defaultMessage) ChangeReadStatus(ctx context.Context, in *ChangeReadSta
 	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())
+	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())

Diff do ficheiro suprimidas por serem muito extensas
+ 570 - 429
rpc/type/message/message.pb.go


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

@@ -26,6 +26,8 @@ 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)
 	//  查询指定用户的历史消息记录
@@ -78,6 +80,15 @@ func (c *messageClient) ChangeReadStatus(ctx context.Context, in *ChangeReadStat
 	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) 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...)
@@ -194,6 +205,8 @@ 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)
 	//  查询指定用户的历史消息记录
@@ -231,6 +244,9 @@ func (UnimplementedMessageServer) MultipleSaveMsg(context.Context, *MultipleSave
 func (UnimplementedMessageServer) ChangeReadStatus(context.Context, *ChangeReadStatusReq) (*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) GetUnreadCount(context.Context, *GetUnreadCountRequest) (*GetUnreadCountResponse, error) {
 	return nil, status.Errorf(codes.Unimplemented, "method GetUnreadCount not implemented")
 }
@@ -316,6 +332,24 @@ func _Message_ChangeReadStatus_Handler(srv interface{}, ctx context.Context, dec
 	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_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 {
@@ -547,6 +581,10 @@ var Message_ServiceDesc = grpc.ServiceDesc{
 			MethodName: "ChangeReadStatus",
 			Handler:    _Message_ChangeReadStatus_Handler,
 		},
+		{
+			MethodName: "SendUserMsg",
+			Handler:    _Message_SendUserMsg_Handler,
+		},
 		{
 			MethodName: "GetUnreadCount",
 			Handler:    _Message_GetUnreadCount_Handler,

Alguns ficheiros não foram mostrados porque muitos ficheiros mudaram neste diff