清除冗余公会成员信息

grimm 2025-07-27 06:32:00 +08:00
parent 12ddeb327a
commit bb55247180
2 changed files with 26 additions and 3 deletions

View File

@ -124,8 +124,8 @@ public class GuilidManager {
for(GuildInfo guildInfo : guildInfoMap.values()){
clearGuildMember(guildInfo,now);
}
LOGGER.info("清理冗余公会成员信息耗时:{}ms", System.currentTimeMillis() - now);
MongoUtil.getInstence().lastUpdate();
LOGGER.info("清理冗余公会成员信息耗时:{}ms", System.currentTimeMillis() - now);
}
/**
@ -147,6 +147,7 @@ public class GuilidManager {
*/
public static void clearGuildMember(GuildInfo guildInfo,long now){
Map<Integer, Set<Integer>> members = guildInfo.getMembers();
boolean remove = false;
for (Map.Entry<Integer, Set<Integer>> memberEntry : members.entrySet()) {
Integer position = memberEntry.getKey();
//会长不处理
@ -161,15 +162,18 @@ public class GuilidManager {
long lastLoginTime = userTmp.getOffLineTime();
//离线超过一周,踢出公会,并清除内存
if((now - lastLoginTime) >= TimeUtils.WEEK){
guildInfo.removeMember(guildInfo.getMemberType(userTmp.getId()), userTmp.getId());
remove = guildInfo.removeMemberWithoutDb(guildInfo.getMemberType(userTmp.getId()), userTmp.getId());
continue;
}
} else {
guildInfo.removeMember(guildInfo.getMemberType(uidTmp), uidTmp);
remove = guildInfo.removeMemberWithoutDb(guildInfo.getMemberType(uidTmp), uidTmp);
}
}
}
}
if(remove){
guildInfo.resetMembers();
}
}

View File

@ -110,6 +110,25 @@ public class GuildInfo extends MongoBase {
return remove;
}
public boolean removeMemberWithoutDb(int type,int uid){
boolean remove = members.get(type).remove(uid);
return remove;
}
public void resetMembers(){
int total = 0;
if(this.members != null){
for (Map.Entry<Integer, Set<Integer>> memberEntry : members.entrySet()) {
Integer position = memberEntry.getKey();
Set<Integer> value = memberEntry.getValue();
total += value.size();
updateString("members." + position,value);
}
}
this.totalMembers = total;
updateString("totalMembers",totalMembers);
}
public int getMemberType(int targetUid) {
for (Map.Entry<Integer, Set<Integer>> memberEntry : members.entrySet()) {
Integer position = memberEntry.getKey();