mirror of
https://github.com/openimsdk/open-im-server.git
synced 2025-05-23 21:39:22 +08:00
Merge remote-tracking branch 'origin/v3dev' into v3dev
This commit is contained in:
commit
a7a2bd3e4f
@ -148,22 +148,6 @@ func (m *MessageApi) DeleteMsgPhysical(c *gin.Context) {
|
|||||||
a2r.Call(msg.MsgClient.DeleteMsgPhysical, m.Client, c)
|
a2r.Call(msg.MsgClient.DeleteMsgPhysical, m.Client, c)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (m *MessageApi) SetMessageReactionExtensions(c *gin.Context) {
|
|
||||||
a2r.Call(msg.MsgClient.SetMessageReactionExtensions, m.Client, c)
|
|
||||||
}
|
|
||||||
|
|
||||||
func (m *MessageApi) GetMessageListReactionExtensions(c *gin.Context) {
|
|
||||||
a2r.Call(msg.MsgClient.GetMessagesReactionExtensions, m.Client, c)
|
|
||||||
}
|
|
||||||
|
|
||||||
func (m *MessageApi) AddMessageReactionExtensions(c *gin.Context) {
|
|
||||||
a2r.Call(msg.MsgClient.AddMessageReactionExtensions, m.Client, c)
|
|
||||||
}
|
|
||||||
|
|
||||||
func (m *MessageApi) DeleteMessageReactionExtensions(c *gin.Context) {
|
|
||||||
a2r.Call(msg.MsgClient.DeleteMessageReactionExtensions, m.Client, c)
|
|
||||||
}
|
|
||||||
|
|
||||||
func (m *MessageApi) SendMessage(c *gin.Context) {
|
func (m *MessageApi) SendMessage(c *gin.Context) {
|
||||||
params := apistruct.ManagementSendMsgReq{}
|
params := apistruct.ManagementSendMsgReq{}
|
||||||
if err := c.BindJSON(¶ms); err != nil {
|
if err := c.BindJSON(¶ms); err != nil {
|
||||||
|
@ -10,7 +10,6 @@ import (
|
|||||||
"github.com/OpenIMSDK/Open-IM-Server/pkg/common/db/controller"
|
"github.com/OpenIMSDK/Open-IM-Server/pkg/common/db/controller"
|
||||||
"github.com/OpenIMSDK/Open-IM-Server/pkg/common/db/relation"
|
"github.com/OpenIMSDK/Open-IM-Server/pkg/common/db/relation"
|
||||||
relationTb "github.com/OpenIMSDK/Open-IM-Server/pkg/common/db/table/relation"
|
relationTb "github.com/OpenIMSDK/Open-IM-Server/pkg/common/db/table/relation"
|
||||||
"github.com/OpenIMSDK/Open-IM-Server/pkg/common/db/tx"
|
|
||||||
"github.com/OpenIMSDK/Open-IM-Server/pkg/common/db/unrelation"
|
"github.com/OpenIMSDK/Open-IM-Server/pkg/common/db/unrelation"
|
||||||
"github.com/OpenIMSDK/Open-IM-Server/pkg/common/log"
|
"github.com/OpenIMSDK/Open-IM-Server/pkg/common/log"
|
||||||
"github.com/OpenIMSDK/Open-IM-Server/pkg/common/mw"
|
"github.com/OpenIMSDK/Open-IM-Server/pkg/common/mw"
|
||||||
@ -25,7 +24,7 @@ type MsgTransfer struct {
|
|||||||
persistentCH *PersistentConsumerHandler // 聊天记录持久化到mysql的消费者 订阅的topic: ws2ms_chat
|
persistentCH *PersistentConsumerHandler // 聊天记录持久化到mysql的消费者 订阅的topic: ws2ms_chat
|
||||||
historyCH *OnlineHistoryRedisConsumerHandler // 这个消费者聚合消息, 订阅的topic:ws2ms_chat, 修改通知发往msg_to_modify topic, 消息存入redis后Incr Redis, 再发消息到ms2pschat topic推送, 发消息到msg_to_mongo topic持久化
|
historyCH *OnlineHistoryRedisConsumerHandler // 这个消费者聚合消息, 订阅的topic:ws2ms_chat, 修改通知发往msg_to_modify topic, 消息存入redis后Incr Redis, 再发消息到ms2pschat topic推送, 发消息到msg_to_mongo topic持久化
|
||||||
historyMongoCH *OnlineHistoryMongoConsumerHandler // mongoDB批量插入, 成功后删除redis中消息,以及处理删除通知消息删除的 订阅的topic: msg_to_mongo
|
historyMongoCH *OnlineHistoryMongoConsumerHandler // mongoDB批量插入, 成功后删除redis中消息,以及处理删除通知消息删除的 订阅的topic: msg_to_mongo
|
||||||
modifyCH *ModifyMsgConsumerHandler // 负责消费修改消息通知的consumer, 订阅的topic: msg_to_modify
|
// modifyCH *ModifyMsgConsumerHandler // 负责消费修改消息通知的consumer, 订阅的topic: msg_to_modify
|
||||||
}
|
}
|
||||||
|
|
||||||
func StartTransfer(prometheusPort int) error {
|
func StartTransfer(prometheusPort int) error {
|
||||||
@ -59,23 +58,20 @@ func StartTransfer(prometheusPort int) error {
|
|||||||
client.AddOption(mw.GrpcClient(), grpc.WithTransportCredentials(insecure.NewCredentials()))
|
client.AddOption(mw.GrpcClient(), grpc.WithTransportCredentials(insecure.NewCredentials()))
|
||||||
msgModel := cache.NewMsgCacheModel(rdb)
|
msgModel := cache.NewMsgCacheModel(rdb)
|
||||||
msgDocModel := unrelation.NewMsgMongoDriver(mongo.GetDatabase())
|
msgDocModel := unrelation.NewMsgMongoDriver(mongo.GetDatabase())
|
||||||
extendMsgModel := unrelation.NewExtendMsgSetMongoDriver(mongo.GetDatabase())
|
|
||||||
extendMsgCache := cache.NewExtendMsgSetCacheRedis(rdb, extendMsgModel, cache.GetDefaultOpt())
|
|
||||||
chatLogDatabase := controller.NewChatLogDatabase(relation.NewChatLogGorm(db))
|
chatLogDatabase := controller.NewChatLogDatabase(relation.NewChatLogGorm(db))
|
||||||
extendMsgDatabase := controller.NewExtendMsgDatabase(extendMsgModel, extendMsgCache, tx.NewMongo(mongo.GetClient()))
|
|
||||||
msgDatabase := controller.NewCommonMsgDatabase(msgDocModel, msgModel)
|
msgDatabase := controller.NewCommonMsgDatabase(msgDocModel, msgModel)
|
||||||
conversationRpcClient := rpcclient.NewConversationRpcClient(client)
|
conversationRpcClient := rpcclient.NewConversationRpcClient(client)
|
||||||
groupRpcClient := rpcclient.NewGroupRpcClient(client)
|
groupRpcClient := rpcclient.NewGroupRpcClient(client)
|
||||||
msgTransfer := NewMsgTransfer(chatLogDatabase, extendMsgDatabase, msgDatabase, &conversationRpcClient, &groupRpcClient)
|
msgTransfer := NewMsgTransfer(chatLogDatabase, msgDatabase, &conversationRpcClient, &groupRpcClient)
|
||||||
msgTransfer.initPrometheus()
|
msgTransfer.initPrometheus()
|
||||||
return msgTransfer.Start(prometheusPort)
|
return msgTransfer.Start(prometheusPort)
|
||||||
}
|
}
|
||||||
|
|
||||||
func NewMsgTransfer(chatLogDatabase controller.ChatLogDatabase,
|
func NewMsgTransfer(chatLogDatabase controller.ChatLogDatabase,
|
||||||
extendMsgDatabase controller.ExtendMsgDatabase, msgDatabase controller.CommonMsgDatabase,
|
msgDatabase controller.CommonMsgDatabase,
|
||||||
conversationRpcClient *rpcclient.ConversationRpcClient, groupRpcClient *rpcclient.GroupRpcClient) *MsgTransfer {
|
conversationRpcClient *rpcclient.ConversationRpcClient, groupRpcClient *rpcclient.GroupRpcClient) *MsgTransfer {
|
||||||
return &MsgTransfer{persistentCH: NewPersistentConsumerHandler(chatLogDatabase), historyCH: NewOnlineHistoryRedisConsumerHandler(msgDatabase, conversationRpcClient, groupRpcClient),
|
return &MsgTransfer{persistentCH: NewPersistentConsumerHandler(chatLogDatabase), historyCH: NewOnlineHistoryRedisConsumerHandler(msgDatabase, conversationRpcClient, groupRpcClient),
|
||||||
historyMongoCH: NewOnlineHistoryMongoConsumerHandler(msgDatabase), modifyCH: NewModifyMsgConsumerHandler(extendMsgDatabase)}
|
historyMongoCH: NewOnlineHistoryMongoConsumerHandler(msgDatabase)}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (m *MsgTransfer) initPrometheus() {
|
func (m *MsgTransfer) initPrometheus() {
|
||||||
@ -100,7 +96,7 @@ func (m *MsgTransfer) Start(prometheusPort int) error {
|
|||||||
}
|
}
|
||||||
go m.historyCH.historyConsumerGroup.RegisterHandleAndConsumer(m.historyCH)
|
go m.historyCH.historyConsumerGroup.RegisterHandleAndConsumer(m.historyCH)
|
||||||
go m.historyMongoCH.historyConsumerGroup.RegisterHandleAndConsumer(m.historyMongoCH)
|
go m.historyMongoCH.historyConsumerGroup.RegisterHandleAndConsumer(m.historyMongoCH)
|
||||||
go m.modifyCH.modifyMsgConsumerGroup.RegisterHandleAndConsumer(m.modifyCH)
|
// go m.modifyCH.modifyMsgConsumerGroup.RegisterHandleAndConsumer(m.modifyCH)
|
||||||
err := prome.StartPrometheusSrv(prometheusPort)
|
err := prome.StartPrometheusSrv(prometheusPort)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
|
@ -1,113 +0,0 @@
|
|||||||
package msgtransfer
|
|
||||||
|
|
||||||
import (
|
|
||||||
"context"
|
|
||||||
"encoding/json"
|
|
||||||
|
|
||||||
"github.com/OpenIMSDK/Open-IM-Server/pkg/common/config"
|
|
||||||
"github.com/OpenIMSDK/Open-IM-Server/pkg/common/constant"
|
|
||||||
"github.com/OpenIMSDK/Open-IM-Server/pkg/common/db/controller"
|
|
||||||
unRelationTb "github.com/OpenIMSDK/Open-IM-Server/pkg/common/db/table/unrelation"
|
|
||||||
kfk "github.com/OpenIMSDK/Open-IM-Server/pkg/common/kafka"
|
|
||||||
"github.com/OpenIMSDK/Open-IM-Server/pkg/common/log"
|
|
||||||
"github.com/OpenIMSDK/Open-IM-Server/pkg/common/mcontext"
|
|
||||||
pbMsg "github.com/OpenIMSDK/Open-IM-Server/pkg/proto/msg"
|
|
||||||
"github.com/OpenIMSDK/Open-IM-Server/pkg/proto/sdkws"
|
|
||||||
"github.com/OpenIMSDK/Open-IM-Server/pkg/utils"
|
|
||||||
"github.com/Shopify/sarama"
|
|
||||||
|
|
||||||
"google.golang.org/protobuf/proto"
|
|
||||||
)
|
|
||||||
|
|
||||||
type ModifyMsgConsumerHandler struct {
|
|
||||||
modifyMsgConsumerGroup *kfk.MConsumerGroup
|
|
||||||
|
|
||||||
extendMsgDatabase controller.ExtendMsgDatabase
|
|
||||||
extendSetMsgModel unRelationTb.ExtendMsgSetModel
|
|
||||||
}
|
|
||||||
|
|
||||||
func NewModifyMsgConsumerHandler(database controller.ExtendMsgDatabase) *ModifyMsgConsumerHandler {
|
|
||||||
return &ModifyMsgConsumerHandler{
|
|
||||||
modifyMsgConsumerGroup: kfk.NewMConsumerGroup(&kfk.MConsumerGroupConfig{KafkaVersion: sarama.V2_0_0_0,
|
|
||||||
OffsetsInitial: sarama.OffsetNewest, IsReturnErr: false}, []string{config.Config.Kafka.MsgToModify.Topic},
|
|
||||||
config.Config.Kafka.Addr, config.Config.Kafka.ConsumerGroupID.MsgToModify),
|
|
||||||
extendMsgDatabase: database,
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func (ModifyMsgConsumerHandler) Setup(_ sarama.ConsumerGroupSession) error { return nil }
|
|
||||||
func (ModifyMsgConsumerHandler) Cleanup(_ sarama.ConsumerGroupSession) error { return nil }
|
|
||||||
func (mmc *ModifyMsgConsumerHandler) ConsumeClaim(sess sarama.ConsumerGroupSession,
|
|
||||||
claim sarama.ConsumerGroupClaim) error {
|
|
||||||
for msg := range claim.Messages() {
|
|
||||||
ctx := mmc.modifyMsgConsumerGroup.GetContextFromMsg(msg)
|
|
||||||
log.ZDebug(ctx, "kafka get info to mysql", "ModifyMsgConsumerHandler", msg.Topic, "msgPartition", msg.Partition, "msg", string(msg.Value), "key", string(msg.Key))
|
|
||||||
if len(msg.Value) != 0 {
|
|
||||||
mmc.ModifyMsg(ctx, msg, string(msg.Key), sess)
|
|
||||||
} else {
|
|
||||||
log.ZError(ctx, "msg get from kafka but is nil", nil, "key", msg.Key)
|
|
||||||
}
|
|
||||||
sess.MarkMessage(msg, "")
|
|
||||||
}
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
|
|
||||||
func (mmc *ModifyMsgConsumerHandler) ModifyMsg(ctx context.Context, cMsg *sarama.ConsumerMessage, msgKey string, _ sarama.ConsumerGroupSession) {
|
|
||||||
msgFromMQ := pbMsg.MsgDataToModifyByMQ{}
|
|
||||||
operationID := mcontext.GetOperationID(ctx)
|
|
||||||
err := proto.Unmarshal(cMsg.Value, &msgFromMQ)
|
|
||||||
if err != nil {
|
|
||||||
log.ZError(ctx, "msg_transfer Unmarshal msg err", err, "msg", string(cMsg.Value))
|
|
||||||
return
|
|
||||||
}
|
|
||||||
log.ZDebug(ctx, "proto.Unmarshal MsgDataToMQ", "msgs", msgFromMQ.String())
|
|
||||||
for _, msg := range msgFromMQ.Messages {
|
|
||||||
isReactionFromCache := utils.GetSwitchFromOptions(msg.Options, constant.IsReactionFromCache)
|
|
||||||
if !isReactionFromCache {
|
|
||||||
continue
|
|
||||||
}
|
|
||||||
ctx = mcontext.SetOperationID(ctx, operationID)
|
|
||||||
if msg.ContentType == constant.ReactionMessageModifier {
|
|
||||||
notification := &sdkws.ReactionMessageModifierNotification{}
|
|
||||||
if err := json.Unmarshal(msg.Content, notification); err != nil {
|
|
||||||
continue
|
|
||||||
}
|
|
||||||
if notification.IsExternalExtensions {
|
|
||||||
continue
|
|
||||||
}
|
|
||||||
if !notification.IsReact {
|
|
||||||
// first time to modify
|
|
||||||
var reactionExtensionList = make(map[string]unRelationTb.KeyValueModel)
|
|
||||||
extendMsg := unRelationTb.ExtendMsgModel{
|
|
||||||
ReactionExtensionList: reactionExtensionList,
|
|
||||||
ClientMsgID: notification.ClientMsgID,
|
|
||||||
MsgFirstModifyTime: notification.MsgFirstModifyTime,
|
|
||||||
}
|
|
||||||
for _, v := range notification.SuccessReactionExtensions {
|
|
||||||
reactionExtensionList[v.TypeKey] = unRelationTb.KeyValueModel{
|
|
||||||
TypeKey: v.TypeKey,
|
|
||||||
Value: v.Value,
|
|
||||||
LatestUpdateTime: v.LatestUpdateTime,
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if err := mmc.extendMsgDatabase.InsertExtendMsg(ctx, notification.ConversationID, notification.SessionType, &extendMsg); err != nil {
|
|
||||||
// log.ZError(ctx, "MsgFirstModify InsertExtendMsg failed", notification.ConversationID, notification.SessionType, extendMsg, err.Error())
|
|
||||||
continue
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
if err := mmc.extendMsgDatabase.InsertOrUpdateReactionExtendMsgSet(ctx, notification.ConversationID, notification.SessionType, notification.ClientMsgID, notification.MsgFirstModifyTime, mmc.extendSetMsgModel.Pb2Model(notification.SuccessReactionExtensions)); err != nil {
|
|
||||||
// log.NewError(operationID, "InsertOrUpdateReactionExtendMsgSet failed")
|
|
||||||
}
|
|
||||||
}
|
|
||||||
} else if msg.ContentType == constant.ReactionMessageDeleter {
|
|
||||||
notification := &sdkws.ReactionMessageDeleteNotification{}
|
|
||||||
if err := json.Unmarshal(msg.Content, notification); err != nil {
|
|
||||||
continue
|
|
||||||
}
|
|
||||||
if err := mmc.extendMsgDatabase.DeleteReactionExtendMsgSet(ctx, notification.ConversationID, notification.SessionType, notification.ClientMsgID, notification.MsgFirstModifyTime, mmc.extendSetMsgModel.Pb2Model(notification.SuccessReactionExtensions)); err != nil {
|
|
||||||
// log.NewError(operationID, "InsertOrUpdateReactionExtendMsgSet failed")
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,359 +0,0 @@
|
|||||||
package msg
|
|
||||||
|
|
||||||
import (
|
|
||||||
"context"
|
|
||||||
|
|
||||||
"github.com/OpenIMSDK/Open-IM-Server/pkg/proto/msg"
|
|
||||||
"github.com/OpenIMSDK/Open-IM-Server/pkg/proto/sdkws"
|
|
||||||
)
|
|
||||||
|
|
||||||
func (m *msgServer) SetMessageReactionExtensions(ctx context.Context, req *msg.SetMessageReactionExtensionsReq) (resp *msg.SetMessageReactionExtensionsResp, err error) {
|
|
||||||
resp = &msg.SetMessageReactionExtensionsResp{}
|
|
||||||
resp.ClientMsgID = req.ClientMsgID
|
|
||||||
resp.MsgFirstModifyTime = req.MsgFirstModifyTime
|
|
||||||
if err := callbackSetMessageReactionExtensions(ctx, req); err != nil {
|
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
if req.IsExternalExtensions {
|
|
||||||
resp.MsgFirstModifyTime = req.MsgFirstModifyTime
|
|
||||||
// notification.ExtendMessageUpdatedNotification(req.OperationID, req.OpUserID, req.conversationID, req.SessionType, req, &resp, !req.IsReact, false)
|
|
||||||
return resp, nil
|
|
||||||
}
|
|
||||||
// isExists, err := m.MsgDatabase.JudgeMessageReactionExist(ctx, req.ClientMsgID, req.SessionType)
|
|
||||||
// if err != nil {
|
|
||||||
// return nil, err
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
// if !isExists {
|
|
||||||
// if !req.IsReact {
|
|
||||||
// resp.MsgFirstModifyTime = utils.GetCurrentTimestampByMill()
|
|
||||||
// for k, v := range req.ReactionExtensions {
|
|
||||||
// err := m.MessageLocker.LockMessageTypeKey(ctx, req.ClientMsgID, k)
|
|
||||||
// if err != nil {
|
|
||||||
// return nil, err
|
|
||||||
// }
|
|
||||||
// v.LatestUpdateTime = utils.GetCurrentTimestampByMill()
|
|
||||||
// if err := m.MsgDatabase.SetMessageTypeKeyValue(ctx, req.ClientMsgID, req.SessionType, k, utils.StructToJsonString(v)); err != nil {
|
|
||||||
// return nil, err
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
// resp.IsReact = true
|
|
||||||
// _, err := m.MsgDatabase.SetMessageReactionExpire(ctx, req.ClientMsgID, req.SessionType, time.Duration(24*3)*time.Hour)
|
|
||||||
// if err != nil {
|
|
||||||
// return nil, err
|
|
||||||
// }
|
|
||||||
// } else {
|
|
||||||
// err := m.MessageLocker.LockGlobalMessage(ctx, req.ClientMsgID)
|
|
||||||
// if err != nil {
|
|
||||||
// return nil, err
|
|
||||||
// }
|
|
||||||
// mongoValue, err := m.MsgDatabase.GetExtendMsg(ctx, req.conversationID, req.SessionType, req.ClientMsgID, req.MsgFirstModifyTime)
|
|
||||||
// if err != nil {
|
|
||||||
// return nil, err
|
|
||||||
// }
|
|
||||||
// setValue := make(map[string]*sdkws.KeyValue)
|
|
||||||
// for k, v := range req.ReactionExtensions {
|
|
||||||
|
|
||||||
// temp := new(sdkws.KeyValue)
|
|
||||||
// if vv, ok := mongoValue.ReactionExtensions[k]; ok {
|
|
||||||
// utils.CopyStructFields(temp, &vv)
|
|
||||||
// if v.LatestUpdateTime != vv.LatestUpdateTime {
|
|
||||||
// setKeyResultInfo(&resp, 300, "message have update", req.ClientMsgID, k, temp)
|
|
||||||
// continue
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
// temp.TypeKey = k
|
|
||||||
// temp.Value = v.Value
|
|
||||||
// temp.LatestUpdateTime = utils.GetCurrentTimestampByMill()
|
|
||||||
// setValue[k] = temp
|
|
||||||
// }
|
|
||||||
// err = db.DB.InsertOrUpdateReactionExtendMsgSet(req.conversationID, req.SessionType, req.ClientMsgID, req.MsgFirstModifyTime, setValue)
|
|
||||||
// if err != nil {
|
|
||||||
// for _, value := range setValue {
|
|
||||||
// temp := new(msg.KeyValueResp)
|
|
||||||
// temp.KeyValue = value
|
|
||||||
// temp.ErrMsg = err.Error()
|
|
||||||
// temp.ErrCode = 100
|
|
||||||
// resp.Result = append(resp.Result, temp)
|
|
||||||
// }
|
|
||||||
// } else {
|
|
||||||
// for _, value := range setValue {
|
|
||||||
// temp := new(msg.KeyValueResp)
|
|
||||||
// temp.KeyValue = value
|
|
||||||
// resp.Result = append(resp.Result, temp)
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
// lockErr := m.dMessageLocker.UnLockGlobalMessage(req.ClientMsgID)
|
|
||||||
// if lockErr != nil {
|
|
||||||
// log.Error(req.OperationID, "UnLockGlobalMessage err:", lockErr.Error())
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
|
|
||||||
// } else {
|
|
||||||
// log.Debug(req.OperationID, "redis handle secondly", req.String())
|
|
||||||
|
|
||||||
// for k, v := range req.Pb2Model {
|
|
||||||
// err := m.dMessageLocker.LockMessageTypeKey(req.ClientMsgID, k)
|
|
||||||
// if err != nil {
|
|
||||||
// setKeyResultInfo(&resp, 100, err.Error(), req.ClientMsgID, k, v)
|
|
||||||
// continue
|
|
||||||
// }
|
|
||||||
// redisValue, err := db.DB.GetMessageTypeKeyValue(req.ClientMsgID, req.SessionType, k)
|
|
||||||
// if err != nil && err != go_redis.Nil {
|
|
||||||
// setKeyResultInfo(&resp, 200, err.Error(), req.ClientMsgID, k, v)
|
|
||||||
// continue
|
|
||||||
// }
|
|
||||||
// temp := new(sdkws.KeyValue)
|
|
||||||
// utils.JsonStringToStruct(redisValue, temp)
|
|
||||||
// if v.LatestUpdateTime != temp.LatestUpdateTime {
|
|
||||||
// setKeyResultInfo(&resp, 300, "message have update", req.ClientMsgID, k, temp)
|
|
||||||
// continue
|
|
||||||
// } else {
|
|
||||||
// v.LatestUpdateTime = utils.GetCurrentTimestampByMill()
|
|
||||||
// newerr := db.DB.SetMessageTypeKeyValue(req.ClientMsgID, req.SessionType, k, utils.StructToJsonString(v))
|
|
||||||
// if newerr != nil {
|
|
||||||
// setKeyResultInfo(&resp, 201, newerr.Error(), req.ClientMsgID, k, temp)
|
|
||||||
// continue
|
|
||||||
// }
|
|
||||||
// setKeyResultInfo(&resp, 0, "", req.ClientMsgID, k, v)
|
|
||||||
// }
|
|
||||||
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
// if !isExists {
|
|
||||||
// if !req.IsReact {
|
|
||||||
// notification.ExtendMessageUpdatedNotification(req.OperationID, req.OpUserID, req.conversationID, req.SessionType, req, &resp, true, true)
|
|
||||||
// } else {
|
|
||||||
// notification.ExtendMessageUpdatedNotification(req.OperationID, req.OpUserID, req.conversationID, req.SessionType, req, &resp, false, false)
|
|
||||||
// }
|
|
||||||
// } else {
|
|
||||||
// notification.ExtendMessageUpdatedNotification(req.OperationID, req.OpUserID, req.conversationID, req.SessionType, req, &resp, false, true)
|
|
||||||
// }
|
|
||||||
// log.Debug(req.OperationID, utils.GetSelfFuncName(), "m return is:", resp.String())
|
|
||||||
return resp, nil
|
|
||||||
|
|
||||||
}
|
|
||||||
func (m *msgServer) setKeyResultInfo(ctx context.Context, r *msg.SetMessageReactionExtensionsResp, errCode int32, errMsg, clientMsgID, typeKey string, keyValue *sdkws.KeyValue) {
|
|
||||||
temp := new(msg.KeyValueResp)
|
|
||||||
temp.KeyValue = keyValue
|
|
||||||
temp.ErrCode = errCode
|
|
||||||
temp.ErrMsg = errMsg
|
|
||||||
r.Result = append(r.Result, temp)
|
|
||||||
_ = m.MessageLocker.UnLockMessageTypeKey(ctx, clientMsgID, typeKey)
|
|
||||||
}
|
|
||||||
func (m *msgServer) setDeleteKeyResultInfo(ctx context.Context, r *msg.DeleteMessagesReactionExtensionsResp, errCode int32, errMsg, clientMsgID, typeKey string, keyValue *sdkws.KeyValue) {
|
|
||||||
temp := new(msg.KeyValueResp)
|
|
||||||
temp.KeyValue = keyValue
|
|
||||||
temp.ErrCode = errCode
|
|
||||||
temp.ErrMsg = errMsg
|
|
||||||
r.Result = append(r.Result, temp)
|
|
||||||
_ = m.MessageLocker.UnLockMessageTypeKey(ctx, clientMsgID, typeKey)
|
|
||||||
}
|
|
||||||
|
|
||||||
func (m *msgServer) GetMessagesReactionExtensions(ctx context.Context, req *msg.GetMessagesReactionExtensionsReq) (resp *msg.GetMessagesReactionExtensionsResp, err error) {
|
|
||||||
//log.Debug(req.OperationID, utils.GetSelfFuncName(), "m args is:", req.String())
|
|
||||||
//var rResp msg.GetMessageListReactionExtensionsResp
|
|
||||||
//for _, messageValue := range req.MessageReactionKeyList {
|
|
||||||
// var oneMessage msg.SingleMessageExtensionResult
|
|
||||||
// oneMessage.ClientMsgID = messageValue.ClientMsgID
|
|
||||||
//
|
|
||||||
// isExists, err := db.DB.JudgeMessageReactionExist(messageValue.ClientMsgID, req.SessionType)
|
|
||||||
// if err != nil {
|
|
||||||
// rResp.ErrCode = 100
|
|
||||||
// rResp.ErrMsg = err.Error()
|
|
||||||
// return &rResp, nil
|
|
||||||
// }
|
|
||||||
// if isExists {
|
|
||||||
// redisValue, err := db.DB.GetOneMessageAllReactionList(messageValue.ClientMsgID, req.SessionType)
|
|
||||||
// if err != nil {
|
|
||||||
// oneMessage.ErrCode = 100
|
|
||||||
// oneMessage.ErrMsg = err.Error()
|
|
||||||
// rResp.SingleMessageResult = append(rResp.SingleMessageResult, &oneMessage)
|
|
||||||
// continue
|
|
||||||
// }
|
|
||||||
// keyMap := make(map[string]*sdkws.KeyValue)
|
|
||||||
//
|
|
||||||
// for k, v := range redisValue {
|
|
||||||
// temp := new(sdkws.KeyValue)
|
|
||||||
// utils.JsonStringToStruct(v, temp)
|
|
||||||
// keyMap[k] = temp
|
|
||||||
// }
|
|
||||||
// oneMessage.Pb2Model = keyMap
|
|
||||||
//
|
|
||||||
// } else {
|
|
||||||
// mongoValue, err := db.DB.GetExtendMsg(req.conversationID, req.SessionType, messageValue.ClientMsgID, messageValue.MsgFirstModifyTime)
|
|
||||||
// if err != nil {
|
|
||||||
// oneMessage.ErrCode = 100
|
|
||||||
// oneMessage.ErrMsg = err.Error()
|
|
||||||
// rResp.SingleMessageResult = append(rResp.SingleMessageResult, &oneMessage)
|
|
||||||
// continue
|
|
||||||
// }
|
|
||||||
// keyMap := make(map[string]*sdkws.KeyValue)
|
|
||||||
//
|
|
||||||
// for k, v := range mongoValue.Pb2Model {
|
|
||||||
// temp := new(sdkws.KeyValue)
|
|
||||||
// temp.TypeKey = v.TypeKey
|
|
||||||
// temp.Value = v.Value
|
|
||||||
// temp.LatestUpdateTime = v.LatestUpdateTime
|
|
||||||
// keyMap[k] = temp
|
|
||||||
// }
|
|
||||||
// oneMessage.Pb2Model = keyMap
|
|
||||||
// }
|
|
||||||
// rResp.SingleMessageResult = append(rResp.SingleMessageResult, &oneMessage)
|
|
||||||
//}
|
|
||||||
//log.Debug(req.OperationID, utils.GetSelfFuncName(), "m return is:", rResp.String())
|
|
||||||
return resp, nil
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
func (m *msgServer) AddMessageReactionExtensions(ctx context.Context, req *msg.ModifyMessageReactionExtensionsReq) (resp *msg.ModifyMessageReactionExtensionsResp, err error) {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
func (m *msgServer) DeleteMessageReactionExtensions(ctx context.Context, req *msg.DeleteMessagesReactionExtensionsReq) (resp *msg.DeleteMessagesReactionExtensionsResp, err error) {
|
|
||||||
//log.Debug(req.OperationID, utils.GetSelfFuncName(), "m args is:", req.String())
|
|
||||||
//var rResp msg.DeleteMessagesReactionExtensionsResp
|
|
||||||
//callbackResp := notification.callbackDeleteMessageReactionExtensions(req)
|
|
||||||
//if callbackResp.ActionCode != constant.ActionAllow || callbackResp.ErrCode != 0 {
|
|
||||||
// rResp.ErrCode = int32(callbackResp.ErrCode)
|
|
||||||
// rResp.ErrMsg = callbackResp.ErrMsg
|
|
||||||
// for _, value := range req.Pb2Model {
|
|
||||||
// temp := new(msg.KeyValueResp)
|
|
||||||
// temp.KeyValue = value
|
|
||||||
// temp.ErrMsg = callbackResp.ErrMsg
|
|
||||||
// temp.ErrCode = 100
|
|
||||||
// rResp.Result = append(rResp.Result, temp)
|
|
||||||
// }
|
|
||||||
// return &rResp, nil
|
|
||||||
//}
|
|
||||||
////if ExternalExtension
|
|
||||||
//if req.IsExternalExtensions {
|
|
||||||
// rResp.Result = callbackResp.ResultReactionExtensionList
|
|
||||||
// notification.ExtendMessageDeleteNotification(req.OperationID, req.OpUserID, req.conversationID, req.SessionType, req, &rResp, false, false)
|
|
||||||
// return &rResp, nil
|
|
||||||
//
|
|
||||||
//}
|
|
||||||
//for _, v := range callbackResp.ResultReactionExtensions {
|
|
||||||
// if v.ErrCode != 0 {
|
|
||||||
// func(req *[]*sdkws.KeyValue, typeKey string) {
|
|
||||||
// for i := 0; i < len(*req); i++ {
|
|
||||||
// if (*req)[i].TypeKey == typeKey {
|
|
||||||
// *req = append((*req)[:i], (*req)[i+1:]...)
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
// }(&req.Pb2Model, v.KeyValue.TypeKey)
|
|
||||||
// rResp.Result = append(rResp.Result, v)
|
|
||||||
// }
|
|
||||||
//}
|
|
||||||
//isExists, err := db.DB.JudgeMessageReactionExist(req.ClientMsgID, req.SessionType)
|
|
||||||
//if err != nil {
|
|
||||||
// rResp.ErrCode = 100
|
|
||||||
// rResp.ErrMsg = err.Error()
|
|
||||||
// for _, value := range req.Pb2Model {
|
|
||||||
// temp := new(msg.KeyValueResp)
|
|
||||||
// temp.KeyValue = value
|
|
||||||
// temp.ErrMsg = err.Error()
|
|
||||||
// temp.ErrCode = 100
|
|
||||||
// rResp.Result = append(rResp.Result, temp)
|
|
||||||
// }
|
|
||||||
// return &rResp, nil
|
|
||||||
//}
|
|
||||||
//
|
|
||||||
//if isExists {
|
|
||||||
// log.Debug(req.OperationID, "redis handle this delete", req.String())
|
|
||||||
// for _, v := range req.Pb2Model {
|
|
||||||
// err := m.dMessageLocker.LockMessageTypeKey(req.ClientMsgID, v.TypeKey)
|
|
||||||
// if err != nil {
|
|
||||||
// setDeleteKeyResultInfo(&rResp, 100, err.Error(), req.ClientMsgID, v.TypeKey, v)
|
|
||||||
// continue
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
// redisValue, err := db.DB.GetMessageTypeKeyValue(req.ClientMsgID, req.SessionType, v.TypeKey)
|
|
||||||
// if err != nil && err != go_redis.Nil {
|
|
||||||
// setDeleteKeyResultInfo(&rResp, 200, err.Error(), req.ClientMsgID, v.TypeKey, v)
|
|
||||||
// continue
|
|
||||||
// }
|
|
||||||
// temp := new(sdkws.KeyValue)
|
|
||||||
// utils.JsonStringToStruct(redisValue, temp)
|
|
||||||
// if v.LatestUpdateTime != temp.LatestUpdateTime {
|
|
||||||
// setDeleteKeyResultInfo(&rResp, 300, "message have update", req.ClientMsgID, v.TypeKey, temp)
|
|
||||||
// continue
|
|
||||||
// } else {
|
|
||||||
// newErr := db.DB.DeleteOneMessageKey(req.ClientMsgID, req.SessionType, v.TypeKey)
|
|
||||||
// if newErr != nil {
|
|
||||||
// setDeleteKeyResultInfo(&rResp, 201, newErr.Error(), req.ClientMsgID, v.TypeKey, temp)
|
|
||||||
// continue
|
|
||||||
// }
|
|
||||||
// setDeleteKeyResultInfo(&rResp, 0, "", req.ClientMsgID, v.TypeKey, v)
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
//} else {
|
|
||||||
// err := m.dMessageLocker.LockGlobalMessage(req.ClientMsgID)
|
|
||||||
// if err != nil {
|
|
||||||
// rResp.ErrCode = 100
|
|
||||||
// rResp.ErrMsg = err.Error()
|
|
||||||
// for _, value := range req.Pb2Model {
|
|
||||||
// temp := new(msg.KeyValueResp)
|
|
||||||
// temp.KeyValue = value
|
|
||||||
// temp.ErrMsg = err.Error()
|
|
||||||
// temp.ErrCode = 100
|
|
||||||
// rResp.Result = append(rResp.Result, temp)
|
|
||||||
// }
|
|
||||||
// return &rResp, nil
|
|
||||||
// }
|
|
||||||
// mongoValue, err := db.DB.GetExtendMsg(req.conversationID, req.SessionType, req.ClientMsgID, req.MsgFirstModifyTime)
|
|
||||||
// if err != nil {
|
|
||||||
// rResp.ErrCode = 200
|
|
||||||
// rResp.ErrMsg = err.Error()
|
|
||||||
// for _, value := range req.Pb2Model {
|
|
||||||
// temp := new(msg.KeyValueResp)
|
|
||||||
// temp.KeyValue = value
|
|
||||||
// temp.ErrMsg = err.Error()
|
|
||||||
// temp.ErrCode = 100
|
|
||||||
// rResp.Result = append(rResp.Result, temp)
|
|
||||||
// }
|
|
||||||
// return &rResp, nil
|
|
||||||
// }
|
|
||||||
// setValue := make(map[string]*sdkws.KeyValue)
|
|
||||||
// for _, v := range req.Pb2Model {
|
|
||||||
//
|
|
||||||
// temp := new(sdkws.KeyValue)
|
|
||||||
// if vv, ok := mongoValue.Pb2Model[v.TypeKey]; ok {
|
|
||||||
// utils.CopyStructFields(temp, &vv)
|
|
||||||
// if v.LatestUpdateTime != vv.LatestUpdateTime {
|
|
||||||
// setDeleteKeyResultInfo(&rResp, 300, "message have update", req.ClientMsgID, v.TypeKey, temp)
|
|
||||||
// continue
|
|
||||||
// }
|
|
||||||
// } else {
|
|
||||||
// setDeleteKeyResultInfo(&rResp, 400, "key not in", req.ClientMsgID, v.TypeKey, v)
|
|
||||||
// continue
|
|
||||||
// }
|
|
||||||
// temp.TypeKey = v.TypeKey
|
|
||||||
// setValue[v.TypeKey] = temp
|
|
||||||
// }
|
|
||||||
// err = db.DB.DeleteReactionExtendMsgSet(req.conversationID, req.SessionType, req.ClientMsgID, req.MsgFirstModifyTime, setValue)
|
|
||||||
// if err != nil {
|
|
||||||
// for _, value := range setValue {
|
|
||||||
// temp := new(msg.KeyValueResp)
|
|
||||||
// temp.KeyValue = value
|
|
||||||
// temp.ErrMsg = err.Error()
|
|
||||||
// temp.ErrCode = 100
|
|
||||||
// rResp.Result = append(rResp.Result, temp)
|
|
||||||
// }
|
|
||||||
// } else {
|
|
||||||
// for _, value := range setValue {
|
|
||||||
// temp := new(msg.KeyValueResp)
|
|
||||||
// temp.KeyValue = value
|
|
||||||
// rResp.Result = append(rResp.Result, temp)
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
// lockErr := m.dMessageLocker.UnLockGlobalMessage(req.ClientMsgID)
|
|
||||||
// if lockErr != nil {
|
|
||||||
// log.Error(req.OperationID, "UnLockGlobalMessage err:", lockErr.Error())
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
//}
|
|
||||||
//notification.ExtendMessageDeleteNotification(req.OperationID, req.OpUserID, req.conversationID, req.SessionType, req, &rResp, false, isExists)
|
|
||||||
//log.Debug(req.OperationID, utils.GetSelfFuncName(), "m return is:", rResp.String())
|
|
||||||
return resp, nil
|
|
||||||
}
|
|
@ -1,88 +0,0 @@
|
|||||||
package msg
|
|
||||||
|
|
||||||
import (
|
|
||||||
"context"
|
|
||||||
|
|
||||||
cbapi "github.com/OpenIMSDK/Open-IM-Server/pkg/callbackstruct"
|
|
||||||
"github.com/OpenIMSDK/Open-IM-Server/pkg/common/config"
|
|
||||||
"github.com/OpenIMSDK/Open-IM-Server/pkg/common/constant"
|
|
||||||
"github.com/OpenIMSDK/Open-IM-Server/pkg/common/http"
|
|
||||||
"github.com/OpenIMSDK/Open-IM-Server/pkg/common/mcontext"
|
|
||||||
"github.com/OpenIMSDK/Open-IM-Server/pkg/proto/msg"
|
|
||||||
)
|
|
||||||
|
|
||||||
func callbackSetMessageReactionExtensions(ctx context.Context, setReq *msg.SetMessageReactionExtensionsReq) error {
|
|
||||||
if !config.Config.Callback.CallbackAfterSendGroupMsg.Enable {
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
req := &cbapi.CallbackBeforeSetMessageReactionExtReq{
|
|
||||||
OperationID: mcontext.GetOperationID(ctx),
|
|
||||||
CallbackCommand: constant.CallbackBeforeSetMessageReactionExtensionCommand,
|
|
||||||
ConversationID: setReq.ConversationID,
|
|
||||||
OpUserID: mcontext.GetOpUserID(ctx),
|
|
||||||
SessionType: setReq.SessionType,
|
|
||||||
ReactionExtensionList: setReq.ReactionExtensions,
|
|
||||||
ClientMsgID: setReq.ClientMsgID,
|
|
||||||
IsReact: setReq.IsReact,
|
|
||||||
IsExternalExtensions: setReq.IsExternalExtensions,
|
|
||||||
MsgFirstModifyTime: setReq.MsgFirstModifyTime,
|
|
||||||
}
|
|
||||||
resp := &cbapi.CallbackBeforeSetMessageReactionExtResp{}
|
|
||||||
if err := http.CallBackPostReturn(ctx, cbURL(), req, resp, config.Config.Callback.CallbackAfterSendGroupMsg); err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
setReq.MsgFirstModifyTime = resp.MsgFirstModifyTime
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
|
|
||||||
func callbackDeleteMessageReactionExtensions(ctx context.Context, setReq *msg.DeleteMessagesReactionExtensionsReq) error {
|
|
||||||
if !config.Config.Callback.CallbackAfterSendGroupMsg.Enable {
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
req := &cbapi.CallbackDeleteMessageReactionExtReq{
|
|
||||||
OperationID: setReq.OperationID,
|
|
||||||
CallbackCommand: constant.CallbackBeforeDeleteMessageReactionExtensionsCommand,
|
|
||||||
ConversationID: setReq.ConversationID,
|
|
||||||
OpUserID: setReq.OpUserID,
|
|
||||||
SessionType: setReq.SessionType,
|
|
||||||
ReactionExtensionList: setReq.ReactionExtensions,
|
|
||||||
ClientMsgID: setReq.ClientMsgID,
|
|
||||||
IsExternalExtensions: setReq.IsExternalExtensions,
|
|
||||||
MsgFirstModifyTime: setReq.MsgFirstModifyTime,
|
|
||||||
}
|
|
||||||
resp := &cbapi.CallbackDeleteMessageReactionExtResp{}
|
|
||||||
return http.CallBackPostReturn(ctx, cbURL(), req, resp, config.Config.Callback.CallbackAfterSendGroupMsg)
|
|
||||||
}
|
|
||||||
|
|
||||||
func callbackGetMessageListReactionExtensions(ctx context.Context, getReq *msg.GetMessagesReactionExtensionsReq) error {
|
|
||||||
if !config.Config.Callback.CallbackAfterSendGroupMsg.Enable {
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
req := &cbapi.CallbackGetMessageListReactionExtReq{
|
|
||||||
OperationID: mcontext.GetOperationID(ctx),
|
|
||||||
CallbackCommand: constant.CallbackGetMessageListReactionExtensionsCommand,
|
|
||||||
ConversationID: getReq.ConversationID,
|
|
||||||
OpUserID: mcontext.GetOperationID(ctx),
|
|
||||||
SessionType: getReq.SessionType,
|
|
||||||
TypeKeyList: getReq.TypeKeys,
|
|
||||||
}
|
|
||||||
resp := &cbapi.CallbackGetMessageListReactionExtResp{}
|
|
||||||
return http.CallBackPostReturn(ctx, cbURL(), req, resp, config.Config.Callback.CallbackAfterSendGroupMsg)
|
|
||||||
}
|
|
||||||
|
|
||||||
func callbackAddMessageReactionExtensions(ctx context.Context, setReq *msg.ModifyMessageReactionExtensionsReq) error {
|
|
||||||
req := &cbapi.CallbackAddMessageReactionExtReq{
|
|
||||||
OperationID: mcontext.GetOperationID(ctx),
|
|
||||||
CallbackCommand: constant.CallbackAddMessageListReactionExtensionsCommand,
|
|
||||||
ConversationID: setReq.ConversationID,
|
|
||||||
OpUserID: mcontext.GetOperationID(ctx),
|
|
||||||
SessionType: setReq.SessionType,
|
|
||||||
ReactionExtensionList: setReq.ReactionExtensions,
|
|
||||||
ClientMsgID: setReq.ClientMsgID,
|
|
||||||
IsReact: setReq.IsReact,
|
|
||||||
IsExternalExtensions: setReq.IsExternalExtensions,
|
|
||||||
MsgFirstModifyTime: setReq.MsgFirstModifyTime,
|
|
||||||
}
|
|
||||||
resp := &cbapi.CallbackAddMessageReactionExtResp{}
|
|
||||||
return http.CallBackPostReturn(ctx, cbURL(), req, resp, config.Config.Callback.CallbackAfterSendGroupMsg)
|
|
||||||
}
|
|
@ -7,7 +7,6 @@ import (
|
|||||||
"github.com/OpenIMSDK/Open-IM-Server/pkg/common/db/cache"
|
"github.com/OpenIMSDK/Open-IM-Server/pkg/common/db/cache"
|
||||||
"github.com/OpenIMSDK/Open-IM-Server/pkg/common/db/controller"
|
"github.com/OpenIMSDK/Open-IM-Server/pkg/common/db/controller"
|
||||||
"github.com/OpenIMSDK/Open-IM-Server/pkg/common/db/localcache"
|
"github.com/OpenIMSDK/Open-IM-Server/pkg/common/db/localcache"
|
||||||
"github.com/OpenIMSDK/Open-IM-Server/pkg/common/db/tx"
|
|
||||||
"github.com/OpenIMSDK/Open-IM-Server/pkg/common/db/unrelation"
|
"github.com/OpenIMSDK/Open-IM-Server/pkg/common/db/unrelation"
|
||||||
"github.com/OpenIMSDK/Open-IM-Server/pkg/common/prome"
|
"github.com/OpenIMSDK/Open-IM-Server/pkg/common/prome"
|
||||||
"github.com/OpenIMSDK/Open-IM-Server/pkg/discoveryregistry"
|
"github.com/OpenIMSDK/Open-IM-Server/pkg/discoveryregistry"
|
||||||
@ -21,7 +20,6 @@ type MessageInterceptorChain []MessageInterceptorFunc
|
|||||||
type msgServer struct {
|
type msgServer struct {
|
||||||
RegisterCenter discoveryregistry.SvcDiscoveryRegistry
|
RegisterCenter discoveryregistry.SvcDiscoveryRegistry
|
||||||
MsgDatabase controller.CommonMsgDatabase
|
MsgDatabase controller.CommonMsgDatabase
|
||||||
ExtendMsgDatabase controller.ExtendMsgDatabase
|
|
||||||
Group *rpcclient.GroupRpcClient
|
Group *rpcclient.GroupRpcClient
|
||||||
User *rpcclient.UserRpcClient
|
User *rpcclient.UserRpcClient
|
||||||
Conversation *rpcclient.ConversationRpcClient
|
Conversation *rpcclient.ConversationRpcClient
|
||||||
@ -62,9 +60,6 @@ func Start(client discoveryregistry.SvcDiscoveryRegistry, server *grpc.Server) e
|
|||||||
}
|
}
|
||||||
cacheModel := cache.NewMsgCacheModel(rdb)
|
cacheModel := cache.NewMsgCacheModel(rdb)
|
||||||
msgDocModel := unrelation.NewMsgMongoDriver(mongo.GetDatabase())
|
msgDocModel := unrelation.NewMsgMongoDriver(mongo.GetDatabase())
|
||||||
extendMsgModel := unrelation.NewExtendMsgSetMongoDriver(mongo.GetDatabase())
|
|
||||||
extendMsgCacheModel := cache.NewExtendMsgSetCacheRedis(rdb, extendMsgModel, cache.GetDefaultOpt())
|
|
||||||
extendMsgDatabase := controller.NewExtendMsgDatabase(extendMsgModel, extendMsgCacheModel, tx.NewMongo(mongo.GetClient()))
|
|
||||||
msgDatabase := controller.NewCommonMsgDatabase(msgDocModel, cacheModel)
|
msgDatabase := controller.NewCommonMsgDatabase(msgDocModel, cacheModel)
|
||||||
conversationClient := rpcclient.NewConversationRpcClient(client)
|
conversationClient := rpcclient.NewConversationRpcClient(client)
|
||||||
userRpcClient := rpcclient.NewUserRpcClient(client)
|
userRpcClient := rpcclient.NewUserRpcClient(client)
|
||||||
@ -75,7 +70,6 @@ func Start(client discoveryregistry.SvcDiscoveryRegistry, server *grpc.Server) e
|
|||||||
User: &userRpcClient,
|
User: &userRpcClient,
|
||||||
Group: &groupRpcClient,
|
Group: &groupRpcClient,
|
||||||
MsgDatabase: msgDatabase,
|
MsgDatabase: msgDatabase,
|
||||||
ExtendMsgDatabase: extendMsgDatabase,
|
|
||||||
RegisterCenter: client,
|
RegisterCenter: client,
|
||||||
GroupLocalCache: localcache.NewGroupLocalCache(&groupRpcClient),
|
GroupLocalCache: localcache.NewGroupLocalCache(&groupRpcClient),
|
||||||
ConversationLocalCache: localcache.NewConversationLocalCache(&conversationClient),
|
ConversationLocalCache: localcache.NewConversationLocalCache(&conversationClient),
|
||||||
|
@ -26,8 +26,10 @@ func (c *MsgTool) ConversationsDestructMsgs() {
|
|||||||
log.ZError(ctx, "updateUsersConversationFiled failed", err, "conversationID", conversation.ConversationID, "ownerUserID", conversation.OwnerUserID)
|
log.ZError(ctx, "updateUsersConversationFiled failed", err, "conversationID", conversation.ConversationID, "ownerUserID", conversation.OwnerUserID)
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
|
if len(seqs) > 0 {
|
||||||
if err := c.msgNotificationSender.UserDeleteMsgsNotification(ctx, conversation.OwnerUserID, conversation.ConversationID, seqs); err != nil {
|
if err := c.msgNotificationSender.UserDeleteMsgsNotification(ctx, conversation.OwnerUserID, conversation.ConversationID, seqs); err != nil {
|
||||||
log.ZError(ctx, "userDeleteMsgsNotification failed", err, "conversationID", conversation.ConversationID, "ownerUserID", conversation.OwnerUserID)
|
log.ZError(ctx, "userDeleteMsgsNotification failed", err, "conversationID", conversation.ConversationID, "ownerUserID", conversation.OwnerUserID)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,10 +1,5 @@
|
|||||||
package apistruct
|
package apistruct
|
||||||
|
|
||||||
import (
|
|
||||||
"github.com/OpenIMSDK/Open-IM-Server/pkg/proto/msg"
|
|
||||||
sdkws "github.com/OpenIMSDK/Open-IM-Server/pkg/proto/sdkws"
|
|
||||||
)
|
|
||||||
|
|
||||||
type DelMsgReq struct {
|
type DelMsgReq struct {
|
||||||
UserID string `json:"userID,omitempty" binding:"required"`
|
UserID string `json:"userID,omitempty" binding:"required"`
|
||||||
SeqList []uint32 `json:"seqList,omitempty" binding:"required"`
|
SeqList []uint32 `json:"seqList,omitempty" binding:"required"`
|
||||||
@ -49,69 +44,6 @@ type SetMsgMinSeqReq struct {
|
|||||||
type SetMsgMinSeqResp struct {
|
type SetMsgMinSeqResp struct {
|
||||||
}
|
}
|
||||||
|
|
||||||
type ModifyMessageReactionExtensionsReq struct {
|
|
||||||
OperationID string `json:"operationID" binding:"required"`
|
|
||||||
conversationID string `json:"conversationID" binding:"required"`
|
|
||||||
SessionType int32 `json:"sessionType" binding:"required"`
|
|
||||||
ReactionExtensionList map[string]*sdkws.KeyValue `json:"reactionExtensionList,omitempty" binding:"required"`
|
|
||||||
ClientMsgID string `json:"clientMsgID" binding:"required"`
|
|
||||||
Ex *string `json:"ex"`
|
|
||||||
AttachedInfo *string `json:"attachedInfo"`
|
|
||||||
IsReact bool `json:"isReact"`
|
|
||||||
IsExternalExtensions bool `json:"isExternalExtensions"`
|
|
||||||
MsgFirstModifyTime int64 `json:"msgFirstModifyTime"`
|
|
||||||
}
|
|
||||||
|
|
||||||
type ModifyMessageReactionExtensionsResp struct {
|
|
||||||
Data struct {
|
|
||||||
ResultKeyValue []*msg.KeyValueResp `json:"result"`
|
|
||||||
MsgFirstModifyTime int64 `json:"msgFirstModifyTime"`
|
|
||||||
IsReact bool `json:"isReact"`
|
|
||||||
} `json:"data"`
|
|
||||||
}
|
|
||||||
|
|
||||||
//type OperateMessageListReactionExtensionsReq struct {
|
|
||||||
// OperationID string `json:"operationID" binding:"required"`
|
|
||||||
// conversationID string `json:"conversationID" binding:"required"`
|
|
||||||
// SessionType string `json:"sessionType" binding:"required"`
|
|
||||||
// MessageReactionKeyList []*msg.GetMessageListReactionExtensionsReq_MessageReactionKey `json:"messageReactionKeyList" binding:"required"`
|
|
||||||
//}
|
|
||||||
|
|
||||||
type OperateMessageListReactionExtensionsResp struct {
|
|
||||||
Data struct {
|
|
||||||
SuccessList []*msg.ExtendMsgResp `json:"successList"`
|
|
||||||
FailedList []*msg.ExtendMsgResp `json:"failedList"`
|
|
||||||
} `json:"data"`
|
|
||||||
}
|
|
||||||
|
|
||||||
type SetMessageReactionExtensionsCallbackReq ModifyMessageReactionExtensionsReq
|
|
||||||
|
|
||||||
type SetMessageReactionExtensionsCallbackResp ModifyMessageReactionExtensionsResp
|
|
||||||
|
|
||||||
//type GetMessageListReactionExtensionsReq OperateMessageListReactionExtensionsReq
|
|
||||||
|
|
||||||
type GetMessageListReactionExtensionsResp struct {
|
|
||||||
Data []*msg.SingleMessageExtensionResult `json:"data"`
|
|
||||||
}
|
|
||||||
|
|
||||||
type AddMessageReactionExtensionsReq ModifyMessageReactionExtensionsReq
|
|
||||||
|
|
||||||
type AddMessageReactionExtensionsResp ModifyMessageReactionExtensionsResp
|
|
||||||
|
|
||||||
type DeleteMessageReactionExtensionsReq struct {
|
|
||||||
OperationID string `json:"operationID" binding:"required"`
|
|
||||||
conversationID string `json:"conversationID" binding:"required"`
|
|
||||||
SessionType int32 `json:"sessionType" binding:"required"`
|
|
||||||
ClientMsgID string `json:"clientMsgID" binding:"required"`
|
|
||||||
IsExternalExtensions bool `json:"isExternalExtensions"`
|
|
||||||
MsgFirstModifyTime int64 `json:"msgFirstModifyTime" binding:"required"`
|
|
||||||
ReactionExtensionList []*sdkws.KeyValue `json:"reactionExtensionList" binding:"required"`
|
|
||||||
}
|
|
||||||
|
|
||||||
type DeleteMessageReactionExtensionsResp struct {
|
|
||||||
Data []*msg.KeyValueResp
|
|
||||||
}
|
|
||||||
|
|
||||||
type PictureBaseInfo struct {
|
type PictureBaseInfo struct {
|
||||||
UUID string `mapstructure:"uuid"`
|
UUID string `mapstructure:"uuid"`
|
||||||
Type string `mapstructure:"type" `
|
Type string `mapstructure:"type" `
|
||||||
|
@ -1,7 +1,6 @@
|
|||||||
package callbackstruct
|
package callbackstruct
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"github.com/OpenIMSDK/Open-IM-Server/pkg/proto/msg"
|
|
||||||
sdkws "github.com/OpenIMSDK/Open-IM-Server/pkg/proto/sdkws"
|
sdkws "github.com/OpenIMSDK/Open-IM-Server/pkg/proto/sdkws"
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -66,71 +65,3 @@ type CallbackMsgModifyCommandResp struct {
|
|||||||
AttachedInfo *string `json:"attachedInfo"`
|
AttachedInfo *string `json:"attachedInfo"`
|
||||||
Ex *string `json:"ex"`
|
Ex *string `json:"ex"`
|
||||||
}
|
}
|
||||||
type CallbackBeforeSetMessageReactionExtReq struct {
|
|
||||||
OperationID string `json:"operationID"`
|
|
||||||
CallbackCommand `json:"callbackCommand"`
|
|
||||||
ConversationID string `json:"conversationID"`
|
|
||||||
OpUserID string `json:"opUserID"`
|
|
||||||
SessionType int32 `json:"sessionType"`
|
|
||||||
ReactionExtensionList map[string]*sdkws.KeyValue `json:"reactionExtensionList"`
|
|
||||||
ClientMsgID string `json:"clientMsgID"`
|
|
||||||
IsReact bool `json:"isReact"`
|
|
||||||
IsExternalExtensions bool `json:"isExternalExtensions"`
|
|
||||||
MsgFirstModifyTime int64 `json:"msgFirstModifyTime"`
|
|
||||||
}
|
|
||||||
type CallbackBeforeSetMessageReactionExtResp struct {
|
|
||||||
CommonCallbackResp
|
|
||||||
ResultReactionExtensionList []*msg.KeyValueResp `json:"resultReactionExtensionList"`
|
|
||||||
MsgFirstModifyTime int64 `json:"msgFirstModifyTime"`
|
|
||||||
}
|
|
||||||
type CallbackDeleteMessageReactionExtReq struct {
|
|
||||||
CallbackCommand `json:"callbackCommand"`
|
|
||||||
OperationID string `json:"operationID"`
|
|
||||||
ConversationID string `json:"conversationID"`
|
|
||||||
OpUserID string `json:"opUserID"`
|
|
||||||
SessionType int32 `json:"sessionType"`
|
|
||||||
ReactionExtensionList []*sdkws.KeyValue `json:"reactionExtensionList"`
|
|
||||||
ClientMsgID string `json:"clientMsgID"`
|
|
||||||
IsExternalExtensions bool `json:"isExternalExtensions"`
|
|
||||||
MsgFirstModifyTime int64 `json:"msgFirstModifyTime"`
|
|
||||||
}
|
|
||||||
type CallbackDeleteMessageReactionExtResp struct {
|
|
||||||
CommonCallbackResp
|
|
||||||
ResultReactionExtensionList []*msg.KeyValueResp `json:"resultReactionExtensionList"`
|
|
||||||
MsgFirstModifyTime int64 `json:"msgFirstModifyTime"`
|
|
||||||
}
|
|
||||||
|
|
||||||
type CallbackGetMessageListReactionExtReq struct {
|
|
||||||
OperationID string `json:"operationID"`
|
|
||||||
CallbackCommand `json:"callbackCommand"`
|
|
||||||
ConversationID string `json:"conversationID"`
|
|
||||||
OpUserID string `json:"opUserID"`
|
|
||||||
SessionType int32 `json:"sessionType"`
|
|
||||||
TypeKeyList []string `json:"typeKeyList"`
|
|
||||||
//MessageKeyList []*msg.GetMessageListReactionExtensionsReq_MessageReactionKey `json:"messageKeyList"`
|
|
||||||
}
|
|
||||||
|
|
||||||
type CallbackGetMessageListReactionExtResp struct {
|
|
||||||
CommonCallbackResp
|
|
||||||
MessageResultList []*msg.SingleMessageExtensionResult `json:"messageResultList"`
|
|
||||||
}
|
|
||||||
|
|
||||||
type CallbackAddMessageReactionExtReq struct {
|
|
||||||
OperationID string `json:"operationID"`
|
|
||||||
CallbackCommand `json:"callbackCommand"`
|
|
||||||
ConversationID string `json:"conversationID"`
|
|
||||||
OpUserID string `json:"opUserID"`
|
|
||||||
SessionType int32 `json:"sessionType"`
|
|
||||||
ReactionExtensionList map[string]*sdkws.KeyValue `json:"reactionExtensionList"`
|
|
||||||
ClientMsgID string `json:"clientMsgID"`
|
|
||||||
IsReact bool `json:"isReact"`
|
|
||||||
IsExternalExtensions bool `json:"isExternalExtensions"`
|
|
||||||
MsgFirstModifyTime int64 `json:"msgFirstModifyTime"`
|
|
||||||
}
|
|
||||||
|
|
||||||
type CallbackAddMessageReactionExtResp struct {
|
|
||||||
CommonCallbackResp
|
|
||||||
ResultReactionExtensionList []*msg.KeyValueResp `json:"resultReactionExtensionList"`
|
|
||||||
IsReact bool `json:"isReact"`
|
|
||||||
MsgFirstModifyTime int64 `json:"msgFirstModifyTime"`
|
|
||||||
}
|
|
||||||
|
64
pkg/common/db/cache/extend_msg_set.go
vendored
64
pkg/common/db/cache/extend_msg_set.go
vendored
@ -1,64 +0,0 @@
|
|||||||
package cache
|
|
||||||
|
|
||||||
import (
|
|
||||||
"context"
|
|
||||||
"time"
|
|
||||||
|
|
||||||
"github.com/OpenIMSDK/Open-IM-Server/pkg/common/db/table/unrelation"
|
|
||||||
"github.com/dtm-labs/rockscache"
|
|
||||||
"github.com/redis/go-redis/v9"
|
|
||||||
)
|
|
||||||
|
|
||||||
const (
|
|
||||||
extendMsgSetCache = "EXTEND_MSG_SET_CACHE:"
|
|
||||||
extendMsgCache = "EXTEND_MSG_CACHE:"
|
|
||||||
)
|
|
||||||
|
|
||||||
type ExtendMsgSetCache interface {
|
|
||||||
metaCache
|
|
||||||
NewCache() ExtendMsgSetCache
|
|
||||||
GetExtendMsg(ctx context.Context, conversationID string, sessionType int32, clientMsgID string, firstModifyTime int64) (extendMsg *unrelation.ExtendMsgModel, err error)
|
|
||||||
DelExtendMsg(clientMsgID string) ExtendMsgSetCache
|
|
||||||
}
|
|
||||||
|
|
||||||
type ExtendMsgSetCacheRedis struct {
|
|
||||||
metaCache
|
|
||||||
expireTime time.Duration
|
|
||||||
rcClient *rockscache.Client
|
|
||||||
extendMsgSetDB unrelation.ExtendMsgSetModelInterface
|
|
||||||
}
|
|
||||||
|
|
||||||
func NewExtendMsgSetCacheRedis(rdb redis.UniversalClient, extendMsgSetDB unrelation.ExtendMsgSetModelInterface, options rockscache.Options) ExtendMsgSetCache {
|
|
||||||
rcClient := rockscache.NewClient(rdb, options)
|
|
||||||
return &ExtendMsgSetCacheRedis{
|
|
||||||
metaCache: NewMetaCacheRedis(rcClient),
|
|
||||||
expireTime: time.Second * 30 * 60,
|
|
||||||
extendMsgSetDB: extendMsgSetDB,
|
|
||||||
rcClient: rcClient,
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func (e *ExtendMsgSetCacheRedis) NewCache() ExtendMsgSetCache {
|
|
||||||
return &ExtendMsgSetCacheRedis{
|
|
||||||
metaCache: NewMetaCacheRedis(e.rcClient, e.metaCache.GetPreDelKeys()...),
|
|
||||||
expireTime: e.expireTime,
|
|
||||||
extendMsgSetDB: e.extendMsgSetDB,
|
|
||||||
rcClient: e.rcClient,
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func (e *ExtendMsgSetCacheRedis) getKey(clientMsgID string) string {
|
|
||||||
return extendMsgCache + clientMsgID
|
|
||||||
}
|
|
||||||
|
|
||||||
func (e *ExtendMsgSetCacheRedis) GetExtendMsg(ctx context.Context, conversationID string, sessionType int32, clientMsgID string, firstModifyTime int64) (extendMsg *unrelation.ExtendMsgModel, err error) {
|
|
||||||
return getCache(ctx, e.rcClient, e.getKey(clientMsgID), e.expireTime, func(ctx context.Context) (*unrelation.ExtendMsgModel, error) {
|
|
||||||
return e.extendMsgSetDB.TakeExtendMsg(ctx, conversationID, sessionType, clientMsgID, firstModifyTime)
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
func (e *ExtendMsgSetCacheRedis) DelExtendMsg(clientMsgID string) ExtendMsgSetCache {
|
|
||||||
new := e.NewCache()
|
|
||||||
new.AddKeys(e.getKey(clientMsgID))
|
|
||||||
return new
|
|
||||||
}
|
|
@ -1,58 +0,0 @@
|
|||||||
package controller
|
|
||||||
|
|
||||||
import (
|
|
||||||
"context"
|
|
||||||
|
|
||||||
"github.com/OpenIMSDK/Open-IM-Server/pkg/common/db/cache"
|
|
||||||
unRelationTb "github.com/OpenIMSDK/Open-IM-Server/pkg/common/db/table/unrelation"
|
|
||||||
"github.com/OpenIMSDK/Open-IM-Server/pkg/common/db/tx"
|
|
||||||
)
|
|
||||||
|
|
||||||
// for mongoDB
|
|
||||||
type ExtendMsgDatabase interface {
|
|
||||||
CreateExtendMsgSet(ctx context.Context, set *unRelationTb.ExtendMsgSetModel) error
|
|
||||||
GetAllExtendMsgSet(ctx context.Context, ID string, opts *unRelationTb.GetAllExtendMsgSetOpts) (sets []*unRelationTb.ExtendMsgSetModel, err error)
|
|
||||||
GetExtendMsgSet(ctx context.Context, conversationID string, sessionType int32, maxMsgUpdateTime int64) (*unRelationTb.ExtendMsgSetModel, error)
|
|
||||||
InsertExtendMsg(ctx context.Context, conversationID string, sessionType int32, msg *unRelationTb.ExtendMsgModel) error
|
|
||||||
InsertOrUpdateReactionExtendMsgSet(ctx context.Context, conversationID string, sessionType int32, clientMsgID string, msgFirstModifyTime int64, reactionExtensionList map[string]*unRelationTb.KeyValueModel) error
|
|
||||||
DeleteReactionExtendMsgSet(ctx context.Context, conversationID string, sessionType int32, clientMsgID string, msgFirstModifyTime int64, reactionExtensionList map[string]*unRelationTb.KeyValueModel) error
|
|
||||||
GetExtendMsg(ctx context.Context, conversationID string, sessionType int32, clientMsgID string, maxMsgUpdateTime int64) (extendMsg *unRelationTb.ExtendMsgModel, err error)
|
|
||||||
}
|
|
||||||
|
|
||||||
type extendMsgDatabase struct {
|
|
||||||
database unRelationTb.ExtendMsgSetModelInterface
|
|
||||||
cache cache.ExtendMsgSetCache
|
|
||||||
ctxTx tx.CtxTx
|
|
||||||
}
|
|
||||||
|
|
||||||
func NewExtendMsgDatabase(extendMsgModel unRelationTb.ExtendMsgSetModelInterface, cache cache.ExtendMsgSetCache, ctxTx tx.CtxTx) ExtendMsgDatabase {
|
|
||||||
return &extendMsgDatabase{database: extendMsgModel, cache: cache, ctxTx: ctxTx}
|
|
||||||
}
|
|
||||||
|
|
||||||
func (e *extendMsgDatabase) CreateExtendMsgSet(ctx context.Context, set *unRelationTb.ExtendMsgSetModel) error {
|
|
||||||
return e.database.CreateExtendMsgSet(ctx, set)
|
|
||||||
}
|
|
||||||
|
|
||||||
func (e *extendMsgDatabase) GetAllExtendMsgSet(ctx context.Context, conversationID string, opts *unRelationTb.GetAllExtendMsgSetOpts) (sets []*unRelationTb.ExtendMsgSetModel, err error) {
|
|
||||||
return e.database.GetAllExtendMsgSet(ctx, conversationID, opts)
|
|
||||||
}
|
|
||||||
|
|
||||||
func (e *extendMsgDatabase) GetExtendMsgSet(ctx context.Context, conversationID string, sessionType int32, maxMsgUpdateTime int64) (*unRelationTb.ExtendMsgSetModel, error) {
|
|
||||||
return e.database.GetExtendMsgSet(ctx, conversationID, sessionType, maxMsgUpdateTime)
|
|
||||||
}
|
|
||||||
|
|
||||||
func (e *extendMsgDatabase) InsertExtendMsg(ctx context.Context, conversationID string, sessionType int32, msg *unRelationTb.ExtendMsgModel) error {
|
|
||||||
return e.database.InsertExtendMsg(ctx, conversationID, sessionType, msg)
|
|
||||||
}
|
|
||||||
|
|
||||||
func (e *extendMsgDatabase) InsertOrUpdateReactionExtendMsgSet(ctx context.Context, conversationID string, sessionType int32, clientMsgID string, msgFirstModifyTime int64, reactionExtensionList map[string]*unRelationTb.KeyValueModel) error {
|
|
||||||
return e.database.InsertOrUpdateReactionExtendMsgSet(ctx, conversationID, sessionType, clientMsgID, msgFirstModifyTime, reactionExtensionList)
|
|
||||||
}
|
|
||||||
|
|
||||||
func (e *extendMsgDatabase) DeleteReactionExtendMsgSet(ctx context.Context, conversationID string, sessionType int32, clientMsgID string, msgFirstModifyTime int64, reactionExtensionList map[string]*unRelationTb.KeyValueModel) error {
|
|
||||||
return e.database.DeleteReactionExtendMsgSet(ctx, conversationID, sessionType, clientMsgID, msgFirstModifyTime, reactionExtensionList)
|
|
||||||
}
|
|
||||||
|
|
||||||
func (e *extendMsgDatabase) GetExtendMsg(ctx context.Context, conversationID string, sessionType int32, clientMsgID string, maxMsgUpdateTime int64) (extendMsg *unRelationTb.ExtendMsgModel, err error) {
|
|
||||||
return e.cache.GetExtendMsg(ctx, conversationID, sessionType, clientMsgID, maxMsgUpdateTime)
|
|
||||||
}
|
|
@ -1,7 +1,6 @@
|
|||||||
package controller
|
package controller
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"fmt"
|
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
"github.com/redis/go-redis/v9"
|
"github.com/redis/go-redis/v9"
|
||||||
@ -86,16 +85,6 @@ type CommonMsgDatabase interface {
|
|||||||
MsgToPushMQ(ctx context.Context, key, conversarionID string, msg2mq *sdkws.MsgData) (int32, int64, error)
|
MsgToPushMQ(ctx context.Context, key, conversarionID string, msg2mq *sdkws.MsgData) (int32, int64, error)
|
||||||
MsgToMongoMQ(ctx context.Context, key, conversarionID string, msgs []*sdkws.MsgData, lastSeq int64) error
|
MsgToMongoMQ(ctx context.Context, key, conversarionID string, msgs []*sdkws.MsgData, lastSeq int64) error
|
||||||
|
|
||||||
// modify
|
|
||||||
JudgeMessageReactionExist(ctx context.Context, clientMsgID string, sessionType int32) (bool, error)
|
|
||||||
SetMessageTypeKeyValue(ctx context.Context, clientMsgID string, sessionType int32, typeKey, value string) error
|
|
||||||
SetMessageReactionExpire(ctx context.Context, clientMsgID string, sessionType int32, expiration time.Duration) (bool, error)
|
|
||||||
GetExtendMsg(ctx context.Context, conversationID string, sessionType int32, clientMsgID string, maxMsgUpdateTime int64) (*pbMsg.ExtendMsg, error)
|
|
||||||
InsertOrUpdateReactionExtendMsgSet(ctx context.Context, conversationID string, sessionType int32, clientMsgID string, msgFirstModifyTime int64, reactionExtensionList map[string]*sdkws.KeyValue) error
|
|
||||||
GetMessageTypeKeyValue(ctx context.Context, clientMsgID string, sessionType int32, typeKey string) (string, error)
|
|
||||||
GetOneMessageAllReactionList(ctx context.Context, clientMsgID string, sessionType int32) (map[string]string, error)
|
|
||||||
DeleteOneMessageKey(ctx context.Context, clientMsgID string, sessionType int32, subKey string) error
|
|
||||||
DeleteReactionExtendMsgSet(ctx context.Context, conversationID string, sessionType int32, clientMsgID string, msgFirstModifyTime int64, reactionExtensionList map[string]*sdkws.KeyValue) error
|
|
||||||
RangeUserSendCount(ctx context.Context, start time.Time, end time.Time, group bool, ase bool, pageNumber int32, showNumber int32) (msgCount int64, userCount int64, users []*unRelationTb.UserCount, dateCount map[string]int64, err error)
|
RangeUserSendCount(ctx context.Context, start time.Time, end time.Time, group bool, ase bool, pageNumber int32, showNumber int32) (msgCount int64, userCount int64, users []*unRelationTb.UserCount, dateCount map[string]int64, err error)
|
||||||
RangeGroupSendCount(ctx context.Context, start time.Time, end time.Time, ase bool, pageNumber int32, showNumber int32) (msgCount int64, userCount int64, groups []*unRelationTb.GroupCount, dateCount map[string]int64, err error)
|
RangeGroupSendCount(ctx context.Context, start time.Time, end time.Time, ase bool, pageNumber int32, showNumber int32) (msgCount int64, userCount int64, groups []*unRelationTb.GroupCount, dateCount map[string]int64, err error)
|
||||||
}
|
}
|
||||||
@ -120,8 +109,6 @@ func InitCommonMsgDatabase(rdb redis.UniversalClient, database *mongo.Database)
|
|||||||
|
|
||||||
type commonMsgDatabase struct {
|
type commonMsgDatabase struct {
|
||||||
msgDocDatabase unRelationTb.MsgDocModelInterface
|
msgDocDatabase unRelationTb.MsgDocModelInterface
|
||||||
extendMsgDatabase unRelationTb.ExtendMsgSetModelInterface
|
|
||||||
extendMsgSetModel unRelationTb.ExtendMsgSetModel
|
|
||||||
msg unRelationTb.MsgDocModel
|
msg unRelationTb.MsgDocModel
|
||||||
cache cache.MsgModel
|
cache cache.MsgModel
|
||||||
producer *kafka.Producer
|
producer *kafka.Producer
|
||||||
@ -633,7 +620,14 @@ func (db *commonMsgDatabase) UserMsgsDestruct(ctx context.Context, userID string
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return seqs, db.DeleteUserMsgsBySeqs(ctx, userID, conversationID, seqs)
|
log.ZDebug(ctx, "UserMsgsDestruct", "conversationID", conversationID, "userID", userID, "seqs", seqs)
|
||||||
|
if len(seqs) > 0 {
|
||||||
|
latestSeq := seqs[len(seqs)-1]
|
||||||
|
if err := db.cache.SetConversationUserMinSeq(ctx, conversationID, userID, latestSeq); err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return seqs, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// this is struct for recursion
|
// this is struct for recursion
|
||||||
@ -868,66 +862,6 @@ func (db *commonMsgDatabase) GetMinMaxSeqMongo(ctx context.Context, conversation
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
func (db *commonMsgDatabase) JudgeMessageReactionExist(ctx context.Context, clientMsgID string, sessionType int32) (bool, error) {
|
|
||||||
return db.cache.JudgeMessageReactionExist(ctx, clientMsgID, sessionType)
|
|
||||||
}
|
|
||||||
|
|
||||||
func (db *commonMsgDatabase) SetMessageTypeKeyValue(ctx context.Context, clientMsgID string, sessionType int32, typeKey, value string) error {
|
|
||||||
return db.cache.SetMessageTypeKeyValue(ctx, clientMsgID, sessionType, typeKey, value)
|
|
||||||
}
|
|
||||||
|
|
||||||
func (db *commonMsgDatabase) SetMessageReactionExpire(ctx context.Context, clientMsgID string, sessionType int32, expiration time.Duration) (bool, error) {
|
|
||||||
return db.cache.SetMessageReactionExpire(ctx, clientMsgID, sessionType, expiration)
|
|
||||||
}
|
|
||||||
|
|
||||||
func (db *commonMsgDatabase) GetMessageTypeKeyValue(ctx context.Context, clientMsgID string, sessionType int32, typeKey string) (string, error) {
|
|
||||||
return db.cache.GetMessageTypeKeyValue(ctx, clientMsgID, sessionType, typeKey)
|
|
||||||
}
|
|
||||||
|
|
||||||
func (db *commonMsgDatabase) GetOneMessageAllReactionList(ctx context.Context, clientMsgID string, sessionType int32) (map[string]string, error) {
|
|
||||||
return db.cache.GetOneMessageAllReactionList(ctx, clientMsgID, sessionType)
|
|
||||||
}
|
|
||||||
|
|
||||||
func (db *commonMsgDatabase) DeleteOneMessageKey(ctx context.Context, clientMsgID string, sessionType int32, subKey string) error {
|
|
||||||
return db.cache.DeleteOneMessageKey(ctx, clientMsgID, sessionType, subKey)
|
|
||||||
}
|
|
||||||
|
|
||||||
func (db *commonMsgDatabase) InsertOrUpdateReactionExtendMsgSet(ctx context.Context, conversationID string, sessionType int32, clientMsgID string, msgFirstModifyTime int64, reactionExtensions map[string]*sdkws.KeyValue) error {
|
|
||||||
return db.extendMsgDatabase.InsertOrUpdateReactionExtendMsgSet(ctx, conversationID, sessionType, clientMsgID, msgFirstModifyTime, db.extendMsgSetModel.Pb2Model(reactionExtensions))
|
|
||||||
}
|
|
||||||
|
|
||||||
func (db *commonMsgDatabase) GetExtendMsg(ctx context.Context, conversationID string, sessionType int32, clientMsgID string, maxMsgUpdateTime int64) (*pbMsg.ExtendMsg, error) {
|
|
||||||
extendMsgSet, err := db.extendMsgDatabase.GetExtendMsgSet(ctx, conversationID, sessionType, maxMsgUpdateTime)
|
|
||||||
if err != nil {
|
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
extendMsg, ok := extendMsgSet.ExtendMsgs[clientMsgID]
|
|
||||||
if !ok {
|
|
||||||
return nil, errs.ErrRecordNotFound.Wrap(fmt.Sprintf("cant find client msg id: %s", clientMsgID))
|
|
||||||
}
|
|
||||||
reactionExtensionList := make(map[string]*pbMsg.KeyValueResp)
|
|
||||||
for key, model := range extendMsg.ReactionExtensionList {
|
|
||||||
reactionExtensionList[key] = &pbMsg.KeyValueResp{
|
|
||||||
KeyValue: &sdkws.KeyValue{
|
|
||||||
TypeKey: model.TypeKey,
|
|
||||||
Value: model.Value,
|
|
||||||
LatestUpdateTime: model.LatestUpdateTime,
|
|
||||||
},
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return &pbMsg.ExtendMsg{
|
|
||||||
ReactionExtensions: reactionExtensionList,
|
|
||||||
ClientMsgID: extendMsg.ClientMsgID,
|
|
||||||
MsgFirstModifyTime: extendMsg.MsgFirstModifyTime,
|
|
||||||
AttachedInfo: extendMsg.AttachedInfo,
|
|
||||||
Ex: extendMsg.Ex,
|
|
||||||
}, nil
|
|
||||||
}
|
|
||||||
|
|
||||||
func (db *commonMsgDatabase) DeleteReactionExtendMsgSet(ctx context.Context, conversationID string, sessionType int32, clientMsgID string, msgFirstModifyTime int64, reactionExtensions map[string]*sdkws.KeyValue) error {
|
|
||||||
return db.extendMsgDatabase.DeleteReactionExtendMsgSet(ctx, conversationID, sessionType, clientMsgID, msgFirstModifyTime, db.extendMsgSetModel.Pb2Model(reactionExtensions))
|
|
||||||
}
|
|
||||||
|
|
||||||
func (db *commonMsgDatabase) RangeUserSendCount(ctx context.Context, start time.Time, end time.Time, group bool, ase bool, pageNumber int32, showNumber int32) (msgCount int64, userCount int64, users []*unRelationTb.UserCount, dateCount map[string]int64, err error) {
|
func (db *commonMsgDatabase) RangeUserSendCount(ctx context.Context, start time.Time, end time.Time, group bool, ase bool, pageNumber int32, showNumber int32) (msgCount int64, userCount int64, users []*unRelationTb.UserCount, dateCount map[string]int64, err error) {
|
||||||
return db.msgDocDatabase.RangeUserSendCount(ctx, start, end, group, ase, pageNumber, showNumber)
|
return db.msgDocDatabase.RangeUserSendCount(ctx, start, end, group, ase, pageNumber, showNumber)
|
||||||
}
|
}
|
||||||
|
@ -1,82 +0,0 @@
|
|||||||
package unrelation
|
|
||||||
|
|
||||||
import (
|
|
||||||
"context"
|
|
||||||
"strconv"
|
|
||||||
"strings"
|
|
||||||
|
|
||||||
"github.com/OpenIMSDK/Open-IM-Server/pkg/proto/sdkws"
|
|
||||||
)
|
|
||||||
|
|
||||||
const (
|
|
||||||
CExtendMsgSet = "extend_msgs"
|
|
||||||
|
|
||||||
ExtendMsgMaxNum = 100
|
|
||||||
)
|
|
||||||
|
|
||||||
type ExtendMsgSetModel struct {
|
|
||||||
ConversationID string `bson:"source_id" json:"conversationID"`
|
|
||||||
SessionType int32 `bson:"session_type" json:"sessionType"`
|
|
||||||
ExtendMsgs map[string]ExtendMsgModel `bson:"extend_msgs" json:"extendMsgs"`
|
|
||||||
ExtendMsgNum int32 `bson:"extend_msg_num" json:"extendMsgNum"`
|
|
||||||
CreateTime int64 `bson:"create_time" json:"createTime"` // this block's create time
|
|
||||||
MaxMsgUpdateTime int64 `bson:"max_msg_update_time" json:"maxMsgUpdateTime"` // index find msg
|
|
||||||
}
|
|
||||||
|
|
||||||
type KeyValueModel struct {
|
|
||||||
TypeKey string `bson:"type_key" json:"typeKey"`
|
|
||||||
Value string `bson:"value" json:"value"`
|
|
||||||
LatestUpdateTime int64 `bson:"latest_update_time" json:"latestUpdateTime"`
|
|
||||||
}
|
|
||||||
|
|
||||||
type ExtendMsgModel struct {
|
|
||||||
ReactionExtensionList map[string]KeyValueModel `bson:"reaction_extension_list" json:"reactionExtensionList"`
|
|
||||||
ClientMsgID string `bson:"client_msg_id" json:"clientMsgID"`
|
|
||||||
MsgFirstModifyTime int64 `bson:"msg_first_modify_time" json:"msgFirstModifyTime"` // this extendMsg create time
|
|
||||||
AttachedInfo string `bson:"attached_info" json:"attachedInfo"`
|
|
||||||
Ex string `bson:"ex" json:"ex"`
|
|
||||||
}
|
|
||||||
|
|
||||||
type ExtendMsgSetModelInterface interface {
|
|
||||||
CreateExtendMsgSet(ctx context.Context, set *ExtendMsgSetModel) error
|
|
||||||
GetAllExtendMsgSet(ctx context.Context, conversationID string, opts *GetAllExtendMsgSetOpts) (sets []*ExtendMsgSetModel, err error)
|
|
||||||
GetExtendMsgSet(ctx context.Context, conversationID string, sessionType int32, maxMsgUpdateTime int64) (*ExtendMsgSetModel, error)
|
|
||||||
InsertExtendMsg(ctx context.Context, conversationID string, sessionType int32, msg *ExtendMsgModel) error
|
|
||||||
InsertOrUpdateReactionExtendMsgSet(ctx context.Context, conversationID string, sessionType int32, clientMsgID string, msgFirstModifyTime int64, reactionExtensionList map[string]*KeyValueModel) error
|
|
||||||
DeleteReactionExtendMsgSet(ctx context.Context, conversationID string, sessionType int32, clientMsgID string, msgFirstModifyTime int64, reactionExtensionList map[string]*KeyValueModel) error
|
|
||||||
TakeExtendMsg(ctx context.Context, conversationID string, sessionType int32, clientMsgID string, maxMsgUpdateTime int64) (extendMsg *ExtendMsgModel, err error)
|
|
||||||
}
|
|
||||||
|
|
||||||
func (ExtendMsgSetModel) TableName() string {
|
|
||||||
return CExtendMsgSet
|
|
||||||
}
|
|
||||||
|
|
||||||
func (ExtendMsgSetModel) GetExtendMsgMaxNum() int32 {
|
|
||||||
return ExtendMsgMaxNum
|
|
||||||
}
|
|
||||||
|
|
||||||
func (ExtendMsgSetModel) GetConversationID(ID string, index int32) string {
|
|
||||||
return ID + ":" + strconv.Itoa(int(index))
|
|
||||||
}
|
|
||||||
|
|
||||||
func (e *ExtendMsgSetModel) SplitConversationIDAndGetIndex() int32 {
|
|
||||||
l := strings.Split(e.ConversationID, ":")
|
|
||||||
index, _ := strconv.Atoi(l[len(l)-1])
|
|
||||||
return int32(index)
|
|
||||||
}
|
|
||||||
|
|
||||||
type GetAllExtendMsgSetOpts struct {
|
|
||||||
ExcludeExtendMsgs bool
|
|
||||||
}
|
|
||||||
|
|
||||||
func (ExtendMsgSetModel) Pb2Model(reactionExtensionList map[string]*sdkws.KeyValue) map[string]*KeyValueModel {
|
|
||||||
r := make(map[string]*KeyValueModel)
|
|
||||||
for key, value := range reactionExtensionList {
|
|
||||||
r[key] = &KeyValueModel{
|
|
||||||
TypeKey: value.TypeKey,
|
|
||||||
Value: value.Value,
|
|
||||||
LatestUpdateTime: value.LatestUpdateTime,
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return r
|
|
||||||
}
|
|
@ -1,153 +0,0 @@
|
|||||||
package unrelation
|
|
||||||
|
|
||||||
import (
|
|
||||||
"context"
|
|
||||||
"errors"
|
|
||||||
"fmt"
|
|
||||||
|
|
||||||
unRelationTb "github.com/OpenIMSDK/Open-IM-Server/pkg/common/db/table/unrelation"
|
|
||||||
"github.com/OpenIMSDK/Open-IM-Server/pkg/utils"
|
|
||||||
"go.mongodb.org/mongo-driver/bson"
|
|
||||||
"go.mongodb.org/mongo-driver/bson/primitive"
|
|
||||||
"go.mongodb.org/mongo-driver/mongo"
|
|
||||||
"go.mongodb.org/mongo-driver/mongo/options"
|
|
||||||
)
|
|
||||||
|
|
||||||
type ExtendMsgSetMongoDriver struct {
|
|
||||||
mgoDB *mongo.Database
|
|
||||||
ExtendMsgSetCollection *mongo.Collection
|
|
||||||
}
|
|
||||||
|
|
||||||
func NewExtendMsgSetMongoDriver(mgoDB *mongo.Database) unRelationTb.ExtendMsgSetModelInterface {
|
|
||||||
return &ExtendMsgSetMongoDriver{mgoDB: mgoDB, ExtendMsgSetCollection: mgoDB.Collection(unRelationTb.CExtendMsgSet)}
|
|
||||||
}
|
|
||||||
|
|
||||||
func (e *ExtendMsgSetMongoDriver) CreateExtendMsgSet(ctx context.Context, set *unRelationTb.ExtendMsgSetModel) error {
|
|
||||||
_, err := e.ExtendMsgSetCollection.InsertOne(ctx, set)
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
|
|
||||||
func (e *ExtendMsgSetMongoDriver) GetAllExtendMsgSet(ctx context.Context, ID string, opts *unRelationTb.GetAllExtendMsgSetOpts) (sets []*unRelationTb.ExtendMsgSetModel, err error) {
|
|
||||||
regex := fmt.Sprintf("^%s", ID)
|
|
||||||
var findOpts *options.FindOptions
|
|
||||||
if opts != nil {
|
|
||||||
if opts.ExcludeExtendMsgs {
|
|
||||||
findOpts = &options.FindOptions{}
|
|
||||||
findOpts.SetProjection(bson.M{"extend_msgs": 0})
|
|
||||||
}
|
|
||||||
}
|
|
||||||
cursor, err := e.ExtendMsgSetCollection.Find(ctx, bson.M{"doc_id": primitive.Regex{Pattern: regex}}, findOpts)
|
|
||||||
if err != nil {
|
|
||||||
return nil, utils.Wrap(err, "")
|
|
||||||
}
|
|
||||||
err = cursor.All(ctx, &sets)
|
|
||||||
if err != nil {
|
|
||||||
return nil, utils.Wrap(err, fmt.Sprintf("cursor is %s", cursor.Current.String()))
|
|
||||||
}
|
|
||||||
return sets, nil
|
|
||||||
}
|
|
||||||
|
|
||||||
func (e *ExtendMsgSetMongoDriver) GetExtendMsgSet(ctx context.Context, conversationID string, sessionType int32, maxMsgUpdateTime int64) (*unRelationTb.ExtendMsgSetModel, error) {
|
|
||||||
var err error
|
|
||||||
findOpts := options.Find().SetLimit(1).SetSkip(0).SetSort(bson.M{"source_id": -1}).SetProjection(bson.M{"extend_msgs": 0})
|
|
||||||
// update newest
|
|
||||||
find := bson.M{"source_id": primitive.Regex{Pattern: fmt.Sprintf("^%s", conversationID)}, "session_type": sessionType}
|
|
||||||
if maxMsgUpdateTime > 0 {
|
|
||||||
find["max_msg_update_time"] = maxMsgUpdateTime
|
|
||||||
}
|
|
||||||
result, err := e.ExtendMsgSetCollection.Find(ctx, find, findOpts)
|
|
||||||
if err != nil {
|
|
||||||
return nil, utils.Wrap(err, "")
|
|
||||||
}
|
|
||||||
var setList []unRelationTb.ExtendMsgSetModel
|
|
||||||
if err := result.All(ctx, &setList); err != nil {
|
|
||||||
return nil, utils.Wrap(err, "")
|
|
||||||
}
|
|
||||||
if len(setList) == 0 {
|
|
||||||
return nil, nil
|
|
||||||
}
|
|
||||||
return &setList[0], nil
|
|
||||||
}
|
|
||||||
|
|
||||||
// first modify msg
|
|
||||||
func (e *ExtendMsgSetMongoDriver) InsertExtendMsg(ctx context.Context, conversationID string, sessionType int32, msg *unRelationTb.ExtendMsgModel) error {
|
|
||||||
set, err := e.GetExtendMsgSet(ctx, conversationID, sessionType, 0)
|
|
||||||
if err != nil {
|
|
||||||
return utils.Wrap(err, "")
|
|
||||||
}
|
|
||||||
if set == nil || set.ExtendMsgNum >= set.GetExtendMsgMaxNum() {
|
|
||||||
var index int32
|
|
||||||
if set != nil {
|
|
||||||
index = set.SplitConversationIDAndGetIndex()
|
|
||||||
}
|
|
||||||
err = e.CreateExtendMsgSet(ctx, &unRelationTb.ExtendMsgSetModel{
|
|
||||||
ConversationID: set.GetConversationID(conversationID, index),
|
|
||||||
SessionType: sessionType,
|
|
||||||
ExtendMsgs: map[string]unRelationTb.ExtendMsgModel{msg.ClientMsgID: *msg},
|
|
||||||
ExtendMsgNum: 1,
|
|
||||||
CreateTime: msg.MsgFirstModifyTime,
|
|
||||||
MaxMsgUpdateTime: msg.MsgFirstModifyTime,
|
|
||||||
})
|
|
||||||
} else {
|
|
||||||
_, err = e.ExtendMsgSetCollection.UpdateOne(ctx, bson.M{"conversation_id": set.ConversationID, "session_type": sessionType}, bson.M{"$set": bson.M{"max_msg_update_time": msg.MsgFirstModifyTime, "$inc": bson.M{"extend_msg_num": 1}, fmt.Sprintf("extend_msgs.%s", msg.ClientMsgID): msg}})
|
|
||||||
}
|
|
||||||
return utils.Wrap(err, "")
|
|
||||||
}
|
|
||||||
|
|
||||||
// insert or update
|
|
||||||
func (e *ExtendMsgSetMongoDriver) InsertOrUpdateReactionExtendMsgSet(ctx context.Context, conversationID string, sessionType int32, clientMsgID string, msgFirstModifyTime int64, reactionExtensionList map[string]*unRelationTb.KeyValueModel) error {
|
|
||||||
var updateBson = bson.M{}
|
|
||||||
for _, v := range reactionExtensionList {
|
|
||||||
updateBson[fmt.Sprintf("extend_msgs.%s.%s", clientMsgID, v.TypeKey)] = v
|
|
||||||
}
|
|
||||||
upsert := true
|
|
||||||
opt := &options.UpdateOptions{
|
|
||||||
Upsert: &upsert,
|
|
||||||
}
|
|
||||||
set, err := e.GetExtendMsgSet(ctx, conversationID, sessionType, msgFirstModifyTime)
|
|
||||||
if err != nil {
|
|
||||||
return utils.Wrap(err, "")
|
|
||||||
}
|
|
||||||
if set == nil {
|
|
||||||
return errors.New(fmt.Sprintf("conversationID %s has no set", conversationID))
|
|
||||||
}
|
|
||||||
_, err = e.ExtendMsgSetCollection.UpdateOne(ctx, bson.M{"source_id": set.ConversationID, "session_type": sessionType}, bson.M{"$set": updateBson}, opt)
|
|
||||||
return utils.Wrap(err, "")
|
|
||||||
}
|
|
||||||
|
|
||||||
// delete TypeKey
|
|
||||||
func (e *ExtendMsgSetMongoDriver) DeleteReactionExtendMsgSet(ctx context.Context, conversationID string, sessionType int32, clientMsgID string, msgFirstModifyTime int64, reactionExtensionList map[string]*unRelationTb.KeyValueModel) error {
|
|
||||||
var updateBson = bson.M{}
|
|
||||||
for _, v := range reactionExtensionList {
|
|
||||||
updateBson[fmt.Sprintf("extend_msgs.%s.%s", clientMsgID, v.TypeKey)] = ""
|
|
||||||
}
|
|
||||||
set, err := e.GetExtendMsgSet(ctx, conversationID, sessionType, msgFirstModifyTime)
|
|
||||||
if err != nil {
|
|
||||||
return utils.Wrap(err, "")
|
|
||||||
}
|
|
||||||
if set == nil {
|
|
||||||
return errors.New(fmt.Sprintf("conversationID %s has no set", conversationID))
|
|
||||||
}
|
|
||||||
_, err = e.ExtendMsgSetCollection.UpdateOne(ctx, bson.M{"source_id": set.ConversationID, "session_type": sessionType}, bson.M{"$unset": updateBson})
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
|
|
||||||
func (e *ExtendMsgSetMongoDriver) TakeExtendMsg(ctx context.Context, conversationID string, sessionType int32, clientMsgID string, maxMsgUpdateTime int64) (extendMsg *unRelationTb.ExtendMsgModel, err error) {
|
|
||||||
findOpts := options.Find().SetLimit(1).SetSkip(0).SetSort(bson.M{"source_id": -1}).SetProjection(bson.M{fmt.Sprintf("extend_msgs.%s", clientMsgID): 1})
|
|
||||||
regex := fmt.Sprintf("^%s", conversationID)
|
|
||||||
result, err := e.ExtendMsgSetCollection.Find(ctx, bson.M{"source_id": primitive.Regex{Pattern: regex}, "session_type": sessionType, "max_msg_update_time": bson.M{"$lte": maxMsgUpdateTime}}, findOpts)
|
|
||||||
if err != nil {
|
|
||||||
return nil, utils.Wrap(err, "")
|
|
||||||
}
|
|
||||||
var setList []unRelationTb.ExtendMsgSetModel
|
|
||||||
if err := result.All(ctx, &setList); err != nil {
|
|
||||||
return nil, utils.Wrap(err, "")
|
|
||||||
}
|
|
||||||
if len(setList) == 0 {
|
|
||||||
return nil, utils.Wrap(errors.New("GetExtendMsg failed, len(setList) == 0"), "")
|
|
||||||
}
|
|
||||||
if v, ok := setList[0].ExtendMsgs[clientMsgID]; ok {
|
|
||||||
return &v, nil
|
|
||||||
}
|
|
||||||
return nil, errors.New(fmt.Sprintf("cant find client msg id: %s", clientMsgID))
|
|
||||||
}
|
|
@ -78,10 +78,6 @@ func (m *Mongo) CreateSuperGroupIndex() error {
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (m *Mongo) CreateExtendMsgSetIndex() error {
|
|
||||||
return m.createMongoIndex(unrelation.CExtendMsgSet, true, "-create_time", "work_moment_id")
|
|
||||||
}
|
|
||||||
|
|
||||||
func (m *Mongo) createMongoIndex(collection string, isUnique bool, keys ...string) error {
|
func (m *Mongo) createMongoIndex(collection string, isUnique bool, keys ...string) error {
|
||||||
db := m.db.Database(config.Config.Mongo.Database).Collection(collection)
|
db := m.db.Database(config.Config.Mongo.Database).Collection(collection)
|
||||||
opts := options.CreateIndexes().SetMaxTime(10 * time.Second)
|
opts := options.CreateIndexes().SetMaxTime(10 * time.Second)
|
||||||
|
File diff suppressed because it is too large
Load Diff
@ -1,7 +1,7 @@
|
|||||||
syntax = "proto3";
|
syntax = "proto3";
|
||||||
package OpenIMServer.msg;
|
package OpenIMServer.msg;
|
||||||
import "sdkws/sdkws.proto";
|
import "sdkws/sdkws.proto";
|
||||||
import "wrapperspb/wrapperspb.proto";
|
// import "wrapperspb/wrapperspb.proto";
|
||||||
option go_package = "github.com/OpenIMSDK/Open-IM-Server/pkg/proto/msg";
|
option go_package = "github.com/OpenIMSDK/Open-IM-Server/pkg/proto/msg";
|
||||||
|
|
||||||
message MsgDataToMQ{
|
message MsgDataToMQ{
|
||||||
@ -60,93 +60,6 @@ message GetSendMsgStatusResp{
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
message ModifyMessageReactionExtensionsReq {
|
|
||||||
string conversationID = 1;
|
|
||||||
int32 sessionType = 2;
|
|
||||||
map <string, sdkws.KeyValue>reactionExtensions = 3;
|
|
||||||
string clientMsgID = 4;
|
|
||||||
OpenIMServer.protobuf.StringValue ex = 5;
|
|
||||||
OpenIMServer.protobuf.StringValue attachedInfo = 6;
|
|
||||||
bool isReact = 7;
|
|
||||||
bool isExternalExtensions = 8;
|
|
||||||
int64 msgFirstModifyTime = 9;
|
|
||||||
}
|
|
||||||
message SetMessageReactionExtensionsReq {
|
|
||||||
string conversationID = 1;
|
|
||||||
int32 sessionType = 2;
|
|
||||||
map <string, sdkws.KeyValue>reactionExtensions = 3;
|
|
||||||
string clientMsgID = 4;
|
|
||||||
OpenIMServer.protobuf.StringValue ex = 5;
|
|
||||||
OpenIMServer.protobuf.StringValue attachedInfo = 6;
|
|
||||||
bool isReact = 7;
|
|
||||||
bool isExternalExtensions = 8;
|
|
||||||
int64 msgFirstModifyTime = 9;
|
|
||||||
}
|
|
||||||
message SetMessageReactionExtensionsResp {
|
|
||||||
string clientMsgID = 1;
|
|
||||||
int64 msgFirstModifyTime = 2;
|
|
||||||
bool isReact = 3;
|
|
||||||
repeated KeyValueResp result = 4;
|
|
||||||
}
|
|
||||||
|
|
||||||
message GetMessagesReactionExtensionsReq {
|
|
||||||
string conversationID = 1;
|
|
||||||
int32 sessionType = 2;
|
|
||||||
message MessageReactionKey {
|
|
||||||
string clientMsgID = 1;
|
|
||||||
int64 msgFirstModifyTime = 2;
|
|
||||||
}
|
|
||||||
repeated MessageReactionKey messageReactionKeys = 3;
|
|
||||||
repeated string TypeKeys = 4;
|
|
||||||
}
|
|
||||||
message GetMessagesReactionExtensionsResp{
|
|
||||||
repeated SingleMessageExtensionResult singleMessageResult = 1;
|
|
||||||
|
|
||||||
}
|
|
||||||
message SingleMessageExtensionResult {
|
|
||||||
map <string, sdkws.KeyValue>reactionExtensions = 1;
|
|
||||||
string clientMsgID = 2;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
message ModifyMessageReactionExtensionsResp {
|
|
||||||
repeated ExtendMsgResp successList = 1;
|
|
||||||
repeated ExtendMsgResp failedList = 2;
|
|
||||||
}
|
|
||||||
|
|
||||||
message DeleteMessagesReactionExtensionsReq {
|
|
||||||
string operationID = 1;
|
|
||||||
string opUserID = 2;
|
|
||||||
string conversationID = 3;
|
|
||||||
int32 sessionType = 4;
|
|
||||||
string clientMsgID = 5;
|
|
||||||
bool isExternalExtensions = 6;
|
|
||||||
int64 msgFirstModifyTime = 7;
|
|
||||||
repeated sdkws.KeyValue reactionExtensions = 8;
|
|
||||||
}
|
|
||||||
|
|
||||||
message DeleteMessagesReactionExtensionsResp {
|
|
||||||
repeated KeyValueResp result = 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
message ExtendMsgResp {
|
|
||||||
ExtendMsg extendMsg = 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
message ExtendMsg {
|
|
||||||
map <string, KeyValueResp>reactionExtensions = 1;
|
|
||||||
string clientMsgID = 2;
|
|
||||||
int64 msgFirstModifyTime = 3;
|
|
||||||
string attachedInfo = 4;
|
|
||||||
string ex = 5;
|
|
||||||
}
|
|
||||||
|
|
||||||
message KeyValueResp {
|
|
||||||
sdkws.KeyValue keyValue = 1;
|
|
||||||
int32 errCode = 2;
|
|
||||||
string errMsg = 3;
|
|
||||||
}
|
|
||||||
|
|
||||||
message MsgDataToModifyByMQ{
|
message MsgDataToModifyByMQ{
|
||||||
repeated sdkws.MsgData messages = 1;
|
repeated sdkws.MsgData messages = 1;
|
||||||
string conversationID = 2;
|
string conversationID = 2;
|
||||||
@ -334,11 +247,6 @@ service msg {
|
|||||||
rpc MarkMsgsAsRead(MarkMsgsAsReadReq) returns(MarkMsgsAsReadResp);
|
rpc MarkMsgsAsRead(MarkMsgsAsReadReq) returns(MarkMsgsAsReadResp);
|
||||||
rpc MarkConversationAsRead(MarkConversationAsReadReq) returns(MarkConversationAsReadResp);
|
rpc MarkConversationAsRead(MarkConversationAsReadReq) returns(MarkConversationAsReadResp);
|
||||||
rpc SetConversationHasReadSeq(SetConversationHasReadSeqReq) returns(SetConversationHasReadSeqResp);
|
rpc SetConversationHasReadSeq(SetConversationHasReadSeqReq) returns(SetConversationHasReadSeqResp);
|
||||||
// 修改消息
|
|
||||||
rpc SetMessageReactionExtensions(SetMessageReactionExtensionsReq) returns(SetMessageReactionExtensionsResp);
|
|
||||||
rpc GetMessagesReactionExtensions(GetMessagesReactionExtensionsReq) returns(GetMessagesReactionExtensionsResp);
|
|
||||||
rpc AddMessageReactionExtensions(ModifyMessageReactionExtensionsReq) returns(ModifyMessageReactionExtensionsResp);
|
|
||||||
rpc DeleteMessageReactionExtensions(DeleteMessagesReactionExtensionsReq) returns(DeleteMessagesReactionExtensionsResp);
|
|
||||||
|
|
||||||
rpc GetConversationsHasReadAndMaxSeq(GetConversationsHasReadAndMaxSeqReq) returns(GetConversationsHasReadAndMaxSeqResp);
|
rpc GetConversationsHasReadAndMaxSeq(GetConversationsHasReadAndMaxSeqReq) returns(GetConversationsHasReadAndMaxSeqResp);
|
||||||
|
|
||||||
|
@ -4577,425 +4577,6 @@ func (*SetAppBackgroundStatusResp) Descriptor() ([]byte, []int) {
|
|||||||
return file_sdkws_sdkws_proto_rawDescGZIP(), []int{61}
|
return file_sdkws_sdkws_proto_rawDescGZIP(), []int{61}
|
||||||
}
|
}
|
||||||
|
|
||||||
type ExtendMsgSet struct {
|
|
||||||
state protoimpl.MessageState
|
|
||||||
sizeCache protoimpl.SizeCache
|
|
||||||
unknownFields protoimpl.UnknownFields
|
|
||||||
|
|
||||||
ConversationID string `protobuf:"bytes,1,opt,name=conversationID,proto3" json:"conversationID"`
|
|
||||||
SessionType int32 `protobuf:"varint,2,opt,name=sessionType,proto3" json:"sessionType"`
|
|
||||||
ExtendMsgs map[string]*ExtendMsg `protobuf:"bytes,3,rep,name=extendMsgs,proto3" json:"extendMsgs" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
|
|
||||||
MaxMsgUpdateTime int64 `protobuf:"varint,4,opt,name=MaxMsgUpdateTime,proto3" json:"MaxMsgUpdateTime"`
|
|
||||||
ExtendMsgNum int32 `protobuf:"varint,5,opt,name=extendMsgNum,proto3" json:"extendMsgNum"`
|
|
||||||
CreateTime int64 `protobuf:"varint,6,opt,name=createTime,proto3" json:"createTime"`
|
|
||||||
}
|
|
||||||
|
|
||||||
func (x *ExtendMsgSet) Reset() {
|
|
||||||
*x = ExtendMsgSet{}
|
|
||||||
if protoimpl.UnsafeEnabled {
|
|
||||||
mi := &file_sdkws_sdkws_proto_msgTypes[62]
|
|
||||||
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
|
||||||
ms.StoreMessageInfo(mi)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func (x *ExtendMsgSet) String() string {
|
|
||||||
return protoimpl.X.MessageStringOf(x)
|
|
||||||
}
|
|
||||||
|
|
||||||
func (*ExtendMsgSet) ProtoMessage() {}
|
|
||||||
|
|
||||||
func (x *ExtendMsgSet) ProtoReflect() protoreflect.Message {
|
|
||||||
mi := &file_sdkws_sdkws_proto_msgTypes[62]
|
|
||||||
if protoimpl.UnsafeEnabled && x != nil {
|
|
||||||
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
|
||||||
if ms.LoadMessageInfo() == nil {
|
|
||||||
ms.StoreMessageInfo(mi)
|
|
||||||
}
|
|
||||||
return ms
|
|
||||||
}
|
|
||||||
return mi.MessageOf(x)
|
|
||||||
}
|
|
||||||
|
|
||||||
// Deprecated: Use ExtendMsgSet.ProtoReflect.Descriptor instead.
|
|
||||||
func (*ExtendMsgSet) Descriptor() ([]byte, []int) {
|
|
||||||
return file_sdkws_sdkws_proto_rawDescGZIP(), []int{62}
|
|
||||||
}
|
|
||||||
|
|
||||||
func (x *ExtendMsgSet) GetConversationID() string {
|
|
||||||
if x != nil {
|
|
||||||
return x.ConversationID
|
|
||||||
}
|
|
||||||
return ""
|
|
||||||
}
|
|
||||||
|
|
||||||
func (x *ExtendMsgSet) GetSessionType() int32 {
|
|
||||||
if x != nil {
|
|
||||||
return x.SessionType
|
|
||||||
}
|
|
||||||
return 0
|
|
||||||
}
|
|
||||||
|
|
||||||
func (x *ExtendMsgSet) GetExtendMsgs() map[string]*ExtendMsg {
|
|
||||||
if x != nil {
|
|
||||||
return x.ExtendMsgs
|
|
||||||
}
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
|
|
||||||
func (x *ExtendMsgSet) GetMaxMsgUpdateTime() int64 {
|
|
||||||
if x != nil {
|
|
||||||
return x.MaxMsgUpdateTime
|
|
||||||
}
|
|
||||||
return 0
|
|
||||||
}
|
|
||||||
|
|
||||||
func (x *ExtendMsgSet) GetExtendMsgNum() int32 {
|
|
||||||
if x != nil {
|
|
||||||
return x.ExtendMsgNum
|
|
||||||
}
|
|
||||||
return 0
|
|
||||||
}
|
|
||||||
|
|
||||||
func (x *ExtendMsgSet) GetCreateTime() int64 {
|
|
||||||
if x != nil {
|
|
||||||
return x.CreateTime
|
|
||||||
}
|
|
||||||
return 0
|
|
||||||
}
|
|
||||||
|
|
||||||
type ExtendMsg struct {
|
|
||||||
state protoimpl.MessageState
|
|
||||||
sizeCache protoimpl.SizeCache
|
|
||||||
unknownFields protoimpl.UnknownFields
|
|
||||||
|
|
||||||
ReactionExtensionList map[string]*KeyValue `protobuf:"bytes,1,rep,name=reactionExtensionList,proto3" json:"reactionExtensionList" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
|
|
||||||
ClientMsgID string `protobuf:"bytes,2,opt,name=clientMsgID,proto3" json:"clientMsgID"`
|
|
||||||
MsgFirstModifyTime int64 `protobuf:"varint,3,opt,name=msgFirstModifyTime,proto3" json:"msgFirstModifyTime"`
|
|
||||||
AttachedInfo string `protobuf:"bytes,4,opt,name=attachedInfo,proto3" json:"attachedInfo"`
|
|
||||||
Ex string `protobuf:"bytes,5,opt,name=ex,proto3" json:"ex"`
|
|
||||||
}
|
|
||||||
|
|
||||||
func (x *ExtendMsg) Reset() {
|
|
||||||
*x = ExtendMsg{}
|
|
||||||
if protoimpl.UnsafeEnabled {
|
|
||||||
mi := &file_sdkws_sdkws_proto_msgTypes[63]
|
|
||||||
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
|
||||||
ms.StoreMessageInfo(mi)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func (x *ExtendMsg) String() string {
|
|
||||||
return protoimpl.X.MessageStringOf(x)
|
|
||||||
}
|
|
||||||
|
|
||||||
func (*ExtendMsg) ProtoMessage() {}
|
|
||||||
|
|
||||||
func (x *ExtendMsg) ProtoReflect() protoreflect.Message {
|
|
||||||
mi := &file_sdkws_sdkws_proto_msgTypes[63]
|
|
||||||
if protoimpl.UnsafeEnabled && x != nil {
|
|
||||||
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
|
||||||
if ms.LoadMessageInfo() == nil {
|
|
||||||
ms.StoreMessageInfo(mi)
|
|
||||||
}
|
|
||||||
return ms
|
|
||||||
}
|
|
||||||
return mi.MessageOf(x)
|
|
||||||
}
|
|
||||||
|
|
||||||
// Deprecated: Use ExtendMsg.ProtoReflect.Descriptor instead.
|
|
||||||
func (*ExtendMsg) Descriptor() ([]byte, []int) {
|
|
||||||
return file_sdkws_sdkws_proto_rawDescGZIP(), []int{63}
|
|
||||||
}
|
|
||||||
|
|
||||||
func (x *ExtendMsg) GetReactionExtensionList() map[string]*KeyValue {
|
|
||||||
if x != nil {
|
|
||||||
return x.ReactionExtensionList
|
|
||||||
}
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
|
|
||||||
func (x *ExtendMsg) GetClientMsgID() string {
|
|
||||||
if x != nil {
|
|
||||||
return x.ClientMsgID
|
|
||||||
}
|
|
||||||
return ""
|
|
||||||
}
|
|
||||||
|
|
||||||
func (x *ExtendMsg) GetMsgFirstModifyTime() int64 {
|
|
||||||
if x != nil {
|
|
||||||
return x.MsgFirstModifyTime
|
|
||||||
}
|
|
||||||
return 0
|
|
||||||
}
|
|
||||||
|
|
||||||
func (x *ExtendMsg) GetAttachedInfo() string {
|
|
||||||
if x != nil {
|
|
||||||
return x.AttachedInfo
|
|
||||||
}
|
|
||||||
return ""
|
|
||||||
}
|
|
||||||
|
|
||||||
func (x *ExtendMsg) GetEx() string {
|
|
||||||
if x != nil {
|
|
||||||
return x.Ex
|
|
||||||
}
|
|
||||||
return ""
|
|
||||||
}
|
|
||||||
|
|
||||||
type KeyValue struct {
|
|
||||||
state protoimpl.MessageState
|
|
||||||
sizeCache protoimpl.SizeCache
|
|
||||||
unknownFields protoimpl.UnknownFields
|
|
||||||
|
|
||||||
TypeKey string `protobuf:"bytes,1,opt,name=typeKey,proto3" json:"typeKey"`
|
|
||||||
Value string `protobuf:"bytes,2,opt,name=value,proto3" json:"value"`
|
|
||||||
LatestUpdateTime int64 `protobuf:"varint,3,opt,name=latestUpdateTime,proto3" json:"latestUpdateTime"`
|
|
||||||
}
|
|
||||||
|
|
||||||
func (x *KeyValue) Reset() {
|
|
||||||
*x = KeyValue{}
|
|
||||||
if protoimpl.UnsafeEnabled {
|
|
||||||
mi := &file_sdkws_sdkws_proto_msgTypes[64]
|
|
||||||
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
|
||||||
ms.StoreMessageInfo(mi)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func (x *KeyValue) String() string {
|
|
||||||
return protoimpl.X.MessageStringOf(x)
|
|
||||||
}
|
|
||||||
|
|
||||||
func (*KeyValue) ProtoMessage() {}
|
|
||||||
|
|
||||||
func (x *KeyValue) ProtoReflect() protoreflect.Message {
|
|
||||||
mi := &file_sdkws_sdkws_proto_msgTypes[64]
|
|
||||||
if protoimpl.UnsafeEnabled && x != nil {
|
|
||||||
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
|
||||||
if ms.LoadMessageInfo() == nil {
|
|
||||||
ms.StoreMessageInfo(mi)
|
|
||||||
}
|
|
||||||
return ms
|
|
||||||
}
|
|
||||||
return mi.MessageOf(x)
|
|
||||||
}
|
|
||||||
|
|
||||||
// Deprecated: Use KeyValue.ProtoReflect.Descriptor instead.
|
|
||||||
func (*KeyValue) Descriptor() ([]byte, []int) {
|
|
||||||
return file_sdkws_sdkws_proto_rawDescGZIP(), []int{64}
|
|
||||||
}
|
|
||||||
|
|
||||||
func (x *KeyValue) GetTypeKey() string {
|
|
||||||
if x != nil {
|
|
||||||
return x.TypeKey
|
|
||||||
}
|
|
||||||
return ""
|
|
||||||
}
|
|
||||||
|
|
||||||
func (x *KeyValue) GetValue() string {
|
|
||||||
if x != nil {
|
|
||||||
return x.Value
|
|
||||||
}
|
|
||||||
return ""
|
|
||||||
}
|
|
||||||
|
|
||||||
func (x *KeyValue) GetLatestUpdateTime() int64 {
|
|
||||||
if x != nil {
|
|
||||||
return x.LatestUpdateTime
|
|
||||||
}
|
|
||||||
return 0
|
|
||||||
}
|
|
||||||
|
|
||||||
type ReactionMessageModifierNotification struct {
|
|
||||||
state protoimpl.MessageState
|
|
||||||
sizeCache protoimpl.SizeCache
|
|
||||||
unknownFields protoimpl.UnknownFields
|
|
||||||
|
|
||||||
ConversationID string `protobuf:"bytes,1,opt,name=conversationID,proto3" json:"conversationID"`
|
|
||||||
OpUserID string `protobuf:"bytes,2,opt,name=opUserID,proto3" json:"opUserID"`
|
|
||||||
SessionType int32 `protobuf:"varint,3,opt,name=sessionType,proto3" json:"sessionType"`
|
|
||||||
SuccessReactionExtensions map[string]*KeyValue `protobuf:"bytes,4,rep,name=successReactionExtensions,proto3" json:"successReactionExtensions" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
|
|
||||||
ClientMsgID string `protobuf:"bytes,5,opt,name=clientMsgID,proto3" json:"clientMsgID"`
|
|
||||||
IsReact bool `protobuf:"varint,6,opt,name=isReact,proto3" json:"isReact"`
|
|
||||||
IsExternalExtensions bool `protobuf:"varint,7,opt,name=isExternalExtensions,proto3" json:"isExternalExtensions"`
|
|
||||||
MsgFirstModifyTime int64 `protobuf:"varint,8,opt,name=msgFirstModifyTime,proto3" json:"msgFirstModifyTime"`
|
|
||||||
}
|
|
||||||
|
|
||||||
func (x *ReactionMessageModifierNotification) Reset() {
|
|
||||||
*x = ReactionMessageModifierNotification{}
|
|
||||||
if protoimpl.UnsafeEnabled {
|
|
||||||
mi := &file_sdkws_sdkws_proto_msgTypes[65]
|
|
||||||
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
|
||||||
ms.StoreMessageInfo(mi)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func (x *ReactionMessageModifierNotification) String() string {
|
|
||||||
return protoimpl.X.MessageStringOf(x)
|
|
||||||
}
|
|
||||||
|
|
||||||
func (*ReactionMessageModifierNotification) ProtoMessage() {}
|
|
||||||
|
|
||||||
func (x *ReactionMessageModifierNotification) ProtoReflect() protoreflect.Message {
|
|
||||||
mi := &file_sdkws_sdkws_proto_msgTypes[65]
|
|
||||||
if protoimpl.UnsafeEnabled && x != nil {
|
|
||||||
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
|
||||||
if ms.LoadMessageInfo() == nil {
|
|
||||||
ms.StoreMessageInfo(mi)
|
|
||||||
}
|
|
||||||
return ms
|
|
||||||
}
|
|
||||||
return mi.MessageOf(x)
|
|
||||||
}
|
|
||||||
|
|
||||||
// Deprecated: Use ReactionMessageModifierNotification.ProtoReflect.Descriptor instead.
|
|
||||||
func (*ReactionMessageModifierNotification) Descriptor() ([]byte, []int) {
|
|
||||||
return file_sdkws_sdkws_proto_rawDescGZIP(), []int{65}
|
|
||||||
}
|
|
||||||
|
|
||||||
func (x *ReactionMessageModifierNotification) GetConversationID() string {
|
|
||||||
if x != nil {
|
|
||||||
return x.ConversationID
|
|
||||||
}
|
|
||||||
return ""
|
|
||||||
}
|
|
||||||
|
|
||||||
func (x *ReactionMessageModifierNotification) GetOpUserID() string {
|
|
||||||
if x != nil {
|
|
||||||
return x.OpUserID
|
|
||||||
}
|
|
||||||
return ""
|
|
||||||
}
|
|
||||||
|
|
||||||
func (x *ReactionMessageModifierNotification) GetSessionType() int32 {
|
|
||||||
if x != nil {
|
|
||||||
return x.SessionType
|
|
||||||
}
|
|
||||||
return 0
|
|
||||||
}
|
|
||||||
|
|
||||||
func (x *ReactionMessageModifierNotification) GetSuccessReactionExtensions() map[string]*KeyValue {
|
|
||||||
if x != nil {
|
|
||||||
return x.SuccessReactionExtensions
|
|
||||||
}
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
|
|
||||||
func (x *ReactionMessageModifierNotification) GetClientMsgID() string {
|
|
||||||
if x != nil {
|
|
||||||
return x.ClientMsgID
|
|
||||||
}
|
|
||||||
return ""
|
|
||||||
}
|
|
||||||
|
|
||||||
func (x *ReactionMessageModifierNotification) GetIsReact() bool {
|
|
||||||
if x != nil {
|
|
||||||
return x.IsReact
|
|
||||||
}
|
|
||||||
return false
|
|
||||||
}
|
|
||||||
|
|
||||||
func (x *ReactionMessageModifierNotification) GetIsExternalExtensions() bool {
|
|
||||||
if x != nil {
|
|
||||||
return x.IsExternalExtensions
|
|
||||||
}
|
|
||||||
return false
|
|
||||||
}
|
|
||||||
|
|
||||||
func (x *ReactionMessageModifierNotification) GetMsgFirstModifyTime() int64 {
|
|
||||||
if x != nil {
|
|
||||||
return x.MsgFirstModifyTime
|
|
||||||
}
|
|
||||||
return 0
|
|
||||||
}
|
|
||||||
|
|
||||||
type ReactionMessageDeleteNotification struct {
|
|
||||||
state protoimpl.MessageState
|
|
||||||
sizeCache protoimpl.SizeCache
|
|
||||||
unknownFields protoimpl.UnknownFields
|
|
||||||
|
|
||||||
ConversationID string `protobuf:"bytes,1,opt,name=conversationID,proto3" json:"conversationID"`
|
|
||||||
OpUserID string `protobuf:"bytes,2,opt,name=opUserID,proto3" json:"opUserID"`
|
|
||||||
SessionType int32 `protobuf:"varint,3,opt,name=sessionType,proto3" json:"sessionType"`
|
|
||||||
SuccessReactionExtensions map[string]*KeyValue `protobuf:"bytes,4,rep,name=successReactionExtensions,proto3" json:"successReactionExtensions" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
|
|
||||||
ClientMsgID string `protobuf:"bytes,5,opt,name=clientMsgID,proto3" json:"clientMsgID"`
|
|
||||||
MsgFirstModifyTime int64 `protobuf:"varint,6,opt,name=msgFirstModifyTime,proto3" json:"msgFirstModifyTime"`
|
|
||||||
}
|
|
||||||
|
|
||||||
func (x *ReactionMessageDeleteNotification) Reset() {
|
|
||||||
*x = ReactionMessageDeleteNotification{}
|
|
||||||
if protoimpl.UnsafeEnabled {
|
|
||||||
mi := &file_sdkws_sdkws_proto_msgTypes[66]
|
|
||||||
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
|
||||||
ms.StoreMessageInfo(mi)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func (x *ReactionMessageDeleteNotification) String() string {
|
|
||||||
return protoimpl.X.MessageStringOf(x)
|
|
||||||
}
|
|
||||||
|
|
||||||
func (*ReactionMessageDeleteNotification) ProtoMessage() {}
|
|
||||||
|
|
||||||
func (x *ReactionMessageDeleteNotification) ProtoReflect() protoreflect.Message {
|
|
||||||
mi := &file_sdkws_sdkws_proto_msgTypes[66]
|
|
||||||
if protoimpl.UnsafeEnabled && x != nil {
|
|
||||||
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
|
||||||
if ms.LoadMessageInfo() == nil {
|
|
||||||
ms.StoreMessageInfo(mi)
|
|
||||||
}
|
|
||||||
return ms
|
|
||||||
}
|
|
||||||
return mi.MessageOf(x)
|
|
||||||
}
|
|
||||||
|
|
||||||
// Deprecated: Use ReactionMessageDeleteNotification.ProtoReflect.Descriptor instead.
|
|
||||||
func (*ReactionMessageDeleteNotification) Descriptor() ([]byte, []int) {
|
|
||||||
return file_sdkws_sdkws_proto_rawDescGZIP(), []int{66}
|
|
||||||
}
|
|
||||||
|
|
||||||
func (x *ReactionMessageDeleteNotification) GetConversationID() string {
|
|
||||||
if x != nil {
|
|
||||||
return x.ConversationID
|
|
||||||
}
|
|
||||||
return ""
|
|
||||||
}
|
|
||||||
|
|
||||||
func (x *ReactionMessageDeleteNotification) GetOpUserID() string {
|
|
||||||
if x != nil {
|
|
||||||
return x.OpUserID
|
|
||||||
}
|
|
||||||
return ""
|
|
||||||
}
|
|
||||||
|
|
||||||
func (x *ReactionMessageDeleteNotification) GetSessionType() int32 {
|
|
||||||
if x != nil {
|
|
||||||
return x.SessionType
|
|
||||||
}
|
|
||||||
return 0
|
|
||||||
}
|
|
||||||
|
|
||||||
func (x *ReactionMessageDeleteNotification) GetSuccessReactionExtensions() map[string]*KeyValue {
|
|
||||||
if x != nil {
|
|
||||||
return x.SuccessReactionExtensions
|
|
||||||
}
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
|
|
||||||
func (x *ReactionMessageDeleteNotification) GetClientMsgID() string {
|
|
||||||
if x != nil {
|
|
||||||
return x.ClientMsgID
|
|
||||||
}
|
|
||||||
return ""
|
|
||||||
}
|
|
||||||
|
|
||||||
func (x *ReactionMessageDeleteNotification) GetMsgFirstModifyTime() int64 {
|
|
||||||
if x != nil {
|
|
||||||
return x.MsgFirstModifyTime
|
|
||||||
}
|
|
||||||
return 0
|
|
||||||
}
|
|
||||||
|
|
||||||
type RequestPagination struct {
|
type RequestPagination struct {
|
||||||
state protoimpl.MessageState
|
state protoimpl.MessageState
|
||||||
sizeCache protoimpl.SizeCache
|
sizeCache protoimpl.SizeCache
|
||||||
@ -5008,7 +4589,7 @@ type RequestPagination struct {
|
|||||||
func (x *RequestPagination) Reset() {
|
func (x *RequestPagination) Reset() {
|
||||||
*x = RequestPagination{}
|
*x = RequestPagination{}
|
||||||
if protoimpl.UnsafeEnabled {
|
if protoimpl.UnsafeEnabled {
|
||||||
mi := &file_sdkws_sdkws_proto_msgTypes[67]
|
mi := &file_sdkws_sdkws_proto_msgTypes[62]
|
||||||
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||||
ms.StoreMessageInfo(mi)
|
ms.StoreMessageInfo(mi)
|
||||||
}
|
}
|
||||||
@ -5021,7 +4602,7 @@ func (x *RequestPagination) String() string {
|
|||||||
func (*RequestPagination) ProtoMessage() {}
|
func (*RequestPagination) ProtoMessage() {}
|
||||||
|
|
||||||
func (x *RequestPagination) ProtoReflect() protoreflect.Message {
|
func (x *RequestPagination) ProtoReflect() protoreflect.Message {
|
||||||
mi := &file_sdkws_sdkws_proto_msgTypes[67]
|
mi := &file_sdkws_sdkws_proto_msgTypes[62]
|
||||||
if protoimpl.UnsafeEnabled && x != nil {
|
if protoimpl.UnsafeEnabled && x != nil {
|
||||||
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||||
if ms.LoadMessageInfo() == nil {
|
if ms.LoadMessageInfo() == nil {
|
||||||
@ -5034,7 +4615,7 @@ func (x *RequestPagination) ProtoReflect() protoreflect.Message {
|
|||||||
|
|
||||||
// Deprecated: Use RequestPagination.ProtoReflect.Descriptor instead.
|
// Deprecated: Use RequestPagination.ProtoReflect.Descriptor instead.
|
||||||
func (*RequestPagination) Descriptor() ([]byte, []int) {
|
func (*RequestPagination) Descriptor() ([]byte, []int) {
|
||||||
return file_sdkws_sdkws_proto_rawDescGZIP(), []int{67}
|
return file_sdkws_sdkws_proto_rawDescGZIP(), []int{62}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (x *RequestPagination) GetPageNumber() int32 {
|
func (x *RequestPagination) GetPageNumber() int32 {
|
||||||
@ -5833,137 +5414,19 @@ var file_sdkws_sdkws_proto_rawDesc = []byte{
|
|||||||
0x63, 0x6b, 0x67, 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c,
|
0x63, 0x6b, 0x67, 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c,
|
||||||
0x69, 0x73, 0x42, 0x61, 0x63, 0x6b, 0x67, 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x22, 0x1c, 0x0a, 0x1a,
|
0x69, 0x73, 0x42, 0x61, 0x63, 0x6b, 0x67, 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x22, 0x1c, 0x0a, 0x1a,
|
||||||
0x53, 0x65, 0x74, 0x41, 0x70, 0x70, 0x42, 0x61, 0x63, 0x6b, 0x67, 0x72, 0x6f, 0x75, 0x6e, 0x64,
|
0x53, 0x65, 0x74, 0x41, 0x70, 0x70, 0x42, 0x61, 0x63, 0x6b, 0x67, 0x72, 0x6f, 0x75, 0x6e, 0x64,
|
||||||
0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x73, 0x70, 0x22, 0xf8, 0x02, 0x0a, 0x0c, 0x45,
|
0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x73, 0x70, 0x22, 0x53, 0x0a, 0x11, 0x52, 0x65,
|
||||||
0x78, 0x74, 0x65, 0x6e, 0x64, 0x4d, 0x73, 0x67, 0x53, 0x65, 0x74, 0x12, 0x26, 0x0a, 0x0e, 0x63,
|
0x71, 0x75, 0x65, 0x73, 0x74, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12,
|
||||||
0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x44, 0x18, 0x01, 0x20,
|
0x1e, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x65, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x01, 0x20,
|
||||||
0x01, 0x28, 0x09, 0x52, 0x0e, 0x63, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f,
|
0x01, 0x28, 0x05, 0x52, 0x0a, 0x70, 0x61, 0x67, 0x65, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12,
|
||||||
0x6e, 0x49, 0x44, 0x12, 0x20, 0x0a, 0x0b, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x54, 0x79,
|
0x1e, 0x0a, 0x0a, 0x73, 0x68, 0x6f, 0x77, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x02, 0x20,
|
||||||
0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f,
|
0x01, 0x28, 0x05, 0x52, 0x0a, 0x73, 0x68, 0x6f, 0x77, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x2a,
|
||||||
0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, 0x50, 0x0a, 0x0a, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x64, 0x4d,
|
0x30, 0x0a, 0x09, 0x50, 0x75, 0x6c, 0x6c, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x12, 0x10, 0x0a, 0x0c,
|
||||||
0x73, 0x67, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x4f, 0x70, 0x65, 0x6e,
|
0x50, 0x75, 0x6c, 0x6c, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x41, 0x73, 0x63, 0x10, 0x00, 0x12, 0x11,
|
||||||
0x49, 0x4d, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x73, 0x64, 0x6b, 0x77, 0x73, 0x2e, 0x45,
|
0x0a, 0x0d, 0x50, 0x75, 0x6c, 0x6c, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x44, 0x65, 0x73, 0x63, 0x10,
|
||||||
0x78, 0x74, 0x65, 0x6e, 0x64, 0x4d, 0x73, 0x67, 0x53, 0x65, 0x74, 0x2e, 0x45, 0x78, 0x74, 0x65,
|
0x01, 0x42, 0x35, 0x5a, 0x33, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f,
|
||||||
0x6e, 0x64, 0x4d, 0x73, 0x67, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0a, 0x65, 0x78, 0x74,
|
0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x53, 0x44, 0x4b, 0x2f, 0x4f, 0x70, 0x65, 0x6e, 0x2d, 0x49,
|
||||||
0x65, 0x6e, 0x64, 0x4d, 0x73, 0x67, 0x73, 0x12, 0x2a, 0x0a, 0x10, 0x4d, 0x61, 0x78, 0x4d, 0x73,
|
0x4d, 0x2d, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x70, 0x72, 0x6f,
|
||||||
0x67, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28,
|
0x74, 0x6f, 0x2f, 0x73, 0x64, 0x6b, 0x77, 0x73, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
|
||||||
0x03, 0x52, 0x10, 0x4d, 0x61, 0x78, 0x4d, 0x73, 0x67, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54,
|
|
||||||
0x69, 0x6d, 0x65, 0x12, 0x22, 0x0a, 0x0c, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x64, 0x4d, 0x73, 0x67,
|
|
||||||
0x4e, 0x75, 0x6d, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x65, 0x78, 0x74, 0x65, 0x6e,
|
|
||||||
0x64, 0x4d, 0x73, 0x67, 0x4e, 0x75, 0x6d, 0x12, 0x1e, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74,
|
|
||||||
0x65, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x63, 0x72, 0x65,
|
|
||||||
0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x1a, 0x5c, 0x0a, 0x0f, 0x45, 0x78, 0x74, 0x65, 0x6e,
|
|
||||||
0x64, 0x4d, 0x73, 0x67, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65,
|
|
||||||
0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x33, 0x0a, 0x05,
|
|
||||||
0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x4f, 0x70,
|
|
||||||
0x65, 0x6e, 0x49, 0x4d, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x73, 0x64, 0x6b, 0x77, 0x73,
|
|
||||||
0x2e, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x64, 0x4d, 0x73, 0x67, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75,
|
|
||||||
0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0xe9, 0x02, 0x0a, 0x09, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x64,
|
|
||||||
0x4d, 0x73, 0x67, 0x12, 0x6e, 0x0a, 0x15, 0x72, 0x65, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x45,
|
|
||||||
0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x4c, 0x69, 0x73, 0x74, 0x18, 0x01, 0x20, 0x03,
|
|
||||||
0x28, 0x0b, 0x32, 0x38, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x53, 0x65, 0x72, 0x76, 0x65,
|
|
||||||
0x72, 0x2e, 0x73, 0x64, 0x6b, 0x77, 0x73, 0x2e, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x64, 0x4d, 0x73,
|
|
||||||
0x67, 0x2e, 0x52, 0x65, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73,
|
|
||||||
0x69, 0x6f, 0x6e, 0x4c, 0x69, 0x73, 0x74, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x15, 0x72, 0x65,
|
|
||||||
0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x4c,
|
|
||||||
0x69, 0x73, 0x74, 0x12, 0x20, 0x0a, 0x0b, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x4d, 0x73, 0x67,
|
|
||||||
0x49, 0x44, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74,
|
|
||||||
0x4d, 0x73, 0x67, 0x49, 0x44, 0x12, 0x2e, 0x0a, 0x12, 0x6d, 0x73, 0x67, 0x46, 0x69, 0x72, 0x73,
|
|
||||||
0x74, 0x4d, 0x6f, 0x64, 0x69, 0x66, 0x79, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28,
|
|
||||||
0x03, 0x52, 0x12, 0x6d, 0x73, 0x67, 0x46, 0x69, 0x72, 0x73, 0x74, 0x4d, 0x6f, 0x64, 0x69, 0x66,
|
|
||||||
0x79, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x22, 0x0a, 0x0c, 0x61, 0x74, 0x74, 0x61, 0x63, 0x68, 0x65,
|
|
||||||
0x64, 0x49, 0x6e, 0x66, 0x6f, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x61, 0x74, 0x74,
|
|
||||||
0x61, 0x63, 0x68, 0x65, 0x64, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x0e, 0x0a, 0x02, 0x65, 0x78, 0x18,
|
|
||||||
0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x65, 0x78, 0x1a, 0x66, 0x0a, 0x1a, 0x52, 0x65, 0x61,
|
|
||||||
0x63, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x4c, 0x69,
|
|
||||||
0x73, 0x74, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01,
|
|
||||||
0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x32, 0x0a, 0x05, 0x76, 0x61, 0x6c,
|
|
||||||
0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49,
|
|
||||||
0x4d, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x73, 0x64, 0x6b, 0x77, 0x73, 0x2e, 0x4b, 0x65,
|
|
||||||
0x79, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38,
|
|
||||||
0x01, 0x22, 0x66, 0x0a, 0x08, 0x4b, 0x65, 0x79, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x18, 0x0a,
|
|
||||||
0x07, 0x74, 0x79, 0x70, 0x65, 0x4b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07,
|
|
||||||
0x74, 0x79, 0x70, 0x65, 0x4b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65,
|
|
||||||
0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x2a, 0x0a,
|
|
||||||
0x10, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d,
|
|
||||||
0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x10, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x55,
|
|
||||||
0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x22, 0xae, 0x04, 0x0a, 0x23, 0x52, 0x65,
|
|
||||||
0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x4d, 0x6f, 0x64,
|
|
||||||
0x69, 0x66, 0x69, 0x65, 0x72, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f,
|
|
||||||
0x6e, 0x12, 0x26, 0x0a, 0x0e, 0x63, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f,
|
|
||||||
0x6e, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x63, 0x6f, 0x6e, 0x76, 0x65,
|
|
||||||
0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x44, 0x12, 0x1a, 0x0a, 0x08, 0x6f, 0x70, 0x55,
|
|
||||||
0x73, 0x65, 0x72, 0x49, 0x44, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6f, 0x70, 0x55,
|
|
||||||
0x73, 0x65, 0x72, 0x49, 0x44, 0x12, 0x20, 0x0a, 0x0b, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e,
|
|
||||||
0x54, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x73, 0x65, 0x73, 0x73,
|
|
||||||
0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, 0x94, 0x01, 0x0a, 0x19, 0x73, 0x75, 0x63, 0x63,
|
|
||||||
0x65, 0x73, 0x73, 0x52, 0x65, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x78, 0x74, 0x65, 0x6e,
|
|
||||||
0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x56, 0x2e, 0x4f, 0x70,
|
|
||||||
0x65, 0x6e, 0x49, 0x4d, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x73, 0x64, 0x6b, 0x77, 0x73,
|
|
||||||
0x2e, 0x52, 0x65, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65,
|
|
||||||
0x4d, 0x6f, 0x64, 0x69, 0x66, 0x69, 0x65, 0x72, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61,
|
|
||||||
0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x53, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x52, 0x65, 0x61, 0x63,
|
|
||||||
0x74, 0x69, 0x6f, 0x6e, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x45, 0x6e,
|
|
||||||
0x74, 0x72, 0x79, 0x52, 0x19, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x52, 0x65, 0x61, 0x63,
|
|
||||||
0x74, 0x69, 0x6f, 0x6e, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x20,
|
|
||||||
0x0a, 0x0b, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x4d, 0x73, 0x67, 0x49, 0x44, 0x18, 0x05, 0x20,
|
|
||||||
0x01, 0x28, 0x09, 0x52, 0x0b, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x4d, 0x73, 0x67, 0x49, 0x44,
|
|
||||||
0x12, 0x18, 0x0a, 0x07, 0x69, 0x73, 0x52, 0x65, 0x61, 0x63, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28,
|
|
||||||
0x08, 0x52, 0x07, 0x69, 0x73, 0x52, 0x65, 0x61, 0x63, 0x74, 0x12, 0x32, 0x0a, 0x14, 0x69, 0x73,
|
|
||||||
0x45, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f,
|
|
||||||
0x6e, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x08, 0x52, 0x14, 0x69, 0x73, 0x45, 0x78, 0x74, 0x65,
|
|
||||||
0x72, 0x6e, 0x61, 0x6c, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x2e,
|
|
||||||
0x0a, 0x12, 0x6d, 0x73, 0x67, 0x46, 0x69, 0x72, 0x73, 0x74, 0x4d, 0x6f, 0x64, 0x69, 0x66, 0x79,
|
|
||||||
0x54, 0x69, 0x6d, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x03, 0x52, 0x12, 0x6d, 0x73, 0x67, 0x46,
|
|
||||||
0x69, 0x72, 0x73, 0x74, 0x4d, 0x6f, 0x64, 0x69, 0x66, 0x79, 0x54, 0x69, 0x6d, 0x65, 0x1a, 0x6a,
|
|
||||||
0x0a, 0x1e, 0x53, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x52, 0x65, 0x61, 0x63, 0x74, 0x69, 0x6f,
|
|
||||||
0x6e, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79,
|
|
||||||
0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b,
|
|
||||||
0x65, 0x79, 0x12, 0x32, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28,
|
|
||||||
0x0b, 0x32, 0x1c, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72,
|
|
||||||
0x2e, 0x73, 0x64, 0x6b, 0x77, 0x73, 0x2e, 0x4b, 0x65, 0x79, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52,
|
|
||||||
0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0xdc, 0x03, 0x0a, 0x21, 0x52,
|
|
||||||
0x65, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x44, 0x65,
|
|
||||||
0x6c, 0x65, 0x74, 0x65, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e,
|
|
||||||
0x12, 0x26, 0x0a, 0x0e, 0x63, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e,
|
|
||||||
0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x63, 0x6f, 0x6e, 0x76, 0x65, 0x72,
|
|
||||||
0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x44, 0x12, 0x1a, 0x0a, 0x08, 0x6f, 0x70, 0x55, 0x73,
|
|
||||||
0x65, 0x72, 0x49, 0x44, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6f, 0x70, 0x55, 0x73,
|
|
||||||
0x65, 0x72, 0x49, 0x44, 0x12, 0x20, 0x0a, 0x0b, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x54,
|
|
||||||
0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x73, 0x65, 0x73, 0x73, 0x69,
|
|
||||||
0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, 0x92, 0x01, 0x0a, 0x19, 0x73, 0x75, 0x63, 0x63, 0x65,
|
|
||||||
0x73, 0x73, 0x52, 0x65, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73,
|
|
||||||
0x69, 0x6f, 0x6e, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x54, 0x2e, 0x4f, 0x70, 0x65,
|
|
||||||
0x6e, 0x49, 0x4d, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x73, 0x64, 0x6b, 0x77, 0x73, 0x2e,
|
|
||||||
0x52, 0x65, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x44,
|
|
||||||
0x65, 0x6c, 0x65, 0x74, 0x65, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f,
|
|
||||||
0x6e, 0x2e, 0x53, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x52, 0x65, 0x61, 0x63, 0x74, 0x69, 0x6f,
|
|
||||||
0x6e, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79,
|
|
||||||
0x52, 0x19, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x52, 0x65, 0x61, 0x63, 0x74, 0x69, 0x6f,
|
|
||||||
0x6e, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x20, 0x0a, 0x0b, 0x63,
|
|
||||||
0x6c, 0x69, 0x65, 0x6e, 0x74, 0x4d, 0x73, 0x67, 0x49, 0x44, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09,
|
|
||||||
0x52, 0x0b, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x4d, 0x73, 0x67, 0x49, 0x44, 0x12, 0x2e, 0x0a,
|
|
||||||
0x12, 0x6d, 0x73, 0x67, 0x46, 0x69, 0x72, 0x73, 0x74, 0x4d, 0x6f, 0x64, 0x69, 0x66, 0x79, 0x54,
|
|
||||||
0x69, 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x52, 0x12, 0x6d, 0x73, 0x67, 0x46, 0x69,
|
|
||||||
0x72, 0x73, 0x74, 0x4d, 0x6f, 0x64, 0x69, 0x66, 0x79, 0x54, 0x69, 0x6d, 0x65, 0x1a, 0x6a, 0x0a,
|
|
||||||
0x1e, 0x53, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x52, 0x65, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e,
|
|
||||||
0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12,
|
|
||||||
0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65,
|
|
||||||
0x79, 0x12, 0x32, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b,
|
|
||||||
0x32, 0x1c, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e,
|
|
||||||
0x73, 0x64, 0x6b, 0x77, 0x73, 0x2e, 0x4b, 0x65, 0x79, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x05,
|
|
||||||
0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x53, 0x0a, 0x11, 0x52, 0x65, 0x71,
|
|
||||||
0x75, 0x65, 0x73, 0x74, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1e,
|
|
||||||
0x0a, 0x0a, 0x70, 0x61, 0x67, 0x65, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01,
|
|
||||||
0x28, 0x05, 0x52, 0x0a, 0x70, 0x61, 0x67, 0x65, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x1e,
|
|
||||||
0x0a, 0x0a, 0x73, 0x68, 0x6f, 0x77, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01,
|
|
||||||
0x28, 0x05, 0x52, 0x0a, 0x73, 0x68, 0x6f, 0x77, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x2a, 0x30,
|
|
||||||
0x0a, 0x09, 0x50, 0x75, 0x6c, 0x6c, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x12, 0x10, 0x0a, 0x0c, 0x50,
|
|
||||||
0x75, 0x6c, 0x6c, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x41, 0x73, 0x63, 0x10, 0x00, 0x12, 0x11, 0x0a,
|
|
||||||
0x0d, 0x50, 0x75, 0x6c, 0x6c, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x44, 0x65, 0x73, 0x63, 0x10, 0x01,
|
|
||||||
0x42, 0x35, 0x5a, 0x33, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x4f,
|
|
||||||
0x70, 0x65, 0x6e, 0x49, 0x4d, 0x53, 0x44, 0x4b, 0x2f, 0x4f, 0x70, 0x65, 0x6e, 0x2d, 0x49, 0x4d,
|
|
||||||
0x2d, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x70, 0x72, 0x6f, 0x74,
|
|
||||||
0x6f, 0x2f, 0x73, 0x64, 0x6b, 0x77, 0x73, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
|
|
||||||
}
|
}
|
||||||
|
|
||||||
var (
|
var (
|
||||||
@ -5979,7 +5442,7 @@ func file_sdkws_sdkws_proto_rawDescGZIP() []byte {
|
|||||||
}
|
}
|
||||||
|
|
||||||
var file_sdkws_sdkws_proto_enumTypes = make([]protoimpl.EnumInfo, 1)
|
var file_sdkws_sdkws_proto_enumTypes = make([]protoimpl.EnumInfo, 1)
|
||||||
var file_sdkws_sdkws_proto_msgTypes = make([]protoimpl.MessageInfo, 79)
|
var file_sdkws_sdkws_proto_msgTypes = make([]protoimpl.MessageInfo, 70)
|
||||||
var file_sdkws_sdkws_proto_goTypes = []interface{}{
|
var file_sdkws_sdkws_proto_goTypes = []interface{}{
|
||||||
(PullOrder)(0), // 0: OpenIMServer.sdkws.PullOrder
|
(PullOrder)(0), // 0: OpenIMServer.sdkws.PullOrder
|
||||||
(*GroupInfo)(nil), // 1: OpenIMServer.sdkws.GroupInfo
|
(*GroupInfo)(nil), // 1: OpenIMServer.sdkws.GroupInfo
|
||||||
@ -6044,29 +5507,20 @@ var file_sdkws_sdkws_proto_goTypes = []interface{}{
|
|||||||
(*MarkAsReadTips)(nil), // 60: OpenIMServer.sdkws.MarkAsReadTips
|
(*MarkAsReadTips)(nil), // 60: OpenIMServer.sdkws.MarkAsReadTips
|
||||||
(*SetAppBackgroundStatusReq)(nil), // 61: OpenIMServer.sdkws.SetAppBackgroundStatusReq
|
(*SetAppBackgroundStatusReq)(nil), // 61: OpenIMServer.sdkws.SetAppBackgroundStatusReq
|
||||||
(*SetAppBackgroundStatusResp)(nil), // 62: OpenIMServer.sdkws.SetAppBackgroundStatusResp
|
(*SetAppBackgroundStatusResp)(nil), // 62: OpenIMServer.sdkws.SetAppBackgroundStatusResp
|
||||||
(*ExtendMsgSet)(nil), // 63: OpenIMServer.sdkws.ExtendMsgSet
|
(*RequestPagination)(nil), // 63: OpenIMServer.sdkws.RequestPagination
|
||||||
(*ExtendMsg)(nil), // 64: OpenIMServer.sdkws.ExtendMsg
|
nil, // 64: OpenIMServer.sdkws.PullMessageBySeqsResp.MsgsEntry
|
||||||
(*KeyValue)(nil), // 65: OpenIMServer.sdkws.KeyValue
|
nil, // 65: OpenIMServer.sdkws.PullMessageBySeqsResp.NotificationMsgsEntry
|
||||||
(*ReactionMessageModifierNotification)(nil), // 66: OpenIMServer.sdkws.ReactionMessageModifierNotification
|
nil, // 66: OpenIMServer.sdkws.GetMaxSeqResp.MaxSeqsEntry
|
||||||
(*ReactionMessageDeleteNotification)(nil), // 67: OpenIMServer.sdkws.ReactionMessageDeleteNotification
|
nil, // 67: OpenIMServer.sdkws.GetMaxSeqResp.MinSeqsEntry
|
||||||
(*RequestPagination)(nil), // 68: OpenIMServer.sdkws.RequestPagination
|
nil, // 68: OpenIMServer.sdkws.MsgData.OptionsEntry
|
||||||
nil, // 69: OpenIMServer.sdkws.PullMessageBySeqsResp.MsgsEntry
|
nil, // 69: OpenIMServer.sdkws.PushMessages.MsgsEntry
|
||||||
nil, // 70: OpenIMServer.sdkws.PullMessageBySeqsResp.NotificationMsgsEntry
|
nil, // 70: OpenIMServer.sdkws.PushMessages.NotificationMsgsEntry
|
||||||
nil, // 71: OpenIMServer.sdkws.GetMaxSeqResp.MaxSeqsEntry
|
(*wrapperspb.Int32Value)(nil), // 71: OpenIMServer.protobuf.Int32Value
|
||||||
nil, // 72: OpenIMServer.sdkws.GetMaxSeqResp.MinSeqsEntry
|
|
||||||
nil, // 73: OpenIMServer.sdkws.MsgData.OptionsEntry
|
|
||||||
nil, // 74: OpenIMServer.sdkws.PushMessages.MsgsEntry
|
|
||||||
nil, // 75: OpenIMServer.sdkws.PushMessages.NotificationMsgsEntry
|
|
||||||
nil, // 76: OpenIMServer.sdkws.ExtendMsgSet.ExtendMsgsEntry
|
|
||||||
nil, // 77: OpenIMServer.sdkws.ExtendMsg.ReactionExtensionListEntry
|
|
||||||
nil, // 78: OpenIMServer.sdkws.ReactionMessageModifierNotification.SuccessReactionExtensionsEntry
|
|
||||||
nil, // 79: OpenIMServer.sdkws.ReactionMessageDeleteNotification.SuccessReactionExtensionsEntry
|
|
||||||
(*wrapperspb.Int32Value)(nil), // 80: OpenIMServer.protobuf.Int32Value
|
|
||||||
}
|
}
|
||||||
var file_sdkws_sdkws_proto_depIdxs = []int32{
|
var file_sdkws_sdkws_proto_depIdxs = []int32{
|
||||||
80, // 0: OpenIMServer.sdkws.GroupInfoForSet.needVerification:type_name -> OpenIMServer.protobuf.Int32Value
|
71, // 0: OpenIMServer.sdkws.GroupInfoForSet.needVerification:type_name -> OpenIMServer.protobuf.Int32Value
|
||||||
80, // 1: OpenIMServer.sdkws.GroupInfoForSet.lookMemberInfo:type_name -> OpenIMServer.protobuf.Int32Value
|
71, // 1: OpenIMServer.sdkws.GroupInfoForSet.lookMemberInfo:type_name -> OpenIMServer.protobuf.Int32Value
|
||||||
80, // 2: OpenIMServer.sdkws.GroupInfoForSet.applyMemberFriend:type_name -> OpenIMServer.protobuf.Int32Value
|
71, // 2: OpenIMServer.sdkws.GroupInfoForSet.applyMemberFriend:type_name -> OpenIMServer.protobuf.Int32Value
|
||||||
5, // 3: OpenIMServer.sdkws.FriendInfo.friendUser:type_name -> OpenIMServer.sdkws.UserInfo
|
5, // 3: OpenIMServer.sdkws.FriendInfo.friendUser:type_name -> OpenIMServer.sdkws.UserInfo
|
||||||
4, // 4: OpenIMServer.sdkws.BlackInfo.blackUserInfo:type_name -> OpenIMServer.sdkws.PublicUserInfo
|
4, // 4: OpenIMServer.sdkws.BlackInfo.blackUserInfo:type_name -> OpenIMServer.sdkws.PublicUserInfo
|
||||||
4, // 5: OpenIMServer.sdkws.GroupRequest.userInfo:type_name -> OpenIMServer.sdkws.PublicUserInfo
|
4, // 5: OpenIMServer.sdkws.GroupRequest.userInfo:type_name -> OpenIMServer.sdkws.PublicUserInfo
|
||||||
@ -6074,14 +5528,14 @@ var file_sdkws_sdkws_proto_depIdxs = []int32{
|
|||||||
11, // 7: OpenIMServer.sdkws.PullMessageBySeqsReq.seqRanges:type_name -> OpenIMServer.sdkws.SeqRange
|
11, // 7: OpenIMServer.sdkws.PullMessageBySeqsReq.seqRanges:type_name -> OpenIMServer.sdkws.SeqRange
|
||||||
0, // 8: OpenIMServer.sdkws.PullMessageBySeqsReq.order:type_name -> OpenIMServer.sdkws.PullOrder
|
0, // 8: OpenIMServer.sdkws.PullMessageBySeqsReq.order:type_name -> OpenIMServer.sdkws.PullOrder
|
||||||
17, // 9: OpenIMServer.sdkws.PullMsgs.Msgs:type_name -> OpenIMServer.sdkws.MsgData
|
17, // 9: OpenIMServer.sdkws.PullMsgs.Msgs:type_name -> OpenIMServer.sdkws.MsgData
|
||||||
69, // 10: OpenIMServer.sdkws.PullMessageBySeqsResp.msgs:type_name -> OpenIMServer.sdkws.PullMessageBySeqsResp.MsgsEntry
|
64, // 10: OpenIMServer.sdkws.PullMessageBySeqsResp.msgs:type_name -> OpenIMServer.sdkws.PullMessageBySeqsResp.MsgsEntry
|
||||||
70, // 11: OpenIMServer.sdkws.PullMessageBySeqsResp.notificationMsgs:type_name -> OpenIMServer.sdkws.PullMessageBySeqsResp.NotificationMsgsEntry
|
65, // 11: OpenIMServer.sdkws.PullMessageBySeqsResp.notificationMsgs:type_name -> OpenIMServer.sdkws.PullMessageBySeqsResp.NotificationMsgsEntry
|
||||||
71, // 12: OpenIMServer.sdkws.GetMaxSeqResp.maxSeqs:type_name -> OpenIMServer.sdkws.GetMaxSeqResp.MaxSeqsEntry
|
66, // 12: OpenIMServer.sdkws.GetMaxSeqResp.maxSeqs:type_name -> OpenIMServer.sdkws.GetMaxSeqResp.MaxSeqsEntry
|
||||||
72, // 13: OpenIMServer.sdkws.GetMaxSeqResp.minSeqs:type_name -> OpenIMServer.sdkws.GetMaxSeqResp.MinSeqsEntry
|
67, // 13: OpenIMServer.sdkws.GetMaxSeqResp.minSeqs:type_name -> OpenIMServer.sdkws.GetMaxSeqResp.MinSeqsEntry
|
||||||
73, // 14: OpenIMServer.sdkws.MsgData.options:type_name -> OpenIMServer.sdkws.MsgData.OptionsEntry
|
68, // 14: OpenIMServer.sdkws.MsgData.options:type_name -> OpenIMServer.sdkws.MsgData.OptionsEntry
|
||||||
19, // 15: OpenIMServer.sdkws.MsgData.offlinePushInfo:type_name -> OpenIMServer.sdkws.OfflinePushInfo
|
19, // 15: OpenIMServer.sdkws.MsgData.offlinePushInfo:type_name -> OpenIMServer.sdkws.OfflinePushInfo
|
||||||
74, // 16: OpenIMServer.sdkws.PushMessages.msgs:type_name -> OpenIMServer.sdkws.PushMessages.MsgsEntry
|
69, // 16: OpenIMServer.sdkws.PushMessages.msgs:type_name -> OpenIMServer.sdkws.PushMessages.MsgsEntry
|
||||||
75, // 17: OpenIMServer.sdkws.PushMessages.notificationMsgs:type_name -> OpenIMServer.sdkws.PushMessages.NotificationMsgsEntry
|
70, // 17: OpenIMServer.sdkws.PushMessages.notificationMsgs:type_name -> OpenIMServer.sdkws.PushMessages.NotificationMsgsEntry
|
||||||
1, // 18: OpenIMServer.sdkws.GroupCreatedTips.group:type_name -> OpenIMServer.sdkws.GroupInfo
|
1, // 18: OpenIMServer.sdkws.GroupCreatedTips.group:type_name -> OpenIMServer.sdkws.GroupInfo
|
||||||
3, // 19: OpenIMServer.sdkws.GroupCreatedTips.opUser:type_name -> OpenIMServer.sdkws.GroupMemberFullInfo
|
3, // 19: OpenIMServer.sdkws.GroupCreatedTips.opUser:type_name -> OpenIMServer.sdkws.GroupMemberFullInfo
|
||||||
3, // 20: OpenIMServer.sdkws.GroupCreatedTips.memberList:type_name -> OpenIMServer.sdkws.GroupMemberFullInfo
|
3, // 20: OpenIMServer.sdkws.GroupCreatedTips.memberList:type_name -> OpenIMServer.sdkws.GroupMemberFullInfo
|
||||||
@ -6135,23 +5589,15 @@ var file_sdkws_sdkws_proto_depIdxs = []int32{
|
|||||||
40, // 68: OpenIMServer.sdkws.BlackAddedTips.fromToUserID:type_name -> OpenIMServer.sdkws.FromToUserID
|
40, // 68: OpenIMServer.sdkws.BlackAddedTips.fromToUserID:type_name -> OpenIMServer.sdkws.FromToUserID
|
||||||
40, // 69: OpenIMServer.sdkws.BlackDeletedTips.fromToUserID:type_name -> OpenIMServer.sdkws.FromToUserID
|
40, // 69: OpenIMServer.sdkws.BlackDeletedTips.fromToUserID:type_name -> OpenIMServer.sdkws.FromToUserID
|
||||||
40, // 70: OpenIMServer.sdkws.FriendInfoChangedTips.fromToUserID:type_name -> OpenIMServer.sdkws.FromToUserID
|
40, // 70: OpenIMServer.sdkws.FriendInfoChangedTips.fromToUserID:type_name -> OpenIMServer.sdkws.FromToUserID
|
||||||
76, // 71: OpenIMServer.sdkws.ExtendMsgSet.extendMsgs:type_name -> OpenIMServer.sdkws.ExtendMsgSet.ExtendMsgsEntry
|
12, // 71: OpenIMServer.sdkws.PullMessageBySeqsResp.MsgsEntry.value:type_name -> OpenIMServer.sdkws.PullMsgs
|
||||||
77, // 72: OpenIMServer.sdkws.ExtendMsg.reactionExtensionList:type_name -> OpenIMServer.sdkws.ExtendMsg.ReactionExtensionListEntry
|
12, // 72: OpenIMServer.sdkws.PullMessageBySeqsResp.NotificationMsgsEntry.value:type_name -> OpenIMServer.sdkws.PullMsgs
|
||||||
78, // 73: OpenIMServer.sdkws.ReactionMessageModifierNotification.successReactionExtensions:type_name -> OpenIMServer.sdkws.ReactionMessageModifierNotification.SuccessReactionExtensionsEntry
|
12, // 73: OpenIMServer.sdkws.PushMessages.MsgsEntry.value:type_name -> OpenIMServer.sdkws.PullMsgs
|
||||||
79, // 74: OpenIMServer.sdkws.ReactionMessageDeleteNotification.successReactionExtensions:type_name -> OpenIMServer.sdkws.ReactionMessageDeleteNotification.SuccessReactionExtensionsEntry
|
12, // 74: OpenIMServer.sdkws.PushMessages.NotificationMsgsEntry.value:type_name -> OpenIMServer.sdkws.PullMsgs
|
||||||
12, // 75: OpenIMServer.sdkws.PullMessageBySeqsResp.MsgsEntry.value:type_name -> OpenIMServer.sdkws.PullMsgs
|
75, // [75:75] is the sub-list for method output_type
|
||||||
12, // 76: OpenIMServer.sdkws.PullMessageBySeqsResp.NotificationMsgsEntry.value:type_name -> OpenIMServer.sdkws.PullMsgs
|
75, // [75:75] is the sub-list for method input_type
|
||||||
12, // 77: OpenIMServer.sdkws.PushMessages.MsgsEntry.value:type_name -> OpenIMServer.sdkws.PullMsgs
|
75, // [75:75] is the sub-list for extension type_name
|
||||||
12, // 78: OpenIMServer.sdkws.PushMessages.NotificationMsgsEntry.value:type_name -> OpenIMServer.sdkws.PullMsgs
|
75, // [75:75] is the sub-list for extension extendee
|
||||||
64, // 79: OpenIMServer.sdkws.ExtendMsgSet.ExtendMsgsEntry.value:type_name -> OpenIMServer.sdkws.ExtendMsg
|
0, // [0:75] is the sub-list for field type_name
|
||||||
65, // 80: OpenIMServer.sdkws.ExtendMsg.ReactionExtensionListEntry.value:type_name -> OpenIMServer.sdkws.KeyValue
|
|
||||||
65, // 81: OpenIMServer.sdkws.ReactionMessageModifierNotification.SuccessReactionExtensionsEntry.value:type_name -> OpenIMServer.sdkws.KeyValue
|
|
||||||
65, // 82: OpenIMServer.sdkws.ReactionMessageDeleteNotification.SuccessReactionExtensionsEntry.value:type_name -> OpenIMServer.sdkws.KeyValue
|
|
||||||
83, // [83:83] is the sub-list for method output_type
|
|
||||||
83, // [83:83] is the sub-list for method input_type
|
|
||||||
83, // [83:83] is the sub-list for extension type_name
|
|
||||||
83, // [83:83] is the sub-list for extension extendee
|
|
||||||
0, // [0:83] is the sub-list for field type_name
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func init() { file_sdkws_sdkws_proto_init() }
|
func init() { file_sdkws_sdkws_proto_init() }
|
||||||
@ -6905,66 +6351,6 @@ func file_sdkws_sdkws_proto_init() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
file_sdkws_sdkws_proto_msgTypes[62].Exporter = func(v interface{}, i int) interface{} {
|
file_sdkws_sdkws_proto_msgTypes[62].Exporter = func(v interface{}, i int) interface{} {
|
||||||
switch v := v.(*ExtendMsgSet); i {
|
|
||||||
case 0:
|
|
||||||
return &v.state
|
|
||||||
case 1:
|
|
||||||
return &v.sizeCache
|
|
||||||
case 2:
|
|
||||||
return &v.unknownFields
|
|
||||||
default:
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
}
|
|
||||||
file_sdkws_sdkws_proto_msgTypes[63].Exporter = func(v interface{}, i int) interface{} {
|
|
||||||
switch v := v.(*ExtendMsg); i {
|
|
||||||
case 0:
|
|
||||||
return &v.state
|
|
||||||
case 1:
|
|
||||||
return &v.sizeCache
|
|
||||||
case 2:
|
|
||||||
return &v.unknownFields
|
|
||||||
default:
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
}
|
|
||||||
file_sdkws_sdkws_proto_msgTypes[64].Exporter = func(v interface{}, i int) interface{} {
|
|
||||||
switch v := v.(*KeyValue); i {
|
|
||||||
case 0:
|
|
||||||
return &v.state
|
|
||||||
case 1:
|
|
||||||
return &v.sizeCache
|
|
||||||
case 2:
|
|
||||||
return &v.unknownFields
|
|
||||||
default:
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
}
|
|
||||||
file_sdkws_sdkws_proto_msgTypes[65].Exporter = func(v interface{}, i int) interface{} {
|
|
||||||
switch v := v.(*ReactionMessageModifierNotification); i {
|
|
||||||
case 0:
|
|
||||||
return &v.state
|
|
||||||
case 1:
|
|
||||||
return &v.sizeCache
|
|
||||||
case 2:
|
|
||||||
return &v.unknownFields
|
|
||||||
default:
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
}
|
|
||||||
file_sdkws_sdkws_proto_msgTypes[66].Exporter = func(v interface{}, i int) interface{} {
|
|
||||||
switch v := v.(*ReactionMessageDeleteNotification); i {
|
|
||||||
case 0:
|
|
||||||
return &v.state
|
|
||||||
case 1:
|
|
||||||
return &v.sizeCache
|
|
||||||
case 2:
|
|
||||||
return &v.unknownFields
|
|
||||||
default:
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
}
|
|
||||||
file_sdkws_sdkws_proto_msgTypes[67].Exporter = func(v interface{}, i int) interface{} {
|
|
||||||
switch v := v.(*RequestPagination); i {
|
switch v := v.(*RequestPagination); i {
|
||||||
case 0:
|
case 0:
|
||||||
return &v.state
|
return &v.state
|
||||||
@ -6983,7 +6369,7 @@ func file_sdkws_sdkws_proto_init() {
|
|||||||
GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
|
GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
|
||||||
RawDescriptor: file_sdkws_sdkws_proto_rawDesc,
|
RawDescriptor: file_sdkws_sdkws_proto_rawDesc,
|
||||||
NumEnums: 1,
|
NumEnums: 1,
|
||||||
NumMessages: 79,
|
NumMessages: 70,
|
||||||
NumExtensions: 0,
|
NumExtensions: 0,
|
||||||
NumServices: 0,
|
NumServices: 0,
|
||||||
},
|
},
|
||||||
|
@ -496,48 +496,6 @@ message SetAppBackgroundStatusReq {
|
|||||||
message SetAppBackgroundStatusResp {
|
message SetAppBackgroundStatusResp {
|
||||||
}
|
}
|
||||||
|
|
||||||
message ExtendMsgSet {
|
|
||||||
string conversationID = 1;
|
|
||||||
int32 sessionType = 2;
|
|
||||||
map <string, ExtendMsg>extendMsgs = 3;
|
|
||||||
int64 MaxMsgUpdateTime = 4;
|
|
||||||
int32 extendMsgNum = 5;
|
|
||||||
int64 createTime = 6;
|
|
||||||
}
|
|
||||||
|
|
||||||
message ExtendMsg {
|
|
||||||
map <string, KeyValue>reactionExtensionList = 1;
|
|
||||||
string clientMsgID = 2;
|
|
||||||
int64 msgFirstModifyTime = 3;
|
|
||||||
string attachedInfo = 4;
|
|
||||||
string ex = 5;
|
|
||||||
}
|
|
||||||
|
|
||||||
message KeyValue {
|
|
||||||
string typeKey = 1;
|
|
||||||
string value = 2;
|
|
||||||
int64 latestUpdateTime = 3;
|
|
||||||
}
|
|
||||||
|
|
||||||
message ReactionMessageModifierNotification {
|
|
||||||
string conversationID = 1;
|
|
||||||
string opUserID = 2;
|
|
||||||
int32 sessionType = 3;
|
|
||||||
map <string, KeyValue>successReactionExtensions = 4;
|
|
||||||
string clientMsgID = 5;
|
|
||||||
bool isReact = 6;
|
|
||||||
bool isExternalExtensions = 7;
|
|
||||||
int64 msgFirstModifyTime = 8;
|
|
||||||
}
|
|
||||||
|
|
||||||
message ReactionMessageDeleteNotification {
|
|
||||||
string conversationID = 1;
|
|
||||||
string opUserID = 2;
|
|
||||||
int32 sessionType = 3;
|
|
||||||
map <string, KeyValue>successReactionExtensions = 4;
|
|
||||||
string clientMsgID = 5;
|
|
||||||
int64 msgFirstModifyTime = 6;
|
|
||||||
}
|
|
||||||
|
|
||||||
message RequestPagination {
|
message RequestPagination {
|
||||||
int32 pageNumber = 1;
|
int32 pageNumber = 1;
|
||||||
|
@ -1,103 +0,0 @@
|
|||||||
package notification
|
|
||||||
|
|
||||||
import (
|
|
||||||
"context"
|
|
||||||
"encoding/json"
|
|
||||||
|
|
||||||
"github.com/OpenIMSDK/Open-IM-Server/pkg/common/constant"
|
|
||||||
"github.com/OpenIMSDK/Open-IM-Server/pkg/common/mcontext"
|
|
||||||
"github.com/OpenIMSDK/Open-IM-Server/pkg/discoveryregistry"
|
|
||||||
"github.com/OpenIMSDK/Open-IM-Server/pkg/errs"
|
|
||||||
"github.com/OpenIMSDK/Open-IM-Server/pkg/proto/msg"
|
|
||||||
"github.com/OpenIMSDK/Open-IM-Server/pkg/proto/sdkws"
|
|
||||||
"github.com/OpenIMSDK/Open-IM-Server/pkg/rpcclient"
|
|
||||||
"github.com/OpenIMSDK/Open-IM-Server/pkg/utils"
|
|
||||||
"google.golang.org/protobuf/proto"
|
|
||||||
)
|
|
||||||
|
|
||||||
type ExtendMsgNotificationSender struct {
|
|
||||||
*rpcclient.MessageRpcClient
|
|
||||||
}
|
|
||||||
|
|
||||||
func NewExtendMsgNotificationSender(client discoveryregistry.SvcDiscoveryRegistry) *ExtendMsgNotificationSender {
|
|
||||||
return &ExtendMsgNotificationSender{}
|
|
||||||
}
|
|
||||||
|
|
||||||
func (e *ExtendMsgNotificationSender) ExtendMessageUpdatedNotification(ctx context.Context, sendID string, conversationID string, sessionType int32,
|
|
||||||
req *msg.SetMessageReactionExtensionsReq, resp *msg.SetMessageReactionExtensionsResp, isHistory bool, isReactionFromCache bool) {
|
|
||||||
var content sdkws.ReactionMessageModifierNotification
|
|
||||||
content.ConversationID = req.ConversationID
|
|
||||||
content.OpUserID = mcontext.GetOpUserID(ctx)
|
|
||||||
content.SessionType = req.SessionType
|
|
||||||
keyMap := make(map[string]*sdkws.KeyValue)
|
|
||||||
for _, valueResp := range resp.Result {
|
|
||||||
if valueResp.ErrCode == 0 {
|
|
||||||
keyMap[valueResp.KeyValue.TypeKey] = valueResp.KeyValue
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if len(keyMap) == 0 {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
content.SuccessReactionExtensions = keyMap
|
|
||||||
content.ClientMsgID = req.ClientMsgID
|
|
||||||
content.IsReact = resp.IsReact
|
|
||||||
content.IsExternalExtensions = req.IsExternalExtensions
|
|
||||||
content.MsgFirstModifyTime = resp.MsgFirstModifyTime
|
|
||||||
e.messageReactionSender(ctx, sendID, conversationID, sessionType, constant.ReactionMessageModifier, &content, isHistory, isReactionFromCache)
|
|
||||||
}
|
|
||||||
func (e *ExtendMsgNotificationSender) ExtendMessageDeleteNotification(ctx context.Context, sendID string, conversationID string, sessionType int32,
|
|
||||||
req *msg.DeleteMessagesReactionExtensionsReq, resp *msg.DeleteMessagesReactionExtensionsResp, isHistory bool, isReactionFromCache bool) {
|
|
||||||
var content sdkws.ReactionMessageDeleteNotification
|
|
||||||
content.ConversationID = req.ConversationID
|
|
||||||
content.OpUserID = req.OpUserID
|
|
||||||
content.SessionType = req.SessionType
|
|
||||||
keyMap := make(map[string]*sdkws.KeyValue)
|
|
||||||
for _, valueResp := range resp.Result {
|
|
||||||
if valueResp.ErrCode == 0 {
|
|
||||||
keyMap[valueResp.KeyValue.TypeKey] = valueResp.KeyValue
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if len(keyMap) == 0 {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
content.SuccessReactionExtensions = keyMap
|
|
||||||
content.ClientMsgID = req.ClientMsgID
|
|
||||||
content.MsgFirstModifyTime = req.MsgFirstModifyTime
|
|
||||||
e.messageReactionSender(ctx, sendID, conversationID, sessionType, constant.ReactionMessageDeleter, &content, isHistory, isReactionFromCache)
|
|
||||||
}
|
|
||||||
func (e *ExtendMsgNotificationSender) messageReactionSender(ctx context.Context, sendID string, conversationID string, sessionType, contentType int32, m proto.Message, isHistory bool, isReactionFromCache bool) error {
|
|
||||||
options := make(map[string]bool, 5)
|
|
||||||
utils.SetSwitchFromOptions(options, constant.IsOfflinePush, false)
|
|
||||||
utils.SetSwitchFromOptions(options, constant.IsConversationUpdate, false)
|
|
||||||
utils.SetSwitchFromOptions(options, constant.IsSenderConversationUpdate, false)
|
|
||||||
utils.SetSwitchFromOptions(options, constant.IsUnreadCount, false)
|
|
||||||
utils.SetSwitchFromOptions(options, constant.IsReactionFromCache, isReactionFromCache)
|
|
||||||
if !isHistory {
|
|
||||||
utils.SetSwitchFromOptions(options, constant.IsHistory, false)
|
|
||||||
utils.SetSwitchFromOptions(options, constant.IsPersistent, false)
|
|
||||||
}
|
|
||||||
bytes, err := json.Marshal(m)
|
|
||||||
if err != nil {
|
|
||||||
return errs.ErrData.Wrap(err.Error())
|
|
||||||
}
|
|
||||||
pbData := msg.SendMsgReq{
|
|
||||||
MsgData: &sdkws.MsgData{
|
|
||||||
SendID: sendID,
|
|
||||||
ClientMsgID: utils.GetMsgID(sendID),
|
|
||||||
SessionType: sessionType,
|
|
||||||
MsgFrom: constant.SysMsgType,
|
|
||||||
ContentType: contentType,
|
|
||||||
Content: bytes,
|
|
||||||
CreateTime: utils.GetCurrentTimestampByMill(),
|
|
||||||
Options: options,
|
|
||||||
},
|
|
||||||
}
|
|
||||||
switch sessionType {
|
|
||||||
case constant.SingleChatType, constant.NotificationChatType:
|
|
||||||
pbData.MsgData.RecvID = conversationID
|
|
||||||
case constant.GroupChatType, constant.SuperGroupChatType:
|
|
||||||
pbData.MsgData.GroupID = conversationID
|
|
||||||
}
|
|
||||||
_, err = e.SendMsg(ctx, &pbData)
|
|
||||||
return err
|
|
||||||
}
|
|
Loading…
x
Reference in New Issue
Block a user