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 81c0720eb..d2c0edd71 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 @@ -1,6 +1,7 @@ package com.ljsd.jieling.core.function; import com.ljsd.jieling.core.FunctionManager; +import com.ljsd.jieling.db.mongo.MongoUtil; import com.ljsd.jieling.db.redis.RedisKey; import com.ljsd.jieling.db.redis.RedisUtil; import com.ljsd.jieling.globals.Global; @@ -24,11 +25,16 @@ public class CarDelayFunction implements FunctionManager { public void startAction(TimeControllerOfFunction timeControllerOfFunction) throws Exception { List delKeys = new ArrayList<>(); String key = RedisUtil.getInstence().getKey(RedisKey.CAR_DEALY_RANK, ""); + String guildKey = RedisUtil.getInstence().getKey(RedisKey.CAR_DEALY_GUILD_RANK, ""); delKeys.add(key); - Set zset = RedisUtil.getInstence().getZset(key, 0, -1); - zset.forEach(item->{ - delKeys.add(RedisUtil.getInstence().getKey(RedisKey.CAR_CHALLENGE_SB,item)); + delKeys.add(guildKey); + delKeys.add(guildKey); + Set guildSet = RedisUtil.getInstence().getZset(guildKey, 0, -1); + guildSet.forEach(guildId->{ + GuildInfo guildInfo = GuilidManager.guildInfoMap.get(Integer.parseInt(guildId)); + guildInfo.clearCarFightSb(); }); + MongoUtil.getLjsdMongoTemplate().lastUpdate(); RedisUtil.getInstence().del(delKeys.toArray(new String[0])); } @@ -42,6 +48,7 @@ public class CarDelayFunction implements FunctionManager { String personTitle = SErrorCodeEerverConfig.getI18NMessage("family_fight_rank_personreward_title"); int nowTime = TimeUtils.nowInt(); + int times=0; for(ZSetOperations.TypedTuple item : personRangeWithScores){ rank++; String value = item.getValue(); @@ -49,7 +56,11 @@ public class CarDelayFunction implements FunctionManager { String rewardByRank = personRewardConfigTreeMap.floorEntry(rank).getValue(); String personContent = SErrorCodeEerverConfig.getI18NMessage("family_fight_rank_personreward_txt",new Object[]{rank}); MailLogic.getInstance().sendMail(uid,personTitle,personContent,rewardByRank,nowTime, Global.MAIL_EFFECTIVE_TIME); + if(times++%20==0){ + MongoUtil.getLjsdMongoTemplate().lastUpdate(); + } } + MongoUtil.getLjsdMongoTemplate().lastUpdate(); String guildTitle = SErrorCodeEerverConfig.getI18NMessage("family_fight_rank_familyreward_title"); Set> guildRangeWithScores = RedisUtil.getInstence().getZsetreverseRangeWithScores(RedisKey.CAR_DEALY_GUILD_RANK, "", 0, -1); for(ZSetOperations.TypedTuple item : guildRangeWithScores){ @@ -63,10 +74,14 @@ public class CarDelayFunction implements FunctionManager { for(Set uids : values){ for(Integer uid:uids){ MailLogic.getInstance().sendMail(uid,guildTitle,guildContent,rewardByRank,nowTime, Global.MAIL_EFFECTIVE_TIME); + if(times++%20==0){ + MongoUtil.getLjsdMongoTemplate().lastUpdate(); + } } } } + MongoUtil.getLjsdMongoTemplate().lastUpdate(); } } diff --git a/serverlogic/src/main/java/com/ljsd/jieling/db/redis/RedisKey.java b/serverlogic/src/main/java/com/ljsd/jieling/db/redis/RedisKey.java index ac7368152..86ddaafe3 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/db/redis/RedisKey.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/db/redis/RedisKey.java @@ -257,7 +257,6 @@ public class RedisKey { public static final String DEATH_PATH_TOTAL_GUILD_RANK = "DEATH_PATH_TOTAL_GUILD_RANK"; - public final static String CAR_CHALLENGE_SB = "CAR_CHALLENGE_SB"; //车迟玩法挑战记录 public static final String DEATH_PAHT_TOTAL_CHALLENGE_COUNT = "DEATH_PAHT_TOTAL_CHALLENGE_COUNT"; diff --git a/serverlogic/src/main/java/com/ljsd/jieling/handler/FastChallengeHandler.java b/serverlogic/src/main/java/com/ljsd/jieling/handler/FastChallengeHandler.java index 8a296777c..77678413d 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/handler/FastChallengeHandler.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/handler/FastChallengeHandler.java @@ -6,6 +6,7 @@ import com.ljsd.jieling.db.redis.RedisUtil; import com.ljsd.jieling.exception.ErrorCode; import com.ljsd.jieling.exception.ErrorCodeException; import com.ljsd.jieling.logic.dao.GuilidManager; +import com.ljsd.jieling.logic.dao.PlayerManager; import com.ljsd.jieling.logic.dao.TeamPosHeroInfo; import com.ljsd.jieling.logic.dao.UserManager; import com.ljsd.jieling.logic.dao.root.GuildInfo; @@ -83,30 +84,34 @@ public class FastChallengeHandler extends BaseHandler records = RedisUtil.getInstence().getMapValues(RedisKey.CAR_CHALLENGE_SB, String.valueOf(uid), Integer.class, Integer.class); for(ZsetTypedTupleWithRank typedTupleWithRankitem: infos){ ZSetOperations.TypedTuple item = typedTupleWithRankitem.getItem(); int challenegUid = Integer.parseInt(item.getValue()); @@ -91,7 +90,6 @@ public class GetCarChallengeListHandler extends BaseHandler { .setUserName(challenegeUser.getPlayerInfoManager().getNickName()) .setScore(item.getScore().intValue()) .setForce(HeroLogic.getInstance().calTeamTotalForce(challenegeUser,GlobalsDef.CAR_DELAY_TEAM,false)) - .setHadChallenge(records.containsKey(challenegUid)?1:0) .setRank(rank); for (TeamPosHeroInfo heroInfo:challenegeUser.getTeamPosManager().getTeamPosForHero().get(GlobalsDef.CAR_DELAY_TEAM)) { Hero hero = challenegeUser.getHeroManager().getHero(heroInfo.getHeroId()); @@ -114,9 +112,10 @@ public class GetCarChallengeListHandler extends BaseHandler { int rank=start+1; Set> zsetreverseRangeWithScores = RedisUtil.getInstence().getZsetreverseRangeWithScores(RedisKey.CAR_DEALY_RANK, "", start, end); for(ZSetOperations.TypedTuple item : zsetreverseRangeWithScores){ - if(!members.contains(Integer.parseInt(item.getValue()))){ - infos.add(new ZsetTypedTupleWithRank(item,rank++)); + if(members.add(Integer.parseInt(item.getValue()))){ + infos.add(new ZsetTypedTupleWithRank(item,rank)); } + rank++; } end=start; start-=matchNums; diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/root/GuildInfo.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/root/GuildInfo.java index a12268998..01dd4658c 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/root/GuildInfo.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/root/GuildInfo.java @@ -232,11 +232,18 @@ public class GuildInfo extends MongoBase { updateString("intoLevel",intoLevel); } - public void addCarFightSb(int uid){ + public boolean addCarFightSb(int uid){ if(!carFightSb.containsKey(uid)){ carFightSb.put(uid,1); updateString("carFightSb." + uid,1); + return true; } + return false; + } + + public void clearCarFightSb(){ + carFightSb.clear(); + updateString("carFightSb" ,carFightSb); } public Map getCarFightSb() { diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/family/GuildFightLogic.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/family/GuildFightLogic.java index 6942f08f5..8cec4c0c8 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/family/GuildFightLogic.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/family/GuildFightLogic.java @@ -1229,10 +1229,14 @@ public class GuildFightLogic { public static void minuteCheckForCarFight() throws Exception { int carProgressTmp =carProgress; - int id =-1; + int id =1; + TimeControllerOfFunction timeControllerOfFunction = GlobalDataManaager.getInstance().getTimeControllerOfFunctionByFunctinoType(FunctionIdEnum.Car_Delay); if (null == timeControllerOfFunction) { - carProgress = -1; + carProgressTmp = -1; + if(carDelayProgressIndication!=null){ + id = carDelayProgressIndication.getBossIndexId(); + } }else{ int times = timeControllerOfFunction.getTimes(); int size = STableManager.getConfig(SWorldBossConfig.class).size(); @@ -1254,7 +1258,7 @@ public class GuildFightLogic { int grapCompareStart =grabTime[0][0]*100 + grabTime[0][1]; int grapCompaeEnd =grabTime[1][0]*100 + grabTime[1][1]; - if(sourceCompare>=battleCompareStart && sourceCompare<=battleCompaeEnd){ + if(sourceCompare>=battleCompareStart && sourceCompare=grapCompareStart && sourceCompare<=grapCompaeEnd){ + }else if(sourceCompare>=grapCompareStart && sourceCompare=battleCompaeEnd && sourceCompare<=grapCompareStart){ + }else if(sourceCompare>=battleCompaeEnd && sourceCompare