fuwencai hace 3 años
padre
commit
f99d6fd2ad

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

@@ -0,0 +1,29 @@
+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/tal-tech/go-zero/rest/httpx"
+)
+
+func MessageFindHandler(ctx *svc.ServiceContext) http.HandlerFunc {
+	return func(w http.ResponseWriter, r *http.Request) {
+		var req types.MessageFindReq
+		if err := httpx.Parse(r, &req); err != nil {
+			httpx.Error(w, err)
+			return
+		}
+
+		l := logic.NewMessageFindLogic(r.Context(), ctx)
+		resp, err := l.MessageFind(req)
+		if err != nil {
+			httpx.Error(w, err)
+		} else {
+			httpx.OkJson(w, resp)
+		}
+	}
+}

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

@@ -0,0 +1,29 @@
+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/tal-tech/go-zero/rest/httpx"
+)
+
+func MessageGetLastHandler(ctx *svc.ServiceContext) http.HandlerFunc {
+	return func(w http.ResponseWriter, r *http.Request) {
+		var req types.MessageGetLastReq
+		if err := httpx.Parse(r, &req); err != nil {
+			httpx.Error(w, err)
+			return
+		}
+
+		l := logic.NewMessageGetLastLogic(r.Context(), ctx)
+		resp, err := l.MessageGetLast(req)
+		if err != nil {
+			httpx.Error(w, err)
+		} else {
+			httpx.OkJson(w, resp)
+		}
+	}
+}

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

@@ -0,0 +1,29 @@
+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/tal-tech/go-zero/rest/httpx"
+)
+
+func MessageUnreadClassCountHandler(ctx *svc.ServiceContext) http.HandlerFunc {
+	return func(w http.ResponseWriter, r *http.Request) {
+		var req types.MessageUnreadClassCountReq
+		if err := httpx.Parse(r, &req); err != nil {
+			httpx.Error(w, err)
+			return
+		}
+
+		l := logic.NewMessageUnreadClassCountLogic(r.Context(), ctx)
+		resp, err := l.MessageUnreadClassCount(req)
+		if err != nil {
+			httpx.Error(w, err)
+		} else {
+			httpx.OkJson(w, resp)
+		}
+	}
+}

+ 15 - 0
api/internal/handler/routes.go

@@ -17,6 +17,21 @@ func RegisterHandlers(engine *rest.Server, serverCtx *svc.ServiceContext) {
 				Path:    "/message/messageDelete",
 				Handler: MessageDeleteHandler(serverCtx),
 			},
+			{
+				Method:  http.MethodGet,
+				Path:    "/message/messageGetLast",
+				Handler: MessageGetLastHandler(serverCtx),
+			},
+			{
+				Method:  http.MethodGet,
+				Path:    "/message/messageFind",
+				Handler: MessageFindHandler(serverCtx),
+			},
+			{
+				Method:  http.MethodGet,
+				Path:    "/message/messageUnreadClassCount",
+				Handler: MessageUnreadClassCountHandler(serverCtx),
+			},
 		},
 	)
 }

+ 70 - 0
api/internal/logic/messagefindlogic.go

@@ -0,0 +1,70 @@
+package logic
+
+import (
+	"app.yhyue.com/moapp/MessageCenter/rpc/messageclient"
+	"context"
+	"log"
+
+	"app.yhyue.com/moapp/MessageCenter/api/internal/svc"
+	"app.yhyue.com/moapp/MessageCenter/api/internal/types"
+
+	"github.com/tal-tech/go-zero/core/logx"
+)
+
+type MessageFindLogic struct {
+	logx.Logger
+	ctx    context.Context
+	svcCtx *svc.ServiceContext
+}
+
+func NewMessageFindLogic(ctx context.Context, svcCtx *svc.ServiceContext) MessageFindLogic {
+	return MessageFindLogic{
+		Logger: logx.WithContext(ctx),
+		ctx:    ctx,
+		svcCtx: svcCtx,
+	}
+}
+
+func (l *MessageFindLogic) MessageFind(req types.MessageFindReq) (*types.MessageFindRes, error) {
+	// todo: add your logic here and delete this line
+	result := &types.MessageFindRes{}
+	log.Println(req)
+	lsi := l.svcCtx.MessageCenter
+	resp, err := lsi.FindUserMsg(l.ctx, &messageclient.FindUserMsgReq{
+		MsgType:       req.MsgType,
+		Appid:         req.AppId,
+		UserId:        req.UserId,
+		ReceiveUserId: req.ReceiveUserId,
+		Read:          req.IsRead,
+		OffSet:        req.Offset,
+		PageSize:      req.PageSize,
+	})
+	if err != nil {
+		return nil, err
+	}
+	//data := make([]map[string]interface{}, 0)
+
+	result.Code = resp.Code
+	result.Message = resp.Message
+	result.Total = resp.Count
+	result.Status = 0
+	for _, v := range resp.Data {
+		result.Data = append(result.Data, map[string]interface{}{
+			"id":           v.Id,
+			"appid":        v.Appid,
+			"receive_name": v.ReceiveName,
+			"send_userid":  v.SendUserId,
+			"send_name":    v.SendName,
+			"createtime":   v.Createtime,
+			"title":        v.Title,
+			"msg_type":     v.MsgType,
+			"link":         v.Link,
+			"cite_id":      v.CiteId,
+			"content":      v.Content,
+			"isRead":       v.IsRead,
+		})
+
+	}
+
+	return result, nil
+}

+ 61 - 0
api/internal/logic/messagegetlastlogic.go

@@ -0,0 +1,61 @@
+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/tal-tech/go-zero/core/logx"
+)
+
+type MessageGetLastLogic struct {
+	logx.Logger
+	ctx    context.Context
+	svcCtx *svc.ServiceContext
+}
+
+func NewMessageGetLastLogic(ctx context.Context, svcCtx *svc.ServiceContext) MessageGetLastLogic {
+	return MessageGetLastLogic{
+		Logger: logx.WithContext(ctx),
+		ctx:    ctx,
+		svcCtx: svcCtx,
+	}
+}
+
+func (l *MessageGetLastLogic) MessageGetLast(req types.MessageGetLastReq) (*types.MessageGetLastRes, error) {
+	// todo: add your logic here and delete this line
+	result := &types.MessageGetLastRes{}
+	log.Println(req)
+	lsi := l.svcCtx.MessageCenter
+	resp, err := lsi.GetLastMessage(l.ctx, &messageclient.GetLastMessageReq{
+		MsgType: req.MsgType,
+		Appid:   req.AppId,
+		UserId:  req.UserId,
+	})
+	if err != nil {
+		return nil, err
+	}
+	//data := make([]map[string]interface{}, 0)
+
+	result.Code = resp.Code
+	result.Message = resp.Message
+	result.Status = 0
+	result.Data = map[string]interface{}{
+		"id":           resp.Data.Id,
+		"appid":        resp.Data.Appid,
+		"receive_name": resp.Data.ReceiveName,
+		"send_userid":  resp.Data.SendUserId,
+		"send_name":    resp.Data.SendName,
+		"createtime":   resp.Data.Createtime,
+		"title":        resp.Data.Title,
+		"msg_type":     resp.Data.MsgType,
+		"link":         resp.Data.Link,
+		"cite_id":      resp.Data.CiteId,
+		"content":      resp.Data.Content,
+		"isRead":       resp.Data.IsRead,
+	}
+
+	return result, nil
+}

+ 70 - 0
api/internal/logic/messageunreadclasscountlogic.go

@@ -0,0 +1,70 @@
+package logic
+
+import (
+	"app.yhyue.com/moapp/MessageCenter/rpc/messageclient"
+	"context"
+	"log"
+
+	"app.yhyue.com/moapp/MessageCenter/api/internal/svc"
+	"app.yhyue.com/moapp/MessageCenter/api/internal/types"
+
+	"github.com/tal-tech/go-zero/core/logx"
+)
+
+type MessageUnreadClassCountLogic struct {
+	logx.Logger
+	ctx    context.Context
+	svcCtx *svc.ServiceContext
+}
+
+func NewMessageUnreadClassCountLogic(ctx context.Context, svcCtx *svc.ServiceContext) MessageUnreadClassCountLogic {
+	return MessageUnreadClassCountLogic{
+		Logger: logx.WithContext(ctx),
+		ctx:    ctx,
+		svcCtx: svcCtx,
+	}
+}
+
+func (l *MessageUnreadClassCountLogic) MessageUnreadClassCount(req types.MessageUnreadClassCountReq) (*types.MessageUnreadClassCountRes, error) {
+	// todo: add your logic here and delete this line
+	result := &types.MessageUnreadClassCountRes{}
+	log.Println(req)
+	lsi := l.svcCtx.MessageCenter
+	resp, err := lsi.GetUnreadClassCount(l.ctx, &messageclient.GetUnreadClassCountReq{
+		Appid:  req.AppId,
+		UserId: req.UserId,
+	})
+	if err != nil {
+		return nil, err
+	}
+	//data := make([]map[string]interface{}, 0)
+
+	result.Code = resp.Code
+	result.Message = resp.Message
+	result.Status = 0
+	for _, v := range resp.Data {
+		result.Data = append(result.Data, map[string]interface{}{
+			"type":  v.MsgType,
+			"count": v.Count,
+		})
+
+	}
+	for _, v2 := range resp.Info {
+		result.Info = append(result.Info, map[string]interface{}{
+			"id":           v2.Id,
+			"appid":        v2.Appid,
+			"receive_name": v2.ReceiveName,
+			"send_userid":  v2.SendUserId,
+			"send_name":    v2.SendName,
+			"createtime":   v2.Createtime,
+			"title":        v2.Title,
+			"msg_type":     v2.MsgType,
+			"link":         v2.Link,
+			"cite_id":      v2.CiteId,
+			"content":      v2.Content,
+			"isRead":       v2.IsRead,
+		})
+
+	}
+	return result, nil
+}

+ 43 - 0
api/internal/types/types.go

@@ -11,3 +11,46 @@ type MessageDeleteResp struct {
 	Message string `json:"message"`
 	Status  int64  `json:"isOk"`
 }
+
+type MessageGetLastReq struct {
+	UserId  string `form:"userId"`
+	AppId   string `form:"appId"`
+	MsgType int64  `form:"msgType"`
+}
+
+type MessageGetLastRes struct {
+	Code    int64                  `json:"code"`
+	Message string                 `json:"message"`
+	Data    map[string]interface{} `json:"data"`
+	Status  int64                  `json:"isOk"`
+}
+
+type MessageFindReq struct {
+	UserId   string `form:"userId"`
+	AppId    string `form:"appId"`
+	MsgType  int64  `form:"msgType"`  // 是否限制消息类型  -1 不限制
+	IsRead   int64  `form:"isRead"`   // 是否限制未读    -1 不限制
+	Offset   int64  `form:"offset"`   // 页数
+	PageSize int64  `form:"pageSize"` //
+}
+
+type MessageFindRes struct {
+	Code    int64                    `json:"code"`
+	Message string                   `json:"message"`
+	Status  int64                    `json:"isOk"`
+	Data    []map[string]interface{} `json:"data"`
+	Total   int64                    `json:"total"`
+}
+
+type MessageUnreadClassCountReq struct {
+	UserId string `form:"userId"`
+	AppId  string `form:"appId"`
+}
+
+type MessageUnreadClassCountRes struct {
+	Code    int64                    `json:"code"`
+	Status  int64                    `json:"isOk"`
+	Message string                   `json:"message"`
+	Data    []map[string]interface{} `json:"data"`
+	Info    []map[string]interface{} `json:"info"`
+}

+ 45 - 3
api/message.api

@@ -17,9 +17,51 @@ type MessageDeleteResp {
 	Message string `json:"message"`
 	Status  int64  `json:"isOk"`
 }
-
+type MessageGetLastReq {
+	UserId  string `form:"userId"`
+	AppId   string `form:"appId"`
+	MsgType int64  `form:"msgType"`
+}
+type MessageGetLastRes {
+	Code    int64                  `json:"code"`
+	Message string                 `json:"message"`
+	Data    map[string]interface{} `json:"data"`
+	Status  int64                  `json:"isOk"`
+}
+type MessageFindReq {
+	UserId string `form:"userId"`
+	AppId  string `form:"appId"`
+	//    MsgType int64 `form:"msgType"`
+	MsgType  int64 `form:"msgType"`  // 是否限制消息类型  -1 不限制
+	IsRead   int64 `form:"isRead"`   // 是否限制未读    -1 不限制
+	Offset   int64 `form:"offset"`   // 页数
+	PageSize int64 `form:"pageSize"` //
+}
+type MessageFindRes {
+	Code    int64                    `json:"code"`
+	Message string                   `json:"message"`
+	Status  int64                    `json:"isOk"`
+	Data    []map[string]interface{} `json:"data"`
+	Total   int64                    `json:"total"`
+}
+type MessageUnreadClassCountReq {
+	UserId string `form:"userId"`
+	AppId  string `form:"appId"`
+}
+type MessageUnreadClassCountRes {
+	Code    int64                    `json:"code"`
+	Status  int64                    `json:"isOk"`
+	Message string                   `json:"message"`
+	Data    []map[string]interface{} `json:"data"`
+	Info    []map[string]interface{} `json:"info"`
+}
 service message-api {
 	@handler MessageDeleteHandler // TODO: set handler name and delete this comment
-	get /message/messageDelete(MessageDeleteReq) returns(MessageDeleteResp)
-	
+	get /message/messageDelete (MessageDeleteReq) returns (MessageDeleteResp)
+	@handler MessageGetLastHandler // 获取指定类型的最新一条未读消息
+	get /message/messageGetLast (MessageGetLastReq) returns (MessageGetLastRes)
+	@handler MessageFindHandler // 获取指定用户的历史消息  条件可选 消息类型 是否未读
+	get /message/messageFind (MessageFindReq) returns (MessageFindRes)
+	@handler MessageUnreadClassCountHandler // 获取用户未读消息分类及分类下的最新消息
+	get /message/messageUnreadClassCount (MessageUnreadClassCountReq) returns (MessageUnreadClassCountRes)
 }

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

@@ -31,7 +31,7 @@ func (l *GetLastMessageLogic) GetLastMessage(in *message.GetLastMessageReq) (*me
 	data,err := m.LastMessage(in.UserId,in.Appid,in.MsgType)
 	code := 0
 	msg :=""
-	if err != nil{
+	if err == nil{
 		code = 1
 	}
 	return &message.GetLastMessageRes{

+ 14 - 2
rpc/internal/logic/getunreadclasscountlogic.go

@@ -1,6 +1,7 @@
 package logic
 
 import (
+	"app.yhyue.com/moapp/MessageCenter/service"
 	"context"
 
 	"app.yhyue.com/moapp/MessageCenter/rpc/internal/svc"
@@ -26,6 +27,17 @@ func NewGetUnreadClassCountLogic(ctx context.Context, svcCtx *svc.ServiceContext
 //   获取指定用户的未读消息分类及数量 及分类的最新消息
 func (l *GetUnreadClassCountLogic) GetUnreadClassCount(in *message.GetUnreadClassCountReq) (*message.GetUnreadClassCountRes, error) {
 	// todo: add your logic here and delete this line
-
-	return &message.GetUnreadClassCountRes{}, nil
+	m := service.MessageService{}
+	count, info, err := m.ClassCountAndMessage(in.UserId, in.Appid)
+	code := 0
+	msg := ""
+	if err == nil {
+		code = 1
+	}
+	return &message.GetUnreadClassCountRes{
+		Code:    int64(code),
+		Message: msg,
+		Data:    count,
+		Info:    info,
+	}, nil
 }

+ 1 - 0
rpc/message.proto

@@ -74,6 +74,7 @@ message Messages {
   int64 isRead = 10; //已读未读 0:未读  1:已读
   string createtime = 11;
   string appid = 12; //应用标识
+  int64 id=13;//消息id
 }
 
 message FindUserMsgRes {

+ 11 - 2
rpc/message/message.pb.go

@@ -664,6 +664,7 @@ type Messages struct {
 	IsRead        int64  `protobuf:"varint,10,opt,name=isRead,proto3" json:"isRead,omitempty"`             //已读未读 0:未读  1:已读
 	Createtime    string `protobuf:"bytes,11,opt,name=createtime,proto3" json:"createtime,omitempty"`
 	Appid         string `protobuf:"bytes,12,opt,name=appid,proto3" json:"appid,omitempty"` //应用标识
+	Id            int64  `protobuf:"varint,13,opt,name=id,proto3" json:"id,omitempty"`      //消息id
 }
 
 func (x *Messages) Reset() {
@@ -782,6 +783,13 @@ func (x *Messages) GetAppid() string {
 	return ""
 }
 
+func (x *Messages) GetId() int64 {
+	if x != nil {
+		return x.Id
+	}
+	return 0
+}
+
 type FindUserMsgRes struct {
 	state         protoimpl.MessageState
 	sizeCache     protoimpl.SizeCache
@@ -1427,7 +1435,7 @@ var file_message_proto_rawDesc = []byte{
 	0x28, 0x03, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x18, 0x0a, 0x07,
 	0x6d, 0x73, 0x67, 0x54, 0x79, 0x70, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x6d,
 	0x73, 0x67, 0x54, 0x79, 0x70, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x72, 0x65, 0x61, 0x64, 0x18, 0x07,
-	0x20, 0x01, 0x28, 0x03, 0x52, 0x04, 0x72, 0x65, 0x61, 0x64, 0x22, 0xd2, 0x02, 0x0a, 0x08, 0x4d,
+	0x20, 0x01, 0x28, 0x03, 0x52, 0x04, 0x72, 0x65, 0x61, 0x64, 0x22, 0xe2, 0x02, 0x0a, 0x08, 0x4d,
 	0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x12, 0x24, 0x0a, 0x0d, 0x72, 0x65, 0x63, 0x65, 0x69,
 	0x76, 0x65, 0x55, 0x73, 0x65, 0x72, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d,
 	0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x55, 0x73, 0x65, 0x72, 0x49, 0x64, 0x12, 0x20, 0x0a,
@@ -1448,7 +1456,8 @@ var file_message_proto_rawDesc = []byte{
 	0x03, 0x52, 0x06, 0x69, 0x73, 0x52, 0x65, 0x61, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x63, 0x72, 0x65,
 	0x61, 0x74, 0x65, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x63,
 	0x72, 0x65, 0x61, 0x74, 0x65, 0x74, 0x69, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x61, 0x70, 0x70,
-	0x69, 0x64, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x61, 0x70, 0x70, 0x69, 0x64, 0x22,
+	0x69, 0x64, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x61, 0x70, 0x70, 0x69, 0x64, 0x12,
+	0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x03, 0x52, 0x02, 0x69, 0x64, 0x22,
 	0x7b, 0x0a, 0x0e, 0x46, 0x69, 0x6e, 0x64, 0x55, 0x73, 0x65, 0x72, 0x4d, 0x73, 0x67, 0x52, 0x65,
 	0x73, 0x12, 0x12, 0x0a, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52,
 	0x04, 0x63, 0x6f, 0x64, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65,

+ 11 - 11
rpc/messageclient/message.go

@@ -14,24 +14,24 @@ import (
 )
 
 type (
-	SendMsgRequest               = message.SendMsgRequest
-	Response                     = message.Response
-	MessageDetailReq             = message.MessageDetailReq
-	GetLastMessageRes            = message.GetLastMessageRes
 	ResCount                     = message.ResCount
-	DeleteSingleMessageRequest   = message.DeleteSingleMessageRequest
 	FindUserMsgReq               = message.FindUserMsgReq
-	Messages                     = message.Messages
-	GetLastMessageReq            = message.GetLastMessageReq
+	MessageDetailReq             = message.MessageDetailReq
+	GetUnreadClassCountRes       = message.GetUnreadClassCountRes
 	DeleteMultipleMessageRequest = message.DeleteMultipleMessageRequest
-	GetUnreadCountRequest        = message.GetUnreadCountRequest
 	GetUnreadCountResponse       = message.GetUnreadCountResponse
-	GetUnreadClassCountRes       = message.GetUnreadClassCountRes
+	MessageDetailResp            = message.MessageDetailResp
+	GetLastMessageReq            = message.GetLastMessageReq
+	GetLastMessageRes            = message.GetLastMessageRes
 	ChangeReadStatusRequest      = message.ChangeReadStatusRequest
-	FindUserMsgRes               = message.FindUserMsgRes
+	DeleteSingleMessageRequest   = message.DeleteSingleMessageRequest
+	GetUnreadCountRequest        = message.GetUnreadCountRequest
+	Response                     = message.Response
 	GetClassUnreadCountReq       = message.GetClassUnreadCountReq
-	MessageDetailResp            = message.MessageDetailResp
 	GetUnreadClassCountReq       = message.GetUnreadClassCountReq
+	SendMsgRequest               = message.SendMsgRequest
+	Messages                     = message.Messages
+	FindUserMsgRes               = message.FindUserMsgRes
 
 	Message interface {
 		//  修改消息阅读状态

+ 6 - 4
service/messageService.go

@@ -88,6 +88,7 @@ func (service *MessageService) LastMessage(userId string, appId string, msgType
 	if len(m1) > 0 {
 		m := m1[0]
 		msg := message.Messages{
+			Id: int64(m.Id),
 			Appid:         m.AppId,
 			ReceiveUserId: m.ReceiveUserid,
 			ReceiveName:   m.ReceiveName,
@@ -110,12 +111,12 @@ func (service *MessageService) LastMessage(userId string, appId string, msgType
 }
 
 // 获取用户未读消息分类及数量 及分类下的最新一条消息
-func (service *MessageService) ClassCountAndMessage(userId string, appId string) ([]message.ResCount, []*message.Messages, error) {
+func (service *MessageService) ClassCountAndMessage(userId string, appId string) ([]*message.ResCount, []*message.Messages, error) {
 	orm := entity.Engine.NewSession()
 	log.Println("123")
 	defer orm.Close()
 	//m := []*message.Messages{}
-	query, err := orm.QueryInterface("select count(*) as count,msg_type from message where receive_userid=? and isdel=1 and appid=? and isRead=0", userId, appId)
+	query, err := orm.QueryInterface("select count(*) as count,msg_type from message where receive_userid=? and isdel=1 and appid=? and isRead=0 group by msg_type", userId, appId)
 	if err != nil {
 		return nil, nil, err
 	}
@@ -124,12 +125,12 @@ func (service *MessageService) ClassCountAndMessage(userId string, appId string)
 		log.Println("咋回事")
 		return nil, nil, errors.New("查询未读消息失败")
 	}
-	typeCount := []message.ResCount{}
+	typeCount := []*message.ResCount{}
 	// 未读消息分类及数量
 	if query != nil && len(query) > 0 {
 		for _, v := range query {
 			log.Println(v)
-			typeCount = append(typeCount, message.ResCount{MsgType: v["msg_type"].(int64), Count: v["count"].(int64)})
+			typeCount = append(typeCount,&message.ResCount{MsgType: v["msg_type"].(int64), Count: v["count"].(int64)})
 		}
 	}
 	var m1 []*entity.Message
@@ -146,6 +147,7 @@ func (service *MessageService) ClassCountAndMessage(userId string, appId string)
 			if !existType[int64(v1.MsgType)] {
 				existType[int64(v1.MsgType)] = true
 				m2 = append(m2, &message.Messages{
+					Id: int64(v1.Id),
 					Appid:         v1.AppId,
 					ReceiveUserId: v1.ReceiveUserid,
 					ReceiveName:   v1.ReceiveName,

+ 1 - 0
service/sendMsg.go

@@ -102,6 +102,7 @@ func FindUserMsg(this message.FindUserMsgReq) message.FindUserMsgRes {
 		log.Println("数据:", messages)
 		for _, v := range messages {
 			data.Data = append(data.Data, &message.Messages{
+				Id: int64(v.Id),
 				Appid:         v.AppId,
 				ReceiveUserId: v.ReceiveUserid,
 				ReceiveName:   v.ReceiveName,