mirror of
https://github.com/openimsdk/open-im-server.git
synced 2025-04-26 19:46:57 +08:00
sg recv opt
This commit is contained in:
parent
818ed107c6
commit
4bf73b0a47
@ -61,6 +61,17 @@ func (rpc *rpcConversation) ModifyConversationField(c context.Context, req *pbCo
|
|||||||
resp.CommonResp = &pbConversation.CommonResp{ErrCode: constant.ErrDB.ErrCode, ErrMsg: constant.ErrDB.ErrMsg}
|
resp.CommonResp = &pbConversation.CommonResp{ErrCode: constant.ErrDB.ErrCode, ErrMsg: constant.ErrDB.ErrMsg}
|
||||||
return resp, nil
|
return resp, nil
|
||||||
}
|
}
|
||||||
|
if req.Conversation.ConversationType == constant.SuperGroupChatType {
|
||||||
|
if req.Conversation.RecvMsgOpt == constant.ReceiveNotNotifyMessage {
|
||||||
|
if err = db.DB.SetSuperGroupUserNotRecvOfflineMsgOpt(req.Conversation.GroupID, v); err != nil {
|
||||||
|
log.NewError(req.OperationID, utils.GetSelfFuncName(), "cache failed, rpc return", err.Error(), req.Conversation.GroupID, v)
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if err = db.DB.ReduceSuperGroupUserNotRecvOfflineMsgOpt(req.Conversation.GroupID, v); err != nil {
|
||||||
|
log.NewError(req.OperationID, utils.GetSelfFuncName(), "cache failed, rpc return", err.Error(), req.Conversation.GroupID, v)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
err = imdb.UpdateColumnsConversations(haveUserID, req.Conversation.ConversationID, map[string]interface{}{"recv_msg_opt": conversation.RecvMsgOpt})
|
err = imdb.UpdateColumnsConversations(haveUserID, req.Conversation.ConversationID, map[string]interface{}{"recv_msg_opt": conversation.RecvMsgOpt})
|
||||||
case constant.FieldGroupAtType:
|
case constant.FieldGroupAtType:
|
||||||
|
@ -251,7 +251,7 @@ func (s *userServer) SetConversation(ctx context.Context, req *pbUser.SetConvers
|
|||||||
if req.NotificationType == 0 {
|
if req.NotificationType == 0 {
|
||||||
req.NotificationType = constant.ConversationOptChangeNotification
|
req.NotificationType = constant.ConversationOptChangeNotification
|
||||||
}
|
}
|
||||||
if req.Conversation.ConversationType == constant.GroupChatType {
|
if req.Conversation.ConversationType == constant.GroupChatType || req.Conversation.ConversationType == constant.SuperGroupChatType {
|
||||||
groupInfo, err := imdb.GetGroupInfoByGroupID(req.Conversation.GroupID)
|
groupInfo, err := imdb.GetGroupInfoByGroupID(req.Conversation.GroupID)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.NewError(req.OperationID, "GetGroupInfoByGroupID failed ", req.Conversation.GroupID, err.Error())
|
log.NewError(req.OperationID, "GetGroupInfoByGroupID failed ", req.Conversation.GroupID, err.Error())
|
||||||
@ -264,7 +264,19 @@ func (s *userServer) SetConversation(ctx context.Context, req *pbUser.SetConvers
|
|||||||
resp.CommonResp = &pbUser.CommonResp{ErrCode: constant.ErrDB.ErrCode, ErrMsg: errMsg}
|
resp.CommonResp = &pbUser.CommonResp{ErrCode: constant.ErrDB.ErrCode, ErrMsg: errMsg}
|
||||||
return resp, nil
|
return resp, nil
|
||||||
}
|
}
|
||||||
|
if req.Conversation.ConversationType == constant.SuperGroupChatType {
|
||||||
|
if req.Conversation.RecvMsgOpt == constant.ReceiveNotNotifyMessage {
|
||||||
|
if err = db.DB.SetSuperGroupUserNotRecvOfflineMsgOpt(req.Conversation.GroupID, v); err != nil {
|
||||||
|
log.NewError(req.OperationID, utils.GetSelfFuncName(), "cache failed, rpc return", err.Error(), req.Conversation.GroupID, v)
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if err = db.DB.ReduceSuperGroupUserNotRecvOfflineMsgOpt(req.Conversation.GroupID, v); err != nil {
|
||||||
|
log.NewError(req.OperationID, utils.GetSelfFuncName(), "cache failed, rpc return", err.Error(), req.Conversation.GroupID, v)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
var conversation db.Conversation
|
var conversation db.Conversation
|
||||||
if err := utils.CopyStructFields(&conversation, req.Conversation); err != nil {
|
if err := utils.CopyStructFields(&conversation, req.Conversation); err != nil {
|
||||||
log.NewDebug(req.OperationID, utils.GetSelfFuncName(), "CopyStructFields failed", *req.Conversation, err.Error())
|
log.NewDebug(req.OperationID, utils.GetSelfFuncName(), "CopyStructFields failed", *req.Conversation, err.Error())
|
||||||
@ -326,6 +338,17 @@ func (s *userServer) SetRecvMsgOpt(ctx context.Context, req *pbUser.SetRecvMsgOp
|
|||||||
case "group":
|
case "group":
|
||||||
conversation.GroupID = stringList[1]
|
conversation.GroupID = stringList[1]
|
||||||
conversation.ConversationType = constant.GroupChatType
|
conversation.ConversationType = constant.GroupChatType
|
||||||
|
case "super_group":
|
||||||
|
conversation.GroupID = stringList[1]
|
||||||
|
if req.RecvMsgOpt == constant.ReceiveNotNotifyMessage {
|
||||||
|
if err := db.DB.SetSuperGroupUserNotRecvOfflineMsgOpt(conversation.GroupID, req.OwnerUserID); err != nil {
|
||||||
|
log.NewError(req.OperationID, utils.GetSelfFuncName(), "cache failed, rpc return", err.Error(), conversation.GroupID, req.OwnerUserID)
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if err := db.DB.ReduceSuperGroupUserNotRecvOfflineMsgOpt(conversation.GroupID, req.OwnerUserID); err != nil {
|
||||||
|
log.NewError(req.OperationID, utils.GetSelfFuncName(), "cache failed, rpc return", err.Error(), conversation.GroupID, req.OwnerUserID)
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
isUpdate, err := imdb.SetRecvMsgOpt(conversation)
|
isUpdate, err := imdb.SetRecvMsgOpt(conversation)
|
||||||
@ -334,6 +357,7 @@ func (s *userServer) SetRecvMsgOpt(ctx context.Context, req *pbUser.SetRecvMsgOp
|
|||||||
resp.CommonResp = &pbUser.CommonResp{ErrCode: constant.ErrDB.ErrCode, ErrMsg: constant.ErrDB.ErrMsg}
|
resp.CommonResp = &pbUser.CommonResp{ErrCode: constant.ErrDB.ErrCode, ErrMsg: constant.ErrDB.ErrMsg}
|
||||||
return resp, nil
|
return resp, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
if isUpdate {
|
if isUpdate {
|
||||||
err = rocksCache.DelConversationFromCache(conversation.OwnerUserID, conversation.ConversationID)
|
err = rocksCache.DelConversationFromCache(conversation.OwnerUserID, conversation.ConversationID)
|
||||||
} else {
|
} else {
|
||||||
|
@ -40,6 +40,9 @@ const (
|
|||||||
sendMsgFailedFlag = "SEND_MSG_FAILED_FLAG:"
|
sendMsgFailedFlag = "SEND_MSG_FAILED_FLAG:"
|
||||||
userBadgeUnreadCountSum = "USER_BADGE_UNREAD_COUNT_SUM:"
|
userBadgeUnreadCountSum = "USER_BADGE_UNREAD_COUNT_SUM:"
|
||||||
exTypeKeyLocker = "EX_LOCK:"
|
exTypeKeyLocker = "EX_LOCK:"
|
||||||
|
|
||||||
|
//temp
|
||||||
|
superGroupUserNotRecvOfflineMsgOptTemp = "SG_RECV_MSG_OPT_TEMP:"
|
||||||
)
|
)
|
||||||
|
|
||||||
func (d *DataBases) JudgeAccountEXISTS(account string) (bool, error) {
|
func (d *DataBases) JudgeAccountEXISTS(account string) (bool, error) {
|
||||||
@ -164,6 +167,23 @@ func (d *DataBases) GetSingleConversationRecvMsgOpt(userID, conversationID strin
|
|||||||
result, err := d.RDB.HGet(context.Background(), key, conversationID).Result()
|
result, err := d.RDB.HGet(context.Background(), key, conversationID).Result()
|
||||||
return utils.StringToInt(result), err
|
return utils.StringToInt(result), err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (d *DataBases) SetSuperGroupUserNotRecvOfflineMsgOpt(groupID, userID string) error {
|
||||||
|
key := superGroupUserNotRecvOfflineMsgOptTemp + groupID
|
||||||
|
return d.RDB.SAdd(context.Background(), key, userID).Err()
|
||||||
|
}
|
||||||
|
|
||||||
|
func (d *DataBases) ReduceSuperGroupUserNotRecvOfflineMsgOpt(groupID, userID string) error {
|
||||||
|
key := superGroupUserNotRecvOfflineMsgOptTemp + groupID
|
||||||
|
return d.RDB.SRem(context.Background(), key, userID).Err()
|
||||||
|
}
|
||||||
|
|
||||||
|
func (d *DataBases) GetSuperGroupUserNotRecvOfflineMsgIDList(groupID string) ([]string, error) {
|
||||||
|
key := superGroupUserNotRecvOfflineMsgOptTemp + groupID
|
||||||
|
userIDs, _ := d.RDB.SMembers(context.Background(), key).Result()
|
||||||
|
return userIDs, nil
|
||||||
|
}
|
||||||
|
|
||||||
func (d *DataBases) SetUserGlobalMsgRecvOpt(userID string, opt int32) error {
|
func (d *DataBases) SetUserGlobalMsgRecvOpt(userID string, opt int32) error {
|
||||||
key := conversationReceiveMessageOpt + userID
|
key := conversationReceiveMessageOpt + userID
|
||||||
return d.RDB.HSet(context.Background(), key, GlobalMsgRecvOpt, opt).Err()
|
return d.RDB.HSet(context.Background(), key, GlobalMsgRecvOpt, opt).Err()
|
||||||
|
Loading…
x
Reference in New Issue
Block a user