diff --git a/pkg/service/asChat/logic/chat.go b/pkg/service/asChat/logic/chat.go index 87acfe9..6fdd54e 100644 --- a/pkg/service/asChat/logic/chat.go +++ b/pkg/service/asChat/logic/chat.go @@ -18,17 +18,40 @@ import ( "fonchain-fiee/pkg/service/asChat/dto" "go.uber.org/zap" "log" + "sync" ) +var cacheMap = make(map[int64]dto.NewMessageRequest) +var newMessageLocker sync.Mutex + func NewMessage(ctx context.Context, cache *chatCache.ChatCache, sender *accountFiee.ChatUserData, request dto.NewMessageRequest) (err error) { + newMessageLocker.Lock() + defer newMessageLocker.Unlock() if request.SessionId == "" { return errors.New("sessionId不能为空") } if request.MsgType == 0 { return errors.New("msgType不能为空") } - fmt.Println("NewMessage 1111111111111111111111111111111") - fmt.Println("NewMessage 22222222222222222222222222222222222") + //短时间重复消息不发送 + if request.AtUserId != 0 && request.Robot { + if msgRecord, ok := cacheMap[request.AtUserId]; ok { + if msgRecord.SessionId == "" { + cacheMap[request.AtUserId] = request + } else { + fmt.Println(request.LocalStamp - msgRecord.LocalStamp) + if msgRecord.Message.Text == request.Message.Text && request.LocalStamp-msgRecord.LocalStamp < 10 { + cacheMap[request.AtUserId] = request + return nil + } else { + cacheMap[request.AtUserId] = request + } + } + } else { + cacheMap[request.AtUserId] = request + } + } + //存储入库 if sender.NickName == "" { sender.NickName = fmt.Sprintf("未知用户(%d)", sender.ID)