From 69f28bd35b49bc7793b9865f7a26cad884674372 Mon Sep 17 00:00:00 2001 From: imhao183 Date: Wed, 6 May 2020 20:47:55 +0800 Subject: [PATCH] =?UTF-8?q?=E5=BD=93=E6=8E=A5=E5=8F=97=E5=A5=BD=E5=8F=8B?= =?UTF-8?q?=E9=82=80=E8=AF=B7=E6=97=B6=EF=BC=8C=E5=A6=82=E6=9E=9C=E5=B7=B2?= =?UTF-8?q?=E7=BB=8F=E6=98=AF=E5=A5=BD=E5=8F=8B=EF=BC=8C=E8=BF=94=E5=9B=9E?= =?UTF-8?q?=E2=80=9C=E5=B7=B2=E7=BB=8F=E6=98=AF=E5=A5=BD=E5=8F=8B=E2=80=9D?= =?UTF-8?q?=E7=9A=84=E9=94=99=E8=AF=AF=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../moquette/persistence/MemoryMessagesStore.java | 15 +++++++++++++++ .../java/cn/wildfirechat/common/ErrorCode.java | 2 ++ 2 files changed, 17 insertions(+) diff --git a/broker/src/main/java/io/moquette/persistence/MemoryMessagesStore.java b/broker/src/main/java/io/moquette/persistence/MemoryMessagesStore.java index 7009da80..32a0ec66 100755 --- a/broker/src/main/java/io/moquette/persistence/MemoryMessagesStore.java +++ b/broker/src/main/java/io/moquette/persistence/MemoryMessagesStore.java @@ -2147,6 +2147,21 @@ public class MemoryMessagesStore implements IMessagesStore { public ErrorCode handleFriendRequest(String userId, WFCMessage.HandleFriendRequest request, WFCMessage.Message.Builder msgBuilder, long[] heads, boolean isAdmin) { HazelcastInstance hzInstance = m_Server.getHazelcastInstance(); + if(request.getStatus() == ProtoConstants.FriendRequestStatus.RequestStatus_Accepted) { + Collection friendDatas = getFriendDatas(hzInstance, userId); + for (FriendData fd : friendDatas) { + if (fd.getFriendUid().equals(request.getTargetUid())) { + if (fd.getState() == 0) { + return ErrorCode.ERROR_CODE_ALREADY_FRIENDS; + } else { + break; + } + } + } + } + + IMap friendEmpty = hzInstance.getMap(USER_FRIENDS_EMPTY); + if (isAdmin) { MultiMap friendsMap = hzInstance.getMultiMap(USER_FRIENDS); diff --git a/common/src/main/java/cn/wildfirechat/common/ErrorCode.java b/common/src/main/java/cn/wildfirechat/common/ErrorCode.java index 419d1e90..9a6c99db 100755 --- a/common/src/main/java/cn/wildfirechat/common/ErrorCode.java +++ b/common/src/main/java/cn/wildfirechat/common/ErrorCode.java @@ -42,6 +42,8 @@ public enum ErrorCode { ERROR_CODE_NOT_IN_CHANNEL(21, "not in channel"), + ERROR_CODE_ALREADY_FRIENDS(23, "already friends"), + ERROR_CODE_GROUP_MUTED(241, "group is muted"), ERROR_CODE_SENSITIVE_MATCHED(242, "sensitive matched"), ERROR_CODE_SIGN_EXPIRED(243, "sign expired"),