From b3f5c2f18537184fb3bbfd66961ccb3c388eb3dc Mon Sep 17 00:00:00 2001 From: Gordon <1432970085@qq.com> Date: Mon, 12 Dec 2022 12:12:53 +0800 Subject: [PATCH] reaction message add expiration --- internal/rpc/msg/extend_msg.go | 28 +++++++++------------------- pkg/common/db/RedisModel.go | 4 ++++ 2 files changed, 13 insertions(+), 19 deletions(-) diff --git a/internal/rpc/msg/extend_msg.go b/internal/rpc/msg/extend_msg.go index f4269cabf..baf48bc78 100644 --- a/internal/rpc/msg/extend_msg.go +++ b/internal/rpc/msg/extend_msg.go @@ -51,28 +51,18 @@ func (rpc *rpcChat) SetMessageReactionExtensions(ctx context.Context, req *msg.M setKeyResultInfo(oneFailedReactionExtensionList, 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(oneFailedReactionExtensionList, 200, err.Error(), req.ClientMsgID, k, v) - continue - } - temp := new(server_api_params.KeyValue) - utils.JsonStringToStruct(redisValue, temp) - if v.LatestUpdateTime != temp.LatestUpdateTime { - setKeyResultInfo(oneFailedReactionExtensionList, 300, "message have update", req.ClientMsgID, k, temp) + v.LatestUpdateTime = utils.GetCurrentTimestampByMill() + newerr := db.DB.SetMessageTypeKeyValue(req.ClientMsgID, req.SessionType, k, utils.StructToJsonString(v)) + if newerr != nil { + setKeyResultInfo(oneFailedReactionExtensionList, 201, newerr.Error(), req.ClientMsgID, k, v) continue - } else { - v.LatestUpdateTime = utils.GetCurrentTimestampByMill() - newerr := db.DB.SetMessageTypeKeyValue(req.ClientMsgID, req.SessionType, k, utils.StructToJsonString(v)) - if newerr != nil { - setKeyResultInfo(oneFailedReactionExtensionList, 201, newerr.Error(), req.ClientMsgID, k, temp) - continue - } - setKeyResultInfo(oneSuccessReactionExtensionList, 0, "", req.ClientMsgID, k, v) } - + setKeyResultInfo(oneSuccessReactionExtensionList, 0, "", req.ClientMsgID, k, v) + } + _, err := db.DB.SetMessageReactionExpire(req.ClientMsgID, req.SessionType, time.Duration(24*3)*time.Hour) + if err != nil { + log.Error(req.OperationID, "SetMessageReactionExpire err:", err.Error(), req.String()) } - } else { //mongo处理 } diff --git a/pkg/common/db/RedisModel.go b/pkg/common/db/RedisModel.go index 4e5fd6dab..6a2286b15 100644 --- a/pkg/common/db/RedisModel.go +++ b/pkg/common/db/RedisModel.go @@ -447,6 +447,10 @@ func (d *DataBases) JudgeMessageReactionEXISTS(clientMsgID string, sessionType i return false, err } } +func (d *DataBases) SetMessageReactionExpire(clientMsgID string, sessionType int32, expiration time.Duration) (bool, error) { + key := getMessageReactionExPrefix(clientMsgID, sessionType) + return d.RDB.Expire(context.Background(), key, expiration).Result() +} func (d *DataBases) GetMessageTypeKeyValue(clientMsgID string, sessionType int32, typeKey string) (string, error) { key := getMessageReactionExPrefix(clientMsgID, sessionType) result, err := d.RDB.HGet(context.Background(), key, typeKey).Result()