From 8b87171a00248cdf7953a03597b2aab641cc7fd4 Mon Sep 17 00:00:00 2001 From: "DESKTOP-C3M45P4\\dengdan" Date: Tue, 13 May 2025 17:30:43 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E8=B7=A8=E6=9C=8D=E5=8F=96?= =?UTF-8?q?=E6=95=B0=E6=8D=AE=E5=BA=8F=E5=88=97=E5=8C=96=E6=96=B9=E6=B3=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/java/com/ljsd/CoreService.java | 5 +++++ .../com/ljsd/PropertyItemDeserializer.java | 20 +++++++++++++++++++ .../com/ljsd/jieling/db/redis/RedisUtil.java | 13 ++++++++++++ .../com/ljsd/jieling/logic/dao/Baubles.java | 10 ++++++++++ .../ljsd/jieling/logic/dao/PropertyItem.java | 7 +++++++ .../ljsd/jieling/logic/hero/HeroLogic.java | 2 +- .../jieling/logic/player/PlayerLogic.java | 6 ++++-- 7 files changed, 60 insertions(+), 3 deletions(-) create mode 100644 serverlogic/src/main/java/com/ljsd/PropertyItemDeserializer.java diff --git a/serverlogic/src/main/java/com/ljsd/CoreService.java b/serverlogic/src/main/java/com/ljsd/CoreService.java index e16364d86..c43b89d71 100644 --- a/serverlogic/src/main/java/com/ljsd/CoreService.java +++ b/serverlogic/src/main/java/com/ljsd/CoreService.java @@ -355,6 +355,11 @@ public class CoreService implements RPCRequestIFace.Iface { jsonObject.getJSONObject("playerManager").put("newRechargeInfo", null); jsonObject.remove("mailManager"); jsonObject.remove("storeManager"); +// jsonObject.remove("mainLevelManager"); + jsonObject.remove("mailManager"); + jsonObject.remove("userMissionManager"); + jsonObject.remove("hardStageManager"); +// jsonObject.remove("friendManager"); return jsonObject.toString(); }catch (Exception e){ e.printStackTrace(); diff --git a/serverlogic/src/main/java/com/ljsd/PropertyItemDeserializer.java b/serverlogic/src/main/java/com/ljsd/PropertyItemDeserializer.java new file mode 100644 index 000000000..1656e3c69 --- /dev/null +++ b/serverlogic/src/main/java/com/ljsd/PropertyItemDeserializer.java @@ -0,0 +1,20 @@ +package com.ljsd; + +import com.google.gson.*; +import com.ljsd.jieling.logic.dao.Baubles; +import com.ljsd.jieling.logic.dao.PropertyItem; + +import java.lang.reflect.Type; + +public class PropertyItemDeserializer implements JsonDeserializer { + @Override + public PropertyItem deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context) throws JsonParseException { + JsonObject jsonObject = json.getAsJsonObject(); + JsonPrimitive type = jsonObject.getAsJsonPrimitive("type"); + if (type != null && type.getAsString().equals("baubles")) { + return context.deserialize(json, Baubles.class); + } else { + return null; + } + } +} \ No newline at end of file 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 2dc79a23b..69ca7d321 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 @@ -1,10 +1,13 @@ package com.ljsd.jieling.db.redis; import com.google.gson.Gson; +import com.google.gson.GsonBuilder; import com.ljsd.GameApplication; +import com.ljsd.PropertyItemDeserializer; import com.ljsd.common.mogodb.util.GlobalData; import com.ljsd.jieling.core.GlobalsDef; import com.ljsd.jieling.db.mongo.AreaManager; +import com.ljsd.jieling.logic.dao.PropertyItem; import com.ljsd.jieling.util.ConfigurableApplicationContextManager; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -30,6 +33,7 @@ public class RedisUtil { private static final Logger LOGGER = LoggerFactory.getLogger(RedisUtil.class); private final Gson gson = new Gson(); + private Gson specialGson = null; private static final int MAX_TRY_TIMES = 3; //最大尝试次数,保障获取/存储成功 private static final int FAILED_SLEEP = 2; //每次失败最大停顿时间 @@ -1495,4 +1499,13 @@ public class RedisUtil { } } + public Gson getSpecialGson(){ + if(this.specialGson == null){ + GsonBuilder builder = new GsonBuilder(); + builder.registerTypeAdapter(PropertyItem.class, new PropertyItemDeserializer()); + specialGson = builder.create(); + } + return specialGson; + } + } diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/Baubles.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/Baubles.java index 82ba3f161..117cf8d4d 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/Baubles.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/Baubles.java @@ -8,6 +8,8 @@ import java.util.Set; */ public class Baubles extends PropertyItem{ + private String type = "baubles"; + private String masterId = "";//主法宝id,用于庇佑 private Set blessList = new HashSet<>();//庇佑 @@ -48,4 +50,12 @@ public class Baubles extends PropertyItem{ this.blessList.add(baublesId); updateString("blessList", blessList); } + + public String getType() { + return type; + } + + public void setType(String type) { + this.type = "baubles"; + } } diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/PropertyItem.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/PropertyItem.java index 6fd98b2f8..2bfad227c 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/PropertyItem.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/PropertyItem.java @@ -1,5 +1,7 @@ package com.ljsd.jieling.logic.dao; +import com.fasterxml.jackson.annotation.JsonSubTypes; +import com.fasterxml.jackson.annotation.JsonTypeInfo; import com.ljsd.common.mogodb.MongoBase; import com.ljsd.jieling.logic.dao.root.User; import com.ljsd.jieling.util.KeyGenUtils; @@ -7,6 +9,11 @@ import com.ljsd.jieling.util.UUIDEnum; import org.slf4j.Logger; import org.slf4j.LoggerFactory; + +//@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, property = "type") +//@JsonSubTypes({ +// @JsonSubTypes.Type(value = Baubles.class, name = "baubles") +//}) public class PropertyItem extends MongoBase { private static final Logger LOGGER = LoggerFactory.getLogger(PropertyItem.class); 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 9d2b79066..1575a1c18 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 @@ -2338,7 +2338,7 @@ public class HeroLogic { } /** - * 本服玩家使用 + * 获取英雄所有技能 */ public List getHeroSkillList(User user, Hero hero) { HeroVo heroVo = HeroVo.createHeroVo(user, hero); 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 71926d180..7531127e6 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 @@ -1,7 +1,10 @@ package com.ljsd.jieling.logic.player; +import com.alibaba.fastjson.JSONObject; import com.google.gson.Gson; +import com.google.gson.GsonBuilder; import com.ljsd.GameApplication; +import com.ljsd.PropertyItemDeserializer; import com.ljsd.jieling.config.clazzStaticCfg.CommonStaticConfig; import com.ljsd.jieling.config.clazzStaticCfg.TaskStaticConfig; import com.ljsd.jieling.core.GlobalsDef; @@ -1385,7 +1388,7 @@ public class PlayerLogic { String ip = rpcString.split(":")[0]; String port = rpcString.split(":")[3]; StringBuilder sb = new StringBuilder(); - Gson gson = RedisUtil.getInstence().getGson(); + Gson gson = RedisUtil.getInstence().getSpecialGson(); sb.append("RPCCORE").append("|").append(ip).append("|").append(port); ClientAdapterPo rPCClient = null; String userStr = null ; @@ -1401,7 +1404,6 @@ public class PlayerLogic { LOGGER.info("callback=> rPCClient is null "); } } - if (userStr == null || userStr.isEmpty()) { LOGGER.error("getUserByRpc ,userStr == null uid={}", uid); return null;