generated from root/miduo_server
清除冗余公会成员信息
parent
12ddeb327a
commit
bb55247180
|
@ -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();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -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();
|
||||
|
|
Loading…
Reference in New Issue