From 135a9ed0a8ae49be083e88185103d76a864cae70 Mon Sep 17 00:00:00 2001 From: heavyrian2012 Date: Fri, 19 Apr 2024 11:19:43 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E7=94=A8=E6=88=B7=E8=AE=BE?= =?UTF-8?q?=E7=BD=AE=E6=B7=BB=E5=8A=A0=E5=A5=BD=E5=8F=8B=E9=AA=8C=E8=AF=81?= =?UTF-8?q?=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../persistence/MemoryMessagesStore.java | 17 +++++++++++++++-- .../java/win/liyufan/im/UserSettingScope.java | 1 + 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/broker/src/main/java/io/moquette/persistence/MemoryMessagesStore.java b/broker/src/main/java/io/moquette/persistence/MemoryMessagesStore.java index 5ca44a8e..cdc60eb8 100755 --- a/broker/src/main/java/io/moquette/persistence/MemoryMessagesStore.java +++ b/broker/src/main/java/io/moquette/persistence/MemoryMessagesStore.java @@ -24,6 +24,7 @@ import com.google.protobuf.ByteString; import com.hazelcast.core.*; import com.hazelcast.util.StringUtil; import com.xiaoleilu.loServer.RestResult; +import com.xiaoleilu.loServer.action.Action; import com.xiaoleilu.loServer.action.admin.AdminAction; import com.xiaoleilu.loServer.model.FriendData; import cn.wildfirechat.common.ErrorCode; @@ -49,6 +50,7 @@ import java.net.URL; import java.nio.charset.StandardCharsets; import java.util.*; import java.util.concurrent.ConcurrentHashMap; +import java.util.concurrent.Executor; import java.util.concurrent.TimeUnit; import java.util.concurrent.locks.Lock; import java.util.concurrent.locks.ReadWriteLock; @@ -73,6 +75,7 @@ import static io.moquette.BrokerConstants.*; import static io.moquette.server.Constants.MAX_CHATROOM_MESSAGE_QUEUE; import static io.moquette.server.Constants.MAX_MESSAGE_QUEUE; import static cn.wildfirechat.pojos.MyInfoType.*; +import static win.liyufan.im.UserSettingScope.kUserSettingAddFriendNoVerify; import static win.liyufan.im.UserSettingScope.kUserSettingPCOnline; public class MemoryMessagesStore implements IMessagesStore { @@ -3328,6 +3331,10 @@ public class MemoryMessagesStore implements IMessagesStore { HazelcastInstance hzInstance = m_Server.getHazelcastInstance(); MultiMap requestMap = hzInstance.getMultiMap(USER_FRIENDS_REQUEST); + + WFCMessage.UserSettingEntry userSettingData = getUserSetting(request.getTargetUid(), kUserSettingAddFriendNoVerify, ""); + boolean noVerify = userSettingData != null && "1".equals(userSettingData.getValue()); + Collection requests = requestMap.get(userId); if (requests == null || requests.size() == 0) { requests = loadFriendRequest(requestMap, userId); @@ -3342,7 +3349,7 @@ public class MemoryMessagesStore implements IMessagesStore { } } - if (existRequest != null && existRequest.getStatus() != ProtoConstants.FriendRequestStatus.RequestStatus_Accepted && !isAdmin) { + if (!noVerify && existRequest != null && existRequest.getStatus() != ProtoConstants.FriendRequestStatus.RequestStatus_Accepted && !isAdmin) { if (existRequest.getStatus() == ProtoConstants.FriendRequestStatus.RequestStatus_Rejected && System.currentTimeMillis() - existRequest.getUpdateDt() < mFriendRejectDuration) { return ErrorCode.ERROR_CODE_FRIEND_REQUEST_BLOCKED; @@ -3384,7 +3391,7 @@ public class MemoryMessagesStore implements IMessagesStore { .setReason(request.getReason()) .setExtra(request.getExtra()) .setStatus(ProtoConstants.FriendRequestStatus.RequestStatus_Sent) - .setToReadStatus(false) + .setToReadStatus(noVerify) .setUpdateDt(System.currentTimeMillis()) .build(); @@ -3392,6 +3399,12 @@ public class MemoryMessagesStore implements IMessagesStore { requestMap.remove(userId); requestMap.remove(request.getTargetUid()); + + if(noVerify) { + WFCMessage.HandleFriendRequest handleFriendRequest = WFCMessage.HandleFriendRequest.newBuilder().setTargetUid(userId).setStatus(ProtoConstants.FriendRequestStatus.RequestStatus_Accepted).build(); + ServerAPIHelper.sendRequest(request.getTargetUid(), null, IMTopic.HandleFriendRequestTopic, handleFriendRequest.toByteArray(), null, ProtoConstants.RequestSourceType.Request_From_User); + } + head[0] = newRequest.getUpdateDt(); return ErrorCode.ERROR_CODE_SUCCESS; } diff --git a/broker/src/main/java/win/liyufan/im/UserSettingScope.java b/broker/src/main/java/win/liyufan/im/UserSettingScope.java index 3bbc5857..ffd26a36 100644 --- a/broker/src/main/java/win/liyufan/im/UserSettingScope.java +++ b/broker/src/main/java/win/liyufan/im/UserSettingScope.java @@ -20,4 +20,5 @@ public interface UserSettingScope { int kUserSettingPttSilent = 25; int kUserSettingGroupRemark = 26; int kUserSettingPrivacySearchable = 27; + int kUserSettingAddFriendNoVerify = 28; }