diff --git a/conf/server/GlobalActivity.txt b/conf/server/GlobalActivity.txt index 8709a37cf..78cf36d82 100644 --- a/conf/server/GlobalActivity.txt +++ b/conf/server/GlobalActivity.txt @@ -8,3 +8,5 @@ int string int string string int 6 成长基金 6 0 0 1 7 云梦祈福 7 0 604800 2 8 孙龙的宝藏 8 0 604800 2 +9 招财猫 9 0 604800 2 +10 七日狂欢 10 0 604800 2 diff --git a/conf/server/LuckyCatConfig.txt b/conf/server/LuckyCatConfig.txt new file mode 100644 index 000000000..5f2908db9 --- /dev/null +++ b/conf/server/LuckyCatConfig.txt @@ -0,0 +1,10 @@ +Id ActivityId LuckyType LuckyTime ConsumeValue ValueUp ValueDown RmbValue +int int int int int int int int +1 9 16 1 200 300 200 0 +2 9 16 2 500 750 500 0 +3 9 16 3 1000 1200 1000 0 +4 9 16 4 2000 2400 2000 100 +5 9 16 5 3000 3600 3000 500 +6 9 16 6 4000 4800 4000 1000 +7 9 16 7 5000 6000 5000 1500 +8 9 16 8 6000 7200 6000 2000 diff --git a/serverlogic/src/main/java/com/ljsd/jieling/config/SLuckyCatConfig.java b/serverlogic/src/main/java/com/ljsd/jieling/config/SLuckyCatConfig.java new file mode 100644 index 000000000..8412ffa2c --- /dev/null +++ b/serverlogic/src/main/java/com/ljsd/jieling/config/SLuckyCatConfig.java @@ -0,0 +1,78 @@ +package com.ljsd.jieling.config; + +import com.ljsd.jieling.logic.STableManager; +import com.ljsd.jieling.logic.Table; + +import java.util.HashMap; +import java.util.Map; +import java.util.TreeMap; + +@Table(name = "LuckyCatConfig") +public class SLuckyCatConfig implements BaseConfig { + + private int id; + + private int activityId; + + private int luckyType; + + private int luckyTime; + + private int consumeValue; + + private int valueUp; + + private int valueDown; + + private int rmbValue; + + public static Map configMap = new TreeMap<>(); + private static Map miss2times = new HashMap<>(); + + @Override + public void init() throws Exception { + configMap = new TreeMap<>(STableManager.getConfig(SLuckyCatConfig.class)); + int lastTimes = 0; + for (Map.Entry item : configMap.entrySet()) { + miss2times.put(item.getKey(), item.getValue().getLuckyTime() - lastTimes); + lastTimes = item.getValue().getLuckyTime(); + } + } + + + public int getId() { + return id; + } + + public int getActivityId() { + return activityId; + } + + public int getLuckyType() { + return luckyType; + } + + public int getLuckyTime() { + return luckyTime; + } + + public int getConsumeValue() { + return consumeValue; + } + + public int getValueUp() { + return valueUp; + } + + public int getValueDown() { + return valueDown; + } + + public int getRmbValue() { + return rmbValue; + } + + public static Integer getMiss2time(int luckyTime) { + return miss2times.containsKey(luckyTime) ? miss2times.get(luckyTime) : 0; + } +} \ No newline at end of file diff --git a/serverlogic/src/main/java/com/ljsd/jieling/globals/BIReason.java b/serverlogic/src/main/java/com/ljsd/jieling/globals/BIReason.java index 3a2544731..6b4d896a0 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/globals/BIReason.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/globals/BIReason.java @@ -111,6 +111,7 @@ public interface BIReason { int BLESS_CHOOSE_CONSUME = 1028; int BUY_TREASURE_CONSUME = 1029; + int LUCKYCAT_CONSUME = 1030; int CREATE_GUILD_CONSUME = 1030; // 创建宗门消耗 diff --git a/serverlogic/src/main/java/com/ljsd/jieling/handler/TakeActivityRewardHandler.java b/serverlogic/src/main/java/com/ljsd/jieling/handler/TakeActivityRewardHandler.java index 97a6f62db..5659bdb95 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/handler/TakeActivityRewardHandler.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/handler/TakeActivityRewardHandler.java @@ -1,14 +1,17 @@ package com.ljsd.jieling.handler; +import com.ljsd.jieling.logic.activity.AbstractActivity; import com.ljsd.jieling.logic.activity.ActivityLogic; +import com.ljsd.jieling.logic.activity.ActivityTypeEnum; 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 com.ljsd.jieling.util.MessageUtil; import org.springframework.stereotype.Component; @Component -public class TakeActivityRewardHandler extends BaseHandler{ +public class TakeActivityRewardHandler extends BaseHandler { @Override public MessageTypeProto.MessageType getMessageCode() { return MessageTypeProto.MessageType.TAKE_ACTIVITY_REWARD_REQUEST; @@ -20,6 +23,12 @@ public class TakeActivityRewardHandler extends BaseHandler{ PlayerInfoProto.TakeActivityRewardRequest takeActivityRewardRequest = PlayerInfoProto.TakeActivityRewardRequest.parseFrom(bytes); int missionId = takeActivityRewardRequest.getMissionId(); int activityId = takeActivityRewardRequest.getActivityId(); - ActivityLogic.getInstance().takeReward(iSession,activityId,missionId); + AbstractActivity abstractActivity = ActivityTypeEnum.getActicityType(activityId, iSession.getUid()); + if (abstractActivity == null) { + int rewardResponseValue = MessageTypeProto.MessageType.TAKE_ACTIVITY_REWARD_RESPONSE_VALUE; + MessageUtil.sendErrorResponse(iSession, 0, rewardResponseValue, "no_such_activity_type"); + return; + } + abstractActivity.takeReward(iSession, missionId); } } 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 new file mode 100644 index 000000000..355214ec5 --- /dev/null +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/AbstractActivity.java @@ -0,0 +1,122 @@ +package com.ljsd.jieling.logic.activity; + +import com.ljsd.jieling.config.SActivityRewardConfig; +import com.ljsd.jieling.config.SGlobalActivity; +import com.ljsd.jieling.globals.BIReason; +import com.ljsd.jieling.ktbeans.KtEventUtils; +import com.ljsd.jieling.ktbeans.parmsBean.ParamEventBean; +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.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.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.util.ArrayList; +import java.util.List; +import java.util.Map; + +public abstract class AbstractActivity implements IActivity { + static final Logger LOGGER = LoggerFactory.getLogger(AbstractActivity.class); + final int rewardResponseValue = MessageTypeProto.MessageType.TAKE_ACTIVITY_REWARD_RESPONSE_VALUE; + int uid; + int type; + + public AbstractActivity(int uid, int type) { + this.uid = uid; + this.type = type; + } + + @Override + public void initActivity(User user) { + + } + + @Override + public void update(User user, int count, PlayerInfoProto.FivePlayerUpdateIndication.Builder fBuilder) { + ActivityMission activityMission = user.getActivityManager().getActivityMissionMap().get(type); + SGlobalActivity sGlobalActivity = SGlobalActivity.getsGlobalActivityMap().get(type); + updateProgress(activityMission, count); + if (fBuilder != null) { + long createTime = user.getPlayerInfoManager().getCreateTime(); + 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()) { + Integer missionId = missionProgress.getKey(); + ActivityProgressInfo activityProgressInfo = missionProgress.getValue(); + missionInfos.add(CommonProto.ActivityInfo.MissionInfo.newBuilder().setMissionId(missionId).setProgress(activityProgressInfo.getProgrss()).setState(activityProgressInfo.getState()).build()); + } + fBuilder.addActivityInfo(CommonProto.ActivityInfo.newBuilder().setActivityId(type).addAllMission(missionInfos).setStartTime(startTime).setEndTime(endTime).setReallyOpen(activityMission.getOpenType()).build()); + } + } + + /** + * default update to progress + */ + void updateProgress(ActivityMission activityMission, int count) { + Map activityProgressInfoMap = activityMission.getActivityProgressInfoMap(); + int progress; + for (Map.Entry item : activityProgressInfoMap.entrySet()) { + ActivityProgressInfo activityProgressInfo = item.getValue(); + progress = item.getValue().getProgrss() + count; + activityProgressInfo.setProgrss(progress); + activityMission.updateProgressInfo(item.getKey(), activityProgressInfo); + } + } + + + @Override + public void takeReward(ISession session, int missionId) throws Exception { + + User user = UserManager.getUser(uid); + SActivityRewardConfig sActivityRewardConfig = SActivityRewardConfig.getsActivityRewardConfigByMissionId(missionId); + if (sActivityRewardConfig == null || sActivityRewardConfig.getActivityId() != type) { + MessageUtil.sendErrorResponse(session, 0, rewardResponseValue, ""); + return; + } + ActivityManager activityManager = user.getActivityManager(); + ActivityMission activityMission = activityManager.getActivityMissionMap().get(type); + if (activityMission == null || activityMission.getActivityState() != ActivityType.OPEN_STATE || activityMission.getOpenType() == 0) { + MessageUtil.sendErrorResponse(session, 0, rewardResponseValue, "activity_close"); + return; + } + ActivityProgressInfo activityProgressInfo = activityMission.getActivityProgressInfoMap().get(missionId); + if (activityProgressInfo == null || activityProgressInfo.getState() == ActivityType.HAD_TAKED) { + MessageUtil.sendErrorResponse(session, 0, rewardResponseValue, "had taked"); + return; + } + if (!takeRewardsProcess(session, sActivityRewardConfig, activityProgressInfo)) { + return; + } + 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); + KtEventUtils.onKtEvent(user, ParamEventBean.UserActivityEvent, type, missionId); + PlayerInfoProto.TakeActivityRewardResponse build = PlayerInfoProto.TakeActivityRewardResponse.newBuilder().setDrop(drop).build(); + MessageUtil.sendMessage(session, 1, rewardResponseValue, build, true); + } + + /** + * default get reward + */ + boolean takeRewardsProcess(ISession session, SActivityRewardConfig sActivityRewardConfig, ActivityProgressInfo activityProgressInfo) throws Exception { + int[][] values = sActivityRewardConfig.getValues(); + int missionProgress = activityProgressInfo.getProgrss(); + if (missionProgress < values[0][0]) { + LOGGER.error("the uid={} the misionId={},the missionProgress={},the require is={} ", uid, sActivityRewardConfig.getId(), missionProgress, values[0][0]); + MessageUtil.sendErrorResponse(session, 0, rewardResponseValue, "time not"); + return false; + } + return 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 66ad6b621..898f52d37 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 @@ -146,22 +146,26 @@ public class ActivityLogic { public void initOtherActivity(User user, SGlobalActivity sGlobalActivity) throws Exception { int type = sGlobalActivity.getType(); - switch (type){ + switch (type) { case ActivityType.TREASURE: - user.getUserMissionManager().onGameEvent(user,GameEvent.TREASH_REFRESH,sGlobalActivity.getId()); + user.getUserMissionManager().onGameEvent(user, GameEvent.TREASH_REFRESH, sGlobalActivity.getId()); ActivityMission activityMission = new ActivityMission(); List sTreasureConfigs = STreasureConfig.configByActivityIdMap.get(sGlobalActivity.getId()); List misionIds = new ArrayList<>(sTreasureConfigs.size()); - for(STreasureConfig sTreasureConfig : sTreasureConfigs){ + for (STreasureConfig sTreasureConfig : sTreasureConfigs) { misionIds.add(sTreasureConfig.getId()); } activityMission.initOtherMission(misionIds); - long endTime = sGlobalActivity.getTimeLong(user.getPlayerInfoManager().getCreateTime(),2) -24*3600*1000; + long endTime = sGlobalActivity.getTimeLong(user.getPlayerInfoManager().getCreateTime(), 2) - 24 * 3600 * 1000; user.getActivityManager().setTrsendTime(endTime); - user.getActivityManager().addActivity(sGlobalActivity.getId(),activityMission); + user.getActivityManager().addActivity(sGlobalActivity.getId(), activityMission); break; case ActivityType.BLESSACTIVITY: - blessInfoInit(user.getActivityManager(),sGlobalActivity.getId()); + + blessInfoInit(user.getActivityManager(), sGlobalActivity.getId()); + break; + case ActivityType.LUCKYCAT: + ActivityTypeEnum.getActicityType(type,user.getId()).initActivity(user); break; case ActivityType.SERVERHAPPY: initServenHappy(user,sGlobalActivity); @@ -181,203 +185,203 @@ public class ActivityLogic { return ActivityLogic.Instance.instance; } - public void takeTreasureReward(ISession session,User user,int activityId,int missionId) throws Exception { - int rewardResponseValue = MessageTypeProto.MessageType.TAKE_ACTIVITY_REWARD_RESPONSE_VALUE; - ActivityMission activityMission = user.getActivityManager().getActivityMissionMap().get(activityId); - PlayerManager playerInfoManager = user.getPlayerInfoManager(); - int changeState =ActivityType.HAD_TAKED; - int hadBuyTreasure = playerInfoManager.getHadBuyTreasure(); - if(hadBuyTreasure == 1){ - changeState =ActivityType.FINISH_TAKED; - } - int treasureScore =playerInfoManager.getTreasureScore(); - CommonProto.Drop.Builder drop = null; - if(missionId == -1){ - List dropList = new ArrayList<>(10); - boolean canTakeFinalReward = true; - STreasureConfig finalSTreasureConfig = null; - Map willUpdateAcP = new HashMap<>(); - for(Map.Entry activityProgressInfoItem: activityMission.getActivityProgressInfoMap().entrySet()){ - Integer mineMision = activityProgressInfoItem.getKey(); - STreasureConfig sTreasureConfig = STreasureConfig.configMap.get(mineMision); - if(sTreasureConfig.getType() == 2){ - finalSTreasureConfig = sTreasureConfig; - continue; - } - ActivityProgressInfo value = activityProgressInfoItem.getValue(); - int stateTmp = value.getState(); - if(treasureScore>=sTreasureConfig.getPoints()){ - if(changeState!=stateTmp){ - STreasureConfig sTreasureConfigTmp = STreasureConfig.configMap.get(mineMision); - if(stateTmp == ActivityType.WILL_TAKE){ - dropList.add(sTreasureConfigTmp.getReward()); - } - if(changeState == ActivityType.FINISH_TAKED){ - dropList.add(sTreasureConfigTmp.getTreasureReward()); - } - willUpdateAcP.put(mineMision,value); - } - }else{ - canTakeFinalReward = false; - } - } - for(Map.Entry item : willUpdateAcP.entrySet()){ - ActivityProgressInfo value = item.getValue(); - value.setState(changeState); - activityMission.updateProgressInfo(item.getKey(),value); - KtEventUtils.onKtEvent(user, ParamEventBean.UserActivityEvent,activityId,item.getKey()); - } - if(canTakeFinalReward && finalSTreasureConfig!=null){ - ActivityProgressInfo activityProgressInfo = activityMission.getActivityProgressInfoMap().get(finalSTreasureConfig.getId()); - int stateTmp = activityProgressInfo.getState(); - if(changeState!=stateTmp){ - if(stateTmp == ActivityType.WILL_TAKE){ - dropList.add(finalSTreasureConfig.getReward()); - } - if(changeState == ActivityType.FINISH_TAKED){ - dropList.add(finalSTreasureConfig.getTreasureReward()); - } - activityProgressInfo.setState(changeState); - activityMission.updateProgressInfo(finalSTreasureConfig.getId(),activityProgressInfo); - KtEventUtils.onKtEvent(user, ParamEventBean.UserActivityEvent,activityId,finalSTreasureConfig.getId()); - } - } - if(dropList.isEmpty()){ - MessageUtil.sendErrorResponse(session,0,rewardResponseValue,"no one can take"); - return; - } - drop = ItemUtil.drop(user, dropList, BIReason.TAKE_ACTIVITY_REWARD); - }else{ - STreasureConfig sTreasureConfig = STreasureConfig.configMap.get(missionId); - int type = sTreasureConfig.getType(); - ActivityProgressInfo activityProgressInfo = activityMission.getActivityProgressInfoMap().get(missionId); - int state = activityProgressInfo.getState(); - if(state == changeState){ - MessageUtil.sendErrorResponse(session,0,rewardResponseValue,"had taked"); - return; - } - if(type == 1){ - List dropList = new ArrayList<>(2); - if(treasureScore dropList = new ArrayList<>(10); +// boolean canTakeFinalReward = true; +// STreasureConfig finalSTreasureConfig = null; +// Map willUpdateAcP = new HashMap<>(); +// for(Map.Entry activityProgressInfoItem: activityMission.getActivityProgressInfoMap().entrySet()){ +// Integer mineMision = activityProgressInfoItem.getKey(); +// STreasureConfig sTreasureConfig = STreasureConfig.configMap.get(mineMision); +// if(sTreasureConfig.getType() == 2){ +// finalSTreasureConfig = sTreasureConfig; +// continue; +// } +// ActivityProgressInfo value = activityProgressInfoItem.getValue(); +// int stateTmp = value.getState(); +// if(changeState!=stateTmp && treasureScore>=sTreasureConfig.getPoints()){ +// STreasureConfig sTreasureConfigTmp = STreasureConfig.configMap.get(mineMision); +// if(stateTmp == ActivityType.WILL_TAKE){ +// dropList.add(sTreasureConfigTmp.getReward()); +// } +// if(changeState == ActivityType.FINISH_TAKED){ +// dropList.add(sTreasureConfigTmp.getTreasureReward()); +// } +// willUpdateAcP.put(mineMision,value); +// }else{ +// canTakeFinalReward = false; +// } +// } +// for(Map.Entry item : willUpdateAcP.entrySet()){ +// ActivityProgressInfo value = item.getValue(); +// value.setState(changeState); +// activityMission.updateProgressInfo(item.getKey(),value); +// KtEventUtils.onKtEvent(user, ParamEventBean.UserActivityEvent,activityId,item.getKey()); +// } +// if(canTakeFinalReward && finalSTreasureConfig!=null){ +// ActivityProgressInfo activityProgressInfo = activityMission.getActivityProgressInfoMap().get(finalSTreasureConfig.getId()); +// int stateTmp = activityProgressInfo.getState(); +// if(changeState!=stateTmp){ +// if(stateTmp == ActivityType.WILL_TAKE){ +// dropList.add(finalSTreasureConfig.getReward()); +// } +// if(changeState == ActivityType.FINISH_TAKED){ +// dropList.add(finalSTreasureConfig.getTreasureReward()); +// } +// activityProgressInfo.setState(changeState); +// activityMission.updateProgressInfo(missionId,activityProgressInfo); +// KtEventUtils.onKtEvent(user, ParamEventBean.UserActivityEvent,activityId,finalSTreasureConfig.getId()); +// } +// } +// if(dropList.isEmpty()){ +// MessageUtil.sendErrorResponse(session,0,rewardResponseValue,"no one can take"); +// return; +// } +// drop = ItemUtil.drop(user, dropList, BIReason.TAKE_ACTIVITY_REWARD); +// }else{ +// STreasureConfig sTreasureConfig = STreasureConfig.configMap.get(missionId); +// int type = sTreasureConfig.getType(); +// ActivityProgressInfo activityProgressInfo = activityMission.getActivityProgressInfoMap().get(missionId); +// int state = activityProgressInfo.getState(); +// if(state == changeState){ +// MessageUtil.sendErrorResponse(session,0,rewardResponseValue,"had taked"); +// return; +// } +// if(type == 1){ +// List dropList = new ArrayList<>(2); +// if(treasureScore 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; - } - updateProgress(activityType,activityMissionMap.get(activityId),count); - if(fBuilder!=null){ - long createTime = user.getPlayerInfoManager().getCreateTime(); - 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()){ - Integer missionId = missionProgress.getKey(); - ActivityProgressInfo activityProgressInfo = missionProgress.getValue(); - missionInfos.add(CommonProto.ActivityInfo.MissionInfo.newBuilder().setMissionId(missionId).setProgress(activityProgressInfo.getProgrss()).setState(activityProgressInfo.getState()).build()); - } - fBuilder.addActivityInfo(CommonProto.ActivityInfo.newBuilder().setActivityId(activityId).addAllMission(missionInfos).setStartTime(startTime).setEndTime(endTime).setReallyOpen(activityMission.getOpenType()).build()); - } - } - } - private void updateProgress(int activityType,ActivityMission activityMission,int count){ - Map activityProgressInfoMap = activityMission.getActivityProgressInfoMap(); - int progress; - switch (activityType){ - default: - for (Map.Entry item : activityProgressInfoMap.entrySet()) { - ActivityProgressInfo activityProgressInfo = item.getValue(); - progress = item.getValue().getProgrss() + count; - activityProgressInfo.setProgrss(progress); - activityMission.updateProgressInfo(item.getKey(), activityProgressInfo); - } - break; - } + ActivityTypeEnum.getActicityType(activityType,user.getId()).update(user,count,fBuilder); +// 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; +// } +// updateProgress(activityType,activityMissionMap.get(activityId),count); +// if(fBuilder!=null){ +// long createTime = user.getPlayerInfoManager().getCreateTime(); +// 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()){ +// Integer missionId = missionProgress.getKey(); +// ActivityProgressInfo activityProgressInfo = missionProgress.getValue(); +// missionInfos.add(CommonProto.ActivityInfo.MissionInfo.newBuilder().setMissionId(missionId).setProgress(activityProgressInfo.getProgrss()).setState(activityProgressInfo.getState()).build()); +// } +// fBuilder.addActivityInfo(CommonProto.ActivityInfo.newBuilder().setActivityId(activityId).addAllMission(missionInfos).setStartTime(startTime).setEndTime(endTime).setReallyOpen(activityMission.getOpenType()).build()); +// } +// } } +// +// private void updateProgress(int activityType,ActivityMission activityMission,int count){ +// Map activityProgressInfoMap = activityMission.getActivityProgressInfoMap(); +// int progress; +// switch (activityType){ +// default: +// for (Map.Entry item : activityProgressInfoMap.entrySet()) { +// ActivityProgressInfo activityProgressInfo = item.getValue(); +// progress = item.getValue().getProgrss() + count; +// activityProgressInfo.setProgrss(progress); +// activityMission.updateProgressInfo(item.getKey(), activityProgressInfo); +// } +// break; +// } +// } public void checkActivityIsFinish(User user){ ActivityManager activityManager = user.getActivityManager(); 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 ffb9a1cb5..732d54602 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 @@ -24,6 +24,7 @@ public interface ActivityType { int GrowthFund =6; //成长基金 int BLESSACTIVITY = 7; int TREASURE =8; //孙龙的宝藏 - + int LUCKYCAT=9;//招財貓 int SERVERHAPPY =10; //七日狂欢 + } 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 new file mode 100644 index 000000000..2e7f81a0f --- /dev/null +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/ActivityTypeEnum.java @@ -0,0 +1,56 @@ +package com.ljsd.jieling.logic.activity; + +import java.util.function.BiFunction; + +public enum ActivityTypeEnum { + + ONLINEREWARD(ActivityType.OnlineReward, OnlineRewardActivity::new), + SEVENLOGIN(ActivityType.SevenLogin, SevenLoginActivity::new), + CHAPTERREWARD(ActivityType.ChapterReward, ChapterRewardActivity::new), + FIRSTRECHARGE(ActivityType.FirstRecharge, FirstRechargeActivity::new), + RECHARGETOTAL(ActivityType.RechargeTotal, RechargeTotalActivity::new), + GROWTHFUND(ActivityType.GrowthFund, GrowthFundActivity::new), + BLESSACTIVITY(ActivityType.BLESSACTIVITY, TreasureActivity::new), + TREASUREACTIVITY(ActivityType.TREASURE, TreasureActivity::new), + LUCKYCAT(ActivityType.LUCKYCAT, LuckyCatActivity::new); + private int type; + private BiFunction toActivityFunction; + + ActivityTypeEnum(int type, BiFunction toActivityFunction) { + this.type = type; + this.toActivityFunction = toActivityFunction; + } + + public AbstractActivity toActivity(int uid) { + return toActivityFunction.apply(uid, getType()); + } + + public static AbstractActivity getActicityType(int activityType, int uid) { + switch (activityType) { + case ActivityType.OnlineReward: + return ONLINEREWARD.toActivity(uid); + case ActivityType.SevenLogin: + return SEVENLOGIN.toActivity(uid); + case ActivityType.ChapterReward: + return CHAPTERREWARD.toActivity(uid); + case ActivityType.FirstRecharge: + return FIRSTRECHARGE.toActivity(uid); + case ActivityType.RechargeTotal: + return RECHARGETOTAL.toActivity(uid); + case ActivityType.GrowthFund: + return GROWTHFUND.toActivity(uid); + case ActivityType.BLESSACTIVITY: + return BLESSACTIVITY.toActivity(uid); + case ActivityType.TREASURE: + return TREASUREACTIVITY.toActivity(uid); + case ActivityType.LUCKYCAT: + return LUCKYCAT.toActivity(uid); + default: + return null; + } + } + + public int getType() { + return type; + } +} diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/BlessActivity.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/BlessActivity.java new file mode 100644 index 000000000..408c62fcf --- /dev/null +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/BlessActivity.java @@ -0,0 +1,10 @@ +package com.ljsd.jieling.logic.activity; + + +public class BlessActivity extends AbstractActivity { + + public BlessActivity(int uid, int type) { + super(uid, type); + } + +} diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/ChapterRewardActivity.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/ChapterRewardActivity.java new file mode 100644 index 000000000..5e6505964 --- /dev/null +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/ChapterRewardActivity.java @@ -0,0 +1,29 @@ +package com.ljsd.jieling.logic.activity; + +import com.ljsd.jieling.config.SActivityRewardConfig; +import com.ljsd.jieling.globals.Global; +import com.ljsd.jieling.logic.dao.ActivityProgressInfo; +import com.ljsd.jieling.logic.dao.LevelDifficulty; +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 ChapterRewardActivity extends AbstractActivity { + + ChapterRewardActivity(int uid, int type) { + super(uid, type); + } + + @Override + boolean takeRewardsProcess(ISession session, SActivityRewardConfig sActivityRewardConfig, ActivityProgressInfo activityProgressInfo) throws Exception { + int[][] values = sActivityRewardConfig.getValues(); + User user = UserManager.getUser(uid); + LevelDifficulty levelDifficulty = user.getLevelDifficultyManager().getLevelDifficultyInfosMap().get(values[0][0]); + if (levelDifficulty == null || levelDifficulty.getState() != Global.FIGHT_CLEARANCE) { + MessageUtil.sendErrorResponse(session, 0, rewardResponseValue, "not pass"); + return false; + } + return true; + } +} diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/FirstRechargeActivity.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/FirstRechargeActivity.java new file mode 100644 index 000000000..a436dda9b --- /dev/null +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/FirstRechargeActivity.java @@ -0,0 +1,10 @@ +package com.ljsd.jieling.logic.activity; + + +public class FirstRechargeActivity extends AbstractActivity { + + FirstRechargeActivity(int uid, int type) { + super(uid, type); + } + +} diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/GrowthFundActivity.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/GrowthFundActivity.java new file mode 100644 index 000000000..78d09950e --- /dev/null +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/GrowthFundActivity.java @@ -0,0 +1,39 @@ +package com.ljsd.jieling.logic.activity; + +import com.ljsd.jieling.config.SActivityRewardConfig; +import com.ljsd.jieling.globals.Global; +import com.ljsd.jieling.logic.dao.ActivityProgressInfo; +import com.ljsd.jieling.logic.dao.LevelDifficulty; +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 GrowthFundActivity extends AbstractActivity { + + GrowthFundActivity(int uid, int type) { + super(uid, type); + } + + @Override + boolean takeRewardsProcess(ISession session, SActivityRewardConfig sActivityRewardConfig, ActivityProgressInfo activityProgressInfo) throws Exception { + int[][] values = sActivityRewardConfig.getValues(); + User user = UserManager.getUser(uid); + int type = values[0][0]; + int value = values[0][1]; + if(type == 9){ + int level = user.getPlayerInfoManager().getLevel(); + if(level luckyMisionIds = new ArrayList<>(); + SLuckyCatConfig.configMap.values().forEach(sLuckyCatConfig -> + luckyMisionIds.add(sLuckyCatConfig.getId()) + ); + mission.initOtherMission(luckyMisionIds); + user.getActivityManager().addActivity(type, mission); + } + + @Override + void updateProgress(ActivityMission activityMission, int count) { + activityMission.setValue(count); + } + + @Override + public void takeReward(ISession session, int missionId) throws Exception { + User user = UserManager.getUser(uid); + SGlobalActivity sGlobalActivity = SGlobalActivity.getsGlobalActivityMap().get(type); + if (sGlobalActivity == null || !user.getActivityManager().getActivityMissionMap().containsKey(type)) { + MessageUtil.sendErrorResponse(session, 0, rewardResponseValue, ""); + return; + } + takeLuckCatReward(session, user, missionId); + } + + private void takeLuckCatReward(ISession session, User user, int missionId) throws Exception { + + ActivityMission activityMission = user.getActivityManager().getActivityMissionMap().get(type); + //check activity + if (activityMission == null || activityMission.getActivityState() != ActivityType.OPEN_STATE || activityMission.getOpenType() == 0) { + MessageUtil.sendErrorResponse(session, 0, rewardResponseValue, "activity_close"); + return; + } + if (missionId != checkCurrencyMissionId(activityMission)) + return; + ActivityProgressInfo activityProgressInfo = activityMission.getActivityProgressInfoMap().get(missionId); + if (activityProgressInfo == null || activityProgressInfo.getState() == ActivityType.HAD_TAKED) { + MessageUtil.sendErrorResponse(session, 0, rewardResponseValue, "had taked"); + return; + } + + //check cfg + SLuckyCatConfig sLuckyRewardConfig = SLuckyCatConfig.configMap.get(missionId); + if (sLuckyRewardConfig == null || sLuckyRewardConfig.getActivityId() != type) { + MessageUtil.sendErrorResponse(session, 0, rewardResponseValue, "config null"); + } + + if (activityMission.getValue() < sLuckyRewardConfig.getRmbValue()) + return; + + if (activityProgressInfo.getProgrss() >= SLuckyCatConfig.getMiss2time(missionId)) { + MessageUtil.sendErrorResponse(session, 0, rewardResponseValue, "had taked"); + return; + } + //check cost + int[][] cost = new int[1][]; + int[] temp = new int[2]; + temp[0] = sLuckyRewardConfig.getLuckyType(); + temp[1] = sLuckyRewardConfig.getConsumeValue(); + cost[0] = temp; + boolean enough = ItemUtil.itemCost(user, cost, BIReason.LUCKYCAT_CONSUME, 1); + if (!enough) { + MessageUtil.sendErrorResponse(session, 0, rewardResponseValue, "道具不足"); + return; + } + activityProgressInfo.setProgrss(activityProgressInfo.getProgrss() + 1); + + if (activityProgressInfo.getProgrss() >= SLuckyCatConfig.getMiss2time(missionId)) { + activityProgressInfo.setState(ActivityType.HAD_TAKED); + } + //drop + int[][] reward = new int[1][]; + int[] temp2 = new int[2]; + temp2[0] = sLuckyRewardConfig.getLuckyType(); + temp2[1] = MathUtils.random(sLuckyRewardConfig.getValueDown(), sLuckyRewardConfig.getValueUp()); + reward[0] = temp2; + activityMission.updateProgressInfo(missionId, activityProgressInfo); + CommonProto.Drop.Builder drop = ItemUtil.drop(user, reward, BIReason.TAKE_ACTIVITY_REWARD); + KtEventUtils.onKtEvent(user, ParamEventBean.UserActivityEvent, type, missionId); + PlayerInfoProto.LuckCatRewardResponse build = PlayerInfoProto.LuckCatRewardResponse.newBuilder().setDrop(drop).setMissionId(missionId).build(); + MessageUtil.sendMessage(session, 1, rewardResponseValue, build, true); + } + + + private int checkCurrencyMissionId(ActivityMission activityMission) { + Map sortMap = new TreeMap<>(activityMission.getActivityProgressInfoMap()); + for (Map.Entry item : sortMap.entrySet()) { + ActivityProgressInfo activityProgressInfo = item.getValue(); + if (activityProgressInfo.getState() == ActivityType.HAD_TAKED) { + continue; + } + return item.getKey(); + } + return 0; + } + +} diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/OnlineRewardActivity.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/OnlineRewardActivity.java new file mode 100644 index 000000000..7c01936cd --- /dev/null +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/OnlineRewardActivity.java @@ -0,0 +1,36 @@ +package com.ljsd.jieling.logic.activity; + +import com.ljsd.jieling.config.SActivityRewardConfig; +import com.ljsd.jieling.logic.dao.ActivityProgressInfo; +import com.ljsd.jieling.logic.dao.PlayerManager; +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 com.ljsd.jieling.util.TimeUtils; + +class OnlineRewardActivity extends AbstractActivity { + + OnlineRewardActivity(int uid, int type) { + super(uid, type); + } + + @Override + boolean takeRewardsProcess(ISession session, SActivityRewardConfig sActivityRewardConfig, ActivityProgressInfo activityProgressInfo) throws Exception { + + int[][] values = sActivityRewardConfig.getValues(); + int missionProgress = activityProgressInfo.getProgrss(); + long now = TimeUtils.now(); + User user = UserManager.getUser(uid); + PlayerManager playerInfoManager = user.getPlayerInfoManager(); + long loginTime = playerInfoManager.getLoginTime(); + int limitTime = values[0][0]; + long remainTime = now - loginTime - limitTime * TimeUtils.ONE_MINUTE + missionProgress * TimeUtils.ONE_SECOND; + if (now - loginTime - limitTime * TimeUtils.ONE_MINUTE + missionProgress * TimeUtils.ONE_SECOND < 0) { + LOGGER.error("the uid={} remain time is={}ms,the require time is={}ms", uid, remainTime, limitTime * TimeUtils.ONE_MINUTE); + MessageUtil.sendErrorResponse(session, 0, rewardResponseValue, "time not"); + return false; + } + return true; + } +} diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/RechargeTotalActivity.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/RechargeTotalActivity.java new file mode 100644 index 000000000..149bc98ea --- /dev/null +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/RechargeTotalActivity.java @@ -0,0 +1,33 @@ +package com.ljsd.jieling.logic.activity; + +import com.ljsd.jieling.config.SActivityRewardConfig; +import com.ljsd.jieling.logic.dao.ActivityProgressInfo; +import com.ljsd.jieling.logic.dao.RechargeInfo; +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 com.ljsd.jieling.util.TimeUtils; + +class RechargeTotalActivity extends AbstractActivity { + + RechargeTotalActivity(int uid, int type) { + super(uid, type); + } + + @Override + boolean takeRewardsProcess(ISession session, SActivityRewardConfig sActivityRewardConfig, ActivityProgressInfo activityProgressInfo) throws Exception { + int[][] values = sActivityRewardConfig.getValues(); + int missionProgress = activityProgressInfo.getProgrss(); + long now = TimeUtils.now(); + User user = UserManager.getUser(uid); + RechargeInfo rechargeInfo = user.getPlayerInfoManager().getRechargeInfo(); + int days = TimeUtils.differentDays(rechargeInfo.getCreateTime(), now) + 1; + if (missionProgress < values[0][0] || days < values[0][1]) { + LOGGER.error("the uid={} the misionId={},the missionProgress={},the require is={} ", uid, sActivityRewardConfig.getId(), missionProgress, values[0][0]); + MessageUtil.sendErrorResponse(session, 0, rewardResponseValue, "not finish"); + return false; + } + return true; + } +} diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/SevenLoginActivity.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/SevenLoginActivity.java new file mode 100644 index 000000000..31eb642e6 --- /dev/null +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/SevenLoginActivity.java @@ -0,0 +1,10 @@ +package com.ljsd.jieling.logic.activity; + + +class SevenLoginActivity extends AbstractActivity { + + SevenLoginActivity(int uid, int type) { + super(uid, type); + } + +} diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/TreasureActivity.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/TreasureActivity.java new file mode 100644 index 000000000..91f9f829d --- /dev/null +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/TreasureActivity.java @@ -0,0 +1,141 @@ +package com.ljsd.jieling.logic.activity; + +import com.ljsd.jieling.config.SGlobalActivity; +import com.ljsd.jieling.config.STreasureConfig; +import com.ljsd.jieling.globals.BIReason; +import com.ljsd.jieling.ktbeans.KtEventUtils; +import com.ljsd.jieling.ktbeans.parmsBean.ParamEventBean; +import com.ljsd.jieling.logic.dao.ActivityMission; +import com.ljsd.jieling.logic.dao.ActivityProgressInfo; +import com.ljsd.jieling.logic.dao.PlayerManager; +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.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 java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +public class TreasureActivity extends AbstractActivity { + + TreasureActivity(int uid, int type) { + super(uid, type); + } + + + @Override + public void takeReward(ISession session, int missionId) throws Exception { + User user = UserManager.getUser(uid); + SGlobalActivity sGlobalActivity = SGlobalActivity.getsGlobalActivityMap().get(type); + if (sGlobalActivity == null || !user.getActivityManager().getActivityMissionMap().containsKey(type)) { + MessageUtil.sendErrorResponse(session, 0, rewardResponseValue, ""); + return; + } + takeTreasureReward(session, user, type, missionId); + } + + private void takeTreasureReward(ISession session, User user, int activityId, int missionId) throws Exception { + int rewardResponseValue = MessageTypeProto.MessageType.TAKE_ACTIVITY_REWARD_RESPONSE_VALUE; + ActivityMission activityMission = user.getActivityManager().getActivityMissionMap().get(activityId); + PlayerManager playerInfoManager = user.getPlayerInfoManager(); + int changeState = ActivityType.HAD_TAKED; + int hadBuyTreasure = playerInfoManager.getHadBuyTreasure(); + if (hadBuyTreasure == 1) { + changeState = ActivityType.FINISH_TAKED; + } + int treasureScore = playerInfoManager.getTreasureScore(); + CommonProto.Drop.Builder drop = null; + if (missionId == -1) { + List dropList = new ArrayList<>(10); + boolean canTakeFinalReward = true; + STreasureConfig finalSTreasureConfig = null; + Map willUpdateAcP = new HashMap<>(); + for (Map.Entry activityProgressInfoItem : activityMission.getActivityProgressInfoMap().entrySet()) { + Integer mineMision = activityProgressInfoItem.getKey(); + STreasureConfig sTreasureConfig = STreasureConfig.configMap.get(mineMision); + if (sTreasureConfig.getType() == 2) { + finalSTreasureConfig = sTreasureConfig; + continue; + } + ActivityProgressInfo value = activityProgressInfoItem.getValue(); + int stateTmp = value.getState(); + if (treasureScore >= sTreasureConfig.getPoints()) { + if (changeState != stateTmp) { + STreasureConfig sTreasureConfigTmp = STreasureConfig.configMap.get(mineMision); + if (stateTmp == ActivityType.WILL_TAKE) { + dropList.add(sTreasureConfigTmp.getReward()); + } + if (changeState == ActivityType.FINISH_TAKED) { + dropList.add(sTreasureConfigTmp.getTreasureReward()); + } + willUpdateAcP.put(mineMision, value); + } + } else { + canTakeFinalReward = false; + } + } + for (Map.Entry item : willUpdateAcP.entrySet()) { + ActivityProgressInfo value = item.getValue(); + value.setState(changeState); + activityMission.updateProgressInfo(item.getKey(), value); + KtEventUtils.onKtEvent(user, ParamEventBean.UserActivityEvent, activityId, item.getKey()); + } + if (canTakeFinalReward && finalSTreasureConfig != null) { + ActivityProgressInfo activityProgressInfo = activityMission.getActivityProgressInfoMap().get(finalSTreasureConfig.getId()); + int stateTmp = activityProgressInfo.getState(); + if (changeState != stateTmp) { + if (stateTmp == ActivityType.WILL_TAKE) { + dropList.add(finalSTreasureConfig.getReward()); + } + if (changeState == ActivityType.FINISH_TAKED) { + dropList.add(finalSTreasureConfig.getTreasureReward()); + } + activityProgressInfo.setState(changeState); + activityMission.updateProgressInfo(finalSTreasureConfig.getId(), activityProgressInfo); + KtEventUtils.onKtEvent(user, ParamEventBean.UserActivityEvent, activityId, finalSTreasureConfig.getId()); + } + } + if (dropList.isEmpty()) { + MessageUtil.sendErrorResponse(session, 0, rewardResponseValue, "no one can take"); + return; + } + drop = ItemUtil.drop(user, dropList, BIReason.TAKE_ACTIVITY_REWARD); + } else { + STreasureConfig sTreasureConfig = STreasureConfig.configMap.get(missionId); + int type = sTreasureConfig.getType(); + ActivityProgressInfo activityProgressInfo = activityMission.getActivityProgressInfoMap().get(missionId); + int state = activityProgressInfo.getState(); + if (state == changeState) { + MessageUtil.sendErrorResponse(session, 0, rewardResponseValue, "had taked"); + return; + } + if (type == 1) { + List dropList = new ArrayList<>(2); + if (treasureScore < sTreasureConfig.getPoints()) { + MessageUtil.sendErrorResponse(session, 0, rewardResponseValue, "not finish"); + return; + } + if (state == ActivityType.WILL_TAKE) { + dropList.add(sTreasureConfig.getReward()); + } + if (changeState == ActivityType.FINISH_TAKED) { + dropList.add(sTreasureConfig.getTreasureReward()); + } + drop = ItemUtil.drop(user, dropList, BIReason.TAKE_ACTIVITY_REWARD); + activityProgressInfo.setState(changeState); + activityMission.updateProgressInfo(missionId, activityProgressInfo); + KtEventUtils.onKtEvent(user, ParamEventBean.UserActivityEvent, activityId, missionId); + } + } + + 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/dao/ActivityMission.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/ActivityMission.java index efc319f42..4667f4748 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 @@ -16,6 +16,7 @@ public class ActivityMission extends MongoBase { private int activityState; private int openType; private Map activityProgressInfoMap = new HashMap<>(); + private int value; public ActivityMission(){} @@ -76,4 +77,13 @@ public class ActivityMission extends MongoBase { public int getOpenType() { return openType; } + + public int getValue() { + return value; + } + + public void setValue(int value) { + updateString("value" ,value); + this.value = value; + } } 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 2380a75cb..f91d390d6 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 { int saveAmt = rechargeInfo.getSaveAmt(); rechargeInfo.setSaveAmt(price+saveAmt); ActivityLogic.getInstance().updateActivityMissionProgress(user, ActivityType.RechargeTotal,rechargeInfo.getSaveAmt(),null); + ActivityLogic.getInstance().updateActivityMissionProgress(user, ActivityType.LUCKYCAT,rechargeInfo.getSaveAmt(),null); } buyGoodsTimes.put(goodsId,buyCount);