From dba41c51a3116e925c756cca16c48466d0435e1f Mon Sep 17 00:00:00 2001 From: zhangshanxue Date: Sat, 3 Aug 2019 11:02:03 +0800 Subject: [PATCH 01/10] =?UTF-8?q?=E6=B4=BB=E5=8A=A8=E5=88=9D=E5=A7=8B?= =?UTF-8?q?=E5=8C=96=E5=92=8C=E6=BC=8F=E5=88=B7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../logic/activity/AbstractActivity.java | 18 +++++++++++++++--- .../jieling/logic/activity/ActivityLogic.java | 4 +++- .../ljsd/jieling/logic/player/PlayerLogic.java | 1 + 3 files changed, 19 insertions(+), 4 deletions(-) diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/AbstractActivity.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/AbstractActivity.java index 775bddbec..c8e819e55 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/AbstractActivity.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/AbstractActivity.java @@ -41,8 +41,7 @@ public abstract class AbstractActivity implements IActivity { updateProgress(user, activityMission, count); //更新进度 ISession sessionByUid = OnlineUserManager.getSessionByUid(user.getId()); - sendActivityProgress(sessionByUid, activityMission,null); - + sendActivityProgress(sessionByUid, activityMission, null); } @@ -106,6 +105,7 @@ public abstract class AbstractActivity implements IActivity { /** * default get reward + * TODO 旧的逻辑 这里应该加上通用检测value的逻辑 */ boolean takeRewardsProcess(ISession session, SActivityRewardConfig sActivityRewardConfig, ActivityProgressInfo activityProgressInfo) throws Exception { int[][] values = sActivityRewardConfig.getValues(); @@ -118,13 +118,23 @@ public abstract class AbstractActivity implements IActivity { return true; } + boolean checkValue(ISession session, SActivityRewardConfig sActivityRewardConfig, ActivityProgressInfo activityProgressInfo) throws Exception { + int[][] values = sActivityRewardConfig.getValues(); + User user = UserManager.getUser(session.getUid()); + int value = user.getActivityManager().getActivityMissionMap().get(sActivityRewardConfig.getActivityId()).getValue(); + if (value < values[0][0]) { + MessageUtil.sendErrorResponse(session, 0, rewardResponseValue, "time not"); + return false; + } + return true; + } @Override public void onActivityEnd() throws Exception { } public List getAllMissInfo(ActivityMission activityMission) { - return getAllMissInfo(activityMission,null); + return getAllMissInfo(activityMission, null); } @Override @@ -144,6 +154,7 @@ public abstract class AbstractActivity implements IActivity { /** * 更新进度 + * * @param filterMissId miss过滤 */ void sendActivityProgress(ISession session, ActivityMission activityMission, Set filterMissId) { @@ -153,4 +164,5 @@ public abstract class AbstractActivity implements IActivity { MessageUtil.sendIndicationMessage(session, 1, MessageTypeProto.MessageType.ACTIVITY_UPDATE_PROGRESS_INDICATION_VALUE, builder.build(), true); } } + } 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 6f574c8fc..a61087d6d 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 @@ -100,7 +100,9 @@ public class ActivityLogic { ActivityManager activityManager = user.getActivityManager(); Map sGlobalActivityMap = SGlobalActivity.getsGlobalActivityMap(); for(Integer openActivityId : openActivityIds){ - activityManager.initAllActivityMission(openActivityId); + if(!activityManager.initAllActivityMission(openActivityId)){ + continue; + } AbstractActivity abstractActivity = ActivityTypeEnum.getActicityType(openActivityId); if (abstractActivity == null) { break; diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/player/PlayerLogic.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/player/PlayerLogic.java index bfb04ef7f..9fd46a557 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/player/PlayerLogic.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/player/PlayerLogic.java @@ -219,6 +219,7 @@ public class PlayerLogic { user.getPlayerInfoManager().setMaxForce(teamForce); user.getUserMissionManager().onGameEvent(user,GameEvent.USER_FORCE_CHANGE); ActivityLogic.getInstance().updateActivityMissionProgress(user, ActivityType.FORCERANK,teamForce); + ActivityLogic.getInstance().updateActivityMissionProgress(user, ActivityType.FORCESTANDARD,teamForce); } } From 919163f51bf9595b9ec668abcaf0723c46732fe4 Mon Sep 17 00:00:00 2001 From: zhangshanxue Date: Mon, 5 Aug 2019 17:00:06 +0800 Subject: [PATCH 02/10] =?UTF-8?q?=E6=AF=8F=E6=97=A5=E9=A6=96=E5=86=B2?= =?UTF-8?q?=E5=92=8C=E7=B4=AF=E8=AE=A1=E5=85=85=E5=80=BC=E5=A4=A9=E6=95=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../jieling/logic/GlobalDataManaager.java | 5 ++ .../logic/activity/AbstractActivity.java | 24 +++++-- .../jieling/logic/activity/ActivityLogic.java | 67 ++++++++++++------- .../jieling/logic/activity/ActivityType.java | 2 + .../logic/activity/ActivityTypeEnum.java | 4 +- .../logic/activity/DailyRechargeActivity.java | 24 +++++++ .../logic/activity/ForceStandardActivity.java | 13 +--- .../jieling/logic/activity/IActivity.java | 5 ++ .../jieling/logic/activity/IEventHandler.java | 10 +++ .../logic/activity/LuckyCatActivity.java | 12 ++-- .../logic/activity/RechargeSumActivity.java | 24 +++++++ .../jieling/logic/dao/ActivityMission.java | 3 +- .../ljsd/jieling/logic/dao/RechargeInfo.java | 11 +++ .../jieling/logic/store/BuyGoodsLogic.java | 8 ++- 14 files changed, 164 insertions(+), 48 deletions(-) create mode 100644 serverlogic/src/main/java/com/ljsd/jieling/logic/activity/DailyRechargeActivity.java create mode 100644 serverlogic/src/main/java/com/ljsd/jieling/logic/activity/IEventHandler.java create mode 100644 serverlogic/src/main/java/com/ljsd/jieling/logic/activity/RechargeSumActivity.java diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/GlobalDataManaager.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/GlobalDataManaager.java index 355be2d9b..1217db574 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/GlobalDataManaager.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/GlobalDataManaager.java @@ -12,8 +12,11 @@ import com.ljsd.jieling.core.HandlerLogicThread; import com.ljsd.jieling.db.mongo.MongoUtil; import com.ljsd.jieling.handler.map.MapLogic; import com.ljsd.jieling.logic.activity.ActivityLogic; +import com.ljsd.jieling.logic.activity.ActivityType; +import com.ljsd.jieling.logic.activity.ActivityTypeEnum; import com.ljsd.jieling.logic.arena.ArenaLogic; import com.ljsd.jieling.logic.dao.GuilidManager; +import com.ljsd.jieling.logic.dao.RechargeInfo; import com.ljsd.jieling.logic.dao.TimeControllerOfFunction; import com.ljsd.jieling.logic.dao.UserMissionManager; import com.ljsd.jieling.logic.dao.root.GlobalSystemControl; @@ -250,6 +253,8 @@ public class GlobalDataManaager { ActivityLogic.getInstance().flushEveryDay(user,fBuilder); PlayerLogic.getInstance().vipflushEveryDay(user,fBuilder); user.getUserMissionManager().onGameEvent(user, GameEvent.DAILY_REFRESH,0); + ActivityLogic.getInstance().resumeActivity(user,ActivityType.DAILY_RECHARGE); + user.getPlayerInfoManager().getRechargeInfo().setDailyFirst(1); FriendLogic.getInstance().refreshState(session); // MapLogic.getInstance().towerAutoReset(session,fBuilder); if(fBuilder!=null){ diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/AbstractActivity.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/AbstractActivity.java index c8e819e55..a307ac88e 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/AbstractActivity.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/AbstractActivity.java @@ -10,6 +10,7 @@ import com.ljsd.jieling.logic.dao.ActivityMission; import com.ljsd.jieling.logic.dao.ActivityProgressInfo; import com.ljsd.jieling.logic.dao.UserManager; import com.ljsd.jieling.logic.dao.root.User; +import com.ljsd.jieling.logic.mission.GameEvent; import com.ljsd.jieling.network.session.ISession; import com.ljsd.jieling.protocols.CommonProto; import com.ljsd.jieling.protocols.MessageTypeProto; @@ -21,20 +22,35 @@ import org.slf4j.LoggerFactory; import java.util.*; -public abstract class AbstractActivity implements IActivity { +/** + * 玩家无关性 + */ +public abstract class AbstractActivity implements IActivity, IEventHandler { static final Logger LOGGER = LoggerFactory.getLogger(AbstractActivity.class); final int rewardResponseValue = MessageTypeProto.MessageType.TAKE_ACTIVITY_REWARD_RESPONSE_VALUE; - int id; + int id; //活动id public AbstractActivity(int id) { this.id = id; } + @Override + public void onEvent(GameEvent event) { + + } + @Override public void initActivity(User user) throws Exception { } + @Override + public void onResume(User user) throws Exception { + ActivityManager activityManager = user.getActivityManager(); + activityManager.removeActivity(id); + activityManager.initAllActivityMission(id); + } + @Override public void update(User user, int count) { ActivityMission activityMission = user.getActivityManager().getActivityMissionMap().get(id); @@ -91,12 +107,12 @@ public abstract class AbstractActivity implements IActivity { if (!takeRewardsProcess(session, sActivityRewardConfig, activityProgressInfo)) { return; } - //upto client and db + //up miss int[][] reward = sActivityRewardConfig.getReward(); CommonProto.Drop.Builder drop = ItemUtil.drop(user, reward, BIReason.TAKE_ACTIVITY_REWARD); activityProgressInfo.setState(ActivityType.HAD_TAKED); activityMission.updateProgressInfo(missionId, activityProgressInfo); - + //send sendActivityProgress(session, activityMission, Collections.singleton(missionId)); KtEventUtils.onKtEvent(user, ParamEventBean.UserActivityEvent, id, missionId); PlayerInfoProto.TakeActivityRewardResponse build = PlayerInfoProto.TakeActivityRewardResponse.newBuilder().setDrop(drop).build(); 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 a61087d6d..86e5a2e00 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 @@ -245,46 +245,62 @@ public class ActivityLogic { } - public void updateActivityMissionProgress(User user,int activityType,int count){ + public void updateActivityMissionProgress(User user, int activityType, int count) { - ActivityManager activityManager = user.getActivityManager(); - Map activityMissionMap = activityManager.getActivityMissionMap(); - for(Map.Entry item : activityMissionMap.entrySet()){ - ActivityMission activityMission = item.getValue(); - if(activityMission.getActivityState() != ActivityType.OPEN_STATE){ - continue; - } - Integer activityId= item.getKey(); - SGlobalActivity sGlobalActivity = SGlobalActivity.getsGlobalActivityMap().get(activityId); - int targetActivityType = sGlobalActivity.getType(); - if(targetActivityType != activityType){ - continue; - } - - AbstractActivity abstractActivity = ActivityTypeEnum.getActicityType(activityId); + for (Integer id: getOpenActivityIdsByType(user, activityType)) { + AbstractActivity abstractActivity = ActivityTypeEnum.getActicityType(id); if (abstractActivity == null) { continue; } - abstractActivity.update(user,count); + abstractActivity.update(user, count); + } + } + + public void resumeActivity(User user, int activityType) throws Exception{ + for (Integer id: getOpenActivityIdsByType(user, activityType)) { + AbstractActivity abstractActivity = ActivityTypeEnum.getActicityType(id); + if (abstractActivity == null) { + continue; + } + abstractActivity.onResume(user); } } + private Set getOpenActivityIdsByType(User user, int activityType) { + Set ids = new HashSet<>(); + ActivityManager activityManager = user.getActivityManager(); + Map activityMissionMap = activityManager.getActivityMissionMap(); + for (Map.Entry item : activityMissionMap.entrySet()) { + ActivityMission activityMission = item.getValue(); + if (activityMission.getActivityState() != ActivityType.OPEN_STATE) { + continue; + } + Integer activityId = item.getKey(); + SGlobalActivity sGlobalActivity = SGlobalActivity.getsGlobalActivityMap().get(activityId); + int targetActivityType = sGlobalActivity.getType(); + if (targetActivityType != activityType) { + continue; + } + ids.add(activityId); + } + return ids; + } - public void upFivePlayerActivity(User user,int activityType, PlayerInfoProto.FivePlayerUpdateIndication.Builder fBuilder){ + public void upFivePlayerActivity(User user, int activityType, PlayerInfoProto.FivePlayerUpdateIndication.Builder fBuilder) { ActivityManager activityManager = user.getActivityManager(); Map activityMissionMap = activityManager.getActivityMissionMap(); - for(Map.Entry item : activityMissionMap.entrySet()){ + for (Map.Entry item : activityMissionMap.entrySet()) { ActivityMission activityMission = item.getValue(); - if(activityMission.getActivityState() != ActivityType.OPEN_STATE){ + if (activityMission.getActivityState() != ActivityType.OPEN_STATE) { continue; } - Integer activityId= item.getKey(); + Integer activityId = item.getKey(); SGlobalActivity sGlobalActivity = SGlobalActivity.getsGlobalActivityMap().get(activityId); int targetActivityType = sGlobalActivity.getType(); - if(targetActivityType != activityType){ + if (targetActivityType != activityType) { continue; } @@ -293,9 +309,12 @@ public class ActivityLogic { continue; } + if(fBuilder==null){ + return; + } long createTime = user.getPlayerInfoManager().getCreateTime(); - int startTime = (int)(sGlobalActivity.getTimeLong(createTime, 1)/1000); - int endTime = (int)(sGlobalActivity.getTimeLong(createTime, 2)/1000); + int startTime = (int) (sGlobalActivity.getTimeLong(createTime, 1) / 1000); + int endTime = (int) (sGlobalActivity.getTimeLong(createTime, 2) / 1000); List missionInfos = abstractActivity.getAllMissInfo(activityMission); fBuilder.addActivityInfo(CommonProto.ActivityInfo.newBuilder().setActivityId(activityId).addAllMission(missionInfos).setStartTime(startTime).setEndTime(endTime).setReallyOpen(activityMission.getOpenType()).build()); 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 0b7b84b39..271d70213 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 @@ -28,5 +28,7 @@ public interface ActivityType { int SERVERHAPPY =10; //七日狂欢 int FORCERANK = 11; //战力排行 int FORCESTANDARD = 12;//战力达标 + int DAILY_RECHARGE = 13;//每日充值 + int RECHARGE_SUM = 14;//累计充值天数 } 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 9cb89b59f..cf86525af 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 @@ -17,7 +17,9 @@ public enum ActivityTypeEnum { TREASUREACTIVITY(ActivityType.TREASURE, TreasureActivity::new), LUCKYCAT(ActivityType.LUCKYCAT, LuckyCatActivity::new), FORCERANK(ActivityType.FORCERANK, ForceRankActivity::new), - FORCESTANDARD(ActivityType.FORCESTANDARD, ForceStandardActivity::new); + FORCESTANDARD(ActivityType.FORCESTANDARD, ForceStandardActivity::new), + DAILY_RECHARGE(ActivityType.DAILY_RECHARGE, DailyRechargeActivity::new), + RECHARGE_SUM(ActivityType.RECHARGE_SUM, RechargeSumActivity::new); private int type; private Function toActivityFunction; private static HashMap acticityCache = new HashMap<>(); diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/DailyRechargeActivity.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/DailyRechargeActivity.java new file mode 100644 index 000000000..f70eacbe1 --- /dev/null +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/DailyRechargeActivity.java @@ -0,0 +1,24 @@ +package com.ljsd.jieling.logic.activity; + +import com.ljsd.jieling.config.SActivityRewardConfig; +import com.ljsd.jieling.logic.dao.ActivityMission; +import com.ljsd.jieling.logic.dao.ActivityProgressInfo; +import com.ljsd.jieling.network.session.ISession; + +class DailyRechargeActivity extends AbstractActivity { + + public DailyRechargeActivity(int id) { + super(id); + } + + @Override + void updateProgress(ActivityMission activityMission, int count) { + activityMission.setValue(count + activityMission.getValue()); + } + + @Override + boolean takeRewardsProcess(ISession session, SActivityRewardConfig sActivityRewardConfig, ActivityProgressInfo activityProgressInfo) throws Exception { + return checkValue(session, sActivityRewardConfig, activityProgressInfo); + } + +} diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/ForceStandardActivity.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/ForceStandardActivity.java index bef69259b..af451a318 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/ForceStandardActivity.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/ForceStandardActivity.java @@ -3,10 +3,8 @@ package com.ljsd.jieling.logic.activity; import com.ljsd.jieling.config.SActivityRewardConfig; import com.ljsd.jieling.logic.dao.ActivityMission; import com.ljsd.jieling.logic.dao.ActivityProgressInfo; -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.MessageUtil; class ForceStandardActivity extends AbstractActivity { @@ -17,19 +15,12 @@ class ForceStandardActivity extends AbstractActivity { @Override public void initActivity(User user) throws Exception { super.initActivity(user); - update(user,user.getPlayerInfoManager().getMaxForce()); + update(user, user.getPlayerInfoManager().getMaxForce()); } @Override boolean takeRewardsProcess(ISession session, SActivityRewardConfig sActivityRewardConfig, ActivityProgressInfo activityProgressInfo) throws Exception { - int[][] values = sActivityRewardConfig.getValues(); - User user = UserManager.getUser(session.getUid()); - int value = user.getActivityManager().getActivityMissionMap().get(sActivityRewardConfig.getActivityId()).getValue(); - if (value < values[0][0]) { - MessageUtil.sendErrorResponse(session, 0, rewardResponseValue, "time not"); - return false; - } - return true; + return checkValue(session, sActivityRewardConfig, activityProgressInfo); } @Override diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/IActivity.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/IActivity.java index c2db86e1f..4a9fd826a 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/IActivity.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/IActivity.java @@ -19,6 +19,11 @@ public interface IActivity { */ void initActivity(User user) throws Exception; + /** + * 活动重开 + */ + void onResume(User user)throws Exception; + /** * 更新活动记录 */ diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/IEventHandler.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/IEventHandler.java new file mode 100644 index 000000000..fa4b28004 --- /dev/null +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/IEventHandler.java @@ -0,0 +1,10 @@ +package com.ljsd.jieling.logic.activity; + + +import com.ljsd.jieling.logic.mission.GameEvent; + +public interface IEventHandler { + + void onEvent(GameEvent event); + +} diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/LuckyCatActivity.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/LuckyCatActivity.java index 34dacecac..076abfade 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/LuckyCatActivity.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/LuckyCatActivity.java @@ -29,7 +29,7 @@ public class LuckyCatActivity extends AbstractActivity { } @Override - public void initActivity(User user){ + public void initActivity(User user) { ActivityMission mission = new ActivityMission(); List luckyMisionIds = new ArrayList<>(); SLuckyCatConfig.getConfigMapByActivityId(id).values().forEach(sLuckyCatConfig -> @@ -41,7 +41,7 @@ public class LuckyCatActivity extends AbstractActivity { @Override void updateProgress(ActivityMission activityMission, int count) { - activityMission.setValue(count); + activityMission.setValue(count + activityMission.getValue()); } @Override @@ -78,7 +78,7 @@ public class LuckyCatActivity extends AbstractActivity { return; } - if (activityMission.getValue() < sLuckyRewardConfig.getRmbValue()){ + if (activityMission.getValue() < sLuckyRewardConfig.getRmbValue()) { MessageUtil.sendErrorResponse(session, 0, rewardResponseValue, "value illegality"); return; } @@ -105,7 +105,7 @@ public class LuckyCatActivity extends AbstractActivity { activityProgressInfo.setState(ActivityType.HAD_TAKED); } - sendActivityProgress(session,activityMission, Collections.singleton(missionId)); + sendActivityProgress(session, activityMission, Collections.singleton(missionId)); //drop int[][] reward = new int[1][]; int[] temp2 = new int[2]; @@ -118,8 +118,8 @@ public class LuckyCatActivity extends AbstractActivity { String nickName = user.getPlayerInfoManager().getNickName(); SItem sItem = SItem.getsItemMap().get(temp2[0]); - String message = SErrorCodeEerverConfig.getI18NMessage("luck_cat_take_reward_content", new Object[]{nickName,sItem.getName(),temp2[1]}); - ChatLogic.getInstance().sendSysChatMessage(message, Global.LUCKCAT,0,0,0,0,0,0); + String message = SErrorCodeEerverConfig.getI18NMessage("luck_cat_take_reward_content", new Object[]{nickName, sItem.getName(), temp2[1]}); + ChatLogic.getInstance().sendSysChatMessage(message, Global.LUCKCAT, 0, 0, 0, 0, 0, 0); PlayerInfoProto.TakeActivityRewardResponse build = PlayerInfoProto.TakeActivityRewardResponse.newBuilder().setDrop(drop).build(); MessageUtil.sendMessage(session, 1, rewardResponseValue, build, true); diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/RechargeSumActivity.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/RechargeSumActivity.java new file mode 100644 index 000000000..a0bd5f97e --- /dev/null +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/RechargeSumActivity.java @@ -0,0 +1,24 @@ +package com.ljsd.jieling.logic.activity; + +import com.ljsd.jieling.config.SActivityRewardConfig; +import com.ljsd.jieling.logic.dao.ActivityMission; +import com.ljsd.jieling.logic.dao.ActivityProgressInfo; +import com.ljsd.jieling.network.session.ISession; + +class RechargeSumActivity extends AbstractActivity { + + public RechargeSumActivity(int id) { + super(id); + } + + @Override + void updateProgress(ActivityMission activityMission, int count) { + activityMission.setValue(count + activityMission.getValue()); + } + + @Override + boolean takeRewardsProcess(ISession session, SActivityRewardConfig sActivityRewardConfig, ActivityProgressInfo activityProgressInfo) throws Exception { + return checkValue(session, sActivityRewardConfig, activityProgressInfo); + } + +} diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/ActivityMission.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/ActivityMission.java index 4667f4748..d182f57db 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/ActivityMission.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/ActivityMission.java @@ -32,7 +32,7 @@ public class ActivityMission extends MongoBase { openType=0; } activityState = ActivityType.OPEN_STATE; - + value=0; return true; } @@ -42,6 +42,7 @@ public class ActivityMission extends MongoBase { activityProgressInfoMap.put(missionId, new ActivityProgressInfo(0,0)); } openType=1; + value=0; activityState = ActivityType.OPEN_STATE; } diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/RechargeInfo.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/RechargeInfo.java index b38de1cc6..89fb97102 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/RechargeInfo.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/RechargeInfo.java @@ -13,6 +13,7 @@ public class RechargeInfo extends MongoBase{ private int isFirst; private long createTime; private int hadBuyFound; + private int isDayFirst; private Map levelBagMap = new HashMap<>(); @@ -79,6 +80,12 @@ public class RechargeInfo extends MongoBase{ isFirst = first; } + public void setDailyFirst(int first) { + updateString("isFirst",first); + isDayFirst = first; + } + + public void setCreateTime(long createTime) { updateString("createTime",createTime); this.createTime = createTime; @@ -120,6 +127,10 @@ public class RechargeInfo extends MongoBase{ return isFirst; } + public int getIsDayFirst() { + return isDayFirst; + } + public int getHadBuyFound() { return hadBuyFound; } diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/store/BuyGoodsLogic.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/store/BuyGoodsLogic.java index 573dcace0..c0d4dd0a9 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/store/BuyGoodsLogic.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/store/BuyGoodsLogic.java @@ -145,6 +145,12 @@ public class BuyGoodsLogic { String content = SErrorCodeEerverConfig.getI18NMessage("recharge_first_txt"); MailLogic.getInstance().sendMail(user.getId(),title,content,ItemUtil.getMailReward(sActivityRewardConfig.getReward()),nowTime, Global.MAIL_EFFECTIVE_TIME); } + + if(rechargeInfo.getIsDayFirst()==0){ + ActivityLogic.getInstance().updateActivityMissionProgress(user, ActivityType.DAILY_RECHARGE,price); + ActivityLogic.getInstance().updateActivityMissionProgress(user, ActivityType.RECHARGE_SUM,1); + rechargeInfo.setDailyFirst(1); + } if(length>baseReward.length){ int[][] result = new int[length][]; int i=0; @@ -172,7 +178,7 @@ public class BuyGoodsLogic { int saveAmt = rechargeInfo.getSaveAmt(); rechargeInfo.setSaveAmt(price+saveAmt); ActivityLogic.getInstance().updateActivityMissionProgress(user, ActivityType.RechargeTotal,rechargeInfo.getSaveAmt()); - ActivityLogic.getInstance().updateActivityMissionProgress(user, ActivityType.LUCKYCAT,rechargeInfo.getSaveAmt()); + ActivityLogic.getInstance().updateActivityMissionProgress(user, ActivityType.LUCKYCAT,saveAmt); } buyGoodsTimes.put(goodsId,buyCount); From 7555d9a08c26c471fef20b5408308c447163ce48 Mon Sep 17 00:00:00 2001 From: zhangshanxue Date: Mon, 5 Aug 2019 17:27:52 +0800 Subject: [PATCH 03/10] =?UTF-8?q?=E5=BF=BD=E7=95=A5=E9=85=8D=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitignore b/.gitignore index 72d923d06..2f5cbaa4b 100644 --- a/.gitignore +++ b/.gitignore @@ -16,3 +16,4 @@ luafight/LogError/*.json luafight/BattleRecord/*.txt luafight/BattleRecord/*.json serverlogic/src/main/thrift +conf/server From ad95f83eee0ff18fb8b76d52ef7182246a7de08a Mon Sep 17 00:00:00 2001 From: zhangshanxue Date: Wed, 7 Aug 2019 10:28:41 +0800 Subject: [PATCH 04/10] price err --- .../main/java/com/ljsd/jieling/logic/store/BuyGoodsLogic.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/store/BuyGoodsLogic.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/store/BuyGoodsLogic.java index c0d4dd0a9..3ae834362 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/store/BuyGoodsLogic.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/store/BuyGoodsLogic.java @@ -178,7 +178,7 @@ public class BuyGoodsLogic { int saveAmt = rechargeInfo.getSaveAmt(); rechargeInfo.setSaveAmt(price+saveAmt); ActivityLogic.getInstance().updateActivityMissionProgress(user, ActivityType.RechargeTotal,rechargeInfo.getSaveAmt()); - ActivityLogic.getInstance().updateActivityMissionProgress(user, ActivityType.LUCKYCAT,saveAmt); + ActivityLogic.getInstance().updateActivityMissionProgress(user, ActivityType.LUCKYCAT,price); } buyGoodsTimes.put(goodsId,buyCount); From d0e36989e4c7b97922fe87fe4c5f88174f272cf5 Mon Sep 17 00:00:00 2001 From: zhangshanxue Date: Tue, 6 Aug 2019 11:20:46 +0800 Subject: [PATCH 05/10] =?UTF-8?q?=E8=BE=BE=E4=BA=BA=20=E6=AF=8F=E6=97=A5?= =?UTF-8?q?=E9=A6=96=E5=86=B2=20=E8=BF=9E=E7=BB=AD=E5=85=85=E5=80=BC=20?= =?UTF-8?q?=E7=AD=BE=E5=88=B0=20=E7=B4=AF=E8=AE=A1=E5=85=85=E5=80=BC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/ljsd/jieling/config/SGameSetting.java | 10 +- .../ljsd/jieling/config/SSignInConfig.java | 48 ++ .../com/ljsd/jieling/db/redis/RedisKey.java | 1 + .../jieling/handler/ExpertRankHandler.java | 23 + .../jieling/handler/GetPlayerInfoHandler.java | 1 + .../ljsd/jieling/handler/SignInHandler.java | 60 ++ .../ljsd/jieling/handler/map/MapLogic.java | 3 + .../jieling/logic/GlobalDataManaager.java | 3 +- .../logic/activity/AbstractActivity.java | 16 +- .../jieling/logic/activity/ActivityLogic.java | 554 ++++++++++-------- .../jieling/logic/activity/ActivityType.java | 36 +- .../logic/activity/ActivityTypeEnum.java | 72 ++- .../activity/AreanaExpectRankActivity.java | 23 + .../activity/CopyExpectRankActivity.java | 23 + .../logic/activity/DailyRechargeActivity.java | 3 + .../activity/EquipExpectRankActivity.java | 33 ++ .../logic/activity/ExpectRankActivity.java | 48 ++ .../logic/activity/ForceRankActivity.java | 2 +- .../activity/GoldExpectRankActivity.java | 22 + .../activity/HeroUpExpectRankActivity.java | 50 ++ .../jieling/logic/activity/IActivity.java | 4 + .../jieling/logic/activity/IEventHandler.java | 4 +- .../logic/activity/RechargeSumActivity.java | 5 +- .../activity/RechargeSumDayActivity.java | 33 ++ .../activity/SecretExpectRankActivity.java | 23 + .../logic/activity/SignInSumActivity.java | 35 ++ .../activity/StaminaExpectRankActivity.java | 24 + .../logic/activity/event/AddItemEvent.java | 23 + .../activity/event/ArenaChallengeEvent.java | 17 + .../logic/activity/event/EquipEvent.java | 23 + .../logic/activity/event/GoldEvent.java | 17 + .../logic/activity/event/HeroUpStarEvent.java | 17 + .../jieling/logic/activity/event/IEvent.java | 5 + .../jieling/logic/activity/event/Poster.java | 53 ++ .../logic/activity/event/SecretEvent.java | 17 + .../logic/activity/event/StoryEvent.java | 17 + .../logic/activity/event/UseItemEvent.java | 23 + .../ljsd/jieling/logic/arena/ArenaLogic.java | 3 + .../ljsd/jieling/logic/dao/EquipManager.java | 3 + .../ljsd/jieling/logic/dao/PlayerManager.java | 22 + .../ljsd/jieling/logic/fight/CombatLogic.java | 3 + .../ljsd/jieling/logic/hero/HeroLogic.java | 3 + .../jieling/logic/store/BuyGoodsLogic.java | 8 +- .../ljsd/jieling/logic/store/StoreLogic.java | 5 + .../java/com/ljsd/jieling/util/ItemUtil.java | 3 + 45 files changed, 1122 insertions(+), 299 deletions(-) create mode 100644 serverlogic/src/main/java/com/ljsd/jieling/config/SSignInConfig.java create mode 100644 serverlogic/src/main/java/com/ljsd/jieling/handler/ExpertRankHandler.java create mode 100644 serverlogic/src/main/java/com/ljsd/jieling/handler/SignInHandler.java create mode 100644 serverlogic/src/main/java/com/ljsd/jieling/logic/activity/AreanaExpectRankActivity.java create mode 100644 serverlogic/src/main/java/com/ljsd/jieling/logic/activity/CopyExpectRankActivity.java create mode 100644 serverlogic/src/main/java/com/ljsd/jieling/logic/activity/EquipExpectRankActivity.java create mode 100644 serverlogic/src/main/java/com/ljsd/jieling/logic/activity/ExpectRankActivity.java create mode 100644 serverlogic/src/main/java/com/ljsd/jieling/logic/activity/GoldExpectRankActivity.java create mode 100644 serverlogic/src/main/java/com/ljsd/jieling/logic/activity/HeroUpExpectRankActivity.java create mode 100644 serverlogic/src/main/java/com/ljsd/jieling/logic/activity/RechargeSumDayActivity.java create mode 100644 serverlogic/src/main/java/com/ljsd/jieling/logic/activity/SecretExpectRankActivity.java create mode 100644 serverlogic/src/main/java/com/ljsd/jieling/logic/activity/SignInSumActivity.java create mode 100644 serverlogic/src/main/java/com/ljsd/jieling/logic/activity/StaminaExpectRankActivity.java create mode 100644 serverlogic/src/main/java/com/ljsd/jieling/logic/activity/event/AddItemEvent.java create mode 100644 serverlogic/src/main/java/com/ljsd/jieling/logic/activity/event/ArenaChallengeEvent.java create mode 100644 serverlogic/src/main/java/com/ljsd/jieling/logic/activity/event/EquipEvent.java create mode 100644 serverlogic/src/main/java/com/ljsd/jieling/logic/activity/event/GoldEvent.java create mode 100644 serverlogic/src/main/java/com/ljsd/jieling/logic/activity/event/HeroUpStarEvent.java create mode 100644 serverlogic/src/main/java/com/ljsd/jieling/logic/activity/event/IEvent.java create mode 100644 serverlogic/src/main/java/com/ljsd/jieling/logic/activity/event/Poster.java create mode 100644 serverlogic/src/main/java/com/ljsd/jieling/logic/activity/event/SecretEvent.java create mode 100644 serverlogic/src/main/java/com/ljsd/jieling/logic/activity/event/StoryEvent.java create mode 100644 serverlogic/src/main/java/com/ljsd/jieling/logic/activity/event/UseItemEvent.java diff --git a/serverlogic/src/main/java/com/ljsd/jieling/config/SGameSetting.java b/serverlogic/src/main/java/com/ljsd/jieling/config/SGameSetting.java index a1213cb24..4e9edc34a 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/config/SGameSetting.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/config/SGameSetting.java @@ -98,7 +98,7 @@ public class SGameSetting implements BaseConfig { private Map itemRecoveryMap; - + private int showRank; private static SGameSetting gameSetting; @@ -287,4 +287,12 @@ public class SGameSetting implements BaseConfig { public void setItemRecoveryMap(Map itemRecoveryMap) { this.itemRecoveryMap = itemRecoveryMap; } + + public int getShowRank() { + return showRank; + } + + public void setShowRank(int showRank) { + showRank = showRank; + } } \ No newline at end of file diff --git a/serverlogic/src/main/java/com/ljsd/jieling/config/SSignInConfig.java b/serverlogic/src/main/java/com/ljsd/jieling/config/SSignInConfig.java new file mode 100644 index 000000000..84c9c20e5 --- /dev/null +++ b/serverlogic/src/main/java/com/ljsd/jieling/config/SSignInConfig.java @@ -0,0 +1,48 @@ +package com.ljsd.jieling.config; + +import com.ljsd.jieling.logic.STableManager; +import com.ljsd.jieling.logic.Table; + +import java.util.Map; + +@Table(name = "SignInConfig") +public class SSignInConfig implements BaseConfig { + + private int id; + + private int month; + + private int day; + + private int[] reward; + + private static Map sSignInConfigMap; + + @Override + public void init() throws Exception { + sSignInConfigMap = STableManager.getConfig(SSignInConfig.class); + + } + + public static Map getsSignInConfigMap() { + return sSignInConfigMap; + } + + public int getId() { + return id; + } + + public int getMonth() { + return month; + } + + public int getDay() { + return day; + } + + public int[] getreward() { + return reward; + } + + +} \ No newline at end of file diff --git a/serverlogic/src/main/java/com/ljsd/jieling/db/redis/RedisKey.java b/serverlogic/src/main/java/com/ljsd/jieling/db/redis/RedisKey.java index e5ffab2b2..1366dc841 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/db/redis/RedisKey.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/db/redis/RedisKey.java @@ -109,6 +109,7 @@ public class RedisKey { public static final String TOWER_RANK = "TOWER_RANK"; public static final String FORCE_RANK = "FORCE_RANK"; + public static final String EXPERT_RANK = "EXPERT_RANK"; public static final String FAMILY_ID = "FAMILY_ID"; diff --git a/serverlogic/src/main/java/com/ljsd/jieling/handler/ExpertRankHandler.java b/serverlogic/src/main/java/com/ljsd/jieling/handler/ExpertRankHandler.java new file mode 100644 index 000000000..c4fa39abb --- /dev/null +++ b/serverlogic/src/main/java/com/ljsd/jieling/handler/ExpertRankHandler.java @@ -0,0 +1,23 @@ +package com.ljsd.jieling.handler; + +import com.ljsd.jieling.logic.activity.ActivityLogic; +import com.ljsd.jieling.netty.cocdex.PacketNetData; +import com.ljsd.jieling.network.session.ISession; +import com.ljsd.jieling.protocols.MessageTypeProto; +import com.ljsd.jieling.protocols.PlayerInfoProto; +import org.springframework.stereotype.Component; + +@Component +public class ExpertRankHandler extends BaseHandler { + @Override + public MessageTypeProto.MessageType getMessageCode() { + return MessageTypeProto.MessageType.GETF_EXPERT_RANK_INFO_REQUEST; + } + + @Override + public void process(ISession iSession, PacketNetData netData) throws Exception { + byte[] bytes = netData.parseClientProtoNetData(); + PlayerInfoProto.GetExpertInfoRequest getExpertInfoRequest = PlayerInfoProto.GetExpertInfoRequest.parseFrom(bytes); + ActivityLogic.getInstance().getExpertRank(iSession,getExpertInfoRequest.getActiviteId()); + } +} diff --git a/serverlogic/src/main/java/com/ljsd/jieling/handler/GetPlayerInfoHandler.java b/serverlogic/src/main/java/com/ljsd/jieling/handler/GetPlayerInfoHandler.java index e911204ef..3020a277b 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/handler/GetPlayerInfoHandler.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/handler/GetPlayerInfoHandler.java @@ -121,6 +121,7 @@ public class GetPlayerInfoHandler extends BaseHandler{ .addAllGoodsTypeDuration(goodsTypeDurations) .setHadBuyTreasure(playerInfoManager.getHadBuyTreasure()) .setTreasureScore(playerInfoManager.getTreasureScore()) + .setSignInInfo(CommonProto.SignInInfo.newBuilder().setDays(playerInfoManager.getSign()+1).setState(playerInfoManager.getSignTotay()).build()) .build(); try { MessageUtil.sendMessage(iSession, 1, MessageTypeProto.MessageType.GET_PLAYERINFO_RESPONSE_VALUE, getPlayerInfoResponse, true); diff --git a/serverlogic/src/main/java/com/ljsd/jieling/handler/SignInHandler.java b/serverlogic/src/main/java/com/ljsd/jieling/handler/SignInHandler.java new file mode 100644 index 000000000..2d922cc33 --- /dev/null +++ b/serverlogic/src/main/java/com/ljsd/jieling/handler/SignInHandler.java @@ -0,0 +1,60 @@ +package com.ljsd.jieling.handler; + +import com.ljsd.jieling.config.SSignInConfig; +import com.ljsd.jieling.globals.BIReason; +import com.ljsd.jieling.logic.dao.UserManager; +import com.ljsd.jieling.logic.dao.root.User; +import com.ljsd.jieling.netty.cocdex.PacketNetData; +import com.ljsd.jieling.network.session.ISession; +import com.ljsd.jieling.protocols.CommonProto; +import com.ljsd.jieling.protocols.MessageTypeProto; +import com.ljsd.jieling.protocols.PlayerInfoProto; +import com.ljsd.jieling.util.ItemUtil; +import com.ljsd.jieling.util.MessageUtil; +import org.springframework.stereotype.Component; + +import java.util.Calendar; + +@Component +public class SignInHandler extends BaseHandler { + @Override + public MessageTypeProto.MessageType getMessageCode() { + return MessageTypeProto.MessageType.SIGN_IN_REQUEST; + } + + @Override + public void process(ISession iSession, PacketNetData netData) throws Exception { + byte[] bytes = netData.parseClientProtoNetData(); + PlayerInfoProto.SignInRequest signInRequest = PlayerInfoProto.SignInRequest.parseFrom(bytes); + int index = signInRequest.getDayIndex(); + + SSignInConfig sign = SSignInConfig.getsSignInConfigMap().get(index); + //check cfg + if (sign == null) { + MessageUtil.sendErrorResponse(iSession, 0, MessageTypeProto.MessageType.SIGN_IN_RESPONSE_VALUE, "cfg null"); + return; + } + + Calendar cale = Calendar.getInstance(); + int month = cale.get(Calendar.MONTH) + 1; + if (sign.getMonth() != month) { + return; + } + + User user = UserManager.getUser(iSession.getUid()); + if (sign.getDay() != (user.getPlayerInfoManager().getSign() + 1)) { + MessageUtil.sendErrorResponse(iSession, 0, MessageTypeProto.MessageType.SIGN_IN_RESPONSE_VALUE, "day out0findex"); + return; + } + + user.getPlayerInfoManager().setSignTotay(1); + + int[] reward = sign.getreward(); + int[][] cost = new int[1][]; + cost[0] = reward; + CommonProto.Drop.Builder drop = ItemUtil.drop(user, cost, BIReason.TAKE_ACTIVITY_REWARD); + PlayerInfoProto.SignInResponse build = PlayerInfoProto.SignInResponse.newBuilder().setDrop(drop).build(); + MessageUtil.sendMessage(iSession, 1, MessageTypeProto.MessageType.SIGN_IN_RESPONSE_VALUE, build, true); + + } +} diff --git a/serverlogic/src/main/java/com/ljsd/jieling/handler/map/MapLogic.java b/serverlogic/src/main/java/com/ljsd/jieling/handler/map/MapLogic.java index bcbaaaa52..f5a0e0c1b 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/handler/map/MapLogic.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/handler/map/MapLogic.java @@ -14,6 +14,8 @@ import com.ljsd.jieling.handler.mission.Mission; import com.ljsd.jieling.ktbeans.KTGameType; import com.ljsd.jieling.ktbeans.KtEventUtils; import com.ljsd.jieling.ktbeans.parmsBean.ParamEventBean; +import com.ljsd.jieling.logic.activity.event.Poster; +import com.ljsd.jieling.logic.activity.event.StoryEvent; import com.ljsd.jieling.logic.dao.*; import com.ljsd.jieling.logic.dao.root.User; import com.ljsd.jieling.logic.fight.CheckFight; @@ -181,6 +183,7 @@ public class MapLogic { } user.setMapManager(mapManager); user.getUserMissionManager().onGameEvent(user,GameEvent.PlAY_STORY,SChallengeConfig.sChallengeConfigs.get(mapId).getType(),1); + Poster.getPoster().dispatchEvent(new StoryEvent(user.getId())); } else if (mapManager.getCurMapId() != mapId) { MessageUtil.sendErrorResponse(iSession, 0, messageType.getNumber(), "地图错误,应进入" + mapManager.getCurMapId()); return; diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/GlobalDataManaager.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/GlobalDataManaager.java index 1217db574..2a0eb0ade 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/GlobalDataManaager.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/GlobalDataManaager.java @@ -253,11 +253,10 @@ public class GlobalDataManaager { ActivityLogic.getInstance().flushEveryDay(user,fBuilder); PlayerLogic.getInstance().vipflushEveryDay(user,fBuilder); user.getUserMissionManager().onGameEvent(user, GameEvent.DAILY_REFRESH,0); - ActivityLogic.getInstance().resumeActivity(user,ActivityType.DAILY_RECHARGE); - user.getPlayerInfoManager().getRechargeInfo().setDailyFirst(1); FriendLogic.getInstance().refreshState(session); // MapLogic.getInstance().towerAutoReset(session,fBuilder); if(fBuilder!=null){ + fBuilder.setSignInInfo(CommonProto.SignInInfo.newBuilder().setDays(user.getPlayerInfoManager().getSign()+1).setState(user.getPlayerInfoManager().getSignTotay()).build()); user.getPlayerInfoManager().setLoginTime(TimeUtils.now()); Map config = SDailyTasksConfig.config; int dailymissionType = GameMisionType.DAILYMISSION.getType(); diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/AbstractActivity.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/AbstractActivity.java index 0a3676672..8208650ea 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/AbstractActivity.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/AbstractActivity.java @@ -5,12 +5,12 @@ import com.ljsd.jieling.globals.BIReason; import com.ljsd.jieling.ktbeans.KtEventUtils; import com.ljsd.jieling.ktbeans.parmsBean.ParamEventBean; import com.ljsd.jieling.logic.OnlineUserManager; +import com.ljsd.jieling.logic.activity.event.IEvent; import com.ljsd.jieling.logic.dao.ActivityManager; import com.ljsd.jieling.logic.dao.ActivityMission; import com.ljsd.jieling.logic.dao.ActivityProgressInfo; import com.ljsd.jieling.logic.dao.UserManager; import com.ljsd.jieling.logic.dao.root.User; -import com.ljsd.jieling.logic.mission.GameEvent; import com.ljsd.jieling.network.session.ISession; import com.ljsd.jieling.protocols.CommonProto; import com.ljsd.jieling.protocols.MessageTypeProto; @@ -35,7 +35,7 @@ public abstract class AbstractActivity implements IActivity, IEventHandler { } @Override - public void onEvent(GameEvent event) { + public void onEvent(IEvent event)throws Exception { } @@ -109,8 +109,7 @@ public abstract class AbstractActivity implements IActivity, IEventHandler { //up miss int[][] reward = sActivityRewardConfig.getReward(); CommonProto.Drop.Builder drop = ItemUtil.drop(user, reward, BIReason.TAKE_ACTIVITY_REWARD); - activityProgressInfo.setState(ActivityType.HAD_TAKED); - activityMission.updateProgressInfo(missionId, activityProgressInfo); + checkAndSetProgress(activityMission,activityProgressInfo,sActivityRewardConfig,missionId); //send sendActivityProgress(session, activityMission, Collections.singleton(missionId)); KtEventUtils.onKtEvent(user, ParamEventBean.UserActivityEvent, id, missionId); @@ -119,9 +118,15 @@ public abstract class AbstractActivity implements IActivity, IEventHandler { return true; } + void checkAndSetProgress(ActivityMission activityMission, ActivityProgressInfo activityProgressInfo, SActivityRewardConfig sActivityRewardConfig,int missionId) { + activityProgressInfo.setState(ActivityType.HAD_TAKED); + activityMission.updateProgressInfo(missionId, activityProgressInfo); + } + /** * default get reward * TODO 旧的逻辑 这里应该加上通用检测value的逻辑 + * 根据配置解析阶段值 */ boolean takeRewardsProcess(ISession session, SActivityRewardConfig sActivityRewardConfig, ActivityProgressInfo activityProgressInfo) throws Exception { int[][] values = sActivityRewardConfig.getValues(); @@ -134,6 +139,9 @@ public abstract class AbstractActivity implements IActivity, IEventHandler { return true; } + /** + * 根据配置解析数值进度完成度 + */ boolean checkValue(ISession session, SActivityRewardConfig sActivityRewardConfig, ActivityProgressInfo activityProgressInfo) throws Exception { int[][] values = sActivityRewardConfig.getValues(); User user = UserManager.getUser(session.getUid()); 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 86e5a2e00..ca35d1b51 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 @@ -31,20 +31,34 @@ import java.util.*; public class ActivityLogic { private static final Logger LOGGER = LoggerFactory.getLogger(ActivityLogic.class); - private ActivityLogic(){} + private ActivityLogic() { + } - private Set openActivityIds =new HashSet<>(); + private Set openActivityIds = new HashSet<>(); - private int secretBoxSeasonTimes =0; //秘盒赛季 + private int secretBoxSeasonTimes = 0; //秘盒赛季 - public void flushEveryDay(User user, PlayerInfoProto.FivePlayerUpdateIndication.Builder fBuilder) { - updateActivityMissionProgress(user, ActivityType.SevenLogin,1); - upFivePlayerActivity(user, ActivityType.SevenLogin,fBuilder); + public void flushEveryDay(User user, PlayerInfoProto.FivePlayerUpdateIndication.Builder fBuilder) throws Exception { + + //跟新签到天数 + if (user.getPlayerInfoManager().getSignTotay() == 1){ + user.getPlayerInfoManager().setSign(user.getPlayerInfoManager().getSign() + 1); + user.getPlayerInfoManager().setSignTotay(0); + } + //更新每日充值 + ActivityLogic.getInstance().resumeActivity(user,ActivityType.DAILY_RECHARGE); + //更新首日充值 + user.getPlayerInfoManager().getRechargeInfo().setDailyFirst(0); + //更新累计充值天数 + ActivityLogic.getInstance().resumeActivity(user,ActivityType.RECHARGE_SUM_DAY); + + updateActivityMissionProgress(user, ActivityType.SevenLogin, 1); + upFivePlayerActivity(user, ActivityType.SevenLogin, fBuilder); } public void flushForLogin(User user) throws Exception { checkActivityIsFinish(user); - checkActivityOfUser(user,null); + checkActivityOfUser(user, null); } public static class Instance { @@ -54,17 +68,17 @@ public class ActivityLogic { public void checkActiviyStatus() throws Exception { long now = System.currentTimeMillis(); Map sGlobalActivityMap = SGlobalActivity.getsGlobalActivityMap(); - for(SGlobalActivity sGlobalActivity:sGlobalActivityMap.values()){ + for (SGlobalActivity sGlobalActivity : sGlobalActivityMap.values()) { int time = sGlobalActivity.getTime(); - if(time ==2 ){ + if (time == 2) { continue; } - long startTime = sGlobalActivity.getTimeLong(0,time); - long endTime = sGlobalActivity.getTimeLong(0,time); - if(nowendTime && openActivityIds.contains(sGlobalActivity.getId())){ + if (endTime != 0 && now > endTime && openActivityIds.contains(sGlobalActivity.getId())) { openActivityIds.remove(sGlobalActivity.getId()); ActivityTypeEnum.getActicityType(sGlobalActivity.getId()).onActivityEnd(); continue; @@ -72,35 +86,35 @@ public class ActivityLogic { openActivityIds.add(sGlobalActivity.getId()); } - for(Map.Entry entry:OnlineUserManager.sessionMap.entrySet()){ + for (Map.Entry entry : OnlineUserManager.sessionMap.entrySet()) { User user = UserManager.getUserInMem(entry.getKey()); PlayerInfoProto.ActivityUpateIndication.Builder builder = PlayerInfoProto.ActivityUpateIndication.newBuilder(); - Set openNews = checkActivityOfUser(user,builder); - if(!openNews.isEmpty()){ + Set openNews = checkActivityOfUser(user, builder); + if (!openNews.isEmpty()) { Map activityMissionMap = user.getActivityManager().getActivityMissionMap(); Map activityUpdateMap = new HashMap<>(); - for(Integer activityId : openNews){ - activityUpdateMap.put(activityId,activityMissionMap.get(activityId)); + for (Integer activityId : openNews) { + activityUpdateMap.put(activityId, activityMissionMap.get(activityId)); } List activityInfos = getActivityInfos(activityUpdateMap, user.getPlayerInfoManager().getCreateTime()); builder.addAllActivityInfo(activityInfos); } - if(builder.getActivityInfoCount()>0 || builder.getCloseActivityIdCount() >0 ){ - MessageUtil.sendIndicationMessage(entry.getValue(),1, MessageTypeProto.MessageType.ACTIVITY_UPDATE_INDICATION_VALUE,builder.build(),true); + if (builder.getActivityInfoCount() > 0 || builder.getCloseActivityIdCount() > 0) { + MessageUtil.sendIndicationMessage(entry.getValue(), 1, MessageTypeProto.MessageType.ACTIVITY_UPDATE_INDICATION_VALUE, builder.build(), true); } } } public void newPlayerOpenActivityMission(User user) throws Exception { - checkActivityOfUser(user,null); + checkActivityOfUser(user, null); } - public Set checkActivityOfUser(User user, PlayerInfoProto.ActivityUpateIndication.Builder builder) throws Exception { + public Set checkActivityOfUser(User user, PlayerInfoProto.ActivityUpateIndication.Builder builder) throws Exception { long now = TimeUtils.now(); ActivityManager activityManager = user.getActivityManager(); Map sGlobalActivityMap = SGlobalActivity.getsGlobalActivityMap(); - for(Integer openActivityId : openActivityIds){ - if(!activityManager.initAllActivityMission(openActivityId)){ + for (Integer openActivityId : openActivityIds) { + if (!activityManager.initAllActivityMission(openActivityId)) { continue; } AbstractActivity abstractActivity = ActivityTypeEnum.getActicityType(openActivityId); @@ -112,42 +126,42 @@ public class ActivityLogic { Map activityMissionMap = activityManager.getActivityMissionMap(); long userCreateTime = user.getPlayerInfoManager().getCreateTime(); Set openNewActivityIds = new HashSet<>(); - for(SGlobalActivity sGlobalActivity:sGlobalActivityMap.values()){ + for (SGlobalActivity sGlobalActivity : sGlobalActivityMap.values()) { int activityId = sGlobalActivity.getId(); - if(openActivityIds.contains(activityId)){ + if (openActivityIds.contains(activityId)) { continue; } int time = sGlobalActivity.getTime(); - if(time ==ActivityType.OPEN_TYPE_ROLE ){ - long startTime = sGlobalActivity.getTimeLong(userCreateTime,1); - long endTime = sGlobalActivity.getTimeLong(userCreateTime,2); - if(nowendTime){ + if (endTime != 0 && now > endTime) { ActivityMission activityMission = activityMissionMap.get(activityId); - if(activityMission!=null){ + if (activityMission != null) { activityManager.removeActivity(activityId); - LOGGER.info("the uid={},remove the activity id ={}",user.getId(),activityId); - if(builder!=null){ + LOGGER.info("the uid={},remove the activity id ={}", user.getId(), activityId); + if (builder != null) { builder.addCloseActivityId(activityId); } } continue; } ActivityMission activityMission = activityMissionMap.get(activityId); - if(activityMission!=null){ - continue; + if (activityMission != null) { + continue; } activityManager.initAllActivityMission(activityId); - initOtherActivity(user,sGlobalActivity); + initOtherActivity(user, sGlobalActivity); openNewActivityIds.add(activityId); - }else{ + } else { ActivityMission activityMission = activityMissionMap.get(activityId); - if(activityMission!=null){ + if (activityMission != null) { activityManager.removeActivity(activityId); - LOGGER.info("the uid={},remove the activity id ={}",user.getId(),activityId); - if(builder!=null){ + LOGGER.info("the uid={},remove the activity id ={}", user.getId(), activityId); + if (builder != null) { builder.addCloseActivityId(activityId); } } @@ -176,10 +190,10 @@ public class ActivityLogic { } public void initServenHappy(User user, SGlobalActivity sGlobalActivity) throws Exception { - user.getUserMissionManager().onGameEvent(user,GameEvent.SERVENHAPPY_REFRESH,sGlobalActivity.getId()); + user.getUserMissionManager().onGameEvent(user, GameEvent.SERVENHAPPY_REFRESH, sGlobalActivity.getId()); ActivityMission activityMission = new ActivityMission(); activityMission.initOtherMission(new ArrayList<>()); - user.getActivityManager().addActivity(sGlobalActivity.getId(),activityMission); + user.getActivityManager().addActivity(sGlobalActivity.getId(), activityMission); } @@ -188,38 +202,37 @@ public class ActivityLogic { } - public void getAllActivityInfo(ISession session) throws Exception { int uid = session.getUid(); User user = UserManager.getUser(uid); long createTime = user.getPlayerInfoManager().getCreateTime(); int rewardResponseValue = MessageTypeProto.MessageType.GET_ALL_ACTIVITY_RESPONSE_VALUE; - checkActivityOfUser(user,null); - List activityInfoList =getActivityInfos(user.getActivityManager().getActivityMissionMap(), createTime); + checkActivityOfUser(user, null); + List activityInfoList = getActivityInfos(user.getActivityManager().getActivityMissionMap(), createTime); PlayerInfoProto.GetAllActivityResponse build = PlayerInfoProto.GetAllActivityResponse.newBuilder().addAllActivityInfo(activityInfoList).build(); - MessageUtil.sendMessage(session,1,rewardResponseValue,build,true); + MessageUtil.sendMessage(session, 1, rewardResponseValue, build, true); } - private List getActivityInfos(Map activityMissionMap, long createTime){ + private List getActivityInfos(Map activityMissionMap, long createTime) { Map sGlobalActivityMap = SGlobalActivity.getsGlobalActivityMap(); List activityInfoList = new ArrayList<>(activityMissionMap.size()); - for(Map.Entry activityState : activityMissionMap.entrySet()){ + for (Map.Entry activityState : activityMissionMap.entrySet()) { Integer activityId = activityState.getKey(); ActivityMission activityMission = activityState.getValue(); //todo 活动未初始化成功 - if(activityMission == null){ + if (activityMission == null) { continue; } int activityStatus = activityMission.getActivityState(); - if(SGlobalActivity.getsGlobalActivityMap().get(activityId).getType()!=7&&activityStatus != ActivityType.OPEN_STATE){ + if (SGlobalActivity.getsGlobalActivityMap().get(activityId).getType() != 7 && activityStatus != ActivityType.OPEN_STATE) { continue; } SGlobalActivity sGlobalActivity = sGlobalActivityMap.get(activityId); - int startTime = (int)(sGlobalActivity.getTimeLong(createTime, 1)/1000); - int endTime = (int)(sGlobalActivity.getTimeLong(createTime, 2)/1000); + int startTime = (int) (sGlobalActivity.getTimeLong(createTime, 1) / 1000); + int endTime = (int) (sGlobalActivity.getTimeLong(createTime, 2) / 1000); Map activityProgressInfoMap = activityMission.getActivityProgressInfoMap(); List missionInfos = new ArrayList<>(activityProgressInfoMap.size()); - for( Map.Entry missionProgress : activityProgressInfoMap.entrySet()){ + for (Map.Entry missionProgress : activityProgressInfoMap.entrySet()) { Integer missionId = missionProgress.getKey(); ActivityProgressInfo activityProgressInfo = missionProgress.getValue(); missionInfos.add(CommonProto.ActivityInfo.MissionInfo.newBuilder().setMissionId(missionId).setProgress(activityProgressInfo.getProgrss()).setState(activityProgressInfo.getState()).build()); @@ -229,15 +242,15 @@ public class ActivityLogic { return activityInfoList; } - public void openActivityReallyOpen(User user,int activityType){ + public void openActivityReallyOpen(User user, int activityType) { ActivityManager activityManager = user.getActivityManager(); Map activityMissionMap = activityManager.getActivityMissionMap(); - for(Map.Entry item : activityMissionMap.entrySet()){ + for (Map.Entry item : activityMissionMap.entrySet()) { SGlobalActivity sGlobalActivity = SGlobalActivity.getsGlobalActivityMap().get(item.getKey()); int targetActivityType = sGlobalActivity.getType(); - if(targetActivityType == activityType ){ + if (targetActivityType == activityType) { ActivityMission value = item.getValue(); - if(value.getOpenType()==0){ + if (value.getOpenType() == 0) { value.setOpenType(1); } } @@ -247,7 +260,7 @@ public class ActivityLogic { public void updateActivityMissionProgress(User user, int activityType, int count) { - for (Integer id: getOpenActivityIdsByType(user, activityType)) { + for (Integer id : getOpenActivityIdsByType(user, activityType)) { AbstractActivity abstractActivity = ActivityTypeEnum.getActicityType(id); if (abstractActivity == null) { continue; @@ -257,8 +270,8 @@ public class ActivityLogic { } - public void resumeActivity(User user, int activityType) throws Exception{ - for (Integer id: getOpenActivityIdsByType(user, activityType)) { + public void resumeActivity(User user, int activityType) throws Exception { + for (Integer id : getOpenActivityIdsByType(user, activityType)) { AbstractActivity abstractActivity = ActivityTypeEnum.getActicityType(id); if (abstractActivity == null) { continue; @@ -309,7 +322,7 @@ public class ActivityLogic { continue; } - if(fBuilder==null){ + if (fBuilder == null) { return; } long createTime = user.getPlayerInfoManager().getCreateTime(); @@ -319,49 +332,50 @@ public class ActivityLogic { fBuilder.addActivityInfo(CommonProto.ActivityInfo.newBuilder().setActivityId(activityId).addAllMission(missionInfos).setStartTime(startTime).setEndTime(endTime).setReallyOpen(activityMission.getOpenType()).build()); } + } - public void checkActivityIsFinish(User user){ + public void checkActivityIsFinish(User user) { ActivityManager activityManager = user.getActivityManager(); Map activityMissionMap = activityManager.getActivityMissionMap(); - for(Map.Entry item : activityMissionMap.entrySet()){ + for (Map.Entry item : activityMissionMap.entrySet()) { ActivityMission activityMission = item.getValue(); - if(activityMission.getActivityState() != ActivityType.OPEN_STATE){ + if (activityMission.getActivityState() != ActivityType.OPEN_STATE) { continue; } - checkActivityMissionFinishAndTaked(item.getKey(),activityMission); + checkActivityMissionFinishAndTaked(item.getKey(), activityMission); } } - private void checkActivityMissionFinishAndTaked(int activityId,ActivityMission activityMission){ + private void checkActivityMissionFinishAndTaked(int activityId, ActivityMission activityMission) { Map activityProgressInfoMap = activityMission.getActivityProgressInfoMap(); boolean isAllTaked = true; - for(Map.Entry item : activityProgressInfoMap.entrySet()){ + for (Map.Entry item : activityProgressInfoMap.entrySet()) { ActivityProgressInfo activityProgressInfo = item.getValue(); Integer missionStatus = activityProgressInfo.getState(); - if(missionStatus == ActivityType.WILL_TAKE){ + if (missionStatus == ActivityType.WILL_TAKE) { isAllTaked = false; } - if(SGlobalActivity.getsGlobalActivityMap().get(activityId).getType() == ActivityType.TREASURE){ - if(missionStatus == ActivityType.HAD_TAKED){ + if (SGlobalActivity.getsGlobalActivityMap().get(activityId).getType() == ActivityType.TREASURE) { + if (missionStatus == ActivityType.HAD_TAKED) { isAllTaked = false; } } } - if(activityProgressInfoMap.isEmpty()){ - isAllTaked =false; + if (activityProgressInfoMap.isEmpty()) { + isAllTaked = false; } - if(isAllTaked){ + if (isAllTaked) { activityMission.updateActivityState(ActivityType.FINISH_STATE); } } - public int getInitActivityMissionProgress(int activityId){ + public int getInitActivityMissionProgress(int activityId) { int defalutProgress = 0; - switch (activityId){ + switch (activityId) { case ActivityType.SevenLogin: - defalutProgress =1; + defalutProgress = 1; break; default: break; @@ -375,83 +389,83 @@ public class ActivityLogic { int uid = session.getUid(); User user = UserManager.getUser(uid); SecretBoxManager secretBoxManager = user.getSecretBoxManager(); - if(secretBoxSeasonTimes == 0){ - MessageUtil.sendErrorResponse(session,0,MessageTypeProto.MessageType.GET_SECRETBOX_RESPONSE_VALUE,"activity_close"); + if (secretBoxSeasonTimes == 0) { + MessageUtil.sendErrorResponse(session, 0, MessageTypeProto.MessageType.GET_SECRETBOX_RESPONSE_VALUE, "activity_close"); return; } - if(secretBoxManager.getCurSeason() != secretBoxSeasonTimes){ + if (secretBoxManager.getCurSeason() != secretBoxSeasonTimes) { flushSecretBoxOfSeasonChange(secretBoxManager); } PlayerInfoProto.GetSecretBoxInfoResponse build = PlayerInfoProto.GetSecretBoxInfoResponse.newBuilder() .setSeason(secretBoxManager.getCurSeason()) .setCount(secretBoxManager.getCount()) .build(); - MessageUtil.sendMessage(session,1, MessageTypeProto.MessageType.GET_SECRETBOX_RESPONSE_VALUE,build,true); + MessageUtil.sendMessage(session, 1, MessageTypeProto.MessageType.GET_SECRETBOX_RESPONSE_VALUE, build, true); } - public void flushSecretBoxOfSeasonChange(SecretBoxManager secretBoxManager){ + public void flushSecretBoxOfSeasonChange(SecretBoxManager secretBoxManager) { secretBoxManager.setCount(0); secretBoxManager.setCurSeason(secretBoxSeasonTimes); } - public void randomSecretBox(ISession session,int id) throws Exception { + public void randomSecretBox(ISession session, int id) throws Exception { int uid = session.getUid(); User user = UserManager.getUser(uid); SecretBoxManager secretBoxManager = user.getSecretBoxManager(); SDifferDemonsBoxSetting sDifferDemonsBoxSetting = SDifferDemonsBoxSetting.getConfig().get(id); - if(sDifferDemonsBoxSetting == null || sDifferDemonsBoxSetting.getSeasonTimes() != secretBoxSeasonTimes){ - MessageUtil.sendErrorResponse(session,0,MessageTypeProto.MessageType.SECRETBOX_RANDOM_RESPONSE_VALUE,"activity_close"); + if (sDifferDemonsBoxSetting == null || sDifferDemonsBoxSetting.getSeasonTimes() != secretBoxSeasonTimes) { + MessageUtil.sendErrorResponse(session, 0, MessageTypeProto.MessageType.SECRETBOX_RANDOM_RESPONSE_VALUE, "activity_close"); return; } - if(secretBoxManager.getCurSeason() != secretBoxSeasonTimes){ + if (secretBoxManager.getCurSeason() != secretBoxSeasonTimes) { flushSecretBoxOfSeasonChange(secretBoxManager); } int randCount = sDifferDemonsBoxSetting.getSecondaryCost(); boolean allowedFree = false; - if(randCount == 1){ - allowedFree=user.getPlayerInfoManager().check(VipPrivilegeType.FREE_SECRET_RANDOM,1); + if (randCount == 1) { + allowedFree = user.getPlayerInfoManager().check(VipPrivilegeType.FREE_SECRET_RANDOM, 1); } - if(!allowedFree){ + if (!allowedFree) { int[][] mainCost = sDifferDemonsBoxSetting.getMainCost(); - boolean enough = ItemUtil.itemCost(user, mainCost,BIReason.SECRETBOX_CONSUME,id); - if(!enough){ - MessageUtil.sendErrorResponse(session,0,MessageTypeProto.MessageType.SECRETBOX_RANDOM_RESPONSE_VALUE,"道具不足"); + boolean enough = ItemUtil.itemCost(user, mainCost, BIReason.SECRETBOX_CONSUME, id); + if (!enough) { + MessageUtil.sendErrorResponse(session, 0, MessageTypeProto.MessageType.SECRETBOX_RANDOM_RESPONSE_VALUE, "道具不足"); return; } - }else{ - user.getPlayerInfoManager().updateVipPrivilage(VipPrivilegeType.FREE_SECRET_RANDOM,1); + } else { + user.getPlayerInfoManager().updateVipPrivilage(VipPrivilegeType.FREE_SECRET_RANDOM, 1); } int count = secretBoxManager.getCount(); int[][] randDrop = new int[randCount][]; - for(int i=1;i<=randCount;i++){ + for (int i = 1; i <= randCount; i++) { int secretBoxRandomPool = getSecretBoxRandomPool(sDifferDemonsBoxSetting, count + i); int[] dropInfos = getSecretBoxRewardByPool(secretBoxRandomPool); - randDrop[i-1] = dropInfos; + randDrop[i - 1] = dropInfos; } - secretBoxManager.setCount(secretBoxManager.getCount()+randCount); - CommonProto.Drop.Builder drop = ItemUtil.dropPer(user, randDrop,BIReason.TAKE_SECRET_REWARD); + secretBoxManager.setCount(secretBoxManager.getCount() + randCount); + CommonProto.Drop.Builder drop = ItemUtil.dropPer(user, randDrop, BIReason.TAKE_SECRET_REWARD); int[] extraItem = sDifferDemonsBoxSetting.getExtraItem(); - CommonProto.Drop.Builder extraDrop = ItemUtil.drop(user, new int[][]{extraItem},BIReason.TAKE_SECRET_EXTRA_REWARD); + CommonProto.Drop.Builder extraDrop = ItemUtil.drop(user, new int[][]{extraItem}, BIReason.TAKE_SECRET_EXTRA_REWARD); PlayerInfoProto.SecretBoxRandomResponse build = PlayerInfoProto.SecretBoxRandomResponse.newBuilder().setDrop(drop).setExtrarReward(extraDrop).build(); - MessageUtil.sendMessage(session,1, MessageTypeProto.MessageType.SECRETBOX_RANDOM_RESPONSE_VALUE,build,true); - user.getUserMissionManager().onGameEvent(user,GameEvent.SECRETBOX,id,randCount); + MessageUtil.sendMessage(session, 1, MessageTypeProto.MessageType.SECRETBOX_RANDOM_RESPONSE_VALUE, build, true); + user.getUserMissionManager().onGameEvent(user, GameEvent.SECRETBOX, id, randCount); } private int[] getSecretBoxRewardByPool(int secretBoxRandomPool) { List sDifferDemonsBoxPoolsList = SDifferDemonsBoxPools.getsDifferDemonsBoxPoolByPoolId(secretBoxRandomPool); - int totalWeight =0; - for(SDifferDemonsBoxPools sDifferDemonsBoxPool : sDifferDemonsBoxPoolsList){ - totalWeight+=sDifferDemonsBoxPool.getWeight(); + int totalWeight = 0; + for (SDifferDemonsBoxPools sDifferDemonsBoxPool : sDifferDemonsBoxPoolsList) { + totalWeight += sDifferDemonsBoxPool.getWeight(); } - int randomWeight = MathUtils.randomInt(totalWeight) +1; - for(SDifferDemonsBoxPools sDifferDemonsBoxPool : sDifferDemonsBoxPoolsList){ - randomWeight -=sDifferDemonsBoxPool.getWeight(); - if(randomWeight<0){ - return sDifferDemonsBoxPool.getReward(); - } + int randomWeight = MathUtils.randomInt(totalWeight) + 1; + for (SDifferDemonsBoxPools sDifferDemonsBoxPool : sDifferDemonsBoxPoolsList) { + randomWeight -= sDifferDemonsBoxPool.getWeight(); + if (randomWeight < 0) { + return sDifferDemonsBoxPool.getReward(); + } } return null; } @@ -460,33 +474,33 @@ public class ActivityLogic { int seasonTimes = sDifferDemonsBoxSetting.getSeasonTimes(); int poolId = 0; List sDifferDemonsBoxSeaonList = SDifferDemonsBoxSeaons.getsDifferDemonsBoxSeaonsBySeason(seasonTimes); - for(SDifferDemonsBoxSeaons sDifferDemonsBoxSeaons :sDifferDemonsBoxSeaonList){ + for (SDifferDemonsBoxSeaons sDifferDemonsBoxSeaons : sDifferDemonsBoxSeaonList) { int surelyTimes = sDifferDemonsBoxSeaons.getSurelyTimes(); - if(count%surelyTimes != 0){ + if (count % surelyTimes != 0) { continue; } - if(count/surelyTimes > 0){ + if (count / surelyTimes > 0) { poolId = sDifferDemonsBoxSeaons.getSurelyPools(); } } - if(poolId == 0){ + if (poolId == 0) { poolId = sDifferDemonsBoxSetting.getRandomPool(); } return poolId; } - public void checkSecretBoxSeason(){ + public void checkSecretBoxSeason() { long now = TimeUtils.now(); - for(SDifferDemonsBoxSetting sDifferDemonsBoxSetting : SDifferDemonsBoxSetting.getConfig().values()){ + for (SDifferDemonsBoxSetting sDifferDemonsBoxSetting : SDifferDemonsBoxSetting.getConfig().values()) { long seasonStartLong = sDifferDemonsBoxSetting.getSeasonStartLong(); long seasonEndLong = sDifferDemonsBoxSetting.getSeasonEndLong(); - if(now>=seasonStartLong && now<=seasonEndLong){ + if (now >= seasonStartLong && now <= seasonEndLong) { secretBoxSeasonTimes = sDifferDemonsBoxSetting.getSeasonTimes(); return; } } - secretBoxSeasonTimes=0; + secretBoxSeasonTimes = 0; } //云梦祈福初始化 // public void blessActivityInit(ISession session,MessageTypeProto.MessageType messageType) throws Exception { @@ -504,9 +518,10 @@ public class ActivityLogic { /** * 祈福信息初始化 + * * @param activityManager */ - private ActivityMission blessInfoInit(ActivityManager activityManager,int activityId){ + private ActivityMission blessInfoInit(ActivityManager activityManager, int activityId) { //第一次9种 int fixRewardPool = SBlessingConfig.sBlessingConfig.getRandomPoolId(); int fixRewardNum = SBlessingConfig.sBlessingConfig.getRandomNum(); @@ -520,13 +535,13 @@ public class ActivityLogic { int supremeNum = SBlessingConfig.sBlessingConfig.getSupremeNum(); List supremeRewardArray = new ArrayList<>(); - for(Map.Entry entry:SBlessingRewardPool.sBlessingRewardPoolMap.entrySet()){ - if(entry.getValue().getPoolId()==fixRewardPool){ - fixRewardArray.add(new int[]{entry.getValue().getId(),entry.getValue().getInitializeWeight()}); - }else if(entry.getValue().getPoolId()==legendPool){ - legendRewardArray.add(new int[]{entry.getValue().getId(),entry.getValue().getInitializeWeight()}); - }else if(entry.getValue().getPoolId()==supremePool){ - supremeRewardArray.add(new int[]{entry.getValue().getId(),entry.getValue().getInitializeWeight()}); + for (Map.Entry entry : SBlessingRewardPool.sBlessingRewardPoolMap.entrySet()) { + if (entry.getValue().getPoolId() == fixRewardPool) { + fixRewardArray.add(new int[]{entry.getValue().getId(), entry.getValue().getInitializeWeight()}); + } else if (entry.getValue().getPoolId() == legendPool) { + legendRewardArray.add(new int[]{entry.getValue().getId(), entry.getValue().getInitializeWeight()}); + } else if (entry.getValue().getPoolId() == supremePool) { + supremeRewardArray.add(new int[]{entry.getValue().getId(), entry.getValue().getInitializeWeight()}); } } //第三次,次数奖励6个 @@ -534,14 +549,14 @@ public class ActivityLogic { int[] counts = SBlessingConfig.sBlessingConfig.getCounts(); int[] countResult = new int[counts.length]; int countIndex = 0; - for(Integer cpool:countPool){ + for (Integer cpool : countPool) { List countRewardArray = new ArrayList<>(); - for(Map.Entry entry:SBlessingRewardPool.sBlessingRewardPoolMap.entrySet()) { + for (Map.Entry entry : SBlessingRewardPool.sBlessingRewardPoolMap.entrySet()) { if (entry.getValue().getPoolId() == cpool) { - countRewardArray.add(new int[]{entry.getValue().getId(),entry.getValue().getInitializeWeight()}); + countRewardArray.add(new int[]{entry.getValue().getId(), entry.getValue().getInitializeWeight()}); } } - int[][] countReward = new int[countRewardArray.size()][]; + int[][] countReward = new int[countRewardArray.size()][]; for (int i = 0; i < countRewardArray.size(); i++) { countReward[i] = countRewardArray.get(i); } @@ -549,107 +564,108 @@ public class ActivityLogic { countIndex++; } - int[][] fixReward = new int[fixRewardArray.size()][]; + int[][] fixReward = new int[fixRewardArray.size()][]; for (int i = 0; i < fixRewardArray.size(); i++) { fixReward[i] = fixRewardArray.get(i); } - int[][] legendReward = new int[legendRewardArray.size()][]; + int[][] legendReward = new int[legendRewardArray.size()][]; for (int i = 0; i < legendRewardArray.size(); i++) { legendReward[i] = legendRewardArray.get(i); } - int[][] supremeReward = new int[supremeRewardArray.size()][]; + int[][] supremeReward = new int[supremeRewardArray.size()][]; for (int i = 0; i < supremeRewardArray.size(); i++) { supremeReward[i] = supremeRewardArray.get(i); } - int[] fixResult = MathUtils.randomFromWeightWithTaking(fixReward, fixRewardNum); int[] legendResult = MathUtils.randomFromWeightWithTaking(legendReward, legendNum); int[] supremeResult = MathUtils.randomFromWeightWithTaking(supremeReward, supremeNum); - ActivityMission activityMission =new ActivityMission(); - for(int i = BlessInfoConfig.START_CAPACITY; i>0; i--){ - ActivityProgressInfo progressInfo =new ActivityProgressInfo(); - if(BlessInfoConfig.START_CAPACITY-i 0; i--) { + ActivityProgressInfo progressInfo = new ActivityProgressInfo(); + if (BlessInfoConfig.START_CAPACITY - i < fixResult.length) { progressInfo.setState(0); - LOGGER.info("第一次第{}个数据",BlessInfoConfig.START_CAPACITY-i,fixResult[BlessInfoConfig.START_CAPACITY-i]); - progressInfo.setProgrss(fixResult[BlessInfoConfig.START_CAPACITY-i]); + LOGGER.info("第一次第{}个数据", BlessInfoConfig.START_CAPACITY - i, fixResult[BlessInfoConfig.START_CAPACITY - i]); + progressInfo.setProgrss(fixResult[BlessInfoConfig.START_CAPACITY - i]); } - activityMission.updateProgressInfo(i,progressInfo); + activityMission.updateProgressInfo(i, progressInfo); } - for(int i=BlessInfoConfig.CHOOSE_START_ID;i<=BlessInfoConfig.CHOOSE_END_ID;i++){ - ActivityProgressInfo progressInfo =new ActivityProgressInfo(); - activityMission.updateProgressInfo(i,progressInfo); + for (int i = BlessInfoConfig.CHOOSE_START_ID; i <= BlessInfoConfig.CHOOSE_END_ID; i++) { + ActivityProgressInfo progressInfo = new ActivityProgressInfo(); + activityMission.updateProgressInfo(i, progressInfo); } //初始化状态 - activityMission.updateProgressInfo(BlessInfoConfig.BLESS_PROGRESS_STATUS,new ActivityProgressInfo()); + activityMission.updateProgressInfo(BlessInfoConfig.BLESS_PROGRESS_STATUS, new ActivityProgressInfo()); //初始化上次刷新时间 - if(activityMission.getActivityProgressInfoMap().get(BlessInfoConfig.LAST_REFRESH_TIME)==null){ - activityMission.updateProgressInfo(BlessInfoConfig.LAST_REFRESH_TIME,new ActivityProgressInfo()); + if (activityMission.getActivityProgressInfoMap().get(BlessInfoConfig.LAST_REFRESH_TIME) == null) { + activityMission.updateProgressInfo(BlessInfoConfig.LAST_REFRESH_TIME, new ActivityProgressInfo()); } - for(int i = 0 ; i blessInfoMap = activityMission.getActivityProgressInfoMap(); //保存之前 - if(blessInfoMap.get(BlessInfoConfig.BLESS_PROGRESS_STATUS).getProgrss()==0){ - for(Map.Entry entry:blessInfoMap.entrySet()){ - if(entry.getKey()/BlessInfoConfig.COUNT_REWARD_START_ID>0){ + if (blessInfoMap.get(BlessInfoConfig.BLESS_PROGRESS_STATUS).getProgrss() == 0) { + for (Map.Entry entry : blessInfoMap.entrySet()) { + if (entry.getKey() / BlessInfoConfig.COUNT_REWARD_START_ID > 0) { CommonProto.blessReward blessReward = CommonProto.blessReward.newBuilder() - .setLocationId(entry.getKey()%BlessInfoConfig.COUNT_REWARD_START_ID) + .setLocationId(entry.getKey() % BlessInfoConfig.COUNT_REWARD_START_ID) .setState(0) .setRewardId(entry.getValue().getProgrss()) .build(); response.addCountReward(blessReward); continue; - }else if(entry.getKey()/BlessInfoConfig.SUPREME_REWARD_START_ID>0){ + } else if (entry.getKey() / BlessInfoConfig.SUPREME_REWARD_START_ID > 0) { CommonProto.blessReward blessReward = CommonProto.blessReward.newBuilder() - .setLocationId(entry.getKey()%BlessInfoConfig.SUPREME_REWARD_START_ID+1) + .setLocationId(entry.getKey() % BlessInfoConfig.SUPREME_REWARD_START_ID + 1) .setState(0) .setRewardId(entry.getValue().getProgrss()) .build(); response.addSupremeReward(blessReward); continue; - }else if(entry.getKey()/BlessInfoConfig.LEGEND_REWARD_START_ID>0){ + } else if (entry.getKey() / BlessInfoConfig.LEGEND_REWARD_START_ID > 0) { CommonProto.blessReward blessReward = CommonProto.blessReward.newBuilder() - .setLocationId(entry.getKey()%BlessInfoConfig.LEGEND_REWARD_START_ID+1) + .setLocationId(entry.getKey() % BlessInfoConfig.LEGEND_REWARD_START_ID + 1) .setState(0) .setRewardId(entry.getValue().getProgrss()) .build(); response.addLegendReward(blessReward); continue; - }else if(entry.getKey()<=BlessInfoConfig.START_CAPACITY){ + } else if (entry.getKey() <= BlessInfoConfig.START_CAPACITY) { CommonProto.blessReward blessReward = CommonProto.blessReward.newBuilder() .setLocationId(entry.getKey()) .setState(0) @@ -658,28 +674,28 @@ public class ActivityLogic { response.addFixReward(blessReward); } } - }else{//保存之后 - for(Map.Entry entry:blessInfoMap.entrySet()){ - if(entry.getKey()/BlessInfoConfig.COUNT_REWARD_START_ID>0){ + } else {//保存之后 + for (Map.Entry entry : blessInfoMap.entrySet()) { + if (entry.getKey() / BlessInfoConfig.COUNT_REWARD_START_ID > 0) { CommonProto.blessReward blessReward = CommonProto.blessReward.newBuilder() - .setLocationId(entry.getKey()%BlessInfoConfig.COUNT_REWARD_START_ID) + .setLocationId(entry.getKey() % BlessInfoConfig.COUNT_REWARD_START_ID) .setState(1) .setRewardId(entry.getValue().getProgrss()) .build(); response.addCountReward(blessReward); continue; - }else if(entry.getKey()/BlessInfoConfig.SUPREME_REWARD_START_ID>0){ + } else if (entry.getKey() / BlessInfoConfig.SUPREME_REWARD_START_ID > 0) { CommonProto.blessReward blessReward = CommonProto.blessReward.newBuilder() - .setLocationId(entry.getKey()%BlessInfoConfig.SUPREME_REWARD_START_ID+1) + .setLocationId(entry.getKey() % BlessInfoConfig.SUPREME_REWARD_START_ID + 1) .setState(1) .setRewardId(entry.getValue().getProgrss()) .build(); response.addSupremeReward(blessReward); continue; - }else if(entry.getKey()/BlessInfoConfig.LEGEND_REWARD_START_ID>0){ + } else if (entry.getKey() / BlessInfoConfig.LEGEND_REWARD_START_ID > 0) { CommonProto.blessReward blessReward = CommonProto.blessReward.newBuilder() - .setLocationId(entry.getKey()%BlessInfoConfig.LEGEND_REWARD_START_ID+1) + .setLocationId(entry.getKey() % BlessInfoConfig.LEGEND_REWARD_START_ID + 1) .setState(1) .setRewardId(entry.getValue().getProgrss()) .build(); @@ -687,21 +703,22 @@ public class ActivityLogic { continue; } } - for(int i = BlessInfoConfig.CHOOSE_START_ID;i<=BlessInfoConfig.REWARD_VIEW_END_ID;i++){ - for(Map.Entry entry:blessInfoMap.entrySet()) { - if(entry.getKey()!=i){ + for (int i = BlessInfoConfig.CHOOSE_START_ID; i <= BlessInfoConfig.REWARD_VIEW_END_ID; i++) { + for (Map.Entry entry : blessInfoMap.entrySet()) { + if (entry.getKey() != i) { continue; - }if (i activityProgressInfoMap = activityMission.getActivityProgressInfoMap(); - if(activityProgressInfoMap.get(locationId+BlessInfoConfig.START_CAPACITY).getProgrss()!=0){ - MessageUtil.sendErrorResponse(session,0,messageType.getNumber(),"已经抽过改格子"); + if (activityProgressInfoMap.get(locationId + BlessInfoConfig.START_CAPACITY).getProgrss() != 0) { + MessageUtil.sendErrorResponse(session, 0, messageType.getNumber(), "已经抽过改格子"); return; } - int resultRewardId = 0; - if(activityProgressInfoMap.get(BlessInfoConfig.BLESS_PROGRESS_STATUS).getProgrss()==-1){ + int resultRewardId = 0; + if (activityProgressInfoMap.get(BlessInfoConfig.BLESS_PROGRESS_STATUS).getProgrss() == -1) { Map poolMap = SBlessingRewardPool.sBlessingRewardPoolMap; int[][] result = new int[BlessInfoConfig.START_CAPACITY][]; int index = 0; - for (Map.Entry entry :activityProgressInfoMap.entrySet()) { - if(entry.getKey()>BlessInfoConfig.START_CAPACITY){ + for (Map.Entry entry : activityProgressInfoMap.entrySet()) { + if (entry.getKey() > BlessInfoConfig.START_CAPACITY) { continue; } int[] temp = new int[2]; @@ -771,100 +790,102 @@ public class ActivityLogic { index++; } int[] order = MathUtils.randomFromWeightWithTaking(result, BlessInfoConfig.START_CAPACITY); - for (int i = 0; i entry :activityProgressInfoMap.entrySet()) { - if(entry.getKey()>BlessInfoConfig.START_CAPACITY){ + for (Map.Entry entry : activityProgressInfoMap.entrySet()) { + if (entry.getKey() > BlessInfoConfig.START_CAPACITY) { continue; } ActivityProgressInfo progress = new ActivityProgressInfo(); progress.setProgrss(order[index]); - activityMission.updateProgressInfo(entry.getKey(),progress); + activityMission.updateProgressInfo(entry.getKey(), progress); index++; } - activityMission.updateProgressInfo(BlessInfoConfig.BLESS_PROGRESS_STATUS,new ActivityProgressInfo(1,0)); + activityMission.updateProgressInfo(BlessInfoConfig.BLESS_PROGRESS_STATUS, new ActivityProgressInfo(1, 0)); } //检验消耗道具 int[][] costConfig = SBlessingConfig.sBlessingConfig.getCost(); int[][] cost = new int[1][]; int[] temp = new int[2]; temp[0] = costConfig[0][0]; - temp[1] = (int)MathUtils.calABX(activityProgressInfoMap.get(BlessInfoConfig.BLESS_PROGRESS_STATUS).getProgrss(),costConfig[1]); + temp[1] = (int) MathUtils.calABX(activityProgressInfoMap.get(BlessInfoConfig.BLESS_PROGRESS_STATUS).getProgrss(), costConfig[1]); cost[0] = temp; - LOGGER.info("本次为第{}次抽取,消耗{}个数为{}",activityProgressInfoMap.get(BlessInfoConfig.BLESS_PROGRESS_STATUS).getProgrss(),temp[0],temp[1]); - boolean costResult = ItemUtil.itemCost(user,cost,BIReason.BLESS_CHOOSE_CONSUME,1); - if(!costResult){ - MessageUtil.sendErrorResponse(session,0,messageType.getNumber(),"道具不足"); + LOGGER.info("本次为第{}次抽取,消耗{}个数为{}", activityProgressInfoMap.get(BlessInfoConfig.BLESS_PROGRESS_STATUS).getProgrss(), temp[0], temp[1]); + boolean costResult = ItemUtil.itemCost(user, cost, BIReason.BLESS_CHOOSE_CONSUME, 1); + if (!costResult) { + MessageUtil.sendErrorResponse(session, 0, messageType.getNumber(), "道具不足"); return; } - if(activityProgressInfoMap.get(BlessInfoConfig.BLESS_PROGRESS_STATUS).getProgrss()>0){ - for (Map.Entry entry :activityProgressInfoMap.entrySet()) { - if(entry.getKey()>BlessInfoConfig.START_CAPACITY){ + if (activityProgressInfoMap.get(BlessInfoConfig.BLESS_PROGRESS_STATUS).getProgrss() > 0) { + for (Map.Entry entry : activityProgressInfoMap.entrySet()) { + if (entry.getKey() > BlessInfoConfig.START_CAPACITY) { continue; } - if(entry.getValue().getProgrss()==0){ + if (entry.getValue().getProgrss() == 0) { continue; } resultRewardId = entry.getValue().getProgrss(); ActivityProgressInfo progress = new ActivityProgressInfo(); progress.setProgrss(entry.getValue().getProgrss()); - activityMission.updateProgressInfo(locationId+BlessInfoConfig.START_CAPACITY,progress); - activityMission.updateProgressInfo(entry.getKey(),new ActivityProgressInfo()); + activityMission.updateProgressInfo(locationId + BlessInfoConfig.START_CAPACITY, progress); + activityMission.updateProgressInfo(entry.getKey(), new ActivityProgressInfo()); break; } } - LOGGER.info("本次抽取的Id为{}",resultRewardId); + LOGGER.info("本次抽取的Id为{}", resultRewardId); Map poolMap = SBlessingRewardPool.sBlessingRewardPoolMap; int[][] dropItem = new int[1][]; - for(Integer count:SBlessingConfig.sBlessingConfig.getCounts()){ - if (count!=activityProgressInfoMap.get(BlessInfoConfig.BLESS_PROGRESS_STATUS).getProgrss()){ + for (Integer count : SBlessingConfig.sBlessingConfig.getCounts()) { + if (count != activityProgressInfoMap.get(BlessInfoConfig.BLESS_PROGRESS_STATUS).getProgrss()) { continue; } dropItem = new int[2][]; - dropItem[1] = poolMap.get(activityProgressInfoMap.get(BlessInfoConfig.COUNT_REWARD_START_ID+count).getProgrss()).getReward(); + dropItem[1] = poolMap.get(activityProgressInfoMap.get(BlessInfoConfig.COUNT_REWARD_START_ID + count).getProgrss()).getReward(); break; } int[] reward = poolMap.get(resultRewardId).getReward(); dropItem[0] = reward; CommonProto.Drop.Builder drop = ItemUtil.dropPer(user, dropItem, BIReason.BLESS_REWARD); - activityMission.updateProgressInfo(BlessInfoConfig.BLESS_PROGRESS_STATUS,new ActivityProgressInfo(activityProgressInfoMap.get(BlessInfoConfig.BLESS_PROGRESS_STATUS).getProgrss()+1,0)); - if(activityProgressInfoMap.get(BlessInfoConfig.BLESS_PROGRESS_STATUS).getProgrss()==BlessInfoConfig.START_CAPACITY+1){ - if(SBlessingConfig.sBlessingConfig.getIsRefresh()!=0) { + activityMission.updateProgressInfo(BlessInfoConfig.BLESS_PROGRESS_STATUS, new ActivityProgressInfo(activityProgressInfoMap.get(BlessInfoConfig.BLESS_PROGRESS_STATUS).getProgrss() + 1, 0)); + if (activityProgressInfoMap.get(BlessInfoConfig.BLESS_PROGRESS_STATUS).getProgrss() == BlessInfoConfig.START_CAPACITY + 1) { + if (SBlessingConfig.sBlessingConfig.getIsRefresh() != 0) { blessRefresh(user); } } PlayerInfoProto.blessChooseResponse response = PlayerInfoProto.blessChooseResponse.newBuilder().setReward(drop).setChooseRewardId(resultRewardId).build(); - MessageUtil.sendMessage(session,1,messageType.getNumber(),response,true); + MessageUtil.sendMessage(session, 1, messageType.getNumber(), response, true); } /** * 云梦手动刷新 + * * @param session * @param messageType * @throws Exception */ public void blessRefreshReward(ISession session, MessageTypeProto.MessageType messageType) throws Exception { User user = UserManager.getUser(session.getUid()); - if(SBlessingConfig.sBlessingConfig.getIsRefresh()==0){ - MessageUtil.sendErrorResponse(session,0,messageType.getNumber(),"活动不可刷新"); + if (SBlessingConfig.sBlessingConfig.getIsRefresh() == 0) { + MessageUtil.sendErrorResponse(session, 0, messageType.getNumber(), "活动不可刷新"); return; } ActivityMission activityMission = blessRefresh(user); - activityMission.updateProgressInfo(BlessInfoConfig.LAST_REFRESH_TIME,new ActivityProgressInfo((int)(TimeUtils.now()/1000),0)); + activityMission.updateProgressInfo(BlessInfoConfig.LAST_REFRESH_TIME, new ActivityProgressInfo((int) (TimeUtils.now() / 1000), 0)); PlayerInfoProto.blessRefresh res = PlayerInfoProto.blessRefresh.newBuilder().setReward(getBlessInfoResponse(activityMission).build()).build(); - MessageUtil.sendMessage(session,1,messageType.getNumber(),res,true); + MessageUtil.sendMessage(session, 1, messageType.getNumber(), res, true); } - private ActivityMission blessRefresh(User user){ + + private ActivityMission blessRefresh(User user) { ActivityManager activityManager = user.getActivityManager(); ActivityMission activityMission = activityManager.getActivityMissionMap().get(SBlessingConfig.sBlessingConfig.getActivityId()); ActivityProgressInfo tempProgress = new ActivityProgressInfo(); //数据清空 - for(Map.Entry entry:activityMission.getActivityProgressInfoMap().entrySet()){ - activityMission.updateProgressInfo(entry.getKey(),tempProgress); + for (Map.Entry entry : activityMission.getActivityProgressInfoMap().entrySet()) { + activityMission.updateProgressInfo(entry.getKey(), tempProgress); } activityMission = blessInfoInit(activityManager, 7); return activityMission; @@ -874,17 +895,17 @@ public class ActivityLogic { /** * 获取战力排行榜 */ - public void getForceRank(ISession session,int page,int acitvityId) throws Exception { + public void getForceRank(ISession session, int page, int acitvityId) throws Exception { if (page == 0) { page = 1; } int start = (page - 1) * 20, end = page * 20 - 1; List useForceInfoList = new ArrayList<>(20); - Set> rankInfo = RedisUtil.getInstence().getZsetreverseRangeWithScores(RedisKey.FORCE_RANK,Integer.toString(acitvityId), start, end); - for(ZSetOperations.TypedTuple item : rankInfo){ + Set> rankInfo = RedisUtil.getInstence().getZsetreverseRangeWithScores(RedisKey.FORCE_RANK, Integer.toString(acitvityId), start, end); + for (ZSetOperations.TypedTuple item : rankInfo) { String value = item.getValue(); - int score =item.getScore().intValue(); + int score = item.getScore().intValue(); int uid = Integer.parseInt(value); User user = UserManager.getUser(uid); @@ -899,15 +920,60 @@ public class ActivityLogic { } int uid = session.getUid(); - int score = RedisUtil.getInstence().getZSetScore(RedisKey.FORCE_RANK,Integer.toString(acitvityId), Integer.toString(uid)).intValue(); - int myRank= RedisUtil.getInstence().getZSetreverseRank(RedisKey.FORCE_RANK,Integer.toString(acitvityId),Integer.toString(uid)).intValue(); + int score = RedisUtil.getInstence().getZSetScore(RedisKey.FORCE_RANK, Integer.toString(acitvityId), Integer.toString(uid)).intValue(); + int myRank = RedisUtil.getInstence().getZSetreverseRank(RedisKey.FORCE_RANK, Integer.toString(acitvityId), Integer.toString(uid)).intValue(); PlayerInfoProto.GetForceRankInfoResponse buildResponse = PlayerInfoProto.GetForceRankInfoResponse.newBuilder() .setMyRank(myRank) .setMyForce(score) .addAllUseForceInfo(useForceInfoList) .build(); - MessageUtil.sendMessage(session,1, MessageTypeProto.MessageType.GETF_FORCE_RANK_INFO_RESPONSE_VALUE,buildResponse,true); + MessageUtil.sendMessage(session, 1, MessageTypeProto.MessageType.GETF_FORCE_RANK_INFO_RESPONSE_VALUE, buildResponse, true); + + } + + + /** + * 获取达人排行榜 + */ + public void getExpertRank(ISession session, int acitvityId) throws Exception { + + int start = 0; + int maxSize = SGameSetting.getGameSetting().getShowRank(); + List expertInfos = new ArrayList<>(maxSize); + Set> rankInfo = RedisUtil.getInstence().getZsetreverseRangeWithScores(RedisKey.FORCE_RANK, Integer.toString(acitvityId), 0, maxSize - 1); + for (ZSetOperations.TypedTuple item : rankInfo) { + String value = item.getValue(); + int score = item.getScore().intValue(); + int uid = Integer.parseInt(value); + User user = UserManager.getUser(uid); + + PlayerManager playerInfoManager = user.getPlayerInfoManager(); + CommonProto.ExpertInfo personInfoBuild = CommonProto.ExpertInfo.newBuilder() + .setName(playerInfoManager.getNickName()) + .setScore(score) + .setRank(++start) + .build(); + expertInfos.add(personInfoBuild); + } + + if (rankInfo.size() > 2 * maxSize) { + //删除多余数据 预留一些 长度maxSize + String key = RedisKey.getKey(RedisKey.EXPERT_RANK, String.valueOf(acitvityId), false); + int size = RedisUtil.getInstence().getZsetSize(key); + RedisUtil.getInstence().removeZSetRangeByRank(key, maxSize, size); + } + + int uid = session.getUid(); + int score = RedisUtil.getInstence().getZSetScore(RedisKey.EXPERT_RANK, Integer.toString(acitvityId), Integer.toString(uid)).intValue(); + int myRank = RedisUtil.getInstence().getZSetreverseRank(RedisKey.EXPERT_RANK, Integer.toString(acitvityId), Integer.toString(uid)).intValue(); + + PlayerInfoProto.GetExpertInfoResponse buildResponse = PlayerInfoProto.GetExpertInfoResponse.newBuilder() + .setMyRank(myRank) + .setMyScore(score) + .addAllExpert(expertInfos) + .build(); + MessageUtil.sendMessage(session, 1, MessageTypeProto.MessageType.GETF_EXPERT_RANK_INFO_REQUEST_VALUE, buildResponse, true); } 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 271d70213..cbb59bc2f 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 @@ -3,32 +3,42 @@ package com.ljsd.jieling.logic.activity; public interface ActivityType { int CLOSE_STATE = 0; - int OPEN_STATE =1; - int FINISH_STATE =2; + int OPEN_STATE = 1; + int FINISH_STATE = 2; int OPEN_TYPE_TIME = 1; // 活动开启类型:绝对时间 int OPEN_TYPE_ROLE = 2; // 活动开启类型:创角时间 int OPEN_TYPE_SERVER = 3; // 活动开启类型:开服时间 - int WILL_TAKE = 0; //未领取 - int HAD_TAKED =1; //已领取 - int FINISH_TAKED =-1; //完美领取 + int HAD_TAKED = 1; //已领取 + int FINISH_TAKED = -1; //完美领取 - int OnlineReward =1; //在线奖励 + int OnlineReward = 1; //在线奖励 int SevenLogin = 2; //七日登陆 int ChapterReward = 3; //章节奖励 - int FirstRecharge =4; //首充 - int RechargeTotal =5; //累计充值 - int GrowthFund =6; //成长基金 + int FirstRecharge = 4; //首充 + int RechargeTotal = 5; //累计充值 + int GrowthFund = 6; //成长基金 int BLESSACTIVITY = 7; - int TREASURE =8; //孙龙的宝藏 - int LUCKYCAT=9;//招財貓 - int SERVERHAPPY =10; //七日狂欢 + int TREASURE = 8; //孙龙的宝藏 + int LUCKYCAT = 9;//招財貓 + int SERVERHAPPY = 10; //七日狂欢 int FORCERANK = 11; //战力排行 int FORCESTANDARD = 12;//战力达标 int DAILY_RECHARGE = 13;//每日充值 - int RECHARGE_SUM = 14;//累计充值天数 + int RECHARGE_SUM_DAY = 14;//累计充值天数 + int SECURT_EXPERT = 16;// 秘境达人 + int ARENA_EXPERT = 17;// 竞技达人 + int UP_EXPERT = 18;// 进阶达人 + int EQUIP_EXPERT = 19;// 装备达人 + int GOLD_EXPERT = 20;// 点金达人 + int COPY_EXPERT = 21;//副本达人 + int STAMINA_EXPERT = 22;//体力达人 + int SIGN_IN = 23;//累计签到 + int RECHARGE_NUM = 24;//累计充值 + + } 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 cf86525af..5ffdaf6fb 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 @@ -19,7 +19,17 @@ public enum ActivityTypeEnum { FORCERANK(ActivityType.FORCERANK, ForceRankActivity::new), FORCESTANDARD(ActivityType.FORCESTANDARD, ForceStandardActivity::new), DAILY_RECHARGE(ActivityType.DAILY_RECHARGE, DailyRechargeActivity::new), - RECHARGE_SUM(ActivityType.RECHARGE_SUM, RechargeSumActivity::new); + RECHARGE_SUM(ActivityType.RECHARGE_SUM_DAY, RechargeSumDayActivity::new), + SECURT_EXPERT(ActivityType.SECURT_EXPERT, SecretExpectRankActivity::new), + ARENA_EXPERT(ActivityType.ARENA_EXPERT, AreanaExpectRankActivity::new), + UP_EXPERT(ActivityType.UP_EXPERT, HeroUpExpectRankActivity::new), + EQUIP_EXPERT(ActivityType.EQUIP_EXPERT, EquipExpectRankActivity::new), + GOLD_EXPERT(ActivityType.GOLD_EXPERT, GoldExpectRankActivity::new), + COPY_EXPERT(ActivityType.COPY_EXPERT, CopyExpectRankActivity::new), + STAMINA_EXPERT(ActivityType.STAMINA_EXPERT, StaminaExpectRankActivity::new), + SIGN_IN(ActivityType.SIGN_IN, SignInSumActivity::new), + RECHARGE_NUM(ActivityType.RECHARGE_NUM, RechargeSumActivity::new), + ; private int type; private Function toActivityFunction; private static HashMap acticityCache = new HashMap<>(); @@ -41,32 +51,42 @@ public enum ActivityTypeEnum { public static AbstractActivity getActicityType(int id) { SGlobalActivity sGlobalActivity = SGlobalActivity.getsGlobalActivityMap().get(id); - switch (sGlobalActivity.getType()) { - case ActivityType.OnlineReward: - return ONLINEREWARD.toActivity(id); - case ActivityType.SevenLogin: - return SEVENLOGIN.toActivity(id); - case ActivityType.ChapterReward: - return CHAPTERREWARD.toActivity(id); - case ActivityType.FirstRecharge: - return FIRSTRECHARGE.toActivity(id); - case ActivityType.RechargeTotal: - return RECHARGETOTAL.toActivity(id); - case ActivityType.GrowthFund: - return GROWTHFUND.toActivity(id); - case ActivityType.BLESSACTIVITY: - return BLESSACTIVITY.toActivity(id); - case ActivityType.TREASURE: - return TREASUREACTIVITY.toActivity(id); - case ActivityType.LUCKYCAT: - return LUCKYCAT.toActivity(id); - case ActivityType.FORCERANK: - return FORCERANK.toActivity(id); - case ActivityType.FORCESTANDARD: - return FORCESTANDARD.toActivity(id); - default: - return null; + for (ActivityTypeEnum activityType:ActivityTypeEnum.values()) { + if(activityType.getType()==sGlobalActivity.getType()){ + return activityType.toActivity(id); + } } + return null; +// switch (sGlobalActivity.getType()) { +// case ActivityType.OnlineReward: +// return ONLINEREWARD.toActivity(id); +// case ActivityType.SevenLogin: +// return SEVENLOGIN.toActivity(id); +// case ActivityType.ChapterReward: +// return CHAPTERREWARD.toActivity(id); +// case ActivityType.FirstRecharge: +// return FIRSTRECHARGE.toActivity(id); +// case ActivityType.RechargeTotal: +// return RECHARGETOTAL.toActivity(id); +// case ActivityType.GrowthFund: +// return GROWTHFUND.toActivity(id); +// case ActivityType.BLESSACTIVITY: +// return BLESSACTIVITY.toActivity(id); +// case ActivityType.TREASURE: +// return TREASUREACTIVITY.toActivity(id); +// case ActivityType.LUCKYCAT: +// return LUCKYCAT.toActivity(id); +// case ActivityType.FORCERANK: +// return FORCERANK.toActivity(id); +// case ActivityType.FORCESTANDARD: +// return FORCESTANDARD.toActivity(id); +// case ActivityType.DAILY_RECHARGE: +// return DAILY_RECHARGE.toActivity(id); +// case ActivityType.RECHARGE_SUM: +// return RECHARGE_SUM.toActivity(id); +// default: +// return null; +// } } public int getType() { diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/AreanaExpectRankActivity.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/AreanaExpectRankActivity.java new file mode 100644 index 000000000..1ae126b7d --- /dev/null +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/AreanaExpectRankActivity.java @@ -0,0 +1,23 @@ +package com.ljsd.jieling.logic.activity; + + +import com.ljsd.jieling.logic.activity.event.ArenaChallengeEvent; +import com.ljsd.jieling.logic.activity.event.IEvent; +import com.ljsd.jieling.logic.activity.event.Poster; +import com.ljsd.jieling.logic.dao.UserManager; + +class AreanaExpectRankActivity extends ExpectRankActivity { + + public AreanaExpectRankActivity(int id) { + super(id); + Poster.getPoster().listenEvent(this, ArenaChallengeEvent.class); + } + + @Override + public void onEvent(IEvent event) throws Exception { + if (!(event instanceof ArenaChallengeEvent)) + return; + update(UserManager.getUser(((ArenaChallengeEvent) event).getUid()), 1); + + } +} diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/CopyExpectRankActivity.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/CopyExpectRankActivity.java new file mode 100644 index 000000000..9d6e1ee94 --- /dev/null +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/CopyExpectRankActivity.java @@ -0,0 +1,23 @@ +package com.ljsd.jieling.logic.activity; + + +import com.ljsd.jieling.logic.activity.event.IEvent; +import com.ljsd.jieling.logic.activity.event.Poster; +import com.ljsd.jieling.logic.activity.event.StoryEvent; +import com.ljsd.jieling.logic.dao.UserManager; + +class CopyExpectRankActivity extends ExpectRankActivity { + + public CopyExpectRankActivity(int id) { + super(id); + Poster.getPoster().listenEvent(this, StoryEvent.class); + } + + @Override + public void onEvent(IEvent event) throws Exception { + if (!(event instanceof StoryEvent)) + return; + update(UserManager.getUser(((StoryEvent) event).getUid()), 1); + + } +} diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/DailyRechargeActivity.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/DailyRechargeActivity.java index f70eacbe1..3e9d3cc14 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/DailyRechargeActivity.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/DailyRechargeActivity.java @@ -5,6 +5,9 @@ import com.ljsd.jieling.logic.dao.ActivityMission; import com.ljsd.jieling.logic.dao.ActivityProgressInfo; import com.ljsd.jieling.network.session.ISession; +/** + * 名字叫首冲 其实不是 策划说按每日 + */ class DailyRechargeActivity extends AbstractActivity { public DailyRechargeActivity(int id) { diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/EquipExpectRankActivity.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/EquipExpectRankActivity.java new file mode 100644 index 000000000..e3ac28cc5 --- /dev/null +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/EquipExpectRankActivity.java @@ -0,0 +1,33 @@ +package com.ljsd.jieling.logic.activity; + + +import com.ljsd.jieling.config.SActivityRewardConfig; +import com.ljsd.jieling.config.SEquipConfig; +import com.ljsd.jieling.logic.activity.event.EquipEvent; +import com.ljsd.jieling.logic.activity.event.IEvent; +import com.ljsd.jieling.logic.activity.event.Poster; +import com.ljsd.jieling.logic.dao.UserManager; + +class EquipExpectRankActivity extends ExpectRankActivity { + + public EquipExpectRankActivity(int id) { + super(id); + Poster.getPoster().listenEvent(this, EquipEvent.class); + } + + @Override + public void onEvent(IEvent event) throws Exception { + + if (!(event instanceof EquipEvent)) + return; + SActivityRewardConfig sActivityRewardConfig = SActivityRewardConfig.getsActivityRewardConfigByActivityId(id).get(0); + if (sActivityRewardConfig == null) + return; + int type = sActivityRewardConfig.getValues()[0][0]; + SEquipConfig sEquipConfig = SEquipConfig.getsEquipConfigById(((EquipEvent) event).getEquipId()); + if (type != sEquipConfig.getQuality()) + return; + update(UserManager.getUser(((EquipEvent) event).getUid()), 1); + } + +} diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/ExpectRankActivity.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/ExpectRankActivity.java new file mode 100644 index 000000000..ff6775fb5 --- /dev/null +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/ExpectRankActivity.java @@ -0,0 +1,48 @@ +package com.ljsd.jieling.logic.activity; + + +import com.ljsd.jieling.config.SActivityRewardConfig; +import com.ljsd.jieling.db.redis.RedisKey; +import com.ljsd.jieling.db.redis.RedisUtil; +import com.ljsd.jieling.logic.dao.ActivityMission; +import com.ljsd.jieling.logic.dao.ActivityProgressInfo; +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.MessageUtil; + +class ExpectRankActivity extends AbstractActivity { + + public ExpectRankActivity(int id) { + super(id); + } + + @Override + void updateProgress(User user, ActivityMission activityMission, int count) { + activityMission.setValue(count+activityMission.getValue()); + String key = RedisKey.getKey(RedisKey.EXPERT_RANK, String.valueOf(id), false); + //todo 删除长度以外数值 + RedisUtil.getInstence().zsetAddOne(key, String.valueOf(user.getId()), count); + } + + + @Override + boolean takeRewardsProcess(ISession session, SActivityRewardConfig sActivityRewardConfig, ActivityProgressInfo activityProgressInfo) throws Exception { + return checkValue(session, sActivityRewardConfig, activityProgressInfo); + } + + /** + * 根据配置解析数值进度完成度 + */ + boolean checkValue(ISession session, SActivityRewardConfig sActivityRewardConfig, ActivityProgressInfo activityProgressInfo) throws Exception { + int[][] values = sActivityRewardConfig.getValues(); + User user = UserManager.getUser(session.getUid()); + int value = user.getActivityManager().getActivityMissionMap().get(sActivityRewardConfig.getActivityId()).getValue(); + if (value < values[1][0]) { + MessageUtil.sendErrorResponse(session, 0, rewardResponseValue, "time not"); + return false; + } + return true; + } + +} diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/ForceRankActivity.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/ForceRankActivity.java index 020df3793..5ad811cba 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/ForceRankActivity.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/ForceRankActivity.java @@ -65,7 +65,7 @@ class ForceRankActivity extends AbstractActivity { } } - Set> rankInfo = RedisUtil.getInstence().getZsetreverseRangeWithScores(RedisKey.FORCE_RANK, Integer.toString(id), 0, maxRank); + Set> rankInfo = RedisUtil.getInstence().getZsetreverseRangeWithScores(RedisKey.FORCE_RANK, Integer.toString(id), 0, maxRank-1); int rank = 1; int nowTime = (int) (TimeUtils.now() / 1000); for (ZSetOperations.TypedTuple item : rankInfo) { diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/GoldExpectRankActivity.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/GoldExpectRankActivity.java new file mode 100644 index 000000000..f8c23becd --- /dev/null +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/GoldExpectRankActivity.java @@ -0,0 +1,22 @@ +package com.ljsd.jieling.logic.activity; + + +import com.ljsd.jieling.logic.activity.event.GoldEvent; +import com.ljsd.jieling.logic.activity.event.IEvent; +import com.ljsd.jieling.logic.activity.event.Poster; +import com.ljsd.jieling.logic.dao.UserManager; + +class GoldExpectRankActivity extends ExpectRankActivity { + + public GoldExpectRankActivity(int id) { + super(id); + Poster.getPoster().listenEvent(this, GoldEvent.class); + } + + @Override + public void onEvent(IEvent event) throws Exception { + if (!(event instanceof GoldEvent)) + return; + update(UserManager.getUser(((GoldEvent) event).getUid()), 1); + } +} diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/HeroUpExpectRankActivity.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/HeroUpExpectRankActivity.java new file mode 100644 index 000000000..a8fea9689 --- /dev/null +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/HeroUpExpectRankActivity.java @@ -0,0 +1,50 @@ +package com.ljsd.jieling.logic.activity; + + +import com.ljsd.jieling.config.SActivityRewardConfig; +import com.ljsd.jieling.db.redis.RedisKey; +import com.ljsd.jieling.db.redis.RedisUtil; +import com.ljsd.jieling.logic.activity.event.HeroUpStarEvent; +import com.ljsd.jieling.logic.activity.event.IEvent; +import com.ljsd.jieling.logic.activity.event.Poster; +import com.ljsd.jieling.logic.dao.ActivityMission; +import com.ljsd.jieling.logic.dao.Hero; +import com.ljsd.jieling.logic.dao.HeroManager; +import com.ljsd.jieling.logic.dao.UserManager; +import com.ljsd.jieling.logic.dao.root.User; + +class HeroUpExpectRankActivity extends ExpectRankActivity { + + public HeroUpExpectRankActivity(int id) { + super(id); + Poster.getPoster().listenEvent(this, HeroUpStarEvent.class); + } + + @Override + public void onEvent(IEvent event) throws Exception { + if (!(event instanceof HeroUpExpectRankActivity)) + return; + User user = UserManager.getUser(((HeroUpStarEvent) event).getUid()); + HeroManager heroManager = user.getHeroManager(); + SActivityRewardConfig sActivityRewardConfig = SActivityRewardConfig.getsActivityRewardConfigByActivityId(id).get(0); + if(sActivityRewardConfig==null) + return; + int count = 0; + for (Hero targetHero:heroManager.getHeroMap().values()) { + if(targetHero.getStar()>=sActivityRewardConfig.getValues()[0][0]){ + count++; + } + } + update(UserManager.getUser(((HeroUpStarEvent) event).getUid()), count); + + } + + + @Override + void updateProgress(User user, ActivityMission activityMission, int count) { + activityMission.setValue(count+activityMission.getValue()); + String key = RedisKey.getKey(RedisKey.EXPERT_RANK, String.valueOf(id), false); + //todo 删除长度以外数值 + RedisUtil.getInstence().zsetAddOne(key, String.valueOf(user.getId()), count); + } +} diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/IActivity.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/IActivity.java index 7ae265be8..cd02330de 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/IActivity.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/IActivity.java @@ -36,6 +36,10 @@ public interface IActivity { */ boolean takeReward(ISession session, int missionId) throws Exception; + /** + * 活动结束 目前只有绝对时间活动 + * @throws Exception + */ void onActivityEnd() throws Exception; List getAllMissInfo(ActivityMission activityMission, Set filter); diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/IEventHandler.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/IEventHandler.java index fa4b28004..0c44f7d88 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/IEventHandler.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/IEventHandler.java @@ -1,10 +1,10 @@ package com.ljsd.jieling.logic.activity; -import com.ljsd.jieling.logic.mission.GameEvent; +import com.ljsd.jieling.logic.activity.event.IEvent; public interface IEventHandler { - void onEvent(GameEvent event); + void onEvent(IEvent event) throws Exception; } diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/RechargeSumActivity.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/RechargeSumActivity.java index a0bd5f97e..8818b91ec 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/RechargeSumActivity.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/RechargeSumActivity.java @@ -5,6 +5,9 @@ import com.ljsd.jieling.logic.dao.ActivityMission; import com.ljsd.jieling.logic.dao.ActivityProgressInfo; import com.ljsd.jieling.network.session.ISession; +/** + * Created by zsx on 2019/8/5 19:20 + */ class RechargeSumActivity extends AbstractActivity { public RechargeSumActivity(int id) { @@ -13,7 +16,7 @@ class RechargeSumActivity extends AbstractActivity { @Override void updateProgress(ActivityMission activityMission, int count) { - activityMission.setValue(count + activityMission.getValue()); + activityMission.setValue(count); } @Override diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/RechargeSumDayActivity.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/RechargeSumDayActivity.java new file mode 100644 index 000000000..0dc07a9e7 --- /dev/null +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/RechargeSumDayActivity.java @@ -0,0 +1,33 @@ +package com.ljsd.jieling.logic.activity; + +import com.ljsd.jieling.config.SActivityRewardConfig; +import com.ljsd.jieling.logic.dao.ActivityManager; +import com.ljsd.jieling.logic.dao.ActivityMission; +import com.ljsd.jieling.logic.dao.ActivityProgressInfo; +import com.ljsd.jieling.logic.dao.root.User; +import com.ljsd.jieling.network.session.ISession; + +class RechargeSumDayActivity extends AbstractActivity { + + public RechargeSumDayActivity(int id) { + super(id); + } + + @Override + public void onResume(User user) throws Exception { + ActivityManager activityManager = user.getActivityManager(); + activityManager.getActivityMissionMap().get(id).setValue(0); + } + + @Override + void updateProgress(ActivityMission activityMission, int count) { + //TODO 走配置 每日金额大于多少更新天数 + activityMission.setValue(activityMission.getValue() + count); + } + + @Override + boolean takeRewardsProcess(ISession session, SActivityRewardConfig sActivityRewardConfig, ActivityProgressInfo activityProgressInfo) throws Exception { + return checkValue(session, sActivityRewardConfig, activityProgressInfo); + } + +} diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/SecretExpectRankActivity.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/SecretExpectRankActivity.java new file mode 100644 index 000000000..bb59b38cb --- /dev/null +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/SecretExpectRankActivity.java @@ -0,0 +1,23 @@ +package com.ljsd.jieling.logic.activity; + + +import com.ljsd.jieling.logic.activity.event.IEvent; +import com.ljsd.jieling.logic.activity.event.Poster; +import com.ljsd.jieling.logic.activity.event.SecretEvent; +import com.ljsd.jieling.logic.dao.UserManager; + +class SecretExpectRankActivity extends ExpectRankActivity { + + public SecretExpectRankActivity(int id) { + super(id); + Poster.getPoster().listenEvent(this, SecretEvent.class); + } + + @Override + public void onEvent(IEvent event) throws Exception { + if (!(event instanceof SecretEvent)) + return; + update(UserManager.getUser(((SecretEvent) event).getUid()), 1); + + } +} 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 new file mode 100644 index 000000000..843fb338c --- /dev/null +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/SignInSumActivity.java @@ -0,0 +1,35 @@ +package com.ljsd.jieling.logic.activity; + +import com.ljsd.jieling.config.SActivityRewardConfig; +import com.ljsd.jieling.logic.dao.ActivityMission; +import com.ljsd.jieling.logic.dao.ActivityProgressInfo; +import com.ljsd.jieling.network.session.ISession; +import com.ljsd.jieling.util.MessageUtil; + + +class SignInSumActivity extends AbstractActivity { + + public SignInSumActivity(int id) { + super(id); + } + + @Override + void updateProgress(ActivityMission activityMission, int count) { + activityMission.setValue(count + activityMission.getValue()); + } +// +// @Override +// boolean takeRewardsProcess(ISession session, SActivityRewardConfig sActivityRewardConfig, ActivityProgressInfo activityProgressInfo) throws Exception { +// //TODO 检查下 客户端是否会跳着领取 +// +//// SActivityRewardConfig.getsActivityRewardConfigByActivityId(id); +//// if (sActivityRewardConfig == null || sActivityRewardConfig.getActivityId() != id) { +//// MessageUtil.sendErrorResponse(session, 0, rewardResponseValue, ""); +//// return false; +//// } +//// return checkValue(session, sActivityRewardConfig, activityProgressInfo); +// } + + + +} diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/StaminaExpectRankActivity.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/StaminaExpectRankActivity.java new file mode 100644 index 000000000..cbc39cf50 --- /dev/null +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/StaminaExpectRankActivity.java @@ -0,0 +1,24 @@ +package com.ljsd.jieling.logic.activity; + + +import com.ljsd.jieling.globals.Global; +import com.ljsd.jieling.logic.activity.event.IEvent; +import com.ljsd.jieling.logic.activity.event.Poster; +import com.ljsd.jieling.logic.activity.event.UseItemEvent; +import com.ljsd.jieling.logic.dao.UserManager; + +class StaminaExpectRankActivity extends ExpectRankActivity { + + public StaminaExpectRankActivity(int id) { + super(id); + Poster.getPoster().listenEvent(this, UseItemEvent.class); + } + + @Override + public void onEvent(IEvent event) throws Exception { + if (!(event instanceof UseItemEvent)) + return; + int changeNum = ((UseItemEvent) event).getUseItemMap().getOrDefault(Global.STAMINA, 0); + update(UserManager.getUser(((UseItemEvent) event).getUseId()), changeNum); + } +} diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/event/AddItemEvent.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/event/AddItemEvent.java new file mode 100644 index 000000000..d3bbc9fbe --- /dev/null +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/event/AddItemEvent.java @@ -0,0 +1,23 @@ +package com.ljsd.jieling.logic.activity.event; + +import java.util.Map; + +public class AddItemEvent implements IEvent { + + private int useId; + Map useItemMap; + + public AddItemEvent(int useId, Map useItemMap) { + this.useId = useId; + this.useItemMap = useItemMap; + } + + public Map getUseItemMap() { + return useItemMap; + } + + public int getUseId() { + return useId; + } + +} diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/event/ArenaChallengeEvent.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/event/ArenaChallengeEvent.java new file mode 100644 index 000000000..6f482e5f3 --- /dev/null +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/event/ArenaChallengeEvent.java @@ -0,0 +1,17 @@ +package com.ljsd.jieling.logic.activity.event; + +/** + * 竞技场 + */ +public class ArenaChallengeEvent implements IEvent { + + private int uid; + + public ArenaChallengeEvent(int uid) { + this.uid = uid; + } + + public int getUid() { + return uid; + } +} diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/event/EquipEvent.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/event/EquipEvent.java new file mode 100644 index 000000000..1c5daf97e --- /dev/null +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/event/EquipEvent.java @@ -0,0 +1,23 @@ +package com.ljsd.jieling.logic.activity.event; + +/** + * 装备 + */ +public class EquipEvent implements IEvent { + + private int uid; + private int equipId; + + public EquipEvent(int uid, int equipId) { + this.uid = uid; + this.equipId = equipId; + } + + public int getUid() { + return uid; + } + + public int getEquipId() { + return equipId; + } +} diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/event/GoldEvent.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/event/GoldEvent.java new file mode 100644 index 000000000..d5df64889 --- /dev/null +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/event/GoldEvent.java @@ -0,0 +1,17 @@ +package com.ljsd.jieling.logic.activity.event; + +/** + * 点金 + */ +public class GoldEvent implements IEvent { + + private int uid; + + public GoldEvent(int uid) { + this.uid = uid; + } + + public int getUid() { + return uid; + } +} \ No newline at end of file diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/event/HeroUpStarEvent.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/event/HeroUpStarEvent.java new file mode 100644 index 000000000..287a602d5 --- /dev/null +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/event/HeroUpStarEvent.java @@ -0,0 +1,17 @@ +package com.ljsd.jieling.logic.activity.event; + +/** + * 升星 + */ +public class HeroUpStarEvent implements IEvent { + + private int uid; + + public HeroUpStarEvent(int uid) { + this.uid = uid; + } + + public int getUid() { + return uid; + } +} \ No newline at end of file diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/event/IEvent.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/event/IEvent.java new file mode 100644 index 000000000..092af6a8b --- /dev/null +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/event/IEvent.java @@ -0,0 +1,5 @@ +package com.ljsd.jieling.logic.activity.event; + +public interface IEvent { + +} diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/event/Poster.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/event/Poster.java new file mode 100644 index 000000000..74283204c --- /dev/null +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/event/Poster.java @@ -0,0 +1,53 @@ +package com.ljsd.jieling.logic.activity.event; + +import com.ljsd.jieling.logic.activity.IEventHandler; + +import java.util.HashMap; +import java.util.HashSet; +import java.util.Map; +import java.util.Set; + +/** + * 简单的活动消息处理 + * TODO 用协议包一下再发 保证数据安全 + * 目前暂时单例 需要保证事件生产和消费是单线程 + * 但像全局的 如活动关闭应该分发事件协议到各个玩家去 + */ + +public class Poster { + public static Poster getPoster() { + return poster; + } + + static Poster poster = new Poster(); + + private Poster() { + } + + private Map, Set> listenMap = new HashMap<>(); + + private Set getListeners(IEvent e) { + return listenMap.get(e.getClass()); + } + + public boolean listenEvent(IEventHandler eh, Class c) { + Set ehs = listenMap.get(c); + if (ehs == null) { + ehs = new HashSet<>(); + listenMap.put(c, ehs); + } + return ehs.add(eh); + } + + public void dispatchEvent(IEvent e) { + final Set ehs = getListeners(e); + if (ehs != null) { + for (IEventHandler eh : ehs) { + try { + eh.onEvent(e); + }catch (Exception e1){ + } + } + } + } +} diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/event/SecretEvent.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/event/SecretEvent.java new file mode 100644 index 000000000..6f583f52a --- /dev/null +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/event/SecretEvent.java @@ -0,0 +1,17 @@ +package com.ljsd.jieling.logic.activity.event; + +/** + * 秘境场 + */ +public class SecretEvent implements IEvent { + + private int uid; + + public SecretEvent(int uid) { + this.uid = uid; + } + + public int getUid() { + return uid; + } +} diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/event/StoryEvent.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/event/StoryEvent.java new file mode 100644 index 000000000..6f32f1bc2 --- /dev/null +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/event/StoryEvent.java @@ -0,0 +1,17 @@ +package com.ljsd.jieling.logic.activity.event; + +/** + * 副本 + */ +public class StoryEvent implements IEvent { + + private int uid; + + public StoryEvent(int uid) { + this.uid = uid; + } + + public int getUid() { + return uid; + } +} diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/event/UseItemEvent.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/event/UseItemEvent.java new file mode 100644 index 000000000..ff34f940e --- /dev/null +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/event/UseItemEvent.java @@ -0,0 +1,23 @@ +package com.ljsd.jieling.logic.activity.event; + +import java.util.Map; + +public class UseItemEvent implements IEvent { + + private int useId; + Map useItemMap; + + public UseItemEvent(int useId, Map useItemMap) { + this.useId = useId; + this.useItemMap = useItemMap; + } + + public Map getUseItemMap() { + return useItemMap; + } + + public int getUseId() { + return useId; + } + +} diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/arena/ArenaLogic.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/arena/ArenaLogic.java index 88e0d65ed..b56a90e73 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/arena/ArenaLogic.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/arena/ArenaLogic.java @@ -15,6 +15,8 @@ import com.ljsd.jieling.ktbeans.KTGameType; import com.ljsd.jieling.ktbeans.KtEventUtils; import com.ljsd.jieling.ktbeans.parmsBean.ParamEventBean; import com.ljsd.jieling.logic.OnlineUserManager; +import com.ljsd.jieling.logic.activity.event.ArenaChallengeEvent; +import com.ljsd.jieling.logic.activity.event.Poster; import com.ljsd.jieling.logic.dao.*; import com.ljsd.jieling.logic.dao.root.User; import com.ljsd.jieling.logic.fight.CheckFight; @@ -206,6 +208,7 @@ public class ArenaLogic { //组战斗数据 ArenaInfoProto.ArenaChallengeResponse build = builder.setMyScoreChange(myscoreChange).setDefScoreChange(defScoreChange).addAllArenaEnemys(getArenaEnemyList(arenaManager.getArenaEnemies())).build(); user.getUserMissionManager().onGameEvent(user, GameEvent.ARENA_CHALLENGE,fightResult,myscoreChange + myscore); + Poster.getPoster().dispatchEvent(new ArenaChallengeEvent(user.getId())); MessageUtil.sendMessage(session,1, MessageTypeProto.MessageType.ARENA_CHALLENGE_RESPONSE_VALUE,build,true); KtEventUtils.onKtEvent(user, ParamEventBean.UserGameType,KTGameType.ARENA.getIndex(),challengeUid); } diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/EquipManager.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/EquipManager.java index 81d673ae0..e5c92e157 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/EquipManager.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/EquipManager.java @@ -3,6 +3,8 @@ package com.ljsd.jieling.logic.dao; import com.ljsd.common.mogodb.MongoBase; import com.ljsd.jieling.config.SEquipConfig; import com.ljsd.jieling.db.mongo.MongoKey; +import com.ljsd.jieling.logic.activity.event.EquipEvent; +import com.ljsd.jieling.logic.activity.event.Poster; import com.ljsd.jieling.logic.dao.root.User; import com.ljsd.jieling.logic.mission.GameEvent; @@ -29,6 +31,7 @@ public class EquipManager extends MongoBase { equipMap.put(equip.getId(),equip); addEquipHandBook(equip.getEquipId()); user.getUserMissionManager().onGameEvent(user, GameEvent.GET_EQUIP,equip.getEquipId()); + Poster.getPoster().dispatchEvent(new EquipEvent(user.getId(),equip.getEquipId())); } public void remove(String equipId){ diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/PlayerManager.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/PlayerManager.java index 5dd2a4bce..c491a377c 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/PlayerManager.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/PlayerManager.java @@ -73,6 +73,10 @@ public class PlayerManager extends MongoBase { private int guildId ;// 公会id + private int sign;//月签到天数 + + private int signTotay;//今天是否签到 + public PlayerManager(){ this.setRootCollection(User._COLLECTION_NAME); } @@ -405,4 +409,22 @@ public class PlayerManager extends MongoBase { updateString("guildId", guildId); this.guildId = guildId; } + + public int getSign() { + return sign; + } + + public void setSign(int sign) { + updateString("sign", sign); + this.sign = sign; + } + + public void setSignTotay(int signTotay) { + updateString("signTotay", signTotay); + this.signTotay = signTotay; + } + + public int getSignTotay() { + return signTotay; + } } diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/fight/CombatLogic.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/fight/CombatLogic.java index 7835bc61c..893c2978e 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/fight/CombatLogic.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/fight/CombatLogic.java @@ -13,6 +13,8 @@ import com.ljsd.jieling.ktbeans.KTGameType; import com.ljsd.jieling.ktbeans.KtEventUtils; import com.ljsd.jieling.ktbeans.parmsBean.ParamEventBean; import com.ljsd.jieling.logic.OnlineUserManager; +import com.ljsd.jieling.logic.activity.event.Poster; +import com.ljsd.jieling.logic.activity.event.SecretEvent; import com.ljsd.jieling.logic.dao.*; import com.ljsd.jieling.logic.dao.root.User; import com.ljsd.jieling.logic.dao.UserManager; @@ -370,6 +372,7 @@ public class CombatLogic { } adventureFastReward = getAdventureFastReward(user, SGameSetting.getGameSetting().getAdventureFastBattle()); user.getUserMissionManager().onGameEvent(user,GameEvent.PlAY_STORY,9999,1); + Poster.getPoster().dispatchEvent(new SecretEvent(user.getId())); } FightInfoProto.TakeAventureRewardResponse build = FightInfoProto.TakeAventureRewardResponse.newBuilder().setDrop(adventureFastReward.get(1)).setRandomDrop(adventureFastReward.get(2)).build(); MessageUtil.sendMessage(session,1, MessageTypeProto.MessageType.ADVENTURE_REWARD_RESPONSE_VALUE,build,true); diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/hero/HeroLogic.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/hero/HeroLogic.java index 36369b8cb..d1c0f39a6 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/hero/HeroLogic.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/hero/HeroLogic.java @@ -12,6 +12,8 @@ import com.ljsd.jieling.ktbeans.KtEventUtils; import com.ljsd.jieling.ktbeans.parmsBean.ParamEventBean; import com.ljsd.jieling.logic.activity.ActivityLogic; import com.ljsd.jieling.logic.activity.ActivityType; +import com.ljsd.jieling.logic.activity.event.HeroUpStarEvent; +import com.ljsd.jieling.logic.activity.event.Poster; import com.ljsd.jieling.logic.dao.*; import com.ljsd.jieling.logic.dao.root.User; import com.ljsd.jieling.logic.dao.UserManager; @@ -625,6 +627,7 @@ public class HeroLogic { MessageUtil.sendErrorResponse(session,0,MessageTypeProto.MessageType.UP_HERO_STAR_RESPONSE_VALUE,""); return; } + Poster.getPoster().dispatchEvent(new HeroUpStarEvent(user.getId())); //删除hero recyleHeroBySystem(user,removeHeroIds); targetHero.upStar( 1 ); diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/store/BuyGoodsLogic.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/store/BuyGoodsLogic.java index 3ae834362..64939881a 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/store/BuyGoodsLogic.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/store/BuyGoodsLogic.java @@ -146,11 +146,6 @@ public class BuyGoodsLogic { MailLogic.getInstance().sendMail(user.getId(),title,content,ItemUtil.getMailReward(sActivityRewardConfig.getReward()),nowTime, Global.MAIL_EFFECTIVE_TIME); } - if(rechargeInfo.getIsDayFirst()==0){ - ActivityLogic.getInstance().updateActivityMissionProgress(user, ActivityType.DAILY_RECHARGE,price); - ActivityLogic.getInstance().updateActivityMissionProgress(user, ActivityType.RECHARGE_SUM,1); - rechargeInfo.setDailyFirst(1); - } if(length>baseReward.length){ int[][] result = new int[length][]; int i=0; @@ -179,6 +174,9 @@ public class BuyGoodsLogic { rechargeInfo.setSaveAmt(price+saveAmt); ActivityLogic.getInstance().updateActivityMissionProgress(user, ActivityType.RechargeTotal,rechargeInfo.getSaveAmt()); ActivityLogic.getInstance().updateActivityMissionProgress(user, ActivityType.LUCKYCAT,price); + ActivityLogic.getInstance().updateActivityMissionProgress(user, ActivityType.DAILY_RECHARGE,price); + ActivityLogic.getInstance().updateActivityMissionProgress(user, ActivityType.RECHARGE_NUM,rechargeInfo.getSaveAmt()); + ActivityLogic.getInstance().updateActivityMissionProgress(user, ActivityType.RECHARGE_SUM_DAY,price); } buyGoodsTimes.put(goodsId,buyCount); 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 559457dcd..90a0012da 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 @@ -7,6 +7,8 @@ import com.ljsd.jieling.globals.BIReason; import com.ljsd.jieling.ktbeans.KtEventUtils; import com.ljsd.jieling.ktbeans.parmsBean.ParamEventBean; import com.ljsd.jieling.logic.OnlineUserManager; +import com.ljsd.jieling.logic.activity.event.GoldEvent; +import com.ljsd.jieling.logic.activity.event.Poster; import com.ljsd.jieling.logic.dao.PlayerManager; import com.ljsd.jieling.logic.dao.StoreInfo; import com.ljsd.jieling.logic.dao.StoreManager; @@ -280,6 +282,9 @@ public class StoreLogic { if(SStoreTypeConfig.getsStoreTypeConfigMap().get(storeId).getStoreType() != StoreType.GIFT_STORE.getType()){ user.getUserMissionManager().onGameEvent(user, GameEvent.BUY_MATERIAL,sStoreConfig.getGoods()[0][0],itemNum); } + if(itemId==10015){ + Poster.getPoster().dispatchEvent(new GoldEvent(user.getId())); + } PlayerInfoProto.BuyStoreItemResponse builder = PlayerInfoProto.BuyStoreItemResponse.newBuilder().setDrop(drop).build(); MessageUtil.sendMessage(iSession, 1,msgId, builder, true); diff --git a/serverlogic/src/main/java/com/ljsd/jieling/util/ItemUtil.java b/serverlogic/src/main/java/com/ljsd/jieling/util/ItemUtil.java index 6b427c65b..9bed31494 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/util/ItemUtil.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/util/ItemUtil.java @@ -11,6 +11,8 @@ import com.ljsd.jieling.handler.map.MapManager; import com.ljsd.jieling.handler.map.TemporaryItems; import com.ljsd.jieling.ktbeans.KtEventUtils; import com.ljsd.jieling.ktbeans.parmsBean.ParamEventBean; +import com.ljsd.jieling.logic.activity.event.Poster; +import com.ljsd.jieling.logic.activity.event.UseItemEvent; import com.ljsd.jieling.logic.dao.*; import com.ljsd.jieling.logic.dao.root.User; import com.ljsd.jieling.logic.hero.HeroLogic; @@ -703,6 +705,7 @@ public class ItemUtil { MessageUtil.sendBagIndication(user.getId(),1,sendTemToFront); } user.getUserMissionManager().onGameEvent(user,GameEvent.CONSUMER_MATERIAL,useItemMap); + Poster.getPoster().dispatchEvent(new UseItemEvent(user.getId(),useItemMap)); } From 797a4842502978073882ac7d665fdb47e5430308 Mon Sep 17 00:00:00 2001 From: zhangshanxue Date: Tue, 6 Aug 2019 15:28:15 +0800 Subject: [PATCH 06/10] =?UTF-8?q?=E8=BE=BE=E4=BA=BA=E6=8E=92=E8=A1=8C?= =?UTF-8?q?=E6=A6=9C=E5=A5=96=E5=8A=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../config/SActivityRankingReward.java | 71 +++++++++++++++++++ .../jieling/logic/activity/ActivityLogic.java | 4 +- .../logic/activity/ExpectRankActivity.java | 63 +++++++++++++++- .../logic/activity/ForceRankActivity.java | 2 +- .../activity/HeroUpExpectRankActivity.java | 1 - .../activity/RechargeSumDayActivity.java | 35 ++++++++- .../logic/activity/SignInSumActivity.java | 23 ++---- .../jieling/logic/store/BuyGoodsLogic.java | 1 + 8 files changed, 174 insertions(+), 26 deletions(-) create mode 100644 serverlogic/src/main/java/com/ljsd/jieling/config/SActivityRankingReward.java diff --git a/serverlogic/src/main/java/com/ljsd/jieling/config/SActivityRankingReward.java b/serverlogic/src/main/java/com/ljsd/jieling/config/SActivityRankingReward.java new file mode 100644 index 000000000..4aa052a7b --- /dev/null +++ b/serverlogic/src/main/java/com/ljsd/jieling/config/SActivityRankingReward.java @@ -0,0 +1,71 @@ +package com.ljsd.jieling.config; + +import com.ljsd.jieling.logic.STableManager; +import com.ljsd.jieling.logic.Table; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +@Table(name = "ActivityRankingReward") +public class SActivityRankingReward implements BaseConfig { + + private int id; + + private int activityId; + + private int minRank; + + private int maxRank; + + private int[][] rankingReward; + + private static Map sActivityRankingRewardMap; + + private static Map> sActivityRankingRewardMapByActivityId; + + @Override + public void init() throws Exception { + sActivityRankingRewardMap = STableManager.getConfig(SActivityRankingReward.class); + Map> integerListHashMap = new HashMap<>(); + for (SActivityRankingReward sActivityRankingReward : sActivityRankingRewardMap.values()) { + int activityId = sActivityRankingReward.getActivityId(); + if (!integerListHashMap.containsKey(activityId)) { + integerListHashMap.put(activityId, new ArrayList<>()); + } + integerListHashMap.get(activityId).add(sActivityRankingReward); + } + + } + + public static Map getsActivityRankingRewardMap() { + return sActivityRankingRewardMap; + } + + public static List getsActivityRankingRewardMapByActivityId(int Id) { + return sActivityRankingRewardMapByActivityId.get(Id); + } + + public int getId() { + return id; + } + + public int getActivityId() { + return activityId; + } + + public int getMinRank() { + return minRank; + } + + public int getMaxRank() { + return maxRank; + } + + public int[][] getRankingReward() { + return rankingReward; + } + + +} \ No newline at end of file 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 ec18a2c15..f6565eac5 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 @@ -73,8 +73,8 @@ public class ActivityLogic { if (time == 2) { continue; } - long startTime = sGlobalActivity.getTimeLong(0, time); - long endTime = sGlobalActivity.getTimeLong(0, time); + long startTime = sGlobalActivity.getTimeLong(0, 1); + long endTime = sGlobalActivity.getTimeLong(0, 2); if (now < startTime) { continue; } diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/ExpectRankActivity.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/ExpectRankActivity.java index ff6775fb5..efca85670 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/ExpectRankActivity.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/ExpectRankActivity.java @@ -1,15 +1,24 @@ package com.ljsd.jieling.logic.activity; +import com.ljsd.jieling.config.SActivityRankingReward; import com.ljsd.jieling.config.SActivityRewardConfig; +import com.ljsd.jieling.config.SErrorCodeEerverConfig; import com.ljsd.jieling.db.redis.RedisKey; import com.ljsd.jieling.db.redis.RedisUtil; +import com.ljsd.jieling.globals.Global; import com.ljsd.jieling.logic.dao.ActivityMission; import com.ljsd.jieling.logic.dao.ActivityProgressInfo; 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 com.ljsd.jieling.util.TimeUtils; +import org.springframework.data.redis.core.ZSetOperations; + +import java.util.*; class ExpectRankActivity extends AbstractActivity { @@ -19,9 +28,8 @@ class ExpectRankActivity extends AbstractActivity { @Override void updateProgress(User user, ActivityMission activityMission, int count) { - activityMission.setValue(count+activityMission.getValue()); + activityMission.setValue(count + activityMission.getValue()); String key = RedisKey.getKey(RedisKey.EXPERT_RANK, String.valueOf(id), false); - //todo 删除长度以外数值 RedisUtil.getInstence().zsetAddOne(key, String.valueOf(user.getId()), count); } @@ -45,4 +53,55 @@ class ExpectRankActivity extends AbstractActivity { return true; } + + @Override + public void onActivityEnd() throws Exception { + + List sActivityRankingReward = SActivityRankingReward.getsActivityRankingRewardMapByActivityId(id); + int maxRank = 0; + Map rank2miss = new HashMap<>(); + for (SActivityRankingReward sActivityRankingReward1 : sActivityRankingReward) { + maxRank = Math.max(maxRank, sActivityRankingReward1.getMaxRank()); + for (Integer rank : getRankSet(sActivityRankingReward1.getMinRank(), sActivityRankingReward1.getMaxRank())) { + rank2miss.put(rank, sActivityRankingReward1.getId()); + } + } + + Set> rankInfo = RedisUtil.getInstence().getZsetreverseRangeWithScores(RedisKey.EXPERT_RANK, Integer.toString(id), 0, maxRank - 1); + int rank = 1; + int nowTime = (int) (TimeUtils.now() / 1000); + for (ZSetOperations.TypedTuple item : rankInfo) { + String value = item.getValue(); + int uid = Integer.parseInt(value); + User user = UserManager.getUser(uid); + + ActivityMission activityMission = user.getActivityManager().getActivityMissionMap().get(id); + if (activityMission == null || activityMission.getActivityState() != ActivityType.OPEN_STATE || activityMission.getOpenType() == 0) { + continue; + } + int missionId = rank2miss.get(rank++); + //check value + SActivityRankingReward sActivityRankingReward1 = SActivityRankingReward.getsActivityRankingRewardMap().get(missionId); + //sendmail + String content = SErrorCodeEerverConfig.getI18NMessage("powerrank_activity_title"); + String title = SErrorCodeEerverConfig.getI18NMessage("powerrank_activity_txt", new Object[]{rank}); + String mailReward = ItemUtil.getMailReward(sActivityRankingReward1.getRankingReward()); + MailLogic.getInstance().sendMail(uid, title, content, mailReward, nowTime, Global.MAIL_EFFECTIVE_TIME); + } + + + } + + private Set getRankSet(int start, int end) { + Set set = new HashSet<>(); + if (start > end) { + return set; + } + for (int i = start; i <= end; i++) { + set.add(i); + } + return set; + } + + } diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/ForceRankActivity.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/ForceRankActivity.java index 5ad811cba..c3f130d62 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/ForceRankActivity.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/ForceRankActivity.java @@ -89,7 +89,7 @@ class ForceRankActivity extends AbstractActivity { continue; } int value2 = values[0][2]; - int missionProgress = activityProgressInfo.getProgrss(); + int missionProgress = activityMission.getValue(); if (missionProgress < value2) { continue; } diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/HeroUpExpectRankActivity.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/HeroUpExpectRankActivity.java index a8fea9689..ab68315d4 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/HeroUpExpectRankActivity.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/HeroUpExpectRankActivity.java @@ -44,7 +44,6 @@ class HeroUpExpectRankActivity extends ExpectRankActivity { void updateProgress(User user, ActivityMission activityMission, int count) { activityMission.setValue(count+activityMission.getValue()); String key = RedisKey.getKey(RedisKey.EXPERT_RANK, String.valueOf(id), false); - //todo 删除长度以外数值 RedisUtil.getInstence().zsetAddOne(key, String.valueOf(user.getId()), count); } } diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/RechargeSumDayActivity.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/RechargeSumDayActivity.java index 0dc07a9e7..28ddcbdf3 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/RechargeSumDayActivity.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/RechargeSumDayActivity.java @@ -4,8 +4,15 @@ import com.ljsd.jieling.config.SActivityRewardConfig; import com.ljsd.jieling.logic.dao.ActivityManager; import com.ljsd.jieling.logic.dao.ActivityMission; import com.ljsd.jieling.logic.dao.ActivityProgressInfo; +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.MessageUtil; + +import java.util.Comparator; +import java.util.Map; +import java.util.TreeMap; +import java.util.TreeSet; class RechargeSumDayActivity extends AbstractActivity { @@ -21,7 +28,6 @@ class RechargeSumDayActivity extends AbstractActivity { @Override void updateProgress(ActivityMission activityMission, int count) { - //TODO 走配置 每日金额大于多少更新天数 activityMission.setValue(activityMission.getValue() + count); } @@ -30,4 +36,31 @@ class RechargeSumDayActivity extends AbstractActivity { return checkValue(session, sActivityRewardConfig, activityProgressInfo); } + /** + * 根据配置解析数值进度完成度 + */ + boolean checkValue(ISession session, SActivityRewardConfig sActivityRewardConfig, ActivityProgressInfo activityProgressInfo) throws Exception { + int[][] values = sActivityRewardConfig.getValues(); + User user = UserManager.getUser(session.getUid()); + int value = user.getActivityManager().getActivityMissionMap().get(sActivityRewardConfig.getActivityId()).getValue(); + if (value < values[0][1]) { + MessageUtil.sendErrorResponse(session, 0, rewardResponseValue, "value illegality"); + return false; + } + + TreeMap sortMap = new TreeMap<>(); + SActivityRewardConfig.getsActivityRewardConfigByActivityId(id).forEach(sActivityRewardConfig1 -> + sortMap.put(sActivityRewardConfig1.getId(), sActivityRewardConfig1) + ); + + Map.Entry entry = sortMap.lowerEntry(sActivityRewardConfig.getId()); + if (null != entry) { + ActivityProgressInfo progressInfo = user.getActivityManager().getActivityMissionMap().get(id).getActivityProgressInfoMap().get(entry.getKey()); + if (progressInfo != null && activityProgressInfo.getState() != ActivityType.HAD_TAKED) { + return false; + } + } + return true; + } + } 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 843fb338c..3206c54e8 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,12 +1,11 @@ package com.ljsd.jieling.logic.activity; -import com.ljsd.jieling.config.SActivityRewardConfig; import com.ljsd.jieling.logic.dao.ActivityMission; -import com.ljsd.jieling.logic.dao.ActivityProgressInfo; -import com.ljsd.jieling.network.session.ISession; -import com.ljsd.jieling.util.MessageUtil; - +/** + * 签到不走活动 没有逻辑处理 + */ +@Deprecated class SignInSumActivity extends AbstractActivity { public SignInSumActivity(int id) { @@ -17,19 +16,5 @@ class SignInSumActivity extends AbstractActivity { void updateProgress(ActivityMission activityMission, int count) { activityMission.setValue(count + activityMission.getValue()); } -// -// @Override -// boolean takeRewardsProcess(ISession session, SActivityRewardConfig sActivityRewardConfig, ActivityProgressInfo activityProgressInfo) throws Exception { -// //TODO 检查下 客户端是否会跳着领取 -// -//// SActivityRewardConfig.getsActivityRewardConfigByActivityId(id); -//// if (sActivityRewardConfig == null || sActivityRewardConfig.getActivityId() != id) { -//// MessageUtil.sendErrorResponse(session, 0, rewardResponseValue, ""); -//// return false; -//// } -//// return checkValue(session, sActivityRewardConfig, activityProgressInfo); -// } - - } diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/store/BuyGoodsLogic.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/store/BuyGoodsLogic.java index ccfc0aa2a..8946cc08f 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/store/BuyGoodsLogic.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/store/BuyGoodsLogic.java @@ -172,6 +172,7 @@ public class BuyGoodsLogic { if(sRechargeCommodityConfig.getAccumulativeRecharge() == 1){ int saveAmt = rechargeInfo.getSaveAmt(); rechargeInfo.setSaveAmt(price+saveAmt); + //TODO 用事件分发 ActivityLogic.getInstance().updateActivityMissionProgress(user, ActivityType.RechargeTotal,rechargeInfo.getSaveAmt()); ActivityLogic.getInstance().updateActivityMissionProgress(user, ActivityType.LUCKYCAT,price); ActivityLogic.getInstance().updateActivityMissionProgress(user, ActivityType.DAILY_RECHARGE,price); From d5352f79a7cc2ca22c94fc66eacf1477404f393f Mon Sep 17 00:00:00 2001 From: zhangshanxue Date: Tue, 6 Aug 2019 17:31:59 +0800 Subject: [PATCH 07/10] =?UTF-8?q?=E8=BF=9E=E7=BB=AD=E5=85=85=E5=80=BC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../jieling/config/SActivityRewardConfig.java | 37 ++++++++++++------- .../com/ljsd/jieling/config/SGameSetting.java | 2 - .../jieling/logic/activity/ActivityLogic.java | 24 ++++++------ .../activity/RechargeSumDayActivity.java | 35 +++++++++--------- .../ljsd/jieling/logic/dao/PlayerManager.java | 16 ++++++++ .../jieling/logic/store/BuyGoodsLogic.java | 3 +- 6 files changed, 71 insertions(+), 46 deletions(-) diff --git a/serverlogic/src/main/java/com/ljsd/jieling/config/SActivityRewardConfig.java b/serverlogic/src/main/java/com/ljsd/jieling/config/SActivityRewardConfig.java index f6d1e3ad0..ed03bf2c4 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/config/SActivityRewardConfig.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/config/SActivityRewardConfig.java @@ -2,53 +2,62 @@ package com.ljsd.jieling.config; import com.ljsd.jieling.logic.STableManager; import com.ljsd.jieling.logic.Table; +import com.ljsd.jieling.logic.activity.ActivityType; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; -@Table(name ="ActivityRewardConfig") +@Table(name = "ActivityRewardConfig") public class SActivityRewardConfig implements BaseConfig { - private int id; + private int id; - private int activityId; + private int activityId; - private int[][] values; + private int[][] values; - private int[][] reward; + private int[][] reward; - private static Map sActivityRewardConfigMap; + private static Map sActivityRewardConfigMap; - private static Map> sActivityRewardConfigListMap; + private static Map> sActivityRewardConfigListMap; - - @Override + private static Map rechargeDaySum = new HashMap<>();//连续充值天数 + + @Override public void init() throws Exception { Map config = STableManager.getConfig(SActivityRewardConfig.class); Map> sActivityRewardConfigListMapTmp = new HashMap<>(); - for(SActivityRewardConfig sActivityRewardConfig : config.values()){ + for (SActivityRewardConfig sActivityRewardConfig : config.values()) { int activityId = sActivityRewardConfig.getActivityId(); - if(!sActivityRewardConfigListMapTmp.containsKey(activityId)){ - sActivityRewardConfigListMapTmp.put(activityId,new ArrayList<>()); + if (!sActivityRewardConfigListMapTmp.containsKey(activityId)) { + sActivityRewardConfigListMapTmp.put(activityId, new ArrayList<>()); } sActivityRewardConfigListMapTmp.get(activityId).add(sActivityRewardConfig); } sActivityRewardConfigMap = config; sActivityRewardConfigListMap = sActivityRewardConfigListMapTmp; - } + sActivityRewardConfigListMap.get(ActivityType.RECHARGE_SUM_DAY).forEach(sActivityRewardConfig -> + rechargeDaySum.put(sActivityRewardConfig.getValues()[0][1], sActivityRewardConfig.getId())); + + } public static SActivityRewardConfig getsActivityRewardConfigByMissionId(int missionId) { return sActivityRewardConfigMap.get(missionId); } - public static List getsActivityRewardConfigByActivityId(int activityId) { + public static List getsActivityRewardConfigByActivityId(int activityId) { return sActivityRewardConfigListMap.get(activityId); } + public static Map getRechargeDaySum() { + return rechargeDaySum; + } + public int getId() { return id; } diff --git a/serverlogic/src/main/java/com/ljsd/jieling/config/SGameSetting.java b/serverlogic/src/main/java/com/ljsd/jieling/config/SGameSetting.java index 449b3ca4c..67817e90b 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/config/SGameSetting.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/config/SGameSetting.java @@ -100,8 +100,6 @@ public class SGameSetting implements BaseConfig { private Map itemRecoveryMap; - private int showRank; - private static SGameSetting gameSetting; 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 f6565eac5..c1348b198 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 @@ -41,17 +41,17 @@ public class ActivityLogic { public void flushEveryDay(User user, PlayerInfoProto.FivePlayerUpdateIndication.Builder fBuilder) throws Exception { //跟新签到天数 - if (user.getPlayerInfoManager().getSignTotay() == 1){ + if (user.getPlayerInfoManager().getSignTotay() == 1) { user.getPlayerInfoManager().setSign(user.getPlayerInfoManager().getSign() + 1); user.getPlayerInfoManager().setSignTotay(0); } //更新每日充值 - ActivityLogic.getInstance().resumeActivity(user,ActivityType.DAILY_RECHARGE); + ActivityLogic.getInstance().resumeActivity(user, ActivityType.DAILY_RECHARGE); //更新首日充值 user.getPlayerInfoManager().getRechargeInfo().setDailyFirst(0); //更新累计充值天数 - ActivityLogic.getInstance().resumeActivity(user,ActivityType.RECHARGE_SUM_DAY); - + ActivityLogic.getInstance().resumeActivity(user, ActivityType.RECHARGE_SUM_DAY); + user.getPlayerInfoManager().setRechargedaily(0); updateActivityMissionProgress(user, ActivityType.SevenLogin, 1); upFivePlayerActivity(user, ActivityType.SevenLogin, fBuilder); } @@ -78,9 +78,11 @@ public class ActivityLogic { if (now < startTime) { continue; } - if (endTime != 0 && now > endTime && openActivityIds.contains(sGlobalActivity.getId())) { - openActivityIds.remove(sGlobalActivity.getId()); - ActivityTypeEnum.getActicityType(sGlobalActivity.getId()).onActivityEnd(); + if (endTime != 0 && now > endTime) { + if (openActivityIds.contains(sGlobalActivity.getId())) { + openActivityIds.remove(sGlobalActivity.getId()); + ActivityTypeEnum.getActicityType(sGlobalActivity.getId()).onActivityEnd(); + } continue; } openActivityIds.add(sGlobalActivity.getId()); @@ -294,10 +296,10 @@ public class ActivityLogic { } - public void upFivePlayerActivity(User user,int activityType, PlayerInfoProto.FivePlayerUpdateIndication.Builder fBuilder){ - if(fBuilder == null){ - return; - } + public void upFivePlayerActivity(User user, int activityType, PlayerInfoProto.FivePlayerUpdateIndication.Builder fBuilder) { + if (fBuilder == null) { + return; + } ActivityManager activityManager = user.getActivityManager(); Map activityMissionMap = activityManager.getActivityMissionMap(); for (Map.Entry item : activityMissionMap.entrySet()) { diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/RechargeSumDayActivity.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/RechargeSumDayActivity.java index 28ddcbdf3..026c96287 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/RechargeSumDayActivity.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/RechargeSumDayActivity.java @@ -9,10 +9,8 @@ import com.ljsd.jieling.logic.dao.root.User; import com.ljsd.jieling.network.session.ISession; import com.ljsd.jieling.util.MessageUtil; -import java.util.Comparator; import java.util.Map; import java.util.TreeMap; -import java.util.TreeSet; class RechargeSumDayActivity extends AbstractActivity { @@ -23,12 +21,26 @@ class RechargeSumDayActivity extends AbstractActivity { @Override public void onResume(User user) throws Exception { ActivityManager activityManager = user.getActivityManager(); - activityManager.getActivityMissionMap().get(id).setValue(0); + ActivityMission activityMission = activityManager.getActivityMissionMap().get(id); + activityMission.setValue(0); + int missionId = SActivityRewardConfig.getRechargeDaySum().get(activityMission.getValue() + 1); + if (user.getPlayerInfoManager().getRechargedaily() > SActivityRewardConfig.getsActivityRewardConfigByMissionId(missionId).getValues()[0][0]) { + activityMission.setValue(activityMission.getValue() + 1); + } } @Override void updateProgress(ActivityMission activityMission, int count) { - activityMission.setValue(activityMission.getValue() + count); + + int missionId = SActivityRewardConfig.getRechargeDaySum().get(activityMission.getValue() + 1); + ActivityProgressInfo activityProgressInfo = activityMission.getActivityProgressInfoMap().get(missionId); + if (activityProgressInfo == null || activityProgressInfo.getProgrss() == 1) { + return; + } + if (count > activityProgressInfo.getProgrss()) { + activityProgressInfo.setProgrss(1); + } + } @Override @@ -42,24 +54,11 @@ class RechargeSumDayActivity extends AbstractActivity { boolean checkValue(ISession session, SActivityRewardConfig sActivityRewardConfig, ActivityProgressInfo activityProgressInfo) throws Exception { int[][] values = sActivityRewardConfig.getValues(); User user = UserManager.getUser(session.getUid()); - int value = user.getActivityManager().getActivityMissionMap().get(sActivityRewardConfig.getActivityId()).getValue(); + int value = user.getActivityManager().getActivityMissionMap().get(sActivityRewardConfig.getActivityId()).getValue()+1; if (value < values[0][1]) { MessageUtil.sendErrorResponse(session, 0, rewardResponseValue, "value illegality"); return false; } - - TreeMap sortMap = new TreeMap<>(); - SActivityRewardConfig.getsActivityRewardConfigByActivityId(id).forEach(sActivityRewardConfig1 -> - sortMap.put(sActivityRewardConfig1.getId(), sActivityRewardConfig1) - ); - - Map.Entry entry = sortMap.lowerEntry(sActivityRewardConfig.getId()); - if (null != entry) { - ActivityProgressInfo progressInfo = user.getActivityManager().getActivityMissionMap().get(id).getActivityProgressInfoMap().get(entry.getKey()); - if (progressInfo != null && activityProgressInfo.getState() != ActivityType.HAD_TAKED) { - return false; - } - } return true; } diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/PlayerManager.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/PlayerManager.java index c491a377c..0c7afbe80 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/PlayerManager.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/PlayerManager.java @@ -11,6 +11,7 @@ import com.ljsd.jieling.db.mongo.MongoKey; import com.ljsd.jieling.logic.dao.root.User; import com.ljsd.jieling.logic.mission.GameEvent; import com.ljsd.jieling.util.MathUtils; +import org.springframework.data.annotation.Transient; import java.util.HashMap; import java.util.HashSet; @@ -77,6 +78,9 @@ public class PlayerManager extends MongoBase { private int signTotay;//今天是否签到 + @Transient + private int rechargedaily; + public PlayerManager(){ this.setRootCollection(User._COLLECTION_NAME); } @@ -427,4 +431,16 @@ public class PlayerManager extends MongoBase { public int getSignTotay() { return signTotay; } + + public int getRechargedaily() { + return rechargedaily; + } + + public void setRechargedaily(int rechargedaily) { + this.rechargedaily = rechargedaily; + } + + public void addRechargedaily(int rechargedaily) { + this.rechargedaily += rechargedaily; + } } diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/store/BuyGoodsLogic.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/store/BuyGoodsLogic.java index 8946cc08f..026681773 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/store/BuyGoodsLogic.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/store/BuyGoodsLogic.java @@ -172,12 +172,13 @@ public class BuyGoodsLogic { if(sRechargeCommodityConfig.getAccumulativeRecharge() == 1){ int saveAmt = rechargeInfo.getSaveAmt(); rechargeInfo.setSaveAmt(price+saveAmt); + user.getPlayerInfoManager().addRechargedaily(price); //TODO 用事件分发 ActivityLogic.getInstance().updateActivityMissionProgress(user, ActivityType.RechargeTotal,rechargeInfo.getSaveAmt()); ActivityLogic.getInstance().updateActivityMissionProgress(user, ActivityType.LUCKYCAT,price); ActivityLogic.getInstance().updateActivityMissionProgress(user, ActivityType.DAILY_RECHARGE,price); ActivityLogic.getInstance().updateActivityMissionProgress(user, ActivityType.RECHARGE_NUM,rechargeInfo.getSaveAmt()); - ActivityLogic.getInstance().updateActivityMissionProgress(user, ActivityType.RECHARGE_SUM_DAY,price); + ActivityLogic.getInstance().updateActivityMissionProgress(user, ActivityType.RECHARGE_SUM_DAY, user.getPlayerInfoManager().getRechargedaily()); } buyGoodsTimes.put(goodsId,buyCount); From 9f91ab03317541ada959d90fbafb5896286ab272 Mon Sep 17 00:00:00 2001 From: lvxinran Date: Tue, 6 Aug 2019 18:01:47 +0800 Subject: [PATCH 08/10] =?UTF-8?q?=E5=8A=9F=E7=BB=A9=E7=B1=BB=E5=9E=8B?= =?UTF-8?q?=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ljsd/jieling/handler/map/MapLogic.java | 64 ++++++++++++------- .../KillMonsterAccProcessor.java | 13 ++-- ...EventFinishEventDifficultMapProcessor.java | 9 ++- 3 files changed, 57 insertions(+), 29 deletions(-) diff --git a/serverlogic/src/main/java/com/ljsd/jieling/handler/map/MapLogic.java b/serverlogic/src/main/java/com/ljsd/jieling/handler/map/MapLogic.java index 6f8808f9d..c47d20768 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/handler/map/MapLogic.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/handler/map/MapLogic.java @@ -186,8 +186,10 @@ public class MapLogic { return; } MapInfoProto.MapEnterResponse.Builder mapEnterResponse = MapInfoProto.MapEnterResponse.newBuilder(); + SChallengeMapConfig sChallengeMapConfig = SChallengeMapConfig.integerSChallengeMapConfigMap.get(mapManager.getCurMapId()); + mapEnterResponse.setCurXY(CellUtil.xy2Pos(sChallengeMapConfig.getPosition()[0],sChallengeMapConfig.getPosition()[1])); + if(type ==4){ - mapManager.updateEndlessMapId(mapId); List teamPosForHero = user.getTeamPosManager().getTeamPosForHero().get(teamId); for (int i = 0; i > entry :endlessMapInfo.getMapSign().entrySet()){ int curMapId = entry.getKey(); @@ -238,14 +245,9 @@ public class MapLogic { } mapEnterResponse.addAllBuf(towerBuffs); } - SChallengeMapConfig sChallengeMapConfig = SChallengeMapConfig.integerSChallengeMapConfigMap.get(mapManager.getCurMapId()); mapEnterResponse.setDieCount(mapManager.getDieCount()); mapEnterResponse.addAllMapList(cells); - if(type==4&&mapManager.getEndlessMapInfo().getCurCell()!=0){ - mapEnterResponse.setCurXY(mapManager.getEndlessMapInfo().getCurCell()); - }else{ - mapEnterResponse.setCurXY(CellUtil.xy2Pos(sChallengeMapConfig.getPosition()[0],sChallengeMapConfig.getPosition()[1])); - } + mapEnterResponse.addAllWakeCells(mapManager.getWalkCells() == null ? new ArrayList<>() : mapManager.getWalkCells()); if (mapManager.getTemporaryItems() != null) { mapEnterResponse.setTemporaryItems(CBean2Proto.getDrop(mapManager.getTemporaryItems())); @@ -1138,6 +1140,8 @@ public class MapLogic { mapManager.updateEndlessFightCount(1+mapManager.getEndlessMapInfo().getFightCount()); } if (resultCode == 0) { + //无尽副本复活消耗 + reviveConsumeExecution(user); // 失败需要等待n秒后复活所有英雄 int dieCount = user.getMapManager().getDieCount(); dieCount++; @@ -1350,20 +1354,8 @@ public class MapLogic { } mapManager.setLastFightResult(resultCode); if (resultCode == 0) { - if(SChallengeConfig.sChallengeConfigs.get(mapManager.getCurMapId()).getType()==4){ - mapManager.updateEndlessFightCount(mapManager.getEndlessMapInfo().getFightCount()+1); - //消耗行动力 - int [][] cost = new int[1][]; - int costId = SChallengeSetting.getChallengeSetting().getActionPowerId(); - int costNum = SEndlessMapConfig.sEndlessMapConfigMap.get(mapManager.getCurMapId()).getDeathCost(); - mapManager.updateEndlessConsumeExecution(mapManager.getEndlessMapInfo().getConsumeExecution()+costNum); - int [] cost1 = new int[]{costId,costNum}; - cost[0] = cost1; - if(ItemUtil.itemCost(user,cost,BIReason.ENDLESS_CONSUME_EXECUTION,1)) { - costNum = user.getItemManager().getItem(costId).getItemNum(); - ItemUtil.itemCost(user,cost,BIReason.ENDLESS_CONSUME_EXECUTION,1); - } - } + //无尽副本复活消耗 + reviveConsumeExecution(user); // 失败需要等待n秒后复活所有英雄 int dieCount = user.getMapManager().getDieCount(); dieCount++; @@ -2839,7 +2831,7 @@ public class MapLogic { continue; } if(calHp!=entry.getValue().getMaxHp()){ - int tempHp = calHp*entry.getValue().getCurHp()/entry.getValue().getMaxHp(); + int tempHp = (int)(entry.getValue().getCurHp()/entry.getValue().getMaxHp()*1.0F*calHp); endlessHeroInfo.put(entry.getKey(),new EndlessHero(calHp,tempHp)); calHp = tempHp; }else{ @@ -2972,4 +2964,30 @@ public class MapLogic { MessageUtil.sendMessage(session,1,messageType.getNumber(),response.build(),true); } + /** + * 无尽副本复活消耗行动力 + * @param user + * @throws Exception + */ + private void reviveConsumeExecution(User user) throws Exception { + MapManager mapManager = user.getMapManager(); + if(SChallengeConfig.sChallengeConfigs.get(mapManager.getCurMapId()).getType()!=4){ + return; + } + mapManager.updateEndlessFightCount(mapManager.getEndlessMapInfo().getFightCount()+1); + //消耗行动力 + int [][] cost = new int[1][]; + int costId = SChallengeSetting.getChallengeSetting().getActionPowerId(); + int costNum = SEndlessMapConfig.sEndlessMapConfigMap.get(mapManager.getCurMapId()).getDeathCost(); + mapManager.updateEndlessConsumeExecution(mapManager.getEndlessMapInfo().getConsumeExecution()+costNum); + int [] cost1 = new int[]{costId,costNum}; + cost[0] = cost1; + if(!ItemUtil.itemCost(user,cost,BIReason.ENDLESS_CONSUME_EXECUTION,1)) { + costNum = user.getItemManager().getItem(costId).getItemNum(); + cost1[1]= costNum; + cost[0] = cost1; + ItemUtil.itemCost(user,cost,BIReason.ENDLESS_CONSUME_EXECUTION,1); + } + } + } diff --git a/serverlogic/src/main/java/com/ljsd/jieling/handler/map/missionProcessor/KillMonsterAccProcessor.java b/serverlogic/src/main/java/com/ljsd/jieling/handler/map/missionProcessor/KillMonsterAccProcessor.java index f8c9852e5..963af4516 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/handler/map/missionProcessor/KillMonsterAccProcessor.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/handler/map/missionProcessor/KillMonsterAccProcessor.java @@ -13,18 +13,21 @@ public class KillMonsterAccProcessor implements BaseMissionProcesor{ int[][] configValues = sAccomplishmentConfig.getValues(); MapManager mapManager = user.getMapManager(); SChallengeConfig sChallengeConfig = SChallengeConfig.sChallengeConfigs.get(mapManager.getCurMapId()); - if(sChallengeConfig.getDifficultType()!=configValues[0][0]){ - return GlobalsDef.MAP_MISSION_RETURN; - } - if(missionValue==configValues[1][0]){ + if(configValues[0][0]!=0 && sChallengeConfig.getDifficultType()!=configValues[0][0]){ return GlobalsDef.MAP_MISSION_RETURN; } if(configValues[0].length<2){ return GlobalsDef.MAP_MISSION_RETURN; } + if(missionValue==configValues[1][0]){ + missionValue = -1; + } + if(missionValue==-1){ + return missionValue; + } for(int i = 1 ; i Date: Tue, 6 Aug 2019 18:03:16 +0800 Subject: [PATCH 09/10] =?UTF-8?q?=E5=8A=9F=E7=BB=A921?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../handler/map/missionProcessor/KillMonsterAccProcessor.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/serverlogic/src/main/java/com/ljsd/jieling/handler/map/missionProcessor/KillMonsterAccProcessor.java b/serverlogic/src/main/java/com/ljsd/jieling/handler/map/missionProcessor/KillMonsterAccProcessor.java index 963af4516..4364ff018 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/handler/map/missionProcessor/KillMonsterAccProcessor.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/handler/map/missionProcessor/KillMonsterAccProcessor.java @@ -25,7 +25,7 @@ public class KillMonsterAccProcessor implements BaseMissionProcesor{ if(missionValue==-1){ return missionValue; } - for(int i = 1 ; i Date: Tue, 6 Aug 2019 18:28:09 +0800 Subject: [PATCH 10/10] =?UTF-8?q?17=E5=8A=9F=E7=BB=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../FinishOptionsDifficultMapProcessor.java | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/serverlogic/src/main/java/com/ljsd/jieling/handler/map/missionProcessor/FinishOptionsDifficultMapProcessor.java b/serverlogic/src/main/java/com/ljsd/jieling/handler/map/missionProcessor/FinishOptionsDifficultMapProcessor.java index bc6e85acb..5f63b9484 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/handler/map/missionProcessor/FinishOptionsDifficultMapProcessor.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/handler/map/missionProcessor/FinishOptionsDifficultMapProcessor.java @@ -15,11 +15,13 @@ public class FinishOptionsDifficultMapProcessor implements BaseMissionProcesor{ if(sChallengeConfig.getDifficultType()!=sAccomplishmentConfig.getValues()[1][0]){ return GlobalsDef.MAP_MISSION_RETURN; } - int[] value = sAccomplishmentConfig.getValues()[0]; + int[][] value = sAccomplishmentConfig.getValues(); missionValue = 0-missionValue; - for(int i = 0 ; i >(value.length+1)==1){