From 544eb875004209dc41ec4d5c84739df0caad2836 Mon Sep 17 00:00:00 2001 From: duhui Date: Mon, 27 Sep 2021 10:03:19 +0800 Subject: [PATCH 1/3] =?UTF-8?q?=E4=B8=83=E7=95=8C=EF=BC=8C=E8=B7=A8?= =?UTF-8?q?=E5=8F=91=E6=8E=92=E8=A1=8C=E6=A6=9C=EF=BC=8C=E7=8E=A9=E5=AE=B6?= =?UTF-8?q?=E5=8F=96=E5=87=BA=E4=B8=8D=E6=96=B9=E7=BC=93=E5=AD=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/ljsd/jieling/logic/arena/ArenaLogic.java | 2 +- .../com/ljsd/jieling/logic/dao/UserManager.java | 15 +++++++++++++++ .../com/ljsd/jieling/logic/item/ItemLogic.java | 4 ++-- .../com/ljsd/jieling/logic/mail/MailLogic.java | 2 +- .../jieling/logic/rank/rankImpl/AbstractRank.java | 2 +- .../jieling/logic/sevenworld/SevenWorldLogic.java | 2 +- 6 files changed, 21 insertions(+), 6 deletions(-) diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/arena/ArenaLogic.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/arena/ArenaLogic.java index 89cefcbcc..e38baeaef 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/arena/ArenaLogic.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/arena/ArenaLogic.java @@ -581,7 +581,7 @@ public class ArenaLogic { for(ZSetOperations.TypedTuple item : arenaRankInfo){ String value = item.getValue(); int uid = Integer.parseInt(value); - User user = UserManager.getUser(uid, true); + User user = UserManager.getUserNotCache(uid); if (null == user) { continue; } 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 43c1b76ad..522485bfe 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 @@ -203,6 +203,21 @@ public class UserManager { } return null; } + + public static User getUserNotCache(int uid) { + // User user = userMap.get(uid); + try { + User user = userMap.get(uid); + if (user != null) { + return user; + } + return MongoUtil.getInstence().getMyMongoTemplate().findById(User.getCollectionName(), uid, User.class); + }catch (Exception e){ + LOGGER.error("UserManager::getUser:{} null, exception:{}",uid,e.getMessage()); + } + return null; + } + public static void removeUser(int uid) { userMap.remove(uid); } diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/item/ItemLogic.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/item/ItemLogic.java index 60c64935a..e6924a311 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/item/ItemLogic.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/item/ItemLogic.java @@ -1014,10 +1014,10 @@ public class ItemLogic { */ public void functionEndClearItem(int uid,int type,int reason){ try { - User user = UserManager.getUser(uid); + User user = UserManager.getUserNotCache(uid); // 根据功能类型获取需要清理的道具列表 List itemList = SItem.getItemMapByRecycle().get(type); - if (itemList == null || itemList.isEmpty()){ + if (user == null || itemList == null || itemList.isEmpty()){ return; } for (SItem item:itemList){ 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 e63e1aff5..6a7fb146c 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 @@ -344,7 +344,7 @@ public class MailLogic { } //发送邮件 public void sendMail(int uid, String title, String content, String reward, int sendTime, int mailEffectiveTime){ - User user = UserManager.getUserInMem(uid); + User user = UserManager.getUserNotCache(uid); if (user != null){ Mail mail = new Mail(uid,title,content,reward,sendTime, mailEffectiveTime,"system",Global.MAIL_TYPE_SYS); user.getMailManager().addMail(mail); diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/rank/rankImpl/AbstractRank.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/rank/rankImpl/AbstractRank.java index 9d650df07..e807582ba 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/rank/rankImpl/AbstractRank.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/rank/rankImpl/AbstractRank.java @@ -95,7 +95,7 @@ public abstract class AbstractRank implements IRank { */ public void crossUserCache(int uid){ try { - User user = UserManager.getUser(uid); + User user = UserManager.getUserNotCache(uid); if (user == null){ return; } diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/sevenworld/SevenWorldLogic.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/sevenworld/SevenWorldLogic.java index d848e6105..685f1bd5d 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/sevenworld/SevenWorldLogic.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/sevenworld/SevenWorldLogic.java @@ -439,7 +439,7 @@ public class SevenWorldLogic { // 排名 int rank = 1; for (ZSetOperations.TypedTuple tuple : range) { - User user = UserManager.getUserInMem(Integer.parseInt(tuple.getValue())); + User user = UserManager.getUserNotCache(Integer.parseInt(tuple.getValue())); if (user == null){ return; } From 36e07bc4382f0055cf1c33eb0c44c7e8e50f2d95 Mon Sep 17 00:00:00 2001 From: duhui Date: Mon, 27 Sep 2021 10:12:52 +0800 Subject: [PATCH 2/3] =?UTF-8?q?=E4=B8=83=E7=95=8C=EF=BC=8C=E8=B7=A8?= =?UTF-8?q?=E6=9C=8D=E6=95=B0=E6=8D=AE=E6=9B=B4=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../logic/activity/crossService/CrossServiceLogic.java | 2 +- .../com/ljsd/jieling/logic/family/CrossDeathPathLogic.java | 5 ++++- .../src/main/java/com/ljsd/jieling/logic/hero/HeroLogic.java | 5 ----- .../com/ljsd/jieling/logic/sevenworld/SevenWorldLogic.java | 3 +++ 4 files changed, 8 insertions(+), 7 deletions(-) diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/crossService/CrossServiceLogic.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/crossService/CrossServiceLogic.java index 95548f324..de3e4113d 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/crossService/CrossServiceLogic.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/crossService/CrossServiceLogic.java @@ -90,7 +90,6 @@ public class CrossServiceLogic { * @throws Exception */ public void dispose(User user) throws Exception{ - ArenaOfUser query = query(user.getId()); ArenaOfUser arenaOfUser = buildArenaOfUser(user); countForce(arenaOfUser); @@ -101,6 +100,7 @@ public class CrossServiceLogic { update(arenaOfUser); } } + public ArenaOfUser buildArenaOfUser(User user){ ArenaOfUser arenaOfUser = new ArenaOfUser(); arenaOfUser.setId(user.getId()); diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/family/CrossDeathPathLogic.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/family/CrossDeathPathLogic.java index 0d2b9912c..79a018474 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/family/CrossDeathPathLogic.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/family/CrossDeathPathLogic.java @@ -124,7 +124,10 @@ public class CrossDeathPathLogic { // 结算标识设置 redisUtil.hset(RedisKey.DEATH_PATH_EVERY_OVER_HASH,String.valueOf(GameApplication.serverId),1); - User user = UserManager.getUser(uid); + User user = UserManager.getUserNotCache(uid); + if (user == null){ + return; + } CrossServiceLogic.getInstance().dispose(user); } diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/hero/HeroLogic.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/hero/HeroLogic.java index b2692e9f5..1c3b30bf7 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/hero/HeroLogic.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/hero/HeroLogic.java @@ -1193,11 +1193,6 @@ public class HeroLogic{ RedisUtil.getInstence().zsetAddOne(key, String.valueOf(user.getId()), teamForce); } - if (teamId == GlobalsDef.FORMATION_NORMAL) { - Poster.getPoster().dispatchEvent(new UserMainTeamForceEvent(iSession.getUid())); - CrossServiceLogic.getInstance().dispose(user); - } - // 跨服 更新编队信息 if (teamId == GlobalsDef.WORLD_TEAM_ARENA_DEFENSE) { CrossServiceLogic.getInstance().dispose(user); diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/sevenworld/SevenWorldLogic.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/sevenworld/SevenWorldLogic.java index 685f1bd5d..64cc8e574 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/sevenworld/SevenWorldLogic.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/sevenworld/SevenWorldLogic.java @@ -11,6 +11,7 @@ import com.ljsd.jieling.exception.ErrorCodeException; import com.ljsd.jieling.globals.BIReason; import com.ljsd.jieling.globals.Global; import com.ljsd.jieling.logic.GlobleSystemLogic; +import com.ljsd.jieling.logic.activity.crossService.CrossServiceLogic; import com.ljsd.jieling.logic.activity.event.Poster; import com.ljsd.jieling.logic.activity.event.SevenWorldIntegralEvent; import com.ljsd.jieling.logic.dao.Hero; @@ -269,6 +270,8 @@ public class SevenWorldLogic { // 层数 user.getPlayerInfoManager().putSevenWorldOpenTier(week,tierId); } + // 跨服数据保存 + CrossServiceLogic.getInstance().dispose(user); } // 战斗数据 builder.setResult(fightResult.getResult()); From a7b964ffcc3771cd5365c3e43589fdcf0355147b Mon Sep 17 00:00:00 2001 From: duhui Date: Sun, 10 Oct 2021 23:34:35 +0800 Subject: [PATCH 3/3] =?UTF-8?q?=E6=8E=92=E8=A1=8C=E6=A6=9C=E9=97=AE?= =?UTF-8?q?=E9=A2=98=EF=BC=8C=E5=92=8C=E5=8F=91=E5=A5=96=E6=97=B6=E9=97=B4?= =?UTF-8?q?=E6=97=A5=E5=BF=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- gamecommon/src/main/java/util/TimeUtils.java | 9 +-- .../logic/rank/rankImpl/CrossRank.java | 3 +- .../logic/sevenworld/SevenWorldLogic.java | 63 ++++++++++--------- 3 files changed, 37 insertions(+), 38 deletions(-) diff --git a/gamecommon/src/main/java/util/TimeUtils.java b/gamecommon/src/main/java/util/TimeUtils.java index f9a71bfa0..cb6c6b9e1 100644 --- a/gamecommon/src/main/java/util/TimeUtils.java +++ b/gamecommon/src/main/java/util/TimeUtils.java @@ -1272,8 +1272,7 @@ public class TimeUtils { public static int getHourOfDay() { Calendar calendar = Calendar.getInstance(); calendar.setTimeInMillis(System.currentTimeMillis()); - int hour = calendar.get(Calendar.HOUR_OF_DAY); - return hour; + return calendar.get(Calendar.HOUR_OF_DAY); } /** * 获得当前时间是今天的几点(整点) @@ -1283,8 +1282,7 @@ public class TimeUtils { public static int getMiunte() { Calendar calendar = Calendar.getInstance(); calendar.setTimeInMillis(System.currentTimeMillis()); - int minute = calendar.get(Calendar.MINUTE); - return minute; + return calendar.get(Calendar.MINUTE); } /** * 获得当前时间是今天的几点(整点) @@ -1294,8 +1292,7 @@ public class TimeUtils { public static int getMiunte(long time) { Calendar calendar = Calendar.getInstance(); calendar.setTimeInMillis(time); - int minute = calendar.get(Calendar.MINUTE); - return minute; + return calendar.get(Calendar.MINUTE); } // /** diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/rank/rankImpl/CrossRank.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/rank/rankImpl/CrossRank.java index 34f9798f0..eb11b2187 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/rank/rankImpl/CrossRank.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/rank/rankImpl/CrossRank.java @@ -1,6 +1,7 @@ package com.ljsd.jieling.logic.rank.rankImpl; import com.ljsd.jieling.db.redis.RedisUtil; +import util.TimeUtils; /** * @author hj @@ -24,7 +25,7 @@ public class CrossRank extends AbstractRank { @Override public double getScore(double... data) { - return data[0]; + return data[0]+ TimeUtils.getDoubleTime(); } } diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/sevenworld/SevenWorldLogic.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/sevenworld/SevenWorldLogic.java index 64cc8e574..25875e4f8 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/sevenworld/SevenWorldLogic.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/sevenworld/SevenWorldLogic.java @@ -433,39 +433,38 @@ public class SevenWorldLogic { * 结束发送奖励 */ public void sendRankReward(){ - if (!isTime()){ - return; - } - // 排行榜 - String crossRedisKey = RankContext.getRankEnum(RankEnum.CROSS_SEVEN_WORLD_RANK.getType()).getCrossRedisKey(); - Set> range = RedisUtil.getInstence().getZsetreverseRangeWithScores(crossRedisKey,"",0,-1,false); - // 排名 - int rank = 1; - for (ZSetOperations.TypedTuple tuple : range) { - User user = UserManager.getUserNotCache(Integer.parseInt(tuple.getValue())); - if (user == null){ - return; - } - String title = SErrorCodeEerverConfig.getI18NMessage("Qijie_mail_title"); - String content = SErrorCodeEerverConfig.getI18NMessageNeedConvert("Qijie_mail_txt", new Object[]{rank},new int[0],"#"); - // 排行奖励 - Map config = STableManager.getConfig(SQijieRanking.class); - for (SQijieRanking value : config.values()) { - // 排名区间 - if (rank >= value.getMinRank() && rank <= value.getMaxRank()){ - // 发邮件奖励 - String reward = StringUtil.parseArrayToString(value.getRankingReward()); - MailLogic.getInstance().sendMail(user.getId(),title,content,reward,TimeUtils.nowInt(), Global.MAIL_EFFECTIVE_TIME); - // 清除道具 - ItemLogic.getInstance().functionEndClearItem(user.getId(),FunctionIdEnum.CrossSevenWorld.getFunctionType(),BIReason.SEVEN_WORLD_FUNCTION_END); - LOGGER.info("七界结束,发送邮件并删除道具,uid:{},奖励:{},",user.getId(),reward); - break; + if (isTime()){ + // 排行榜 + String crossRedisKey = RankContext.getRankEnum(RankEnum.CROSS_SEVEN_WORLD_RANK.getType()).getCrossRedisKey(); + Set> range = RedisUtil.getInstence().getZsetreverseRangeWithScores(crossRedisKey,"",0,-1,false); + // 排名 + int rank = 1; + for (ZSetOperations.TypedTuple tuple : range) { + User user = UserManager.getUserNotCache(Integer.parseInt(tuple.getValue())); + if (user == null){ + return; } + String title = SErrorCodeEerverConfig.getI18NMessage("Qijie_mail_title"); + String content = SErrorCodeEerverConfig.getI18NMessageNeedConvert("Qijie_mail_txt", new Object[]{rank},new int[0],"#"); + // 排行奖励 + Map config = STableManager.getConfig(SQijieRanking.class); + for (SQijieRanking value : config.values()) { + // 排名区间 + if (rank >= value.getMinRank() && rank <= value.getMaxRank()){ + // 发邮件奖励 + String reward = StringUtil.parseArrayToString(value.getRankingReward()); + MailLogic.getInstance().sendMail(user.getId(),title,content,reward,TimeUtils.nowInt(), Global.MAIL_EFFECTIVE_TIME); + // 清除道具 + ItemLogic.getInstance().functionEndClearItem(user.getId(),FunctionIdEnum.CrossSevenWorld.getFunctionType(),BIReason.SEVEN_WORLD_FUNCTION_END); + LOGGER.info("七界结束,发送邮件并删除道具,uid:{},奖励:{},",user.getId(),reward); + break; + } + } + rank++; } - rank++; + SevenWorldLogic.setEnd(true); + System.out.print("七界试炼活动结束,发奖完成...\n"); } - SevenWorldLogic.setEnd(true); - System.out.print("七界试炼活动结束,发奖完成...\n"); } /** @@ -476,7 +475,9 @@ public class SevenWorldLogic { int week = TimeUtils.getDayOfWeek(); int hour = TimeUtils.getHourOfDay(); int minute = TimeUtils.getMiunte(); - return week == 7 && hour == 23 && minute == 30; + boolean b = week == 7 && hour == 23 && minute == 30; + LOGGER.info("当前时间:week:{},hour:{},minute:{},result:{}",week,hour,minute,b); + return b; } }