退出群组时,删掉收藏的群组

This commit is contained in:
heavyrain lee
2019-07-15 22:36:19 +08:00
parent 8bef018911
commit 8d852eb2d1
2 changed files with 65 additions and 0 deletions
@@ -688,6 +688,43 @@ public class DatabaseStore {
});
}
void removeFavGroup(final String groupId, final List<String> memberIds) {
Connection connection = null;
PreparedStatement statement = null;
try {
connection = DBUtil.getConnection();
StringBuilder sb = new StringBuilder("update t_user_setting set _value = ?, _dt = ? where _uid in (");
for (int i = 0; i < memberIds.size(); i++) {
sb.append("?");
if (i != memberIds.size() - 1) {
sb.append(",");
}
}
sb.append(")");
sb.append(" and _scope = 6 and _key = ?");
statement = connection.prepareStatement(sb.toString());
int index = 1;
statement.setString(index++, "0");
statement.setLong(index++, System.currentTimeMillis());
for (int i = 0; i < memberIds.size(); i++) {
statement.setString(index++, memberIds.get(i));
}
statement.setString(index++, groupId);
int count = statement.executeUpdate();
LOG.info("Update rows {}", count);
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
Utility.printExecption(LOG, e);
} finally {
DBUtil.closeDB(connection, statement);
}
}
void persistUserSetting(final String userId, WFCMessage.UserSettingEntry entry) {
mScheduler.execute(()->{
Connection connection = null;
@@ -717,6 +717,8 @@ public class MemoryMessagesStore implements IMessagesStore {
long updateDt = System.currentTimeMillis();
ArrayList<WFCMessage.GroupMember> list = new ArrayList<>();
List<WFCMessage.GroupMember> allMembers = new ArrayList<>(groupMembers.get(groupId));
List<String> removedIds = new ArrayList<>();
for (WFCMessage.GroupMember member : allMembers) {
if (memberList.contains(member.getMemberId())) {
boolean removed = groupMembers.remove(groupId, member);
@@ -725,6 +727,7 @@ public class MemoryMessagesStore implements IMessagesStore {
member = member.toBuilder().setType(GroupMemberType_Removed).setUpdateDt(updateDt).build();
groupMembers.put(groupId, member);
list.add(member);
removedIds.add(member.getMemberId());
}
}
}
@@ -735,9 +738,23 @@ public class MemoryMessagesStore implements IMessagesStore {
mIMap.put(groupId, groupInfo.toBuilder().setMemberUpdateDt(updateDt).setUpdateDt(updateDt).setMemberCount(groupInfo.getMemberCount() - removeCount).build());
}
removeFavGroup(groupId, removedIds);
return ErrorCode.ERROR_CODE_SUCCESS;
}
void removeFavGroup(String groupId, List<String> memberIds) {
HazelcastInstance hzInstance = m_Server.getHazelcastInstance();
MultiMap<String, WFCMessage.UserSettingEntry> userSettingMap = hzInstance.getMultiMap(USER_SETTING);
databaseStore.removeFavGroup(groupId, memberIds);
for (String member : memberIds) {
userSettingMap.remove(member);
}
}
@Override
public ErrorCode quitGroup(String operator, String groupId) {
HazelcastInstance hzInstance = m_Server.getHazelcastInstance();
@@ -783,6 +800,8 @@ public class MemoryMessagesStore implements IMessagesStore {
if (removed) {
mIMap.put(groupId, groupInfo.toBuilder().setMemberUpdateDt(updateDt).setUpdateDt(updateDt).setMemberCount(groupInfo.getMemberCount() - 1).build());
}
removeFavGroup(groupId, Arrays.asList(operator));
return ErrorCode.ERROR_CODE_SUCCESS;
}
@@ -808,11 +827,20 @@ public class MemoryMessagesStore implements IMessagesStore {
MultiMap<String, WFCMessage.GroupMember> groupMembers = hzInstance.getMultiMap(GROUP_MEMBERS);
Collection<WFCMessage.GroupMember> members = groupMembers.get(groupId);
groupMembers.remove(groupId);
mIMap.remove(groupId);
databaseStore.removeGroupMemberFromDB(groupId);
ArrayList<String> ids = new ArrayList<>();
if (members != null) {
for (WFCMessage.GroupMember member : members) {
ids.add(member.getMemberId());
}
}
removeFavGroup(groupId, ids);
return ErrorCode.ERROR_CODE_SUCCESS;
}