From 3cc278211b4309b833f4f681db27340e75a85242 Mon Sep 17 00:00:00 2001 From: imhao183 Date: Tue, 25 Aug 2020 21:04:53 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=AD=A3=E5=AE=A2=E6=88=B7=E7=AB=AF?= =?UTF-8?q?=E5=88=9B=E5=BB=BA=E7=BE=A4=E7=BB=84=E6=97=B6=EF=BC=8C=E7=BE=A4?= =?UTF-8?q?=E4=B8=BB=E7=9A=84=E6=88=90=E5=91=98=E7=8A=B6=E6=80=81=E9=94=99?= =?UTF-8?q?=E8=AF=AF=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../io/moquette/imhandler/CreateGroupHandler.java | 2 +- .../io/moquette/persistence/MemoryMessagesStore.java | 11 ++++++++--- .../src/main/java/io/moquette/spi/IMessagesStore.java | 2 +- 3 files changed, 10 insertions(+), 5 deletions(-) diff --git a/broker/src/main/java/io/moquette/imhandler/CreateGroupHandler.java b/broker/src/main/java/io/moquette/imhandler/CreateGroupHandler.java index e1ed85bb..3d5f9ee4 100644 --- a/broker/src/main/java/io/moquette/imhandler/CreateGroupHandler.java +++ b/broker/src/main/java/io/moquette/imhandler/CreateGroupHandler.java @@ -27,7 +27,7 @@ public class CreateGroupHandler extends GroupHandler 0) { sendGroupNotification(fromUser, groupInfo.getTargetId(), request.getToLineList(), request.getNotifyContent()); diff --git a/broker/src/main/java/io/moquette/persistence/MemoryMessagesStore.java b/broker/src/main/java/io/moquette/persistence/MemoryMessagesStore.java index deda4ed3..d3ab4341 100755 --- a/broker/src/main/java/io/moquette/persistence/MemoryMessagesStore.java +++ b/broker/src/main/java/io/moquette/persistence/MemoryMessagesStore.java @@ -776,7 +776,7 @@ public class MemoryMessagesStore implements IMessagesStore { } @Override - public WFCMessage.GroupInfo createGroup(String fromUser, WFCMessage.GroupInfo groupInfo, List memberList) { + public WFCMessage.GroupInfo createGroup(String fromUser, WFCMessage.GroupInfo groupInfo, List memberList, boolean isAdmin) { HazelcastInstance hzInstance = m_Server.getHazelcastInstance(); IMap mIMap = hzInstance.getMap(GROUPS_MAP); @@ -790,9 +790,14 @@ public class MemoryMessagesStore implements IMessagesStore { MultiMap groupMembers = hzInstance.getMultiMap(GROUP_MEMBERS); + String owner = fromUser; + if (isAdmin && !StringUtil.isNullOrEmpty(groupInfo.getOwner())) { + owner = groupInfo.getOwner(); + } + List updatedMemberList = new ArrayList<>(); for (WFCMessage.GroupMember member : memberList) { - if (member.getMemberId().equals(groupInfo.getOwner())) { + if (member.getMemberId().equals(owner)) { member = member.toBuilder().setUpdateDt(dt).setCreateDt(dt).setType(ProtoConstants.GroupMemberType.GroupMemberType_Owner).build(); } else { member = member.toBuilder().setUpdateDt(dt).setCreateDt(dt).build(); @@ -811,7 +816,7 @@ public class MemoryMessagesStore implements IMessagesStore { .setUpdateDt(dt) .setMemberUpdateDt(dt) .setMemberCount(memberList.size()) - .setOwner(StringUtil.isNullOrEmpty(groupInfo.getOwner()) ? fromUser : groupInfo.getOwner()) + .setOwner(owner) .build(); mIMap.set(groupId, groupInfo); diff --git a/broker/src/main/java/io/moquette/spi/IMessagesStore.java b/broker/src/main/java/io/moquette/spi/IMessagesStore.java index 51ad9dc5..f4f25ff6 100755 --- a/broker/src/main/java/io/moquette/spi/IMessagesStore.java +++ b/broker/src/main/java/io/moquette/spi/IMessagesStore.java @@ -104,7 +104,7 @@ public interface IMessagesStore { WFCMessage.PullMessageResult fetchMessage(String user, String exceptClientId, long fromMessageId, int pullType); WFCMessage.PullMessageResult loadRemoteMessages(String user, WFCMessage.Conversation conversation, long beforeUid, int count); long insertUserMessages(String sender, int conversationType, String target, int line, int messageContentType, String userId, long messageId); - WFCMessage.GroupInfo createGroup(String operator, WFCMessage.GroupInfo groupInfo, List memberList); + WFCMessage.GroupInfo createGroup(String operator, WFCMessage.GroupInfo groupInfo, List memberList, boolean isAdmin); ErrorCode addGroupMembers(String operator, boolean isAdmin, String groupId, List memberList); ErrorCode kickoffGroupMembers(String operator, boolean isAdmin, String groupId, List memberList); ErrorCode quitGroup(String operator, String groupId);