diff --git a/serverlogic/src/main/java/com/ljsd/jieling/db/redis/RedisKey.java b/serverlogic/src/main/java/com/ljsd/jieling/db/redis/RedisKey.java index 96eaaed24..96d260d22 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/db/redis/RedisKey.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/db/redis/RedisKey.java @@ -217,12 +217,13 @@ public class RedisKey { public final static String CHAMPION_CHOSE_TEAM_INFO = "CHAMPION_CHOSE_TEAM_INFO"; public final static String CHAMPION_FINAL_TEAM_INFO = "CHAMPION_FINAL_TEAM_INFO"; public final static String CHAMPION_BET_MINE = "CHAMPION_BET_MINE"; // 我的竞猜 selectIdForRedis value: winUid - public final static String CHAMPION_BET_DETAIL = "CHAMPION_BET_DETAIL"; // 我的竞猜 selectUid + ":" +winUid + public final static String CHAMPION_BET_DETAIL = "CHAMPION_BET_DETAIL"; // 我的竞猜 selectUid + ":" +winUid 本次比赛竞猜当前玩家的的 所有玩家及竞猜道具信息 public final static String CHAMPION_BET_ALL = "CHAMPION_BET_ALL"; // 竞猜信息 selectUid + ":" +winUid public final static String CHAMPION_FINAL_RECODED_IDS = "CHAMPION_FINAL_RECODED_IDS"; // 巅峰赛決賽信息 //没发现什么用 public final static String CHAMPION_GUESSS_UIDS = "CHAMPION_GUESSS_UIDS"; // 巅峰赛发送竞猜币信息 public final static String CHAMPION_ARENA_RECORD_THREE = "CHAMPION_ARENA_RECORD_THREE";//三局两胜缓存 + public final static String CHAMPION_SCHEDULE = "CHAMPION_SCHEDULE";//赛程 public final static String PIDGIDTEMP = "PIDGIDTEMP"; public final static String GUILDBOSS_ARENA_RECORD = "GUILDBOSS_ARENA_RECORD"; diff --git a/serverlogic/src/main/java/com/ljsd/jieling/handler/Expedition/EndExpeditionBattleRequest.java b/serverlogic/src/main/java/com/ljsd/jieling/handler/Expedition/EndExpeditionBattleRequest.java index fd60ac05d..6c10a4e60 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/handler/Expedition/EndExpeditionBattleRequest.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/handler/Expedition/EndExpeditionBattleRequest.java @@ -282,6 +282,9 @@ public class EndExpeditionBattleRequest extends BaseHandler=monthline&&playerInfoManager.getMonthCard().getOrDefault(1,0)==0){ diff --git a/serverlogic/src/main/java/com/ljsd/jieling/handler/activity/CommitShejiActivityItemRequestHandler.java b/serverlogic/src/main/java/com/ljsd/jieling/handler/activity/CommitShejiActivityItemRequestHandler.java index 0a590ae03..550684210 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/handler/activity/CommitShejiActivityItemRequestHandler.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/handler/activity/CommitShejiActivityItemRequestHandler.java @@ -76,7 +76,7 @@ public class CommitShejiActivityItemRequestHandler extends BaseHandler openActivityIdsByType = ActivityLogic.getInstance().getOpenActivityIdsByType(user, ActivityTypeEnum.SHEJI_ACTIVITY.getType(), true); + Set openActivityIdsByType = ActivityLogic.getInstance().getOpenActivityIdsByType(user, ActivityTypeEnum.SHEJI_ACTIVITY.getType(), false); if(openActivityIdsByType.size()==0){ throw new ErrorCodeException(ErrorCode.ACTIVITY_NOT_OPEN); } diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/SheJiActivity.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/SheJiActivity.java index adb1f6a1d..e51de2901 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/SheJiActivity.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/SheJiActivity.java @@ -1,8 +1,10 @@ package com.ljsd.jieling.logic.activity; import com.ljsd.jieling.core.Lockeys; +import com.ljsd.jieling.db.mongo.MongoUtil; import com.ljsd.jieling.exception.ErrorCode; import com.ljsd.jieling.exception.ErrorCodeException; +import com.ljsd.jieling.globals.BIReason; import com.ljsd.jieling.globals.Global; import com.ljsd.jieling.jbean.ActivityMission; import com.ljsd.jieling.jbean.ActivityProgressInfo; @@ -19,9 +21,12 @@ import com.ljsd.jieling.logic.mail.MailLogic; import com.ljsd.jieling.logic.rank.RankContext; import com.ljsd.jieling.logic.rank.RankEnum; import com.ljsd.jieling.logic.rank.rankImpl.AbstractRank; +import com.ljsd.jieling.network.server.ProtocolsManager; import com.ljsd.jieling.network.session.ISession; +import com.ljsd.jieling.protocols.ArenaInfoProto; +import com.ljsd.jieling.protocols.MessageTypeProto; import com.ljsd.jieling.thread.ThreadManager; -import com.ljsd.jieling.util.ItemUtil; +import com.ljsd.jieling.util.*; import config.*; import manager.STableManager; import org.springframework.data.redis.core.ZSetOperations; @@ -130,15 +135,15 @@ class SheJiActivity extends AbstractActivity { protected void sendReward() { Thread.currentThread().setName("sendReward-Activity-" + id); SGlobalActivity sGlobalActivity = SGlobalActivity.getsGlobalActivityMap().get(id); - if (sGlobalActivity.getOpenRanking() == 0) { - return; - } +// if (sGlobalActivity.getOpenRanking() == 0) { +// return; +// } Map> integerListMap = SGodSacrificeConfig.getIntegerListMap().get(1); if (integerListMap == null) { return; } SGodSacrificeSetting sGodSacrificeSetting = STableManager.getConfig(SGodSacrificeSetting.class).get(1); - InnerResult rewardMap = getRewardMap(2); + InnerResult rewardMap = getRewardMap(1); Map rank2miss = rewardMap.getRank2miss(); int maxRank = rewardMap.getMaxRamk(); int maxRewardId = rewardMap.getMaxRewardId(); @@ -166,7 +171,7 @@ class SheJiActivity extends AbstractActivity { // } if (rank2miss.containsKey(rank)) { if (rank <= 10 && score <2500) { - missionId = 11; + missionId = rank2miss.get(11); } else { missionId = rank2miss.get(rank); } @@ -177,14 +182,25 @@ class SheJiActivity extends AbstractActivity { continue; } } - //checkAndUpdate value - SGodSacrificeConfig sActivityRankingReward1 = SGodSacrificeConfig.getsGodSacrificeConfigMap().get(missionId); - //sendmail - String title = SErrorCodeEerverConfig.getI18NMessage("personal_activity_reward_title", new Object[]{sGlobalActivity.getSesc()}); - String content = SErrorCodeEerverConfig.getI18NMessage("personal_activity_reward_txt", new Object[]{sGlobalActivity.getSesc(), rank++}); - String mailReward = ItemUtil.getMailReward(sActivityRankingReward1.getRankingReward()); - MailLogic.getInstance().sendMail(uid, title, content, mailReward, nowTime, Global.MAIL_EFFECTIVE_TIME); + final int finalIndex = rank; + AyyncWorker ayyncWorker = new AyyncWorker(user, true, new AyncWorkerRunnable() { + @Override + public void work(User user) throws Exception { + + //checkAndUpdate value + SGodSacrificeConfig sActivityRankingReward1 = SGodSacrificeConfig.getsGodSacrificeConfigMap().get(missionId); + //sendmail + + String title = SErrorCodeEerverConfig.getI18NMessage("personal_activity_reward_title", new Object[]{sGlobalActivity.getSesc()}); + String content = SErrorCodeEerverConfig.getI18NMessage("personal_activity_reward_txt", new Object[]{sGlobalActivity.getSesc(), finalIndex}); + String mailReward = ItemUtil.getMailReward(sActivityRankingReward1.getRankingReward()); + MailLogic.getInstance().sendMail(uid, title, content, mailReward, nowTime, Global.MAIL_EFFECTIVE_TIME); + + } + }); + ProtocolsManager.getInstance().updateAyncWorker(ayyncWorker); + rank++; } catch (Exception e) { LOGGER.error("id为{}的玩家,{}活动排行奖励没有发成功", uid, id); System.out.println(e); @@ -222,20 +238,23 @@ class SheJiActivity extends AbstractActivity { sendUids.addAll(items); } + + + for (Integer uid : sendUids) { try { User user = UserManager.getUser(uid, true); if (null == user) { continue; } - long l = user.getPlayerInfoManager().getCreateTime() + sGodSacrificeSetting.getLifeLimit() * TimeUtils.ONE_DAY; - int i = nowTime * 1000; + + if (user.getPlayerInfoManager().getCreateTime() + sGodSacrificeSetting.getLifeLimit() * TimeUtils.ONE_DAY - TimeUtils.now() > 0) { continue; } - if (user.getGuildMyInfo().getJoinTime() + sGodSacrificeSetting.getJoinLimit() * TimeUtils.ONE_DAY - TimeUtils.now() > 0) { - continue; - } +// if (user.getGuildMyInfo().getJoinTime() + sGodSacrificeSetting.getJoinLimit() * TimeUtils.ONE_DAY - TimeUtils.now() > 0) { +// continue; +// } int missionId; if (rank2miss.containsKey(rankIndex)) { missionId = rank2miss.get(rankIndex); @@ -246,13 +265,24 @@ class SheJiActivity extends AbstractActivity { continue; } } - //checkAndUpdate value - SGodSacrificeConfig sActivityRankingReward1 = SGodSacrificeConfig.getsGodSacrificeConfigMap().get(missionId); - //sendmail - String title = SErrorCodeEerverConfig.getI18NMessage("guild_activity_reward_title", new Object[]{sGlobalActivity.getSesc()}); - String content = SErrorCodeEerverConfig.getI18NMessage("guild_activity_reward_txt", new Object[]{sGlobalActivity.getSesc(), rankIndex}); - String mailReward = ItemUtil.getMailReward(sActivityRankingReward1.getRankingReward()); - MailLogic.getInstance().sendMail(uid, title, content, mailReward, nowTime, Global.MAIL_EFFECTIVE_TIME); + + final int finalIndex = rankIndex; + AyyncWorker ayyncWorker = new AyyncWorker(user, true, new AyncWorkerRunnable() { + @Override + public void work(User user) throws Exception { + + //checkAndUpdate value + SGodSacrificeConfig sActivityRankingReward1 = SGodSacrificeConfig.getsGodSacrificeConfigMap().get(missionId); + //sendmail + String title = SErrorCodeEerverConfig.getI18NMessage("guild_activity_reward_title", new Object[]{sGlobalActivity.getSesc()}); + String content = SErrorCodeEerverConfig.getI18NMessage("guild_activity_reward_txt", new Object[]{sGlobalActivity.getSesc(), finalIndex}); + String mailReward = ItemUtil.getMailReward(sActivityRankingReward1.getRankingReward()); + MailLogic.getInstance().sendMail(uid, title, content, mailReward, nowTime, Global.MAIL_EFFECTIVE_TIME); + + } + }); + ProtocolsManager.getInstance().updateAyncWorker(ayyncWorker); + } catch (Exception e) { LOGGER.error("id为{}的玩家,{}活动排行奖励没有发成功", uid, id); System.out.println(e); 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 071a80030..4cda37fa7 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 @@ -69,8 +69,22 @@ public class ChampionshipLogic { gameFightTypeMap.put(0, GameFightType.TOPArenaPersonFight); gameFightTypeMap.put(1, GameFightType.TOPArenaRobotFight); gameFightTypeMap.put(2, GameFightType.TOPArena2RobotFight); + init(); } + + public static void init(){ + try { + String key = RedisUtil.getInstence().getKey(RedisKey.CHAMPION_SCHEDULE, ""); + Object result = RedisUtil.getInstence().get(key); + if (result != null) { + schedule = Integer.valueOf((String) result); + } + }catch (Exception e){ + LOGGER.info("Exception the init={}"); + } + + } public static int getProgress() { return progress; } @@ -87,6 +101,13 @@ public class ChampionshipLogic { return schedule; } + public static void setSchedule(int schedule) { + ChampionshipLogic.schedule = schedule; + String key = RedisUtil.getInstence().getKey(RedisKey.CHAMPION_SCHEDULE, ""); + RedisUtil.getInstence().set(key, String.valueOf(ChampionshipLogic.schedule)); + + } + public static int getRealTimes() { return realTimes; } @@ -779,7 +800,7 @@ public class ChampionshipLogic { delKeys.add(RedisUtil.getInstence().getKey(RedisKey.CHAMPION_FINAL_RECODED_IDS, "")); delKeys.add(RedisUtil.getInstence().getKey(RedisKey.CHAMPION_GUESSS_UIDS, "")); delKeys.add(RedisUtil.getInstence().getKey(RedisKey.CHAMPION_ARENA_RECORD_THREE, "")); - + delKeys.add(RedisUtil.getInstence().getKey(RedisKey.CHAMPION_SCHEDULE, "")); //我的历史结果 joinUids.forEach(uid -> { delKeys.add(RedisUtil.getInstence().getKey(RedisKey.CHAMPION_MY_BATTLLE_IDS, Integer.toString(uid))); @@ -866,6 +887,13 @@ public class ChampionshipLogic { /** * 1.选出参战人员 人永远是进攻方 + * + * arenaRecordMap 所有战斗双方记录对象 + * CHAMPION_ARENA_RECORD 当前所有战斗双方记录 + * CHAMPION_CUR_JOIN_IDS 当前所有战斗双方记录的id + * CHAMPION_JOIN 参加的成员 + * + * */ public static void selectToBattle() { RedisUtil.getInstence().del(RedisUtil.getInstence().getKey(RedisKey.CHAMPION_CUR_JOIN_IDS, "")); @@ -959,6 +987,7 @@ public class ChampionshipLogic { arenaRecordIds.addAll(arenaRecordMap.keySet()); RedisUtil.getInstence().lSet(RedisKey.CHAMPION_CUR_JOIN_IDS, "", arenaRecordIds); if (schedule == 2) { + //记录4强 8强的人 方便索引 if (arenaRecordIds.size() >= 4) { RedisUtil.getInstence().lSet(RedisKey.CHAMPION_FINAL32_JOIN_IDS, "", arenaRecordIds); LOGGER.info("the rountTimes={},the size={}", roundTimes, arenaRecordIds.size()); @@ -990,6 +1019,9 @@ public class ChampionshipLogic { return RedisUtil.getInstence().getMapEntrys(RedisKey.CHAMPION_ARENA_RECORD, "", ids, ArenaRecord.class); } + /** + * 获取本次竞猜id + */ public static String getSelectIdForRedis() { String key = RedisUtil.getInstence().getKey(RedisKey.CHAMPION_CUR_BETID, ""); Object result = RedisUtil.getInstence().get(key); @@ -1197,7 +1229,7 @@ public class ChampionshipLogic { // //竞猜阶段取消,改成直接战斗 fix 又改回来了 // progressState = progressState==1?2:progressState; progressTmp = 100 + roundTimes * 10 + progressState; - schedule = 1; + setSchedule(1); fightTime=2; if (progressTmp == progress) { return; @@ -1205,7 +1237,7 @@ public class ChampionshipLogic { } else {//决赛 if (realTimes>5) { - schedule = 2; + setSchedule(2); if (progress != -2) { progress = -2; ChampionshipLogic.close(); @@ -1219,7 +1251,7 @@ public class ChampionshipLogic { scoreToRedis(); realTimes=1; fightTime=0; - schedule = 2; + setSchedule(2); selectToJoinFinal(); } diff --git a/tablemanager/src/main/java/config/SGodSacrificeSetting.java b/tablemanager/src/main/java/config/SGodSacrificeSetting.java index abbe224c7..aa72e0491 100644 --- a/tablemanager/src/main/java/config/SGodSacrificeSetting.java +++ b/tablemanager/src/main/java/config/SGodSacrificeSetting.java @@ -6,122 +6,122 @@ import manager.Table; import java.util.HashMap; import java.util.Map; -@Table(name ="GodSacrificeSetting") +@Table(name = "GodSacrificeSetting") public class SGodSacrificeSetting implements BaseConfig { - private int id; + private int id; - private int activityId; + private int activityId; - private int[] activityItems; + private int[] activityItems; - private int activityMoney; + private int activityMoney; - private int[] rankType; + private int[] rankType; - private int[] rewardItemChangRate; + private int[] rewardItemChangRate; - private int qAId; + private int qAId; - private int itemDelete; + private int itemDelete; - private int timeRewardNum; + private int timeRewardNum; - private int[] timePointList; + private int[] timePointList; - private int timeRewardGroup; + private int timeRewardGroup; - private int lastTime; + private int lastTime; - public static HashMap exchangeRate= new HashMap<>(); + public static HashMap exchangeRate = new HashMap<>(); private int levelLimit; - private int lifeLimit; + private int lifeLimit; - private int joinLimit; + private int joinLimit; - private int[][] mailId; + private int[][] mailId; - private int l1Score; + private int l1Score; - - @Override + + @Override public void init() throws Exception { SGodSacrificeSetting sGodSacrificeSetting = STableManager.getConfig(SGodSacrificeSetting.class).get(1); - if(null!=sGodSacrificeSetting){ + if (null != sGodSacrificeSetting) { int[] activityItems = sGodSacrificeSetting.getActivityItems(); - for (int i = 0; i