diff --git a/serverlogic/src/main/java/com/ljsd/jieling/exception/ErrorCode.java b/serverlogic/src/main/java/com/ljsd/jieling/exception/ErrorCode.java index 65f58e7e5..c70286985 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/exception/ErrorCode.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/exception/ErrorCode.java @@ -170,6 +170,7 @@ public enum ErrorCode implements IErrorCode { LOCK_FILL(140,"锁定数量已满,无法刷新"), REDPACKET_DAILY_LIMIT(141,"今日福利红包已达领取上限"), + CHAMPION_BET_GUESS_OVER_TIME(142,"巅峰赛竞猜超时,请重新进入页面") ; private static final Set CodeSet = new HashSet<>(); 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 bf2d74fdf..3653f0d2b 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/handler/GetPlayerInfoHandler.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/handler/GetPlayerInfoHandler.java @@ -14,6 +14,7 @@ import com.ljsd.jieling.logic.activity.ActivityLogic; import com.ljsd.jieling.logic.activity.event.NewWelfareEvent; import com.ljsd.jieling.logic.activity.event.NewWelfareTypeEnum; import com.ljsd.jieling.logic.activity.event.Poster; +import com.ljsd.jieling.logic.activity.event.SuperBoxEvent; import com.ljsd.jieling.logic.dao.*; import com.ljsd.jieling.logic.dao.root.GlobalSystemControl; import com.ljsd.jieling.logic.dao.root.User; @@ -137,7 +138,7 @@ public class GetPlayerInfoHandler extends BaseHandler{ Map heroHandBook = heroManager.getHeroHandBook(); List heroHandBookList = new ArrayList<>(); heroHandBook.forEach((k,v)->heroHandBookList.add(CommonProto.EveryHeroHandBook.newBuilder().setHeroId(k).setMaxStar(v).build())); - + initHeroStar(user); Set equipHandBookSet = user.getEquipManager().getEquipHandBook().keySet(); int equipPool = user.getEquipManager().getSoulEquipPool(); List goodsBagInfo = new ArrayList<>(SRechargeCommodityNewConfig.configMap.size()); @@ -221,6 +222,7 @@ public class GetPlayerInfoHandler extends BaseHandler{ ReportUtil.onReportEvent(user, ReportEventEnum.APP_LOGIN.getType()); try { //hotfix + Poster.getPoster().dispatchEvent(new SuperBoxEvent(user.getId(),-1)); user.getUserMissionManager().onGameEvent(user,GameEvent.DAILY_TASK_TYPE,0,user); MessageUtil.sendIndicationMessage(iSession, 1, MessageTypeProto.MessageType.WorldLevelIndication_VALUE, PlayerInfoProto.WorldLevelIndication.newBuilder().setWorldLeve(GlobleSystemLogic.getGloableWorldLeveCache()).build(), true); MessageUtil.sendMessage(iSession, 1, MessageTypeProto.MessageType.GET_PLAYERINFO_RESPONSE_VALUE, getPlayerInfoResponse, true); @@ -235,5 +237,17 @@ public class GetPlayerInfoHandler extends BaseHandler{ } } + /** + * 初始化英雄星级map(针对老号) + * @param user + */ + private void initHeroStar(User user){ + if(user.getHeroManager().getHeroStarMap().size()>1){ + return; + } + for(Hero hero : user.getHeroManager().getHeroMap().values()){ + user.getHeroManager().addHeroStar(hero.getTemplateId(),hero.getStar()); + } + } } diff --git a/serverlogic/src/main/java/com/ljsd/jieling/handler/champion/ChampionBetInfoHandler.java b/serverlogic/src/main/java/com/ljsd/jieling/handler/champion/ChampionBetInfoHandler.java index 61d3af2f1..329564471 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/handler/champion/ChampionBetInfoHandler.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/handler/champion/ChampionBetInfoHandler.java @@ -23,6 +23,8 @@ import com.ljsd.jieling.util.ItemUtil; import com.ljsd.jieling.util.MessageUtil; import config.SArenaRobotConfig; import manager.STableManager; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import rpc.protocols.ArenaInfoProto; import rpc.protocols.CommonProto; import rpc.protocols.MessageTypeProto; @@ -36,6 +38,9 @@ import java.util.Map; * 0 全量 1 : 只给ChampionBetInfo */ public class ChampionBetInfoHandler extends BaseHandler { + + private static final Logger LOGGER = LoggerFactory.getLogger(ChampionBetInfoHandler.class); + @Override public MessageTypeProto.MessageType getMessageCode() { return MessageTypeProto.MessageType.CHAMPION_BET_INFO_REQUEST; @@ -247,9 +252,7 @@ public class ChampionBetInfoHandler extends BaseHandler{},竞猜2uid{}",builder.getChampionBattleInfo().getMyInfo().getUid(),builder.getChampionBattleInfo().getEnemyInfo().getUid()); } } diff --git a/serverlogic/src/main/java/com/ljsd/jieling/handler/champion/ChampionGuessHandler.java b/serverlogic/src/main/java/com/ljsd/jieling/handler/champion/ChampionGuessHandler.java index b5f926d0c..79048251e 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/handler/champion/ChampionGuessHandler.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/handler/champion/ChampionGuessHandler.java @@ -67,7 +67,7 @@ public class ChampionGuessHandler extends BaseHandler teamPosHeroInfos = user.getTeamPosManager().getTeamPosForHero().get(teamId); PlayerInfoProto.HardStageFightResponse.Builder fightStartResponse = PlayerInfoProto.HardStageFightResponse.newBuilder(); + //山河社稷埋点 + int logType = nodeConfig.getChapter(); + int logSectionId = nodeConfig.getSection(); + int logResult = 0; + int logStarNum = 0; //直接发奖励 if (nodeConfig.getStageType() == 2) { Map chapt = user.getHardStageManager().getChapterMap(user); @@ -90,6 +97,7 @@ public class StartHardStageRequestHandler extends BaseHandler fightStateInfo = user.getMainLevelManager().getFightStateInfo(); @@ -2295,7 +2296,7 @@ public class MapLogic { ReportUtil.onReportEvent(user,ReportEventEnum.COMPLETE_XINMO.getType(),checkFightId,sFloodConfig.getMonster(),MonsterUtil.getMonsterForce(new int[]{sFloodConfig.getMonster()}),new Date(),"",null,null,"失败"); return; } - BuyGoodsNewLogic.openPush(session,user,2,sFloodConfig.getId(),0); + BuyGoodsNewLogic.openPush(session,user,PushRechargeType.tower.getType(),sFloodConfig.getId(),0); //排行榜 // String rankKey = RedisKey.getKey(RedisKey.MONSTER_ATTACK_RANK,"", false); // RedisUtil.getInstence().zsetAddOneOffsetByTime(rankKey, String.valueOf(user.getId()), checkFightId); diff --git a/serverlogic/src/main/java/com/ljsd/jieling/handler/map/miniGame/CircleGame.java b/serverlogic/src/main/java/com/ljsd/jieling/handler/map/miniGame/CircleGame.java index d46b0eb75..87967f23d 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/handler/map/miniGame/CircleGame.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/handler/map/miniGame/CircleGame.java @@ -8,6 +8,7 @@ import com.ljsd.jieling.logic.dao.root.User; import com.ljsd.jieling.logic.redpacket.WelfareRedPackEvent; import com.ljsd.jieling.logic.redpacket.WelfareRedPacketType; import com.ljsd.jieling.logic.store.BuyGoodsNewLogic; +import com.ljsd.jieling.logic.store.newRechargeInfo.PushRechargeType; import com.ljsd.jieling.network.session.ISession; import config.SSpiritAnimal; import rpc.protocols.CommonProto; @@ -88,7 +89,7 @@ public class CircleGame extends ColorGame{ if(ssa != null && ssa.getQuality()==5){ Poster.getPoster().dispatchEvent(new WelfareRedPackEvent(user.getId(), WelfareRedPacketType.game_pokemon.getType(),1)); ISession session = OnlineUserManager.getSessionByUid(user.getId()); - BuyGoodsNewLogic.openPush(session,user,8,5,1); + BuyGoodsNewLogic.openPush(session,user, PushRechargeType.pokemon_quality.getType(),5,1); } } } diff --git a/serverlogic/src/main/java/com/ljsd/jieling/kefu/Cmd_fightrecord.java b/serverlogic/src/main/java/com/ljsd/jieling/kefu/Cmd_fightrecord.java index 0aaf1bf7c..6d45c2145 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/kefu/Cmd_fightrecord.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/kefu/Cmd_fightrecord.java @@ -13,23 +13,21 @@ public class Cmd_fightrecord extends GmAbstract { @Override public String exec2(String[] args){ - if (args.length < 2){ - return ""; - } // 获取玩家战报系统 - String content = Optional.ofNullable(args[0]).orElse(""); - String parm = Optional.ofNullable(args[1]).orElse(""); + String sign = Optional.ofNullable(args[0]).orElse(""); + String content = Optional.ofNullable(args[1]).orElse(""); String result = ""; - if (content.equals("delete")){ + if (sign.equals("delete")){ FightRecordLogic.getInstance().delete(); + LOGGER.info("战报信息,delete"); } - else if (content.equals("all")){ - result = FightRecordLogic.getInstance().getAll(Integer.parseInt(parm)); - System.out.printf("战报信息,all:{%s}",result); + else if (sign.equals("all")){ + result = FightRecordLogic.getInstance().getAll(Integer.parseInt(content)); + LOGGER.info("战报信息,all:{}",result); } else { result = FightRecordLogic.getInstance().getOneRecord(content); - System.out.printf("战报信息,OneRecord:{%s}",result); + LOGGER.info("战报信息,OneRecord:{}",result); } return result; diff --git a/serverlogic/src/main/java/com/ljsd/jieling/ktbeans/ReportEventEnum.java b/serverlogic/src/main/java/com/ljsd/jieling/ktbeans/ReportEventEnum.java index 0f3749a89..bb338bde8 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/ktbeans/ReportEventEnum.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/ktbeans/ReportEventEnum.java @@ -108,6 +108,8 @@ public enum ReportEventEnum { COMPLETE_TRAVEL(73,"complete_travel",CommonEventHandler.getInstance(),new String[]{"stage_id_travel"}), // 新将来袭 TA_SUI_LING_XIAO(74,"tasuilingxiao_boss",CommonEventHandler.getInstance(),new String[]{"boss_id","damage_num","reward_nums_list"}), + //山河社稷图 + HARD_STAGE(75 ,"Sunvo_figure",CommonEventHandler.getInstance(),new String[]{"Sunvo_figure_type","Sunvo_figure_id","combat_results","get_star"}), VIP_LEVEL_UP(100,"", new VipLevelUpEventHandler(),new String[]{""}); 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 2bcfe393d..30bd87bb0 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/GlobalDataManaager.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/GlobalDataManaager.java @@ -13,6 +13,8 @@ import com.ljsd.jieling.logic.activity.ActivityLogic; import com.ljsd.jieling.logic.activity.FightMainEventHandler; import com.ljsd.jieling.logic.activity.RemoveEventHeroHandler; import com.ljsd.jieling.logic.activity.UserLevelEventHandler; +import com.ljsd.jieling.logic.activity.event.Poster; +import com.ljsd.jieling.logic.activity.event.SuperBoxEvent; import com.ljsd.jieling.logic.redpacket.WelfareRedPackSendHandler; import com.ljsd.jieling.logic.activity.eventhandler.ActivityStateChangeHandler; import com.ljsd.jieling.logic.activity.eventhandler.BuyGoodsDirectHandler; @@ -380,6 +382,9 @@ public class GlobalDataManaager implements IManager { // 道具刷新 BuyGoodsNewLogic.refreshWelfareState(user); user.getUserMissionManager().onGameEvent(user, GameEvent.LOGIN_GAME,0); + + // 惊喜礼盒,事件推送 + Poster.getPoster().dispatchEvent(new SuperBoxEvent(user.getId(),-1)); } user.getPlayerInfoManager().setLoginTime(TimeUtils.now()); } 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 0cad7184c..11fc1fefa 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 @@ -1608,17 +1608,18 @@ public class ActivityLogic implements IEventHandler{ int count = mission.getV(); // up奖励id int upRewardId = mission.getChoiceRewardId(); - - // 排序权重map - Map weight = new TreeMap<>(SWishActivityPool.weight); - // 常驻卡池 - Map poolMap = SWishActivityPool.map; // 根据活动获取本期得全部up信息 Map up = SWishActivityUp.upMap.get(activityId); // 根据玩家选取得up奖励id获取详细信息 int[] incs = up.get(upRewardId); - // 讲up奖励id得权重加入到整个卡池权重中 - weight.put(weight.size()+1,incs[2]); + //拿到当前阵营 + int camp = incs[4]; + // 排序权重map + Map weight = new TreeMap<>(SWishActivityPool.weight.get(camp)); + // 常驻卡池 + Map poolMap = SWishActivityPool.map; + // 将up奖励id得权重加入到整个卡池权重中 + weight.put(-1,incs[2]); // 计算总权重 int totalWeight = weight.values().stream().mapToInt(Integer::intValue).sum(); 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 634f723c1..7f26b5261 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 @@ -95,5 +95,7 @@ public interface ActivityType { int DEMON_TREASURE = 36;//降妖夺宝 int NEW_GENERAL_ATTACK = 200;//新将来袭 + int SUPER_BOX = 69;//惊喜礼盒 + int HERO_STAR = 500; } 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 735d70a26..74d1c363e 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 @@ -73,6 +73,8 @@ public enum ActivityTypeEnum { TA_SUI_LING_XIAO(ActivityType.TA_SUI_LING_XIAO,TaSuiLingXiaoActivity::new), CHOICE_DRAW_CRAD(ActivityType.CHOICE_DRAW_CRAD,ChoiceDrawCardActivity::new), HARD_STAGE_EXERCISE(ActivityType.HARD_STAGE_EXERCISE,HardStageExerciseActivity::new), + SUPER_BOX(ActivityType.SUPER_BOX,SuperBoxActivity::new), + HERO_STAR(ActivityType.HERO_STAR,HeroStarActivity::new), ; private int type; private Function toActivityFunction; diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/HeroStarActivity.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/HeroStarActivity.java new file mode 100644 index 000000000..6246ff0a2 --- /dev/null +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/HeroStarActivity.java @@ -0,0 +1,135 @@ +package com.ljsd.jieling.logic.activity; + +import com.ljsd.jieling.exception.ErrorCode; +import com.ljsd.jieling.exception.ErrorCodeException; +import com.ljsd.jieling.globals.BIReason; +import com.ljsd.jieling.jbean.ActivityMission; +import com.ljsd.jieling.jbean.ActivityProgressInfo; +import com.ljsd.jieling.logic.OnlineUserManager; +import com.ljsd.jieling.logic.activity.event.*; +import com.ljsd.jieling.logic.dao.UserManager; +import com.ljsd.jieling.logic.dao.root.User; +import com.ljsd.jieling.network.session.ISession; +import com.ljsd.jieling.util.ItemUtil; +import com.ljsd.jieling.util.MessageUtil; +import config.SActivityRewardConfig; +import config.SGlobalActivity; +import rpc.protocols.CommonProto; +import rpc.protocols.PlayerInfoProto; + +import java.util.List; +import java.util.Map; + +public class HeroStarActivity extends AbstractActivity { + private int heroId; + + public HeroStarActivity(int id) { + super(id); + Poster.getPoster().listenEvent(this, HeroUpStarEvent.class); + Poster.getPoster().listenEvent(this, FiveStarGetEvent.class); + } + + @Override + public void onEvent(IEvent event) throws Exception { + User user = null; + if(event instanceof FiveStarGetEvent){ + FiveStarGetEvent fiveStarGetEvent = (FiveStarGetEvent)event; + if(heroId != fiveStarGetEvent.getHeroid()) + return; + user = UserManager.getUser(fiveStarGetEvent.getUid()); + }else if(event instanceof HeroUpStarEvent){ + HeroUpStarEvent heroUpStarEvent = (HeroUpStarEvent) event; + if(heroUpStarEvent.getHeroTid() != heroId){ + return; + } + user = UserManager.getUser(heroUpStarEvent.getUid()); + } + + ActivityMission activityMission = user.getActivityManager().getActivityMissionMap().get(id); + if( null == activityMission){ + return; + } + Map activityProgressInfoMap = activityMission.getActivityMissionMap(); + List list = SActivityRewardConfig.getsActivityRewardConfigByActivityId(id); + + int maxstar = user.getHeroManager().getHeroStarMap().get(heroId); + for (SActivityRewardConfig sActivityRewardConfig : list) { + if (maxstar >= sActivityRewardConfig.getValues()[0][1]) { + ActivityProgressInfo activityProgressInfo = activityProgressInfoMap.getOrDefault(sActivityRewardConfig.getId(), null); + if (null == activityProgressInfo) + continue; + if(activityProgressInfo.getState()<1){ + activityProgressInfo.setState(1); + }else{ + continue; + } + activityMission.getActivityMissionMap().put(sActivityRewardConfig.getId(), activityProgressInfo); + } + } + //更新进度 + ISession sessionByUid = OnlineUserManager.getSessionByUid(user.getId()); + sendActivityProgress(sessionByUid, activityMission, null); + } + + @Override + public void initActivity(User user) throws Exception { + SGlobalActivity globalActivity = SGlobalActivity.getsGlobalActivityMap().get(id); + if(globalActivity == null){ + return; + } + ActivityLogic.getInstance().initAllActivityMission(user.getActivityManager().getActivityMissionMap(),globalActivity.getId()); + if(user.getActivityManager().getActivityMissionMap().get(globalActivity.getId()) == null){ + return; + } + ActivityMission activityMission = user.getActivityManager().getActivityMissionMap().get(id); + if( null == activityMission){ + return; + } + Map activityProgressInfoMap = activityMission.getActivityMissionMap(); + List list = SActivityRewardConfig.getsActivityRewardConfigByActivityId(id); + heroId = list.get(0).getValues()[0][0]; + Integer maxstar = user.getHeroManager().getHeroStarMap().get(heroId); + if(maxstar == null){ + return; + } + + for (SActivityRewardConfig sActivityRewardConfig : list) { + if (maxstar.intValue() >= sActivityRewardConfig.getValues()[0][1]) { + ActivityProgressInfo activityProgressInfo = activityProgressInfoMap.getOrDefault(sActivityRewardConfig.getId(), null); + if (null == activityProgressInfo) + continue; + if(activityProgressInfo.getState()<1){ + activityProgressInfo.setState(1); + } + activityMission.getActivityMissionMap().put(sActivityRewardConfig.getId(), activityProgressInfo); + } + } + + } + + @Override + public boolean takeReward(ISession session, int missionId) throws Exception { + PlayerInfoProto.TakeActivityRewardResponse build = null; + User user = UserManager.getUser(session.getUid()); + SGlobalActivity sGlobalActivity = SGlobalActivity.getsGlobalActivityMap().get(id); + if (sGlobalActivity == null || !user.getActivityManager().getActivityMissionMap().containsKey(id)) { + throw new ErrorCodeException(ErrorCode.SERVER_SELF_DEFINE); + } + ActivityMission activityMission = user.getActivityManager().getActivityMissionMap().get(id); + Map activityProgressInfoMap = activityMission.getActivityMissionMap(); + ActivityProgressInfo activityProgressInfo = activityProgressInfoMap.get(missionId); + if (activityProgressInfo == null || activityProgressInfo.getState() == 2) { + throw new ErrorCodeException(ErrorCode.newDefineCode("活动奖励已经领取")); + } + activityProgressInfo.setState(2); + SActivityRewardConfig sActivityRewardConfig = SActivityRewardConfig.getsActivityRewardConfigByMissionId(missionId); + if(sActivityRewardConfig==null){ + throw new ErrorCodeException(ErrorCode.SERVER_SELF_DEFINE); + } + sendActivityProgress(session, activityMission, null); + CommonProto.Drop.Builder drop = ItemUtil.drop(user, sActivityRewardConfig.getReward(), BIReason.TAKE_ACTIVITY_REWARD); + build = PlayerInfoProto.TakeActivityRewardResponse.newBuilder().setDrop(drop).build(); + MessageUtil.sendMessage(session, 1, rewardResponseValue, build, true); + return true; + } +} diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/SuperBoxActivity.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/SuperBoxActivity.java new file mode 100644 index 000000000..a1594e738 --- /dev/null +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/SuperBoxActivity.java @@ -0,0 +1,264 @@ +package com.ljsd.jieling.logic.activity; + +import com.ljsd.GameApplication; +import com.ljsd.jieling.globals.Global; +import com.ljsd.jieling.jbean.ActivityMission; +import com.ljsd.jieling.jbean.ActivityProgressInfo; +import com.ljsd.jieling.logic.OnlineUserManager; +import com.ljsd.jieling.logic.activity.event.IEvent; +import com.ljsd.jieling.logic.activity.event.Poster; +import com.ljsd.jieling.logic.activity.event.SuperBoxEvent; +import com.ljsd.jieling.logic.dao.ServerConfig; +import com.ljsd.jieling.logic.dao.UserManager; +import com.ljsd.jieling.logic.dao.root.User; +import com.ljsd.jieling.network.session.ISession; +import config.SGlobalActivity; +import config.SSurpriseBox; +import manager.STableManager; +import util.TimeUtils; + +import java.util.*; +import java.util.stream.Collectors; + +/** + * @author hj + * 惊喜礼盒活动 + * + * 礼盒状态: + * 已解锁可购买 1 + * 已解锁不可购买 2 + * 未解锁可见可预览 3 + * 未解锁可见不可预览 4 + * 未解锁不可见 5 + * 已购买 6 + */ +@SuppressWarnings("ALL") +public class SuperBoxActivity extends AbstractActivity { + + SuperBoxActivity(int id) { + super(id); + Poster.getPoster().listenEvent(this, SuperBoxEvent.class); + } + + @Override + public void initActivity(User user) throws Exception { + ActivityMission mission = new ActivityMission(); + // 读表获取阶段奖励信息 + Map boxMap = SSurpriseBox.map.getOrDefault(id,new HashMap<>()); + if (boxMap.isEmpty()){ + LOGGER.error("惊喜礼盒初始化失败,活动id:"+id); + } + List list = boxMap.values().stream().mapToInt(SSurpriseBox::getId).boxed().collect(Collectors.toList()); + // 初始化阶段奖励 + ActivityLogic.getInstance().initOtherMission(mission, list); + user.getActivityManager().getActivityMissionMap().put(id, mission); + // 修改状态 + updateState(user); + LOGGER.info("惊喜礼盒初始化..."+id); + } + + @Override + public void onEvent(IEvent event) throws Exception { + // 类型验证 + if (!(event instanceof SuperBoxEvent)) { + return; + } + // 获取信息 + SuperBoxEvent event1 = (SuperBoxEvent) event; + User user = UserManager.getUser(event1.getUserId()); + // 礼包处理 + giftHandle(user, event1.getGiftId()); + // 状态刷新 + updateState(user); + } + + /** + * 礼包处理 + * @param user + * @param giftId + * @param missionMap + */ + private void giftHandle(User user, int giftId){ + if (giftId == -1){ + // 非礼包处理 + return; + } + + ActivityMission mission = user.getActivityManager().getActivityMissionMap().get(id); + if (mission == null){ + return; + } + Map missionMap = mission.getActivityMissionMap(); + Collection boxes = SSurpriseBox.map.getOrDefault(id, new HashMap<>(0)).values(); + + for (SSurpriseBox box : boxes) { + if (box.getPackId() == giftId){ + // 当前礼包状态处理 + ActivityProgressInfo current = missionMap.get(box.getId()); + if (current != null){ + current.setState(ActivityType.HAD_TAKED); + current.setProgrss(8); + missionMap.put(box.getId(),current); + } + break; + } + } + } + + /** + * 修改状态 + * 次数代码非必要不要进行修改,包含N多的嵌套if + * 不要问我为啥写的这么恶心,因为我自己也不知怎么写出来的 + * @param user + */ + private void updateState(User user){ + long now = TimeUtils.now(); + long start = getSrartTime(); + long end = getEndTime(); + // 验证活动是否开启 + if (now < start || now > end){ + return; + } + ActivityMission mission = user.getActivityManager().getActivityMissionMap().get(id); + // 计算过去了几天 + int days = TimeUtils.getSoFarWentDays(start, now)+1; + mission.setV(days); + // mission 单个礼包 + Map missionMap = mission.getActivityMissionMap(); + Map boxMap = SSurpriseBox.map.get(id); + // 极为恶心的循环,包含超多的if-else + for (Map.Entry entry : missionMap.entrySet()) { + int k = entry.getKey(); + ActivityProgressInfo v = entry.getValue(); + int progrss = v.getProgrss(); + // 是否已购买 + if (progrss == 8){ + // 已购买 + continue; + } + + SSurpriseBox box = boxMap.get(k); + // 未购买, 是否解锁 + if (days >= box.getUnlockDay()){ + // 已解锁, 可买天数 + if (days >= box.getBuyDay()){ + // 可买, 是否购买前置礼包 + if (checkBuyAgo(user,box.getId())){ + // 已购买前置. 是否需要特权, 是否激活特权 + progrss = checkRule(user,box.getRule())?1:4; + }else { + // 未购买前置 + progrss = 3; + } + }else { + // 不可买 + progrss = 2; + } + }else { + // 未解锁, 是否可见 + if (days >= box.getVisibleDay()){ + // 可见, 是否可预览 + progrss = days >= box.getViewDay()?6:7; + }else { + // 不可见 + progrss = 5; + } + } + v.setProgrss(progrss); + mission.getActivityMissionMap().put(k,v); + } + + LOGGER.info("========================惊喜礼盒状态刷新,uid={}",user.getId()); + + // 客户端推送 + ISession session = OnlineUserManager.getSessionByUid(user.getId()); + sendActivityProgress(session, mission, null); + } + + /** + * 开始时间 + * @return + */ + public long getSrartTime(){ + long startTime = 0; + SGlobalActivity activity = SGlobalActivity.getsGlobalActivityMap().get(id); + // 绝对时间 + if (activity.getTime() == ActivityType.OPEN_TYPE_TIME){ + startTime = activity.getStartTimeLong(); + } + // 开服时间 + else if (activity.getTime() == ActivityType.OPEN_TYPE_SERVER) { + String openTime = GameApplication.serverConfig.getOpenTime(); + startTime = TimeUtils.stringToTimeLong2(openTime); + } + return startTime; + } + + /** + * 结束时间 + * @return + */ + public long getEndTime(){ + long endTime = 0; + SGlobalActivity activity = SGlobalActivity.getsGlobalActivityMap().get(id); + // 绝对时间 + if (activity.getTime() == ActivityType.OPEN_TYPE_TIME){ + endTime = activity.getEndTimeLong(); + } + // 开服时间 + else if (activity.getTime() == ActivityType.OPEN_TYPE_SERVER) { + String openTime = GameApplication.serverConfig.getOpenTime(); + long timeLong2 = TimeUtils.stringToTimeLong2(openTime); + endTime = timeLong2 + activity.getEndTimeLong() * 1000; + } + return endTime; + } + + /** + * 验证前置礼包购买状态 + * @param user + * @param boxId + * @return + */ + private boolean checkBuyAgo(User user, int boxId){ + boolean result = true; + // 获取消息 + Map missionMap = user.getActivityManager().getActivityMissionMap().get(id).getActivityMissionMap(); + SSurpriseBox box = STableManager.getConfig(SSurpriseBox.class).get(boxId); + // 非空 + if (!missionMap.isEmpty() && box != null){ + // 前置礼包状态验证 + ActivityProgressInfo info = missionMap.get(box.getLimitPackFId()); + // info为null代表没有前置条件, state==2代表已买过 + if (info != null && info.getState() == ActivityType.WILL_TAKE){ + result = false; + } + } + return result; + } + + /** + * 检测特殊权限 + * 0走默认 true + * @param user + * @param ruleId + * @return + */ + private boolean checkRule(User user, int ruleId){ + boolean result = true; + switch (ruleId){ + case 1: + // 普通月卡 + result = user.getPlayerInfoManager().getMonthCard().get(Global.MONTHCARDID) != null; + break; + case 2: + // 高级月卡 + result = user.getPlayerInfoManager().getMonthCard().get(Global.LMONTHCARDID) != null; + break; + default: + break; + } + return result; + } + +} diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/event/FiveStarGetEvent.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/event/FiveStarGetEvent.java new file mode 100644 index 000000000..62bd2c239 --- /dev/null +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/event/FiveStarGetEvent.java @@ -0,0 +1,19 @@ +package com.ljsd.jieling.logic.activity.event; + +public class FiveStarGetEvent implements IEvent { + private int uid; + private int heroid; + + public FiveStarGetEvent(int uid,int heroid){ + this.uid = uid; + this.heroid = heroid; + } + + public int getHeroid() { + return heroid; + } + + public int getUid() { + return uid; + } +} diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/event/SuperBoxEvent.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/event/SuperBoxEvent.java new file mode 100644 index 000000000..cea74ced7 --- /dev/null +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/event/SuperBoxEvent.java @@ -0,0 +1,35 @@ +package com.ljsd.jieling.logic.activity.event; + +/** + * @Author hj + * @Date 2021/5/26 11:05 + * @Description: + * @Version 1.0 + */ +public class SuperBoxEvent implements IEvent { + + private int userId; + private int giftId = -1;//礼包id + + public SuperBoxEvent(int userId, int giftId) { + this.userId = userId; + this.giftId = giftId; + } + + public int getUserId() { + return userId; + } + + public void setUserId(int userId) { + this.userId = userId; + } + + public int getGiftId() { + return giftId; + } + + public void setGiftId(int giftId) { + this.giftId = giftId; + } + +} diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/eventhandler/HeroFiveStarGetEventHandler.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/eventhandler/HeroFiveStarGetEventHandler.java index c3fc14a7d..f231b5fef 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/eventhandler/HeroFiveStarGetEventHandler.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/eventhandler/HeroFiveStarGetEventHandler.java @@ -11,6 +11,7 @@ import com.ljsd.jieling.logic.dao.UserManager; import com.ljsd.jieling.logic.dao.root.User; import com.ljsd.jieling.logic.store.BuyGoodsNewLogic; import com.ljsd.jieling.logic.store.newRechargeInfo.NewRechargeInfo; +import com.ljsd.jieling.logic.store.newRechargeInfo.PushRechargeType; import com.ljsd.jieling.network.session.ISession; import rpc.protocols.CommonProto; import rpc.protocols.MessageTypeProto; @@ -36,6 +37,6 @@ public class HeroFiveStarGetEventHandler implements IEventHandler { int star = ((HeroFiveStarGetEvent) event).getStar(); int num = ((HeroFiveStarGetEvent) event).getNum(); ISession session = OnlineUserManager.getSessionByUid(user.getId()); - BuyGoodsNewLogic.openPush(session,user,4,star,num); + BuyGoodsNewLogic.openPush(session,user, PushRechargeType.card_star.getType(),star,num); } } diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/eventhandler/PokemonFiveStarGetEventHandler.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/eventhandler/PokemonFiveStarGetEventHandler.java index bd470701c..0786a77a2 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/eventhandler/PokemonFiveStarGetEventHandler.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/eventhandler/PokemonFiveStarGetEventHandler.java @@ -7,6 +7,7 @@ import com.ljsd.jieling.logic.activity.event.PokemonFiveStarGetEvent; import com.ljsd.jieling.logic.dao.UserManager; import com.ljsd.jieling.logic.dao.root.User; import com.ljsd.jieling.logic.store.BuyGoodsNewLogic; +import com.ljsd.jieling.logic.store.newRechargeInfo.PushRechargeType; import com.ljsd.jieling.network.session.ISession; public class PokemonFiveStarGetEventHandler implements IEventHandler { @@ -20,6 +21,6 @@ public class PokemonFiveStarGetEventHandler implements IEventHandler { int star = ((PokemonFiveStarGetEvent) event).getStar(); int num = ((PokemonFiveStarGetEvent) event).getNum(); ISession session = OnlineUserManager.getSessionByUid(user.getId()); - BuyGoodsNewLogic.openPush(session,user,8,star,num); + BuyGoodsNewLogic.openPush(session,user, PushRechargeType.pokemon_quality.getType(),star,num); } } \ No newline at end of file diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/championship/ChampionshipLogic.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/championship/ChampionshipLogic.java index a822cf724..fc8545527 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/championship/ChampionshipLogic.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/championship/ChampionshipLogic.java @@ -444,10 +444,13 @@ public class ChampionshipLogic { costs[0] = new int[2]; costs[0][0] = arenaItemId; costs[0][1] = itemNum; +// Map itemReward = new HashMap<>(1); +// itemReward.put(rewardItemId, (long) (itemNum / sChampionshipSetting.getExchangeItem())); + String title = SErrorCodeEerverConfig.getI18NMessage("champion_bet_title"); + String content = SErrorCodeEerverConfig.getI18NMessage("champion_bet_content"); + MailLogic.getInstance().sendMail(user.getId(),title,content,rewardItemId+"#"+(itemNum / sChampionshipSetting.getExchangeItem()),TimeUtils.nowInt(),Global.MAIL_EFFECTIVE_TIME); ItemUtil.itemCost(user, costs, BIReason.CHAMPIONM_EXCHANGE_CONSUME, sendId); - Map itemReward = new HashMap<>(1); - itemReward.put(rewardItemId, (long) (itemNum / sChampionshipSetting.getExchangeItem())); - ItemUtil.addItem(user, itemReward, null, BIReason.CHAMPIONM_EXCHANGE_REWARD); +// ItemUtil.addItem(user, itemReward, null, BIReason.CHAMPIONM_EXCHANGE_REWARD); } LOGGER.info("the uid={},send rewardnum={}", itemNum / sChampionshipSetting.getExchangeItem()); diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/HeroManager.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/HeroManager.java index 82b67695a..6341701f2 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/HeroManager.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/HeroManager.java @@ -30,6 +30,7 @@ public class HeroManager extends MongoBase { private Map heroHandBook = new HashMap<>(); private Set heroHandBookEnabled = new HashSet<>(); + private Map heroStarMap = new HashMap<>(); private Map endlessHeroInfo = new HashMap<>(); @@ -96,6 +97,7 @@ public class HeroManager extends MongoBase { updateString("heroMap." + hero.getId(), hero); heroMap.put(hero.getId(), hero); addHeroHandBook(hero.getTemplateId(),hero.getStar()); + addHeroStar(hero.getTemplateId(),hero.getStar()); } public Hero getHero(String heroId) { @@ -136,6 +138,18 @@ public class HeroManager extends MongoBase { return heroHandBook; } + public void addHeroStar(int heroId,int star){ + if(heroStarMap.getOrDefault(heroId,0) >= star){ + return; + } + heroStarMap.put(heroId,Math.max(heroStarMap.getOrDefault(heroId,0),star)); + updateString("heroStarMap." + heroId, star); + } + + public Map getHeroStarMap(){ + return heroStarMap; + } + public int getFirstTenth() { return firstTenth; } diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/family/GuildLogic.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/family/GuildLogic.java index f5284bf69..680a105b5 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/family/GuildLogic.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/family/GuildLogic.java @@ -625,7 +625,7 @@ public class GuildLogic { } targetUser.getGuildMyInfo().setJoinTime(TimeUtils.nowInt()); ReportUtil.onReportEvent(targetUser, ReportEventEnum.JOIN_GUILD.getType(),String.valueOf(guildInfo.getId()),guildInfo.getName(),guildInfo.getLevel(),guildInfo.getTotalMembers()); - sendNewGuyRedPacket(guildInfo); + sendNewGuyRedPacket(guildInfo,applyId); } /** @@ -669,7 +669,7 @@ public class GuildLogic { guildInfo.removeDefendInfo(targetUid); } targetUser.getPlayerInfoManager().setGuildId(0); - targetUser.getPlayerInfoManager().setWelfareRedPackets(new HashMap()); + targetUser.getPlayerInfoManager().setWelfareRedPackets(clearRedPacketMap(user)); targetUser.getGuildMyInfo().clearOfLevelGuild(); addGuildLog(guildInfo.getId(),GuildDef.Log.KICK,targetUser.getPlayerInfoManager().getNickName()); // Family.FamilyKickIndication build = Family.FamilyKickIndication.newBuilder().setType(1).build(); @@ -944,7 +944,7 @@ public class GuildLogic { RedisUtil.getInstence().putMapEntry(RedisKey.PLAYER_INFO_CACHE,"",String.valueOf(uid),cache); guildInfo.removeMember(uidType,uid); user.getPlayerInfoManager().setGuildId(0); - user.getPlayerInfoManager().setWelfareRedPackets(new HashMap()); + user.getPlayerInfoManager().setWelfareRedPackets(clearRedPacketMap(user)); user.getGuildMyInfo().clearOfLevelGuild(); addGuildLog(guildInfo.getId(),GuildDef.Log.LEVEL,user.getPlayerInfoManager().getNickName()); MessageUtil.sendMessage(session,1,msgId,null,true); @@ -1227,6 +1227,7 @@ public class GuildLogic { * @throws Exception */ public static void addWelfareRedPacket(int uid,int redId) throws Exception { + LOGGER.info("添加福利礼包,uid:{},redId:{}",uid,redId); User user = UserManager.getUser(uid); SGuildRedPackConfig config = SGuildRedPackConfig.sGuildRedPackConfigMap.get(redId); if(config==null || config.getBaseType() != 2){ @@ -1259,9 +1260,12 @@ public class GuildLogic { }); for(SGuildRedPackConfig c : serise){ if(config.getGroupId() == 1){ - Integer state = redPacketsMap.get(c.getRuleId()[0]); - if(state != null && c.getId() == config.getId()){ - redPacketsMap.put(c.getRuleId()[0],1); + Integer state = redPacketsMap.get(c.getId()); + if(state != null && state == -1){ + continue; + } + if(c.getId() == config.getId()){ + redPacketsMap.put(c.getId(),1); } break; } @@ -1272,7 +1276,6 @@ public class GuildLogic { if(c.getId() == config.getId()){ break; } - continue; }else{ if(c.getId() == config.getId()){ redPacketsMap.put(config.getId(),1); @@ -1289,8 +1292,8 @@ public class GuildLogic { } public static void sendWelfareRedPacketInfo(User user){ - Map redPacketsMap = user.getPlayerInfoManager().getWelfareRedPackets(); initWelfareRedPacketInfo(user); + Map redPacketsMap = user.getPlayerInfoManager().getWelfareRedPackets(); PlayerInfoProto.WelfareRedPacketPush.Builder build = PlayerInfoProto.WelfareRedPacketPush.newBuilder(); for(Map.Entry entry : redPacketsMap.entrySet()){ if(entry.getValue() >= 0){ @@ -1321,25 +1324,9 @@ public class GuildLogic { for(SGuildRedPackConfig config : SGuildRedPackConfig.sWelfareRedPackByRule.values()){ if(redPacketsMap.containsKey(config.getId())) continue; - if(config.getRuleType() == 3){ - if(config.getGroupId() == 2){ - int num = user.getMapManager().getLastMonsterAttack(); - for(SGuildRedPackConfig config1 : SGuildRedPackConfig.welfareRedPackBySerise.get(config.getRuleId()[0])){ - if(num >= config1.getRuleId()[1]){ - redPacketsMap.put(config.getId(),1); - }else{ - redPacketsMap.put(config.getId(),0); - break; - } - } - }else{ - if(config.getId()==SGuildRedPackConfig.welfareRedPackBySerise.get(config.getRuleId()[0]).get(0).getId()) - redPacketsMap.put(config.getId(),0); - } - }else{ - redPacketsMap.put(config.getId(),0); - } + redPacketsMap.put(config.getId(),0); } + user.getPlayerInfoManager().setWelfareRedPackets(redPacketsMap); } /** @@ -1445,7 +1432,7 @@ public class GuildLogic { } } RedPackage packInfo = RedisUtil.getInstence().getMapValue(RedisKey.FAMILY_RED_PACKAGE, String.valueOf(guildId), String.valueOf(redId), RedPackage.class); - PlayerManager playerInfoManager = UserManager.getUser(session.getUid()).getPlayerInfoManager(); + PlayerManager playerInfoManager = UserManager.getUser(packInfo.getUid()).getPlayerInfoManager(); builder.setSendName(playerInfoManager.getNickName()) .setHead(playerInfoManager.getHead()) .setHeadFrame(playerInfoManager.getHeadFrame()) @@ -1728,18 +1715,18 @@ public class GuildLogic { return true; } - private static void sendNewGuyRedPacket(GuildInfo guildInfo) throws Exception{ + private static void sendNewGuyRedPacket(GuildInfo guildInfo,int userId) throws Exception{ for(int id : guildInfo.getMembers().get(GlobalsDef.CHAIRMAN)){ - User user = UserManager.getUser(id); - if(user == null) + User chairman = UserManager.getUser(id); + if(chairman == null) continue; - if(guildInfo.getHistoryMember().contains(user.getId())){ + if(guildInfo.getHistoryMember().contains(userId)){ return; }else{ - guildInfo.getHistoryMember().add(user.getId()); + guildInfo.getHistoryMember().add(userId); guildInfo.updateHistoryMember(); } - Poster.getPoster().dispatchEvent(new WelfareRedPackEvent(user.getId(), WelfareRedPacketType.newfish_come.getType(),0)); + Poster.getPoster().dispatchEvent(new WelfareRedPackEvent(chairman.getId(), WelfareRedPacketType.newfish_come.getType(),0)); } } @@ -1753,4 +1740,16 @@ public class GuildLogic { } } + private static Map clearRedPacketMap(User user){ + Map map = user.getPlayerInfoManager().getWelfareRedPackets(); + for(Map.Entry entry : map.entrySet()){ + if(entry.getValue().intValue() == -1){ + continue; + }else{ + entry.setValue(0); + } + } + return map; + } + } diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/hardStage/HardStageLogic.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/hardStage/HardStageLogic.java index 72820bbee..2f3148561 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/hardStage/HardStageLogic.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/hardStage/HardStageLogic.java @@ -11,10 +11,8 @@ import com.ljsd.jieling.logic.dao.root.User; import com.ljsd.jieling.logic.fight.specialparm.SpecialForTeamBuildEnum; import com.ljsd.jieling.logic.hero.HeroLogic; import com.ljsd.jieling.network.session.ISession; -import com.ljsd.jieling.util.ItemMap; import com.ljsd.jieling.util.ItemUtil; import com.ljsd.jieling.util.MessageUtil; -import com.sun.codemodel.internal.JForEach; import config.*; import org.assertj.core.util.Lists; import org.slf4j.Logger; @@ -24,12 +22,8 @@ import rpc.protocols.MessageTypeProto; import rpc.protocols.PlayerInfoProto; import util.StringUtil; -import javax.swing.text.StyledEditorKit; -import java.util.ArrayList; -import java.util.List; -import java.util.Map; -import java.util.Arrays; -import java.util.stream.Stream; +import java.util.*; +import java.util.stream.Collectors; public class HardStageLogic { @@ -49,6 +43,30 @@ public class HardStageLogic { CommonProto.HardStageInfo.Builder builder = CommonProto.HardStageInfo.newBuilder(); int needSaveChapterId = 0; int needSaveStarNum = 0; + //对策划改表的容错 + //int maxChapter = map.keySet().stream().mapToInt(Integer::intValue).max().getAsInt(); + OptionalInt maxChapter = map.keySet().stream().mapToInt(Integer::intValue).max(); + if(maxChapter.isPresent()){ + if(map.containsKey(maxChapter.getAsInt())){ + int maxId = map.get(maxChapter.getAsInt()).getNodeList().stream().mapToInt(n->n.getId()).max().getAsInt(); + + if(map.get(maxChapter.getAsInt()).getNodeList().stream().filter(n -> n.getId()== maxId&& n.isHasPass()==true).collect(Collectors.toList()).size()>0){ + SHardStage config = SHardStage.getConfigMap().get(maxId); + if(config != null){ + if (SHardStage.getPreList(config.getId()) != null) { + SHardStage.getPreList(config.getId()).stream().forEach(n -> { + if (n != null) { + if(user.getHardStageManager().openNewNode(user.getPlayerInfoManager().getLevel(), n)){ + user.getHardStageManager().updateString("chapterMap." + maxChapter.getAsInt(), map.get(maxChapter.getAsInt())); + } + } + }); + } + } + } + } + } + for (Map.Entry entry : map.entrySet()) { //章节信息 CommonProto.HardStageChapter.Builder chapterBuilder = CommonProto.HardStageChapter.newBuilder(); @@ -209,6 +227,9 @@ public class HardStageLogic { buff = SHardStageBuff.getConfigMap().get(nodeConfig.getHardStageBuff()); if (buff.getType() == 2 || buff.getType() == 3) { skillSb.append(buff.getPassiveSkillLogic()).append("#"); + /*for (int passiveId:buff.getPassiveSkillLogic()) { + skillSb.append(passiveId).append("#"); + }*/ } } @@ -239,19 +260,16 @@ public class HardStageLogic { /** * 通过节点 */ - public static void passNode(ISession iSession, SHardStage nodeConfig, int[] resultNum, List dropList) throws Exception { + public static int passNode(ISession iSession, SHardStage nodeConfig, int[] resultNum, List dropList) throws Exception { User user = UserManager.getUser(iSession.getUid()); if (user == null) { - return; + return 0; } Map chapterMap = user.getHardStageManager().getChapterMap(user); HardStageNode node = chapterMap.get(nodeConfig.getChapter()).getNode(nodeConfig.getId()); + int star = 0; if (node.getType() == 1) {//大节点 - int star = passReward(user, node, resultNum, dropList);//星级通关奖励 - //山河试炼活动 - /*if(star >0 ){ - Poster.getPoster().dispatchEvent(new HardStageExerciseEvent(iSession.getUid(),star)); - }*/ + star = passReward(user, node, resultNum, dropList);//星级通关奖励 chapterMap.get(nodeConfig.getChapter()).addStars(star); if (!node.isHasPass()) { node.setHasPass(true); @@ -276,8 +294,10 @@ public class HardStageLogic { updateChapterAndNodeLevel(user,nodeConfig); user.getHardStageManager().updateString("chapterMap." + nodeConfig.getChapter(), chapterMap.get(nodeConfig.getChapter())); } + } sendHardStageIndication(user); + return star; } public static void updateChapterAndNodeLevel(User user, SHardStage nodeConfig ){ if( nodeConfig.getChapter() >=user.getHardStageManager().getCurChapter()){ 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 a0d558f21..974c4885f 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 @@ -35,6 +35,7 @@ import com.ljsd.jieling.logic.player.PlayerLogic; import com.ljsd.jieling.logic.redpacket.WelfareRedPackEvent; import com.ljsd.jieling.logic.redpacket.WelfareRedPacketType; import com.ljsd.jieling.logic.store.BuyGoodsNewLogic; +import com.ljsd.jieling.logic.store.newRechargeInfo.PushRechargeType; import com.ljsd.jieling.network.server.ProtocolsManager; import com.ljsd.jieling.network.session.ISession; import com.ljsd.jieling.util.*; @@ -1158,6 +1159,7 @@ public class HeroLogic{ ItemUtil.itemCost(user,removeItemMap,BIReason.COMPLEX_EQUIP_CONSUME,0); rankUpHeroExecute(targetHero); + user.getHeroManager().addHeroStar(targetHero.getTemplateId(),targetHero.getStar()); Poster.getPoster().dispatchEvent(new HeroUpStarEvent(user.getId(),targetHero.getTemplateId(),targetHero.getStar())); targetHero.setStarBreakId(scHeroRankUpConfig.getId()); @@ -3702,7 +3704,7 @@ public class HeroLogic{ consumeBuilder.append(consume[0]).append("#").append(consume[1]); } ReportUtil.onReportEvent(user,ReportEventEnum.BEAST_STAR.getType(),pokemon.getTmpId(),oldStar,pokemon.getStar(),consumeBuilder.toString()); - BuyGoodsNewLogic.openPush(session,user,9,pokemon.getStar(),1); + BuyGoodsNewLogic.openPush(session,user, PushRechargeType.pokemon_star.getType(),pokemon.getStar(),1); } diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/mission/event/UserLevelEventProcessor.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/mission/event/UserLevelEventProcessor.java index df8a69416..bf0511692 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/mission/event/UserLevelEventProcessor.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/mission/event/UserLevelEventProcessor.java @@ -10,6 +10,7 @@ import com.ljsd.jieling.logic.mission.main.MissionStateChangeInfo; import com.ljsd.jieling.logic.redpacket.WelfareRedPackEvent; import com.ljsd.jieling.logic.redpacket.WelfareRedPacketType; import com.ljsd.jieling.logic.store.BuyGoodsNewLogic; +import com.ljsd.jieling.logic.store.newRechargeInfo.PushRechargeType; import com.ljsd.jieling.network.session.ISession; import java.util.List; @@ -26,7 +27,7 @@ public class UserLevelEventProcessor implements BaseGameEventProcessor{ int upLevel = (int)parm[1]; ISession session = OnlineUserManager.getSessionByUid(user.getId()); - BuyGoodsNewLogic.openPush(session,user,3,upLevel,0); + BuyGoodsNewLogic.openPush(session,user, PushRechargeType.user_level.getType(),upLevel,0); BuyGoodsNewLogic.sendGiftGooodsIndication(user.getId()); Poster.getPoster().dispatchEvent(new WelfareRedPackEvent(user.getId(), WelfareRedPacketType.player_level.getType(),upLevel)); } diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/store/BuyGoodsNewLogic.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/store/BuyGoodsNewLogic.java index 8f8813626..2249b8cf9 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/store/BuyGoodsNewLogic.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/store/BuyGoodsNewLogic.java @@ -16,10 +16,7 @@ import com.ljsd.jieling.logic.GlobalDataManaager; import com.ljsd.jieling.logic.OnlineUserManager; import com.ljsd.jieling.logic.activity.ActivityLogic; import com.ljsd.jieling.logic.activity.ActivityType; -import com.ljsd.jieling.logic.activity.event.BuyGoodsDirectEvent; -import com.ljsd.jieling.logic.activity.event.NewWelfareEvent; -import com.ljsd.jieling.logic.activity.event.NewWelfareTypeEnum; -import com.ljsd.jieling.logic.activity.event.Poster; +import com.ljsd.jieling.logic.activity.event.*; import com.ljsd.jieling.logic.dao.PlayerManager; import com.ljsd.jieling.logic.dao.RechargeInfo; import com.ljsd.jieling.logic.dao.UserManager; @@ -31,6 +28,7 @@ import com.ljsd.jieling.logic.mail.MailLogic; import com.ljsd.jieling.logic.mission.GameEvent; import com.ljsd.jieling.logic.player.PlayerLogic; import com.ljsd.jieling.logic.store.newRechargeInfo.NewRechargeInfo; +import com.ljsd.jieling.logic.store.newRechargeInfo.PushRechargeType; import com.ljsd.jieling.logic.store.newRechargeInfo.RechargeType; import com.ljsd.jieling.logic.store.newRechargeInfo.bean.*; import com.ljsd.jieling.logic.store.newRechargeInfo.rechargeHandler.RechargeHandler; @@ -172,7 +170,7 @@ public class BuyGoodsNewLogic { double priceTemp =config.getPrice(); int cfgType = SSpecialConfig.getIntegerValue(SSpecialConfig.EXCHANGE_FORCE_TYPE); double price = priceTemp==0?0: SExchangeRate.doubleIntegerHashMap.get(cfgType).get((int)priceTemp); - if(amount!=-999&&!MathUtils.doubleEquals(amount,price * 100)){ + if(amount!=-999&&!MathUtils.doubleEquals(amount,price * 100)&&!"support-order".equals(orderId)){ resultRes.setResultCode(0); resultRes.setResultMsg("charge count error"); LOGGER.error("charge count error, uid={},the goodId={}, currentPrice={},realPrice={}",uid,goodsId, amount,price); @@ -220,6 +218,9 @@ public class BuyGoodsNewLogic { //活动 user.getPlayerInfoManager().setRechargedaily(user.getPlayerInfoManager().getRechargedaily()+price); changeActivity(user,price,info); + + // 惊喜礼盒,事件推送 + Poster.getPoster().dispatchEvent(new SuperBoxEvent(user.getId(),config.getId())); } if(!info.getIsFirst()){ info.setIsFirst(true); @@ -239,7 +240,7 @@ public class BuyGoodsNewLogic { notifyPaySuccessFul(uid,goodsId,amount != -999); MongoUtil.getLjsdMongoTemplate().lastUpdate(); sendGiftGoodsWithoutJudge(uid); - + openPush(session,user, PushRechargeType.point_recharge.getType(),goodsId,1); // 扶持订单不需要上报 if(price>0 && !orderId.equals("support-order")){ // 以下为充值上报 @@ -502,12 +503,10 @@ public class BuyGoodsNewLogic { }else{ boolean open = true; if(System.currentTimeMillis() > bag.getStartTime()){ - if(bag.getType() != RechargeType.timeLimit.getType()){ - for(String[] con : bag.getCondition()){ - if(!judgeOpen(con,user)){ - open = false; - break; - } + for(String[] con : bag.getCondition()){ + if(!judgeOpen(con,user)){ + open = false; + break; } } }else { diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/store/newRechargeInfo/PushRechargeType.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/store/newRechargeInfo/PushRechargeType.java new file mode 100644 index 000000000..243dad810 --- /dev/null +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/store/newRechargeInfo/PushRechargeType.java @@ -0,0 +1,25 @@ +package com.ljsd.jieling.logic.store.newRechargeInfo; + +public enum PushRechargeType { + main_line(1), + tower(2), + user_level(3), + card_star(4), + fail(5), + tower_fail(6), + once_pay(7), + pokemon_quality(8), + pokemon_star(9), + point_recharge(10), + ; + + private int type; + + PushRechargeType(int type){ + this.type = type; + } + + public int getType() { + return type; + } +} diff --git a/serverlogic/src/main/java/com/ljsd/jieling/thread/ThreadManager.java b/serverlogic/src/main/java/com/ljsd/jieling/thread/ThreadManager.java index 2378aec38..9ac0f2560 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/thread/ThreadManager.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/thread/ThreadManager.java @@ -29,7 +29,7 @@ public class ThreadManager implements IManager { private static MongoDataHandlerTask mongoDataHandlerTask; private static ItemLogTask itemLogTask; public static int SLEEP_INTEVAL_TIME = 60; //每1分钟检查一次 - private static OnlineUserTapTask onlineUserTapTask;//5分钟上报一次 + //private static OnlineUserTapTask onlineUserTapTask;//5分钟上报一次 private static Set> scheduledFutureSets = new HashSet<>(); @@ -42,13 +42,13 @@ public class ThreadManager implements IManager { mongoDataHandlerTask = ConfigurableApplicationContextManager.getBean(MongoDataHandlerTask.class); dataReportTask = ConfigurableApplicationContextManager.getBean(DataReportTask.class); itemLogTask = ConfigurableApplicationContextManager.getBean(ItemLogTask.class); - onlineUserTapTask = ConfigurableApplicationContextManager.getBean(OnlineUserTapTask.class); + //onlineUserTapTask = ConfigurableApplicationContextManager.getBean(OnlineUserTapTask.class); new RetrySendIndicationThread("retry-indi").start(); mongoDataHandlerTask.start(); dataReportTask.start(); itemLogTask.start(); - onlineUserTapTask.start(); + //onlineUserTapTask.start(); scheduledExecutor = new ScheduledThreadPoolExecutor(8, new ScheduleThreadFactory()); scheduledExecutor.setExecuteExistingDelayedTasksAfterShutdownPolicy(false); diff --git a/serverlogic/src/main/java/com/ljsd/jieling/thread/task/OnlineUserReportTask.java b/serverlogic/src/main/java/com/ljsd/jieling/thread/task/OnlineUserReportTask.java index 80f90a88d..eecea22cc 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/thread/task/OnlineUserReportTask.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/thread/task/OnlineUserReportTask.java @@ -1,6 +1,9 @@ package com.ljsd.jieling.thread.task; import com.ljsd.GameApplication; +import com.ljsd.jieling.config.reportData.DataMessageUtils; +import com.ljsd.jieling.ktbeans.OnlineProp; +import com.ljsd.jieling.ktbeans.OnlineUserCalEvent; import com.ljsd.jieling.ktbeans.ReportUtil; import com.ljsd.jieling.ktbeans.sendbeans.ReportServerEvent; import com.ljsd.jieling.logic.OnlineUserManager; @@ -8,7 +11,7 @@ import com.ljsd.jieling.logic.dao.UserManager; import com.ljsd.jieling.logic.dao.root.User; import org.slf4j.Logger; import org.slf4j.LoggerFactory; - +import util.TimeUtils; import java.util.Date; import java.util.HashMap; import java.util.Map; @@ -30,6 +33,16 @@ public class OnlineUserReportTask extends Thread { @Override public void run() { try{ + //5分钟上报一次 + if(TimeUtils.getMiunte()%5 == 0){ + int serverId = GameApplication.serverId; + Set uids = OnlineUserManager.sessionMap.keySet(); + OnlineUserCalEvent onlineUserCalEvent = new OnlineUserCalEvent(); + onlineUserCalEvent.setAppid(GameApplication.serverProperties.getAppId()==null?"APPID":GameApplication.serverProperties.getAppId()); + onlineUserCalEvent.setOnlines(new OnlineProp[]{new OnlineProp(String.valueOf(serverId),uids.size(), TimeUtils.now()/1000)}); + DataMessageUtils.sendOnlinePost(onlineUserCalEvent); + } + Set uids = OnlineUserManager.sessionMap.keySet(); Map channelMap = new HashMap<>(); for(int uid:uids){ diff --git a/serverlogic/src/main/java/com/ljsd/jieling/util/CBean2Proto.java b/serverlogic/src/main/java/com/ljsd/jieling/util/CBean2Proto.java index 5c4802126..314d20a1e 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/util/CBean2Proto.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/util/CBean2Proto.java @@ -464,6 +464,9 @@ public class CBean2Proto { SHardStageBuff buff = SHardStageBuff.getConfigMap().get(nodeConfig.getHardStageBuff()); if(buff.getType()==1 || buff.getType()==3){ monsterSkillList.append(buff.getPassiveSkillLogic()).append("#"); + /*for (int passiveId:buff.getPassiveSkillLogic()) { + monsterSkillList.append(passiveId).append("#"); + }*/ } } 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 c7e142af9..3c30b441e 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/util/ItemUtil.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/util/ItemUtil.java @@ -20,10 +20,7 @@ import com.ljsd.jieling.ktbeans.ReportUtil; import com.ljsd.jieling.ktbeans.parmsBean.ParamEventBean; import com.ljsd.jieling.logic.OnlineUserManager; import com.ljsd.jieling.logic.activity.ActivityType; -import com.ljsd.jieling.logic.activity.event.HeroFiveStarGetEvent; -import com.ljsd.jieling.logic.activity.event.Poster; -import com.ljsd.jieling.logic.activity.event.UseItemEvent; -import com.ljsd.jieling.logic.activity.event.UserLevelEvent; +import com.ljsd.jieling.logic.activity.event.*; import com.ljsd.jieling.logic.dao.*; import com.ljsd.jieling.logic.dao.root.User; import com.ljsd.jieling.logic.hero.HeroLogic; @@ -1262,6 +1259,7 @@ public class ItemUtil { SItem sItem = SItem.getsItemMap().get(entry.getKey()); extraDropAop(user,dropBuilder,sItem); } + fiveStarEvent(user,entry.getKey()); if(reason != BIReason.HERO_RANDOM){ fiveStarPushByCombine(user,entry.getKey(),count); } @@ -1728,4 +1726,11 @@ public class ItemUtil { } } + public static void fiveStarEvent(User user,int itemId){ + SCHero scHero = SCHero.getsCHero().get(itemId); + if(scHero != null && scHero.getStar()==5){ + Poster.getPoster().dispatchEvent(new FiveStarGetEvent(user.getId(),itemId)); + } + } + } 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 4bbb53d26..19a112a89 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/util/MessageUtil.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/util/MessageUtil.java @@ -497,6 +497,7 @@ public class MessageUtil { if(url == null){ return v3; } + LOGGER.info("天眼封禁userId:{},zonId:{},content:{},URL:{}",me.getId(),String.valueOf(GameApplication.serverId),msg,url); skyEyeExtraMap.put("url",url); v3.setExtra(JSON.toJSONString(skyEyeExtraMap)); return v3; diff --git a/tablemanager/src/main/java/config/SSurpriseBox.java b/tablemanager/src/main/java/config/SSurpriseBox.java new file mode 100644 index 000000000..bf04bc914 --- /dev/null +++ b/tablemanager/src/main/java/config/SSurpriseBox.java @@ -0,0 +1,89 @@ +package config; + +import manager.STableManager; +import manager.Table; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +@Table(name ="SurpriseBox") +public class SSurpriseBox implements BaseConfig { + + private int id; + + private int activityId; + + private int packId; + + private int unlockDay; + + private int visibleDay; + + private int viewDay; + + private int buyDay; + + private int limitPackFId; + + private int limitPackBId; + + private int rule; + + /** + * key: 活动id value: 对象list + */ + public static Map> map = new HashMap<>(); + + @Override + public void init() throws Exception { + Map config = STableManager.getConfig(SSurpriseBox.class); + config.values().forEach(v->{ + Map boxMap = map.getOrDefault(v.getActivityId(), new HashMap<>()); + boxMap.put(v.getId(),v); + map.put(v.getActivityId(),boxMap); + }); + } + + + public int getId() { + return id; + } + + public int getActivityId() { + return activityId; + } + + public int getPackId() { + return packId; + } + + public int getVisibleDay() { + return visibleDay; + } + + public int getBuyDay() { + return buyDay; + } + + public int getLimitPackFId() { + return limitPackFId; + } + + public int getLimitPackBId() { + return limitPackBId; + } + + public int getRule() { + return rule; + } + + public int getUnlockDay() { + return unlockDay; + } + + public int getViewDay() { + return viewDay; + } +} \ No newline at end of file diff --git a/tablemanager/src/main/java/config/SWishActivityPool.java b/tablemanager/src/main/java/config/SWishActivityPool.java index d43030cc9..451fc1c5d 100644 --- a/tablemanager/src/main/java/config/SWishActivityPool.java +++ b/tablemanager/src/main/java/config/SWishActivityPool.java @@ -3,9 +3,7 @@ package config; import manager.STableManager; import manager.Table; -import java.util.HashMap; -import java.util.Map; -import java.util.TreeMap; +import java.util.*; @Table(name ="WishActivityPool") public class SWishActivityPool implements BaseConfig { @@ -16,17 +14,31 @@ public class SWishActivityPool implements BaseConfig { private int getRate; - public static Map weight = new TreeMap<>(); + private int camp; + + public static Map> weight = new TreeMap<>(); public static Map map = new HashMap<>(); @Override public void init() throws Exception { Map config = STableManager.getConfig(SWishActivityPool.class); + List allCamp = new ArrayList<>(10); + Map> mapTemp = new HashMap<>(); config.values().forEach(v->{ map.put(v.getId(),v); - weight.put(v.getId(),v.getGetRate()); + //weight修改成只有当前卡池和对应权重 + if(v.getCamp()!=0){ + mapTemp.putIfAbsent(v.getCamp(),new HashMap<>()); + mapTemp.get(v.getCamp()).put(v.getId(),v.getGetRate()); + }else{ + allCamp.add(v.getId()); + } }); + //把通用系的的放进去 + allCamp.forEach(i->mapTemp.forEach((k,v)->v.put(i,map.get(i).getGetRate()))); + //最后再赋值 + weight = mapTemp; } @@ -42,5 +54,7 @@ public class SWishActivityPool implements BaseConfig { return getRate; } - + public int getCamp() { + return camp; + } } \ No newline at end of file