diff --git a/serverlogic/src/main/java/com/ljsd/jieling/config/STreasureTaskConfig.java b/serverlogic/src/main/java/com/ljsd/jieling/config/STreasureTaskConfig.java index 1f414ac8b..866e7a17a 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/config/STreasureTaskConfig.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/config/STreasureTaskConfig.java @@ -51,7 +51,7 @@ public class STreasureTaskConfig implements BaseConfig { treasureTaskConfigByActivityMap.get(activityId).add(sTreasureTaskConfig); sTreasureTaskConfigListByTypeMapTmp.get(sTreasureTaskConfig.getTaskType()).add(sTreasureTaskConfig); if(sTreasureTaskConfig.getTaskType() == MissionType.SENVER_HAPPY.getMissionTypeValue()){ - + sTreasureSevenTaskConfigByActivityMapTmp.put(sTreasureTaskConfig.getActivityId(),sTreasureTaskConfig); } } sTreasureTaskConfigListByActivityMap = treasureTaskConfigByActivityMap; diff --git a/serverlogic/src/main/java/com/ljsd/jieling/core/HandlerLogicThread.java b/serverlogic/src/main/java/com/ljsd/jieling/core/HandlerLogicThread.java index ee4af1b6a..0f8df0b58 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/core/HandlerLogicThread.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/core/HandlerLogicThread.java @@ -1,6 +1,8 @@ package com.ljsd.jieling.core; import com.ljsd.GameApplication; +import com.ljsd.jieling.config.SChallengeConfig; +import com.ljsd.jieling.config.SChallengeMapConfig; import com.ljsd.jieling.config.SGlobalSystemConfig; import com.ljsd.jieling.db.mongo.MongoUtil; import com.ljsd.jieling.globals.Global; @@ -38,6 +40,15 @@ public class HandlerLogicThread extends Thread{ whiteMsg.add(MessageTypeProto.MessageType.FIGHT_END_REQUEST_VALUE); whiteMsg.add(MessageTypeProto.MessageType.MAP_OUT_REQUEST_VALUE); + whiteMsg.add(MessageTypeProto.MessageType.MAP_TOWER_CALL_CHIEF_REQUEST_VALUE); + whiteMsg.add(MessageTypeProto.MessageType.MAP_TOWER_USEBOMB_REQUEST_VALUE); + whiteMsg.add(MessageTypeProto.MessageType.MAP_TOWER_USEBUFF_REQUEST_VALUE); + whiteMsg.add(MessageTypeProto.MessageType.ENDLESS_MAP_RESET_REQUEST_VALUE); + whiteMsg.add(MessageTypeProto.MessageType.ENDLESS_MAP_SIGN_REQUEST_VALUE); + whiteMsg.add(MessageTypeProto.MessageType.ENDLESS_EXECUTION_REFRESH_REQUEST_VALUE); + whiteMsg.add(MessageTypeProto.MessageType.ENDLESS_OUT_CONSUME_REQUEST_VALUE); + whiteMsg.add(MessageTypeProto.MessageType.ENDLESS_MAP_HERO_INFO_REQUEST_VALUE); + whiteMsg.add(MessageTypeProto.MessageType.LOGIN_REQUEST_VALUE); whiteMsg.add(MessageTypeProto.MessageType.GET_PLAYERINFO_REQUEST_VALUE); whiteMsg.add(MessageTypeProto.MessageType.GET_ITEMINFO_REQUEST_VALUE); @@ -58,6 +69,9 @@ public class HandlerLogicThread extends Thread{ whiteMsg.add(MessageTypeProto.MessageType.GET_RINGFIRE_INFO_REQUEST_VALUE); whiteMsg.add(MessageTypeProto.MessageType.BUY_STORE_ITEM_REQUEST_VALUE); + + whiteMsg.add(MessageTypeProto.MessageType.GET_MISSION_REQUEST_VALUE); + whiteMsg.add(MessageTypeProto.MessageType.REFRESH_ITEM_NUM_REQUEST_VALUE); //日后删除 whiteMsg.add(MessageTypeProto.MessageType.GET_CHAT_MESSAGE_REQUEST_VALUE); @@ -65,6 +79,7 @@ public class HandlerLogicThread extends Thread{ + } public ConcurrentLinkedQueue handlerLinkedQueue = new ConcurrentLinkedQueue(); @@ -101,11 +116,11 @@ public class HandlerLogicThread extends Thread{ MessageUtil.sendErrorResponse(session,0,msgId+1,"funciton not"); return; } - /* b = checkIsPermit(msgId, session); + b = checkIsPermit(msgId, session); if(!b){ MessageUtil.sendErrorResponse(session,0,msgId+1,"在地图探索中,不可以操作"); return; - }*/ + } } long curTimeMillis = System.currentTimeMillis(); if(msgId != MessageTypeProto.MessageType.GET_CHAT_MESSAGE_REQUEST_VALUE){ @@ -133,6 +148,13 @@ public class HandlerLogicThread extends Thread{ int uid = session.getUid(); User user = UserManager.getUser(uid); int curMapId = user.getMapManager().getCurMapId(); + + if(curMapId!=0 && msgId == MessageTypeProto.MessageType.TEAM_POS_SAVE_REQUEST_VALUE){ + SChallengeConfig sChallengeConfig = SChallengeConfig.sChallengeConfigs.get(curMapId); + if(sChallengeConfig.getType()==4){ + return true; + } + } if(curMapId!=0 && !whiteMsg.contains(msgId)){ return false; } 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 d4da74132..054138946 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 @@ -158,6 +158,12 @@ public abstract class AbstractActivity implements IActivity, IEventHandler { } + @Override + public void onActivityEndOnMySelf(User user) throws Exception { + + } + + public List getAllMissInfo(ActivityMission activityMission) { return getAllMissInfo(activityMission, null); } 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 c1348b198..1e0b24ecd 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 @@ -70,6 +70,9 @@ public class ActivityLogic { Map sGlobalActivityMap = SGlobalActivity.getsGlobalActivityMap(); for (SGlobalActivity sGlobalActivity : sGlobalActivityMap.values()) { int time = sGlobalActivity.getTime(); + if(ActivityTypeEnum.getActicityCacheSize()==0){//init cache + ActivityTypeEnum.getActicityType(sGlobalActivity.getId()); + } if (time == 2) { continue; } @@ -144,6 +147,7 @@ public class ActivityLogic { ActivityMission activityMission = activityMissionMap.get(activityId); if (activityMission != null) { activityManager.removeActivity(activityId); + ActivityTypeEnum.getActicityType(sGlobalActivity.getId()).onActivityEndOnMySelf(user); LOGGER.info("the uid={},remove the activity id ={}", user.getId(), activityId); if (builder != null) { builder.addCloseActivityId(activityId); @@ -162,6 +166,7 @@ public class ActivityLogic { ActivityMission activityMission = activityMissionMap.get(activityId); if (activityMission != null) { activityManager.removeActivity(activityId); + ActivityTypeEnum.getActicityType(sGlobalActivity.getId()).onActivityEndOnMySelf(user); LOGGER.info("the uid={},remove the activity id ={}", user.getId(), activityId); if (builder != null) { builder.addCloseActivityId(activityId); @@ -937,7 +942,7 @@ public class ActivityLogic { int start = 0; int maxSize = SGameSetting.getGameSetting().getShowRank(); - List expertInfos = new ArrayList<>(maxSize); + List expertInfos = new LinkedList<>(); Set> rankInfo = RedisUtil.getInstence().getZsetreverseRangeWithScores(RedisKey.FORCE_RANK, Integer.toString(acitvityId), 0, maxSize - 1); for (ZSetOperations.TypedTuple item : rankInfo) { String value = item.getValue(); @@ -949,17 +954,21 @@ public class ActivityLogic { CommonProto.ExpertInfo personInfoBuild = CommonProto.ExpertInfo.newBuilder() .setName(playerInfoManager.getNickName()) .setScore(score) + .setLevel(playerInfoManager.getLevel()) + .setHeadFrame(playerInfoManager.getHeadFrame()) + .setHead(0) .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); - } + //策划要全部数据 +// 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(); @@ -967,10 +976,10 @@ public class ActivityLogic { PlayerInfoProto.GetExpertInfoResponse buildResponse = PlayerInfoProto.GetExpertInfoResponse.newBuilder() .setMyRank(myRank) - .setMyScore(score) .addAllExpert(expertInfos) + .setMyScore(score) .build(); - MessageUtil.sendMessage(session, 1, MessageTypeProto.MessageType.GETF_EXPERT_RANK_INFO_REQUEST_VALUE, buildResponse, true); + MessageUtil.sendMessage(session, 1, MessageTypeProto.MessageType.GETF_EXPERT_RANK_INFO_RESPONSE_VALUE, buildResponse, true); } 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 aacb90ff4..ec14c8b86 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 @@ -41,7 +41,6 @@ public enum ActivityTypeEnum { } public AbstractActivity toActivity(int id) { - if (acticityCache.containsKey(id)) { return acticityCache.get(id); } @@ -90,6 +89,10 @@ public enum ActivityTypeEnum { // } } + public static Integer getActicityCacheSize() { + return acticityCache.size(); + } + public int getType() { return type; } diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/DefaultEmptyActivity.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/DefaultEmptyActivity.java index 5cf53aa07..7fb6a73d6 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/DefaultEmptyActivity.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/DefaultEmptyActivity.java @@ -1,9 +1,18 @@ package com.ljsd.jieling.logic.activity; +import com.ljsd.jieling.config.SErrorCodeEerverConfig; import com.ljsd.jieling.config.SGlobalActivity; +import com.ljsd.jieling.config.SSevenDaysScore; +import com.ljsd.jieling.config.STreasureTaskConfig; +import com.ljsd.jieling.core.GlobalsDef; +import com.ljsd.jieling.globals.Global; import com.ljsd.jieling.logic.dao.ActivityMission; import com.ljsd.jieling.logic.dao.root.User; +import com.ljsd.jieling.logic.mail.MailLogic; import com.ljsd.jieling.logic.mission.GameEvent; +import com.ljsd.jieling.logic.mission.main.TreasureMissionType; +import com.ljsd.jieling.util.ItemUtil; +import com.ljsd.jieling.util.MessageUtil; import java.util.ArrayList; @@ -25,4 +34,25 @@ public class DefaultEmptyActivity extends AbstractActivity{ user.getActivityManager().setSenvenTime(endTime); } } + + @Override + public void onActivityEndOnMySelf(User user) throws Exception { + SGlobalActivity sGlobalActivity = SGlobalActivity.getsGlobalActivityMap().get(id); + if(sGlobalActivity.getType() == ActivityType.SERVERHAPPY){ + STreasureTaskConfig sTreasureTaskConfig = STreasureTaskConfig.sTreasureSevenTaskConfigByActivityMap.get(id); + TreasureMissionType sevenHappyMissionType = user.getUserMissionManager().getSevenHappyMissionType(); + if(!sevenHappyMissionType.getRewardedMissionIds().get(sTreasureTaskConfig.getId())){ + int senvenScores = user.getUserMissionManager().getSevenHappyCumulationData().senvenScores; + sevenHappyMissionType.getDoingMissionIds().remove(sTreasureTaskConfig.getId()); + sevenHappyMissionType.getFinishMissionIds().remove(sTreasureTaskConfig.getId()); + sevenHappyMissionType.getRewardedMissionIds().set(sTreasureTaskConfig.getId()); + user.getUserMissionManager().setSevenHappyMissionType(sevenHappyMissionType); + SSevenDaysScore sSevenDaysScore = SSevenDaysScore.SSevenDaysScoreByActivityIdAndScoreMap.get(id).get(senvenScores); + String mailReward = ItemUtil.getMailReward(sSevenDaysScore.getReward()); + String title=SErrorCodeEerverConfig.getI18NMessage("opencarnival_activity_"+id+"_title"); + String content = SErrorCodeEerverConfig.getI18NMessage("opencarnival_activity_"+id+"_txt"); + MailLogic.getInstance().sendMail(user.getId(),title,content,mailReward,(int)(System.currentTimeMillis()/1000), Global.MAIL_EFFECTIVE_TIME); + } + } + } } 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 cd02330de..72bbbbbdc 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 @@ -42,6 +42,8 @@ public interface IActivity { */ void onActivityEnd() throws Exception; + public void onActivityEndOnMySelf(User user) throws Exception; + List getAllMissInfo(ActivityMission activityMission, Set filter); } 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 5908be916..c5cce8139 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 @@ -16,10 +16,13 @@ class RechargeSumDayActivity extends AbstractActivity { } @Override - public void onResume(User user) throws Exception { + public void onResume(User user) { ActivityManager activityManager = user.getActivityManager(); ActivityMission activityMission = activityManager.getActivityMissionMap().get(id); - activityMission.setValue(0); + if (activityMission.getValue() == SActivityRewardConfig.getsActivityRewardConfigByActivityId(id).size()) { + activityMission.initMissionInfo(id); + return; + } int missionId = SActivityRewardConfig.getRechargeDaySum().get(activityMission.getValue() + 1); if (user.getPlayerInfoManager().getRechargedaily() > SActivityRewardConfig.getsActivityRewardConfigByMissionId(missionId).getValues()[0][0]) { activityMission.setValue(activityMission.getValue() + 1); @@ -51,7 +54,7 @@ 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()+1; + int value = user.getActivityManager().getActivityMissionMap().get(sActivityRewardConfig.getActivityId()).getValue() + 1; if (value < values[0][1]) { MessageUtil.sendErrorResponse(session, 0, rewardResponseValue, "value illegality"); return false; 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 0c17471a5..97027d3b8 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 @@ -405,8 +405,12 @@ public class PlayerLogic { return; } STreasureTaskConfig sTreasureTaskConfig = STreasureTaskConfig.sTreasureSevenTaskConfigByActivityMap.get(treasureActivityId); - int senvenScores = user.getUserMissionManager().getSevenHappyCumulationData().senvenScores; TreasureMissionType sevenHappyMissionType = user.getUserMissionManager().getSevenHappyMissionType(); + if(sevenHappyMissionType.getRewardedMissionIds().get(sTreasureTaskConfig.getId())){ + MessageUtil.sendErrorResponse(iSession,0,msgId,"奖励已领取"); + return; + } + int senvenScores = user.getUserMissionManager().getSevenHappyCumulationData().senvenScores; sevenHappyMissionType.getDoingMissionIds().remove(sTreasureTaskConfig.getId()); sevenHappyMissionType.getFinishMissionIds().remove(sTreasureTaskConfig.getId()); sevenHappyMissionType.getRewardedMissionIds().set(sTreasureTaskConfig.getId());