diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/championship/ChampionshipLogic.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/championship/ChampionshipLogic.java index 42a371422..f06edea37 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/championship/ChampionshipLogic.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/championship/ChampionshipLogic.java @@ -193,8 +193,10 @@ public class ChampionshipLogic { // } // } - if(schedule==2&&(ChampionshipLogic.fightTime!=3)){ - return; + if(schedule==2){ + if(fightTime!=0||realTimes!=1){ + if(ChampionshipLogic.fightTime!=3) return; + } } //胜利者积分排名 @@ -366,24 +368,29 @@ public class ChampionshipLogic { Map robotConfigMap = STableManager.getConfig(SArenaRobotConfig.class); int nowTime = (int) (TimeUtils.now() / 1000); Set joinUids = new HashSet<>(128); - for (ZSetOperations.TypedTuple item : arenaRankInfo) { - String uidStr = item.getValue(); - int uid = Integer.parseInt(uidStr); - if (robotConfigMap.containsKey(uid)) { + try { + for (ZSetOperations.TypedTuple item : arenaRankInfo) { + String uidStr = item.getValue(); + int uid = Integer.parseInt(uidStr); + if (robotConfigMap.containsKey(uid)) { + rank++; + continue; + } + joinUids.add(uid); + User user = UserManager.getUser(uid); + SChampionshipReward sChampionshipReward = rewardsMap.get(rank); + if (user.getArenaManager().getTopMaxRank() == 0 || user.getArenaManager().getTopMaxRank() > rank) { + user.getArenaManager().setTopMaxRank(rank); + } rank++; - continue; + String title = SErrorCodeEerverConfig.getI18NMessage("champion_reward_title"); + String content = SErrorCodeEerverConfig.getI18NMessage("champion_reward_txt", new Object[]{sChampionshipReward.getTitleDesc()}); + MailLogic.getInstance().sendMail(user.getId(), title, content, ItemUtil.getMailReward(sChampionshipReward.getSeasonReward()), nowTime, Global.MAIL_EFFECTIVE_TIME); } - joinUids.add(uid); - User user = UserManager.getUser(uid); - SChampionshipReward sChampionshipReward = rewardsMap.get(rank); - if (user.getArenaManager().getTopMaxRank() == 0 || user.getArenaManager().getTopMaxRank() > rank) { - user.getArenaManager().setTopMaxRank(rank); - } - rank++; - String title = SErrorCodeEerverConfig.getI18NMessage("champion_reward_title"); - String content = SErrorCodeEerverConfig.getI18NMessage("champion_reward_txt", new Object[]{sChampionshipReward.getTitleDesc()}); - MailLogic.getInstance().sendMail(user.getId(), title, content, ItemUtil.getMailReward(sChampionshipReward.getSeasonReward()), nowTime, Global.MAIL_EFFECTIVE_TIME); + }catch (Exception e){ + System.out.println("Exception e = "+"size"+ arenaRankInfo.size()+ e.toString()); } + MongoUtil.getLjsdMongoTemplate().lastUpdate(); SChampionshipSetting sChampionshipSetting = STableManager.getFigureConfig(CommonStaticConfig.class).getsChampionshipSetting(); int arenaItemId = sChampionshipSetting.getArenaItem()[0]; @@ -1162,6 +1169,12 @@ public class ChampionshipLogic { int duration = sChampionshipSetting.getGuessTime() + sChampionshipSetting.getBattleTime(); //fix 只有竞猜和战斗 int progressState = getProgress((int) ((now - startTime) / 1000 % duration + 1)); //阶段 long round = (now - startTime) / 1000 / duration + 1;//轮数 + if(round>30){ + progress=-2; + //sendAllProgressUpdate(); + return; + } + roundTimes = (int) round; long diff = round - (sChampionshipSetting.getTrialsGroup() - 1); int progressTmp; @@ -1226,10 +1239,6 @@ public class ChampionshipLogic { } progress = progressTmp; scoreToRedis(); - if(fightTime==0){ -// String key = RedisUtil.getInstence().getKey(RedisKey.CHAMPION_ARENA_RECORD_THREE, ""); -// RedisUtil.getInstence().del(key, RedisUtil.getInstence().getKey(RedisKey.CHAMPION_ARENA_RECORD_THREE, "")); - } fightTime++; //准备阶段 selectToBattle(); diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/UserManager.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/UserManager.java index 0bb0f09a4..4de410979 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/UserManager.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/UserManager.java @@ -52,18 +52,18 @@ public class UserManager { //离线清除逻辑 public static void checkOffline(){ try { - Set collect = userMap.entrySet().stream().filter(integerUserEntry -> !OnlineUserManager.checkUidOnline(integerUserEntry.getKey())).map(Map.Entry::getValue).collect(Collectors.toSet()); - long l = System.currentTimeMillis(); - collect.forEach(integerUserEntry -> { - long offLineTime = integerUserEntry.getPlayerInfoManager().getOffLineTime(); - if(offLineTime7*60*1000&& userMapPutTime.getOrDefault(integerUserEntry.getId(),0L)>7*60*100){ - userMap.remove(integerUserEntry.getId()); - userMapPutTime.remove(integerUserEntry.getId()); - } - }); +// Set collect = userMap.entrySet().stream().filter(integerUserEntry -> !OnlineUserManager.checkUidOnline(integerUserEntry.getKey())).map(Map.Entry::getValue).collect(Collectors.toSet()); +// long l = System.currentTimeMillis(); +// collect.forEach(integerUserEntry -> { +// long offLineTime = integerUserEntry.getPlayerInfoManager().getOffLineTime(); +// if(offLineTime12*60*60*1000&& userMapPutTime.getOrDefault(integerUserEntry.getId(),0L)>12*60*60*1000){ +// userMap.remove(integerUserEntry.getId()); +// userMapPutTime.remove(integerUserEntry.getId()); +// } +// }); }catch (Exception e){ LOGGER.error(e.toString()); } @@ -175,8 +175,13 @@ public class UserManager { } public static User getUserInMem(int uid) { - User user = userMap.get(uid); - return user; + // User user = userMap.get(uid); + try { + return getUser(uid,true); + }catch (Exception e){ + LOGGER.error("UserManager::getUser null exception"+uid); + } + return null; } public static void removeUser(int uid) { userMap.remove(uid); diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/mail/MailLogic.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/mail/MailLogic.java index f7ee85090..b89ea39a7 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/mail/MailLogic.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/mail/MailLogic.java @@ -297,11 +297,15 @@ public class MailLogic { } //发送邮件 public void sendMail(int uid, String title, String content, String reward, int sendTime, int mailEffectiveTime) throws Exception { - User user = UserManager.getUser(uid); - Mail mail = new Mail(uid,title,content,reward,sendTime, mailEffectiveTime,"system",Global.MAIL_TYPE_SYS); - user.getMailManager().addMail(mail); - LOGGER.info("sendMail==>uid={},title={},reward:{}",uid,title,reward); - MessageUtil.sendRedIndication(uid, GlobalsDef.MAIL_RED_TYPE); + try { + User user = UserManager.getUser(uid); + Mail mail = new Mail(uid,title,content,reward,sendTime, mailEffectiveTime,"system",Global.MAIL_TYPE_SYS); + user.getMailManager().addMail(mail); + LOGGER.info("sendMail==>uid={},title={},reward:{}",uid,title,reward); + MessageUtil.sendRedIndication(uid, GlobalsDef.MAIL_RED_TYPE); + }catch (Exception e){ + LOGGER.error(e.toString()+"sendMail==>uid={},title={},reward:{}",uid,title,reward); + } } /** *每分钟检测是否有需要发的邮件