From d96dc3a63d7d0bad4cbe84a6f153b737fc687e89 Mon Sep 17 00:00:00 2001 From: yuanshuai <243578945@qq.com> Date: Thu, 16 Dec 2021 16:39:02 +0800 Subject: [PATCH 1/3] =?UTF-8?q?=E6=96=B0=E7=89=88=E5=A4=A9=E5=B0=8A?= =?UTF-8?q?=E9=99=8D=E4=B8=96=E4=BB=A3=E7=A0=81=E6=8F=90=E4=BA=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../jieling/logic/activity/ActivityLogic.java | 10 + .../logic/activity/NewWelfareActivity.java | 204 +++++++++++------- .../activity/event/NewWelfareTypeEnum.java | 3 +- .../jieling/logic/store/BuyGoodsNewLogic.java | 4 + 4 files changed, 144 insertions(+), 77 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 d72e4bfb2..cdacf19ad 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 @@ -436,6 +436,16 @@ public class ActivityLogic implements IEventHandler{ Map activityMissionMap = activityManager.getActivityMissionMap(); for (SGlobalActivity sGlobalActivity : sGlobalActivityMap.values()) { int activityId = sGlobalActivity.getId(); + ////天尊降世活动特殊处理 + if (activityMissionMap.containsKey(42)){ + if (activityId==4201){ + continue; + } + }else{ + if (activityId==42){ + continue; + } + } if (openActivityIds.contains(activityId)) { int[] ifOpen = sGlobalActivity.getIfOpen(); if (ifOpen == null || ifOpen.length <= 0){ diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/NewWelfareActivity.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/NewWelfareActivity.java index 7cb3fdd6a..c0704938b 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/NewWelfareActivity.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/NewWelfareActivity.java @@ -32,96 +32,176 @@ public class NewWelfareActivity extends AbstractActivity { @Override public void onEvent(IEvent event) throws Exception { - if(! (event instanceof NewWelfareEvent) ){ - return; - } + if (!(event instanceof NewWelfareEvent)) { + return; + } + if (this.id == 42) { + oldActivityEvent(event); + } else { + NewWelfareEvent newWelfareEvent = (NewWelfareEvent) event; + if (newWelfareEvent.getType() == NewWelfareTypeEnum.BUY_1106.getType()) { + User user = newWelfareEvent.getUser(); + ActivityMission activityMission = user.getActivityManager().getActivityMissionMap().get(id); + for (Map.Entry item : activityMission.getActivityMissionMap().entrySet()) { + ActivityProgressInfo activityProgressInfo = item.getValue(); + int missionId=item.getKey(); + if (missionId==4209){ + activityProgressInfo.setState(1); + } + activityMission.getActivityMissionMap().put(item.getKey(), activityProgressInfo); + } + //更新进度 + ISession sessionByUid = OnlineUserManager.getSessionByUid(user.getId()); + sendActivityProgress(sessionByUid, activityMission, null); + } + } + } + + @Override + public boolean takeReward(ISession session, int missionId) throws Exception { + if (this.id == 42) { + User user = UserManager.getUser(session.getUid()); + SGlobalActivity sGlobalActivity = SGlobalActivity.getsGlobalActivityMap().get(id); + if (sGlobalActivity == null || !user.getActivityManager().getActivityMissionMap().containsKey(id)) { + throw new ErrorCodeException(ErrorCode.SERVER_SELF_DEFINE); + } + ActivityMission activityMission = user.getActivityManager().getActivityMissionMap().get(id); + Map activityProgressInfoMap = activityMission.getActivityMissionMap(); + oldActivityTakeReward(session,missionId,user,activityMission,activityProgressInfoMap); + } else { + super.takeReward(session,missionId); + } + + + return true; + } + + @Override + public void getAllMissRewards(User user, ISession session, List itemAttrs) { + if (this.id == 42) { + SGlobalActivity sGlobalActivity = SGlobalActivity.getsGlobalActivityMap().get(id); + if (sGlobalActivity == null || !user.getActivityManager().getActivityMissionMap().containsKey(id)) { + return; + } + ActivityMission activityMission = user.getActivityManager().getActivityMissionMap().get(id); + Map activityProgressInfoMap = activityMission.getActivityMissionMap(); + for (ActivityProgressInfo activityProgressInfo : activityProgressInfoMap.values()) { + if (activityProgressInfo.getState() != 1) { + return; + } + } + for (ActivityProgressInfo activityProgressInfo : activityProgressInfoMap.values()) { + activityProgressInfo.setState(2); + } + + for (Map.Entry item : activityProgressInfoMap.entrySet()) { + item.getValue().setState(2); + activityMission.getActivityMissionMap().put(item.getKey(), item.getValue()); + } + + List sActivityRewardConfigs = SActivityRewardConfig.getsActivityRewardConfigByActivityId(id); + itemAttrs.add(sActivityRewardConfigs.get(0).getReward()); + }else{ +// super.getAllMissRewards(user,session,itemAttrs); + } + } + + + @Override + void updateProgress(ActivityMission activityMission, int count) { + Map activityProgressInfoMap = activityMission.getActivityMissionMap(); + for (Map.Entry item : activityProgressInfoMap.entrySet()) { + ActivityProgressInfo activityProgressInfo = item.getValue(); + int missionId=item.getKey(); + SActivityRewardConfig rewardConfig=SActivityRewardConfig.getsActivityRewardConfigByMissionId(missionId); + activityProgressInfo.setProgrss(count); + if (activityProgressInfo.getProgrss()>=rewardConfig.getValues()[0][0]&&rewardConfig.getReward().length<=0&&missionId!=4209){ + activityProgressInfo.setState(ActivityType.HAD_TAKED); + } + activityMission.getActivityMissionMap().put(item.getKey(), activityProgressInfo); + } + } + + private void oldActivityEvent(IEvent event) { NewWelfareEvent newWelfareEvent = (NewWelfareEvent) event; - User user =newWelfareEvent.getUser(); + User user = newWelfareEvent.getUser(); ActivityMission activityMission = user.getActivityManager().getActivityMissionMap().get(id); - if( null == activityMission){ + if (null == activityMission) { return; } List sActivityRewardConfigs = SActivityRewardConfig.getsActivityRewardConfigByActivityId(id); Map activityProgressInfoMap = activityMission.getActivityMissionMap(); boolean isUpdate = false; - for(SActivityRewardConfig sActivityRewardConfig : sActivityRewardConfigs){ + for (SActivityRewardConfig sActivityRewardConfig : sActivityRewardConfigs) { ActivityProgressInfo activityProgressInfo = activityProgressInfoMap.get(sActivityRewardConfig.getId()); - if(sActivityRewardConfig.getSort()==1){//拿sort区分新老至尊降世活动任务 - if(activityProgressInfo.getState() == 1){ + if (sActivityRewardConfig.getSort() == 1) {//拿sort区分新老至尊降世活动任务 + if (activityProgressInfo.getState() == 1) { continue; } - if(sActivityRewardConfig.getValues()[0][0] == newWelfareEvent.getType() ){ + if (sActivityRewardConfig.getValues()[0][0] == newWelfareEvent.getType()) { int parm = newWelfareEvent.getParm(); - if( newWelfareEvent.getType() == NewWelfareTypeEnum.LOGIN_TIMES.getType()){ - activityProgressInfo.setProgrss(activityProgressInfo.getProgrss()+1); - parm=activityProgressInfo.getProgrss(); + if (newWelfareEvent.getType() == NewWelfareTypeEnum.LOGIN_TIMES.getType()) { + activityProgressInfo.setProgrss(activityProgressInfo.getProgrss() + 1); + parm = activityProgressInfo.getProgrss(); } - if(parm ==sActivityRewardConfig.getValues()[1][0]){ - if(newWelfareEvent.getType() == NewWelfareTypeEnum.RECHARGE_BUY.getType()){ + if (parm == sActivityRewardConfig.getValues()[1][0]) { + if (newWelfareEvent.getType() == NewWelfareTypeEnum.RECHARGE_BUY.getType()) { //可领取奖励 activityProgressInfo.setState(3); - }else{ + } else { activityProgressInfo.setState(1); } activityMission.getActivityMissionMap().put(sActivityRewardConfig.getId(), activityProgressInfo); isUpdate = true; } } - }else{ + } else { //新增任务 - if(activityProgressInfo.getState()!= 0){ + if (activityProgressInfo.getState() != 0) { continue; } - if(sActivityRewardConfig.getValues()[0][0] == newWelfareEvent.getType() ){ + if (sActivityRewardConfig.getValues()[0][0] == newWelfareEvent.getType()) { int parm = newWelfareEvent.getParm(); - if (newWelfareEvent.getType() == NewWelfareTypeEnum.ALL_MISSION_FIN.getType()||newWelfareEvent.getType() == NewWelfareTypeEnum.EXPLORE.getType()){ - activityProgressInfo.setProgrss(activityProgressInfo.getProgrss()+1); - parm=activityProgressInfo.getProgrss(); + if (newWelfareEvent.getType() == NewWelfareTypeEnum.ALL_MISSION_FIN.getType() || newWelfareEvent.getType() == NewWelfareTypeEnum.EXPLORE.getType()) { + activityProgressInfo.setProgrss(activityProgressInfo.getProgrss() + 1); + parm = activityProgressInfo.getProgrss(); } - if(parm ==sActivityRewardConfig.getValues()[1][0]){ + if (parm == sActivityRewardConfig.getValues()[1][0]) { activityProgressInfo.setState(3); activityMission.getActivityMissionMap().put(sActivityRewardConfig.getId(), activityProgressInfo); isUpdate = true; - if (sActivityRewardConfig.getSort()==2){ - Poster.getPoster().dispatchEvent(new NewWelfareEvent(user,NewWelfareTypeEnum.ALL_MISSION_FIN.getType(),1)); + if (sActivityRewardConfig.getSort() == 2) { + Poster.getPoster().dispatchEvent(new NewWelfareEvent(user, NewWelfareTypeEnum.ALL_MISSION_FIN.getType(), 1)); } } } } } - if(isUpdate){ + if (isUpdate) { //更新进度 ISession sessionByUid = OnlineUserManager.getSessionByUid(user.getId()); sendActivityProgress(sessionByUid, activityMission, null); } } - @Override - public boolean takeReward(ISession session, int missionId) throws Exception { + private void oldActivityTakeReward(ISession session, int missionId, User user, ActivityMission activityMission, Map activityProgressInfoMap) throws Exception { PlayerInfoProto.TakeActivityRewardResponse build = null; - User user = UserManager.getUser(session.getUid()); - SGlobalActivity sGlobalActivity = SGlobalActivity.getsGlobalActivityMap().get(id); - if (sGlobalActivity == null || !user.getActivityManager().getActivityMissionMap().containsKey(id)) { - throw new ErrorCodeException(ErrorCode.SERVER_SELF_DEFINE); - } - ActivityMission activityMission = user.getActivityManager().getActivityMissionMap().get(id); - Map activityProgressInfoMap = activityMission.getActivityMissionMap(); //0是领取最后奖励 - if(missionId==0){ + if (missionId == 0) { for (Map.Entry inter : activityProgressInfoMap.entrySet()) { - ActivityProgressInfo activityProgressInfo=inter.getValue(); - int activityMissionId=inter.getKey(); - SActivityRewardConfig missonConfig= SActivityRewardConfig.getsActivityRewardConfigByMissionId(activityMissionId); - if(activityProgressInfo.getState() != 1&&missonConfig.getSort()==1){ + ActivityProgressInfo activityProgressInfo = inter.getValue(); + int activityMissionId = inter.getKey(); + SActivityRewardConfig missonConfig = SActivityRewardConfig.getsActivityRewardConfigByMissionId(activityMissionId); + if (activityProgressInfo.getState() != 1 && missonConfig.getSort() == 1) { throw new ErrorCodeException(ErrorCode.SERVER_SELF_DEFINE); } } - for(Map.Entry item: activityProgressInfoMap.entrySet()){ - SActivityRewardConfig missonConfig= SActivityRewardConfig.getsActivityRewardConfigByMissionId(item.getKey()); - if (missonConfig.getSort()==1){ + for (Map.Entry item : activityProgressInfoMap.entrySet()) { + SActivityRewardConfig missonConfig = SActivityRewardConfig.getsActivityRewardConfigByMissionId(item.getKey()); + if (missonConfig.getSort() == 1) { item.getValue().setState(2); - activityMission.getActivityMissionMap().put(item.getKey(),item.getValue()); + activityMission.getActivityMissionMap().put(item.getKey(), item.getValue()); } } @@ -129,52 +209,24 @@ public class NewWelfareActivity extends AbstractActivity { List sActivityRewardConfigs = SActivityRewardConfig.getsActivityRewardConfigByActivityId(id); CommonProto.Drop.Builder drop = ItemUtil.drop(user, sActivityRewardConfigs.get(0).getReward(), BIReason.TAKE_ACTIVITY_REWARD); build = PlayerInfoProto.TakeActivityRewardResponse.newBuilder().setDrop(drop).build(); - reportTakeActivityReward(user,sActivityRewardConfigs.get(0).getReward(),missionId); + reportTakeActivityReward(user, sActivityRewardConfigs.get(0).getReward(), missionId); - }else{ + } else { //领取第三个奖励用 - if(!activityProgressInfoMap.containsKey(missionId)||activityProgressInfoMap.get(missionId).getState()!=3){ + if (!activityProgressInfoMap.containsKey(missionId) || activityProgressInfoMap.get(missionId).getState() != 3) { throw new ErrorCodeException(ErrorCode.SERVER_SELF_DEFINE); } //领过了 activityProgressInfoMap.get(missionId).setState(1); SActivityRewardConfig sActivityRewardConfig = SActivityRewardConfig.getsActivityRewardConfigByMissionId(missionId); - if(sActivityRewardConfig==null){ + if (sActivityRewardConfig == null) { throw new ErrorCodeException(ErrorCode.SERVER_SELF_DEFINE); } sendActivityProgress(session, activityMission, null); CommonProto.Drop.Builder drop = ItemUtil.drop(user, sActivityRewardConfig.getReward(), BIReason.TAKE_ACTIVITY_REWARD); build = PlayerInfoProto.TakeActivityRewardResponse.newBuilder().setDrop(drop).build(); - reportTakeActivityReward(user,sActivityRewardConfig.getReward(),missionId); + reportTakeActivityReward(user, sActivityRewardConfig.getReward(), missionId); } - MessageUtil.sendMessage(session, 1, rewardResponseValue, build, true); - return true; - } - - @Override - public void getAllMissRewards(User user, ISession session, List itemAttrs){ - SGlobalActivity sGlobalActivity = SGlobalActivity.getsGlobalActivityMap().get(id); - if (sGlobalActivity == null || !user.getActivityManager().getActivityMissionMap().containsKey(id)) { - return; - } - ActivityMission activityMission = user.getActivityManager().getActivityMissionMap().get(id); - Map activityProgressInfoMap = activityMission.getActivityMissionMap(); - for(ActivityProgressInfo activityProgressInfo : activityProgressInfoMap.values()){ - if(activityProgressInfo.getState() != 1){ - return; - } - } - for(ActivityProgressInfo activityProgressInfo : activityProgressInfoMap.values()){ - activityProgressInfo.setState(2); - } - - for(Map.Entry item: activityProgressInfoMap.entrySet()){ - item.getValue().setState(2); - activityMission.getActivityMissionMap().put(item.getKey(),item.getValue()); - } - - List sActivityRewardConfigs = SActivityRewardConfig.getsActivityRewardConfigByActivityId(id); - itemAttrs.add(sActivityRewardConfigs.get(0).getReward()); } } diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/event/NewWelfareTypeEnum.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/event/NewWelfareTypeEnum.java index f91cd1ffd..53f90a993 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/event/NewWelfareTypeEnum.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/event/NewWelfareTypeEnum.java @@ -6,7 +6,8 @@ public enum NewWelfareTypeEnum { RECHARGE_BUY(3), EXPLORE(4),//极速探索n次 UPSTAR(5),//指定英雄升级至x星 - ALL_MISSION_FIN(6)//sort为2所有任务完成 + ALL_MISSION_FIN(6),//sort为2所有任务完成 + BUY_1106(7),//购买1106礼包 ; private int type; 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 918633841..985848b0b 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 @@ -227,6 +227,9 @@ public class BuyGoodsNewLogic { //处理特权 activePrivilege(user,config); resultRes.setResultCode(1); + if (goodsId==1106){ + Poster.getPoster().dispatchEvent(new NewWelfareEvent(user, NewWelfareTypeEnum.BUY_1106.getType(),0)); + } //发送邮件 int[] mail = config.getMail(); if(config.getPrice()!=0&&mail!=null&&mail.length>1){ @@ -332,6 +335,7 @@ public class BuyGoodsNewLogic { ActivityLogic.getInstance().updateActivityMissionProgress(user, ActivityType.JADE_DYNASTY_RECHARGE_SUM,(int)(price*1000)); ActivityLogic.getInstance().updateActivityMissionProgress(user, ActivityType.RECHARGE_SUM_DAY, (int)(user.getPlayerInfoManager().getRechargedaily()*1000) ); ActivityLogic.getInstance().updateActivityMissionProgress(user, ActivityType.FIND_FAIRY_FESTIVAL, (int)(price*1000)); + ActivityLogic.getInstance().updateActivityMissionProgress(user, ActivityType.NEW_WELFARE, (int)(info.getRr())); AyyncWorker ayyncWorker = new AyyncWorker(user, true, new AynMissionWorker(GameEvent.RECHARGE_TOTAL,(int)(price*1000))) ; ProtocolsManager.getInstance().updateAyncWorker(ayyncWorker); From 956c9cc2fe696f9e93d8533358d64380264f09b1 Mon Sep 17 00:00:00 2001 From: xuexinpeng Date: Thu, 23 Dec 2021 00:17:13 +0800 Subject: [PATCH 2/3] =?UTF-8?q?=E6=96=B0=E7=89=B9=E6=83=A0=E7=A4=BC?= =?UTF-8?q?=E5=8C=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../jieling/logic/activity/ActivityLogic.java | 28 ++- .../jieling/logic/activity/ActivityType.java | 1 + .../logic/activity/ActivityTypeEnum.java | 2 + .../DailyPreferentialGiftActivity.java | 163 ++++++++++++++++++ .../jieling/logic/store/BuyGoodsNewLogic.java | 5 + .../jieling/logic/store/GiftGoodsType.java | 2 + 6 files changed, 195 insertions(+), 6 deletions(-) create mode 100644 serverlogic/src/main/java/com/ljsd/jieling/logic/activity/DailyPreferentialGiftActivity.java 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 cdacf19ad..b923acaba 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 @@ -113,7 +113,8 @@ public class ActivityLogic implements IEventHandler{ ActivityLogic.getInstance().resumeActivity(user, ActivityType.LUCK_WHEEL); ActivityLogic.getInstance().resumeActivity(user, ActivityType.LUCK_WHEEL_ADVANCE); ActivityLogic.getInstance().resumeActivity(user,ActivityType.TREASURE); - + //每日特惠礼包开启的活動刷新 + ActivityLogic.getInstance().resumeActivity(user,ActivityType.DAILY_PREFERENTIAL_GIFT); Set upFiveActivityTypes = new HashSet<>(); upFiveActivityTypes.add(ActivityType.SevenLogin); upFiveActivityTypes.add(ActivityType.RECHARGE_SUM_DAY); @@ -172,6 +173,9 @@ public class ActivityLogic implements IEventHandler{ if (time == ActivityType.OPEN_TYPE_ROLE) { continue; } + if(sGlobalActivity.getType() == ActivityType.DAILY_PREFERENTIAL_GIFT){ + continue; + } if(time == ActivityType.OPEN_TYPE_MONTHS){ //now = 当前是开服第几个月 } @@ -294,6 +298,9 @@ public class ActivityLogic implements IEventHandler{ * @param activityId */ public void initMissionInfo(ActivityMission activityMission,int activityId){ + if(activityId == ActivityType.DAILY_PREFERENTIAL_GIFT){ + return; + } List sActivityRewardConfigs = SActivityRewardConfig.getsActivityRewardConfigByActivityId(activityId); if(sActivityRewardConfigs == null){return;} for(SActivityRewardConfig sActivityRewardConfig : sActivityRewardConfigs){ @@ -435,6 +442,9 @@ public class ActivityLogic implements IEventHandler{ } Map activityMissionMap = activityManager.getActivityMissionMap(); for (SGlobalActivity sGlobalActivity : sGlobalActivityMap.values()) { + if(sGlobalActivity.getType() == ActivityType.DAILY_PREFERENTIAL_GIFT){ + continue; + } int activityId = sGlobalActivity.getId(); ////天尊降世活动特殊处理 if (activityMissionMap.containsKey(42)){ @@ -612,12 +622,18 @@ public class ActivityLogic implements IEventHandler{ if (sGlobalActivity.getIsSaving()==0 && activityStatus != ActivityType.OPEN_STATE) { continue; } - int startTime = (int) (ToolsUtil.getTimeLong(sGlobalActivity.getStartTimeLong(),sGlobalActivity.getEndTimeLong(),sGlobalActivity.getTime(),createTime, 1) / 1000); - int endTime; - if(sGlobalActivity.getGapTime()!=0){ - endTime = (int) (ToolsUtil.getEndTimeLong(sGlobalActivity.getStartTimeLong(),sGlobalActivity.getEndTimeLong(),sGlobalActivity.getTime(),createTime, sGlobalActivity.getGapTime()) / 1000); + int startTime = 0; + int endTime = 0; + if(sGlobalActivity.getType() == ActivityType.DAILY_PREFERENTIAL_GIFT){ + startTime=(int)(activityState.getValue().getCreatTime()/1000); + endTime = startTime+604800; }else{ - endTime = (int) (ToolsUtil.getTimeLong(sGlobalActivity.getStartTimeLong(),sGlobalActivity.getEndTimeLong(),sGlobalActivity.getTime(),createTime, 2) / 1000); + startTime = (int) (ToolsUtil.getTimeLong(sGlobalActivity.getStartTimeLong(),sGlobalActivity.getEndTimeLong(),sGlobalActivity.getTime(),createTime, 1) / 1000); + if(sGlobalActivity.getGapTime()!=0){ + endTime = (int) (ToolsUtil.getEndTimeLong(sGlobalActivity.getStartTimeLong(),sGlobalActivity.getEndTimeLong(),sGlobalActivity.getTime(),createTime, sGlobalActivity.getGapTime()) / 1000); + }else{ + endTime = (int) (ToolsUtil.getTimeLong(sGlobalActivity.getStartTimeLong(),sGlobalActivity.getEndTimeLong(),sGlobalActivity.getTime(),createTime, 2) / 1000); + } } AbstractActivity abstractActivity = ActivityTypeEnum.getActicityType(sGlobalActivity.getId()); if(abstractActivity==null){ 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 f01421b17..14ad9849d 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 @@ -104,6 +104,7 @@ public interface ActivityType { int TRANSFORMATION_DRAW_CARD = 86;//方寸寻宝 int CONTINUOUS_GIFT_NEW = 87;//新连续礼包 int ARENA_RANK_EXPERIMENT = 88;//竞技试炼 + int DAILY_PREFERENTIAL_GIFT = 89;//每日特惠礼包开启的活动 int SPECIAL_MONSTER_RANDOM_ACTIVITY = 100;//灵兽宝阁活动 int SPECIAL_MONSTER_GIFT_ACTIVITY = 101;//灵兽礼包 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 66f9023ab..97843e94d 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 @@ -94,7 +94,9 @@ public enum ActivityTypeEnum { TRANSFORMATION_DRAW_CARD(ActivityType.TRANSFORMATION_DRAW_CARD,DefaultEmptyActivity::new),//方寸寻宝 CONTINUOUS_GIFT_NEW(ActivityType.CONTINUOUS_GIFT_NEW,ContinuousGiftActivity::new),//新连续礼包 ARENA_RANK_EXPERIMENT(ActivityType.ARENA_RANK_EXPERIMENT,ArenaRankActivity::new),//竞技试炼 + DAILY_PREFERENTIAL_GIFT(ActivityType.DAILY_PREFERENTIAL_GIFT,DailyPreferentialGiftActivity::new), SUMMON_TREASURE(ActivityType.SUMMON_TREASURE,SummonTreasureActivity::new),//招募秘宝 + ; private int type; diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/DailyPreferentialGiftActivity.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/DailyPreferentialGiftActivity.java new file mode 100644 index 000000000..a6a6d820f --- /dev/null +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/DailyPreferentialGiftActivity.java @@ -0,0 +1,163 @@ +package com.ljsd.jieling.logic.activity; + +import com.ljsd.jieling.exception.ErrorCode; +import com.ljsd.jieling.exception.ErrorCodeException; +import com.ljsd.jieling.globals.BIReason; +import com.ljsd.jieling.globals.Global; +import com.ljsd.jieling.jbean.ActivityManager; +import com.ljsd.jieling.jbean.ActivityMission; +import com.ljsd.jieling.jbean.ActivityProgressInfo; +import com.ljsd.jieling.logic.OnlineUserManager; +import com.ljsd.jieling.logic.activity.event.IEvent; +import com.ljsd.jieling.logic.dao.UserManager; +import com.ljsd.jieling.logic.dao.root.User; +import com.ljsd.jieling.logic.mail.MailLogic; +import com.ljsd.jieling.network.session.ISession; +import com.ljsd.jieling.util.ItemUtil; +import com.ljsd.jieling.util.MessageUtil; +import config.SActivityRewardConfig; +import config.SErrorCodeEerverConfig; +import rpc.protocols.ArenaInfoProto; +import rpc.protocols.CommonProto; +import rpc.protocols.MessageTypeProto; +import rpc.protocols.PlayerInfoProto; +import util.StringUtil; +import util.TimeUtils; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; + +/** + * 每日特惠礼包开启的活动 + */ + +public class DailyPreferentialGiftActivity extends AbstractActivity{ + + public DailyPreferentialGiftActivity(int id) { + super(id); + } + + @Override + public void initActivity(User user) throws Exception{ + ActivityMission mission = new ActivityMission(); + // 初始化阶段奖励 + List sActivityRewardConfigs = SActivityRewardConfig.getsActivityRewardConfigByActivityId(id); + ActivityLogic.getInstance().initOtherMission(mission, sActivityRewardConfigs.stream().mapToInt(n->n.getId()).boxed().collect(Collectors.toList())); + //mission.setV((int)(TimeUtils.getAppointTime(0)/1000)+3600*24*7); + mission.setV(0); + mission.setCreatTime(TimeUtils.getAppointTime(0)); + user.getActivityManager().getActivityMissionMap().put(id, mission); + //ActivityMission activityMission =user.getActivityManager().getActivityMissionMap().get(this.id); + //sendActivityProgress(user, activityMission, null); + ActivityLogic.getInstance().sendActivityInfo(user, id); + } + + @Override + public void onEvent(IEvent event) throws Exception{ + + + + } + /** + *购买后7天内 每天可以领取奖励 领取状态每日重置 + */ + @Override + public void onResume(User user) throws Exception { + ActivityMission mission = user.getActivityManager().getActivityMissionMap().get(id); + if(mission == null){ + return; + } + //long timeTemp = mission.getCreatTime(); + //开启礼包的第几天 + int day = (int)TimeUtils.getGapDaysByTwoTime(TimeUtils.getTimeStamp2(mission.getCreatTime()),TimeUtils.getTimeStamp2(TimeUtils.now()))+1; + List rewardConfig = SActivityRewardConfig.getsActivityRewardConfigByActivityId(id); + if(rewardConfig == null){ + return; + } + Map rewardMap = new HashMap(); + for(SActivityRewardConfig config:rewardConfig){ + for(int[]reward:config.getReward()){ + if(rewardMap.containsKey(reward[0])){ + rewardMap.put(reward[0],rewardMap.get(reward[0])+reward[1]); + }else{ + rewardMap.put(reward[0],reward[1]); + } + } + } + String title = SErrorCodeEerverConfig.getI18NMessage("sevendaycard_mail_title"); + String content = SErrorCodeEerverConfig.getI18NMessage("sevendaycard_mail_txt"); + if(day >7){ + //第八天登錄 發送所有獎勵 TODO + for(int i = mission.getV();i < 7;i++){ + MailLogic.getInstance().sendMail(user.getId(), title, content, StringUtil.parseArrayToString(rewardMap.entrySet().stream().map(n->new int[]{n.getKey(),n.getValue()}) + .toArray(int[][]::new)), TimeUtils.nowInt(), Global.MAIL_EFFECTIVE_TIME); + LOGGER.info("11:"+i); + } + //刪除數據 + user.getActivityManager().getActivityMissionMap().remove(id); + ISession session = OnlineUserManager.sessionMap.get(user.getId()); + if(session!=null){ + PlayerInfoProto.SpecailActivityUpateIndication.Builder indication = PlayerInfoProto.SpecailActivityUpateIndication.newBuilder(); + indication.addCloseActivityId(ActivityType.DAILY_PREFERENTIAL_GIFT); + MessageUtil.sendIndicationMessage(session, 1, MessageTypeProto.MessageType.SPECIAL_ACTIVITY_UPDATE_INDICATION_VALUE, indication.build(), true); + } + return; + }else{ + for(int i = mission.getV();inew int[]{n.getKey(),n.getValue()}) + .toArray(int[][]::new)), TimeUtils.nowInt(), Global.MAIL_EFFECTIVE_TIME); + LOGGER.info("22:"+i); + } + List sActivityRewardConfigs = SActivityRewardConfig.getsActivityRewardConfigByActivityId(id); + if(sActivityRewardConfigs == null){return;} + for(SActivityRewardConfig sActivityRewardConfig : sActivityRewardConfigs){ + ActivityProgressInfo activityProgressInfo = new ActivityProgressInfo(); + //activityProgressInfo.setProgrss(ActivityLogic.getInstance().getInitActivityMissionProgress(id)); + activityProgressInfo.setState(0); + mission.getActivityMissionMap().put(sActivityRewardConfig.getId(), activityProgressInfo); + } + ActivityLogic.getInstance().initMissionInfo(mission,id); + if(day > mission.getV()){ + mission.setV(day-1); + } + sendActivityProgress(user, mission, null); + } + } + + @Override + public boolean takeReward(ISession session, int missionId) throws Exception{ + User user = UserManager.getUser(session.getUid()); + SActivityRewardConfig sActivityRewardConfig = SActivityRewardConfig.getsActivityRewardConfigByMissionId(missionId); + if (sActivityRewardConfig == null || sActivityRewardConfig.getActivityId() != id) { + throw new ErrorCodeException(ErrorCode.CFG_NULL); + } + ActivityManager activityManager = user.getActivityManager(); + ActivityMission activityMission = activityManager.getActivityMissionMap().get(id); + if (activityMission == null){ + throw new ErrorCodeException(ErrorCode.SERVER_SELF_DEFINE); + } + ActivityProgressInfo activityProgressInfo = activityMission.getActivityMissionMap().get(missionId); + if (activityProgressInfo == null || activityProgressInfo.getState() == ActivityType.HAD_TAKED) { + throw new ErrorCodeException(ErrorCode.newDefineCode("活动奖励已经领取")); + } + int day = (int)TimeUtils.getGapDaysByTwoTime(TimeUtils.getTimeStamp2(activityMission.getCreatTime()),TimeUtils.getTimeStamp2(TimeUtils.now())); + //if(activityMission.getV() Date: Fri, 17 Dec 2021 17:58:55 +0800 Subject: [PATCH 3/3] =?UTF-8?q?=E6=96=B0=E6=AF=8F=E6=97=A5=E7=89=B9?= =?UTF-8?q?=E6=83=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../DailyPreferentialGiftActivity.java | 36 ++++++++++++++++--- 1 file changed, 32 insertions(+), 4 deletions(-) diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/DailyPreferentialGiftActivity.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/DailyPreferentialGiftActivity.java index a6a6d820f..460624867 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/DailyPreferentialGiftActivity.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/DailyPreferentialGiftActivity.java @@ -17,13 +17,11 @@ import com.ljsd.jieling.util.ItemUtil; import com.ljsd.jieling.util.MessageUtil; import config.SActivityRewardConfig; import config.SErrorCodeEerverConfig; -import rpc.protocols.ArenaInfoProto; import rpc.protocols.CommonProto; import rpc.protocols.MessageTypeProto; import rpc.protocols.PlayerInfoProto; import util.StringUtil; import util.TimeUtils; -import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -90,7 +88,9 @@ public class DailyPreferentialGiftActivity extends AbstractActivity{ String content = SErrorCodeEerverConfig.getI18NMessage("sevendaycard_mail_txt"); if(day >7){ //第八天登錄 發送所有獎勵 TODO - for(int i = mission.getV();i < 7;i++){ + //下线当天的活动处理 + sendSpecailMail(user,title,content,mission); + for(int i = mission.getV()+1;i <= 7;i++){ MailLogic.getInstance().sendMail(user.getId(), title, content, StringUtil.parseArrayToString(rewardMap.entrySet().stream().map(n->new int[]{n.getKey(),n.getValue()}) .toArray(int[][]::new)), TimeUtils.nowInt(), Global.MAIL_EFFECTIVE_TIME); LOGGER.info("11:"+i); @@ -105,7 +105,9 @@ public class DailyPreferentialGiftActivity extends AbstractActivity{ } return; }else{ - for(int i = mission.getV();inew int[]{n.getKey(),n.getValue()}) .toArray(int[][]::new)), TimeUtils.nowInt(), Global.MAIL_EFFECTIVE_TIME); LOGGER.info("22:"+i); @@ -126,6 +128,32 @@ public class DailyPreferentialGiftActivity extends AbstractActivity{ } } + //当天为领取特殊处理 + public static void sendSpecailMail( User user,String title,String content, ActivityMission mission ){ + Map progressMap = mission.getActivityMissionMap(); + Map rewardMap1 = new HashMap(); + for (Map.Entry progress:progressMap.entrySet()){ + if(progress.getValue().getState() == ActivityType.WILL_TAKE){ + SActivityRewardConfig sActivityRewardConfig = SActivityRewardConfig.getsActivityRewardConfigByMissionId(progress.getKey()); + if(sActivityRewardConfig == null){ + continue; + } + for(int[]reward:sActivityRewardConfig.getReward()){ + if(rewardMap1.containsKey(reward[0])){ + rewardMap1.put(reward[0],rewardMap1.get(reward[0])+reward[1]); + }else{ + rewardMap1.put(reward[0],reward[1]); + } + } + } + } + if(rewardMap1.size()>0){ + MailLogic.getInstance().sendMail(user.getId(), title, content, StringUtil.parseArrayToString(rewardMap1.entrySet().stream().map(n->new int[]{n.getKey(),n.getValue()}) + .toArray(int[][]::new)), TimeUtils.nowInt(), Global.MAIL_EFFECTIVE_TIME); + } + + } + @Override public boolean takeReward(ISession session, int missionId) throws Exception{ User user = UserManager.getUser(session.getUid());