From 9f019317b36a05e145d4c8cae63d5e50a4f378b0 Mon Sep 17 00:00:00 2001 From: "PC-202302260912\\Administrator" <1769111741@qq.com> Date: Mon, 25 Sep 2023 16:01:26 +0800 Subject: [PATCH] =?UTF-8?q?=E5=90=88=E6=9C=8D=E6=8E=89=E5=B0=81=E7=A6=81?= =?UTF-8?q?=E9=97=AE=E9=A2=98=E5=A4=84=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/com/ljsd/GameLogicService.java | 2 + .../com/ljsd/jieling/db/redis/RedisUtil.java | 41 +++++++++---------- .../champion/ChampionViewFinalHandler.java | 2 +- .../com/ljsd/jieling/kefu/Cmd_addblack.java | 3 +- .../com/ljsd/jieling/kefu/Cmd_reblack.java | 2 +- .../logic/championship/ChampionshipLogic.java | 4 +- .../ljsd/jieling/logic/item/ItemLogic.java | 16 ++++---- .../jieling/logic/player/PlayerLogic.java | 17 +++++++- .../logic/ridingSward/RidingSwardLogic.java | 2 +- .../network/server/ProtocolsManager.java | 12 +++--- 10 files changed, 56 insertions(+), 45 deletions(-) diff --git a/serverlogic/src/main/java/com/ljsd/GameLogicService.java b/serverlogic/src/main/java/com/ljsd/GameLogicService.java index 5460d56a7..3f3a16a02 100644 --- a/serverlogic/src/main/java/com/ljsd/GameLogicService.java +++ b/serverlogic/src/main/java/com/ljsd/GameLogicService.java @@ -16,6 +16,7 @@ import com.ljsd.jieling.logic.activity.event.ServerOpenEvent; import com.ljsd.jieling.logic.dao.GuilidManager; import com.ljsd.jieling.logic.dao.MailingSystemManager; import com.ljsd.jieling.logic.dao.root.User; +import com.ljsd.jieling.logic.player.PlayerLogic; import com.ljsd.jieling.network.server.ProtocolsManager; import com.ljsd.jieling.thread.ThreadManager; import com.ljsd.jieling.thread.task.MongoDataHandlerTask; @@ -105,6 +106,7 @@ public class GameLogicService implements IService { ThriftPoolUtils.getInstance().initContext(); GlobalDataManaager.getInstance().init(); GuilidManager.init(); + PlayerLogic.banPlayerRedisInit(); Runtime.getRuntime().addShutdownHook(new Thread(() -> { LOGGER.info("ShutdownHook start"); 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 16036541a..b2fa3a786 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 @@ -1178,14 +1178,7 @@ public class RedisUtil { public void putMapEntry(String type,String key,String mapKey, T value){ String rkey = getKey(type, key); - for (int i = 0; i < MAX_TRY_TIMES; i++) { - try { - redisTemplate.opsForHash().put(rkey,mapKey,gson.toJson(value)); - return; - } catch (Exception e) { - TimeUtils.sleep(FAILED_SLEEP); - } - } + putMapEntry2(rkey, mapKey, value); } public void putMapEntry2(String key, String mapKey, T value){ @@ -1201,11 +1194,15 @@ public class RedisUtil { public void putMapEntrys(String type,String key,Map valus){ String rkey = getKey(type, key); + putMapEntrys2(rkey, valus); + } + + public void putMapEntrys2(String key,Map valus){ Map result = new HashMap<>(); valus.forEach((k,v)-> result.put(k,gson.toJson(v))); for (int i = 0; i < MAX_TRY_TIMES; i++) { try { - redisTemplate.opsForHash().putAll(rkey,result); + redisTemplate.opsForHash().putAll(key,result); return; } catch (Exception e) { TimeUtils.sleep(FAILED_SLEEP); @@ -1268,23 +1265,11 @@ public class RedisUtil { return result; } - public Map getMapValues(String type, String key, Class keyClazz, Class valueClazz){ + public Map getMapValues(String type, String key, Class keyClazz, Class valueClazz){ String rkey = getKey(type, key); return getMapValues2(rkey, keyClazz, valueClazz); } - public Map getMapValues(String type, String key, Class keyClazz, Type valueType){ - Map result = new HashMap<>(); - String rkey = getKey(type, key); - Map entries = redisTemplate.opsForHash().entries(rkey); - for(Map.Entry item : entries.entrySet()){ - Object key1 = item.getKey(); - Object value = item.getValue(); - result.put(gson.fromJson(gson.toJson(key1),keyClazz),gson.fromJson(value.toString(), valueType)); - } - return result; - } - public Map getMapValues2(String key, Class keyClazz, Class valueClazz){ Map result = new HashMap<>(); Map entries = redisTemplate.opsForHash().entries(key); @@ -1296,6 +1281,18 @@ public class RedisUtil { return result; } + public Map getMapValues3(String type, String key, Class keyClazz, Type valueType){ + Map result = new HashMap<>(); + String rkey = getKey(type, key); + Map entries = redisTemplate.opsForHash().entries(rkey); + for(Map.Entry item : entries.entrySet()){ + Object key1 = item.getKey(); + Object value = item.getValue(); + result.put(gson.fromJson(gson.toJson(key1),keyClazz),gson.fromJson(value.toString(), valueType)); + } + return result; + } + public boolean existsKey(String type,String key){ String rkey = getKey(type, key); return redisTemplate.hasKey(rkey); diff --git a/serverlogic/src/main/java/com/ljsd/jieling/handler/champion/ChampionViewFinalHandler.java b/serverlogic/src/main/java/com/ljsd/jieling/handler/champion/ChampionViewFinalHandler.java index 0ed01bfaa..bd2705158 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/handler/champion/ChampionViewFinalHandler.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/handler/champion/ChampionViewFinalHandler.java @@ -42,7 +42,7 @@ public class ChampionViewFinalHandler extends BaseHandler>() {}.getType(); int start = 0, end = - 1; - Map> finalmemberOfTeam = RedisUtil.getInstence().getMapValues(RedisKey.CHAMPION_FINAL_TEAM_INFO, "", Integer.class, valueType); + Map> finalmemberOfTeam = RedisUtil.getInstence().getMapValues3(RedisKey.CHAMPION_FINAL_TEAM_INFO, "", Integer.class, valueType); Map memberPerOfTeam = new HashMap<>(); List arenaRecodeds; if(type == 1){ diff --git a/serverlogic/src/main/java/com/ljsd/jieling/kefu/Cmd_addblack.java b/serverlogic/src/main/java/com/ljsd/jieling/kefu/Cmd_addblack.java index 75d96a7cc..34c386c63 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/kefu/Cmd_addblack.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/kefu/Cmd_addblack.java @@ -12,9 +12,8 @@ public class Cmd_addblack extends GmAbstract { return false; } String uid = args[0]; - RedisUtil.getInstence().putMapEntry(RedisKey.FORBID_LOGIN, "",uid,0); + RedisUtil.getInstence().putMapEntry2(RedisKey.FORBID_LOGIN, uid,0); ProtocolsManager.getInstance().minuteCheckForbidUser(); return true; - } } diff --git a/serverlogic/src/main/java/com/ljsd/jieling/kefu/Cmd_reblack.java b/serverlogic/src/main/java/com/ljsd/jieling/kefu/Cmd_reblack.java index 3a0b3b8ad..3308cb821 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/kefu/Cmd_reblack.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/kefu/Cmd_reblack.java @@ -12,7 +12,7 @@ public class Cmd_reblack extends GmAbstract { return false; } String uid = args[0]; - RedisUtil.getInstence().removeMapEntrys(RedisKey.FORBID_LOGIN, "", uid); + RedisUtil.getInstence().removeMapEntrys2(RedisKey.FORBID_LOGIN, uid); ProtocolsManager.getInstance().minuteCheckForbidUser(); return true; } diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/championship/ChampionshipLogic.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/championship/ChampionshipLogic.java index f02e6f0d6..0c7ff5094 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/championship/ChampionshipLogic.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/championship/ChampionshipLogic.java @@ -862,7 +862,7 @@ public class ChampionshipLogic { //todo public static Map> getMermberTeam() { Type type = new TypeToken>() {}.getType(); - return RedisUtil.getInstence().getMapValues(RedisKey.CHAMPION_CHOSE_TEAM_INFO, "", Integer.class, type); + return RedisUtil.getInstence().getMapValues3(RedisKey.CHAMPION_CHOSE_TEAM_INFO, "", Integer.class, type); } public static CommonProto.TeamOneInfo.Builder getUserTeam(int robotId) { @@ -943,7 +943,7 @@ public class ChampionshipLogic { } } else { //决赛 Type valueType = new TypeToken>() {}.getType(); - Map> finalmemberOfTeam = RedisUtil.getInstence().getMapValues(RedisKey.CHAMPION_FINAL_TEAM_INFO, "", Integer.class, valueType); + Map> finalmemberOfTeam = RedisUtil.getInstence().getMapValues3(RedisKey.CHAMPION_FINAL_TEAM_INFO, "", Integer.class, valueType); Map allJoinMembers = RedisUtil.getInstence().getMapValues(RedisKey.CHAMPION_JOIN, "", Integer.class, MemberInfo.class); List possibleJoin = new ArrayList<>(); 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 ca3e6d75c..52455083b 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 @@ -1093,14 +1093,14 @@ public class ItemLogic { throw new ErrorCodeException(ErrorCode.ACCOUNT_ERROR); } } - Item item7 = user.getItemManager().getItem(1004); - if(item7 != null){ - if(item7.getItemNum() >= 300 && user.getId() != 10009366){ - String format = MessageFormat.format("道具异常,uid:{0},itemId:{1},itemNum:{2}", user.getId(), item7.getItemId(),item7.getItemNum()); - LOGGER.error(format); - throw new ErrorCodeException(ErrorCode.ACCOUNT_ERROR); - } - } +// Item item7 = user.getItemManager().getItem(1004); +// if(item7 != null){ +// if(item7.getItemNum() >= 300 && user.getId() != 10009366){ +// String format = MessageFormat.format("道具异常,uid:{0},itemId:{1},itemNum:{2}", user.getId(), item7.getItemId(),item7.getItemNum()); +// LOGGER.error(format); +// throw new ErrorCodeException(ErrorCode.ACCOUNT_ERROR); +// } +// } } } diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/player/PlayerLogic.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/player/PlayerLogic.java index 53e0d0a3c..cf789e481 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/player/PlayerLogic.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/player/PlayerLogic.java @@ -445,7 +445,7 @@ public class PlayerLogic { //退出公会 隔天清空援助信息 if(playerInfoManager.getGuildId()==0){ GuildMyInfo guildMyInfo = user.getGuildMyInfo(); - if(guildMyInfo.getGuidHelpInfo().size()!=0||guildMyInfo.getGuidHelpHadTakeInfo().size()!=0){ + if(!guildMyInfo.getGuidHelpInfo().isEmpty() || !guildMyInfo.getGuidHelpHadTakeInfo().isEmpty()){ guildMyInfo.setGuidHelpInfo(new HashMap<>()); guildMyInfo.setGuidHelpHadTakeInfo(new HashMap<>()); guildMyInfo.setGuildHelpSendTime(0); @@ -1966,6 +1966,21 @@ public class PlayerLogic { return lv; } + public static void banPlayerRedisInit(){ + RedisUtil redisUtil = RedisUtil.getInstence(); + String key = redisUtil.getKey(RedisKey.FORBID_LOGIN, ""); + if (!redisUtil.hasKey(key)){ + return; + } + Map forbidMap = redisUtil.getMapValues2(key, String.class, Integer.class); + if (forbidMap == null || forbidMap.isEmpty()){ + return; + } + redisUtil.putMapEntrys2(RedisKey.FORBID_LOGIN, forbidMap); + redisUtil.remove(key); + LOGGER.info("封禁列表已迁移"); + } + //获取跨服非玉虚玩家队伍信息 // public PlayerInfoProto.GetPlayerOneTeamInfoResponse getCrossOneTeamInfo(int id,int teamId) throws Exception { // CSPlayer csPlayer = CrossServiceLogic.getPlayerByRedis(id); diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/ridingSward/RidingSwardLogic.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/ridingSward/RidingSwardLogic.java index 63e37a9cc..4af0a3de4 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/ridingSward/RidingSwardLogic.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/ridingSward/RidingSwardLogic.java @@ -565,7 +565,7 @@ public class RidingSwardLogic{ */ public static Map> getRecordList(int uid){ Type valueType = new TypeToken>(){}.getType(); - Map> map = RedisUtil.getInstence().getMapValues(RedisKey.RIDING_SWARD_RECORD, String.valueOf(uid), int.class, valueType); + Map> map = RedisUtil.getInstence().getMapValues3(RedisKey.RIDING_SWARD_RECORD, String.valueOf(uid), int.class, valueType); return map; } diff --git a/serverlogic/src/main/java/com/ljsd/jieling/network/server/ProtocolsManager.java b/serverlogic/src/main/java/com/ljsd/jieling/network/server/ProtocolsManager.java index 8f777e24f..49362b820 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/network/server/ProtocolsManager.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/network/server/ProtocolsManager.java @@ -167,13 +167,12 @@ public class ProtocolsManager implements ProtocolsAbstract { public void minuteCheckForbidUser(){ try { RedisUtil redisUtil = RedisUtil.getInstence(); - String key = RedisKey.getKey(RedisKey.FORBID_LOGIN, ""); - if(!redisUtil.hasKey(key)){ + if(!redisUtil.hasKey(RedisKey.FORBID_LOGIN)){ Blocker.getForbidLogin().clear(); return; } - Map forbidMap = redisUtil.getMapValues(RedisKey.FORBID_LOGIN, "", Integer.class, Integer.class); - if(forbidMap==null||forbidMap.size()<1){ + Map forbidMap = redisUtil.getMapValues2(RedisKey.FORBID_LOGIN, Integer.class, Integer.class); + if(forbidMap == null|| forbidMap.isEmpty()){ return; } Blocker.setForbidLogin(forbidMap.keySet()); @@ -186,12 +185,11 @@ public class ProtocolsManager implements ProtocolsAbstract { public void minuteCheckFlowUser(){ try { String crowdnum = RedisUtil.getInstence().getMapValue(RedisKey.GLOBAL_SYS_PRO,"","onlinenum",String.class); - if(null!=crowdnum&&!crowdnum.equals("")){ + if(null!=crowdnum&& !crowdnum.isEmpty()){ Blocker.maxAllowedOnlineAccountCount.set(Integer.parseInt(crowdnum)); } - }catch (Exception e){ + }catch (Exception ignored){ } - } public void initHandler(String pck){