From f8d7247ae38a98278ee2719ce493380a891ae323 Mon Sep 17 00:00:00 2001 From: duhui Date: Mon, 20 Feb 2023 17:36:35 +0800 Subject: [PATCH] =?UTF-8?q?=E7=81=B5=E8=84=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../CrossLingmaiSecretAreaBattleHandler.java | 11 +- .../logic/arena/CrossLingmaiLogic.java | 248 +++++++++--------- .../ljsd/jieling/logic/mail/MailLogic.java | 1 + .../ljsd/jieling/thread/task/MinuteTask.java | 7 - 4 files changed, 130 insertions(+), 137 deletions(-) diff --git a/serverlogic/src/main/java/com/ljsd/jieling/handler/crossServer/CrossLingmaiSecretAreaBattleHandler.java b/serverlogic/src/main/java/com/ljsd/jieling/handler/crossServer/CrossLingmaiSecretAreaBattleHandler.java index e025dfb7a..9f7358d52 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/handler/crossServer/CrossLingmaiSecretAreaBattleHandler.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/handler/crossServer/CrossLingmaiSecretAreaBattleHandler.java @@ -96,6 +96,7 @@ public class CrossLingmaiSecretAreaBattleHandler extends BaseHandler= mondayZeroTime + everyTime[0] * 1000L && TimeUtils.now() <= mondayZeroTime + everyTime[1] * 1000L) { + if (now >= mondayZeroTime + everyTime[0] * 1000L && now <= mondayZeroTime + everyTime[1] * 1000L) { result[0] = 2; result[1] = (int) (mondayZeroTime / 1000) + everyTime[1]; return; @@ -65,7 +63,7 @@ public class CrossLingmaiLogic { } //抢夺期 for (int[] everyTime : battleTime) { - if (TimeUtils.now() > mondayZeroTime + everyTime[0] * 1000L && TimeUtils.now() < mondayZeroTime + everyTime[1] * 1000L) { + if (now > mondayZeroTime + everyTime[0] * 1000L && now < mondayZeroTime + everyTime[1] * 1000L) { result[0] = 1; result[1] = (int) (mondayZeroTime / 1000) + everyTime[1]; return; @@ -97,9 +95,10 @@ public class CrossLingmaiLogic { public Map getLingmaiMap(int crossGroup, int group){ int nowInt = TimeUtils.nowInt(); + String key = RedisKey.CROSS_LINGMAISECRET_INFO; String groupKey = crossGroup + RedisKey.Delimiter_colon + group; int second = SSpecialConfig.getIntegerValue(SSpecialConfig.lingmai_basic_configuration); - Map mapValues = RedisUtil.getInstence().getMapValues(RedisKey.CROSS_LINGMAISECRET_INFO, groupKey, String.class, LingMaiSecretArea.class); + Map mapValues = RedisUtil.getInstence().getMapValues(key, groupKey, String.class, LingMaiSecretArea.class); Iterator> iterator = mapValues.entrySet().iterator(); while (iterator.hasNext()){ Map.Entry next = iterator.next(); @@ -108,7 +107,7 @@ public class CrossLingmaiLogic { if (time > second){ iterator.remove(); sendNormalMail(lingMaiSecretArea.getUid(),lingMaiSecretArea); - RedisUtil.getInstence().removeMapEntrys(RedisKey.CROSS_LINGMAISECRET_INFO, groupKey, String.valueOf(lingMaiSecretArea.getId())); + RedisUtil.getInstence().removeMapEntrys(key, groupKey, String.valueOf(lingMaiSecretArea.getId())); } } return mapValues; @@ -154,25 +153,25 @@ public class CrossLingmaiLogic { LOGGER.info("跨服灵脉,零点重置, key:{} 跨服分组 ={},未获取到锁",lockKey, crossGroup); return; } - + String key = RedisKey.CROSS_LINGMAISECRET_INFO; // 清理组别1 String groupKey1 = crossGroup + RedisKey.Delimiter_colon + 1; - Map mapValues = redisUtil.getMapValues(RedisKey.CROSS_LINGMAISECRET_INFO, groupKey1, String.class, LingMaiSecretArea.class); + Map mapValues = redisUtil.getMapValues(key, groupKey1, String.class, LingMaiSecretArea.class); for (LingMaiSecretArea value : mapValues.values()) { sendNormalMail(value.getUid(),value); } - String key1 = redisUtil.getKey(RedisKey.CROSS_LINGMAISECRET_INFO, groupKey1); + String key1 = redisUtil.getKey(key, groupKey1); redisUtil.del(key1); LOGGER.info("灵脉初始化,key:{}, 长度:{}",key1,mapValues.size()); mapValues.clear(); // 清理组别2 String groupKey2 = crossGroup + RedisKey.Delimiter_colon + 2; - Map mapValue2 = redisUtil.getMapValues(RedisKey.CROSS_LINGMAISECRET_INFO, groupKey1, String.class, LingMaiSecretArea.class); + Map mapValue2 = redisUtil.getMapValues(key, groupKey1, String.class, LingMaiSecretArea.class); for (LingMaiSecretArea value : mapValue2.values()) { sendNormalMail(value.getUid(),value); } - String key2 = redisUtil.getKey(RedisKey.CROSS_LINGMAISECRET_INFO, groupKey2); + String key2 = redisUtil.getKey(key, groupKey2); redisUtil.del(key2); LOGGER.info("灵脉初始化,key:{}, 长度:{}",key2,mapValue2.size()); mapValue2.clear(); @@ -181,111 +180,110 @@ public class CrossLingmaiLogic { redisUtil.del(lockKey); } - - public static LingMaiSecretArea getLingaMaiData(int id, int uid,int crossGroup,int group) { - //排行榜上有数据 灵脉里没数据 说明被打下去了 - AbstractRank rank = RankContext.getRankEnum(RankEnum.CROSS_LINGMAI_RANK_PERSON.getType()); - double disappearScore = rank.getScoreById(uid, crossGroup + RedisKey.Delimiter_colon + group); - LingMaiSecretArea lingMaiSecretArea = new LingMaiSecretArea(); - lingMaiSecretArea.setId(id); - lingMaiSecretArea.setUid(uid); - String serverName = CrossServiceLogic.simplifyServerName(GameApplication.serverId); - lingMaiSecretArea.setServerName(serverName); - //lingMaiSecretArea.setName(user.getPlayerInfoManager().getNickName()); - lingMaiSecretArea.setGetAwardTimeOrOccupyTime(TimeUtils.nowInt()); - lingMaiSecretArea.setBeginOccupyTime(TimeUtils.nowInt()); - if(disappearScore>0){ - Map lingMaiMap = RedisUtil.getInstence().getMapValues(RedisKey.CROSS_LINGMAISECRET_INFO, crossGroup + RedisKey.Delimiter_colon + group, String.class, LingMaiSecretArea.class); - if(lingMaiMap.values().stream().noneMatch(n->n.getUid()==uid)){ - lingMaiSecretArea.setScore1((int) disappearScore); - } - } - return lingMaiSecretArea; - } - - /** - * 占领奖励 每十分钟发放一次 - */ - public void sendOccypyReward() { - //周二 四 六 日开放 9点-21点 - int crossGroup = GlobleSystemLogic.getInstence().getCrossGroup(); - if (crossGroup == -1) { - return; - } - Map lingMaiMap1 = RedisUtil.getInstence().getMapValues(RedisKey.CROSS_LINGMAISECRET_INFO, crossGroup + RedisKey.Delimiter_colon + 1, String.class, LingMaiSecretArea.class); - Map lingMaiMap2 = RedisUtil.getInstence().getMapValues(RedisKey.CROSS_LINGMAISECRET_INFO, crossGroup + RedisKey.Delimiter_colon + 2, String.class, LingMaiSecretArea.class); - updateLingmaiData(lingMaiMap1, crossGroup, 1); - updateLingmaiData(lingMaiMap2, crossGroup, 2); - } - - - public static void updateLingmaiData(Map lingMaiMap, int crossGroup, int group) { - int nowTime = TimeUtils.nowInt(); - String groupkey = crossGroup + RedisKey.Delimiter_colon + group; - for (Map.Entry map : lingMaiMap.entrySet()) { - try { - User user = UserManager.getUser(map.getValue().getUid()); - if (user != null) { - SLodeConfig config = SLodeConfig.lodeConfig.get(map.getValue().getId()); - if (config != null) { - int occupyTime = (int) map.getValue().getGetAwardTimeOrOccupyTime(); - //分钟 - int minute = (nowTime - occupyTime) / 60; - //秒 - int second = Math.min((nowTime - occupyTime) % 60, 60); - //difVal =1 ; - LOGGER.error("玩家" + map.getValue().getUid() + "原有秒:"+map.getValue().getOccupyTime()+" 获得秒:" + (minute*60+second)); - map.getValue().setOccupyTime(map.getValue().getOccupyTime() + minute*60+second); - map.getValue().setGetAwardTimeOrOccupyTime(nowTime); - - RedisUtil.getInstence().putMapEntry(RedisKey.CROSS_LINGMAISECRET_INFO, groupkey, map.getKey(), map.getValue()); - AbstractRank rank = RankContext.getRankEnum(RankEnum.CROSS_LINGMAI_RANK_PERSON.getType()); - LOGGER.error("minute:"+map.getValue().getOccupyTime()+" per:"+(config.getRewardList()[0][1]/60)); - long score = (long)map.getValue().getOccupyTime() * config.getRewardList()[0][1]/60 + map.getValue().getScore1(); - double test = rank.getScoreById(user.getId(), groupkey); - LOGGER.error("之前是:" + test + "之后是:" + score); - rank.addRank(user.getId(), groupkey, score); - } - } - } catch (Exception e) { - e.printStackTrace(); - } - } - } - - /** - * 结算奖励 - */ - public void sendMailReward() { - int crossGroup = GlobleSystemLogic.getInstence().getCrossGroup(); - if (crossGroup == -1) { - return; - } - String rkey1 = RedisUtil.getInstence().getKey(RedisKey.CROSS_LINGMAI_RANK_PERSON, crossGroup + RedisKey.Delimiter_colon + "1"); - String rkey2 = RedisUtil.getInstence().getKey(RedisKey.CROSS_LINGMAI_RANK_PERSON, crossGroup + RedisKey.Delimiter_colon + "2"); - Set arenaRank1 = RedisUtil.getInstence().getReverseZset(rkey1, 0, -1); - Set arenaRank2 = RedisUtil.getInstence().getReverseZset(rkey2, 0, -1); - sendMailReward(arenaRank1); - sendMailReward(arenaRank2); - } - - public void sendMailReward(Set arenaRank) { - List arenaRankfilt = arenaRank.stream().mapToInt(Integer::parseInt).boxed().collect(Collectors.toList()); - String title = SErrorCodeEerverConfig.getI18NMessage("LingmaiReward_mail_title"); - for (int i = 0; i < arenaRankfilt.size(); i++) { - SLodeRankReward config = SLodeRankReward.getIdByScore(i + 1); - if (config == null){ - continue; - } - try { - String content = SErrorCodeEerverConfig.getI18NMessageNeedConvert("LingmaiReward_mail_txt", new Object[]{(i + 1)}, new int[0], "#"); - MailLogic.getInstance().sendMail(arenaRankfilt.get(i), title, content, - StringUtil.parseArrayToString(config.getSeasonReward()), TimeUtils.nowInt(), Global.MAIL_EFFECTIVE_TIME); - } catch (Exception e) { - e.printStackTrace(); - } - } - } +// public static LingMaiSecretArea getLingaMaiData(int id, int uid,int crossGroup,int group) { +// //排行榜上有数据 灵脉里没数据 说明被打下去了 +// AbstractRank rank = RankContext.getRankEnum(RankEnum.CROSS_LINGMAI_RANK_PERSON.getType()); +// double disappearScore = rank.getScoreById(uid, crossGroup + RedisKey.Delimiter_colon + group); +// LingMaiSecretArea lingMaiSecretArea = new LingMaiSecretArea(); +// lingMaiSecretArea.setId(id); +// lingMaiSecretArea.setUid(uid); +// String serverName = CrossServiceLogic.simplifyServerName(GameApplication.serverId); +// lingMaiSecretArea.setServerName(serverName); +// //lingMaiSecretArea.setName(user.getPlayerInfoManager().getNickName()); +// lingMaiSecretArea.setGetAwardTimeOrOccupyTime(TimeUtils.nowInt()); +// lingMaiSecretArea.setBeginOccupyTime(TimeUtils.nowInt()); +// if(disappearScore>0){ +// Map lingMaiMap = RedisUtil.getInstence().getMapValues(RedisKey.CROSS_LINGMAISECRET_INFO, crossGroup + RedisKey.Delimiter_colon + group, String.class, LingMaiSecretArea.class); +// if(lingMaiMap.values().stream().noneMatch(n->n.getUid()==uid)){ +// lingMaiSecretArea.setScore1((int) disappearScore); +// } +// } +// return lingMaiSecretArea; +// } +// +// /** +// * 占领奖励 每十分钟发放一次 +// */ +// public void sendOccypyReward() { +// //周二 四 六 日开放 9点-21点 +// int crossGroup = GlobleSystemLogic.getInstence().getCrossGroup(); +// if (crossGroup == -1) { +// return; +// } +// Map lingMaiMap1 = RedisUtil.getInstence().getMapValues(RedisKey.CROSS_LINGMAISECRET_INFO, crossGroup + RedisKey.Delimiter_colon + 1, String.class, LingMaiSecretArea.class); +// Map lingMaiMap2 = RedisUtil.getInstence().getMapValues(RedisKey.CROSS_LINGMAISECRET_INFO, crossGroup + RedisKey.Delimiter_colon + 2, String.class, LingMaiSecretArea.class); +// updateLingmaiData(lingMaiMap1, crossGroup, 1); +// updateLingmaiData(lingMaiMap2, crossGroup, 2); +// } +// +// +// public static void updateLingmaiData(Map lingMaiMap, int crossGroup, int group) { +// int nowTime = TimeUtils.nowInt(); +// String groupkey = crossGroup + RedisKey.Delimiter_colon + group; +// for (Map.Entry map : lingMaiMap.entrySet()) { +// try { +// User user = UserManager.getUser(map.getValue().getUid()); +// if (user != null) { +// SLodeConfig config = SLodeConfig.lodeConfig.get(map.getValue().getId()); +// if (config != null) { +// int occupyTime = (int) map.getValue().getGetAwardTimeOrOccupyTime(); +// //分钟 +// int minute = (nowTime - occupyTime) / 60; +// //秒 +// int second = Math.min((nowTime - occupyTime) % 60, 60); +// //difVal =1 ; +// LOGGER.error("玩家" + map.getValue().getUid() + "原有秒:"+map.getValue().getOccupyTime()+" 获得秒:" + (minute*60+second)); +// map.getValue().setOccupyTime(map.getValue().getOccupyTime() + minute*60+second); +// map.getValue().setGetAwardTimeOrOccupyTime(nowTime); +// +// RedisUtil.getInstence().putMapEntry(RedisKey.CROSS_LINGMAISECRET_INFO, groupkey, map.getKey(), map.getValue()); +// AbstractRank rank = RankContext.getRankEnum(RankEnum.CROSS_LINGMAI_RANK_PERSON.getType()); +// LOGGER.error("minute:"+map.getValue().getOccupyTime()+" per:"+(config.getRewardList()[0][1]/60)); +// long score = (long)map.getValue().getOccupyTime() * config.getRewardList()[0][1]/60 + map.getValue().getScore1(); +// double test = rank.getScoreById(user.getId(), groupkey); +// LOGGER.error("之前是:" + test + "之后是:" + score); +// rank.addRank(user.getId(), groupkey, score); +// } +// } +// } catch (Exception e) { +// e.printStackTrace(); +// } +// } +// } +// +// /** +// * 结算奖励 +// */ +// public void sendMailReward() { +// int crossGroup = GlobleSystemLogic.getInstence().getCrossGroup(); +// if (crossGroup == -1) { +// return; +// } +// String rkey1 = RedisUtil.getInstence().getKey(RedisKey.CROSS_LINGMAI_RANK_PERSON, crossGroup + RedisKey.Delimiter_colon + "1"); +// String rkey2 = RedisUtil.getInstence().getKey(RedisKey.CROSS_LINGMAI_RANK_PERSON, crossGroup + RedisKey.Delimiter_colon + "2"); +// Set arenaRank1 = RedisUtil.getInstence().getReverseZset(rkey1, 0, -1); +// Set arenaRank2 = RedisUtil.getInstence().getReverseZset(rkey2, 0, -1); +// sendMailReward(arenaRank1); +// sendMailReward(arenaRank2); +// } +// +// public void sendMailReward(Set arenaRank) { +// List arenaRankfilt = arenaRank.stream().mapToInt(Integer::parseInt).boxed().collect(Collectors.toList()); +// String title = SErrorCodeEerverConfig.getI18NMessage("LingmaiReward_mail_title"); +// for (int i = 0; i < arenaRankfilt.size(); i++) { +// SLodeRankReward config = SLodeRankReward.getIdByScore(i + 1); +// if (config == null){ +// continue; +// } +// try { +// String content = SErrorCodeEerverConfig.getI18NMessageNeedConvert("LingmaiReward_mail_txt", new Object[]{(i + 1)}, new int[0], "#"); +// MailLogic.getInstance().sendMail(arenaRankfilt.get(i), title, content, +// StringUtil.parseArrayToString(config.getSeasonReward()), TimeUtils.nowInt(), Global.MAIL_EFFECTIVE_TIME); +// } catch (Exception e) { +// e.printStackTrace(); +// } +// } +// } public static class Instance { public final static CrossLingmaiLogic instance = new CrossLingmaiLogic(); 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 16ba772e8..836645c6e 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 @@ -54,6 +54,7 @@ public class MailLogic { for (Mail mail : mailMap.values()) { sendMail(mail); } + RedisUtil.getInstence().del(key); } /** diff --git a/serverlogic/src/main/java/com/ljsd/jieling/thread/task/MinuteTask.java b/serverlogic/src/main/java/com/ljsd/jieling/thread/task/MinuteTask.java index 6756b7044..c1b3f8009 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/thread/task/MinuteTask.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/thread/task/MinuteTask.java @@ -245,13 +245,6 @@ public class MinuteTask extends Thread { FourChallengeLogic.getInstance().check(); // 助战 HelpHeroLogic.getInstance().zeroClearRedisHelp(); - - //灵脉秘境占位数据重置 - int crossGroup = GlobleSystemLogic.getInstence().getCrossGroup(); - if (crossGroup != -1){ - RedisUtil.getInstence().remove(RedisUtil.getInstence().getKey(RedisKey.CROSS_LINGMAISECRET_INFO,crossGroup + RedisKey.Delimiter_colon + 1,true)); - RedisUtil.getInstence().remove(RedisUtil.getInstence().getKey(RedisKey.CROSS_LINGMAISECRET_INFO,crossGroup + RedisKey.Delimiter_colon + 2,true)); - } //探索排行每日重置 /*String key = RedisUtil.getInstence().getKey(RedisKey.EXPLORE_RANK,"",true); Set exploreRank = RedisUtil.getInstence().getReverseZset(key,0,-1);