diff --git a/broker/migrate/h2/V30__add_group_member_create_dt.sql b/broker/migrate/h2/V30__add_group_member_create_dt.sql new file mode 100755 index 00000000..30bff398 --- /dev/null +++ b/broker/migrate/h2/V30__add_group_member_create_dt.sql @@ -0,0 +1 @@ +alter table t_group_member add column `_create_dt` bigint(20) DEFAULT 0; diff --git a/broker/migrate/mysql/V35__add_group_member_create_dt.sql b/broker/migrate/mysql/V35__add_group_member_create_dt.sql new file mode 100755 index 00000000..cd18871f --- /dev/null +++ b/broker/migrate/mysql/V35__add_group_member_create_dt.sql @@ -0,0 +1 @@ +alter table t_group_member add column `_create_dt` bigint(20) DEFAULT 0, COMMENT "group member create time"; diff --git a/broker/src/main/java/io/moquette/persistence/DatabaseStore.java b/broker/src/main/java/io/moquette/persistence/DatabaseStore.java index e64294f7..7d80d3cf 100644 --- a/broker/src/main/java/io/moquette/persistence/DatabaseStore.java +++ b/broker/src/main/java/io/moquette/persistence/DatabaseStore.java @@ -331,7 +331,7 @@ public class DatabaseStore { String sql = "select `_mid`" + ", `_alias`" + ", `_type`" + - ", `_dt` from t_group_member where _gid = ?"; + ", `_dt`, `_create_dt` from t_group_member where _gid = ?"; statement = connection.prepareStatement(sql); statement.setString(1, groupId); @@ -358,6 +358,9 @@ public class DatabaseStore { long longValue = rs.getLong(index++); builder.setUpdateDt(longValue); + longValue = rs.getLong(index++); + builder.setCreateDt(longValue); + WFCMessage.GroupMember member = builder.build(); groupMembers.put(groupId, member); } @@ -1652,7 +1655,7 @@ public class DatabaseStore { ", `_mid`" + ", `_alias`" + ", `_type`" + - ", `_dt`) values(?, ?, ?, ?, ?)" + + ", `_dt`, `_create_dt`) values(?, ?, ?, ?, ?, ?)" + " ON DUPLICATE KEY UPDATE " + "`_alias` = ?," + "`_type` = ?," + @@ -1673,6 +1676,7 @@ public class DatabaseStore { statement.setString(index++, member.getAlias()); statement.setInt(index++, member.getType()); statement.setLong(index++, dt); + statement.setLong(index++, member.getCreateDt()); statement.setString(index++, member.getAlias()); statement.setInt(index++, member.getType()); statement.setLong(index++, dt); diff --git a/broker/src/main/java/io/moquette/persistence/MemoryMessagesStore.java b/broker/src/main/java/io/moquette/persistence/MemoryMessagesStore.java index 7d4f9ccf..5ad41eeb 100755 --- a/broker/src/main/java/io/moquette/persistence/MemoryMessagesStore.java +++ b/broker/src/main/java/io/moquette/persistence/MemoryMessagesStore.java @@ -781,9 +781,9 @@ public class MemoryMessagesStore implements IMessagesStore { List updatedMemberList = new ArrayList<>(); for (WFCMessage.GroupMember member : memberList) { if (member.getMemberId().equals(groupInfo.getOwner())) { - member = member.toBuilder().setUpdateDt(dt).setType(ProtoConstants.GroupMemberType.GroupMemberType_Owner).build(); + member = member.toBuilder().setUpdateDt(dt).setCreateDt(dt).setType(ProtoConstants.GroupMemberType.GroupMemberType_Owner).build(); } else { - member = member.toBuilder().setUpdateDt(dt).build(); + member = member.toBuilder().setUpdateDt(dt).setCreateDt(dt).build(); } groupMembers.put(groupId, member); updatedMemberList.add(member); @@ -843,9 +843,9 @@ public class MemoryMessagesStore implements IMessagesStore { ArrayList newInviteUsers = new ArrayList<>(); for (WFCMessage.GroupMember member : memberList) { if (member.getMemberId().equals(groupInfo.getOwner())) { - member = member.toBuilder().setType(GroupMemberType_Owner).setUpdateDt(updateDt).setAlias("").build(); + member = member.toBuilder().setType(GroupMemberType_Owner).setUpdateDt(updateDt).setCreateDt(updateDt).setAlias("").build(); } else { - member = member.toBuilder().setType(GroupMemberType_Normal).setUpdateDt(updateDt).setAlias("").build(); + member = member.toBuilder().setType(GroupMemberType_Normal).setUpdateDt(updateDt).setCreateDt(updateDt).setAlias("").build(); } tmp.add(member); newInviteUsers.add(member.getMemberId());