diff --git a/serverlogic/src/main/java/com/ljsd/jieling/handler/GetAllMailHandler.java b/serverlogic/src/main/java/com/ljsd/jieling/handler/GetAllMailHandler.java index b9c9277fb..9a8ad6045 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/handler/GetAllMailHandler.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/handler/GetAllMailHandler.java @@ -32,9 +32,6 @@ public class GetAllMailHandler extends BaseHandler { LOGGER.info("processMessage->uid={},token={},msgId={},msgIndex={}", userId, token,msgId,msgIndex); List allUserMail = MailLogic.getInstance().getAllUserMail(userId); - if(allUserMail.size()>10){ - allUserMail = allUserMail.subList(0, 10); - } PlayerInfoProto.GetAllMailInfoResponse getPlayerInfoResponse = PlayerInfoProto.GetAllMailInfoResponse.newBuilder() .addAllMialList(allUserMail) .build(); 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 610843a25..e684344cd 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/handler/GetPlayerInfoHandler.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/handler/GetPlayerInfoHandler.java @@ -97,6 +97,7 @@ public class GetPlayerInfoHandler extends BaseHandler{ .setSuddenlyBossInfo(suddenlyBossInfo) .setVipBaseInfo(vipInfoProto) .setUserCreateTime((int)(playerInfoManager.getCreateTime()/1000)) + .addAllRedType(playerInfoManager.getReds()) .build(); try { MessageUtil.sendMessage(iSession, 1, MessageTypeProto.MessageType.GET_PLAYERINFO_RESPONSE_VALUE, getPlayerInfoResponse, true); 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 5403a2331..4d96f35dd 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 @@ -509,7 +509,8 @@ public class ArenaLogic { .setAttackTime(arenaRecord.getCreateTime()) .build()); } - + User user = UserManager.getUser(uid); + user.getPlayerInfoManager().removeRed(GlobalsDef.SHARE_BOSS_RED_TYPE); ArenaInfoProto.ArenaRecordInfoResponse build = ArenaInfoProto.ArenaRecordInfoResponse.newBuilder().addAllArenaRecordInfo(arenaRecordInfos).build(); MessageUtil.sendMessage(iSession,1, MessageTypeProto.MessageType.ARENA_DEFENSE_RESPONSE_VALUE,build,true); return; 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 f6ff5fbdf..657e268a0 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 @@ -12,7 +12,9 @@ import com.ljsd.jieling.logic.mission.GameEvent; import com.ljsd.jieling.util.MathUtils; import java.util.HashMap; +import java.util.HashSet; import java.util.Map; +import java.util.Set; public class PlayerManager extends MongoBase { @@ -59,6 +61,8 @@ public class PlayerManager extends MongoBase { private Map vipInfo = new HashMap<>(); + private Set reds = new HashSet<>(2); + private RechargeInfo rechargeInfo; public PlayerManager(){ @@ -328,4 +332,20 @@ public class PlayerManager extends MongoBase { this.rechargeInfo = rechargeInfo; updateString("rechargeInfo", rechargeInfo); } + + public Set getReds() { + return reds; + } + + public void setReds(Set reds) { + updateString("reds", reds); + this.reds = reds; + } + + public void removeRed(int redType){ + boolean remove = reds.remove(redType); + if(remove){ + updateString("reds", reds); + } + } } diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/UserMissionManager.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/UserMissionManager.java index 402b586bf..4b084e0ba 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/UserMissionManager.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/UserMissionManager.java @@ -4,15 +4,13 @@ import com.ljsd.common.mogodb.MongoBase; import com.ljsd.jieling.config.SDailyTasksConfig; import com.ljsd.jieling.config.SVipLevelConfig; import com.ljsd.jieling.logic.dao.root.User; -import com.ljsd.jieling.logic.mission.GameEvent; -import com.ljsd.jieling.logic.mission.GameMisionType; -import com.ljsd.jieling.logic.mission.MissionState; -import com.ljsd.jieling.logic.mission.MissionType; +import com.ljsd.jieling.logic.mission.*; import com.ljsd.jieling.logic.mission.event.MissionEventDistributor; import com.ljsd.jieling.logic.mission.main.DailyMissionIdsType; import com.ljsd.jieling.logic.mission.main.MissionStateChangeInfo; import com.ljsd.jieling.logic.mission.main.VipMissionIdsType; +import java.util.Collections; import java.util.List; import java.util.Map; import java.util.Set; @@ -47,12 +45,20 @@ public class UserMissionManager extends MongoBase { dailyCumulationData.reset(); updateString("dailyCumulationData",dailyCumulationData); }else{ - for(Integer missionId : missionIds){ - MissionStateChangeInfo doingInfo = new MissionStateChangeInfo(missionId, - MissionState.DOING, null); - missionTypeEnumListMap.get(GameMisionType.DAILYMISSION).add(doingInfo); - } dailyMissionIdsType.getDoingMissionIds().addAll(missionIds); + for(Integer missionId : missionIds){ + SDailyTasksConfig sDailyTasksConfigById = SDailyTasksConfig.getSDailyTasksConfigById(missionId); + boolean isFinish = MissionLoigc.getDoingProgress(user, cumulationData, sDailyTasksConfigById.getType(), sDailyTasksConfigById.getValues()[0]) >= sDailyTasksConfigById.getValues()[1][0]; + MissionStateChangeInfo stateChangeInfo = new MissionStateChangeInfo(missionId, + MissionState.DOING, null); + if(isFinish){ + stateChangeInfo = new MissionStateChangeInfo(missionId, + MissionState.FINISH, null); + dailyMissionIdsType.getDoingMissionIds().remove(missionId); + dailyMissionIdsType.getFinishMissionIds().add(missionId); + } + missionTypeEnumListMap.get(GameMisionType.DAILYMISSION).add(stateChangeInfo); + } } updateString("dailyMissionIdsType",dailyMissionIdsType); break; 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 7e3fa110f..dc852d2e0 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 @@ -474,7 +474,6 @@ public class CombatLogic { public void getInvasionBoss(ISession session) throws Exception { int uid = session.getUid(); - FightInfoProto.AdventureBossInfoResponse.Builder builder = FightInfoProto.AdventureBossInfoResponse.newBuilder(); Map myHurtInfo = RedisUtil.getInstence().getMapValues(RedisKey.ADVENTRUEN_BOSS_OWN, Integer.toString(uid), String.class, Integer.class); int now = (int)(TimeUtils.now()/1000); @@ -525,6 +524,8 @@ public class CombatLogic { RedisUtil.getInstence().removeMapEntrys(RedisKey.ADVENTRUEN_BOSS_INFO,"",removeAdventureBosseInfo.toArray()); RedisUtil.getInstence().removeMapEntrys(RedisKey.ADVENTRUEN_BOSS_OWN,"",removeAdventureBosseInfo.toArray()); } + User user = UserManager.getUser(uid); + user.getPlayerInfoManager().removeRed(GlobalsDef.ARENA_CHALLENGE_TYPE); } MessageUtil.sendMessage(session,1, MessageTypeProto.MessageType.ADVENTURE_BOSSHURT_RESPONSE_VALUE,builder.build(),true); } diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/mission/main/DailyMissionIdsType.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/mission/main/DailyMissionIdsType.java index cffd57d6a..7288dfba7 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/mission/main/DailyMissionIdsType.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/mission/main/DailyMissionIdsType.java @@ -27,11 +27,16 @@ public class DailyMissionIdsType extends AbstractMissionType{ @Override public void calCumulationDataResult(User user, CumulationData.Result result, List missionStateChangeInfos, CumulationData cumulationData) { - Set doingMissionIds = getDoingMissionIds(); + List sTaskConfigs = SDailyTasksConfig.getsTaskConfigByTypeMap(result.subType.getMissionTypeValue()); if (sTaskConfigs == null) { return; } + checkAndUpdateMision(user,sTaskConfigs,missionStateChangeInfos,cumulationData); + } + + public void checkAndUpdateMision(User user, List sTaskConfigs, List missionStateChangeInfos,CumulationData cumulationData){ + Set doingMissionIds = getDoingMissionIds(); for (SDailyTasksConfig sTaskConfig : sTaskConfigs) { int missionId = sTaskConfig.getId(); if (!doingMissionIds.contains(missionId)) { diff --git a/serverlogic/src/main/java/com/ljsd/jieling/util/MessageUtil.java b/serverlogic/src/main/java/com/ljsd/jieling/util/MessageUtil.java index d637c26e1..6a48408cd 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/util/MessageUtil.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/util/MessageUtil.java @@ -2,8 +2,11 @@ package com.ljsd.jieling.util; import com.google.protobuf.GeneratedMessage; import com.googlecode.protobuf.format.JsonFormat; +import com.ljsd.jieling.core.GlobalsDef; import com.ljsd.jieling.db.mongo.MongoUtil; import com.ljsd.jieling.logic.OnlineUserManager; +import com.ljsd.jieling.logic.dao.UserManager; +import com.ljsd.jieling.logic.dao.root.User; import com.ljsd.jieling.logic.room.Room; import com.ljsd.jieling.netty.PackageConstant; import com.ljsd.jieling.netty.cocdex.Tea; @@ -14,6 +17,7 @@ import org.slf4j.LoggerFactory; import java.nio.ByteBuffer; import java.util.List; +import java.util.Set; public class MessageUtil { @@ -25,7 +29,7 @@ public class MessageUtil { backMessage = new byte[0]; } else { backMessage = generatedMessage.toByteArray(); - // LOGGER.info(JsonFormat.printToString(generatedMessage)); + LOGGER.info(JsonFormat.printToString(generatedMessage)); } int length = PackageConstant.UID_FIELD_LEN + PackageConstant.TOKEN_LEN @@ -62,11 +66,19 @@ public class MessageUtil { } - public static void sendRedIndication(int sendUid,int redType) { + public static void sendRedIndication(int sendUid,int redType) throws Exception { ISession session = OnlineUserManager.sessionMap.get(sendUid); if(session!=null){ PlayerInfoProto.RedPointInfo redPointInfo = PlayerInfoProto.RedPointInfo.newBuilder().setType(redType).build(); MessageUtil.sendIndicationMessage(session,1,MessageTypeProto.MessageType.SEND_RED_POINT_INDICATION_VALUE,redPointInfo,true); + }else{ + if(redType == GlobalsDef.MAIL_RED_TYPE){ + return; + } + User user = UserManager.getUser(sendUid); + Set reds = user.getPlayerInfoManager().getReds(); + reds.add(redType); + user.getPlayerInfoManager().setReds(reds); } }