From 882bf29e63d5acf95908f7bb00373617bdf1f1bc Mon Sep 17 00:00:00 2001 From: "heavyrain.lee" Date: Fri, 23 Aug 2019 08:38:48 +0800 Subject: [PATCH] =?UTF-8?q?1=EF=BC=8C=E6=9B=B4=E6=96=B0=E7=BE=A4=E4=B8=BB?= =?UTF-8?q?=E6=97=B6=E6=9B=B4=E6=96=B0=E7=BE=A4=E6=88=90=E5=91=98=E4=BF=A1?= =?UTF-8?q?=E6=81=AF=E4=B8=AD=E7=9A=84=E7=BE=A4=E4=B8=BB=E7=8A=B6=E6=80=81?= =?UTF-8?q?=202=EF=BC=8C=E5=9C=A8=E6=95=8F=E6=84=9F=E8=AF=8D=E5=88=97?= =?UTF-8?q?=E8=A1=A8=E4=B8=AD=E6=B7=BB=E5=8A=A0id=E5=88=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../h2/V14__add_id_for_sensitive_word.sql | 1 + .../mysql/V19__add_id_for_sensitive_word.sql | 1 + .../persistence/MemoryMessagesStore.java | 19 +++++++++++++++++++ 3 files changed, 21 insertions(+) create mode 100755 broker/migrate/h2/V14__add_id_for_sensitive_word.sql create mode 100755 broker/migrate/mysql/V19__add_id_for_sensitive_word.sql diff --git a/broker/migrate/h2/V14__add_id_for_sensitive_word.sql b/broker/migrate/h2/V14__add_id_for_sensitive_word.sql new file mode 100755 index 00000000..f41c25b0 --- /dev/null +++ b/broker/migrate/h2/V14__add_id_for_sensitive_word.sql @@ -0,0 +1 @@ +alter table `t_sensitiveword` add column `id` int(11) NOT NULL PRIMARY KEY AUTO_INCREMENT; diff --git a/broker/migrate/mysql/V19__add_id_for_sensitive_word.sql b/broker/migrate/mysql/V19__add_id_for_sensitive_word.sql new file mode 100755 index 00000000..f41c25b0 --- /dev/null +++ b/broker/migrate/mysql/V19__add_id_for_sensitive_word.sql @@ -0,0 +1 @@ +alter table `t_sensitiveword` add column `id` int(11) NOT NULL PRIMARY KEY AUTO_INCREMENT; diff --git a/broker/src/main/java/io/moquette/persistence/MemoryMessagesStore.java b/broker/src/main/java/io/moquette/persistence/MemoryMessagesStore.java index e7cdb9a4..313be7be 100755 --- a/broker/src/main/java/io/moquette/persistence/MemoryMessagesStore.java +++ b/broker/src/main/java/io/moquette/persistence/MemoryMessagesStore.java @@ -1042,6 +1042,25 @@ public class MemoryMessagesStore implements IMessagesStore { groupInfo = groupInfo.toBuilder().setOwner(newOwner).setUpdateDt(updateDt).build(); mIMap.set(groupId, groupInfo); + MultiMap groupMembers = hzInstance.getMultiMap(GROUP_MEMBERS); + Collection members = groupMembers.get(groupId); + if (members == null || members.size() == 0) { + members = loadGroupMemberFromDB(hzInstance, groupId); + } + for (WFCMessage.GroupMember member : members) { + if (newOwner.equals(member.getMemberId())) { + groupMembers.remove(groupId, member); + member = member.toBuilder().setType(GroupMemberType_Owner).setUpdateDt(updateDt).build(); + databaseStore.persistGroupMember(groupId, Arrays.asList(member)); + groupMembers.put(groupId, member); + } else if(member.getType() == GroupMemberType_Owner) { + groupMembers.remove(groupId, member); + member = member.toBuilder().setType(GroupMemberType_Normal).setUpdateDt(updateDt).build(); + databaseStore.persistGroupMember(groupId, Arrays.asList(member)); + groupMembers.put(groupId, member); + } + } + return ErrorCode.ERROR_CODE_SUCCESS; }