Fix modify group not work issue

This commit is contained in:
heavyrain lee
2019-04-20 09:43:51 +08:00
parent 0f05d63a3b
commit 2458782c73
5 changed files with 49 additions and 16 deletions
+2
View File
@@ -49,3 +49,5 @@ maven-metadata.xml
/bin/ /bin/
broker/config/git.properties broker/config/git.properties
distribution/src/main/resources/git.properties distribution/src/main/resources/git.properties
broker/h2db
broker/media
@@ -732,12 +732,31 @@ public class DatabaseStore {
", `_extra`" + ", `_extra`" +
", `_dt`" + ", `_dt`" +
", `_member_count`" + ", `_member_count`" +
", `_member_dt`) values(?, ?, ?, ?, ?, ?, ?, ?, ?)"; ", `_member_dt`) values(?, ?, ?, ?, ?, ?, ?, ?, ?)" +
" ON DUPLICATE KEY UPDATE " +
"`_name` = ?," +
"`_portrait` = ?," +
"`_owner` = ?," +
"`_type` = ?," +
"`_extra` = ?," +
"`_dt` = ?," +
"`_member_count` = ?," +
"`_member_dt` = ?";
statement = connection.prepareStatement(sql); statement = connection.prepareStatement(sql);
int index = 1; int index = 1;
statement.setString(index++, groupInfo.getTargetId()); statement.setString(index++, groupInfo.getTargetId());
statement.setString(index++, groupInfo.getName());
statement.setString(index++, groupInfo.getPortrait());
statement.setString(index++, groupInfo.getOwner());
statement.setInt(index++, groupInfo.getType());
statement.setString(index++, groupInfo.getExtra());
statement.setLong(index++, groupInfo.getUpdateDt() == 0 ? System.currentTimeMillis() : groupInfo.getUpdateDt());
statement.setInt(index++, groupInfo.getMemberCount());
statement.setLong(index++, groupInfo.getMemberUpdateDt() == 0 ? System.currentTimeMillis() : groupInfo.getUpdateDt());
statement.setString(index++, groupInfo.getName()); statement.setString(index++, groupInfo.getName());
statement.setString(index++, groupInfo.getPortrait()); statement.setString(index++, groupInfo.getPortrait());
statement.setString(index++, groupInfo.getOwner()); statement.setString(index++, groupInfo.getOwner());
@@ -10,12 +10,13 @@ package io.moquette.persistence;
import cn.wildfirechat.proto.WFCMessage; import cn.wildfirechat.proto.WFCMessage;
import com.hazelcast.core.MapLoader; import com.hazelcast.core.MapLoader;
import com.hazelcast.core.MapStore;
import io.moquette.server.Server; import io.moquette.server.Server;
import java.util.Collection; import java.util.Collection;
import java.util.Map; import java.util.Map;
public class GroupLoader implements MapLoader<String, WFCMessage.GroupInfo> { public class GroupLoader implements MapStore<String, WFCMessage.GroupInfo> {
private DatabaseStore getDatabaseStore() { private DatabaseStore getDatabaseStore() {
return Server.getServer().getStore().messagesStore().getDatabaseStore(); return Server.getServer().getStore().messagesStore().getDatabaseStore();
} }
@@ -51,18 +52,31 @@ public class GroupLoader implements MapLoader<String, WFCMessage.GroupInfo> {
return null; return null;
} }
/**
* Loads all of the keys from the store. The returned {@link Iterable} may return the keys lazily
* by loading them in batches. The {@link Iterator} of this {@link Iterable} may implement the
* {@link Closeable} interface in which case it will be closed once iteration is over.
* This is intended for releasing resources such as closing a JDBC result set.
* <p>
* The returned Iterable should not contain any <code>null</code> keys.
*
* @return all the keys. Keys inside the Iterable cannot be null.
*/
@Override @Override
public Iterable<String> loadAllKeys() { public Iterable<String> loadAllKeys() {
return null; return null;
} }
@Override
public void store(String key, WFCMessage.GroupInfo value) {
getDatabaseStore().persistGroupInfo(value);
}
@Override
public void storeAll(Map<String, WFCMessage.GroupInfo> map) {
for (WFCMessage.GroupInfo value : map.values()) {
getDatabaseStore().persistGroupInfo(value);
}
}
@Override
public void delete(String key) {
getDatabaseStore().removeGroupInfoFromDB(key);
}
@Override
public void deleteAll(Collection<String> keys) {
}
} }
@@ -591,7 +591,6 @@ public class MemoryMessagesStore implements IMessagesStore {
.build(); .build();
mIMap.put(groupId, groupInfo); mIMap.put(groupId, groupInfo);
databaseStore.persistGroupInfo(groupInfo);
MultiMap<String, WFCMessage.GroupMember> groupMembers = hzInstance.getMultiMap(GROUP_MEMBERS); MultiMap<String, WFCMessage.GroupMember> groupMembers = hzInstance.getMultiMap(GROUP_MEMBERS);
for (WFCMessage.GroupMember member : memberList) { for (WFCMessage.GroupMember member : memberList) {
@@ -767,8 +766,7 @@ public class MemoryMessagesStore implements IMessagesStore {
groupMembers.remove(groupId); groupMembers.remove(groupId);
mIMap.remove(groupId); mIMap.remove(groupId);
databaseStore.removeGroupInfoFromDB(groupId);
databaseStore.removeGroupMemberFromDB(groupId); databaseStore.removeGroupMemberFromDB(groupId);
return ErrorCode.ERROR_CODE_SUCCESS; return ErrorCode.ERROR_CODE_SUCCESS;
+1 -1
View File
@@ -19,7 +19,7 @@
<!--MySQL数据库用户名--> <!--MySQL数据库用户名-->
<property name="user">root</property> <property name="user">root</property>
<!--MySQL数据库密码--> <!--MySQL数据库密码-->
<property name="password">lt123456</property> <property name="password">123456</property>
<!-- 初始化连接池中的连接数,取值应在minPoolSize与maxPoolSize之间,默认为3--> <!-- 初始化连接池中的连接数,取值应在minPoolSize与maxPoolSize之间,默认为3-->
<property name="initialPoolSize">10</property> <property name="initialPoolSize">10</property>
<!--最大空闲时间,60秒内未使用则连接被丢弃。若为0则永不丢弃。默认值: 0 --> <!--最大空闲时间,60秒内未使用则连接被丢弃。若为0则永不丢弃。默认值: 0 -->