From b1f60947ca30681c49ca096a5ebec7ae702e0d96 Mon Sep 17 00:00:00 2001 From: grimm <1769111741@qq.com> Date: Thu, 21 Mar 2024 14:32:32 +0800 Subject: [PATCH] =?UTF-8?q?=E8=A3=85=E5=A4=87=E5=8A=A0=E9=81=93=E5=85=B7?= =?UTF-8?q?=E6=97=A5=E5=BF=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/ljsd/jieling/logic/dao/Item.java | 1 - .../com/ljsd/jieling/logic/item/ItemLog.java | 14 +++++ .../java/com/ljsd/jieling/util/ItemUtil.java | 54 ++++++++++++------- 3 files changed, 49 insertions(+), 20 deletions(-) diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/Item.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/Item.java index 0ff4ea4a3..f64412bda 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/Item.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/Item.java @@ -24,7 +24,6 @@ public class Item extends MongoBase { } - public int getItemId() { return itemId; } diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/item/ItemLog.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/item/ItemLog.java index c310a600b..91e216113 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/item/ItemLog.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/item/ItemLog.java @@ -16,6 +16,9 @@ public class ItemLog { private String id; @Field(value = "uid") private int uid; + /** + * 0 增加,1 减少 + */ @Field(value = "type") private int type; @Field(value = "level") @@ -46,6 +49,17 @@ public class ItemLog { this.itemTotalNum = itemTotalNum; } + public ItemLog(User user, int type, int reason, int itemId, long itemNum, long itemTotalNum) { + this.uid = user.getId(); + this.type = type; + this.level = user.getPlayerInfoManager().getLevel(); + this.time = String.valueOf(TimeUtils.now()); + this.reason = reason; + this.itemId = itemId; + this.itemNum = itemNum; + this.itemTotalNum = itemTotalNum; + } + public ItemLog(User user, int type, int reason, Item item, long itemNum) { this.uid = user.getId(); this.type = type; diff --git a/serverlogic/src/main/java/com/ljsd/jieling/util/ItemUtil.java b/serverlogic/src/main/java/com/ljsd/jieling/util/ItemUtil.java index d0f42368e..f239fcacb 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/util/ItemUtil.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/util/ItemUtil.java @@ -71,7 +71,7 @@ public class ItemUtil { addCard(user, itemObj.getCardMap(), dropBuilder,reason); addEquip(user, itemObj.getEquipMap(), dropBuilder,reason); addSpecialMonster(user,itemObj,dropBuilder,reason); - addMagicSoldier(user,itemObj.getMagicSoldierMap(),dropBuilder); + addMagicSoldier(user,itemObj.getMagicSoldierMap(),dropBuilder,reason); addGemNew(user,itemObj.getGemNewMap(),dropBuilder); } @@ -1189,18 +1189,20 @@ public class ItemUtil { StringBuilder reward = new StringBuilder(); List jewelList = new CopyOnWriteArrayList<>(); + Map propertyItemMap = user.getEquipManager().getEquipMap(); // jewelMap 为了做宝物礼包推送<宝物品质, 数量> ArrayList jewelPush = new ArrayList<>(); for (Map.Entry entry : equipMap.entrySet()) { Integer key = entry.getKey(); int count = entry.getValue(); + long count1 = propertyItemMap.values().stream().filter(v -> v.getEquipId() == key).count(); int itemType = SItem.getsItemMap().get(key).getItemType(); if(!ifPropertyItem(itemType)){ continue; } for (int i = 0; i < count; i++) { // 到达装备上限,发送邮件,不走背包 - if (user.getEquipManager().getEquipMap().size() >= gameSetting.getEquipNumlimit()) { + if (propertyItemMap.size() >= gameSetting.getEquipNumlimit()) { reward.append(key).append("#1").append("|"); if (reward.length() > 0){ reward = new StringBuilder(reward.substring(0, reward.length() - 1)); @@ -1211,6 +1213,8 @@ public class ItemUtil { ReportUtil.onReportEvent(user,ReportEventEnum.GET_TREASURE.getType(), key,reason); } } + // 后台日志 + ItemLogic.getInstance().addItemLog(new ItemLog(user, 0, reason, key, count, count+count1)); } if (reward.length() > 0) { @@ -1298,42 +1302,42 @@ public class ItemUtil { int hasHeroNum = user.getHeroManager().getHeroMap().size(); String title = SErrorCodeEerverConfig.getI18NMessage("card_bag_limit_title"); String content = SErrorCodeEerverConfig.getI18NMessage("card_bag_limit_txt"); + int nowInt = TimeUtils.nowInt(); if (hasHeroNum >= gameSetting.getHeroNumlimit()){ String reward = getLimitReward(cardMap); - int nowTime =(int) (TimeUtils.now()/1000); - MailLogic.getInstance().sendMail(user.getId(),title,content,reward,nowTime,Global.MAIL_EFFECTIVE_TIME); + MailLogic.getInstance().sendMail(user.getId(),title,content,reward,nowInt,Global.MAIL_EFFECTIVE_TIME); MessageUtil.nofityBagIsFull(user); return; } List heroList = new CopyOnWriteArrayList<>(); StringBuilder reward = new StringBuilder(); for (Map.Entry entry : cardMap.entrySet()) { + Integer itemId = entry.getKey(); int count = entry.getValue(); for (int i = 0; i < count; i++) { if (user.getHeroManager().getHeroMap().size() >= gameSetting.getHeroNumlimit()) { if (reward.length() == 0){ - reward = new StringBuilder(entry.getKey() + "#1"); + reward = new StringBuilder(itemId + "#1"); }else{ - reward.append("|").append(entry.getKey()).append("#1"); + reward.append("|").append(itemId).append("#1"); } continue; } - addCard(user, entry.getKey(),heroList,reason); - SItem sItem = SItem.getsItemMap().get(entry.getKey()); + addCard(user, itemId,heroList,reason); + SItem sItem = SItem.getsItemMap().get(itemId); extraDropAop(user,dropBuilder,sItem); } // 回退所得神将不更新任务或活动 if (reason == BIReason.HERO_RETURN) { continue; } - fiveStarEvent(user,entry.getKey()); + fiveStarEvent(user, itemId); if(reason != BIReason.HERO_RANDOM){ - fiveStarPushByCombine(user,entry.getKey(),count); + fiveStarPushByCombine(user, itemId,count); } } if (reward.length() > 0) { - int nowTime = (int) (TimeUtils.now() / 1000); - MailLogic.getInstance().sendMail(user.getId(), title, content, reward.toString(), nowTime, Global.MAIL_EFFECTIVE_TIME); + MailLogic.getInstance().sendMail(user.getId(), title, content, reward.toString(), nowInt, Global.MAIL_EFFECTIVE_TIME); MessageUtil.nofityBagIsFull(user); } dropBuilder.addAllHero(heroList); @@ -1866,16 +1870,20 @@ public class ItemUtil { if(itemObj.getSpecialMonsterMap().isEmpty()){ return; } + Map pokemonMap = user.getPokemonManager().getPokemonMap(); for(Map.Entry entry:itemObj.getSpecialMonsterMap().entrySet()){ - for(int i = 0 ; i v.getTmpId() == itemId).count(); + for(int i = 0; i < number; i++){ + Pokemon pokemon = new Pokemon(user.getId(), itemId); user.getPokemonManager().addPokemon(pokemon); if(!user.getPokemonManager().getPokemonGot().contains(pokemon.getTmpId())){ user.getPokemonManager().addPokemonGot(pokemon.getTmpId()); } dropBuilder.addPokemon(CBean2Proto.getPokemon(pokemon)); - SSpiritAnimal animal = STableManager.getConfig(SSpiritAnimal.class).get(entry.getKey()); - ReportUtil.onReportEvent(user,ReportEventEnum.GET_BEAST.getType(),entry.getKey(),animal.getQuality(),reason); + SSpiritAnimal animal = STableManager.getConfig(SSpiritAnimal.class).get(itemId); + ReportUtil.onReportEvent(user,ReportEventEnum.GET_BEAST.getType(), itemId,animal.getQuality(),reason); if (animal.getQuality() >= SSpecialConfig.getIntegerValue(SSpecialConfig.ANIMAL_BROADCAST_QUALITY)&&reason!=BIReason.COMPOS_HERO_REWARD) { //策划资质改成星级 String nameColor = user.getPlayerInfoManager().getNameColor(); String message = SErrorCodeEerverConfig.getI18NMessageNeedConvert("animal_get_broadcast_content", @@ -1886,6 +1894,8 @@ public class ItemUtil { } } } + // 后台日志 + ItemLogic.getInstance().addItemLog(new ItemLog(user, 0, reason, itemId, count, count+number)); } // 触发任务,东海寻仙 user.getUserMissionManager().onGameEvent(user,GameEvent.ONE_MISSION_TYPE_CONSUME,MissionType.HAVE_ID_STAR_LV_POKEMON_NUM); @@ -1894,17 +1904,23 @@ public class ItemUtil { /** * 掉落神兵 */ - private static void addMagicSoldier(User user,Map map,CommonProto.Drop.Builder dropBuilder) { + private static void addMagicSoldier(User user,Map map,CommonProto.Drop.Builder dropBuilder, int reason) { if(map == null || map.isEmpty()){ return; } MagicSoldierManager manager = user.getMagicSoldierManager(); + Map soldierMap = manager.getMagicSoldierMap(); for (Map.Entry entry : map.entrySet()) { - for (int i = 0; i < entry.getValue(); i++) { - MagicSoldier soldier = new MagicSoldier(user.getId(), entry.getKey()); + Integer itemId = entry.getKey(); + Integer number = entry.getValue(); + long count = soldierMap.values().stream().filter(v -> v.getTmpId() == itemId).count(); + for (int i = 0; i < number; i++) { + MagicSoldier soldier = new MagicSoldier(user.getId(), itemId); manager.setMagicSoldier(soldier); dropBuilder.addMagicSoldier(CBean2Proto.toBeanMagicSoldier(soldier)); } + // 后台日志 + ItemLogic.getInstance().addItemLog(new ItemLog(user, 0, reason, itemId, count, count+number)); } }