From 517f156037e0acb94062ef32a51432c323886bf0 Mon Sep 17 00:00:00 2001 From: lilei Date: Fri, 14 Aug 2020 09:39:38 +0800 Subject: [PATCH] =?UTF-8?q?=E6=AF=8F=E6=97=A5=E7=AD=BE=E5=88=B0=E5=AE=9D?= =?UTF-8?q?=E7=AE=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ljsd/jieling/handler/SignInHandler.java | 9 ++++ .../jieling/logic/activity/ActivityType.java | 1 + .../logic/activity/ActivityTypeEnum.java | 5 ++- .../logic/activity/SignInSumActivity.java | 44 +++++++++++++++++-- .../logic/activity/event/SignInEvent.java | 22 ++++++++++ .../HeroFiveStarGetEventHandler.java | 1 + 6 files changed, 76 insertions(+), 6 deletions(-) create mode 100644 serverlogic/src/main/java/com/ljsd/jieling/logic/activity/event/SignInEvent.java diff --git a/serverlogic/src/main/java/com/ljsd/jieling/handler/SignInHandler.java b/serverlogic/src/main/java/com/ljsd/jieling/handler/SignInHandler.java index 202b1278b..d1d1136a5 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/handler/SignInHandler.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/handler/SignInHandler.java @@ -4,6 +4,8 @@ import com.ljsd.jieling.core.VipPrivilegeType; import com.ljsd.jieling.exception.ErrorCode; import com.ljsd.jieling.exception.ErrorCodeException; import com.ljsd.jieling.globals.BIReason; +import com.ljsd.jieling.logic.activity.event.Poster; +import com.ljsd.jieling.logic.activity.event.SignInEvent; import com.ljsd.jieling.logic.dao.UserManager; import com.ljsd.jieling.logic.dao.root.User; import com.ljsd.jieling.logic.player.PlayerLogic; @@ -55,8 +57,15 @@ public class SignInHandler extends BaseHandler { throw new ErrorCodeException("次数不足"); } PlayerLogic.getInstance().checkAndUpdate(user, VipPrivilegeType.SIGN_AGAIN, 1); + + boolean todayFirstSign = user.getPlayerInfoManager().getSignTotay() == 0; user.getPlayerInfoManager().setSignTotay(1); + if (todayFirstSign) { + //累计签到事件 + Poster.getPoster().dispatchEvent(new SignInEvent(user.getId())); + } + int[] reward = sign.getreward(); int[][] cost = new int[1][]; cost[0] = reward; diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/ActivityType.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/ActivityType.java index a2e744b49..fe91170a1 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/ActivityType.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/ActivityType.java @@ -66,5 +66,6 @@ public interface ActivityType { int COPY_PASS = 55; // 开服福利 副本限时通过奖励 int NEW_EIGHT_LOGIN = 56;//新的八日登录 + int SIGN_BOX= 57;//累计签到宝箱 } diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/ActivityTypeEnum.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/ActivityTypeEnum.java index b26a3065b..5a6207aa2 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/ActivityTypeEnum.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/ActivityTypeEnum.java @@ -31,7 +31,7 @@ public enum ActivityTypeEnum { COPY_EXPERT(ActivityType.COPY_EXPERT, CopyExpectRankActivity::new), LEVEL_EXPERT(ActivityType.LEVEL_EXPERT, LevelExpectActivity::new), STAMINA_EXPERT(ActivityType.STAMINA_EXPERT, StaminaExpectRankActivity::new), - SIGN_IN(ActivityType.SIGN_IN, SignInSumActivity::new), + //SIGN_IN(ActivityType.SIGN_IN, SignInSumActivity::new),//因为签到没有走活动,所以SignInSunActivity类用作了累计签到奖励活动,此类暂时先不删 RECHARGE_NUM(ActivityType.RECHARGE_NUM, RechargeSumActivity::new), ESPECIALEQUIP_EXPERT(ActivityType.ESPECIALEQUIP_EXPERT, EspecialEquipExpectActivity::new), SOULEQUIP_EXPERT(ActivityType.SOULEQUIP_EXPERT, SoulEquipExpectActivity::new), @@ -49,7 +49,8 @@ public enum ActivityTypeEnum { ECPEDITION_ACTIVITY(ActivityType.ECPEDITION_ACTIVITY,DefaultEmptyActivity::new), COPY_PASS(ActivityType.COPY_PASS,ChapterRewardActivity::new), NEW_EIGHT_LOGIN(ActivityType.NEW_EIGHT_LOGIN,NewEightActivity::new), - BEAUTY_BAG(ActivityType.BEAUTY_BAG,LimitRandomCardActivity::new) + BEAUTY_BAG(ActivityType.BEAUTY_BAG,LimitRandomCardActivity::new), + SIGN_BOX(ActivityType.SIGN_BOX,SignInSumActivity::new) ; private int type; diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/SignInSumActivity.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/SignInSumActivity.java index 551c24690..96f08ab73 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/SignInSumActivity.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/SignInSumActivity.java @@ -1,15 +1,32 @@ package com.ljsd.jieling.logic.activity; import com.ljsd.jieling.jbean.ActivityMission; +import com.ljsd.jieling.jbean.ActivityProgressInfo; +import com.ljsd.jieling.logic.activity.event.IEvent; +import com.ljsd.jieling.logic.activity.event.Poster; +import com.ljsd.jieling.logic.activity.event.SignInEvent; +import com.ljsd.jieling.logic.dao.UserManager; +import com.ljsd.jieling.network.session.ISession; +import config.SActivityRewardConfig; + +import java.util.List; +import java.util.Map; + -/** - * 签到不走活动 没有逻辑处理 - */ -@Deprecated class SignInSumActivity extends AbstractActivity { + //签到宝箱领完第七天之后,重置进度 + public static int RESET_DAYS_AFTER_RECEIVED = 7; + public SignInSumActivity(int id) { super(id); + Poster.getPoster().listenEvent(this, SignInEvent.class); + } + + @Override + public void onEvent(IEvent event) throws Exception { + if(!(event instanceof SignInEvent)) return; + update(UserManager.getUser(((SignInEvent) event).getUid()),1); } @Override @@ -17,4 +34,23 @@ class SignInSumActivity extends AbstractActivity { activityMission.setV(count + activityMission.getV()); } + @Override + boolean takeRewardsProcess(ISession session, SActivityRewardConfig sActivityRewardConfig, ActivityProgressInfo activityProgressInfo) throws Exception { + return checkValue(session, sActivityRewardConfig, activityProgressInfo); + } + + @Override + public boolean takeReward(ISession session, int missionId) throws Exception { + boolean result = super.takeReward(session, missionId); + if (result) { + //取得活动奖励配置,判断下如果是7天的宝箱,则重置进度,takeReward成功之后,sActivityRewardConfig一定在 + SActivityRewardConfig config = SActivityRewardConfig.getsActivityRewardConfigByMissionId(missionId); + if (config.getValues()[0][0]== RESET_DAYS_AFTER_RECEIVED) { + reSetValue(UserManager.getUser(session.getUid())); + } + ActivityMission activityMission = UserManager.getUser(session.getUid()).getActivityManager().getActivityMissionMap().get(this.id); + sendActivityProgress(session, activityMission, null); + } + return result; + } } diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/event/SignInEvent.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/event/SignInEvent.java new file mode 100644 index 000000000..24fffe04f --- /dev/null +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/event/SignInEvent.java @@ -0,0 +1,22 @@ +package com.ljsd.jieling.logic.activity.event; + + +/** + * 每日签到事件 + * 用作处理累计签到宝箱 + */ +public class SignInEvent implements IEvent{ + private int uid; + + public SignInEvent(int uid) { + this.uid = uid; + } + + public int getUid() { + return uid; + } + + public void setUid(int uid) { + this.uid = uid; + } +} diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/eventhandler/HeroFiveStarGetEventHandler.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/eventhandler/HeroFiveStarGetEventHandler.java index f232fcd39..341dea0a5 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/eventhandler/HeroFiveStarGetEventHandler.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/eventhandler/HeroFiveStarGetEventHandler.java @@ -48,6 +48,7 @@ public class HeroFiveStarGetEventHandler implements IEventHandler { long lasttime = rechargeInfo.getTypeBagMap().get(((HeroFiveStarGetEvent) event).getStar()); int diffHourTemp = (int) ((now - lasttime) / 3600 / 1000); + //做一个验证,如果前一次的成长礼没有超出购买时间,才增加次数,否则重置为1次 if (diffHourTemp < 2) { rechargeInfo.addDyGoodsCanBuyTimes(goodsId); }else {