获取工会成员信息报错时加入容错,继续查询下一个工会成员

main
grimm 2025-08-11 12:04:37 +08:00
parent cd9925a2e0
commit ad261c8d6c
1 changed files with 46 additions and 35 deletions

View File

@ -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<Integer, Set<Integer>> members) {
for (Map.Entry<Integer, Set<Integer>> 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<Integer> 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<Integer, Set<Integer>> members = guildInfo.getMembers();
long now = System.currentTimeMillis();
long offlineTime = TimeUtils.ONE_DAY * 3;
for (Map.Entry<Integer, Set<Integer>> memberEntry : members.entrySet()) {
Integer position = memberEntry.getKey();
Set<Integer> value = memberEntry.getValue();
List<Integer> 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);
}
}
}