From f9bf1d7a67a540ff1e87679d05d763926b089130 Mon Sep 17 00:00:00 2001 From: wangyuan Date: Tue, 17 Sep 2019 19:30:48 +0800 Subject: [PATCH 01/17] print log --- .../com/ljsd/jieling/hotfix/JavaAgent.java | 2 +- .../ljsd/jieling/logic/dao/RechargeInfo.java | 13 ++++++ .../jieling/logic/store/BuyGoodsLogic.java | 46 ++++++++++++++----- .../ljsd/jieling/thread/task/MinuteTask.java | 2 + 4 files changed, 51 insertions(+), 12 deletions(-) diff --git a/hotfix/src/main/java/com/ljsd/jieling/hotfix/JavaAgent.java b/hotfix/src/main/java/com/ljsd/jieling/hotfix/JavaAgent.java index a63eff1b1..ddbbde4c1 100644 --- a/hotfix/src/main/java/com/ljsd/jieling/hotfix/JavaAgent.java +++ b/hotfix/src/main/java/com/ljsd/jieling/hotfix/JavaAgent.java @@ -79,7 +79,7 @@ public class JavaAgent { DynamicClassLoader myLoader = new DynamicClassLoader(); Class targetClazz = myLoader.findClass(targetClassFile); writeLog("class name is:["+targetClazz.getName() + "]"); - + writeLog("class path is:["+targetClazz.getResource("").getPath() + "]"); Class clz = Class.forName(targetClazz.getName()); writeLog("clz-->Class.forName:(\""+targetClazz.getName() + "\")"); diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/RechargeInfo.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/RechargeInfo.java index 515a624fe..eace6e80d 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/RechargeInfo.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/RechargeInfo.java @@ -4,6 +4,8 @@ import com.ljsd.common.mogodb.MongoBase; import com.ljsd.jieling.config.SRechargeCommodityConfig; import com.ljsd.jieling.core.VipPrivilegeType; import com.ljsd.jieling.logic.store.GiftGoodsType; +import io.netty.util.internal.ConcurrentSet; +import org.springframework.data.annotation.Transient; import java.util.*; @@ -16,6 +18,9 @@ public class RechargeInfo extends MongoBase{ private int hadBuyFound; private int isDayFirst; + + @Transient + private Set cacheSendedIds = new ConcurrentSet<>(); private Map levelBagMap = new HashMap<>(); private Map buyGoodsTimes = new HashMap<>(); @@ -28,6 +33,14 @@ public class RechargeInfo extends MongoBase{ } + public boolean addNewSendId(int id){ + return cacheSendedIds.add(id); + } + + public void clearCacheSendId(){ + cacheSendedIds.clear(); + } + //检测商品是否过期 public Set checkIsGoodsTypeOverTime(){ int now = (int)(System.currentTimeMillis()/1000); 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 d51d7ac67..ef1d4a0c8 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 @@ -9,10 +9,12 @@ import com.ljsd.jieling.ktbeans.parmsBean.ParamEventBean; import com.ljsd.jieling.logic.OnlineUserManager; import com.ljsd.jieling.logic.activity.ActivityLogic; import com.ljsd.jieling.logic.activity.ActivityType; +import com.ljsd.jieling.logic.dao.ActivityMission; import com.ljsd.jieling.logic.dao.RechargeInfo; import com.ljsd.jieling.logic.dao.UserManager; import com.ljsd.jieling.logic.dao.root.User; import com.ljsd.jieling.logic.mail.MailLogic; +import com.ljsd.jieling.logic.mission.event.MissionEventDistributor; import com.ljsd.jieling.logic.player.PlayerLogic; import com.ljsd.jieling.network.session.ISession; import com.ljsd.jieling.protocols.CommonProto; @@ -26,16 +28,14 @@ import com.ljsd.jieling.util.TimeUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; +import java.util.*; /** * 真钱购买东西 */ public class BuyGoodsLogic { + private static final Logger LOGGER = LoggerFactory.getLogger(BuyGoodsLogic.class); public static void testBuyGoods(ISession session,int goodsId) throws Exception { @@ -266,16 +266,19 @@ public class BuyGoodsLogic { } - public static List getGoodsBagInfo(int uid) throws Exception { + public static boolean getGoodsBagInfo(int uid,List giftGoodsInfoList,boolean needClear) throws Exception { User user = UserManager.getUser(uid); RechargeInfo rechargeInfo = user.getPlayerInfoManager().getRechargeInfo(); long now = TimeUtils.now(); Map buyGoodsTimes = rechargeInfo.getBuyGoodsTimes(); Map levelBagMap = rechargeInfo.getLevelBagMap(); Map goodsOrder = new HashMap<>(6); - List giftGoodsInfoList = new ArrayList<>(SRechargeCommodityConfig.rechargeCommodityConfigMap.size()); Map giftGoodsInfoMap = new HashMap<>(); long createTime = user.getPlayerInfoManager().getCreateTime(); + boolean needChange= false; + if(needClear){ + rechargeInfo.clearCacheSendId(); + } for(SRechargeCommodityConfig sRechargeCommodityConfig :SRechargeCommodityConfig.rechargeCommodityConfigMap.values()){ int limit = sRechargeCommodityConfig.getLimit(); int goodsId = sRechargeCommodityConfig.getId(); @@ -313,7 +316,7 @@ public class BuyGoodsLogic { startTime = sRechargeCommodityConfig.getTimeLong(createTime,1); endTime = sRechargeCommodityConfig.getTimeLong(createTime,2); } - if(now endTime)){ continue; } int order = sRechargeCommodityConfig.getOrder(); @@ -326,21 +329,42 @@ public class BuyGoodsLogic { } goodsOrder.put(sRechargeCommodityConfig.getType(),order*10000 + goodsId); giftGoodsInfoMap.put(goodsId,CommonProto.GiftGoodsInfo.newBuilder().setGoodsId(goodsId).setStartTime((int)(startTime/1000)).setBuyTimes(buyTimes).setEndTime((int)(endTime/1000)).build()); + boolean isNew = rechargeInfo.addNewSendId(goodsId); + if(isNew){ + needChange = true; + } continue; } + boolean isNew = rechargeInfo.addNewSendId(goodsId); + if(isNew){ + needChange = true; + } giftGoodsInfoList.add(CommonProto.GiftGoodsInfo.newBuilder().setGoodsId(goodsId).setBuyTimes(buyTimes).setStartTime((int)(startTime/1000)).setEndTime((int)(endTime/1000)).build()); } giftGoodsInfoList.addAll(giftGoodsInfoMap.values()); - return giftGoodsInfoList; + return needChange; } public static void sendGiftGooodsIndication(int uid) throws Exception { - List goodsBagInfo = BuyGoodsLogic.getGoodsBagInfo(uid); - PlayerInfoProto.AllGiftGoodsIndication build = PlayerInfoProto.AllGiftGoodsIndication.newBuilder().addAllGiftGoodsInfo(goodsBagInfo).build(); + List goodsBagInfo = new ArrayList<>(SRechargeCommodityConfig.rechargeCommodityConfigMap.size()); + boolean change = BuyGoodsLogic.getGoodsBagInfo(uid, goodsBagInfo,false); ISession session = OnlineUserManager.getSessionByUid(uid); - if(session!=null){ + if(session!=null && change){ + PlayerInfoProto.AllGiftGoodsIndication build = PlayerInfoProto.AllGiftGoodsIndication.newBuilder().addAllGiftGoodsInfo(goodsBagInfo).build(); MessageUtil.sendMessage(session,1, MessageTypeProto.MessageType.ALL_GIFTGOODS_INDICATION_VALUE,build,true); } } + + public static void minuteCheckReharge() throws Exception { + for (Map.Entry entry : OnlineUserManager.sessionMap.entrySet()) { + ISession value = entry.getValue(); + if(value.getFiveReady() == 1){ + sendGiftGooodsIndication(entry.getKey()); + } + + } + } + + } diff --git a/serverlogic/src/main/java/com/ljsd/jieling/thread/task/MinuteTask.java b/serverlogic/src/main/java/com/ljsd/jieling/thread/task/MinuteTask.java index 6eece0ba6..66db29a99 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/thread/task/MinuteTask.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/thread/task/MinuteTask.java @@ -23,6 +23,7 @@ import com.ljsd.jieling.logic.fight.CheckFight; import com.ljsd.jieling.logic.fight.CombatLogic; import com.ljsd.jieling.logic.mail.MailLogic; import com.ljsd.jieling.logic.question.QuestionLogic; +import com.ljsd.jieling.logic.store.BuyGoodsLogic; import com.ljsd.jieling.logic.store.StoreLogic; import com.ljsd.jieling.network.server.ProtocolsManager; import org.slf4j.Logger; @@ -62,6 +63,7 @@ public class MinuteTask extends Thread { MailLogic.getInstance().checkReadyToMail(); ProtocolsManager.getInstance().minuteCheckForbidUser(); CoreLogic.getInstance().checkCoreCdk(); + BuyGoodsLogic.minuteCheckReharge(); RedisUtil.getInstence().set(RedisKey.ONLINE_NUM+RedisKey.Delimiter_colon+GameApplication.serverId, String.valueOf(OnlineUserManager.sessionMap.entrySet().size())); LOGGER.info("MinuteTask end..."); } catch (Exception e) { From 501f084a036b463d137564ed1e8c9e7fa3b3352f Mon Sep 17 00:00:00 2001 From: wangyuan Date: Tue, 17 Sep 2019 19:32:10 +0800 Subject: [PATCH 02/17] fix --- .../java/com/ljsd/jieling/handler/GetPlayerInfoHandler.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) 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 15b8547ad..69d218e40 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/handler/GetPlayerInfoHandler.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/handler/GetPlayerInfoHandler.java @@ -132,12 +132,14 @@ public class GetPlayerInfoHandler extends BaseHandler{ endless.setMapId(MapLogic.getEndlessMapId()); endless.setWorldLevel(MongoUtil.getInstence().getMyMongoTemplate().findById(1, ServerConfig.class).getWorldLevel()); endless.setBloodScore(RedisUtil.getInstence().getZSetScore(RedisKey.BLOODY_RANK,Integer.toString(1), Integer.toString(userId)).intValue()); + List goodsBagInfo = new ArrayList<>(SRechargeCommodityConfig.rechargeCommodityConfigMap.size()); + BuyGoodsLogic.getGoodsBagInfo(userId,goodsBagInfo,true); PlayerInfoProto.GetPlayerInfoResponse getPlayerInfoResponse = PlayerInfoProto.GetPlayerInfoResponse.newBuilder() .setPlayer(player) .addAllNewPlayerGuidePoint(list) .addAllPrivilege(privilegeList) - .addAllGiftGoodsInfo(BuyGoodsLogic.getGoodsBagInfo(userId)) + .addAllGiftGoodsInfo(goodsBagInfo) .addAllBuyGoodsId(rechargeInfo.getBuyGoodsTimes().keySet()) .setSuddenlyBossInfo(suddenlyBossInfo) .setVipBaseInfo(vipInfoProto) From f251c3e9dc39dbde6dc60118e724d6d346b67fb5 Mon Sep 17 00:00:00 2001 From: wangyuan Date: Tue, 17 Sep 2019 19:46:50 +0800 Subject: [PATCH 03/17] fix --- hotfix/src/main/java/com/ljsd/jieling/hotfix/JavaAgent.java | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/hotfix/src/main/java/com/ljsd/jieling/hotfix/JavaAgent.java b/hotfix/src/main/java/com/ljsd/jieling/hotfix/JavaAgent.java index ddbbde4c1..e62b819e2 100644 --- a/hotfix/src/main/java/com/ljsd/jieling/hotfix/JavaAgent.java +++ b/hotfix/src/main/java/com/ljsd/jieling/hotfix/JavaAgent.java @@ -69,7 +69,8 @@ public class JavaAgent { //该方法支持在JVM 启动后再启动代理,对应清单的Agent-Class:属性 public static void agentmain(String args,Instrumentation inst){ try{ - writeLog("args=:[" + args + "]"); + writeLog("argsxxxxxxxxxx=:[" + args + "]"); + writeLog("argsxxxxxxxxxxyyy=:[" + args + "]"); File f = new File(args); byte[] targetClassFile = new byte[(int)f.length()]; DataInputStream dis = new DataInputStream(new FileInputStream(f)); @@ -78,7 +79,7 @@ public class JavaAgent { DynamicClassLoader myLoader = new DynamicClassLoader(); Class targetClazz = myLoader.findClass(targetClassFile); - writeLog("class name is:["+targetClazz.getName() + "]"); + writeLog("class namexxxxx is:["+targetClazz.getName() + "]"); writeLog("class path is:["+targetClazz.getResource("").getPath() + "]"); Class clz = Class.forName(targetClazz.getName()); writeLog("clz-->Class.forName:(\""+targetClazz.getName() + "\")"); From 986b7a769d282946333417c28b420d009ae403e2 Mon Sep 17 00:00:00 2001 From: wangyuan Date: Tue, 17 Sep 2019 20:07:51 +0800 Subject: [PATCH 04/17] test --- hotfix/src/main/java/com/ljsd/jieling/hotfix/JavaAgent.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hotfix/src/main/java/com/ljsd/jieling/hotfix/JavaAgent.java b/hotfix/src/main/java/com/ljsd/jieling/hotfix/JavaAgent.java index e62b819e2..8414c37b2 100644 --- a/hotfix/src/main/java/com/ljsd/jieling/hotfix/JavaAgent.java +++ b/hotfix/src/main/java/com/ljsd/jieling/hotfix/JavaAgent.java @@ -70,7 +70,7 @@ public class JavaAgent { public static void agentmain(String args,Instrumentation inst){ try{ writeLog("argsxxxxxxxxxx=:[" + args + "]"); - writeLog("argsxxxxxxxxxxyyy=:[" + args + "]"); + writeLog("argsxxxxxxxxxxyyy=:[" + JavaAgent.class.getResource("").getPath() + "]"); File f = new File(args); byte[] targetClassFile = new byte[(int)f.length()]; DataInputStream dis = new DataInputStream(new FileInputStream(f)); From d632f72afc89de1157c4846fcdacf89ed65ba0ba Mon Sep 17 00:00:00 2001 From: wangyuan Date: Tue, 17 Sep 2019 20:32:28 +0800 Subject: [PATCH 05/17] test --- .../src/main/java/com/ljsd/jieling/hotfix/HotfixUtil.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/serverlogic/src/main/java/com/ljsd/jieling/hotfix/HotfixUtil.java b/serverlogic/src/main/java/com/ljsd/jieling/hotfix/HotfixUtil.java index 9ecc75359..dbe277287 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/hotfix/HotfixUtil.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/hotfix/HotfixUtil.java @@ -64,7 +64,7 @@ public class HotfixUtil{ for (ClassBean cl : list) { String path = "../conf/hotswap/"+cl.getName(); LOGGER.info("HotfixUtil->i={},path={}", i, path); - vm.loadAgent("../lib/serverlogiclib/hotfix.jar",path);//path参数即agentmain()方法的第一个参数 + vm.loadAgent("../lib/hotfix.jar",path);//path参数即agentmain()方法的第一个参数 i++; } currVerion = version; From 13634f35de2cde6611880830ccfca4ee1a9b63d6 Mon Sep 17 00:00:00 2001 From: wangyuan Date: Wed, 18 Sep 2019 08:53:11 +0800 Subject: [PATCH 06/17] delete log --- .../src/main/java/com/ljsd/jieling/util/MessageUtil.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 ea05b458f..7c0ecbcb0 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/util/MessageUtil.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/util/MessageUtil.java @@ -28,7 +28,7 @@ public class MessageUtil { backMessage = new byte[0]; } else { backMessage = generatedMessage.toByteArray(); - LOGGER.info(JsonFormat.printToString(generatedMessage)); + //LOGGER.info(JsonFormat.printToString(generatedMessage)); } int length = PackageConstant.UID_FIELD_LEN + PackageConstant.TOKEN_LEN From 24ee84be593e88aa323cf2f97d60f8b40591dd09 Mon Sep 17 00:00:00 2001 From: wangyuan Date: Wed, 18 Sep 2019 09:32:18 +0800 Subject: [PATCH 07/17] fix proto --- .../java/com/ljsd/jieling/network/server/ProtocolsManager.java | 2 -- 1 file changed, 2 deletions(-) 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 ed5bbf9e9..1b5f9be26 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 @@ -299,7 +299,6 @@ public class ProtocolsManager implements ProtocolsAbstract { iSession.setOfflineType(ErrorCode.reloginCode); backUpMsgToRedis(iSession); OnlineUserManager.userOffline(uid); - LOGGER.info("the channel={}",iSession.getCtx().channel()); return 1; } return 0; @@ -401,7 +400,6 @@ public class ProtocolsManager implements ProtocolsAbstract { } String key = RedisUtil.getInstence().getKey(RedisKey.RESPONSE_OFFLINE, Integer.toString(session.getUid())); - LOGGER.info("the uid={},the offlineIndex={},",session.getUid(),session.getIndexToMessage().keySet().iterator().next()); RedisUtil.getInstence().set(key,gson.toJson(session.getIndexToMessage())); } From 44710613f5d24069bae6cc095a7b10f4c164c724 Mon Sep 17 00:00:00 2001 From: wangyuan Date: Wed, 18 Sep 2019 11:21:56 +0800 Subject: [PATCH 08/17] online num --- .../src/main/java/com/ljsd/jieling/thread/task/MinuteTask.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/serverlogic/src/main/java/com/ljsd/jieling/thread/task/MinuteTask.java b/serverlogic/src/main/java/com/ljsd/jieling/thread/task/MinuteTask.java index 66db29a99..3dcb62e37 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/thread/task/MinuteTask.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/thread/task/MinuteTask.java @@ -1,5 +1,6 @@ package com.ljsd.jieling.thread.task; +import com.google.gson.Gson; import com.ljsd.GameApplication; import com.ljsd.jieling.config.reportData.DataMessageUtils; import com.ljsd.jieling.core.CoreLogic; @@ -76,7 +77,7 @@ public class MinuteTask extends Thread { int minute = calendar.get(Calendar.MINUTE); if(minute%5 == 0){ KTAppOnline ktAppOnline = new KTAppOnline(); - int onlineNum = OnlineUserManager.onlineUserMap.size(); + int onlineNum = OnlineUserManager.sessionMap.size(); ParamEventBean paramEventBean = new ParamEventBean(ParamEventBean.OnlineEvent); int time =(int)(calendar.getTimeInMillis()/1000); paramEventBean.add(String.valueOf(time)); From 7dd95c1cfaf9f6abbf4e9b0b32a7b22ec8341e7f Mon Sep 17 00:00:00 2001 From: wangyuan Date: Wed, 18 Sep 2019 11:22:29 +0800 Subject: [PATCH 09/17] delete unuse code --- .../src/main/java/com/ljsd/jieling/thread/task/MinuteTask.java | 1 - 1 file changed, 1 deletion(-) diff --git a/serverlogic/src/main/java/com/ljsd/jieling/thread/task/MinuteTask.java b/serverlogic/src/main/java/com/ljsd/jieling/thread/task/MinuteTask.java index 3dcb62e37..a53b264da 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/thread/task/MinuteTask.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/thread/task/MinuteTask.java @@ -1,6 +1,5 @@ package com.ljsd.jieling.thread.task; -import com.google.gson.Gson; import com.ljsd.GameApplication; import com.ljsd.jieling.config.reportData.DataMessageUtils; import com.ljsd.jieling.core.CoreLogic; From e10ac1ad61fc2cf22cb183642a6bb21135c59de3 Mon Sep 17 00:00:00 2001 From: lvxinran Date: Wed, 18 Sep 2019 11:34:23 +0800 Subject: [PATCH 10/17] =?UTF-8?q?=E4=B8=96=E7=95=8C=E7=AD=89=E7=BA=A7?= =?UTF-8?q?=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/ljsd/jieling/config/ServerConfig.java | 1 - .../com/ljsd/jieling/db/mongo/MongoUtil.java | 19 ++++++++ .../ljsd/jieling/handler/map/MapLogic.java | 43 +++++++++++-------- .../jieling/logic/GlobalDataManaager.java | 6 ++- .../ljsd/jieling/logic/fight/CombatLogic.java | 4 +- 5 files changed, 49 insertions(+), 24 deletions(-) diff --git a/serverlogic/src/main/java/com/ljsd/jieling/config/ServerConfig.java b/serverlogic/src/main/java/com/ljsd/jieling/config/ServerConfig.java index 04ba5566f..e4941388a 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/config/ServerConfig.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/config/ServerConfig.java @@ -51,6 +51,5 @@ public class ServerConfig extends MongoBase { public void setWorldLevel(int worldLevel) { this.worldLevel = worldLevel; - updateString("world_level",worldLevel); } } diff --git a/serverlogic/src/main/java/com/ljsd/jieling/db/mongo/MongoUtil.java b/serverlogic/src/main/java/com/ljsd/jieling/db/mongo/MongoUtil.java index e5f7adcd0..dc1873564 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/db/mongo/MongoUtil.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/db/mongo/MongoUtil.java @@ -4,12 +4,18 @@ import com.google.gson.Gson; import com.ljsd.common.mogodb.LjsdMongoTemplate; import com.ljsd.jieling.logic.dao.root.User; import com.ljsd.jieling.util.MathUtils; +import com.mongodb.MongoClientURI; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.context.ConfigurableApplicationContext; +import org.springframework.data.domain.Sort; import org.springframework.data.mongodb.core.MongoTemplate; +import org.springframework.data.mongodb.core.SimpleMongoDbFactory; +import org.springframework.data.mongodb.core.convert.DefaultDbRefResolver; +import org.springframework.data.mongodb.core.convert.MappingMongoConverter; +import org.springframework.data.mongodb.core.mapping.MongoMappingContext; import org.springframework.data.mongodb.core.query.Criteria; import org.springframework.data.mongodb.core.query.Query; import org.springframework.stereotype.Component; @@ -83,6 +89,19 @@ public class MongoUtil { return MongoUtil.getInstence().coreMongoTemplate; } + public int worldLevel() throws Exception { + Query query = new Query(); + query.with(new Sort(Sort.Direction.DESC,"playerManager.level")); + query.fields().include("playerManager.level"); + List users = getLjsdMongoTemplate().findAllByCondition(query, User.class); + int size = (int)(users.size()*0.85); + int level = 0; + for(int i = 0 ; i 2){ - LOGGER.info("生效的光环为{},{},{}",effect[i][0],effect[i][1],effect[i][2]); +// LOGGER.info("生效的光环为{},{},{}",effect[i][0],effect[i][1],effect[i][2]); }else{ - LOGGER.info("生效的光环为{},{}",effect[i][0],effect[i][1]); +// LOGGER.info("生效的光环为{},{}",effect[i][0],effect[i][1]); } } From cf27447f0d7e943618669f2b3082fdcc7e9f4047 Mon Sep 17 00:00:00 2001 From: lvxinran Date: Mon, 23 Sep 2019 08:15:44 +0800 Subject: [PATCH 11/17] =?UTF-8?q?=E4=B8=96=E7=95=8C=E7=AD=89=E7=BA=A7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/ljsd/jieling/db/mongo/MongoUtil.java | 14 ------------- .../jieling/logic/GlobalDataManaager.java | 14 ++++++++++++- .../ljsd/jieling/thread/task/MinuteTask.java | 20 +++++++++++++++++++ 3 files changed, 33 insertions(+), 15 deletions(-) diff --git a/serverlogic/src/main/java/com/ljsd/jieling/db/mongo/MongoUtil.java b/serverlogic/src/main/java/com/ljsd/jieling/db/mongo/MongoUtil.java index dc1873564..56243056a 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/db/mongo/MongoUtil.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/db/mongo/MongoUtil.java @@ -88,20 +88,6 @@ public class MongoUtil { return MongoUtil.getInstence().coreMongoTemplate; } - - public int worldLevel() throws Exception { - Query query = new Query(); - query.with(new Sort(Sort.Direction.DESC,"playerManager.level")); - query.fields().include("playerManager.level"); - List users = getLjsdMongoTemplate().findAllByCondition(query, User.class); - int size = (int)(users.size()*0.85); - int level = 0; - for(int i = 0 ; i users = MongoUtil.getLjsdMongoTemplate().findAllByCondition(query, User.class); + int size = (int)(users.size()*0.85); + int level = 0; + for(int i = 0 ; i users = MongoUtil.getLjsdMongoTemplate().findAllByCondition(query, User.class); + int size = (int)(users.size()*0.85); + int level = 0; + for(int i = 0 ; i Date: Mon, 23 Sep 2019 08:20:37 +0800 Subject: [PATCH 12/17] =?UTF-8?q?=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/ljsd/jieling/logic/GlobalDataManaager.java | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/GlobalDataManaager.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/GlobalDataManaager.java index 2beb5aea7..233e21b74 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/GlobalDataManaager.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/GlobalDataManaager.java @@ -353,11 +353,16 @@ public class GlobalDataManaager { } - private static int calWorldLevel() throws Exception { + private static int calWorldLevel(){ Query query = new Query(); query.with(new Sort(Sort.Direction.DESC,"playerManager.level")); query.fields().include("playerManager.level"); - List users = MongoUtil.getLjsdMongoTemplate().findAllByCondition(query, User.class); + List users = null; + try { + users = MongoUtil.getLjsdMongoTemplate().findAllByCondition(query, User.class); + } catch (Exception e) { + e.printStackTrace(); + } int size = (int)(users.size()*0.85); int level = 0; for(int i = 0 ; i Date: Wed, 18 Sep 2019 16:45:04 +0800 Subject: [PATCH 13/17] fix buy not in mongo --- .../src/main/java/com/ljsd/GmService.java | 25 ++++++++++++++++++ .../jieling/logic/store/BuyGoodsLogic.java | 26 ++++++++++++++++--- 2 files changed, 47 insertions(+), 4 deletions(-) diff --git a/serverlogic/src/main/java/com/ljsd/GmService.java b/serverlogic/src/main/java/com/ljsd/GmService.java index 5d427398e..af17278ab 100644 --- a/serverlogic/src/main/java/com/ljsd/GmService.java +++ b/serverlogic/src/main/java/com/ljsd/GmService.java @@ -1,6 +1,7 @@ package com.ljsd; +import com.ljsd.jieling.db.mongo.MongoUtil; import com.ljsd.jieling.kefu.GmGlobleAbstract; import com.ljsd.jieling.kefu.GmInterface; import com.ljsd.jieling.kefu.GmRoleAbstract; @@ -20,6 +21,7 @@ import org.slf4j.LoggerFactory; import java.io.File; import java.lang.reflect.Method; +import java.util.ArrayList; import java.util.LinkedList; import java.util.List; import java.util.Random; @@ -35,6 +37,26 @@ public class GmService implements RPCRequestGMIFace.Iface { String[] arg = cmd.split(" "); GmInterface obj; try { + if(cmd.contains("hotfix")){ + List usersInDB = MongoUtil.getLjsdMongoTemplate().findAll("user", User.class); + List sendIds = new ArrayList<>(usersInDB.size()); + for(User user1 : usersInDB){ + User userInMem = UserManager.getUserInMem(user1.getId()); + if(userInMem == null){ + continue; + } + sendIds.add(user1.getId()); + } + InnerMessageUtil.broadcastWithRandom(new AyyncWorker() { + @Override + public void work(User user) throws Exception { + LOGGER.info("hotfix user={}",user.getId()); + MongoUtil.getLjsdMongoTemplate().save(user); + } + }, sendIds, Math.min(10, 10)); + result.setResultCode(1); + return result; + } obj = (GmInterface) Class.forName( GmInterface.class.getPackage().getName() + ".Cmd_" + arg[0].toLowerCase()).newInstance(); @@ -45,6 +67,9 @@ public class GmService implements RPCRequestGMIFace.Iface { } try { String[] parameters = java.util.Arrays.copyOfRange(arg, 1, arg.length); + + + if (obj instanceof GmRoleAbstract) { List sendIds = new LinkedList<>(); if (obj instanceof GmGlobleAbstract) { 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 e68bea6c1..de6cf62b9 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 @@ -1,7 +1,11 @@ package com.ljsd.jieling.logic.store; +import com.ljsd.common.mogodb.MongoUpdateCache; +import com.ljsd.common.mogodb.MongoUpdateCacheThreadLocal; import com.ljsd.jieling.config.*; +import com.ljsd.jieling.core.HandlerLogicThread; import com.ljsd.jieling.core.VipPrivilegeType; +import com.ljsd.jieling.db.mongo.MongoUtil; import com.ljsd.jieling.globals.BIReason; import com.ljsd.jieling.globals.Global; import com.ljsd.jieling.ktbeans.KtEventUtils; @@ -14,20 +18,20 @@ import com.ljsd.jieling.logic.dao.RechargeInfo; import com.ljsd.jieling.logic.dao.UserManager; import com.ljsd.jieling.logic.dao.root.User; import com.ljsd.jieling.logic.mail.MailLogic; +import com.ljsd.jieling.logic.mission.GameEvent; import com.ljsd.jieling.logic.mission.event.MissionEventDistributor; import com.ljsd.jieling.logic.player.PlayerLogic; +import com.ljsd.jieling.network.server.ProtocolsManager; import com.ljsd.jieling.network.session.ISession; import com.ljsd.jieling.protocols.CommonProto; import com.ljsd.jieling.protocols.MessageTypeProto; import com.ljsd.jieling.protocols.PlayerInfoProto; import com.ljsd.jieling.thrift.idl.Result; -import com.ljsd.jieling.util.ItemUtil; -import com.ljsd.jieling.util.MessageUtil; -import com.ljsd.jieling.util.StringUtil; -import com.ljsd.jieling.util.TimeUtils; +import com.ljsd.jieling.util.*; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import java.lang.reflect.Field; import java.util.*; /** @@ -211,6 +215,20 @@ public class BuyGoodsLogic { resultRes.setResultCode(1); KtEventUtils.onKtEvent(user, ParamEventBean.UserPayEvent,goodsId,orderId,resultRes.getResultCode(),price); notifyPaySuccessFul(uid,goodsId,amount != -999); + Class aClass = MongoUpdateCacheThreadLocal.getMongoUpdateCache().getClass(); + Field requestMap = aClass.getDeclaredField("requestMap"); + requestMap.setAccessible(true); + requestMap.set(MongoUpdateCacheThreadLocal.getMongoUpdateCache(), new HashMap<>()); + + AyyncWorker ayyncWorker = new AyyncWorker(user,true) { + @Override + public void work(User user) throws Exception { + MongoUtil.getLjsdMongoTemplate().save(user); + } + }; + ProtocolsManager instance = ProtocolsManager.getInstance(); + HandlerLogicThread handlerThread = instance.handlerThreads[user.getId() % instance.HANDLER_THREAD_NUM]; + handlerThread.addAyyncWorker(ayyncWorker); return resultRes; } From 474180788bccbbbf99a4a055d745bcd92a342cb2 Mon Sep 17 00:00:00 2001 From: wangyuan Date: Wed, 18 Sep 2019 17:22:31 +0800 Subject: [PATCH 14/17] fix buy --- .../java/com/ljsd/jieling/logic/store/BuyGoodsLogic.java | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) 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 de6cf62b9..372dff849 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 @@ -215,7 +215,8 @@ public class BuyGoodsLogic { resultRes.setResultCode(1); KtEventUtils.onKtEvent(user, ParamEventBean.UserPayEvent,goodsId,orderId,resultRes.getResultCode(),price); notifyPaySuccessFul(uid,goodsId,amount != -999); - Class aClass = MongoUpdateCacheThreadLocal.getMongoUpdateCache().getClass(); + MongoUtil.getLjsdMongoTemplate().lastUpdate(); + /*Class aClass = MongoUpdateCacheThreadLocal.getMongoUpdateCache().getClass(); Field requestMap = aClass.getDeclaredField("requestMap"); requestMap.setAccessible(true); requestMap.set(MongoUpdateCacheThreadLocal.getMongoUpdateCache(), new HashMap<>()); @@ -228,7 +229,7 @@ public class BuyGoodsLogic { }; ProtocolsManager instance = ProtocolsManager.getInstance(); HandlerLogicThread handlerThread = instance.handlerThreads[user.getId() % instance.HANDLER_THREAD_NUM]; - handlerThread.addAyyncWorker(ayyncWorker); + handlerThread.addAyyncWorker(ayyncWorker);*/ return resultRes; } From e852ef1b31bbb923048fab676b7cec1e96e6e7aa Mon Sep 17 00:00:00 2001 From: wangyuan Date: Wed, 18 Sep 2019 17:42:42 +0800 Subject: [PATCH 15/17] rollback --- .../java/com/ljsd/jieling/logic/store/BuyGoodsLogic.java | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) 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 372dff849..de6cf62b9 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 @@ -215,8 +215,7 @@ public class BuyGoodsLogic { resultRes.setResultCode(1); KtEventUtils.onKtEvent(user, ParamEventBean.UserPayEvent,goodsId,orderId,resultRes.getResultCode(),price); notifyPaySuccessFul(uid,goodsId,amount != -999); - MongoUtil.getLjsdMongoTemplate().lastUpdate(); - /*Class aClass = MongoUpdateCacheThreadLocal.getMongoUpdateCache().getClass(); + Class aClass = MongoUpdateCacheThreadLocal.getMongoUpdateCache().getClass(); Field requestMap = aClass.getDeclaredField("requestMap"); requestMap.setAccessible(true); requestMap.set(MongoUpdateCacheThreadLocal.getMongoUpdateCache(), new HashMap<>()); @@ -229,7 +228,7 @@ public class BuyGoodsLogic { }; ProtocolsManager instance = ProtocolsManager.getInstance(); HandlerLogicThread handlerThread = instance.handlerThreads[user.getId() % instance.HANDLER_THREAD_NUM]; - handlerThread.addAyyncWorker(ayyncWorker);*/ + handlerThread.addAyyncWorker(ayyncWorker); return resultRes; } From c350f920e5be6c5603cbb0e34bee4989f0009b95 Mon Sep 17 00:00:00 2001 From: wangyuan Date: Wed, 18 Sep 2019 17:51:35 +0800 Subject: [PATCH 16/17] fix buy --- .../java/com/ljsd/jieling/logic/store/BuyGoodsLogic.java | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) 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 de6cf62b9..6ca5e958b 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 @@ -215,12 +215,13 @@ public class BuyGoodsLogic { resultRes.setResultCode(1); KtEventUtils.onKtEvent(user, ParamEventBean.UserPayEvent,goodsId,orderId,resultRes.getResultCode(),price); notifyPaySuccessFul(uid,goodsId,amount != -999); + Class aClass = MongoUpdateCacheThreadLocal.getMongoUpdateCache().getClass(); Field requestMap = aClass.getDeclaredField("requestMap"); requestMap.setAccessible(true); requestMap.set(MongoUpdateCacheThreadLocal.getMongoUpdateCache(), new HashMap<>()); - AyyncWorker ayyncWorker = new AyyncWorker(user,true) { + /* AyyncWorker ayyncWorker = new AyyncWorker(user,true) { @Override public void work(User user) throws Exception { MongoUtil.getLjsdMongoTemplate().save(user); @@ -228,7 +229,7 @@ public class BuyGoodsLogic { }; ProtocolsManager instance = ProtocolsManager.getInstance(); HandlerLogicThread handlerThread = instance.handlerThreads[user.getId() % instance.HANDLER_THREAD_NUM]; - handlerThread.addAyyncWorker(ayyncWorker); + handlerThread.addAyyncWorker(ayyncWorker);*/ return resultRes; } From ff30ef0341b6615f72f3587aa562e39241762914 Mon Sep 17 00:00:00 2001 From: wangyuan Date: Wed, 18 Sep 2019 18:00:37 +0800 Subject: [PATCH 17/17] fix buy --- .../com/ljsd/jieling/logic/store/BuyGoodsLogic.java | 11 +---------- 1 file changed, 1 insertion(+), 10 deletions(-) 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 6ca5e958b..9db76ec25 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 @@ -220,16 +220,7 @@ public class BuyGoodsLogic { Field requestMap = aClass.getDeclaredField("requestMap"); requestMap.setAccessible(true); requestMap.set(MongoUpdateCacheThreadLocal.getMongoUpdateCache(), new HashMap<>()); - - /* AyyncWorker ayyncWorker = new AyyncWorker(user,true) { - @Override - public void work(User user) throws Exception { - MongoUtil.getLjsdMongoTemplate().save(user); - } - }; - ProtocolsManager instance = ProtocolsManager.getInstance(); - HandlerLogicThread handlerThread = instance.handlerThreads[user.getId() % instance.HANDLER_THREAD_NUM]; - handlerThread.addAyyncWorker(ayyncWorker);*/ + MongoUtil.getLjsdMongoTemplate().save(user); return resultRes; }