From 6dfd305c73accbb293d1bbdde5fcebf8e013eac7 Mon Sep 17 00:00:00 2001 From: lvxinran Date: Mon, 17 Aug 2020 05:08:35 +0800 Subject: [PATCH] =?UTF-8?q?=E8=BD=A9=E8=BE=95=E5=AE=9D=E9=95=9C=E6=8E=92?= =?UTF-8?q?=E8=A1=8C=E5=8F=91=E5=A5=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../clazzStaticCfg/RewardStaticConfig.java | 44 +++++++++++++++++ .../ljsd/jieling/logic/SituationLogic.java | 49 ++++++++++++++++++- .../java/config/SRaceTowerRewardConfig.java | 37 ++++++++++++++ 3 files changed, 128 insertions(+), 2 deletions(-) create mode 100644 serverlogic/src/main/java/com/ljsd/jieling/config/clazzStaticCfg/RewardStaticConfig.java create mode 100644 tablemanager/src/main/java/config/SRaceTowerRewardConfig.java diff --git a/serverlogic/src/main/java/com/ljsd/jieling/config/clazzStaticCfg/RewardStaticConfig.java b/serverlogic/src/main/java/com/ljsd/jieling/config/clazzStaticCfg/RewardStaticConfig.java new file mode 100644 index 000000000..c2117d4ef --- /dev/null +++ b/serverlogic/src/main/java/com/ljsd/jieling/config/clazzStaticCfg/RewardStaticConfig.java @@ -0,0 +1,44 @@ +package com.ljsd.jieling.config.clazzStaticCfg; + +import config.SExpeditionFloorConfig; +import config.SRaceTowerRewardConfig; +import manager.AbstractClassStaticConfig; +import manager.STableManager; +import manager.Table; + +import java.util.HashMap; +import java.util.Map; +import java.util.Set; + +/** + * @author lvxinran + * @date 2020/9/7 + * @discribe + */ +public class RewardStaticConfig extends AbstractClassStaticConfig { + + private static Map raceRewardConfigMap; + + @Override + public void registConfigs(Set registConfigs) { + registConfigs.add(SRaceTowerRewardConfig.class.getAnnotation(Table.class).name()); + + } + + @Override + public void figureConfigs() { + Map raceRewardConfigMapTemp = new HashMap<>(); + for(SRaceTowerRewardConfig value:STableManager.getConfig(SRaceTowerRewardConfig.class).values()){ + int[] section = value.getSection(); + for(int i = section[0];i<=section[1];i++){ + raceRewardConfigMapTemp.put(i,value); + } + } + raceRewardConfigMap = raceRewardConfigMapTemp; + + } + + public static Map getRaceRewardConfigMap() { + return raceRewardConfigMap; + } +} diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/SituationLogic.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/SituationLogic.java index f5b795b21..e94af7301 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/SituationLogic.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/SituationLogic.java @@ -2,11 +2,15 @@ package com.ljsd.jieling.logic; import com.ljsd.fight.CheckFight; +import com.ljsd.jieling.config.clazzStaticCfg.RewardStaticConfig; import com.ljsd.jieling.core.FunctionIdEnum; import com.ljsd.jieling.core.GlobalsDef; +import com.ljsd.jieling.db.redis.RedisKey; +import com.ljsd.jieling.db.redis.RedisUtil; 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.ktbeans.ReportEventEnum; import com.ljsd.jieling.ktbeans.ReportUtil; import com.ljsd.jieling.logic.dao.PlayerManager; @@ -16,6 +20,7 @@ import com.ljsd.jieling.logic.dao.UserManager; import com.ljsd.jieling.logic.dao.root.User; import com.ljsd.jieling.logic.fight.*; import com.ljsd.jieling.logic.fight.result.FightResult; +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.rank.RankContext; @@ -33,6 +38,7 @@ import com.ljsd.jieling.util.MonsterUtil; import config.*; import manager.STableManager; import org.luaj.vm2.LuaValue; +import org.springframework.data.redis.core.ZSetOperations; import util.TimeUtils; import java.util.*; @@ -103,9 +109,14 @@ public class SituationLogic { if(isIndication){ //周一刷新 boolean remove = false; - if(TimeUtils.getDayOfWeek()==1){ + if(TimeUtils.getDayOfWeek()==1&&TimeUtils.getHourOfDay()==5&&TimeUtils.getMiunte()==0){ remove = true; } + if(remove){ + //发排行奖励,删除排行信息 + Runnable runnable = this::rankReward; + runnable.run(); + } try { Map sessionMap = OnlineUserManager.sessionMap; for(Map.Entry entry:sessionMap.entrySet()){ @@ -132,11 +143,42 @@ public class SituationLogic { } } + public void rankReward() { + AbstractRank rank = RankContext.getRankEnum(RankEnum.SITUATION_RANK.getType()); + Map rewardConfigMap = RewardStaticConfig.getRaceRewardConfigMap(); + Set> rankInfos = rank.getRankByKey("", 0, rewardConfigMap.size()); + if(rankInfos.size()<1){ + return; + } + try{ + int index = 1; + for(ZSetOperations.TypedTuple rankInfo:rankInfos){ + System.out.println("fasong11111111111"); + String title = SErrorCodeEerverConfig.getI18NMessage("xuanyuan_Ranking_reward_title"); + String content = SErrorCodeEerverConfig.getI18NMessage("xuanyuan_Ranking_reward_txt", new Object[]{index}); + SRaceTowerRewardConfig sRaceTowerRewardConfig = rewardConfigMap.get(index); + if(sRaceTowerRewardConfig==null){ + continue; + } + String mailReward = ItemUtil.getMailReward(sRaceTowerRewardConfig.getReward()); + MailLogic.getInstance().sendMail(Integer.parseInt(rankInfo.getValue()), title, content, mailReward, TimeUtils.nowInt(), Global.MAIL_EFFECTIVE_TIME); + index++; + } + RedisUtil.getInstence().del(RedisKey.getKey(rank.getRedisKey(),"",false)); + }catch (Exception e){ + e.printStackTrace(); + } + + } + public void getAllSituationStatus(ISession session, MessageTypeProto.MessageType messageType) throws Exception { User user = UserManager.getUser(session.getUid()); MapInfoProto.GetAllSituationInfoResponse.Builder response = MapInfoProto.GetAllSituationInfoResponse.newBuilder(); Map situationPass = user.getPlayerInfoManager().getSituationPass(); + if(status==null){ + checkStatus(); + } for(int i = 0 ; i < status.length;i++){ if(status[i]==0){ continue; @@ -158,7 +200,10 @@ public class SituationLogic { SRaceTowerConfig sRaceTowerConfig = STableManager.getConfig(SRaceTowerConfig.class).get(id); Map situationPass = playerInfoManager.getSituationPass(); - + boolean check = PlayerLogic.getInstance().check(user, sRaceTowerConfig.getPrivilege()[0], 1); + if(!check){ + throw new ErrorCodeException(ErrorCode.SERVER_SELF_DEFINE); + } boolean consumeCount = false; if(type==2){ diff --git a/tablemanager/src/main/java/config/SRaceTowerRewardConfig.java b/tablemanager/src/main/java/config/SRaceTowerRewardConfig.java new file mode 100644 index 000000000..c19df3d6d --- /dev/null +++ b/tablemanager/src/main/java/config/SRaceTowerRewardConfig.java @@ -0,0 +1,37 @@ +package config; + +import manager.STableManager; +import manager.Table; + +import java.util.Map; + +@Table(name ="RaceTowerRewardConfig") +public class SRaceTowerRewardConfig implements BaseConfig { + + private int id; + + private int[] section; + + private int[][] reward; + + + @Override + public void init() throws Exception { + + } + + + public int getId() { + return id; + } + + public int[] getSection() { + return section; + } + + public int[][] getReward() { + return reward; + } + + +} \ No newline at end of file