diff --git a/serverlogic/src/main/java/com/ljsd/jieling/core/HandlerLogicThread.java b/serverlogic/src/main/java/com/ljsd/jieling/core/HandlerLogicThread.java index c9336921e..693193852 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/core/HandlerLogicThread.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/core/HandlerLogicThread.java @@ -110,10 +110,12 @@ public class HandlerLogicThread extends Thread{ try { AyyncWorker ayyncWorker =null; boolean hasAsyncWorker =false; + //这里检查是否有需要执行的其他线程给过来的任务 while ( (ayyncWorker = ayyncWorkerConcurrentLinkedQueue.poll())!=null){ hasAsyncWorker=true; ayyncWorker.work(ayyncWorker.getUser()); } + //这里判断是否有新的请求进来 PacketNetData packetNetData = handlerLinkedQueue.poll(); if(packetNetData == null){ if(hasAsyncWorker){ diff --git a/serverlogic/src/main/java/com/ljsd/jieling/handler/map/MapLogic.java b/serverlogic/src/main/java/com/ljsd/jieling/handler/map/MapLogic.java index e75908c6a..a73b287a6 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/handler/map/MapLogic.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/handler/map/MapLogic.java @@ -2833,10 +2833,14 @@ public class MapLogic { // 获取玩家背包道具并消耗 Item item1 = user.getItemManager().getItem(item.getId()); if(item1!=null){ + if(item1.getItemId()==0){ + user.getItemManager().removeItem(0); + continue; + } + System.out.println("======================清理无尽副本道具,玩家:{ " + uid + " },道具id:{ " + item1.getItemId() + " }"); int[][] cost= new int[1][]; cost[0] = new int[]{item1.getItemId(),(int)item1.getItemNum()}; ItemUtil.itemCost(user,cost,BIReason.ENDLESS_REASON_CHANGE,0); - System.out.println("======================清理无尽副本道具,玩家:{ " + uid + " },道具id:{ " + item1.getItemId() + " }"); } } } diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/ActivityLogic.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/ActivityLogic.java index 2306792bc..d81a2b484 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/ActivityLogic.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/ActivityLogic.java @@ -340,6 +340,30 @@ public class ActivityLogic implements IEventHandler{ } ActivityMission activityMission = activityManager.getActivityMissionMap().get(openActivityId); if (activityMission != null) { + if(openActivityId == ActivityType.RechargeTotal){ + //首冲3天 -> 7天 容错 + int chargeMoneyCount = 0; + List sActivityRewardConfigs = SActivityRewardConfig.getsActivityRewardConfigByActivityId(openActivityId); + if(sActivityRewardConfigs.size() != activityMission.getActivityMissionMap().size()){ + for(ActivityProgressInfo progressInfo:activityMission.getActivityMissionMap().values()){ + if(chargeMoneyCount != progressInfo.getProgrss()){ + chargeMoneyCount = progressInfo.getProgrss(); + } + } + } + for (SActivityRewardConfig Config:sActivityRewardConfigs) { + if(!activityMission.getActivityMissionMap().containsKey(Config.getId())){ + if(activityMission.getActivityState()==2){ + activityMission.setActivityState(1); + } + ActivityProgressInfo activityProgressInfo = new ActivityProgressInfo(); + activityProgressInfo.setProgrss(ActivityLogic.getInstance().getInitActivityMissionProgress(openActivityId)); + activityProgressInfo.setState(0); + activityProgressInfo.setProgrss(chargeMoneyCount); + activityMission.getActivityMissionMap().put(Config.getId(), activityProgressInfo); + } + } + } continue; } 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 fc8545527..648689d1d 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 @@ -311,7 +311,8 @@ public class ChampionshipLogic { //获取竞技场排行榜 Set> arenaRankInfo = new HashSet<>(championshipPlayer); - Set> arenaRankInfoOne = RedisUtil.getInstence().getZsetreverseRangeWithScores(RedisKey.ARENA_RANK, Integer.toString(curSeason), 0, championshipPlayer); + //start-end为0 127 才能拿到第128 不然会多拿到129 + Set> arenaRankInfoOne = RedisUtil.getInstence().getZsetreverseRangeWithScores(RedisKey.ARENA_RANK, Integer.toString(curSeason), 0, championshipPlayer-1); if (arenaRankInfoOne != null && !arenaRankInfoOne.isEmpty()) { arenaRankInfo.addAll(arenaRankInfoOne); } 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 60b134881..3dae7a5ea 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 @@ -429,6 +429,7 @@ public class GuildLogic { Integer position = memberEntry.getKey(); Set value = memberEntry.getValue(); for(Integer uidTmp : value){ + LOGGER.info("family有问题的uid:{}",uidTmp); User userTmp = UserManager.getUser(uidTmp); builder.addFamilyUserInfo(CBean2Proto.getFamilyUserInfo(userTmp,position)); } diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/friend/FriendLogic.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/friend/FriendLogic.java index a186b44c2..3686cc8dd 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/friend/FriendLogic.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/friend/FriendLogic.java @@ -76,6 +76,7 @@ public class FriendLogic { List friends = friendManager.getFriends(); List friendList = new CopyOnWriteArrayList<>(); for (Integer friendId :friends){ + LOGGER.info("有问题的Uid:{}",friendId); CommonProto.Friend friend = CBean2Proto.getFriendInfo(friendId,friendManager); friendList.add(friend); } diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/rank/rankImpl/AbstractRank.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/rank/rankImpl/AbstractRank.java index 4ea8b4caa..35ed53fce 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/rank/rankImpl/AbstractRank.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/rank/rankImpl/AbstractRank.java @@ -103,6 +103,7 @@ public abstract class AbstractRank implements IRank { return builder; } ZSetOperations.TypedTuple data = rankByKey.iterator().next(); + LOGGER.info("有问题的ArenaId{}",Integer.parseInt(data.getValue())); User everyUser = UserManager.getUser(Integer.parseInt(data.getValue()), true); if (everyUser == null){ return builder; @@ -128,6 +129,7 @@ public abstract class AbstractRank implements IRank { } protected void getOptional(int index,ZSetOperations.TypedTuple data,PlayerInfoProto.RankResponse.Builder builder) throws Exception { + LOGGER.info("获取排行榜信息===================玩家id:{}"+data.getValue()); User everyUser = UserManager.getUser(Integer.parseInt(data.getValue()), true); if (everyUser == null){ return; diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/store/BuyGoodsNewLogic.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/store/BuyGoodsNewLogic.java index fe1fb2293..27882341b 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/store/BuyGoodsNewLogic.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/store/BuyGoodsNewLogic.java @@ -238,9 +238,9 @@ public class BuyGoodsNewLogic { } notifyPaySuccessFul(uid,goodsId,amount != -999); - MongoUtil.getLjsdMongoTemplate().lastUpdate(); sendGiftGoodsWithoutJudge(uid); openPush(session,user, PushRechargeType.point_recharge.getType(),goodsId,1); + MongoUtil.getLjsdMongoTemplate().lastUpdate(); // 扶持订单不需要上报 if(price>0 && !orderId.equals("support-order")){ // 以下为充值上报 @@ -460,6 +460,10 @@ public class BuyGoodsNewLogic { result = true; } }else{ + if(bag.getType() == RechargeType.push.getType() && !bag.isOpen()){ + user.getPlayerInfoManager().getNewRechargeInfo().removePush((PushWelfareBag) bag); + return true; + } if(bag.getType() == RechargeType.timeLimit.getType()){ //活动类型特殊处理 for(String[] s : configById.getCondition()){ @@ -539,15 +543,6 @@ public class BuyGoodsNewLogic { return bag; } - /** - * setPush礼包初始化数据 - */ - public static void setInitPushInfo(PushWelfareBag bag,SRechargeCommodityNewConfig config){ - bag.setStartTime(System.currentTimeMillis()); - bag.setEndTime(System.currentTimeMillis() + bag.getTime() * TimeUtils.HOUR); - bag.setOpen(true); - } - /** * 礼包到时处理 */ @@ -556,7 +551,7 @@ public class BuyGoodsNewLogic { bag.setLastBuyTime(0); bag.setBuyTimes(0); if(bag.getType() == RechargeType.push.getType()){ - clearPushBag((PushWelfareBag) bag); + user.getPlayerInfoManager().getNewRechargeInfo().removePush((PushWelfareBag) bag); } } @@ -704,7 +699,9 @@ public class BuyGoodsNewLogic { int popup = 0; boolean push = false; for(SPackPushConfig con : list){ + LOGGER.info("判断的id:{}",con.getId()); int bagId = judgePushCondition(user,con); + LOGGER.info("判断结果为:{}",bagId); //条件成功 if(bagId > 0 && info.getNextPushTime() < System.currentTimeMillis()){ popup = bagId; @@ -737,21 +734,25 @@ public class BuyGoodsNewLogic { if(scope[0] == 1){//主线关卡 int mainLevel = user.getMainLevelManager().getFightId(); if(mainLevel < scope[1]){ + LOGGER.info("aaaa"); return -1; } }else if(scope[0] == 2){//爬塔 int towerLevel = con.getConditionId()[1]; if(towerLevel < scope[1]){ + LOGGER.info("bbbb"); return -1; } }else if(scope[0] == 3){//玩家等级 int level = user.getPlayerInfoManager().getLevel(); if(level < scope[1]){ + LOGGER.info("cccc"); return -1; } }else if(scope[0] == 7){ double mxr = user.getPlayerInfoManager().getNewRechargeInfo().getMaxSingleR(); if(mxr < scope[1]){ + LOGGER.info("dddd"); return -1; } } @@ -764,6 +765,7 @@ public class BuyGoodsNewLogic { } } if(con.getPersonas()[index] > rr){ + LOGGER.info("eeee"); return -1; } return con.getPacks()[index]; @@ -886,26 +888,36 @@ public class BuyGoodsNewLogic { }else{ info.getTempLimitMap().put(bagId,num); } - SRechargeCommodityNewConfig config = SRechargeCommodityNewConfig.getConfigById(bagId); - if(info.getPushMap().get(bagId) != null){ + if(isFiveStarBag(bagId) && info.getPushMap().get(bagId) != null){ AbstractWelfareBag bag = info.getPushMap().get(bagId); - setInitPushInfo((PushWelfareBag) bag,config); - if(isFiveStarBag(bagId)){ - bag.setLimit((bag.getLimit()+num)>info.FIVESTARLIMIT?info.FIVESTARLIMIT:(bag.getLimit()+num)); - } + bag.setLimit((bag.getLimit()+num)>info.FIVESTARLIMIT?info.FIVESTARLIMIT:(bag.getLimit()+num)); + bag.setStartTime(System.currentTimeMillis()); + bag.setEndTime(bag.getStartTime() + getTime(bag) * TimeUtils.HOUR); }else{ + SRechargeCommodityNewConfig config = SRechargeCommodityNewConfig.getConfigById(bagId); AbstractWelfareBag bag = initUnitWF(user,config); - if(isFiveStarBag(bagId)){ - bag.setLimit(num>info.FIVESTARLIMIT?info.FIVESTARLIMIT:num); + if(num != 0 && num+hasOpen > info.FIVESTARLIMIT){ + bag.setLimit(info.FIVESTARLIMIT-hasOpen); + }else{ + bag.setLimit(num); } } return true; } /** - * 消除推送礼包 + * 推送礼包的结束时间 + * @param bag + * @return */ - private static void clearPushBag(PushWelfareBag bag){ - bag.clear(); + private static int getTime(AbstractWelfareBag bag){ + int i = 2; + for(String[] s : bag.getCondition()){ + if(s[0].equals("6")){ + i = Integer.parseInt(s[1]); + break; + } + } + return i; } } diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/store/newRechargeInfo/NewRechargeInfo.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/store/newRechargeInfo/NewRechargeInfo.java index 9cad636b9..7b62d31bf 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/store/newRechargeInfo/NewRechargeInfo.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/store/newRechargeInfo/NewRechargeInfo.java @@ -184,6 +184,11 @@ public class NewRechargeInfo extends MongoBase { updateString("pushMap."+bag.getModId(),bag); } + public void removePush(PushWelfareBag bag){ + pushMap.remove(bag.getModId()); + removeString(getMongoKey() + ".pushMap."+bag.getModId()); + } + public int getMainLineLost() { return mainLineLost; } diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/store/newRechargeInfo/bean/AbstractWelfareBag.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/store/newRechargeInfo/bean/AbstractWelfareBag.java index 60f460467..eb51d7f50 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/store/newRechargeInfo/bean/AbstractWelfareBag.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/store/newRechargeInfo/bean/AbstractWelfareBag.java @@ -35,9 +35,6 @@ public class AbstractWelfareBag extends MongoBase{ setModId(config.getId()); setType(config.getOtype()); setLimit(config.getLimit()); - if(config.getOtype() == 4){ - setLimit(1); - } setTimeType(config.getTime()); setDailyUpdate(config.getDailyUpdate()); setContinueDays(config.getContiueDays()); diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/store/newRechargeInfo/bean/PushWelfareBag.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/store/newRechargeInfo/bean/PushWelfareBag.java index d2977eeae..8e30ead3b 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/store/newRechargeInfo/bean/PushWelfareBag.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/store/newRechargeInfo/bean/PushWelfareBag.java @@ -27,20 +27,12 @@ public class PushWelfareBag extends AbstractWelfareBag { public boolean buy() { setBuyTimes(getBuyTimes()+1); if(getLimit()<=getBuyTimes()){ - clear(); + setOpen(false); } return true; } - public void clear(){ - setOpen(false); - setLimit(1); - setBuyTimes(0); - setStartTime(0); - setEndTime(0); - } - - public int getTime(){ + private int getTime(){ int i = 2; for(String[] s : getCondition()){ if(s[0].equals("6")){ 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 9ac0f2560..918d5fe8c 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/thread/ThreadManager.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/thread/ThreadManager.java @@ -157,4 +157,7 @@ public class ThreadManager implements IManager { executor.execute(task); } + public static ThreadPoolExecutor getExecutor() { + return executor; + } } 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 7239a3dc5..fb4a56bd5 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 @@ -36,6 +36,8 @@ import com.ljsd.jieling.network.server.ProtocolsManager; import com.ljsd.jieling.thread.ThreadManager; import com.ljsd.jieling.util.AyyncWorker; import com.ljsd.jieling.util.MessageUtil; +import config.SChallengeMapConfig; +import config.SRechargeCommodityNewConfig; import manager.STableManager; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -141,6 +143,33 @@ public class MinuteTask extends Thread { try { ArenaLogic.getInstance().worldSendReward(); + if(STableManager.getConfig(SRechargeCommodityNewConfig.class).size()!= SRechargeCommodityNewConfig.configMap.size()){ + + Map config = STableManager.getConfig(SRechargeCommodityNewConfig.class); + Map tempConfigMap = new HashMap<>(); + Map tempSdkConfigMap = new HashMap<>(); + Map> tempConfigTypeMap = new HashMap<>(); + for(SRechargeCommodityNewConfig newConfig : config.values()){ + newConfig.setCondition(newConfig.initConditon(newConfig)); + tempConfigMap.put(newConfig.getId(),newConfig); + tempSdkConfigMap.put(newConfig.getRechargeId(),newConfig); + tempSdkConfigMap.put(newConfig.getRechargeId2(),newConfig); + tempSdkConfigMap.put(newConfig.getRechargeId3(),newConfig); + if(tempConfigTypeMap.containsKey(newConfig.getType())){ + tempConfigTypeMap.get(newConfig.getType()).add(newConfig.getId()); + }else{ + List list = new ArrayList<>(); + list.add(newConfig.getId()); + tempConfigTypeMap.put(newConfig.getType(),list); + } + } +// if(configMap == null){ + SRechargeCommodityNewConfig.configMap = tempConfigMap; + LOGGER.info("修复重新加载Recharge"); + SRechargeCommodityNewConfig.sdkconfigMap = tempSdkConfigMap; + SRechargeCommodityNewConfig.configTypeMap = tempConfigTypeMap; + + } }catch (Exception e){ e.printStackTrace(); LOGGER.error("Exception::=>{}",e.toString()); diff --git a/serverlogic/src/main/java/com/ljsd/jieling/thread/task/RPCServerTask.java b/serverlogic/src/main/java/com/ljsd/jieling/thread/task/RPCServerTask.java index 1670c0755..3e7a0d5cb 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/thread/task/RPCServerTask.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/thread/task/RPCServerTask.java @@ -4,6 +4,7 @@ import com.google.gson.Gson; import com.ljsd.CoreService; import com.ljsd.GameApplication; import com.ljsd.jieling.config.json.CoreSettings; +import com.ljsd.jieling.thread.ThreadManager; import com.ljsd.jieling.thrift.idl.RPCRequestIFace; import com.ljsd.jieling.util.ConfigurableApplicationContextManager; import org.apache.thrift.TProcessor; @@ -43,6 +44,7 @@ public class RPCServerTask extends Thread{ TBinaryProtocol.Factory proFactory = new TBinaryProtocol.Factory(true, true); trArgs.protocolFactory(proFactory); trArgs.maxWorkerThreads(16); + trArgs.executorService(ThreadManager.getExecutor()); LOGGER.info("run->RPC services is starting."); final TServer server = new TThreadPoolServer(trArgs); while (true) { diff --git a/tablemanager/src/main/java/config/SRechargeCommodityNewConfig.java b/tablemanager/src/main/java/config/SRechargeCommodityNewConfig.java index af5ab4357..dc67fbf47 100644 --- a/tablemanager/src/main/java/config/SRechargeCommodityNewConfig.java +++ b/tablemanager/src/main/java/config/SRechargeCommodityNewConfig.java @@ -87,11 +87,12 @@ public class SRechargeCommodityNewConfig implements BaseConfig { tempConfigTypeMap.put(newConfig.getType(),list); } } - if(configMap == null){ +// if(configMap == null){ configMap = tempConfigMap; + System.out.println("重新加载Recharge"); sdkconfigMap = tempSdkConfigMap; configTypeMap = tempConfigTypeMap; - } +// } } public static String[][] getConditon(int id){