From 10e3680e1e6442f2726435609c2e15767a60ea83 Mon Sep 17 00:00:00 2001 From: grimm <1769111741@qq.com> Date: Mon, 10 Jun 2024 18:35:24 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A4=A9=E5=A4=A90.1=E6=8A=98=E6=B4=BB?= =?UTF-8?q?=E5=8A=A8bug=E4=BF=AE=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../jieling/logic/activity/ActivityLogic.java | 66 +++++++++++++++++++ .../activity/EveryDayDiscountActivity.java | 45 ++----------- .../jieling/logic/store/BuyGoodsNewLogic.java | 3 + .../src/main/java/config/SEveryDayGift.java | 5 ++ 4 files changed, 78 insertions(+), 41 deletions(-) diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/ActivityLogic.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/ActivityLogic.java index 44dfae84f..002d41ba0 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/ActivityLogic.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/ActivityLogic.java @@ -7,6 +7,7 @@ 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.exception.ErrorTableException; import com.ljsd.jieling.globals.BIReason; import com.ljsd.jieling.globals.GlobalItemType; import com.ljsd.jieling.handler.activity.BlessInfoConfig; @@ -23,6 +24,8 @@ import com.ljsd.jieling.logic.dao.SecretBoxManager; import com.ljsd.jieling.logic.dao.UserManager; import com.ljsd.jieling.logic.dao.root.GlobalSystemControl; import com.ljsd.jieling.logic.dao.root.User; +import com.ljsd.jieling.logic.item.ItemLog; +import com.ljsd.jieling.logic.item.ItemLogic; import com.ljsd.jieling.logic.mission.GameEvent; import com.ljsd.jieling.logic.mission.MissionType; import com.ljsd.jieling.logic.mission.event.MissionEventDistributor; @@ -2004,4 +2007,67 @@ public class ActivityLogic implements IEventHandler{ return result; } + /** + * 天天0.1折购买校验 + */ + public void EveryDayDiscountBuyCheck(User user, int goodId, int update) throws ErrorTableException { + long now = TimeUtils.now(); + Map giftMap = SEveryDayGift.giftactivitymap.get(goodId); + if (giftMap == null || giftMap.isEmpty()){ + LOGGER.error("天天0.1折扣活动,查验购买次数退出,EveryDayGift没有活动信息,礼包id:{},耗时:{}", goodId, TimeUtils.now()-now); + throw new ErrorTableException(183);// 档位不存在 + } + for (Map.Entry entry : giftMap.entrySet()) { + Integer activityId = entry.getKey(); + ActivityMission mission = user.getActivityManager().getActivityMissionMap().get(activityId); + if (mission == null){ + LOGGER.error("天天0.1折扣活动,查验购买次数退出,玩家没有活动信息,uid:{},活动id:{},耗时:{}",user.getId(), activityId,TimeUtils.now()-now); + continue; + } + EveryDayDiscountBuyCheckAndUpdate(user, activityId, entry.getValue().getId(), update); + break; + } + } + + /** + * 天天0.1折购买校验并消耗 + */ + public void EveryDayDiscountBuyCheckAndUpdate(User user, int activityId, int missionId, int update) throws ErrorTableException { + long now = TimeUtils.now(); + SEveryDayGift dayGift = SEveryDayGift.map.get(missionId); + + ActivityMission mission = user.getActivityManager().getActivityMissionMap().get(activityId); + ActivityProgressInfo progressInfo = mission.getActivityMissionMap().get(missionId); + if (progressInfo == null){ + LOGGER.error("天天0.1折扣活动,查验购买次数退出,没有商品信息,uid:{},活动id:{},商品id:{},耗时:{}",user.getId(), activityId, missionId, TimeUtils.now()-now); + throw new ErrorTableException(183);// 档位不存在 + } + if (progressInfo.getState() != 1){ + LOGGER.error("天天0.1折扣活动,查验购买次数退出,商品为解锁,uid:{},活动id:{},商品id:{},耗时:{}",user.getId(), activityId, missionId, TimeUtils.now()-now); + throw new ErrorTableException(184);// 档位未解锁 + } + if (progressInfo.getProgrss() <= 0){ + LOGGER.error("天天0.1折扣活动,查验购买次数退出,商品够吗次数不足,uid:{},活动id:{},商品id:{},耗时:{}",user.getId(), activityId, missionId, TimeUtils.now()-now); + throw new ErrorTableException(185);// 购买次数不足 + } + // 消耗 + if (update == 1){ + LOGGER.error("天天0.1折扣活动,查验购买次数消耗,uid:{},活动id:{},商品id:{}",user.getId(), activityId, missionId); + // 消耗默认次数 + if (progressInfo.getProgrss() == dayGift.getLimit()){ + int packId = ToolsUtil.getPackId(missionId); + ActivityProgressInfo packInfo = mission.getActivityMissionMap().get(packId); + if (packInfo != null && packInfo.getProgrss() > 0){ + packInfo.setProgrss(packInfo.getProgrss() - 1); + mission.getActivityMissionMap().put(packId,packInfo); + } + } + // 道具日志记录 + ItemLogic.getInstance().addItemLog(new ItemLog(user, 1, BIReason.EVERYDAY_DISCOUNT_COST_MISSION_COUNT,dayGift.getItemID(), progressInfo.getProgrss(), progressInfo.getProgrss()-1)); + progressInfo.setProgrss(progressInfo.getProgrss() - 1); + // 更新数据库 + mission.getActivityMissionMap().put(missionId,progressInfo); + } + } + } diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/EveryDayDiscountActivity.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/EveryDayDiscountActivity.java index 1ae329dd4..908e7ba61 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/EveryDayDiscountActivity.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/EveryDayDiscountActivity.java @@ -190,50 +190,13 @@ public class EveryDayDiscountActivity extends AbstractActivity { User user = UserManager.getUser(event1.getUserId()); int giftId = event1.getGiftId(); int updateState = event1.getUpdateState(); - - ActivityMission mission = user.getActivityManager().getActivityMissionMap().get(id); - if (mission == null){ - LOGGER.error("天天0.1折扣活动,查验购买次数退出,玩家没有活动信息,uid:{},活动id:{},耗时:{}",user.getId(), id,TimeUtils.now()-now); - throw new ErrorTableException(182);// 活动不存在 - } SEveryDayGift dayGift = SEveryDayGift.activitygiftmap.getOrDefault(id, new HashMap<>()).get(giftId); if (dayGift == null){ - LOGGER.error("天天0.1折扣活动,查验购买次数退出,EveryDayGift没有活动信息,活动id:{},耗时:{}", id,TimeUtils.now()-now); - throw new ErrorTableException(183);// 档位不存在 - } - int missionId = dayGift.getId(); - ActivityProgressInfo progressInfo = mission.getActivityMissionMap().get(missionId); - if (progressInfo == null){ - LOGGER.error("天天0.1折扣活动,查验购买次数退出,没有商品信息,uid:{},活动id:{},商品id:{},耗时:{}",user.getId(), id, missionId, TimeUtils.now()-now); - throw new ErrorTableException(183);// 档位不存在 - } - if (progressInfo.getState() != 1){ - LOGGER.error("天天0.1折扣活动,查验购买次数退出,商品为解锁,uid:{},活动id:{},商品id:{},耗时:{}",user.getId(), id, missionId, TimeUtils.now()-now); - throw new ErrorTableException(184);// 档位未解锁 - } - if (progressInfo.getProgrss() <= 0){ - LOGGER.error("天天0.1折扣活动,查验购买次数退出,商品够吗次数不足,uid:{},活动id:{},商品id:{},耗时:{}",user.getId(), id, missionId, TimeUtils.now()-now); - throw new ErrorTableException(185);// 购买次数不足 - } - // 消耗 - if (updateState == 1){ - LOGGER.error("天天0.1折扣活动,查验购买次数消耗,uid:{},活动id:{},商品id:{}",user.getId(), id, missionId); - // 消耗默认次数 - if (progressInfo.getProgrss() == dayGift.getLimit()){ - int packId = ToolsUtil.getPackId(missionId); - ActivityProgressInfo packInfo = mission.getActivityMissionMap().get(packId); - if (packInfo != null && packInfo.getProgrss() > 0){ - packInfo.setProgrss(packInfo.getProgrss() - 1); - mission.getActivityMissionMap().put(packId,packInfo); - } - } - // 道具日志记录 - ItemLogic.getInstance().addItemLog(new ItemLog(user, 1, BIReason.EVERYDAY_DISCOUNT_COST_MISSION_COUNT,dayGift.getItemID(), progressInfo.getProgrss(), progressInfo.getProgrss()-1)); - progressInfo.setProgrss(progressInfo.getProgrss() - 1); - // 更新数据库 - mission.getActivityMissionMap().put(missionId,progressInfo); - sendActivityProgress(user, null); + LOGGER.error("天天0.1折扣活动,查验购买次数退出,EveryDayGift未找到对应档位:{},礼包id:{},耗时:{}",id,giftId,TimeUtils.now()-now); + return; } + ActivityLogic.getInstance().EveryDayDiscountBuyCheckAndUpdate(user,id,dayGift.getId(),updateState); + sendActivityProgress(user, null); LOGGER.info("天天0.1折扣活动,查验购买次数:{},耗时:{}",id,TimeUtils.now()-now); } diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/store/BuyGoodsNewLogic.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/store/BuyGoodsNewLogic.java index 3fb9fe1ea..6f0a30ca1 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/store/BuyGoodsNewLogic.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/store/BuyGoodsNewLogic.java @@ -1079,6 +1079,9 @@ public class BuyGoodsNewLogic { throw new ErrorTableException(104,"礼包已购买"); } + // 天天礼包活动查验购买 + ActivityLogic.getInstance().EveryDayDiscountBuyCheck(user, goodsId, 0); + //生成cp订单号 String order = "0"; if(config.getPrice() > 0){ diff --git a/tablemanager/src/main/java/config/SEveryDayGift.java b/tablemanager/src/main/java/config/SEveryDayGift.java index 5de1d69f0..c9356ae5e 100644 --- a/tablemanager/src/main/java/config/SEveryDayGift.java +++ b/tablemanager/src/main/java/config/SEveryDayGift.java @@ -31,6 +31,8 @@ public class SEveryDayGift implements BaseConfig { public static Map> activitygiftmap = new HashMap<>(); + public static Map> giftactivitymap = new HashMap<>(); + @Override public void init() throws Exception { map = STableManager.getConfig(SEveryDayGift.class); @@ -40,6 +42,9 @@ public class SEveryDayGift implements BaseConfig { activitygiftmap.putIfAbsent(value.getGlobalActivity(), new HashMap<>()); activitygiftmap.get(value.getGlobalActivity()).put(value.getRechargeID(), value); + + giftactivitymap.putIfAbsent(value.getRechargeID(), new HashMap<>()); + giftactivitymap.get(value.getRechargeID()).put(value.getGlobalActivity(), value); } }