加入在线判断逻辑

lvxinran 2021-02-24 01:23:23 +08:00
parent afe20ec571
commit e4b32a7b03
2 changed files with 15 additions and 7 deletions

View File

@ -4,6 +4,7 @@ import com.ljsd.jieling.core.GlobalsDef;
import com.ljsd.jieling.db.mongo.LjsdMongoTemplate;
import com.ljsd.jieling.db.mongo.MongoUtil;
import com.ljsd.jieling.globals.Global;
import com.ljsd.jieling.logic.OnlineUserManager;
import com.ljsd.jieling.logic.dao.GuilidManager;
import com.ljsd.jieling.logic.dao.UserManager;
import com.ljsd.jieling.logic.dao.root.GuildInfo;
@ -11,6 +12,7 @@ import com.ljsd.jieling.logic.dao.root.User;
import com.ljsd.jieling.logic.mail.MailLogic;
import com.ljsd.jieling.logic.rank.RankEnum;
import com.ljsd.jieling.logic.rank.RankLogic;
import com.ljsd.jieling.network.session.ISession;
import config.SErrorCodeEerverConfig;
import util.TimeUtils;
@ -29,14 +31,16 @@ public class GuildChangeTask implements GeneralTask{
private Set<Integer> releaseGuilds;
public GuildChangeTask(Set<Integer> chairmanChangeGuilds, Set<Integer> releaseGuilds) {
private long time;
public GuildChangeTask(Set<Integer> chairmanChangeGuilds, Set<Integer> releaseGuilds,long time) {
this.chairmanChangeGuilds = chairmanChangeGuilds;
this.releaseGuilds = releaseGuilds;
this.time=time;
}
@Override
public void run() {
long now = TimeUtils.now();
long now = time;
Map<Integer, GuildInfo> guildInfoMap = GuilidManager.guildInfoMap;
if(chairmanChangeGuilds!=null&&chairmanChangeGuilds.size()>0){
Iterator<Integer> iterator = chairmanChangeGuilds.iterator();
@ -128,11 +132,12 @@ public class GuildChangeTask implements GeneralTask{
}
private void getChangeUid(long now,Set<Integer> member,CompareValue value){
Map<Integer, ISession> sessionMap = OnlineUserManager.sessionMap;
for(int oneAdmin:member){
try {
User user = UserManager.getUser(oneAdmin);
long offLineTime = user.getPlayerInfoManager().getOffLineTime();
if(now-offLineTime> TimeUnit.DAYS.toMillis(7)){
if(!sessionMap.containsKey(oneAdmin)&&now-offLineTime> TimeUnit.DAYS.toMillis(7)){
continue;
}
if(value.getUid()==0){

View File

@ -1,10 +1,12 @@
package com.ljsd.jieling.thread.task;
import com.ljsd.jieling.core.GlobalsDef;
import com.ljsd.jieling.logic.OnlineUserManager;
import com.ljsd.jieling.logic.dao.GuilidManager;
import com.ljsd.jieling.logic.dao.UserManager;
import com.ljsd.jieling.logic.dao.root.GuildInfo;
import com.ljsd.jieling.logic.dao.root.User;
import com.ljsd.jieling.network.session.ISession;
import com.ljsd.jieling.thread.ThreadManager;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@ -29,6 +31,7 @@ public class GuildCheckOfflineTask implements GeneralTask {
Map<Integer, GuildInfo> guildInfoMap = GuilidManager.guildInfoMap;
Set<Integer> chairmanChangeGuilds = new HashSet<>();
Set<Integer> releaseGuilds = new HashSet<>();
Map<Integer, ISession> sessionMap = OnlineUserManager.sessionMap;
for(Map.Entry<Integer, GuildInfo> entry:guildInfoMap.entrySet()){
LOGGER.info("{}公会已开始离线检测",entry.getKey());
GuildInfo value = entry.getValue();
@ -45,7 +48,7 @@ public class GuildCheckOfflineTask implements GeneralTask {
LOGGER.error("{}公会会长数据为空id=>{}",entry.getKey(),chairmanId);
}else{
long offLineTime = user.getPlayerInfoManager().getOffLineTime();
if(now-offLineTime> TimeUnit.DAYS.toMillis(7)){
if(!sessionMap.containsKey(chairmanId)&&now-offLineTime> TimeUnit.DAYS.toMillis(7)){
LOGGER.error("{}公会会长{}需要替换",entry.getKey(),chairmanId);
chairmanChangeGuilds.add(entry.getKey());
if(now-offLineTime<TimeUnit.DAYS.toMillis(15)){
@ -70,7 +73,7 @@ public class GuildCheckOfflineTask implements GeneralTask {
LOGGER.error("{}公会官员数据需要修理==>{}",entry.getKey(),uid);
}else{
long offLineTime = user.getPlayerInfoManager().getOffLineTime();
if(now-offLineTime<TimeUnit.DAYS.toMillis(15)){
if(sessionMap.containsKey(uid)||now-offLineTime<TimeUnit.DAYS.toMillis(15)){
isNeedRelease = false;
break;
}
@ -89,7 +92,7 @@ public class GuildCheckOfflineTask implements GeneralTask {
LOGGER.error("{}公会会员数据需要修理==>{}",entry.getKey(),uid);
}else{
long offLineTime = user.getPlayerInfoManager().getOffLineTime();
if(now-offLineTime<TimeUnit.DAYS.toMillis(15)){
if(sessionMap.containsKey(uid)||now-offLineTime<TimeUnit.DAYS.toMillis(15)){
isNeedRelease = false;
break;
}
@ -105,7 +108,7 @@ public class GuildCheckOfflineTask implements GeneralTask {
}
}
ThreadManager.commitGeneralTask(new GuildChangeTask(chairmanChangeGuilds,releaseGuilds));
ThreadManager.commitGeneralTask(new GuildChangeTask(chairmanChangeGuilds,releaseGuilds,now));
LOGGER.info("=-------公会检测结束-------");
}