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