From e4e5608c8c6c78afded9400672e9ed4b8d3b3d4c Mon Sep 17 00:00:00 2001
From: wenxu12345 <44203734@qq.com>
Date: Tue, 7 Dec 2021 14:34:41 +0800
Subject: [PATCH] ReceiveMessageOpt

---
 internal/rpc/user/conversation.go | 59 +++++++++++++++++++++++++++++++
 1 file changed, 59 insertions(+)
 create mode 100644 internal/rpc/user/conversation.go

diff --git a/internal/rpc/user/conversation.go b/internal/rpc/user/conversation.go
new file mode 100644
index 000000000..1f87c1cd4
--- /dev/null
+++ b/internal/rpc/user/conversation.go
@@ -0,0 +1,59 @@
+package user
+
+import (
+	"Open_IM/pkg/common/constant"
+	"Open_IM/pkg/common/db"
+	"Open_IM/pkg/common/log"
+	pbUser "Open_IM/pkg/proto/user"
+	"context"
+)
+
+func (s *userServer) SetReceiveMessageOpt(ctx context.Context, req *pbUser.SetReceiveMessageOptReq) (*pbUser.SetReceiveMessageOptResp, error) {
+	m := make(map[string]int, len(req.ConversationId))
+	for _, v := range req.ConversationId {
+		m[v] = int(req.Opt)
+	}
+	err := db.DB.SetMultiConversationMsgOpt(req.UId, m)
+	if err != nil {
+		log.NewError(req.OperationID, "SetMultiConversationMsgOpt failed ", err.Error(), req)
+		return &pbUser.SetReceiveMessageOptResp{ErrCode: constant.DatabaseError, ErrMsg: err.Error()}, nil
+	}
+	var resp pbUser.SetReceiveMessageOptResp
+	resp.ErrCode = 0
+
+	for _, v := range req.ConversationId {
+		resp.OptResult = append(resp.OptResult, &pbUser.OptResult{ConversationId: v, Result: 0})
+	}
+	log.NewInfo(req.OperationID, "SetReceiveMessageOpt req, resp ", req, resp)
+	return &resp, nil
+}
+
+func (s *userServer) GetReceiveMessageOpt(ctx context.Context, req *pbUser.GetReceiveMessageOptReq) (*pbUser.GetReceiveMessageOptResp, error) {
+	m, err := db.DB.GetMultiConversationMsgOpt(req.UId, req.ConversationId)
+	if err != nil {
+		log.NewError(req.OperationID, "GetMultiConversationMsgOpt failed ", err.Error(), req)
+		return &pbUser.GetReceiveMessageOptResp{ErrCode: constant.DatabaseError, ErrMsg: err.Error()}, nil
+	}
+	var resp pbUser.GetReceiveMessageOptResp
+	resp.ErrCode = 0
+	for k, v := range m {
+		resp.ConversationOptResult = append(resp.ConversationOptResult, &pbUser.OptResult{ConversationId: k, Result: int32(v)})
+	}
+	log.NewInfo(req.OperationID, "GetReceiveMessageOpt, req, resp", req, resp)
+	return &resp, nil
+}
+
+func (s *userServer) GetAllConversationMsgOpt(ctx context.Context, req *pbUser.GetAllConversationMsgOptReq) (*pbUser.GetAllConversationMsgOptResp, error) {
+	m, err := db.DB.GetAllConversationMsgOpt(req.UId)
+	if err != nil {
+		log.NewError(req.OperationID, "GetAllConversationMsgOpt failed ", err.Error(), req)
+		return &pbUser.GetAllConversationMsgOptResp{ErrCode: constant.DatabaseError, ErrMsg: err.Error()}, nil
+	}
+	var resp pbUser.GetAllConversationMsgOptResp
+	resp.ErrCode = 0
+	for k, v := range m {
+		resp.ConversationOptResult = append(resp.ConversationOptResult, &pbUser.OptResult{ConversationId: k, Result: int32(v)})
+	}
+	log.NewInfo(req.OperationID, "GetAllConversationMsgOpt, req, resp", req, resp)
+	return &resp, nil
+}