add modify conversation api

pull/455/head
Gordon 2 years ago committed by Xinwei Xiong(cubxxw-openim)
parent 9b6446c95e
commit 67dcd24410

@ -254,44 +254,34 @@ func (rpc *rpcChat) SendMsg(_ context.Context, pb *pbChat.SendMsgReq) (*pbChat.S
case constant.MemberQuitNotification: case constant.MemberQuitNotification:
addUidList = append(addUidList, pb.MsgData.SendID) addUidList = append(addUidList, pb.MsgData.SendID)
case constant.AtText: case constant.AtText:
var conversationReq pbConversation.ModifyConversationFieldReq go func() {
var tag bool var conversationReq pbConversation.ModifyConversationFieldReq
var atUserID []string var tag bool
conversation := pbConversation.Conversation{ var atUserID []string
OwnerUserID: pb.MsgData.SendID, conversation := pbConversation.Conversation{
ConversationID: utils.GetConversationIDBySessionType(pb.MsgData.GroupID, constant.GroupChatType), OwnerUserID: pb.MsgData.SendID,
ConversationType: constant.GroupChatType, ConversationID: utils.GetConversationIDBySessionType(pb.MsgData.GroupID, constant.GroupChatType),
GroupID: pb.MsgData.GroupID, ConversationType: constant.GroupChatType,
} GroupID: pb.MsgData.GroupID,
conversationReq.Conversation = &conversation }
conversationReq.OperationID = pb.OperationID conversationReq.Conversation = &conversation
conversationReq.FieldType = constant.FieldGroupAtType conversationReq.OperationID = pb.OperationID
tagAll := utils.IsContain(constant.AtAllString, pb.MsgData.AtUserIDList) conversationReq.FieldType = constant.FieldGroupAtType
if tagAll { tagAll := utils.IsContain(constant.AtAllString, pb.MsgData.AtUserIDList)
atUserID = utils.DifferenceString([]string{constant.AtAllString}, pb.MsgData.AtUserIDList) if tagAll {
if len(atUserID) == 0 { //just @everyone atUserID = utils.DifferenceString([]string{constant.AtAllString}, pb.MsgData.AtUserIDList)
conversationReq.UserIDList = memberUserIDList if len(atUserID) == 0 { //just @everyone
conversation.GroupAtType = constant.AtAll conversationReq.UserIDList = memberUserIDList
} else { //@Everyone and @other people conversation.GroupAtType = constant.AtAll
conversationReq.UserIDList = atUserID } else { //@Everyone and @other people
conversation.GroupAtType = constant.AtAllAtMe conversationReq.UserIDList = atUserID
tag = true conversation.GroupAtType = constant.AtAllAtMe
tag = true
}
} else {
conversationReq.UserIDList = pb.MsgData.AtUserIDList
conversation.GroupAtType = constant.AtMe
} }
} else {
conversationReq.UserIDList = pb.MsgData.AtUserIDList
conversation.GroupAtType = constant.AtMe
}
etcdConn := getcdv3.GetConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImConversationName)
client := pbConversation.NewConversationClient(etcdConn)
conversationReply, err := client.ModifyConversationField(context.Background(), &conversationReq)
if err != nil {
log.NewError(conversationReq.OperationID, "ModifyConversationField rpc failed, ", conversationReq.String(), err.Error())
} else if conversationReply.CommonResp.ErrCode != 0 {
log.NewError(conversationReq.OperationID, "ModifyConversationField rpc failed, ", conversationReq.String(), conversationReply.String())
}
if tag {
conversationReq.UserIDList = utils.DifferenceString(atUserID, memberUserIDList)
conversation.GroupAtType = constant.AtAll
etcdConn := getcdv3.GetConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImConversationName) etcdConn := getcdv3.GetConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImConversationName)
client := pbConversation.NewConversationClient(etcdConn) client := pbConversation.NewConversationClient(etcdConn)
conversationReply, err := client.ModifyConversationField(context.Background(), &conversationReq) conversationReply, err := client.ModifyConversationField(context.Background(), &conversationReq)
@ -300,8 +290,19 @@ func (rpc *rpcChat) SendMsg(_ context.Context, pb *pbChat.SendMsgReq) (*pbChat.S
} else if conversationReply.CommonResp.ErrCode != 0 { } else if conversationReply.CommonResp.ErrCode != 0 {
log.NewError(conversationReq.OperationID, "ModifyConversationField rpc failed, ", conversationReq.String(), conversationReply.String()) log.NewError(conversationReq.OperationID, "ModifyConversationField rpc failed, ", conversationReq.String(), conversationReply.String())
} }
} if tag {
conversationReq.UserIDList = utils.DifferenceString(atUserID, memberUserIDList)
conversation.GroupAtType = constant.AtAll
etcdConn := getcdv3.GetConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImConversationName)
client := pbConversation.NewConversationClient(etcdConn)
conversationReply, err := client.ModifyConversationField(context.Background(), &conversationReq)
if err != nil {
log.NewError(conversationReq.OperationID, "ModifyConversationField rpc failed, ", conversationReq.String(), err.Error())
} else if conversationReply.CommonResp.ErrCode != 0 {
log.NewError(conversationReq.OperationID, "ModifyConversationField rpc failed, ", conversationReq.String(), conversationReply.String())
}
}
}()
default: default:
} }
groupID := pb.MsgData.GroupID groupID := pb.MsgData.GroupID

Loading…
Cancel
Save