diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/family/GuildLogic.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/family/GuildLogic.java index 91413a1..5c42bf9 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/family/GuildLogic.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/family/GuildLogic.java @@ -3,13 +3,6 @@ package com.ljsd.jieling.logic.family; import com.google.protobuf.GeneratedMessage; import com.ljsd.GameApplication; import com.ljsd.jieling.core.GlobalsDef; -import com.ljsd.jieling.core.VipPrivilegeType; -import com.ljsd.jieling.db.mongo.MongoKey; -import com.ljsd.jieling.logic.activity.ActivityLogic; -import com.ljsd.jieling.logic.activity.ActivityTypeEnum; -import com.ljsd.jieling.logic.mission.MissionLoigc; -import com.ljsd.jieling.reportBeans_37.ChatContentType; -import com.ljsd.jieling.reportBeans_37.Repot37EventUtil; import com.ljsd.jieling.db.mongo.MongoUtil; import com.ljsd.jieling.db.redis.RedisKey; import com.ljsd.jieling.db.redis.RedisUtil; @@ -17,13 +10,13 @@ import com.ljsd.jieling.exception.ErrorCode; import com.ljsd.jieling.exception.ErrorCodeException; import com.ljsd.jieling.globals.BIReason; import com.ljsd.jieling.globals.Global; -import com.ljsd.jieling.jbean.ActivityProgressInfo; -import com.ljsd.jieling.ktbeans.ReportEventEnum; -import com.ljsd.jieling.ktbeans.ReportUtil; import com.ljsd.jieling.logic.OnlineUserManager; -import com.ljsd.jieling.logic.activity.ActivityType; -import com.ljsd.jieling.logic.activity.IEventHandler; -import com.ljsd.jieling.logic.activity.event.*; +import com.ljsd.jieling.logic.activity.ActivityLogic; +import com.ljsd.jieling.logic.activity.ActivityTypeEnum; +import com.ljsd.jieling.logic.activity.event.CommitSheJiEvent; +import com.ljsd.jieling.logic.activity.event.GuildForceChangeEvent; +import com.ljsd.jieling.logic.activity.event.Poster; +import com.ljsd.jieling.logic.activity.event.UserMainTeamForceEvent; import com.ljsd.jieling.logic.dao.*; import com.ljsd.jieling.logic.dao.root.*; import com.ljsd.jieling.logic.mail.MailLogic; @@ -35,13 +28,16 @@ import com.ljsd.jieling.logic.rank.rankImpl.AbstractRank; import com.ljsd.jieling.logic.store.StoreLogic; import com.ljsd.jieling.network.server.ProtocolsManager; import com.ljsd.jieling.network.session.ISession; -import com.ljsd.jieling.protocols.*; +import com.ljsd.jieling.protocols.CommonProto; +import com.ljsd.jieling.protocols.Family; +import com.ljsd.jieling.protocols.MessageTypeProto; +import com.ljsd.jieling.protocols.PlayerInfoProto; +import com.ljsd.jieling.reportBeans_37.ChatContentType; import com.ljsd.jieling.util.*; import config.*; import manager.STableManager; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import org.springframework.data.redis.core.ZSetOperations; import util.StringUtil; import util.TimeUtils; @@ -50,6 +46,7 @@ import java.util.*; public class GuildLogic{ static GuildLogic guildLogicInstance = new GuildLogic(); + private static final Logger LOGGER = LoggerFactory.getLogger(GuildLogic.class); public GuildLogic() { } @@ -129,8 +126,6 @@ public class GuildLogic{ MailLogic.getInstance().sendMail(user.getId(), title, content, mailReward, nowTime, Global.MAIL_EFFECTIVE_TIME); } - private static final Logger LOGGER = LoggerFactory.getLogger(GuildLogic.class); - public static int getMemberType(int targetUid, Map> members) { for (Map.Entry> memberEntry : members.entrySet()) { Integer position = memberEntry.getKey(); @@ -155,14 +150,27 @@ public class GuildLogic{ Family.GetFamilyInfoResponse.Builder builder = Family.GetFamilyInfoResponse.newBuilder() .setFamilyBaseInfo(CBean2Proto.getFamilyBaseInfo(guildInfo)) .setFamilyUserInfo(CBean2Proto.getFamilyUserInfo(user, getMemberType(uid, guildInfo.getMembers()))).setGuildBossId(GuildFightLogic.getCurSGuildBossConfig() == null ? 0 : GuildFightLogic.getCurSGuildBossConfig().getId()); - + long now = TimeUtils.now(); + long offlineTime = TimeUtils.ONE_DAY * 3; for (Set members : guildInfo.getMembers().values()) { for (int uidOfMember : members) { - User userMember = UserManager.getUser(uidOfMember, true); - if(userMember != null) { - builder.addFamilyWalkIndicaiton(CBean2Proto.getFamilyWalkIndicaiton(userMember)); - } else { - guildInfo.removeMember(guildInfo.getMemberType(user.getId()), user.getId()); + try{ + PlayerInfoCache userTmp = UserManager.getPlayerInfoCache(uidOfMember); + if (userTmp != null) { + long lastLoginTime = userTmp.getOffLineTime(); + //离线超过3天,不发送信息 + if((now - lastLoginTime) >= offlineTime){ + continue; + } + } + User userMember = UserManager.getUser(uidOfMember, true); + if(userMember != null) { + builder.addFamilyWalkIndicaiton(CBean2Proto.getFamilyWalkIndicaiton(userMember)); + } else { + guildInfo.removeMember(guildInfo.getMemberType(user.getId()), user.getId()); + } + }catch (Exception e){ + LOGGER.error("getFamilyInfo error uid:" + uidOfMember,e); } } } @@ -601,26 +609,29 @@ public class GuildLogic{ Family.GetFamilyMemberInfoResponse.Builder builder = Family.GetFamilyMemberInfoResponse.newBuilder(); Map> members = guildInfo.getMembers(); long now = System.currentTimeMillis(); + long offlineTime = TimeUtils.ONE_DAY * 3; for (Map.Entry> memberEntry : members.entrySet()) { Integer position = memberEntry.getKey(); Set value = memberEntry.getValue(); List removes = new ArrayList<>(); for (Integer uidTmp : value) { -// LOGGER.info("uidTmp={}",uidTmp); if(uidTmp != null) { - User userTmp = UserManager.getUser(uidTmp, true); -// LOGGER.info("userTmp={}", userTmp); - if (userTmp != null) { - long lastLoginTime = userTmp.getPlayerInfoManager().getLoginTime(); - //离线超过3天,且不是会长,踢出公会,并清除内存 - if((now - lastLoginTime) >= TimeUtils.ONE_DAY * 3 && position != GlobalsDef.CHAIRMAN ){ + try{ + User userTmp = UserManager.getUser(uidTmp, true); + if (userTmp != null) { + long lastLoginTime = userTmp.getPlayerInfoManager().getLoginTime(); + //离线超过3天,且不是会长,踢出公会,并清除内存 + if((now - lastLoginTime) >= offlineTime && position != GlobalsDef.CHAIRMAN ){ + removes.add(uidTmp); + UserManager.removeUser(userTmp.getId()); + continue; + } + builder.addFamilyUserInfo(CBean2Proto.getFamilyUserInfo(userTmp, position)); + } else { removes.add(uidTmp); - UserManager.removeUser(userTmp.getId()); - continue; } - builder.addFamilyUserInfo(CBean2Proto.getFamilyUserInfo(userTmp, position)); - } else { - removes.add(uidTmp); + }catch (Exception e){ + LOGGER.error("getGuildMemberInfo error with uid " + uidTmp,e); } } }