解决双方同时加好友后,有一方接受后,另外一方无法接受问题
This commit is contained in:
@@ -19,6 +19,7 @@ import win.liyufan.im.I18n;
|
|||||||
import win.liyufan.im.IMTopic;
|
import win.liyufan.im.IMTopic;
|
||||||
import win.liyufan.im.MessageShardingUtil;
|
import win.liyufan.im.MessageShardingUtil;
|
||||||
|
|
||||||
|
import static cn.wildfirechat.common.ErrorCode.ERROR_CODE_ALREADY_FRIENDS;
|
||||||
import static cn.wildfirechat.common.ErrorCode.ERROR_CODE_SUCCESS;
|
import static cn.wildfirechat.common.ErrorCode.ERROR_CODE_SUCCESS;
|
||||||
|
|
||||||
@Handler(IMTopic.HandleFriendRequestTopic)
|
@Handler(IMTopic.HandleFriendRequestTopic)
|
||||||
@@ -86,6 +87,10 @@ public class HandleFriendRequestHandler extends IMHandler<WFCMessage.HandleFrien
|
|||||||
publisher.publishNotification(IMTopic.NotifyFriendTopic, fromUser, heads[1]);
|
publisher.publishNotification(IMTopic.NotifyFriendTopic, fromUser, heads[1]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if(errorCode == ERROR_CODE_ALREADY_FRIENDS) {
|
||||||
|
errorCode = ERROR_CODE_SUCCESS;
|
||||||
|
}
|
||||||
|
|
||||||
return errorCode;
|
return errorCode;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2856,7 +2856,7 @@ public class MemoryMessagesStore implements IMessagesStore {
|
|||||||
public ErrorCode handleFriendRequest(String userId, WFCMessage.HandleFriendRequest request, WFCMessage.Message.Builder msgBuilder, long[] heads, boolean isAdmin) {
|
public ErrorCode handleFriendRequest(String userId, WFCMessage.HandleFriendRequest request, WFCMessage.Message.Builder msgBuilder, long[] heads, boolean isAdmin) {
|
||||||
HazelcastInstance hzInstance = m_Server.getHazelcastInstance();
|
HazelcastInstance hzInstance = m_Server.getHazelcastInstance();
|
||||||
|
|
||||||
|
boolean alreadyFriend = false;
|
||||||
if(!isAdmin && request.getStatus() == ProtoConstants.FriendRequestStatus.RequestStatus_Accepted) {
|
if(!isAdmin && request.getStatus() == ProtoConstants.FriendRequestStatus.RequestStatus_Accepted) {
|
||||||
MultiMap<String, FriendData> friendsMap = hzInstance.getMultiMap(USER_FRIENDS);
|
MultiMap<String, FriendData> friendsMap = hzInstance.getMultiMap(USER_FRIENDS);
|
||||||
|
|
||||||
@@ -2868,10 +2868,9 @@ public class MemoryMessagesStore implements IMessagesStore {
|
|||||||
for (FriendData fd : friends) {
|
for (FriendData fd : friends) {
|
||||||
if (fd.getFriendUid().equals(request.getTargetUid())) {
|
if (fd.getFriendUid().equals(request.getTargetUid())) {
|
||||||
if (fd.getState() == 0) {
|
if (fd.getState() == 0) {
|
||||||
return ErrorCode.ERROR_CODE_ALREADY_FRIENDS;
|
alreadyFriend = true;
|
||||||
} else {
|
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -2950,7 +2949,7 @@ public class MemoryMessagesStore implements IMessagesStore {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (existRequest != null) {
|
if (existRequest != null) {
|
||||||
if (mFriendRequestExpiration > 0 && System.currentTimeMillis() - existRequest.getUpdateDt() > mFriendRequestExpiration) {
|
if (!alreadyFriend && mFriendRequestExpiration > 0 && System.currentTimeMillis() - existRequest.getUpdateDt() > mFriendRequestExpiration) {
|
||||||
return ErrorCode.ERROR_CODE_FRIEND_REQUEST_EXPIRED;
|
return ErrorCode.ERROR_CODE_FRIEND_REQUEST_EXPIRED;
|
||||||
} else {
|
} else {
|
||||||
existRequest = existRequest.toBuilder().setStatus(request.getStatus()).setUpdateDt(System.currentTimeMillis()).build();
|
existRequest = existRequest.toBuilder().setStatus(request.getStatus()).setUpdateDt(System.currentTimeMillis()).build();
|
||||||
@@ -2976,7 +2975,7 @@ public class MemoryMessagesStore implements IMessagesStore {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if(request.getStatus() == ProtoConstants.FriendRequestStatus.RequestStatus_Accepted){
|
if(!alreadyFriend && request.getStatus() == ProtoConstants.FriendRequestStatus.RequestStatus_Accepted){
|
||||||
MultiMap<String, FriendData> friendsMap = hzInstance.getMultiMap(USER_FRIENDS);
|
MultiMap<String, FriendData> friendsMap = hzInstance.getMultiMap(USER_FRIENDS);
|
||||||
FriendData friendData1 = new FriendData(userId, request.getTargetUid(), "", request.getExtra(), 0, 0, System.currentTimeMillis());
|
FriendData friendData1 = new FriendData(userId, request.getTargetUid(), "", request.getExtra(), 0, 0, System.currentTimeMillis());
|
||||||
databaseStore.persistOrUpdateFriendData(friendData1);
|
databaseStore.persistOrUpdateFriendData(friendData1);
|
||||||
@@ -2997,6 +2996,9 @@ public class MemoryMessagesStore implements IMessagesStore {
|
|||||||
|
|
||||||
callbackRelationEvent(userId, request.getTargetUid(), 0, "1");
|
callbackRelationEvent(userId, request.getTargetUid(), 0, "1");
|
||||||
}
|
}
|
||||||
|
if(alreadyFriend) {
|
||||||
|
return ErrorCode.ERROR_CODE_ALREADY_FRIENDS;
|
||||||
|
}
|
||||||
return ErrorCode.ERROR_CODE_SUCCESS;
|
return ErrorCode.ERROR_CODE_SUCCESS;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
|||||||
Reference in New Issue
Block a user