退出群组时,删掉收藏的群组
This commit is contained in:
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user