From 47595e498fe56556fcacbc65587746dd519f6f9f Mon Sep 17 00:00:00 2001 From: zhangshanxue Date: Fri, 3 Jul 2020 09:54:09 +0800 Subject: [PATCH] =?UTF-8?q?=E7=AB=9E=E6=8A=80=E5=9C=BA=E5=A5=96=E5=8A=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../TakeArenaBattleRewardRequestHandler.java | 58 +++++++++++++++++++ .../ljsd/jieling/logic/dao/ArenaManager.java | 18 ++++-- .../ljsd/jieling/logic/family/GuildLogic.java | 16 ++++- .../ljsd/jieling/logic/hero/HeroLogic.java | 4 +- .../ljsd/jieling/thread/ThreadManager.java | 2 +- .../com/ljsd/jieling/util/MessageUtil.java | 4 +- .../main/java/config/SArenaBattleReward.java | 34 +++++++++++ 7 files changed, 125 insertions(+), 11 deletions(-) create mode 100644 serverlogic/src/main/java/com/ljsd/jieling/handler/arena/TakeArenaBattleRewardRequestHandler.java create mode 100644 tablemanager/src/main/java/config/SArenaBattleReward.java diff --git a/serverlogic/src/main/java/com/ljsd/jieling/handler/arena/TakeArenaBattleRewardRequestHandler.java b/serverlogic/src/main/java/com/ljsd/jieling/handler/arena/TakeArenaBattleRewardRequestHandler.java new file mode 100644 index 000000000..497ec52b8 --- /dev/null +++ b/serverlogic/src/main/java/com/ljsd/jieling/handler/arena/TakeArenaBattleRewardRequestHandler.java @@ -0,0 +1,58 @@ +package com.ljsd.jieling.handler.arena; + +import com.google.protobuf.GeneratedMessage; +import com.ljsd.jieling.exception.ErrorCode; +import com.ljsd.jieling.exception.ErrorCodeException; +import com.ljsd.jieling.globals.BIReason; +import com.ljsd.jieling.handler.BaseHandler; +import com.ljsd.jieling.logic.dao.ArenaManager; +import com.ljsd.jieling.logic.dao.UserManager; +import com.ljsd.jieling.logic.dao.root.User; +import com.ljsd.jieling.protocols.ArenaInfoProto; +import com.ljsd.jieling.protocols.CommonProto; +import com.ljsd.jieling.protocols.MessageTypeProto; +import com.ljsd.jieling.util.ItemUtil; +import config.SArenaBattleReward; +import manager.STableManager; + +/** + * Description: des + * Author: zsx + * CreateDate: 2020/7/6 21:19 + */ +public class TakeArenaBattleRewardRequestHandler extends BaseHandler { + @Override + public MessageTypeProto.MessageType getMessageCode() { + return null; + } + + @Override + public GeneratedMessage processWithProto(int uid, ArenaInfoProto.TakeArenaBattleRewardRequest proto) throws Exception { + + int missionId = proto.getMissionId(); + //check cfg + SArenaBattleReward sArenaBattleReward = STableManager.getConfig(SArenaBattleReward.class).get(missionId); + if(sArenaBattleReward==null){ + throw new ErrorCodeException(ErrorCode.CFG_NULL); + } + + User user = UserManager.getUser(uid); + ArenaManager arenaManager = user.getArenaManager(); + //幂等 + boolean contains = arenaManager.getHadTakeReward().contains(missionId); + if(contains){ + throw new ErrorCodeException(ErrorCode.HAD_TAKE_REWARD); + } + + //check condition + boolean b = sArenaBattleReward.getBattleTimes() > arenaManager.getFailNums() + arenaManager.getSuccessNums(); + if(b){ + throw new ErrorCodeException(ErrorCode.SERVER_DEFINE); + } + arenaManager.getHadTakeReward().add(missionId); + //drop + int[][] reward = sArenaBattleReward.getReward(); + CommonProto.Drop.Builder drop = ItemUtil.drop(user, reward, BIReason.EXPEDITION_BOX_REWARD); + return ArenaInfoProto.TakeArenaBattleRewardResponse.newBuilder().setDrop(drop).build(); + } +} diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/ArenaManager.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/ArenaManager.java index 94211e640..aed29cf7d 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/ArenaManager.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/ArenaManager.java @@ -2,10 +2,7 @@ package com.ljsd.jieling.logic.dao; import com.ljsd.common.mogodb.MongoBase; -import java.util.Collections; -import java.util.List; -import java.util.Map; -import java.util.Set; +import java.util.*; public class ArenaManager extends MongoBase { @@ -26,7 +23,7 @@ public class ArenaManager extends MongoBase { private List arenaEnemies; - + private List hadTakeReward; public void updateChallenge(int fightResult){ if(fightResult == 1){ @@ -89,12 +86,14 @@ public class ArenaManager extends MongoBase { this.count=0; this.flushTime=0; this.flushNums=0; + hadTakeReward=new LinkedList<>(); updateString("season",season); updateString("failNums",failNums); updateString("successNums",successNums); updateString("count",count); updateString("flushTime",flushTime); updateString("flushNums",flushNums); + updateString("hadTakeReward",hadTakeReward); } public int getTopMaxRank() { @@ -105,4 +104,13 @@ public class ArenaManager extends MongoBase { this.topMaxRank = topMaxRank; updateString("topMaxRank",topMaxRank); } + + public List getHadTakeReward() { + if(null ==hadTakeReward){ + hadTakeReward= new LinkedList<>(); + } + updateString("hadTakeReward",hadTakeReward); + return hadTakeReward; + } + } 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 a5ee13d28..78e024cc1 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 @@ -593,6 +593,18 @@ public class GuildLogic { RedisUtil.getInstence().removeMapEntrys(RedisKey.USER_LEVEL_GUILD_INFO,"",String.valueOf(applyId)); Poster.getPoster().dispatchEvent(new GuildForceChangeEvent(targetUser.getId(),targetUser.getPlayerInfoManager().getGuildId(),1,targetUser.getPlayerInfoManager().getMaxForce())); + + Family.GuildHelpInfoIndication.Builder builder = Family.GuildHelpInfoIndication.newBuilder(); + for (Map.Entry entry : targetUser.getGuildMyInfo().getGuidHelpInfo().entrySet()) { + builder.addGuildHelpInfo(CommonProto.GuildHelpInfo.newBuilder() + .setHadtakenum(targetUser.getGuildMyInfo().getGuidHelpHadTakeInfo().getOrDefault(entry.getKey(),0)) + .setType(entry.getKey()) + .setNum(entry.getValue())); + } + + //notify all change + Family.GuildHelpInfoIndication build = builder.setUid(targetUser.getId()).setName(targetUser.getPlayerInfoManager().getNickName()).build(); + GuildLogic.sendIndicationToMember(GuilidManager.guildInfoMap.get(guildInfo.getId()), MessageTypeProto.MessageType.GuildHelpInfoIndication,build); // targetUser.getUserMissionManager().onGameEvent(targetUser, GameEvent.JOIN_FAMILY); }finally { RedisUtil.getInstence().releaseDistributedLock(RedisKey.OPERATE_FAMILY_APPLY_JOIN,Integer.toString(applyId), Integer.toString(applyId)); @@ -1380,10 +1392,11 @@ public class GuildLogic { RedisUtil.getInstence().putMapEntry(RedisKey.USER_LEVEL_GUILD_INFO,"",String.valueOf(user.getId()),guildId); //删除战力 Poster.getPoster().dispatchEvent(new GuildForceChangeEvent(user.getId(),user.getPlayerInfoManager().getGuildId(),3,0-user.getPlayerInfoManager().getMaxForce())); - //notify all + //notify ALL Family.GuildHelpInfoIndication.Builder build = Family.GuildHelpInfoIndication.newBuilder(); for (Map.Entry entry : user.getGuildMyInfo().getGuidHelpInfo().entrySet()) { //通知前端清除公会成员援助信息 + build.setUid(user.getId()); build.addGuildHelpInfo(CommonProto.GuildHelpInfo.newBuilder().setType(entry.getKey()).setNum(-1)); } GuildLogic.sendIndicationToMember(GuilidManager.guildInfoMap.get(user.getPlayerInfoManager().getGuildId()), MessageTypeProto.MessageType.GuildHelpInfoIndication,build.build()); @@ -1435,4 +1448,5 @@ public class GuildLogic { MailLogic.getInstance().sendMail(user.getId(),title,content,mailReward,(int) (TimeUtils.now()/1000), Global.MAIL_EFFECTIVE_TIME); } + } 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 ffbe21899..8f72b4fd8 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 @@ -1707,9 +1707,9 @@ public class HeroLogic{ float score = sPropertyConfig.getScore(); result += propertyValue*score; - LOGGER.info("the propertyId={} the value is ={},propertyValue={},score={},result ={},the value={}",propertyId,propertyValue*score,propertyValue,score,result,propertyValue*score); + // LOGGER.info("the propertyId={} the value is ={},propertyValue={},score={},result ={},the value={}",propertyId,propertyValue*score,propertyValue,score,result,propertyValue*score); } - System.out.println(result); + // System.out.println(result); return (int)result; } 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 42693997d..e6fc252bb 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/thread/ThreadManager.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/thread/ThreadManager.java @@ -121,7 +121,7 @@ public class ThreadManager implements IManager { scheduledFutureSets.add(scheduledExecutor.scheduleAtFixedRate(platConfigureTask, 10, SLEEP_INTEVAL_TIME, TimeUnit.SECONDS)); scheduledFutureSets.add( scheduledExecutor.scheduleAtFixedRate(new MinuteTask(), delayForMinute, 60, TimeUnit.SECONDS)); scheduledFutureSets.add( scheduledExecutor.scheduleAtFixedRate(new SecondsTask(), 0, 1, TimeUnit.SECONDS)); - scheduledFutureSets.add( scheduledExecutor.scheduleAtFixedRate(new FetchBloodyEndDataThread(), 0, 1, TimeUnit.SECONDS)); + // scheduledFutureSets.add( scheduledExecutor.scheduleAtFixedRate(new FetchBloodyEndDataThread(), 0, 1, TimeUnit.SECONDS)); scheduledFutureSets.add( scheduledExecutor.scheduleAtFixedRate(new Thread(){ public void run () { long lastMilis = System.currentTimeMillis(); 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 908a1d741..e9d3308df 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/util/MessageUtil.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/util/MessageUtil.java @@ -38,8 +38,8 @@ public class MessageUtil { backMessage = new byte[0]; } else { backMessage = generatedMessage.toByteArray(); - if (backMessage.length != 0) - LOGGER.info("\r\n" + "uid:" + uid + ":\r\n" + JsonFormat.printToString(generatedMessage)); + //if (backMessage.length != 0) + //LOGGER.info("\r\n" + "uid:" + uid + ":\r\n" + JsonFormat.printToString(generatedMessage)); } int length = PackageConstant.UID_FIELD_LEN + PackageConstant.TOKEN_LEN diff --git a/tablemanager/src/main/java/config/SArenaBattleReward.java b/tablemanager/src/main/java/config/SArenaBattleReward.java new file mode 100644 index 000000000..51b84328d --- /dev/null +++ b/tablemanager/src/main/java/config/SArenaBattleReward.java @@ -0,0 +1,34 @@ +package config; + +import manager.Table; + +@Table(name ="ArenaBattleReward") +public class SArenaBattleReward implements BaseConfig { + + private int id; + + private int battleTimes; + + private int[][] reward; + + + @Override + public void init() throws Exception { + + } + + + public int getId() { + return id; + } + + public int getBattleTimes() { + return battleTimes; + } + + public int[][] getReward() { + return reward; + } + + +} \ No newline at end of file