From 54315803cac3316dac0a7b1fcbf5805600604d1b Mon Sep 17 00:00:00 2001 From: duhui Date: Fri, 6 Jan 2023 11:34:46 +0800 Subject: [PATCH] =?UTF-8?q?=E7=BA=BF=E4=B8=8B=E8=BF=94=E5=88=A9,=E5=8D=95?= =?UTF-8?q?=E6=97=A5=E7=B4=AF=E5=85=85=E6=B4=BB=E5=8A=A8=E9=87=8D=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../activityLogic/GmActivityLogic.java | 58 +++++++++++++++++-- .../src/main/java/manager/STableManager.java | 2 +- 2 files changed, 55 insertions(+), 5 deletions(-) diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/activityLogic/GmActivityLogic.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/activityLogic/GmActivityLogic.java index ea1309396..1254e16a4 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/activityLogic/GmActivityLogic.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/activityLogic/GmActivityLogic.java @@ -83,13 +83,16 @@ public class GmActivityLogic implements IEventHandler { // 获取全部活动信息 GmActivity gmActivity = manager.getActivityMap().getOrDefault(entry.getKey(), new GmActivity(arbActivity)); switch (gmActivity.getType()){ + case 1://单日累充 + getRewardToSingleTotalRecharge(user, gmActivity, config.getPrice()); + break; case 2://妖晶返利 - getRewardToMonsterCurrencyBack(user, gmActivity,config.getPrice()); + getRewardToMonsterCurrencyBack(user, gmActivity, config.getPrice()); break; case 4://单笔充值 - getRewardToSingleRecharge(user, gmActivity,config.getPrice()); + getRewardToSingleRecharge(user, gmActivity, config.getPrice()); break; - default://1、3、5、6(单笔累充,多日累充,永久大充,开服首日累充) + default://3、5、6(多日累充,永久大充,开服首日累充) getDefaultReward(user, gmActivity,config.getPrice()); break; } @@ -171,6 +174,53 @@ public class GmActivityLogic implements IEventHandler { gmActivity.setValue(num); } + /** + * 单日累充 + * @param gmActivity + * @param price + */ + private void getRewardToSingleTotalRecharge(User user, GmActivity gmActivity, double price) throws Exception { + List gmMissionList = findAllGmMission(gmActivity.getId()); + int num = gmActivity.getValue() + (int) price; + // do-while循环,重置奖励后再次验证 + boolean verify; + do { + verify = false; + for (ARBMission arbMission : gmMissionList) { + GmMission gmMission = gmActivity.getMissionMap().getOrDefault(arbMission.getId(), new GmMission()); + // 已领取 + if (gmMission.getState() == 1){ + continue; + } + // 不能领 + if (num < arbMission.getRechargeNum()){ + continue; + } + // 发邮件 + String mailReward = ItemUtil.getMailReward(arbMission.getReward()); + if (!StringUtil.isEmpty(mailReward)){ + MailLogic.getInstance().sendMail(user.getId(),arbMission.getActivity().getName(),arbMission.getTitle(),mailReward,TimeUtils.nowInt(),Global.MAIL_EFFECTIVE_TIME); + } + // 记录到库 + gmMission.setId(arbMission.getId()); + gmMission.setState(1); + gmActivity.putMissionMap(arbMission.getId(), gmMission); + } + + // 领取完全部奖励后重置活动 + long count = gmActivity.getMissionMap().values().stream().filter(v -> v.getState() == 1).count(); + if (gmMissionList.size() == count){ + // 重置活动对象 + gmActivity.setMissionMap(new HashMap<>()); + // 减去满级金额 + num-=gmMissionList.get(gmMissionList.size()-1).getRechargeNum(); + verify = true; + } + } + while (verify); + gmActivity.setValue(num); + } + /** * 单笔充值奖励 * @param gmActivity @@ -264,7 +314,7 @@ public class GmActivityLogic implements IEventHandler { manager.removeActivity(gmActivity.getId()); continue; } - // 单笔累充和妖晶返利每日清零 + // 单日累充和妖晶返利每日清零 if (gmActivity.getType() == 1 || gmActivity.getType() == 2){ gmActivity.setValue(0); gmActivity.setMissionMap(new HashMap<>()); diff --git a/tablemanager/src/main/java/manager/STableManager.java b/tablemanager/src/main/java/manager/STableManager.java index ab1beeb67..9fb32c2e5 100644 --- a/tablemanager/src/main/java/manager/STableManager.java +++ b/tablemanager/src/main/java/manager/STableManager.java @@ -312,7 +312,7 @@ public class STableManager { field.setAccessible(flag); map.put(id, obj); } catch (NoSuchFieldException e) { - LOGGER.error("读表报错,表name:{},异常:{}",clazz.getSimpleName(),e); + LOGGER.error("读表报错,表name:{},异常:{}",clazz.getSimpleName(),e.getMessage()); } } }