From 15bd393c89fac25b6152e0ede763e609495ef2df Mon Sep 17 00:00:00 2001 From: lvxinran Date: Sun, 2 May 2021 20:26:14 +0800 Subject: [PATCH] =?UTF-8?q?=E7=A6=8F=E6=98=9F=E9=AB=98=E7=85=A7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../activity/FuxingStoreBuyHandler.java | 26 ++++++++ .../jieling/logic/activity/ActivityLogic.java | 39 ++++++++++++ .../logic/activity/LuckyGetActivity.java | 63 +++++++++++-------- .../activity/event/LuckyGetBuyEvent.java | 26 -------- .../ljsd/jieling/logic/store/StoreLogic.java | 18 ++++-- .../src/main/java/config/SSpecialConfig.java | 2 + 6 files changed, 118 insertions(+), 56 deletions(-) create mode 100644 serverlogic/src/main/java/com/ljsd/jieling/handler/activity/FuxingStoreBuyHandler.java delete mode 100644 serverlogic/src/main/java/com/ljsd/jieling/logic/activity/event/LuckyGetBuyEvent.java diff --git a/serverlogic/src/main/java/com/ljsd/jieling/handler/activity/FuxingStoreBuyHandler.java b/serverlogic/src/main/java/com/ljsd/jieling/handler/activity/FuxingStoreBuyHandler.java new file mode 100644 index 000000000..173d07978 --- /dev/null +++ b/serverlogic/src/main/java/com/ljsd/jieling/handler/activity/FuxingStoreBuyHandler.java @@ -0,0 +1,26 @@ +package com.ljsd.jieling.handler.activity; + +import com.ljsd.jieling.handler.BaseHandler; +import com.ljsd.jieling.logic.activity.ActivityLogic; +import com.ljsd.jieling.network.session.ISession; +import org.springframework.stereotype.Component; +import rpc.protocols.ActivityProto; +import rpc.protocols.MessageTypeProto; + +/** + * @author lvxinran + * @date 2021/4/19 + * @discribe + */ +@Component +public class FuxingStoreBuyHandler extends BaseHandler { + @Override + public MessageTypeProto.MessageType getMessageCode() { + return MessageTypeProto.MessageType.FU_XING_STORE_BUY_REQUEST; + } + + @Override + public void processWithProto(ISession iSession, ActivityProto.FuXingStoreBuyRequest proto) throws Exception { + ActivityLogic.getInstance().fuxingStoreBuy(iSession,proto.getActivityId()); + } +} 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 d1ecbb9fd..9a147d81e 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 @@ -1454,4 +1454,43 @@ public class ActivityLogic implements IEventHandler{ MessageUtil.sendMessage(session,1,messageType.getNumber(),response.build(),true); } + + /** + * 福星高照储值 + */ + public void fuxingStoreBuy(ISession session,int activityId) throws Exception { + int uid = session.getUid(); + User user = UserManager.getUser(uid); + ActivityMission activityMission = user.getActivityManager().getActivityMissionMap().get(activityId); + SGlobalActivity activity = SGlobalActivity.getsGlobalActivityMap().get(activityId); + if(activity.getType()!=ActivityType.LUCKY_GET){ + throw new ErrorCodeException(ErrorCode.SERVER_SELF_DEFINE); + } + if(activityMission==null||activityMission.getV()!=0||TimeUtils.now()>activityMission.getCreatTime()){//此活动2为已不可购买状态,1为已购买 + throw new ErrorCodeException(ErrorCode.ACTIVITY_NOT_OPEN); + } + + boolean itemCost = ItemUtil.itemCost(user, SSpecialConfig.getTwiceArrayValue(SSpecialConfig.FU_XING_STORE), 1, 1); + if(!itemCost){ + throw new ErrorCodeException(ErrorCode.ITEM_NOT_ENOUGH); + } + + List sActivityRewardConfigs = SActivityRewardConfig.getsActivityRewardConfigByActivityId(activityId); + if(sActivityRewardConfigs == null){return;} + //已经激活购买的商品 + //拿到激活当天0点 + long beginOfDay = TimeUtils.getBeginOfDay(TimeUtils.now()); + for(SActivityRewardConfig sActivityRewardConfig : sActivityRewardConfigs){ + ActivityProgressInfo activityProgressInfo = new ActivityProgressInfo(); + activityProgressInfo.setProgrss((int)(beginOfDay/1000)+(sActivityRewardConfig.getValues()[1][0]-1)*(int)(TimeUtils.ONE_DAY/1000)); + activityMission.getActivityMissionMap().put(sActivityRewardConfig.getId(), activityProgressInfo); + } + activityMission.setV(1); + //发推送 + AbstractActivity acticityType = ActivityTypeEnum.getActicityType(activityId); + if(acticityType!=null){ + acticityType.sendActivityProgress(session, activityMission, null); + } + MessageUtil.sendMessage(session,1,MessageTypeProto.MessageType.FU_XING_STORE_BUY_RESPONSE_VALUE,null,true); + } } diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/LuckyGetActivity.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/LuckyGetActivity.java index 6bd7b4ff2..9b9128fa1 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/LuckyGetActivity.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/LuckyGetActivity.java @@ -1,18 +1,17 @@ package com.ljsd.jieling.logic.activity; import com.ljsd.jieling.globals.BIReason; -import com.ljsd.jieling.jbean.ActivityManager; 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.LuckyGetBuyEvent; -import com.ljsd.jieling.logic.activity.event.Poster; import com.ljsd.jieling.logic.dao.UserManager; import com.ljsd.jieling.logic.dao.root.User; import com.ljsd.jieling.network.session.ISession; import com.ljsd.jieling.util.ItemUtil; import com.ljsd.jieling.util.MessageUtil; +import com.ljsd.jieling.util.ToolsUtil; import config.SActivityRewardConfig; +import config.SGlobalActivity; +import config.SSpecialConfig; import rpc.protocols.CommonProto; import rpc.protocols.PlayerInfoProto; import util.TimeUtils; @@ -29,33 +28,33 @@ public class LuckyGetActivity extends AbstractActivity{ public LuckyGetActivity(int id) { super(id); - Poster.getPoster().listenEvent(this, LuckyGetBuyEvent.class); - } @Override - public void onEvent(IEvent event) throws Exception { - if (!(event instanceof LuckyGetBuyEvent)) - return; - LuckyGetBuyEvent buyEvent = (LuckyGetBuyEvent) event; - ActivityManager activityManager = buyEvent.getUser().getActivityManager(); - if(!activityManager.getActivityMissionMap().containsKey(id)){ - return; - } - ActivityMission activityMission = activityManager.getActivityMissionMap().get(id); + public void initActivity(User user) { + SGlobalActivity activity = SGlobalActivity.getsGlobalActivityMap().get(id); + + ActivityLogic.getInstance().initAllActivityMission(user.getActivityManager().getActivityMissionMap(),id); + + long startTime = ToolsUtil.getTimeLong(activity.getStartTimeLong(),activity.getEndTimeLong(),activity.getTime(),user.getPlayerInfoManager().getCreateTime(), 1); + int[] onceArrayValue = SSpecialConfig.getOnceArrayValue(SSpecialConfig.FU_XING); + long buyTimeDeadLine = startTime + TimeUtils.DAY * onceArrayValue[0];//截止购买的时间 + user.getActivityManager().getActivityMissionMap().get(id).setCreatTime(buyTimeDeadLine); + if(buyTimeDeadLine sActivityRewardConfigs = SActivityRewardConfig.getsActivityRewardConfigByActivityId(id); - if(sActivityRewardConfigs == null){return;} - //已经激活购买的商品 - activityMission.setV(1); - //拿到激活当天0点 - long beginOfDay = TimeUtils.getBeginOfDay(TimeUtils.now()); - for(SActivityRewardConfig sActivityRewardConfig : sActivityRewardConfigs){ - ActivityProgressInfo activityProgressInfo = new ActivityProgressInfo(); - activityProgressInfo.setProgrss((int)(beginOfDay/1000)+(sActivityRewardConfig.getValues()[1][1]-1)*(int)(TimeUtils.ONE_DAY/1000)); - activityMission.getActivityMissionMap().put(sActivityRewardConfig.getId(), activityProgressInfo); } } + + @Override + public void onResume(User user) throws Exception { + ActivityMission activityMission = user.getActivityManager().getActivityMissionMap().get(id); + if(activityMission.getV()!=1&&TimeUtils.now()>=activityMission.getCreatTime()){ + activityMission.setV(2); + } + } + public boolean takeReward(ISession session, int missionId) throws Exception { if(missionId!=-1){ return super.takeReward(session, missionId); @@ -75,6 +74,20 @@ public class LuckyGetActivity extends AbstractActivity{ MessageUtil.sendMessage(session, 1, rewardResponseValue, build, true); + ActivityMission activityMission = user.getActivityManager().getActivityMissionMap().get(id); + boolean isAll = true; + for(Map.Entry entry:activityMission.getActivityMissionMap().entrySet()){ + if(entry.getValue().getState()==0){ + isAll=false; + break; + } + } + if(isAll){ + activityMission.setV(2); + } + + sendActivityProgress(session,activityMission , null); + return true; } diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/event/LuckyGetBuyEvent.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/event/LuckyGetBuyEvent.java deleted file mode 100644 index 0526c9cd8..000000000 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/event/LuckyGetBuyEvent.java +++ /dev/null @@ -1,26 +0,0 @@ -package com.ljsd.jieling.logic.activity.event; - -import com.ljsd.jieling.logic.dao.root.User; - -/** - * @author lvxinran - * @date 2021/3/30 - * @discribe - */ -public class LuckyGetBuyEvent implements IEvent { - - private User user; - - public LuckyGetBuyEvent(User user) { - this.user = user; - } - - - public User getUser() { - return user; - } - - public void setUser(User user) { - this.user = user; - } -} diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/store/StoreLogic.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/store/StoreLogic.java index eb90a3268..9ecf9b7b4 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/store/StoreLogic.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/store/StoreLogic.java @@ -108,8 +108,8 @@ public class StoreLogic implements IEventHandler { } } } else if (sStoreTypeConfig.getStoreOpenRule() == 7) { - long startTime = ToolsUtil.getTimeLong(sStoreTypeConfig.getStartTimeLong(), sStoreTypeConfig.getEndTimeLong(), ActivityType.OPEN_TYPE_ROLE, 0, 1); - long endTime = ToolsUtil.getTimeLong(sStoreTypeConfig.getStartTimeLong(), sStoreTypeConfig.getEndTimeLong(), ActivityType.OPEN_TYPE_ROLE, 0, 2); + long startTime = ToolsUtil.getTimeLong(sStoreTypeConfig.getStartTimeLong(), sStoreTypeConfig.getEndTimeLong(), ActivityType.OPEN_TYPE_SERVER, 0, 1); + long endTime = ToolsUtil.getTimeLong(sStoreTypeConfig.getStartTimeLong(), sStoreTypeConfig.getEndTimeLong(), ActivityType.OPEN_TYPE_SERVER, 0, 2); if (now < startTime || now > endTime) { continue; } @@ -376,6 +376,17 @@ public class StoreLogic implements IEventHandler { if(storeManager.getStoreInfoMap().containsKey(sStoreTypeConfig.getId())){ continue; } + if(sStoreTypeConfig.getStoreOpenRule() == 7){ + + long startTime = ToolsUtil.getTimeLong(sStoreTypeConfig.getStartTimeLong(), sStoreTypeConfig.getEndTimeLong(),ActivityType.OPEN_TYPE_SERVER,0, 1); + long endTime = ToolsUtil.getTimeLong(sStoreTypeConfig.getStartTimeLong(),sStoreTypeConfig.getEndTimeLong(), ActivityType.OPEN_TYPE_SERVER,0, 2); + long now = TimeUtils.now(); + if(now>startTime&&now itemNumMap = getStoreItem(sStoreTypeConfig.getId(),sStoreTypeConfig,user); + storeManager.newStoreInfo(sStoreTypeConfig.getId(),refreshTimeDelay,startTime,endTime,itemNumMap); + } + + } if (sStoreTypeConfig.getStoreOpenRule() == 1 && sStoreTypeConfig.getId() !=8){ //固定商店 Map itemNumMap = getStoreItem(sStoreTypeConfig.getId(),sStoreTypeConfig,user); long startTime = 0; @@ -500,9 +511,6 @@ public class StoreLogic implements IEventHandler { int vipLeve = user.getPlayerInfoManager().getVipLevel(); user.getPlayerInfoManager().setHadTakeLevelBoxVip(vipLeve); } - if(storeId==Global.LUCKY_GET){ - Poster.getPoster().dispatchEvent(new LuckyGetBuyEvent(user)); - } if(sStoreConfig.getOpenPrivilege()!=null){ PlayerInfoProto.PrivilegeIndication.Builder indication = PlayerInfoProto.PrivilegeIndication.newBuilder(); int[] openPrivilege = sStoreConfig.getOpenPrivilege(); diff --git a/tablemanager/src/main/java/config/SSpecialConfig.java b/tablemanager/src/main/java/config/SSpecialConfig.java index 360b5a9d5..558b9568e 100644 --- a/tablemanager/src/main/java/config/SSpecialConfig.java +++ b/tablemanager/src/main/java/config/SSpecialConfig.java @@ -97,6 +97,8 @@ public class SSpecialConfig implements BaseConfig { public static final String GUILD_LEADER_PASS_TIME = "GuildLeaderPassTime";//会长不上线移交时长 public static final String GUILD_DISMISS_TIME ="GuildDismissTime";//公会全员不上线解散时长 public static final String SHEN_ZHUANG = "ShenZhuang";//神装礼包推送等级 + public static final String FU_XING = "FuXing";//福星高照可购买天数和可领取天数 + public static final String FU_XING_STORE = "FuXingStore";//福星高照购买解锁奖励 @Override public void init() throws Exception {