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 29affb2d6..d4080193e 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 @@ -402,6 +402,17 @@ public class RedisKey { */ public final static String EXPLORE_RANK = "EXPLORE_RANK"; + /** + * 英雄热度排行榜 + * key: + */ + public final static String HERO_HOT_RANK = "HERO_HOT_RANK"; + + /** + * 玩家给点击过的英雄 + * key: + */ + public static final String USER_LIKE_HERO_HOT_RANK = "USER_LIKE_HERO_HOT_RANK"; /** * 四灵挑战数据转移到mongo记录 diff --git a/serverlogic/src/main/java/com/ljsd/jieling/db/redis/RedisUtil.java b/serverlogic/src/main/java/com/ljsd/jieling/db/redis/RedisUtil.java index 0857487a6..80ceab540 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/db/redis/RedisUtil.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/db/redis/RedisUtil.java @@ -1400,14 +1400,14 @@ public class RedisUtil { return -1; } - public String getKey(String type,String key){ - return getKey(type,key,true); - } - public String getGuildReleaseKey(String type,int serverId){ return serverId + RedisKey.Delimiter_colon + type + RedisKey.Delimiter_colon; } + public String getKey(String type,String key){ + return getKey(type,key,true); + } + /** * 获取key * @param type @@ -1418,10 +1418,26 @@ public class RedisUtil { */ public String getKey(String type,String key,boolean judge) { String result = null; - if (!judge) { + if (judge) { + result = getKeyImpl(type, key); + } else{ result = type + RedisKey.Delimiter_colon + key; - } else if ( - RedisKey.PLAYER_INFO_CACHE.equals(type) || RedisKey.FAMILY_INFO.equals(type) || + } + // 保存需要清理的key + saveRemoveKeyHandler(result); + return result; + } + + /** + * 获取key + * @param type + * @param key + * 本服: true 跨服: false + * @return + */ + public String getKeyImpl(String type,String key) { + String result = null; + if (RedisKey.PLAYER_INFO_CACHE.equals(type) || RedisKey.FAMILY_INFO.equals(type) || RedisKey.PIDGIDTEMP.equals(type) || RedisKey.SERVER_WORLDLEVE_INFO.equals(type) || RedisKey.FAMILY_RED_PACKAGE.equals(type) || "red_remain_list".equals(type) || RedisKey.FAMILY_RED_PACKAGE_INCRE_ID.equals(type) || /*RedisKey.GUILD_FORCE_RANK.equals(type) ||*/ @@ -1432,10 +1448,13 @@ public class RedisUtil { RedisKey.WORLD_ARENA_MY_PRON.equals(type) || RedisKey.WORLD_ARENA_RRECORD.equals(type) || RedisKey.TOKEN.equals(type) || RedisKey.USER_SERVER_INFO.equals(type) || RedisKey.CDKEY.equals(type) || RedisKey.ServerArenaJob.equals(type) || - RedisKey.CROSS_SERVER_GROUP.equals(type) - ) { + RedisKey.CROSS_SERVER_GROUP.equals(type) || RedisKey.HERO_HOT_RANK.equals(type) || + RedisKey.USER_LIKE_HERO_HOT_RANK.equals(type)) + { result = type + RedisKey.Delimiter_colon + key; - } else if (!RedisKey.newAreaCacChe.contains(type) && !RedisKey.rankCacChe.contains(type)) { + } + else if (!RedisKey.newAreaCacChe.contains(type) && !RedisKey.rankCacChe.contains(type)) + { if (key.length() == 8) { Integer serverId = RedisUtil.getInstence().getObject(RedisKey.CUser_ServerId_Key, key, Integer.class, GlobalsDef.REDIS_OVER_TIME_DAY * 10); if (serverId != null && !AreaManager.getInstance().checkServerIdAllowPermit(serverId)) { @@ -1455,20 +1474,13 @@ public class RedisUtil { RedisKey.CROSS_YUXULUNDAO_RANK.equals(type) || RedisKey.CROSS_YUXULUNDAO_ROBOT_INFO.equals(type) || RedisKey.CROSS_YUXULUNDAO_RECORD.equals(type) || RedisKey.CROSS_YUXULUNDAO_RANK_PERSON.equals(type) || RedisKey.CROSS_LINGMAISECRET_INFO.equals(type) || RedisKey.CROSS_LINGMAISECRET_RECORD.equals(type) - || RedisKey.CROSS_LINGMAI_RANK_PERSON.equals(type) - ) { + || RedisKey.CROSS_LINGMAI_RANK_PERSON.equals(type)) + { return type + RedisKey.Delimiter_colon + key; } if (result == null) { -// if (RedisKey.GUILD_RELEASE.equals(type)) { -// RedisUtil.getInstence().get(RedisKey.GUILD_SERVERID + RedisKey.Delimiter_colon + ) -// result = + RedisKey.Delimiter_colon + type + RedisKey.Delimiter_colon + key; -// }else { result = AreaManager.areaId + RedisKey.Delimiter_colon + type + RedisKey.Delimiter_colon + key; -// } } - // 保存需要清理的key - saveRemoveKeyHandler(result); return result; } diff --git a/serverlogic/src/main/java/com/ljsd/jieling/handler/rank/LikeHeroRankHandler.java b/serverlogic/src/main/java/com/ljsd/jieling/handler/rank/LikeHeroRankHandler.java new file mode 100644 index 000000000..9d2fc4aa3 --- /dev/null +++ b/serverlogic/src/main/java/com/ljsd/jieling/handler/rank/LikeHeroRankHandler.java @@ -0,0 +1,67 @@ +package com.ljsd.jieling.handler.rank; + +import com.ljsd.jieling.db.redis.RedisKey; +import com.ljsd.jieling.db.redis.RedisUtil; +import com.ljsd.jieling.exception.ErrorCode; +import com.ljsd.jieling.exception.ErrorCodeException; +import com.ljsd.jieling.handler.BaseHandler; +import com.ljsd.jieling.logic.dao.UserManager; +import com.ljsd.jieling.logic.dao.root.User; +import com.ljsd.jieling.logic.rank.RankEnum; +import com.ljsd.jieling.logic.rank.rankImpl.AbstractRank; +import com.ljsd.jieling.network.session.ISession; +import com.ljsd.jieling.util.MessageUtil; +import config.SHotRanking; +import manager.STableManager; +import org.springframework.stereotype.Component; +import rpc.protocols.HeroInfoProto; +import rpc.protocols.MessageTypeProto; + +import java.util.HashSet; +import java.util.Map; + +/** + * @author hj + * 点击热度排行榜 + */ +@Component +public class LikeHeroRankHandler extends BaseHandler { + @Override + public MessageTypeProto.MessageType getMessageCode() { + return MessageTypeProto.MessageType.LIKE_HERO_RANK_REQUEST; + } + + + @Override + public void processWithProto(ISession iSession, HeroInfoProto.LikeHeroRankRequest proto) throws Exception { + User user = UserManager.getUser(iSession.getUid()); + + String rankSubId = String.valueOf(proto.getRankSubId()); + int heroTid = proto.getHeroTid(); + String userId = String.valueOf(user.getId()); + + // 英雄是否点赞过验证 + + HashSet entry = RedisUtil.getInstence().getMapEntry(RedisKey.USER_LIKE_HERO_HOT_RANK, rankSubId, userId, HashSet.class); + if (entry != null && entry.contains(heroTid)){ + throw new ErrorCodeException(ErrorCode.SERVER_DEFINE,"该英雄已点赞"); + } + + // 排行榜是否开启验证 + Map config = STableManager.getConfig(SHotRanking.class); + SHotRanking hotRanking = config.get(rankSubId); + if (hotRanking == null || hotRanking.getOpen() == 0){ + throw new ErrorCodeException(ErrorCode.SYS_ERROR_CODE,"排行榜未开启:"+rankSubId); + } + + // 更新热度排行榜 + AbstractRank rank = RankEnum.toRank(RankEnum.HERO_HOT_RANK.getType()); + rank.addRank(proto.getHeroTid(), rankSubId, 1); + + // 更新点赞记录 + entry.add(heroTid); + RedisUtil.getInstence().putMapEntry(RedisKey.USER_LIKE_HERO_HOT_RANK, rankSubId, userId, entry); + + MessageUtil.sendMessage(iSession, 1, MessageTypeProto.MessageType.LIKE_HERO_RANK_RESPONSE_VALUE, null, true); + } +} diff --git a/serverlogic/src/main/java/com/ljsd/jieling/handler/rank/UserLikeHeroRankInfoHandler.java b/serverlogic/src/main/java/com/ljsd/jieling/handler/rank/UserLikeHeroRankInfoHandler.java new file mode 100644 index 000000000..604fea343 --- /dev/null +++ b/serverlogic/src/main/java/com/ljsd/jieling/handler/rank/UserLikeHeroRankInfoHandler.java @@ -0,0 +1,41 @@ +package com.ljsd.jieling.handler.rank; + +import com.ljsd.jieling.db.redis.RedisKey; +import com.ljsd.jieling.db.redis.RedisUtil; +import com.ljsd.jieling.handler.BaseHandler; +import com.ljsd.jieling.logic.dao.UserManager; +import com.ljsd.jieling.logic.dao.root.User; +import com.ljsd.jieling.network.session.ISession; +import com.ljsd.jieling.util.MessageUtil; +import org.springframework.stereotype.Component; +import rpc.protocols.HeroInfoProto; +import rpc.protocols.MessageTypeProto; + +import java.util.HashSet; + +/** + * @author hj + * 用户点击热度排行榜英雄信息获取 + */ +@Component +public class UserLikeHeroRankInfoHandler extends BaseHandler { + @Override + public MessageTypeProto.MessageType getMessageCode() { + return MessageTypeProto.MessageType.USER_LIKE_HERO_RANK_INFO_REQUEST; + } + + + @Override + public void processWithProto(ISession iSession, HeroInfoProto.userLikeHeroRankInfoRequest proto) throws Exception { + User user = UserManager.getUser(iSession.getUid()); + + String rankSubId = String.valueOf(proto.getRankSubId()); + String userId = String.valueOf(user.getId()); + + // 用户点赞英雄记录 + HashSet entry = RedisUtil.getInstence().getMapEntry(RedisKey.USER_LIKE_HERO_HOT_RANK, rankSubId, userId, HashSet.class); + HeroInfoProto.userLikeHeroRankInfoResponse.Builder builder = HeroInfoProto.userLikeHeroRankInfoResponse.newBuilder().addAllHeroTid(entry); + + MessageUtil.sendMessage(iSession, 1, MessageTypeProto.MessageType.USER_LIKE_HERO_RANK_INFO_RESPONSE_VALUE, builder.build(), true); + } +} diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/GlobalDataManaager.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/GlobalDataManaager.java index c18a81077..b73ad407b 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/GlobalDataManaager.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/GlobalDataManaager.java @@ -36,6 +36,7 @@ import com.ljsd.jieling.logic.mission.GameMisionType; import com.ljsd.jieling.logic.mission.data.DataManagerDistributor; import com.ljsd.jieling.logic.mission.event.MissionEventDistributor; import com.ljsd.jieling.logic.player.PlayerLogic; +import com.ljsd.jieling.logic.rank.RankLogic; import com.ljsd.jieling.logic.redpacket.WelfareRedPackSendHandler; import com.ljsd.jieling.logic.ridingSward.RidingSwardLogic; import com.ljsd.jieling.logic.sevenworld.SevenWorldLogic; @@ -309,8 +310,7 @@ public class GlobalDataManaager implements IManager { new SummonTreasureHandler(); new ArchitectureUnLockHandler(); new SaveHeroForceEventHandler(); - // 四灵试炼转移数据,只执行一次 -// FourChallengeLogic.getInstance().redisToMongoDB(); + RankLogic.heroHotRankInit();//英雄热度排行榜同步更新英雄配置表 ChampionshipLogic.minuteCheck(true); GuildFightLogic.minuteCheckForCarFight(); } catch (Exception e) { 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 b702b583b..00915208a 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 @@ -108,7 +108,7 @@ public enum ActivityTypeEnum { EXPLORE_EXPECT_ACTIVITY(ActivityType.EXPLORE_EXPECT_ACTIVITY,ExploreExpectActivity::new), POWER_RICE_ACTIVITY(ActivityType.POWER_RICE_ACTIVITY,PowerRiceActivity::new),//战力冲刺 DONGHAI_XUNXIAN_ACTIVITY(ActivityType.DonghaiXunxian,DonghaiXunxianActivity::new),//东海寻仙 - WHOEL_LIFE_ACTIVITY(ActivityType.WHOLE_LIFE_CARD,WholeLifeActivity::new),//东海寻仙 + WHOEL_LIFE_ACTIVITY(ActivityType.WHOLE_LIFE_CARD,WholeLifeActivity::new),//神尊特权 WEEK_CARD(ActivityType.WEEK_CARD,WeekCardActivity::new),//月卡 ; diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/rank/RankEnum.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/rank/RankEnum.java index f66dba252..084100197 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/rank/RankEnum.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/rank/RankEnum.java @@ -51,8 +51,6 @@ public enum RankEnum { POWER_RICE_RANK(42,RedisKey.POWER_RICE_RANK,PowerRiceRank::new,false),//战力冲刺排行榜 EXPLORE_RANK(43,RedisKey.EXPLORE_RANK,ExploreRank::new,false),//探索排行榜 - - // 以下为跨服排行榜 WARLD_DIS_ARENA_RANK(28,RedisKey.WARLD_DIS_ARENA_RANK,ArenaRank::new,true),//世界服排行 @@ -67,7 +65,7 @@ public enum RankEnum { CROSS_SEVEN_WORLD_RANK(39,RedisKey.SEVEN_WORLD_INTEGRAL_RANK,CrossRank::new,true),//跨服七届试炼 CROSS_YUXULUNDAO_RANK_PERSON(40,RedisKey.CROSS_YUXULUNDAO_RANK_PERSON,CrossYuXuLunDaoPersonRank::new,true),//跨服玉虚论道真人排行榜 CROSS_LINGMAI_RANK_PERSON(41,RedisKey.CROSS_LINGMAI_RANK_PERSON,CrossLingmaiSecretRank::new,true),//跨服灵脉秘境积分排行榜 - + HERO_HOT_RANK(44,RedisKey.HERO_HOT_RANK, HeroHotRank::new,true),//英雄热度排行榜(全频道性质) ; private int type; 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 1533be5a3..e2c8a6c54 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 @@ -1,5 +1,7 @@ package com.ljsd.jieling.logic.rank; +import com.ljsd.jieling.db.redis.RedisKey; +import com.ljsd.jieling.db.redis.RedisUtil; import com.ljsd.jieling.exception.ErrorCode; import com.ljsd.jieling.exception.ErrorCodeException; import com.ljsd.jieling.globals.BIReason; @@ -12,7 +14,9 @@ import com.ljsd.jieling.logic.rank.rankImpl.AbstractRank; import com.ljsd.jieling.network.session.ISession; import com.ljsd.jieling.util.ItemUtil; import com.ljsd.jieling.util.MessageUtil; +import config.SCHero; import config.SExpeditionSetting; +import config.SHotRanking; import config.SSpecialConfig; import manager.STableManager; import org.slf4j.Logger; @@ -23,9 +27,7 @@ import rpc.protocols.PlayerInfoProto; import util.MathUtils; import util.TimeUtils; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.List; +import java.util.*; import java.util.stream.Collectors; /** @@ -250,4 +252,38 @@ public class RankLogic { AbstractRank rank = RankContext.getRankEnum(type); rank.removeAllRank(rkey); } + + /** + * 英雄热度排行榜初始化 + */ + public static void heroHotRankInit(){ + // 英雄合集 + Map heroMap = SCHero.getsCHero(); + // 热度排行榜列表 + Map hotRankingMap = STableManager.getConfig(SHotRanking.class); + // 上榜英雄品质限制 + int naturalLimit = SSpecialConfig.getIntegerValue(SSpecialConfig.HotRanking_Natural); + // 满足条件可显示到排行榜上的英雄id + HashSet heroSet = new HashSet<>(); + for (SCHero hero : heroMap.values()) { + if (hero.getNatural() < naturalLimit || hero.getIsSoulOpen() == 0){ + continue; + } + heroSet.add(hero.getId()); + } + + AbstractRank rank = RankEnum.toRank(RankEnum.HERO_HOT_RANK.getType()); + for (SHotRanking hotRanking : hotRankingMap.values()) { + if (hotRanking.getOpen() == 0){ + LOGGER.info("英雄热度排行榜未开启排行榜:{}",hotRanking.getId()); + continue; + } + // 获取排行榜信息 + for (Integer heroTid : heroSet) { + // 添加排行榜中未显示的新英雄 + rank.addRank(heroTid,String.valueOf(hotRanking.getId()),0); + } + } + LOGGER.info("英雄热度排行榜,初始化=============================="); + } } 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 87156d0d2..d7b7812bb 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 @@ -94,14 +94,14 @@ public abstract class AbstractRank implements IRank { /** * 向排行榜添加或修改某条数据 - * @param uid 修改用户id + * @param mapKey 修改用户id * @param rkey redis 小key 自定义 * @param data 注意:此处为传入修改的分数需要的所有参数即可,里面调用getScore方法,注意参数顺序 */ @Override - public void addRank(int uid, String rkey, double... data){ - String key = RedisKey.getKey(redisKey,rkey,false); - RedisUtil.getInstence().zsetAddOne(key,String.valueOf(uid), getScore(data)); + public void addRank(int mapKey, String rkey, double... data){ + String key = RedisUtil.getInstence().getKey(redisKey, rkey); + RedisUtil.getInstence().zsetAddOne(key,String.valueOf(mapKey), getScore(data)); } /** diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/rank/rankImpl/HeroHotRank.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/rank/rankImpl/HeroHotRank.java new file mode 100644 index 000000000..f4bf0021e --- /dev/null +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/rank/rankImpl/HeroHotRank.java @@ -0,0 +1,95 @@ +package com.ljsd.jieling.logic.rank.rankImpl; + +import com.ljsd.jieling.db.redis.RedisUtil; +import com.ljsd.jieling.logic.activity.crossService.CrossServiceLogic; +import com.ljsd.jieling.logic.dao.UserManager; +import com.ljsd.jieling.logic.dao.cross.CSPlayer; +import com.ljsd.jieling.logic.dao.root.GuildInfo; +import com.ljsd.jieling.logic.dao.root.User; +import com.ljsd.jieling.logic.family.CrossDeathPathLogic; +import config.SCHero; +import config.SHotRanking; +import config.SSpecialConfig; +import manager.STableManager; +import org.springframework.data.redis.core.ZSetOperations; +import rpc.protocols.CommonProto; +import rpc.protocols.PlayerInfoProto; + +import java.util.*; + +/** + * @author lvxinran + * @date 2019/11/27 + * @discribe + */ +public class HeroHotRank extends ForceRank { + public HeroHotRank(int type, String redisKey) { + super(type, redisKey); + } + + @Override + public void addRank(int mapKey, String rkey, double... data){ + RedisUtil.getInstence().incrementZsetScore(redisKey,rkey,String.valueOf(mapKey),getScore(data),false); + } + + public int getParam1(String data) { + return Integer.parseInt(data); + } + + @Override + public int getParam2(Double data) { + return data.intValue(); + } + + public PlayerInfoProto.RankResponse getCrossRank(int uid, String rkey, int page, int rankEndLine) throws Exception { + // 每页数量 + rankEndLine = rankEndLine==-1?100:rankEndLine; + // 第几页 + page = page == 0?1:page; + // 开始和结束位置 + int start = (page - 1) * rankEndLine, end = page * rankEndLine - 1; + Set> scores = getRankByKey(rkey, start, end); + if(start % rankEndLine == 0){ + start++; + } + PlayerInfoProto.RankResponse.Builder allUserResponse = getCrossAllUserResponse(scores,start); + return allUserResponse.build(); + } + + protected void getCrossOptional(int index, ZSetOperations.TypedTuple data, PlayerInfoProto.RankResponse.Builder builder) { + CommonProto.RankInfo.Builder everyRankInfo = CommonProto.RankInfo.newBuilder() + .setRank(index) + .setParam1(getParam1(data.getValue())) + .setParam2(getParam2(data.getScore())) + .setParam3(0); + CommonProto.UserRank.Builder oneRank = CommonProto.UserRank.newBuilder().setRankInfo(everyRankInfo); + builder.addRanks(oneRank); + } + + public Set> getRankByKey(String rkey, int start, int end){ + Map heroMap = SCHero.getsCHero(); + Map config = STableManager.getConfig(SHotRanking.class); + SHotRanking ranking = config.get(Integer.parseInt(rkey)); + if (ranking == null || ranking.getOpen() == 0){ + LOGGER.error("获取英雄热度排行榜,榜单未开启:{}",rkey); + return new HashSet<>(); + } + + int naturalLimit = SSpecialConfig.getIntegerValue(SSpecialConfig.HotRanking_Natural); + + Set> range = RedisUtil.getInstence().getZsetreverseRangeWithScores(redisKey, rkey, start, end); + Iterator> iterator = range.iterator(); + while (iterator.hasNext()){ + ZSetOperations.TypedTuple next = iterator.next(); + String heroTid = next.getValue(); + SCHero scHero = heroMap.get(Integer.parseInt(heroTid)); + // 英雄不存在,品质不够,未开放 + if (scHero == null || scHero.getNatural() < naturalLimit || scHero.getIsSoulOpen() == 0){ + iterator.remove(); + } + } + + return range; + } + +} 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 8b67d829c..482b5d874 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 @@ -38,6 +38,7 @@ import com.ljsd.jieling.logic.mission.MissionType; import com.ljsd.jieling.logic.question.QuestionLogic; import com.ljsd.jieling.logic.rank.CrossRankManager; import com.ljsd.jieling.logic.rank.RankEnum; +import com.ljsd.jieling.logic.rank.RankLogic; import com.ljsd.jieling.logic.ridingSward.RidingSwardLogic; import com.ljsd.jieling.logic.sevenworld.SevenWorldLogic; import com.ljsd.jieling.logic.store.BuyGoodsNewLogic; @@ -97,10 +98,21 @@ public class MinuteTask extends Thread { // 竞技场,每日晚九点刷新 ArenaLogic.getInstance().sendReward(GlobalsDef.ARENA_DAILY_REWARD); } + }catch (Exception e){ + e.printStackTrace(); + LOGGER.error("竞技场Exception::=>{}",e.toString()); + } + + try { + // 每天晚上10点半,英雄热度排行榜同步更新英雄表 + if (TimeUtils.getHourOfDay() == 22 && TimeUtils.getMiunte() == 30){ + RankLogic.heroHotRankInit(); + } }catch (Exception e){ e.printStackTrace(); LOGGER.error("Exception::=>{}",e.toString()); } + try { SevenWorldLogic.getInstance().sendRankReward(); }catch (Exception e){ diff --git a/tablemanager/src/main/java/config/SSpecialConfig.java b/tablemanager/src/main/java/config/SSpecialConfig.java index 9a2144e01..03a36a436 100644 --- a/tablemanager/src/main/java/config/SSpecialConfig.java +++ b/tablemanager/src/main/java/config/SSpecialConfig.java @@ -130,8 +130,8 @@ public class SSpecialConfig implements BaseConfig { public static final String EXPLORERE_LIVETIME = "ExploreReliveTime";//探索时我方阵亡后复活时长 public static final String BUILDING_TIME_REDUCE = "BuildingTimeReduce";//浮生特权每日每次减少建筑升级时间:秒 public static final String CHANGE_CAMP_COST = "ChangeCampCost";//神转换阵营消耗 - public static final String GodSignOpenStar = "GodSignOpenStar";//神印格子开启所需神将星级 + public static final String HotRanking_Natural = "HotRanking_Natural";//热度排行榜——神将品质(达到这个品质可以显示在热度榜上) @Override public void init() throws Exception {