From 0dfd959d5e369848445cdd60205993dc081b09db Mon Sep 17 00:00:00 2001 From: wangyuan Date: Tue, 17 Sep 2019 14:05:16 +0800 Subject: [PATCH 1/4] delete buy indicaiton --- .../com/ljsd/jieling/globals/BIReason.java | 2 ++ .../handler/room/RoomMatchRequestHandler.java | 4 +++ .../jieling/logic/store/BuyGoodsLogic.java | 32 +++++++++++++------ 3 files changed, 29 insertions(+), 9 deletions(-) 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 3a6f553e6..ca4470082 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/globals/BIReason.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/globals/BIReason.java @@ -82,6 +82,8 @@ public interface BIReason { int ENDLESS_REASON_CHANGE = 50;//无尽副本赛季更换 int RANDOM_SOULEQUIP = 51;//占星 + int DIRECT_BUY = 52; // 直购 + //道具消耗原因 1000开头 int ADVENTURE_UPLEVEL_CONSUME = 1000; //秘境升级 diff --git a/serverlogic/src/main/java/com/ljsd/jieling/handler/room/RoomMatchRequestHandler.java b/serverlogic/src/main/java/com/ljsd/jieling/handler/room/RoomMatchRequestHandler.java index 59d00cfcd..44d4c1554 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/handler/room/RoomMatchRequestHandler.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/handler/room/RoomMatchRequestHandler.java @@ -74,6 +74,10 @@ public class RoomMatchRequestHandler extends BaseHandler{ return ; } User user = UserManager.getUser(iSession.getUid()); + if( !user.getTeamPosManager().getTeamPosForHero().containsKey(GlobalsDef.BLOODY_TEAM)){ + MessageUtil.sendErrorResponse(iSession,0,responseMsgId,"未设置编队"); + return; + } snapUserFightInfo(user); RedisUtil.getInstence().set(RedisKey.MATCH_UID_KEY + ":" + uid,gson.toJson("1")); List matchAddressInfos = RedisUtil.getInstence().getAllSetToList(RedisKey.MATCH_SERVER_INFO + ":" + GameApplication.areaId, String.class); diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/store/BuyGoodsLogic.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/store/BuyGoodsLogic.java index dd85b72e4..d51d7ac67 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/store/BuyGoodsLogic.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/store/BuyGoodsLogic.java @@ -2,6 +2,7 @@ package com.ljsd.jieling.logic.store; import com.ljsd.jieling.config.*; import com.ljsd.jieling.core.VipPrivilegeType; +import com.ljsd.jieling.globals.BIReason; import com.ljsd.jieling.globals.Global; import com.ljsd.jieling.ktbeans.KtEventUtils; import com.ljsd.jieling.ktbeans.parmsBean.ParamEventBean; @@ -45,7 +46,7 @@ public class BuyGoodsLogic { return; } MessageUtil.sendMessage(session,1, MessageTypeProto.MessageType.TEST_BUY_GIGT_GOODS_RESPONSE_VALUE,null,true); - Result result = sendGoods(uid, goodsId, "gm-test", "111111", System.currentTimeMillis(), -1); + Result result = sendGoods(uid, goodsId, "gm-test", "111111", System.currentTimeMillis(), -999); User user = UserManager.getUser(uid); int price =sRechargeCommodityConfig.getPrice(); int isDiscount = sRechargeCommodityConfig.getIsDiscount(); @@ -190,22 +191,35 @@ public class BuyGoodsLogic { buyGoodsTimes.put(goodsId,buyCount); rechargeInfo.setBuyGoodsTimes(buyGoodsTimes); - //妖精 - String title = SErrorCodeEerverConfig.getI18NMessage("recharge_" + sRechargeCommodityConfig.getType() + "_title"); - String content = SErrorCodeEerverConfig.getI18NMessage("recharge_" + sRechargeCommodityConfig.getType() + "_txt"); - if(type== 3 || type==1 || type==6){ - content = SErrorCodeEerverConfig.getI18NMessage("recharge_" + sRechargeCommodityConfig.getType() + "_txt",new Object[]{rewardStr.split("#")[1]}); + //直购礼包 + if(type == GiftGoodsType.DIRECTBAG){ + CommonProto.Drop.Builder drop = ItemUtil.drop(user, sRechargeCommodityConfig.getBaseReward(), BIReason.DIRECT_BUY); + ISession session = OnlineUserManager.getSessionByUid(uid); + if(session!=null){ + PlayerInfoProto.DirectBuyIndication build = PlayerInfoProto.DirectBuyIndication.newBuilder().setDrop(drop).build(); + MessageUtil.sendIndicationMessage(session,1, MessageTypeProto.MessageType.DIRECT_BUY_GOODS_INDICATION_VALUE,build,true); + } + }else{ + String title = SErrorCodeEerverConfig.getI18NMessage("recharge_" + sRechargeCommodityConfig.getType() + "_title"); + String content = SErrorCodeEerverConfig.getI18NMessage("recharge_" + sRechargeCommodityConfig.getType() + "_txt"); + if(type== 3 || type==1 || type==6){ + content = SErrorCodeEerverConfig.getI18NMessage("recharge_" + sRechargeCommodityConfig.getType() + "_txt",new Object[]{rewardStr.split("#")[1]}); + } + MailLogic.getInstance().sendMail(user.getId(),title,content,rewardStr,nowTime, Global.MAIL_EFFECTIVE_TIME); } - MailLogic.getInstance().sendMail(user.getId(),title,content,rewardStr,nowTime, Global.MAIL_EFFECTIVE_TIME); + resultRes.setResultCode(1); KtEventUtils.onKtEvent(user, ParamEventBean.UserPayEvent,goodsId,orderId,resultRes.getResultCode(),price); - notifyPaySuccessFul(uid,goodsId); + notifyPaySuccessFul(uid,goodsId,amount != -999); return resultRes; } //通知前端充值成功 - public static void notifyPaySuccessFul(int uid,int goodsId){ + public static void notifyPaySuccessFul(int uid,int goodsId,boolean needNotify){ + if(!needNotify){ + return; + } ISession session = OnlineUserManager.getSessionByUid(uid); if(session!=null){ PlayerInfoProto.NotifyPaySuccessfulIndicaiton build = PlayerInfoProto.NotifyPaySuccessfulIndicaiton.newBuilder().setGoodsId(goodsId).build(); From 6b96021e0837ddb418710145be080128075bfef0 Mon Sep 17 00:00:00 2001 From: zhangshanxue Date: Tue, 17 Sep 2019 14:58:30 +0800 Subject: [PATCH 2/4] =?UTF-8?q?redis=20=E7=BC=93=E5=AD=98=E6=9C=8D?= =?UTF-8?q?=E5=8A=A1=E5=99=A8=E5=9C=B0=E5=9D=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/java/com/ljsd/GameApplication.java | 2 +- .../com/ljsd/jieling/config/json/CoreSettings.java | 9 +++++++++ .../jieling/handler/core/ExchangeCdkHandler.java | 12 ++++++------ 3 files changed, 16 insertions(+), 7 deletions(-) diff --git a/serverlogic/src/main/java/com/ljsd/GameApplication.java b/serverlogic/src/main/java/com/ljsd/GameApplication.java index cf2fbf121..b629c0332 100644 --- a/serverlogic/src/main/java/com/ljsd/GameApplication.java +++ b/serverlogic/src/main/java/com/ljsd/GameApplication.java @@ -173,7 +173,7 @@ public class GameApplication { public static void register(ConfigurableApplicationContext configurableApplicationContext){ CoreSettings coreSettings = configurableApplicationContext.getBean(CoreSettings.class); String ip = coreSettings.getIp(); - int port = coreSettings.getPort(); + int port = coreSettings.getGmport(); String rpcUrl = ip + ":" + port; RedisUtil.getInstence().set(RedisKey.LOGIC_SERVER_INFO+RedisKey.Delimiter_colon+GameApplication.serverId,gson.toJson(rpcUrl)); } diff --git a/serverlogic/src/main/java/com/ljsd/jieling/config/json/CoreSettings.java b/serverlogic/src/main/java/com/ljsd/jieling/config/json/CoreSettings.java index f60ec138b..6ede17fd3 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/config/json/CoreSettings.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/config/json/CoreSettings.java @@ -12,6 +12,7 @@ public class CoreSettings { private String ip; private int port; + private int gmport; private int area; private int id; private int weight; @@ -55,4 +56,12 @@ public class CoreSettings { public void setPort(int port) { this.port = port; } + + public int getGmport() { + return gmport; + } + + public void setGmport(int gmport) { + this.gmport = gmport; + } } diff --git a/serverlogic/src/main/java/com/ljsd/jieling/handler/core/ExchangeCdkHandler.java b/serverlogic/src/main/java/com/ljsd/jieling/handler/core/ExchangeCdkHandler.java index bc54f6851..77c329097 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/handler/core/ExchangeCdkHandler.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/handler/core/ExchangeCdkHandler.java @@ -44,7 +44,7 @@ public class ExchangeCdkHandler extends BaseHandler sCdkInfosCacheMap = CoreLogic.getInstance().getsCdkInfosCacheMap(); if (cdk.length() != 18 || sCdkInfosCacheMap == null || sCdkInfosCacheMap.isEmpty()) { - MessageUtil.sendErrorResponse(session, 0, MessageTypeProto.MessageType.EXCHANGE_CDK_RESPONSE_VALUE, "cdk.wrong"); + MessageUtil.sendErrorResponse(session, 0, MessageTypeProto.MessageType.EXCHANGE_CDK_RESPONSE_VALUE, "兑换码无效"); return; } boolean distributedLock = RedisUtil.getInstence().tryGetDistributedLock(RedisKey.CDKEY,cdk , Integer.toString(uid),500); @@ -58,33 +58,33 @@ public class ExchangeCdkHandler extends BaseHandler Date: Tue, 17 Sep 2019 15:20:39 +0800 Subject: [PATCH 3/4] =?UTF-8?q?redis=20=E7=BC=93=E5=AD=98=E6=9C=8D?= =?UTF-8?q?=E5=8A=A1=E5=99=A8=E5=9C=B0=E5=9D=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/com/ljsd/jieling/thread/task/RPCGmServerTask.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/serverlogic/src/main/java/com/ljsd/jieling/thread/task/RPCGmServerTask.java b/serverlogic/src/main/java/com/ljsd/jieling/thread/task/RPCGmServerTask.java index 0b9bee0a1..2e647c35a 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/thread/task/RPCGmServerTask.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/thread/task/RPCGmServerTask.java @@ -36,7 +36,7 @@ public class RPCGmServerTask extends Thread{ @Override public void run() { try { - TServerSocket serverTransport = new TServerSocket(new InetSocketAddress(coreSettings.getIp(), coreSettings.getPort()+1)); + TServerSocket serverTransport = new TServerSocket(new InetSocketAddress(coreSettings.getIp(), coreSettings.getGmport())); LOGGER.info("run->coreip={},corePort={}", coreSettings.getIp(), coreSettings.getPort()+1); TThreadPoolServer.Args trArgs = new TThreadPoolServer.Args(serverTransport); TProcessor processor = new RPCRequestGMIFace.Processor(new GmService()); From 3086a1f5bc89dc894ecad9720cfed8c30df6d2d6 Mon Sep 17 00:00:00 2001 From: wangyuan Date: Thu, 19 Sep 2019 15:46:26 +0800 Subject: [PATCH 4/4] fix bloody --- .../server/BloodyProtocolsManager.java | 41 +------------------ .../jieling/config/SGlobalSystemConfig.java | 4 +- .../ljsd/jieling/logic/blood/BloodLogic.java | 6 +-- .../network/server/ProtocolsManager.java | 9 ++-- 4 files changed, 11 insertions(+), 49 deletions(-) diff --git a/bloodybattle/src/main/java/com/ljsd/network/server/BloodyProtocolsManager.java b/bloodybattle/src/main/java/com/ljsd/network/server/BloodyProtocolsManager.java index 83f17f51c..671c3d1d6 100644 --- a/bloodybattle/src/main/java/com/ljsd/network/server/BloodyProtocolsManager.java +++ b/bloodybattle/src/main/java/com/ljsd/network/server/BloodyProtocolsManager.java @@ -93,8 +93,6 @@ public class BloodyProtocolsManager implements ProtocolsAbstract { MessageUtil.sendErrorCode(session,0,"您的账号token不正确,请退出游戏重新登陆!"); return; } - //处理多设备重登 - dealRepeatLogin(session.getUid()); //刷新token refreshToken(session); //踢下线 @@ -110,11 +108,6 @@ public class BloodyProtocolsManager implements ProtocolsAbstract { dealHeartBeat(session); return; } - //检查token -// if (checkToken(session,packetNetData) != 0 ){ -// MessageUtil.sendErrorCode(session,0,"您的账号token不正确,请退出游戏重新登陆!"); -// return; -// } if( packetNetData.getMsgId()== MessageTypeProto.MessageType.RECONNECT_REQUEST_VALUE){ processReconnect(session); @@ -122,9 +115,7 @@ public class BloodyProtocolsManager implements ProtocolsAbstract { return; } - if (checkIndex(session,packetNetData) != 0){ - return; - } + LOGGER.info("request commond : " + packetNetData.getMsgId()); BaseHandler baseHandler = handlers.get(packetNetData.getMsgId()); if (baseHandler == null) { @@ -212,36 +203,6 @@ public class BloodyProtocolsManager implements ProtocolsAbstract { } - private int dealRepeatLogin(int uid) { - if (OnlineUserManager.checkUidOnline(uid)){ - ISession iSession = OnlineUserManager.getSessionByUid(uid); - MessageUtil.sendErrorCode(iSession, ErrorCode.reloginCode,"您的账号已经在其他设备上登陆,请确认账号安全!"); - iSession.setOfflineType(ErrorCode.reloginCode); - return 1; - } - return 0; - } - - private int checkIndex(ISession iSession, PacketNetData packetNetData) { - int index = packetNetData.getIndex(); - if (iSession.getIndex() >= index){ - byte[] message = iSession.getCacheMessage(index); - if (message==null &&( packetNetData.getMsgId() != MessageTypeProto.MessageType.LOGIN_REQUEST_VALUE || packetNetData.getMsgId() != MessageTypeProto.MessageType.RECONNECT_REQUEST_VALUE)){ - //TODO error - LOGGER.info("the uid={},the msg={} is processing",iSession.getUid(), MessageTypeProto.MessageType.valueOf(packetNetData.getMsgId())); - return 1; - }else { - LOGGER.info("the uid={},the msg={} reback",iSession.getUid(), MessageTypeProto.MessageType.valueOf(packetNetData.getMsgId())); - iSession.writeAndFlush(message); - return 1; - } - }else { - iSession.setIndex(index); - iSession.setLoginTime(System.currentTimeMillis()); - } - return 0; - } - private void ackIndication(ISession iSession, int ackId) { LOGGER.info("the uid={},the ackId={}",iSession.getUid(),ackId); iSession.clearIndication(ackId); diff --git a/serverlogic/src/main/java/com/ljsd/jieling/config/SGlobalSystemConfig.java b/serverlogic/src/main/java/com/ljsd/jieling/config/SGlobalSystemConfig.java index 04d79da22..02df88aad 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/config/SGlobalSystemConfig.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/config/SGlobalSystemConfig.java @@ -46,7 +46,9 @@ public class SGlobalSystemConfig implements BaseConfig { @Override public void init() throws Exception { - Map sGlobalSystemConfigMapTmp = new HashMap<>(); + if( GameApplication.serverConfig == null){ + return; + } Map config = STableManager.getConfig(SGlobalSystemConfig.class); Iterator> iterator = config.entrySet().iterator(); while (iterator.hasNext()){ diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/blood/BloodLogic.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/blood/BloodLogic.java index 12dc2e097..cce1fd834 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/blood/BloodLogic.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/blood/BloodLogic.java @@ -193,7 +193,6 @@ public class BloodLogic { int uid = session.getUid(); User user = UserManager.getUser(uid); BloodyInfo bloodyInfo = user.getBloodyInfo(); - bloodyInfo.setScore(99999); Map sBloodyBattleTreasureMap = SBloodyBattleTreasure.sBloodyBattleTreasureMap; RoomProto.GetBloodyScoreInfoResponse.Builder builder = RoomProto.GetBloodyScoreInfoResponse.newBuilder().setScore(bloodyInfo.getScore()).setHadBuy(bloodyInfo.getHadBuy()); if(bloodyInfo.getStateInfo().isEmpty()){ @@ -302,12 +301,11 @@ public class BloodLogic { } public void calBloodyMissionInfo(User user,SortDataBean sortDataBean) throws Exception { - int killNums = sortDataBean.getKillNums(); BloodyInfo bloodyInfo = user.getBloodyInfo(); - bloodyInfo.setKillNums(bloodyInfo.getKillNums() + 9999); + bloodyInfo.setKillNums(bloodyInfo.getKillNums()); int changeScore = calScore(sortDataBean); if(changeScore>0){ - bloodyInfo.setScore(bloodyInfo.getScore() + calScore(sortDataBean)); + bloodyInfo.setScore(bloodyInfo.getScore() + changeScore); } MissionEventDistributor.requestStart(); user.getUserMissionManager().onGameEvent(user, GameEvent.BLOODY_END); diff --git a/serverlogic/src/main/java/com/ljsd/jieling/network/server/ProtocolsManager.java b/serverlogic/src/main/java/com/ljsd/jieling/network/server/ProtocolsManager.java index ee442af83..ed5bbf9e9 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/network/server/ProtocolsManager.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/network/server/ProtocolsManager.java @@ -298,7 +298,8 @@ public class ProtocolsManager implements ProtocolsAbstract { MessageUtil.sendErrorCode(iSession, ErrorCode.reloginCode,"您的账号已经在其他设备上登陆,请确认账号安全!"); iSession.setOfflineType(ErrorCode.reloginCode); backUpMsgToRedis(iSession); - offLine(iSession); + OnlineUserManager.userOffline(uid); + LOGGER.info("the channel={}",iSession.getCtx().channel()); return 1; } return 0; @@ -351,6 +352,9 @@ public class ProtocolsManager implements ProtocolsAbstract { LOGGER.info("player offLine ..."); ISession session = (ISession) gameSession; synchronized (session) { + if(session.getOfflineType() == ErrorCode.reloginCode){ + return; + } User user = UserManager.getUserInMem(session.getUid()); if(user == null){ return; @@ -358,9 +362,6 @@ public class ProtocolsManager implements ProtocolsAbstract { KtEventUtils.onKtEvent(user, ParamEventBean.UserLoginOutEvent,1); KtEventUtils.onKtEvent(user, ParamEventBean.UserLogin,1); LOGGER.info("player={} offLine ...",user.getId()); - if(session.getOfflineType() == ErrorCode.reloginCode){ - return; - } OnlineUserManager.userOffline(session.getUid()); if (session.getCtx() != null) { GameMessageHandler.allChannels.remove(session.getCtx().channel());