pull/1449/head
withchao 2 years ago
parent f16ead2c06
commit 481d77b7bc

@ -17,6 +17,8 @@ package group
import ( import (
"context" "context"
"fmt" "fmt"
pbconversation "github.com/OpenIMSDK/protocol/conversation"
"github.com/OpenIMSDK/protocol/wrapperspb"
"github.com/openimsdk/open-im-server/v3/pkg/common/db/newmgo" "github.com/openimsdk/open-im-server/v3/pkg/common/db/newmgo"
tx2 "github.com/openimsdk/open-im-server/v3/pkg/common/db/tx" tx2 "github.com/openimsdk/open-im-server/v3/pkg/common/db/tx"
"github.com/openimsdk/open-im-server/v3/pkg/rpcclient/grouphash" "github.com/openimsdk/open-im-server/v3/pkg/rpcclient/grouphash"
@ -29,9 +31,6 @@ import (
"github.com/openimsdk/open-im-server/v3/pkg/authverify" "github.com/openimsdk/open-im-server/v3/pkg/authverify"
"github.com/openimsdk/open-im-server/v3/pkg/msgprocessor" "github.com/openimsdk/open-im-server/v3/pkg/msgprocessor"
pbconversation "github.com/OpenIMSDK/protocol/conversation"
"github.com/OpenIMSDK/protocol/wrapperspb"
"github.com/openimsdk/open-im-server/v3/pkg/rpcclient/notification" "github.com/openimsdk/open-im-server/v3/pkg/rpcclient/notification"
"github.com/OpenIMSDK/tools/mw/specialerror" "github.com/OpenIMSDK/tools/mw/specialerror"
@ -875,11 +874,11 @@ func (s *groupServer) SetGroupInfo(ctx context.Context, req *pbgroup.SetGroupInf
if err := s.PopulateGroupMember(ctx, owner); err != nil { if err := s.PopulateGroupMember(ctx, owner); err != nil {
return nil, err return nil, err
} }
data := UpdateGroupInfoMap(ctx, req.GroupInfoForSet) update := UpdateGroupInfoMap(ctx, req.GroupInfoForSet)
if len(data) == 0 { if len(update) == 0 {
return resp, nil return resp, nil
} }
if err := s.db.UpdateGroup(ctx, group.GroupID, data); err != nil { if err := s.db.UpdateGroup(ctx, group.GroupID, update); err != nil {
return nil, err return nil, err
} }
group, err = s.db.TakeGroup(ctx, req.GroupInfoForSet.GroupID) group, err = s.db.TakeGroup(ctx, req.GroupInfoForSet.GroupID)
@ -894,34 +893,32 @@ func (s *groupServer) SetGroupInfo(ctx context.Context, req *pbgroup.SetGroupInf
if opMember != nil { if opMember != nil {
tips.OpUser = s.groupMemberDB2PB(opMember, 0) tips.OpUser = s.groupMemberDB2PB(opMember, 0)
} }
var notified bool num := len(update)
if len(data) == 1 { if req.GroupInfoForSet.Notification != "" {
switch { num--
case req.GroupInfoForSet.Notification != "": func() {
func() { conversation := &pbconversation.ConversationReq{
conversation := &pbconversation.ConversationReq{ ConversationID: msgprocessor.GetConversationIDBySessionType(constant.SuperGroupChatType, req.GroupInfoForSet.GroupID),
ConversationID: msgprocessor.GetConversationIDBySessionType(constant.SuperGroupChatType, req.GroupInfoForSet.GroupID), ConversationType: constant.SuperGroupChatType,
ConversationType: constant.SuperGroupChatType, GroupID: req.GroupInfoForSet.GroupID,
GroupID: req.GroupInfoForSet.GroupID, }
} resp, err := s.GetGroupMemberUserIDs(ctx, &pbgroup.GetGroupMemberUserIDsReq{GroupID: req.GroupInfoForSet.GroupID})
resp, err := s.GetGroupMemberUserIDs(ctx, &pbgroup.GetGroupMemberUserIDsReq{GroupID: req.GroupInfoForSet.GroupID}) if err != nil {
if err != nil { log.ZWarn(ctx, "GetGroupMemberIDs", err)
log.ZWarn(ctx, "GetGroupMemberIDs", err) return
return }
} conversation.GroupAtType = &wrapperspb.Int32Value{Value: constant.GroupNotification}
conversation.GroupAtType = &wrapperspb.Int32Value{Value: constant.GroupNotification} if err := s.conversationRpcClient.SetConversations(ctx, resp.UserIDs, conversation); err != nil {
if err := s.conversationRpcClient.SetConversations(ctx, resp.UserIDs, conversation); err != nil { log.ZWarn(ctx, "SetConversations", err, resp.UserIDs, conversation)
log.ZWarn(ctx, "SetConversations", err, resp.UserIDs, conversation) }
} }()
}() _ = s.Notification.GroupInfoSetAnnouncementNotification(ctx, &sdkws.GroupInfoSetAnnouncementTips{Group: tips.Group, OpUser: tips.OpUser})
_ = s.Notification.GroupInfoSetAnnouncementNotification(ctx, &sdkws.GroupInfoSetAnnouncementTips{Group: tips.Group, OpUser: tips.OpUser}) }
notified = true if req.GroupInfoForSet.GroupName != "" {
case req.GroupInfoForSet.GroupName != "": num--
_ = s.Notification.GroupInfoSetNameNotification(ctx, &sdkws.GroupInfoSetNameTips{Group: tips.Group, OpUser: tips.OpUser}) _ = s.Notification.GroupInfoSetNameNotification(ctx, &sdkws.GroupInfoSetNameTips{Group: tips.Group, OpUser: tips.OpUser})
notified = true
}
} }
if !notified { if num > 0 {
_ = s.Notification.GroupInfoSetNotification(ctx, tips) _ = s.Notification.GroupInfoSetNotification(ctx, tips)
} }
return resp, nil return resp, nil

Loading…
Cancel
Save