From ad33abc424f7bc7088a53253e9c6f8be539c0121 Mon Sep 17 00:00:00 2001 From: heavyrian2012 Date: Tue, 28 Feb 2023 21:01:20 +0800 Subject: [PATCH] =?UTF-8?q?=E7=94=A8=E6=88=B7=E6=B6=88=E6=81=AF=E8=A1=A8?= =?UTF-8?q?=E4=B8=AD=E7=9A=84target=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/io/moquette/persistence/DatabaseStore.java | 12 ++++++++++-- .../io/moquette/persistence/MemoryMessagesStore.java | 2 +- 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/broker/src/main/java/io/moquette/persistence/DatabaseStore.java b/broker/src/main/java/io/moquette/persistence/DatabaseStore.java index 840fefe2..130d6167 100644 --- a/broker/src/main/java/io/moquette/persistence/DatabaseStore.java +++ b/broker/src/main/java/io/moquette/persistence/DatabaseStore.java @@ -915,7 +915,7 @@ public class DatabaseStore { return false; } - void persistUserMessage(final String userId, final long messageId, final long messageSeq, int type, String target, int line, boolean directing, final int messageContentType) { + void persistUserMessage(final String userId, final String sender, final long messageId, final long messageSeq, int type, String target, int line, boolean directing, final int messageContentType) { mScheduler.execute(()->{ Connection connection = null; PreparedStatement statement = null; @@ -930,7 +930,7 @@ public class DatabaseStore { statement.setString(index++, userId); statement.setLong(index++, messageSeq); statement.setInt(index++, type); - statement.setString(index++, target); + statement.setString(index++, getPrivateChatUserMessageTarget(type, target, sender)); statement.setInt(index++, line); statement.setInt(index++, directing ? 1 :0); statement.setInt(index++, messageContentType); @@ -946,6 +946,14 @@ public class DatabaseStore { }); } + String getPrivateChatUserMessageTarget(int conversationType, String target, String userId) { + if(conversationType == ProtoConstants.ConversationType.ConversationType_Private) { + return target.compareTo(userId) > 0 ? (userId + "|" + target) : (target + "|" + userId); + } else { + return target; + } + } + void clearUserMessage(final String userId) { mScheduler.execute(()->{ String tableName = getUserMessageTable(userId); diff --git a/broker/src/main/java/io/moquette/persistence/MemoryMessagesStore.java b/broker/src/main/java/io/moquette/persistence/MemoryMessagesStore.java index 4a7230b4..78f3e491 100755 --- a/broker/src/main/java/io/moquette/persistence/MemoryMessagesStore.java +++ b/broker/src/main/java/io/moquette/persistence/MemoryMessagesStore.java @@ -1012,7 +1012,7 @@ public class MemoryMessagesStore implements IMessagesStore { mWriteLock.unlock(); } - databaseStore.persistUserMessage(user, messageId, messageSeq, conversationType, target, line, directing, messageContentType); + databaseStore.persistUserMessage(user, sender, messageId, messageSeq, conversationType, target, line, directing, messageContentType); return messageSeq; }