diff --git a/serverlogic/src/main/java/com/ljsd/jieling/db/redis/RedisUtil.java b/serverlogic/src/main/java/com/ljsd/jieling/db/redis/RedisUtil.java index 0857487a6..1ef2b437f 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/db/redis/RedisUtil.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/db/redis/RedisUtil.java @@ -1264,6 +1264,17 @@ public class RedisUtil { } } + public void putMapEntry(String key,String mapKey, T value){ + for (int i = 0; i < MAX_TRY_TIMES; i++) { + try { + redisTemplate.opsForHash().put(key,mapKey,gson.toJson(value)); + return; + } catch (Exception e) { + TimeUtils.sleep(FAILED_SLEEP); + } + } + } + public void putMapEntrys(String type,String key,Map valus){ String rkey = getKey(type, key); Map result = new HashMap<>(); @@ -1310,6 +1321,20 @@ public class RedisUtil { return null; } + public T getMapValue(String key, String mapKey, Class clazz) { + for (int i = 0; i < MAX_TRY_TIMES; i++) { + try { + String valueStr = (String) redisTemplate.opsForHash().get(key, mapKey); + if (valueStr != null) { + return gson.fromJson(valueStr, clazz); + } + } catch (Exception e) { + TimeUtils.sleep(FAILED_SLEEP); + } + } + return null; + } + public T getMapValue(String type, String key, String mapKey, Class clazz) { String rkey = getKey(type, key); 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 1e4227d0c..6455906fd 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/globals/BIReason.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/globals/BIReason.java @@ -418,4 +418,11 @@ public interface BIReason { int GOD_TREE_LV_RESET =1312;//建木神树重置 int GM_BUY_GOOD_COST = 1313;//gm修改器购买礼包消耗 + + int SUPER_GM_DIAL_COST = 1314;//超级GM转盘消耗 + int GOD_GM_DIAL_COST = 1315;//超级GM转盘消耗 + int SUPER_ME_GM_DIAL_COST = 1316;//超级GM转盘消耗 + int SUPER_GM_DIAL_REWARD = 1317;//超级GM转盘消耗 + int GOD_GM_DIAL_REWARD = 1318;//超级GM转盘消耗 + int SUPER_ME_DIAL_REWARD = 1319;//超级GM转盘消耗 } \ No newline at end of file diff --git a/serverlogic/src/main/java/com/ljsd/jieling/globals/Global.java b/serverlogic/src/main/java/com/ljsd/jieling/globals/Global.java index 19e91ce02..a17ea3ed2 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/globals/Global.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/globals/Global.java @@ -68,6 +68,9 @@ public interface Global { int LUCKWHEEL_ADVANCE = 6; //高级探宝 int DEATH_PATH_FIRST = 7;//十绝阵第一名公会 int DILIGENT_NOTICE = 9;// 勤勉,跑马灯 + int SUPER_GM_DIAL = 11;// 超级GM转盘 + int GOD_GM_DIAL= 12;// 神级GM转盘 + int SUPER_ME_GM_DIAL = 13;// 无上GM转盘 int VIPSTORID = 20; //vip商店id int GODSTORID = 57; //vip商店id 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 14ed43ebd..1b4e6d39d 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/handler/GetPlayerInfoHandler.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/handler/GetPlayerInfoHandler.java @@ -10,6 +10,7 @@ import com.ljsd.jieling.globals.BIReason; import com.ljsd.jieling.globals.Global; import com.ljsd.jieling.handler.map.MapManager; import com.ljsd.jieling.jbean.ActivityMission; +import com.ljsd.jieling.jbean.LuckWheelMission; import com.ljsd.jieling.ktbeans.ReportEventEnum; import com.ljsd.jieling.ktbeans.ReportUtil; import com.ljsd.jieling.logic.AiWanPlayerInfoUpload; @@ -19,7 +20,10 @@ import com.ljsd.jieling.logic.activity.ActivityLogic; import com.ljsd.jieling.logic.activity.ActivityTypeEnum; import com.ljsd.jieling.logic.activity.ChoiceDrawCardActivity; import com.ljsd.jieling.logic.activity.LimitRandomSpecialMonsterActivityNew; -import com.ljsd.jieling.logic.activity.event.*; +import com.ljsd.jieling.logic.activity.event.HeroUpStarEvent; +import com.ljsd.jieling.logic.activity.event.Poster; +import com.ljsd.jieling.logic.activity.event.SaveHeroForceEvent; +import com.ljsd.jieling.logic.activity.event.SuperBoxEvent; import com.ljsd.jieling.logic.activity.fourChallenge.FourChallengeLogic; import com.ljsd.jieling.logic.dao.*; import com.ljsd.jieling.logic.dao.root.GlobalSystemControl; @@ -32,7 +36,6 @@ import com.ljsd.jieling.logic.player.PlayerLogic; import com.ljsd.jieling.logic.question.QuestionLogic; import com.ljsd.jieling.logic.store.BuyGoodsNewLogic; import com.ljsd.jieling.logic.store.StoreLogic; -import com.ljsd.jieling.logic.store.newRechargeInfo.NewRechargeInfo; import com.ljsd.jieling.logic.store.newRechargeInfo.bean.ReceiveWelfareBag; import com.ljsd.jieling.netty.cocdex.PacketNetData; import com.ljsd.jieling.network.session.ISession; @@ -83,7 +86,6 @@ public class GetPlayerInfoHandler extends BaseHandler{ ActivityLogic.getInstance().flushForLogin(user,iSession); GlobalDataManaager.checkNeedReFlush(iSession,user,null); BuyGoodsNewLogic.refreshWelfareState(user); -// Poster.getPoster().dispatchEvent(new UserOnlineEvent(userId)); user.getUserMissionManager().onGameEvent(user, GameEvent.LOGIN_GAME,0); long now = TimeUtils.now(); playerInfoManager.setLoginTime(now); @@ -119,17 +121,17 @@ public class GetPlayerInfoHandler extends BaseHandler{ if(type == 1 || type == 3){ user.getMapManager().setCurMapId(0); } - } - CommonProto.Player player = CBean2Proto.getPlayer(userId, user.getPlayerInfoManager(), user.getPlayerInfoManager().getMapId(), user.getMapManager().getCurMapId(),user.getMapManager()); - CommonProto.SuddenlyBossInfo suddenlyBossInfo = CommonProto.SuddenlyBossInfo.newBuilder().setSuddBossId(mapManager.getSuddenlyBoss()).setEndTime(mapManager.getSuddenlyBossEndTime()).setFindMapId(mapManager.getFindSuddenlyBossMapId()).build(); -// CommonProto.VipBaseInfo vipInfoProto = CommonProto.VipBaseInfo.newBuilder() -// .setHadTakeLevelBox(playerInfoManager.getHadTakeLevelBoxVip()) -// .setVipLevel(playerInfoManager.getVipLevel()).build(); + CommonProto.Player player = CBean2Proto.getPlayer(userId, user.getPlayerInfoManager(), user.getMapManager()); + CommonProto.SuddenlyBossInfo suddenlyBossInfo = CommonProto.SuddenlyBossInfo.newBuilder() + .setSuddBossId(mapManager.getSuddenlyBoss()) + .setEndTime(mapManager.getSuddenlyBossEndTime()) + .setFindMapId(mapManager.getFindSuddenlyBossMapId()) + .build(); CommonProto.PlayerBindPhone playerBindPhone = CommonProto.PlayerBindPhone.newBuilder() .setPhoneNum(user.getPlayerInfoManager().getPhoneBindInfo().getPhoneNum()) - .setState(user.getPlayerInfoManager().getPhoneBindInfo().getState()).build(); - NewRechargeInfo newRechargeInfo = playerInfoManager.getNewRechargeInfo(); + .setState(user.getPlayerInfoManager().getPhoneBindInfo().getState()) + .build(); HeroManager heroManager = user.getHeroManager(); Map totalCountMap = heroManager.getTotalCount(); int alreadyCount =0; @@ -153,7 +155,7 @@ public class GetPlayerInfoHandler extends BaseHandler{ 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(); + int equipPool = user.getEquipManager().getSoulEquipPool(); List goodsBagInfo = new ArrayList<>(SRechargeCommodityNewConfig.configMap.size()); BuyGoodsNewLogic.getGoodsBagInfo(userId,goodsBagInfo); int vipPrivilageValue = user.getPlayerInfoManager().getVipPrivilageValue(SMazeTreasureSetting.sMazeTreasureSetting.getRefreshVIP()); @@ -172,94 +174,14 @@ public class GetPlayerInfoHandler extends BaseHandler{ }); } - if (playerInfoManager.getVersionCode()< GlobalsDef.VERSION_CODE) { - if (playerInfoManager.getVersionCode()<1){ - calPractiveSkillData(user); - } - if (playerInfoManager.getVersionCode()<2){ - calHeroHandBookData(user); - } - // 重置天宫商店,2021-12-8 再次重置 - if (playerInfoManager.getVersionCode() < 4) { - user.getStoreManager().removeStoreInfo(17); - } - // 升星配方调整 涉及到线上补偿,上线时根据玩家队伍列表中用拥有的各升星过的神将数量进行补偿 - if (playerInfoManager.getVersionCode() < 5) { - Map heroMap = user.getHeroManager().getHeroMap(); - Map hasHeroMap = new TreeMap<>(); - for (Hero value : heroMap.values()) { - if (value.getStar() == 6) { - if (hasHeroMap.containsKey(6)) { - hasHeroMap.put(6, hasHeroMap.get(6) + 1); - } else { - hasHeroMap.put(6, 1); - } - } else if (value.getStar() == 7) { - if (hasHeroMap.containsKey(7)) { - hasHeroMap.put(7, hasHeroMap.get(7) + 1); - } else { - hasHeroMap.put(7, 1); - } - } else if (value.getStar() == 8) { - if (hasHeroMap.containsKey(8)) { - hasHeroMap.put(8, hasHeroMap.get(8) + 1); - } else { - hasHeroMap.put(8, 1); - } - } else if (value.getStar() == 9) { - if (hasHeroMap.containsKey(9)) { - hasHeroMap.put(9, hasHeroMap.get(9) + 1); - } else { - hasHeroMap.put(9, 1); - } - } else if (value.getStar() == 10) { - if (hasHeroMap.containsKey(10)) { - hasHeroMap.put(10, hasHeroMap.get(10) + 1); - } else { - hasHeroMap.put(10, 1); - } - } else if (value.getStar() == 11) { - if (hasHeroMap.containsKey(11)) { - hasHeroMap.put(11, hasHeroMap.get(11) + 1); - } else { - hasHeroMap.put(11, 1); - } - } - } - if (!hasHeroMap.isEmpty()) { - StringBuilder stringBuilder = new StringBuilder(); - String txtStart = SErrorCodeEerverConfig.getI18NMessage("starcomposechange_mail_txt_start"); - stringBuilder.append(txtStart); - int totalCount = 0; - for (Map.Entry entry : hasHeroMap.entrySet()) { - int count = entry.getValue() * map.getOrDefault(entry.getKey(), 0); - totalCount += count; - String txt = SErrorCodeEerverConfig.getFormatMessage("starcomposechange_mail_txt_" + entry.getKey(), new Object[]{entry.getValue(), count}); - stringBuilder.append(txt); - } - String txtEnd = SErrorCodeEerverConfig.getFormatMessage("starcomposechange_mail_txt_end", new Object[]{totalCount}); - stringBuilder.append(txtEnd); - String title = SErrorCodeEerverConfig.getI18NMessage("starcomposechange_mail_title"); - MailLogic.getInstance().sendMail(user.getId(), title, stringBuilder.toString(), GlobalsDef.FIVE_STAR_ITEM + "#" + totalCount, TimeUtils.nowInt(), Global.MAIL_EFFECTIVE_TIME); - } - - } - - - playerInfoManager.setVersionCode(GlobalsDef.VERSION_CODE); - } - // 处理玩家旧头像框,兼容,一个玩家只执行一次 - PlayerLogic.getInstance().checkOldHeadFrame(user); - // 魂印图鉴,旧数据容错 - PlayerLogic.getInstance().soulPrintHandBookDispose(user); - // 心愿抽卡 旧玩家兼容 - wishOldUserRandomNumInit(user); - // 摘星阁装备强化调整后返还玩家强化道具 - calEquipStrongData(user); - // 法宝最高等级处理 - maxEspecialEquipHandle(user); - // 建木神树等级处理 - godTreeLvHandle(user); + upHeroStarHandle(user);//升星配方调整 + PlayerLogic.getInstance().checkOldHeadFrame(user);// 处理玩家旧头像框,兼容,一个玩家只执行一次 + PlayerLogic.getInstance().soulPrintHandBookDispose(user);// 魂印图鉴,旧数据容错 + wishOldUserRandomNumInit(user);// 心愿抽卡 旧玩家兼容 + calEquipStrongData(user);// 摘星阁装备强化调整后返还玩家强化道具 + maxEspecialEquipHandle(user);// 法宝最高等级处理 + godTreeLvHandle(user);// 建木神树等级处理 + luckDialHandle(user);// 幸运转盘次数处理 // 四灵试炼初始化 FourChallengeLogic.getInstance().firstGetTimes(user); @@ -329,17 +251,12 @@ public class GetPlayerInfoHandler extends BaseHandler{ .build(); ReportUtil.onReportEvent(user, ReportEventEnum.APP_LOGIN.getType()); try { - // 家园建筑解锁 - Poster.getPoster().dispatchEvent(new HomeEvent(user.getId())); - //hotfix - Poster.getPoster().dispatchEvent(new SuperBoxEvent(user.getId(),SuperBoxEvent.default_id)); - // 登峰造极孙悟空 - Poster.getPoster().dispatchEvent(new HeroUpStarEvent(user.getId(),10023,0)); - // 常驻活动重置 - finalActivityReset(user); - // 无尽秘宝处理 - endLessTreasureHandler(user); - expeditionTreasureHandler(user); + Poster.getPoster().dispatchEvent(new HomeEvent(user.getId()));// 家园建筑解锁 + Poster.getPoster().dispatchEvent(new SuperBoxEvent(user.getId(),SuperBoxEvent.default_id));// 惊喜礼盒 + Poster.getPoster().dispatchEvent(new HeroUpStarEvent(user.getId(),10023,0));// 登峰造极孙悟空 + finalActivityReset(user);// 常驻活动重置 + endLessTreasureHandler(user);// 无尽秘宝处理 + expeditionTreasureHandler(user);// 天宫秘宝刷新 user.getUserMissionManager().onGameEvent(user,GameEvent.DAILY_TASK_TYPE,0,user); MessageUtil.sendIndicationMessage(iSession, 1, MessageTypeProto.MessageType.WorldLevelIndication_VALUE, PlayerInfoProto.WorldLevelIndication.newBuilder().setWorldLeve(GlobleSystemLogic.getGlobalWorldLevelCache()).build(), true); MessageUtil.sendMessage(iSession, 1, MessageTypeProto.MessageType.GET_PLAYERINFO_RESPONSE_VALUE, getPlayerInfoResponse, true); @@ -628,6 +545,109 @@ public class GetPlayerInfoHandler extends BaseHandler{ MailLogic.getInstance().sendMail(user.getId(),title,content,"",TimeUtils.nowInt(),Global.MAIL_EFFECTIVE_TIME); } + /** + * 升星配方调整 + * @param user + */ + private void upHeroStarHandle(User user){ + PlayerManager playerInfoManager = user.getPlayerInfoManager(); + if (playerInfoManager.getVersionCode()< GlobalsDef.VERSION_CODE) { + if (playerInfoManager.getVersionCode()<1){ + calPractiveSkillData(user); + } + if (playerInfoManager.getVersionCode()<2){ + calHeroHandBookData(user); + } + // 重置天宫商店,2021-12-8 再次重置 + if (playerInfoManager.getVersionCode() < 4) { + user.getStoreManager().removeStoreInfo(17); + } + // 升星配方调整 涉及到线上补偿,上线时根据玩家队伍列表中用拥有的各升星过的神将数量进行补偿 + if (playerInfoManager.getVersionCode() < 5) { + Map heroMap = user.getHeroManager().getHeroMap(); + Map hasHeroMap = new TreeMap<>(); + for (Hero value : heroMap.values()) { + if (value.getStar() == 6) { + if (hasHeroMap.containsKey(6)) { + hasHeroMap.put(6, hasHeroMap.get(6) + 1); + } else { + hasHeroMap.put(6, 1); + } + } else if (value.getStar() == 7) { + if (hasHeroMap.containsKey(7)) { + hasHeroMap.put(7, hasHeroMap.get(7) + 1); + } else { + hasHeroMap.put(7, 1); + } + } else if (value.getStar() == 8) { + if (hasHeroMap.containsKey(8)) { + hasHeroMap.put(8, hasHeroMap.get(8) + 1); + } else { + hasHeroMap.put(8, 1); + } + } else if (value.getStar() == 9) { + if (hasHeroMap.containsKey(9)) { + hasHeroMap.put(9, hasHeroMap.get(9) + 1); + } else { + hasHeroMap.put(9, 1); + } + } else if (value.getStar() == 10) { + if (hasHeroMap.containsKey(10)) { + hasHeroMap.put(10, hasHeroMap.get(10) + 1); + } else { + hasHeroMap.put(10, 1); + } + } else if (value.getStar() == 11) { + if (hasHeroMap.containsKey(11)) { + hasHeroMap.put(11, hasHeroMap.get(11) + 1); + } else { + hasHeroMap.put(11, 1); + } + } + } + if (!hasHeroMap.isEmpty()) { + StringBuilder stringBuilder = new StringBuilder(); + String txtStart = SErrorCodeEerverConfig.getI18NMessage("starcomposechange_mail_txt_start"); + stringBuilder.append(txtStart); + int totalCount = 0; + for (Map.Entry entry : hasHeroMap.entrySet()) { + int count = entry.getValue() * map.getOrDefault(entry.getKey(), 0); + totalCount += count; + String txt = SErrorCodeEerverConfig.getFormatMessage("starcomposechange_mail_txt_" + entry.getKey(), new Object[]{entry.getValue(), count}); + stringBuilder.append(txt); + } + String txtEnd = SErrorCodeEerverConfig.getFormatMessage("starcomposechange_mail_txt_end", new Object[]{totalCount}); + stringBuilder.append(txtEnd); + String title = SErrorCodeEerverConfig.getI18NMessage("starcomposechange_mail_title"); + MailLogic.getInstance().sendMail(user.getId(), title, stringBuilder.toString(), GlobalsDef.FIVE_STAR_ITEM + "#" + totalCount, TimeUtils.nowInt(), Global.MAIL_EFFECTIVE_TIME); + } + + } + playerInfoManager.setVersionCode(GlobalsDef.VERSION_CODE); + } + } + + /** + * 幸运转盘次数处理 + * @param user + */ + private void luckDialHandle(User user) { + PlayerManager player = user.getPlayerInfoManager(); + int bottomNumber = player.getTurntableBottomNumber(); + int turntableBottomNumber = player.getSeniorTurntableBottomNumber(); + LuckWheelMission luckWheel = user.getActivityManager().getLuckWheel(); + LuckWheelMission luckWheelAdvance = user.getActivityManager().getLuckWheelAdvance(); + if (bottomNumber <= 0 && turntableBottomNumber <= 0){ + return; + } + user.getActivityManager().putDialRewardInfo(30,luckWheel); + user.getActivityManager().putDialRewardInfo(31,luckWheelAdvance); + player.addGmDialNum(30,bottomNumber); + player.addGmDialNum(31,turntableBottomNumber); + player.setTurntableBottomNumber(0); + player.setSeniorTurntableBottomNumber(0); + } + /** * 摘星阁装备强化调整后返还玩家强化道具 * @param user diff --git a/serverlogic/src/main/java/com/ljsd/jieling/handler/activity/GetLuckWheelHandler.java b/serverlogic/src/main/java/com/ljsd/jieling/handler/activity/GetLuckWheelHandler.java index 6785b1056..72a569bce 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/handler/activity/GetLuckWheelHandler.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/handler/activity/GetLuckWheelHandler.java @@ -18,23 +18,20 @@ import org.springframework.stereotype.Component; * CreateDate: 2019/9/25 20:31 */ @Component -public class GetLuckWheelHandler extends BaseHandler { +public class GetLuckWheelHandler extends BaseHandler { @Override public MessageTypeProto.MessageType getMessageCode() { return MessageTypeProto.MessageType.GET_LUCKWHEEL_REQUEST; } @Override - public void process(ISession iSession, PacketNetData netData) throws Exception { + public void processWithProto(ISession iSession, PlayerInfoProto.GetLuckWheelRequest proto) throws Exception { int uid = iSession.getUid(); User user = UserManager.getUser(uid); PlayerInfoProto.LuckWheelIndication.Builder builder = PlayerInfoProto.LuckWheelIndication.newBuilder(); - builder.addAllPosInfos(LuckWheelActivity.getLuckWheelReward(user, ActivityType.LUCK_WHEEL)); - builder.addAllPosInfosAdvance(LuckWheelActivity.getLuckWheelReward(user,ActivityType.LUCK_WHEEL_ADVANCE)); -// if(builder.getPosInfosAdvanceCount()==0||builder.getPosInfosCount()==0){ -// return; -// } + + builder.addDialInfo(LuckWheelActivity.getLuckWheelReward(user, proto.getActiviteId())); MessageUtil.sendMessage(iSession, 1, MessageTypeProto.MessageType.GET_LUCKWHEEL_RESPONSE_VALUE, builder.build(), true); } } diff --git a/serverlogic/src/main/java/com/ljsd/jieling/handler/activity/GetLuckWheelRandHandler.java b/serverlogic/src/main/java/com/ljsd/jieling/handler/activity/GetLuckWheelRandHandler.java index 92fa245eb..8496b3f84 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/handler/activity/GetLuckWheelRandHandler.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/handler/activity/GetLuckWheelRandHandler.java @@ -1,6 +1,7 @@ package com.ljsd.jieling.handler.activity; import com.ljsd.jieling.chat.logic.ChatLogic; +import com.ljsd.jieling.core.VipPrivilegeType; import com.ljsd.jieling.exception.ErrorCode; import com.ljsd.jieling.exception.ErrorCodeException; import com.ljsd.jieling.globals.BIReason; @@ -12,20 +13,20 @@ 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.logic.activity.LuckWheelActivity; -import com.ljsd.jieling.logic.activity.event.LuckWheelAdvanceEvent; import com.ljsd.jieling.logic.activity.event.LuckWheelEvent; import com.ljsd.jieling.logic.activity.event.Poster; import com.ljsd.jieling.logic.dao.UserManager; import com.ljsd.jieling.logic.dao.root.User; import com.ljsd.jieling.logic.mission.GameEvent; +import com.ljsd.jieling.logic.player.PlayerLogic; import com.ljsd.jieling.network.session.ISession; -import rpc.protocols.CommonProto; -import rpc.protocols.MessageTypeProto; -import rpc.protocols.PlayerInfoProto; import com.ljsd.jieling.util.ItemUtil; import com.ljsd.jieling.util.MessageUtil; import config.*; import org.springframework.stereotype.Component; +import rpc.protocols.CommonProto; +import rpc.protocols.MessageTypeProto; +import rpc.protocols.PlayerInfoProto; import java.util.HashSet; import java.util.LinkedList; @@ -46,9 +47,7 @@ public class GetLuckWheelRandHandler extends BaseHandlercfgTime){ - throw new ErrorCodeException( ErrorCode.SERVER_DEFINE_SELF,"不可超出每日探宝上限次数!"); + throw new ErrorCodeException(ErrorCode.SERVER_DEFINE_SELF,"不可超出每日探宝上限次数!"); } user.getPlayerInfoManager().setLuckWheelLimitTime(luckWheelLimitTime+time); - }else { + } + // 高级探宝 + if(sGlobalActivity.getId() == 31) { int luckWheelLimitTime = user.getPlayerInfoManager().getLuckAdvanceWheelLimitTime(); if(luckWheelLimitTime+time>cfgTime){ - throw new ErrorCodeException( ErrorCode.SERVER_DEFINE_SELF,"不可超出每日探宝上限次数!"); + throw new ErrorCodeException(ErrorCode.SERVER_DEFINE_SELF,"不可超出每日探宝上限次数!"); } user.getPlayerInfoManager().setLuckAdvanceWheelLimitTime(luckWheelLimitTime+time); } + // gm转盘 + if(sGlobalActivity.getId() == 10701 || sGlobalActivity.getId() == 10702 || sGlobalActivity.getId() == 10703) { + boolean checkAndUpdate = PlayerLogic.getInstance().checkAndUpdate(user, VipPrivilegeType.SUPER_GM_TURNTABLE_ADD_NUM, time); + if(!checkAndUpdate){ + throw new ErrorCodeException(ErrorCode.LEVE_MAX, "不可超出每日gm转盘上限次数!"); + } + } - int luckId; - int lastpos=1; Set posSet = new HashSet<>(); - int[][] drops = new int[time][]; for (int i = 0; i < time; i++) { - luckId = ((LuckWheelActivity) abstractActivity).getNewRewardPool(user); - if(luckId==-1){ + int luckId = ((LuckWheelActivity) abstractActivity).getNewRewardPool(user); + if(luckId == -1){ //策划说会留个无数次的 否者道具会多扣 throw new ErrorCodeException(ErrorCode.newDefineCode("奖池不足")); } SDialRewardConfig sDialRewardConfig = SDialRewardConfig.getsDialRewardConfigMap().get(luckId); drops[i] = sDialRewardConfig.getReward(); //upprocess - lastpos = sDialRewardConfig.getPoolId(); + int lastpos = sDialRewardConfig.getPoolId(); posSet.add(lastpos); LuckWheelPosInfo luckWheelPosInfo = luckWheelMission.getPosInfoMap().get(lastpos); luckWheelPosInfo.setProgrss(luckWheelPosInfo.getProgrss()+1); @@ -116,15 +121,14 @@ public class GetLuckWheelRandHandler extends BaseHandler rewardPosInfoList = new LinkedList<>(); for (Integer pos : posSet) { LuckWheelPosInfo luckWheelPosInfo = luckWheelMission.getPosInfoMap().get(pos); @@ -134,19 +138,88 @@ public class GetLuckWheelRandHandler extends BaseHandler dialRewardInfo = new HashMap<>(); //转盘奖池 private com.ljsd.jieling.jbean.SubRewardPoolInfo subRewardPoolInfo; // 挖矿奖池 private Map> doubleRewardPoolInfo = new HashMap<>(); // 奇门遁甲奖池 @@ -30,13 +32,13 @@ public final class ActivityManager extends MongoBase { this.luckWheelAdvance = new LuckWheelMission(_o_.luckWheelAdvance); this.subRewardPoolInfo = new SubRewardPoolInfo(_o_.subRewardPoolInfo); this.doubleRewardPoolInfo = new HashMap<>(_o_.doubleRewardPoolInfo); + this.dialRewardInfo = new HashMap<>(_o_.dialRewardInfo); } public Map getActivityMissionMap() { if( null == activityMissionMapLog && activityMissionMap != null) activityMissionMapLog = new LogHashMap( this,"activityMissionMap",activityMissionMap); return this.activityMissionMapLog; -// return this.activityMissionMap; } public long getSenvenStartTime() { // 七日狂欢开始时间 @@ -87,6 +89,20 @@ public final class ActivityManager extends MongoBase { return doubleRewardPoolInfo; } + public Map getDialRewardInfo() { + return dialRewardInfo; + } + + public void setDialRewardInfo(Map dialRewardInfo) { + this.dialRewardInfo = dialRewardInfo; + updateString("dialRewardInfo",dialRewardInfo); + } + + public void putDialRewardInfo(int activityId, LuckWheelMission luckWheel) { + this.dialRewardInfo.put(activityId,luckWheel); + updateString("dialRewardInfo",dialRewardInfo); + } + @Override public String toString() { StringBuilder _sb_ = new StringBuilder(super.toString()); 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 7481d1a42..c1684acd0 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 @@ -8,8 +8,6 @@ import com.ljsd.jieling.jbean.ActivityManager; import com.ljsd.jieling.jbean.ActivityMission; import com.ljsd.jieling.jbean.ActivityProgressInfo; import com.ljsd.jieling.ktbeans.KtEventUtils; -import com.ljsd.jieling.ktbeans.ReportEventEnum; -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.event.ActivityStateChangeEvent; 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 cffbd2f81..0c03be7c2 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 @@ -114,6 +114,8 @@ public class ActivityLogic implements IEventHandler{ //幸运转盘活动刷新 ActivityLogic.getInstance().resumeActivity(user, ActivityType.LUCK_WHEEL); ActivityLogic.getInstance().resumeActivity(user, ActivityType.LUCK_WHEEL_ADVANCE); + ActivityLogic.getInstance().resumeActivity(user, ActivityType.GM_DIAL); + // 青龙秘宝活动刷新 ActivityLogic.getInstance().resumeActivity(user,ActivityType.TREASURE); //每日特惠礼包开启的活動刷新 ActivityLogic.getInstance().resumeActivity(user,ActivityType.DAILY_PREFERENTIAL_GIFT); @@ -123,6 +125,7 @@ public class ActivityLogic implements IEventHandler{ upFiveActivityTypes.add(ActivityType.DAILY_RECHARGE); upFiveActivityTypes.add(ActivityType.LUCK_WHEEL); upFiveActivityTypes.add(ActivityType.LUCK_WHEEL_ADVANCE); + upFiveActivityTypes.add(ActivityType.GM_DIAL); upFiveActivityTypes.add(ActivityType.RECHARGE_NUM); upFivePlayerActivity(user, upFiveActivityTypes, fBuilder); } @@ -259,9 +262,11 @@ public class ActivityLogic implements IEventHandler{ Map activityUpdateMap = new HashMap<>(); boolean sendLuckWheelPool =false; for (Integer activityId : openNews) { - if(ActivityType.LUCK_WHEEL == SGlobalActivity.getsGlobalActivityMap().get(activityId).getType() - ||ActivityType.LUCK_WHEEL_ADVANCE == SGlobalActivity.getsGlobalActivityMap().get(activityId).getType()) + // 转盘活动数据 + Set keySet = SDialRewardSetting.getsDialRewardSettingMapByType().keySet(); + if (keySet.contains(activityId)){ sendLuckWheelPool=true; + } activityUpdateMap.put(activityId, activityMissionMap.get(activityId)); } List activityInfos = getActivityInfos(user1,activityUpdateMap, user1.getPlayerInfoManager().getCreateTime()); @@ -348,32 +353,11 @@ public class ActivityLogic implements IEventHandler{ activityMission.setCreatTime(TimeUtils.now()); } - public LuckWheelMission getLuckWheel(ActivityManager activityManager, int type) { - LuckWheelMission luckWheelMission = type == ActivityType.LUCK_WHEEL ? activityManager.getLuckWheel() : activityManager.getLuckWheelAdvance(); - if (null == luckWheelMission) { -// String key = type == ActivityType.LUCK_WHEEL ? "luckWheel" : "luckWheelAdvance"; - if (type == ActivityType.LUCK_WHEEL) { - luckWheelMission = new LuckWheelMission(); - activityManager.setLuckWheel(luckWheelMission); - } else { - luckWheelMission = new LuckWheelMission(); - activityManager.setLuckWheelAdvance(luckWheelMission); - } - } - return luckWheelMission; + public LuckWheelMission getLuckWheel(ActivityManager activityManager, int activityId) { + return activityManager.getDialRewardInfo().getOrDefault(activityId,new LuckWheelMission()); } - public void initLuckWheel(ActivityManager activityManager,int type) { - LuckWheelMission luckWheelMission = type == ActivityType.LUCK_WHEEL ? activityManager.getLuckWheel() : activityManager.getLuckWheelAdvance(); - if (null != luckWheelMission) { -// String key = type == ActivityType.LUCK_WHEEL ? "luckWheel" : "luckWheelAdvance"; - if (type == ActivityType.LUCK_WHEEL) { - activityManager.setLuckWheel(luckWheelMission); - } else { - luckWheelMission = new LuckWheelMission(); - activityManager.setLuckWheelAdvance(luckWheelMission); - } - } + public void initLuckWheel(ActivityManager activityManager,int activityId) { } /** @@ -581,9 +565,10 @@ public class ActivityLogic implements IEventHandler{ private void sendLuckWheelPool(User user,ISession session){ PlayerInfoProto.LuckWheelIndication.Builder builder = PlayerInfoProto.LuckWheelIndication.newBuilder(); - builder.addAllPosInfos(LuckWheelActivity.getLuckWheelReward(user,ActivityType.LUCK_WHEEL)); - builder.addAllPosInfosAdvance(LuckWheelActivity.getLuckWheelReward(user,ActivityType.LUCK_WHEEL_ADVANCE)); - if(builder.getPosInfosAdvanceCount()==0||builder.getPosInfosCount()==0){ + for (Integer activityId : SDialRewardSetting.getsDialRewardSettingMapByType().keySet()) { + builder.addDialInfo(LuckWheelActivity.getLuckWheelReward(user,activityId)); + } + if (builder.getDialInfoCount() <= 0){ return; } MessageUtil.sendIndicationMessage(session, 1, MessageTypeProto.MessageType.LUCKWHEEL_POOL_INDICATION_VALUE, builder.build(), true); @@ -700,9 +685,10 @@ public class ActivityLogic implements IEventHandler{ Map activityMissionMap = user.getActivityManager().getActivityMissionMap(); Map activityUpdateMap = new HashMap<>(); boolean sendLuckWheelPool =false; - if(ActivityType.LUCK_WHEEL == SGlobalActivity.getsGlobalActivityMap().get(activityId).getType() - ||ActivityType.LUCK_WHEEL_ADVANCE == SGlobalActivity.getsGlobalActivityMap().get(activityId).getType()) + Set keySet = SDialRewardSetting.getsDialRewardSettingMapByType().keySet(); + if (keySet.contains(activityId)){ sendLuckWheelPool=true; + } activityUpdateMap.put(activityId, activityMissionMap.get(activityId)); List activityInfos = getActivityInfos(user,activityUpdateMap, user.getPlayerInfoManager().getCreateTime()); builder.addAllActivityInfo(activityInfos); @@ -840,10 +826,7 @@ public class ActivityLogic implements IEventHandler{ } if(abstractActivity instanceof LuckWheelActivity){ - if(targetActivityType==ActivityType.LUCK_WHEEL) - fBuilder.addAllPosInfos(LuckWheelActivity.getLuckWheelReward(user,targetActivityType)); - if(targetActivityType==ActivityType.LUCK_WHEEL_ADVANCE) - fBuilder.addAllPosInfosAdvance(LuckWheelActivity.getLuckWheelReward(user,targetActivityType)); + fBuilder.addInfos(LuckWheelActivity.getLuckWheelReward(user,activityId)); continue; } @@ -852,7 +835,7 @@ public class ActivityLogic implements IEventHandler{ int endTime = (int) (ToolsUtil.getTimeLong(sGlobalActivity.getStartTimeLong(),sGlobalActivity.getEndTimeLong(),sGlobalActivity.getTime(),createTime, 2) / 1000); List missionInfos = abstractActivity.getAllMissInfo(user,activityMission); fBuilder.addActivityInfo(CommonProto.ActivityInfo.newBuilder().setValue(activityMission.getV()).setActivityId(activityId).addAllMission(missionInfos).setStartTime(startTime).setEndTime(endTime).setReallyOpen(activityMission.getOpenType()).build()); - fBuilder.setHadLuckTime( user.getPlayerInfoManager().getLuckWheelLimitTime()); + fBuilder.setHadLuckTime(user.getPlayerInfoManager().getLuckWheelLimitTime()); fBuilder.setHadAdvanceLuckTime(user.getPlayerInfoManager().getLuckAdvanceWheelLimitTime()); } 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 65168f272..ea0569c00 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 @@ -143,4 +143,5 @@ public interface ActivityType { int INFINITE_RESOURCES_PAVILION = 104;//无限资源阁 int ALL_PEOPLE_WELFARE = 105;//全民福利 int GIVE_ENDLESS_DRAW = 106;//送无限抽 + int GM_DIAL = 107;//gm转盘 } 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 da102729c..a66056f5a 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 @@ -39,7 +39,7 @@ public enum ActivityTypeEnum { ESPECIALEQUIP_EXPERT(ActivityType.ESPECIALEQUIP_EXPERT, EspecialEquipExpectActivity::new), SOULEQUIP_EXPERT(ActivityType.SOULEQUIP_EXPERT, SoulEquipExpectActivity::new), LUCK_WHEEL(ActivityType.LUCK_WHEEL, LuckWheelNormalActivity::new), - LUCK_WHEEL_ADVANCE(ActivityType.LUCK_WHEEL_ADVANCE, LuckWheelAdvancedActivity::new), + LUCK_WHEEL_ADVANCE(ActivityType.LUCK_WHEEL_ADVANCE, LuckWheelNormalActivity::new), NEW_WELFARE(ActivityType.NEW_WELFARE, NewWelfareActivity::new), // LIMIT_RANDOM_CARD(ActivityType.LIMIT_RANDOM_CARD,LimitRandomCardActivity::new), LIMIT_UP_CARD(ActivityType.LIMIT_UP_CARD,LimitUpCardActivity::new), @@ -116,6 +116,7 @@ public enum ActivityTypeEnum { INFINITE_RESOURCES_PAVILION(ActivityType.INFINITE_RESOURCES_PAVILION, InfiniteResourcesPavilionActivity::new),//无限资源阁 ALL_PEOPLE_WELFARE(ActivityType.ALL_PEOPLE_WELFARE, AllPeopleWelfareActivity::new),//全民福利 GIVE_ENDLESS_DRAW(ActivityType.GIVE_ENDLESS_DRAW, GiveEndlessDrawActivity::new),//送无限抽 + GM_DIAL(ActivityType.GM_DIAL, LuckWheelNormalActivity::new);//gm转盘 ; private int type; diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/AllPeopleWelfareActivity.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/AllPeopleWelfareActivity.java index 8435df17d..f74bb8ec5 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/AllPeopleWelfareActivity.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/AllPeopleWelfareActivity.java @@ -58,14 +58,14 @@ public class AllPeopleWelfareActivity extends AbstractActivity { sendActivityProgress(user, user.getActivityManager().getActivityMissionMap().get(id), null); } - public static int getValue(){ - String value = String.valueOf(RedisUtil.getInstence().get(RedisKey.ALL_PEOPLE_WELFARE_BUY_COUNT)); - return Optional.ofNullable(value).map(v->Integer.parseInt(v)).orElse(0); + public static int getValue(int goodId){ + Integer value = RedisUtil.getInstence().getMapValue(RedisKey.ALL_PEOPLE_WELFARE_BUY_COUNT, String.valueOf(goodId), Integer.class); + return Optional.ofNullable(value).orElse(0); } - public static void addValue(int count){ - int value = getValue()+count; - RedisUtil.getInstence().set(RedisKey.ALL_PEOPLE_WELFARE_BUY_COUNT,String.valueOf(value)); + public static void addValue(int goodId, int count){ + int value = getValue(goodId)+count; + RedisUtil.getInstence().putMapEntry(RedisKey.ALL_PEOPLE_WELFARE_BUY_COUNT, String.valueOf(goodId), value); } /** @@ -73,10 +73,9 @@ public class AllPeopleWelfareActivity extends AbstractActivity { * @param giftId */ private void updateValue(int giftId){ - List giftList = SUniversalWelfareConfig.getGiftList(); // 验证礼包id - if (giftList.contains(giftId)){ - addValue(1); + if (SUniversalWelfareConfig.getGoods().contains(giftId)){ + addValue(giftId,1); } } @@ -91,10 +90,10 @@ public class AllPeopleWelfareActivity extends AbstractActivity { Map config = STableManager.getConfig(SUniversalWelfareConfig.class); // 返回对象 List missionInfos = new ArrayList<>(config.size()); - int value = getValue(); for (Map.Entry entry : config.entrySet()) { // 参数初始化 int missionId = entry.getKey(); + int value = getValue(entry.getValue().getRechargeCom()); int state = getState(progressInfoMap.get(missionId)); // 封装proto并返回 CommonProto.ActivityInfo.MissionInfo build = CommonProto.ActivityInfo.MissionInfo.newBuilder() @@ -143,7 +142,7 @@ public class AllPeopleWelfareActivity extends AbstractActivity { if (progressInfo != null && progressInfo.getState() == ActivityType.HAD_TAKED){ throw new ErrorCodeException(ErrorCode.SYS_ERROR_CODE,"档位已领取,活动id ==> 挡位id:"+id+"==>"+missionId); } - int value = getValue(); + int value = getValue(welfareConfig.getRechargeCom()); if (value < welfareConfig.getPeolple()){ throw new ErrorCodeException(ErrorCode.SYS_ERROR_CODE,"条件不满足,活动id ==> 挡位id ==> 当前数量:"+id+"==>"+missionId+"==>"+value); } diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/LuckWheelActivity.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/LuckWheelActivity.java index fa67d1f8b..85daec7b4 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/LuckWheelActivity.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/LuckWheelActivity.java @@ -9,11 +9,11 @@ import com.ljsd.jieling.logic.activity.event.LuckWheelEvent; import com.ljsd.jieling.logic.dao.UserManager; import com.ljsd.jieling.logic.dao.root.User; import com.ljsd.jieling.network.session.ISession; -import rpc.protocols.CommonProto; import config.SActivityRewardConfig; import config.SDialRewardConfig; import config.SDialRewardSetting; import config.SGlobalActivity; +import rpc.protocols.CommonProto; import util.MathUtils; import java.util.*; @@ -41,16 +41,21 @@ public abstract class LuckWheelActivity extends AbstractActivity { LuckWheelActivity(int id) { super(id); SGlobalActivity sGlobalActivity = SGlobalActivity.getsGlobalActivityMap().get(id); - SDialRewardSetting sDialRewardSetting = SDialRewardSetting.getsDialRewardSettingMapByType().get(sGlobalActivity.getType()); + SDialRewardSetting sDialRewardSetting = SDialRewardSetting.getsDialRewardSettingMapByType().get(sGlobalActivity.getId()); Dial_PerScore = sDialRewardSetting.getIntegral(); } @Override public void onEvent(IEvent event) throws Exception { - super.onEvent(event); - if (!(event instanceof LuckWheelEvent)) + if (!(event instanceof LuckWheelEvent)) { return; - update(UserManager.getUser(((LuckWheelEvent) event).getUid()), Dial_PerScore*((LuckWheelEvent) event).getTime()); + } + LuckWheelEvent luckWheelEvent = (LuckWheelEvent) event; + if (luckWheelEvent.getActivityId() != id){ + return; + } + User user = UserManager.getUser(luckWheelEvent.getUid()); + update(user, Dial_PerScore*luckWheelEvent.getTime()); } @Override @@ -67,9 +72,8 @@ public abstract class LuckWheelActivity extends AbstractActivity { * 重置奖励 */ public void randomReward(User user) { - SGlobalActivity sGlobalActivity = SGlobalActivity.getsGlobalActivityMap().get(id); - LuckWheelMission luckWheelMission =ActivityLogic.getInstance().getLuckWheel(user.getActivityManager(),sGlobalActivity.getType()); + LuckWheelMission luckWheelMission =ActivityLogic.getInstance().getLuckWheel(user.getActivityManager(),sGlobalActivity.getId()); Map> posPools = SDialRewardConfig.getsRandPosMap().get(id); for (int i = 1; i <= posPools.size(); i++) { LuckWheelPosInfo luckWheelPosInfo = new LuckWheelPosInfo(); @@ -86,25 +90,22 @@ public abstract class LuckWheelActivity extends AbstractActivity { luckWheelPosInfo.setLuckId(luckId); luckWheelMission.getPosInfoMap().put(i, luckWheelPosInfo); } - } - public static List getLuckWheelReward(User user, int type) { + public static CommonProto.DialInfo getLuckWheelReward(User user, int activityId) { List rewardPosInfoList = new LinkedList<>(); - // SGlobalActivity sGlobalActivity = SGlobalActivity.getsGlobalActivityMap().get(activityId); - LuckWheelMission luckWheelMission =ActivityLogic.getInstance().getLuckWheel(user.getActivityManager(),type); + LuckWheelMission luckWheelMission = ActivityLogic.getInstance().getLuckWheel(user.getActivityManager(),activityId); for (Map.Entry entry : luckWheelMission.getPosInfoMap().entrySet()) { - int luckId = entry.getValue().getLuckId(); -// int limitnum = SDialRewardConfig.getsDialRewardConfigMap().get(luckId).getLimitNum(); -// if (limitnum != 0 && entry.getValue().getProgrss() >= SDialRewardConfig.getsDialRewardConfigMap().get(luckId).getLimitNum()) -// continue; - CommonProto.LuckWheelRewardPosInfo.Builder builder = CommonProto.LuckWheelRewardPosInfo.newBuilder(); - builder.setLuckId(entry.getValue().getLuckId()); - builder.setPos(entry.getKey()); - builder.setLuckTimes(entry.getValue().getProgrss()); - rewardPosInfoList.add(builder.build()); + CommonProto.LuckWheelRewardPosInfo.Builder reward = CommonProto.LuckWheelRewardPosInfo.newBuilder(); + reward.setLuckId(entry.getValue().getLuckId()); + reward.setPos(entry.getKey()); + reward.setLuckTimes(entry.getValue().getProgrss()); + rewardPosInfoList.add(reward.build()); } - return rewardPosInfoList; + CommonProto.DialInfo.Builder builder = CommonProto.DialInfo.newBuilder(); + builder.setActivityId(activityId); + builder.addAllRewardInfo(rewardPosInfoList); + return builder.build(); } @@ -126,11 +127,13 @@ public abstract class LuckWheelActivity extends AbstractActivity { // 获取活动 SGlobalActivity sGlobalActivity = SGlobalActivity.getsGlobalActivityMap().get(id); // 转盘全部奖励信息 - LuckWheelMission luckWheelMission =ActivityLogic.getInstance().getLuckWheel(user.getActivityManager(),sGlobalActivity.getType()); + LuckWheelMission luckWheelMission =ActivityLogic.getInstance().getLuckWheel(user.getActivityManager(),sGlobalActivity.getId()); // 权重总数 int amount = 0; + // 抽奖次数增加 + user.getPlayerInfoManager().addGmDialNum(id, 1); // 玩家抽奖总次数 - int total = sGlobalActivity.getType() == 30?user.getPlayerInfoManager().addTurntableBottomNumber():user.getPlayerInfoManager().addSeniorTurntableBottomNumber(); + int total = user.getPlayerInfoManager().getGmDialNum(id); for (Map.Entry entry : luckWheelMission.getPosInfoMap().entrySet()) { int luckId = entry.getValue().getLuckId(); @@ -138,7 +141,7 @@ public abstract class LuckWheelActivity extends AbstractActivity { SDialRewardConfig sDialRewardConfig = SDialRewardConfig.getsDialRewardConfigMap().get(luckId); // 限制次数 int limitNum = sDialRewardConfig.getLimitNum(); - if (limitNum!=0&&entry.getValue().getProgrss() >= sDialRewardConfig.getLimitNum()) { + if (limitNum!=0 && entry.getValue().getProgrss()>=sDialRewardConfig.getLimitNum()) { continue; } @@ -149,11 +152,7 @@ public abstract class LuckWheelActivity extends AbstractActivity { weightMap.put(luckId, sDialRewardConfig.getExtractWeight()); amount = sDialRewardConfig.getExtractWeight(); // 次数清理 - if (sGlobalActivity.getType() == 30){ - user.getPlayerInfoManager().setTurntableBottomNumber(0); - }else if (sGlobalActivity.getType() == 31){ - user.getPlayerInfoManager().setSeniorTurntableBottomNumber(0); - } + user.getPlayerInfoManager().putGmDialNum(id,0); break; } @@ -179,9 +178,9 @@ public abstract class LuckWheelActivity extends AbstractActivity { } @Override - public void onActivityEndOnMySelf(User user) throws Exception { + public void onActivityEndOnMySelf(User user) { SGlobalActivity sGlobalActivity = SGlobalActivity.getsGlobalActivityMap().get(id); - ActivityLogic.getInstance().initLuckWheel(user.getActivityManager(),sGlobalActivity.getType()); + ActivityLogic.getInstance().initLuckWheel(user.getActivityManager(),sGlobalActivity.getId()); } @Override diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/event/LuckWheelAdvanceEvent.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/event/LuckWheelAdvanceEvent.java index 1c3a8d3b1..422497b94 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/event/LuckWheelAdvanceEvent.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/event/LuckWheelAdvanceEvent.java @@ -9,7 +9,7 @@ package com.ljsd.jieling.logic.activity.event; */ public class LuckWheelAdvanceEvent extends LuckWheelEvent{ - public LuckWheelAdvanceEvent(int uid, int time) { - super(uid, time); + public LuckWheelAdvanceEvent(int uid, int activityId, int time) { + super(uid,activityId,time); } } diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/event/LuckWheelEvent.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/event/LuckWheelEvent.java index 4b1c8894a..52f258b00 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/event/LuckWheelEvent.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/event/LuckWheelEvent.java @@ -8,13 +8,23 @@ package com.ljsd.jieling.logic.activity.event; */ public class LuckWheelEvent implements IEvent{ private int uid; + private int activityId; private int time; - public LuckWheelEvent(int uid, int time) { + public LuckWheelEvent(int uid, int activityId, int time) { this.uid = uid; + this.activityId = activityId; this.time = time; } + public int getActivityId() { + return activityId; + } + + public void setActivityId(int activityId) { + this.activityId = activityId; + } + public int getUid() { return uid; } 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 7372d4a34..9242837b8 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 @@ -142,10 +142,16 @@ public class PlayerManager extends MongoBase { private Set proudInfo = new HashSet<>(); private int luckWheelLimitTime; - // 转盘保底次数 - private int turntableBottomNumber; - // 高级转盘保底次数 - private int seniorTurntableBottomNumber; + + private int turntableBottomNumber;// 转盘保底次数 + + private int seniorTurntableBottomNumber;// 高级转盘保底次数 + + /** + * gm转盘次数 + * key:活动id,value:次数 + */ + private Map gmDialNum = new HashMap<>(); private int luckAdvanceWheelLimitTime; @@ -252,6 +258,30 @@ public class PlayerManager extends MongoBase { */ private Map btVipLevel = new HashMap<>(); + public Map getGmDialNum() { + return gmDialNum; + } + + public int getGmDialNum(int id) { + return gmDialNum.getOrDefault(id,0); + } + + public void setGmDialNum(Map gmDialNum) { + this.gmDialNum = gmDialNum; + updateString("gmDialNum", gmDialNum); + } + + public void putGmDialNum(int id, int count) { + this.gmDialNum.put(id,count); + updateString("gmDialNum", gmDialNum); + } + + public void addGmDialNum(int id, int count) { + int num = gmDialNum.getOrDefault(id, 0) + count; + gmDialNum.put(id,num); + updateString("gmDialNum", gmDialNum); + } + public Map getBtVipLevel() { return btVipLevel; } @@ -1129,10 +1159,9 @@ public class PlayerManager extends MongoBase { updateString("turntableBottomNumber",turntableBottomNumber); } - public int addTurntableBottomNumber() { - this.turntableBottomNumber += 1; + public void addTurntableBottomNumber(int count) { + this.turntableBottomNumber += count; updateString("turntableBottomNumber",turntableBottomNumber); - return turntableBottomNumber; } public int getSeniorTurntableBottomNumber() { @@ -1144,10 +1173,9 @@ public class PlayerManager extends MongoBase { updateString("seniorTurntableBottomNumber",seniorTurntableBottomNumber); } - public int addSeniorTurntableBottomNumber() { - this.seniorTurntableBottomNumber += 1; + public void addSeniorTurntableBottomNumber(int count) { + this.seniorTurntableBottomNumber += count; updateString("seniorTurntableBottomNumber",seniorTurntableBottomNumber); - return seniorTurntableBottomNumber; } public int getLuckAdvanceWheelLimitTime() { 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 30c4521f5..d9d860d97 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/util/CBean2Proto.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/util/CBean2Proto.java @@ -35,7 +35,7 @@ import java.util.stream.Collectors; public class CBean2Proto { private static final Logger LOGGER = LoggerFactory.getLogger(CBean2Proto.class); - public static CommonProto.Player getPlayer(int uid, PlayerManager playerManager, int maxMapId, int mapId, MapManager mapManager) { + public static CommonProto.Player getPlayer(int uid, PlayerManager playerManager, MapManager mapManager) { NewRechargeInfo rechargeInfo = playerManager.getNewRechargeInfo(); //临时代码,开服第一天没记recahrgeTime的bug @@ -51,7 +51,7 @@ public class CBean2Proto { .setExp((int)playerManager.getExp()) .setVipLevel(playerManager.getVipLevel()) .setHead(playerManager.getHead()) - .setCurMapId(mapId) + .setCurMapId(mapManager.getCurMapId()) .setFamilyId(playerManager.getGuildId()) .setEnergy(0) .setLastUpdateEnergyTime(mapManager.getLastUpdateEnergyTime()) diff --git a/tablemanager/src/main/java/config/SDialRewardSetting.java b/tablemanager/src/main/java/config/SDialRewardSetting.java index 7db3cf40f..38eb03751 100644 --- a/tablemanager/src/main/java/config/SDialRewardSetting.java +++ b/tablemanager/src/main/java/config/SDialRewardSetting.java @@ -10,31 +10,23 @@ import java.util.Map; public class SDialRewardSetting implements BaseConfig { private int id; - private int activityType; - private int updateItem; - private int[][] cost; - private int[][] costItem; - private int[][] multipleCostItem; - + private int perTime; private int extractingTime; - private int integral; - private static Map sDialRewardSettingMap; + private static Map sDialRewardSettingMap = new HashMap<>(); private static Map sDialRewardSettingMapByType = new HashMap<>(); @Override public void init() throws Exception { sDialRewardSettingMap = STableManager.getConfig(SDialRewardSetting.class); - sDialRewardSettingMap.forEach((integer, sDialRewardSetting) -> - sDialRewardSettingMapByType.put(sDialRewardSetting.getActivityType(), sDialRewardSetting) - ); + sDialRewardSettingMap.forEach((integer, sDialRewardSetting) -> sDialRewardSettingMapByType.put(sDialRewardSetting.getActivityType(), sDialRewardSetting)); if (sDialRewardSettingMap.size() != sDialRewardSettingMapByType.size()) { throw new Exception("sDialRewardSetting acitivityType multiple"); @@ -42,23 +34,10 @@ public class SDialRewardSetting implements BaseConfig { } - - public static Map getsDialRewardSettingMap() { - return sDialRewardSettingMap; - } - - public static void setsDialRewardSettingMap(Map sDialRewardSettingMap) { - SDialRewardSetting.sDialRewardSettingMap = sDialRewardSettingMap; - } - public static Map getsDialRewardSettingMapByType() { return sDialRewardSettingMapByType; } - public static void setsDialRewardSettingMapByType(Map sDialRewardSettingMapByType) { - SDialRewardSetting.sDialRewardSettingMapByType = sDialRewardSettingMapByType; - } - public int getId() { return id; } @@ -87,11 +66,11 @@ public class SDialRewardSetting implements BaseConfig { return integral; } + public int getPerTime() { + return perTime; + } + public int getExtractingTime() { return extractingTime; } - - public void setExtractingTime(int extractingTime) { - this.extractingTime = extractingTime; - } } \ No newline at end of file diff --git a/tablemanager/src/main/java/config/SUniversalWelfareConfig.java b/tablemanager/src/main/java/config/SUniversalWelfareConfig.java index c62608cdd..228960746 100644 --- a/tablemanager/src/main/java/config/SUniversalWelfareConfig.java +++ b/tablemanager/src/main/java/config/SUniversalWelfareConfig.java @@ -3,9 +3,7 @@ package config; import manager.STableManager; import manager.Table; -import java.util.ArrayList; -import java.util.List; -import java.util.Map; +import java.util.*; import java.util.stream.Collectors; @Table(name ="UniversalWelfareConfig") @@ -19,18 +17,18 @@ public class SUniversalWelfareConfig implements BaseConfig { private int rechargeCom; - private static List giftList = new ArrayList<>(); + private static Set goods = new HashSet<>(); @Override public void init() throws Exception { Map config = STableManager.getConfig(SUniversalWelfareConfig.class); - List list = config.values().stream().map(SUniversalWelfareConfig::getRechargeCom).collect(Collectors.toList()); - giftList.clear(); - giftList = list; + Set set = config.values().stream().map(SUniversalWelfareConfig::getRechargeCom).collect(Collectors.toSet()); + goods.clear(); + goods = set; } - public static List getGiftList() { - return giftList; + public static Set getGoods() { + return goods; } public int getid() {