From 82656eeda1a0637e365d9fea66f24c6036f0ffbc Mon Sep 17 00:00:00 2001 From: grimm <1769111741@qq.com> Date: Fri, 24 May 2024 17:44:11 +0800 Subject: [PATCH] =?UTF-8?q?=E7=99=BB=E9=99=86=E6=96=87=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../core/function/CarDelayFunction.java | 1 + .../jieling/handler/LoginRequestHandler.java | 28 ++++++++----------- .../jieling/logic/activity/ActivityLogic.java | 8 ++++-- .../logic/activity/ActivityTypeEnum.java | 2 +- .../ljsd/jieling/logic/dao/UserManager.java | 22 +++++++++++++-- .../com/ljsd/jieling/logic/dao/root/User.java | 6 +++- .../ljsd/jieling/logic/rank/RankLogic.java | 3 -- 7 files changed, 44 insertions(+), 26 deletions(-) diff --git a/serverlogic/src/main/java/com/ljsd/jieling/core/function/CarDelayFunction.java b/serverlogic/src/main/java/com/ljsd/jieling/core/function/CarDelayFunction.java index 3f06a2832..4effc6720 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/core/function/CarDelayFunction.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/core/function/CarDelayFunction.java @@ -59,6 +59,7 @@ public class CarDelayFunction implements FunctionManager { LOGGER.error("跨服车迟斗法,发奖, key:{} 跨服分组 ={},锁状态:{},未获取到锁",lockKey, crossGroup, lock); return; } + RedisUtil.getInstence().expireMills(lockKey, TimeUtils.ONE_HOUR); personRangeWithScores = RedisUtil.getInstence().getZsetreverseRangeWithScores(personRank.getCrossRedisKey(), "", 0, -1, false); guildRangeWithScores = RedisUtil.getInstence().getZsetreverseRangeWithScores(guildRank.getCrossRedisKey(), "", 0, -1, false); }else { diff --git a/serverlogic/src/main/java/com/ljsd/jieling/handler/LoginRequestHandler.java b/serverlogic/src/main/java/com/ljsd/jieling/handler/LoginRequestHandler.java index a4a0e580a..37a7c9e71 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/handler/LoginRequestHandler.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/handler/LoginRequestHandler.java @@ -3,13 +3,11 @@ package com.ljsd.jieling.handler; import com.ljsd.jieling.db.redis.RedisKey; import com.ljsd.jieling.db.redis.RedisUtil; import com.ljsd.jieling.handler.map.MapLogic; +import com.ljsd.jieling.ktbeans.KTDataUtil; import com.ljsd.jieling.ktbeans.KTRequestBeans.LoginParamType; -import com.ljsd.jieling.ktbeans.KtEventUtils; import com.ljsd.jieling.ktbeans.ReportUtil; import com.ljsd.jieling.ktbeans.parmsBean.ParamDataBean; -import com.ljsd.jieling.ktbeans.parmsBean.ParamEnvironmentBean; import com.ljsd.jieling.ktbeans.parmsBean.ParamEnvironmentSimpleBean; -import com.ljsd.jieling.ktbeans.parmsBean.ParamEventBean; import com.ljsd.jieling.logic.dao.PlayerManager; import com.ljsd.jieling.logic.dao.UserManager; import com.ljsd.jieling.logic.dao.UserRecentLoginInfo; @@ -39,7 +37,7 @@ public class LoginRequestHandler extends BaseHandler checkActivityOfUser(User user, PlayerInfoProto.ActivityUpateIndication.Builder builder) throws Exception { long now = TimeUtils.now(); - if(user==null){ + if(user == null){ return new HashSet<>(1); } ActivityManager activityManager = user.getActivityManager(); @@ -461,6 +464,7 @@ public class ActivityLogic implements IEventHandler{ goRewardActivity(user, activityId, builder, isRemove); } } + LOGGER.info("校验活动耗时,uid:{},耗时:{}",user.getId(), TimeUtils.now() - now); return openNewActivityIds; } diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/ActivityTypeEnum.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/ActivityTypeEnum.java index c6f12b308..8c61a0471 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/ActivityTypeEnum.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/ActivityTypeEnum.java @@ -118,7 +118,7 @@ public enum ActivityTypeEnum { FABAO_BOOK_REWARD(ActivityType.FABAO_BOOK_REWARD,FabaoBookRewardActivity::new),//法宝图鉴宝箱 DRAW_FABAO_LV_CHEST(ActivityType.DRAW_FABAO_LV_CHEST,DrawLvChestActivity::new),//抽卡等级宝箱 TIAN_JIANG_GIFT(ActivityType.TIAN_JIANG_GIFT,DefaultEmptyActivity::new),//天降礼包 - DA_NAO_TIAN_GONG(ActivityType.DA_NAO_TIAN_GONG, ExpeditionActivity::new),//大闹天宫 +// DA_NAO_TIAN_GONG(ActivityType.DA_NAO_TIAN_GONG, ExpeditionActivity::new),//大闹天宫 LINGLONG_BAOJING_TASK(ActivityType.LINGLONG_BAOJING_TASK, DefaultEmptyActivity::new),//玲珑宝镜任务 NOVICE_GEM_CHEST(ActivityType.NOVICE_GEM_CHEST, GemChestActivity::new),//初级命石宝箱 ADVANCED_GEM_CHEST(ActivityType.ADVANCED_GEM_CHEST, GemChestActivity::new),//高级命石宝箱 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 5c136a7f4..34a7a8ffe 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 @@ -106,13 +106,16 @@ public class UserManager { } public static User userLogin(int uid,String openId,String channel,int pid,int gid,String platform,String ip,String channle_id,String bundle_id,String ccId,String pack_Id) throws Exception { + long now = TimeUtils.now(); User user; if (!UserManager.isUserExist(uid)){ user = MongoUtil.getInstence().getMyMongoTemplate().findById(User.getCollectionName(), uid, User.class); + LOGGER.info("玩家登陆耗时2:{}",TimeUtils.now()-now); + now = TimeUtils.now(); if (user == null) { user = registerUser(uid,openId,channel,pid,gid,platform,ip,channle_id,bundle_id,ccId,pack_Id); + LOGGER.info("玩家登陆耗时3:{}",TimeUtils.now()-now); } - UserManager.addUser(user); }else{ user = getUser(uid); user.getPlayerInfoManager().setGid(gid); @@ -124,17 +127,22 @@ public class UserManager { private static User registerUser(int uid,String openId,String channel,int pid,int gid,String platform,String ip,String channle_id,String bundle_id,String ccId,String pack_Id) throws Exception { + long now = TimeUtils.now(); User user = new User(uid); UserManager.addUser(user); + now = TimeUtils.now(); initPlayer(user,openId,channel,pid,gid,platform,ip,channle_id,bundle_id,ccId,pack_Id); + LOGGER.info("注册玩家耗时2:{}", TimeUtils.now() - now); + now = TimeUtils.now(); MongoUtil.getInstence().getMyMongoTemplate().save(user.getId(),user); + LOGGER.info("注册玩家耗时3:{}", TimeUtils.now() - now); return user; } private static void initPlayer(User user,String openId,String channel,int pid,int gid,String platform,String ip,String channle_id,String bundle_id,String ccId,String pack_Id) throws Exception { + long now = TimeUtils.now(); SGameSetting gameSetting = STableManager.getFigureConfig(CommonStaticConfig.class).getGameSetting(); PlayerManager playerManager = user.getPlayerInfoManager(); - long now = TimeUtils.now(); playerManager.setNickName(Integer.toString(user.getId())); playerManager.setNameColor("F6E1B6"); playerManager.setOpenId(openId); @@ -185,19 +193,29 @@ public class UserManager { user.getUserMissionManager().onGameEvent(user, GameEvent.BEGINNER); user.getUserMissionManager().onGameEvent(user, GameEvent.VIP_LEVLUP, MissionType.VIP_LEVEL,0); Poster.getPoster().dispatchEvent(new NewWelfareEvent(user, NewWelfareTypeEnum.LOGIN_TIMES.getType(),1)); + now = TimeUtils.now(); ActivityLogic.getInstance().newPlayerOpenActivityMission(user); + LOGGER.info("初始化玩家耗时11:{}", TimeUtils.now() - now); + now = TimeUtils.now(); Poster.getPoster().dispatchEvent(new EveryDayDiscountUnlockEvent(user.getId())); + LOGGER.info("初始化玩家耗时12:{}", TimeUtils.now() - now); + now = TimeUtils.now(); ItemUtil.drop(user,gameSetting.getBornItem(), BIReason.USER_BORN_REWARD); + LOGGER.info("初始化玩家耗时13:{}", TimeUtils.now() - now); HeroManager heroManager = user.getHeroManager(); Map heroMap = heroManager.getHeroMap(); TeamPosManager teamPosManager = user.getTeamPosManager(); List teamHeros = new ArrayList<>(1); teamHeros.add(heroMap.values().iterator().next()); teamPosManager.addTeamOfInitPlayer(teamHeros); + now = TimeUtils.now(); long force = HeroLogic.getInstance().calTeamTotalForce(user, 1); + LOGGER.info("初始化玩家耗时15:{}", TimeUtils.now() - now); playerManager.setMaxForce(force); user.getExpeditionManager().setExpeditionLeve(1); + now = TimeUtils.now(); CrossServiceLogic.getInstance().saveBasicPlayerToRedis(user);//初始化角色 + LOGGER.info("初始化玩家耗时16:{}", TimeUtils.now() - now); ReportUtil.onReportEvent(user, ReportEventEnum.CREATE_ROLE.getType());//先发送注册事件 } diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/root/User.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/root/User.java index d8fce8141..943972e35 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/root/User.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/root/User.java @@ -8,10 +8,14 @@ import com.ljsd.jieling.jbean.gm.GmActivityManager; import com.ljsd.jieling.logic.dao.*; import org.springframework.data.annotation.Transient; import org.springframework.data.mongodb.core.index.CompoundIndex; +import org.springframework.data.mongodb.core.index.CompoundIndexes; import org.springframework.data.mongodb.core.mapping.Document; @Document -@CompoundIndex(def = "{'playerManager.level' : 1, 'playerManager.loginTime': 1}", name = "level_loginTime_idx") +@CompoundIndexes({ + @CompoundIndex(name = "unique_id", def = "{'_id': 1}"), + @CompoundIndex(name = "level_loginTime_idx", def = "{'playerManager.level' : 1, 'playerManager.loginTime': 1}") +}) public class User { public static final String _COLLECTION_NAME = "user"; diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/rank/RankLogic.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/rank/RankLogic.java index f4bf070ce..8026c9eac 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/rank/RankLogic.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/rank/RankLogic.java @@ -62,9 +62,6 @@ public class RankLogic { LOGGER.info("获取排行榜信息type={},activityId={}",type,activityId); String rkey = activityId==0 ? "" : String.valueOf(activityId); int crossGroup = GlobleSystemLogic.getInstence().getCrossGroup(); - if (crossGroup < 0){ - LOGGER.error("服务器验证未跨服,跨服id:{}",crossGroup); - } PlayerInfoProto.RankResponse rankResponse; AbstractRank rank = RankContext.getRankEnum(type); if(RankContext.isCrossRank(type) && isCross == 1 && crossGroup > 0){//跨服