diff --git a/gamecommon/src/main/java/util/MathUtils.java b/gamecommon/src/main/java/util/MathUtils.java index ad5f9a1f9..4e4120161 100644 --- a/gamecommon/src/main/java/util/MathUtils.java +++ b/gamecommon/src/main/java/util/MathUtils.java @@ -3,6 +3,7 @@ package util; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import java.math.BigDecimal; import java.util.*; import java.util.concurrent.ThreadLocalRandom; @@ -367,4 +368,10 @@ public class MathUtils { return result; } + public static double doubleAdd(double d1 ,double d2){ + BigDecimal b1 = new BigDecimal(Double.toString(d1)); + BigDecimal b2 = new BigDecimal(Double.toString(d2)); + return b1.add(b2).doubleValue(); + } + } 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 index c2117d4ef..71cb5736e 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/config/clazzStaticCfg/RewardStaticConfig.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/config/clazzStaticCfg/RewardStaticConfig.java @@ -1,6 +1,5 @@ package com.ljsd.jieling.config.clazzStaticCfg; -import config.SExpeditionFloorConfig; import config.SRaceTowerRewardConfig; import manager.AbstractClassStaticConfig; import manager.STableManager; diff --git a/serverlogic/src/main/java/com/ljsd/jieling/handler/SignInHandler.java b/serverlogic/src/main/java/com/ljsd/jieling/handler/SignInHandler.java index 202b1278b..d1d1136a5 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/handler/SignInHandler.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/handler/SignInHandler.java @@ -4,6 +4,8 @@ import com.ljsd.jieling.core.VipPrivilegeType; import com.ljsd.jieling.exception.ErrorCode; import com.ljsd.jieling.exception.ErrorCodeException; import com.ljsd.jieling.globals.BIReason; +import com.ljsd.jieling.logic.activity.event.Poster; +import com.ljsd.jieling.logic.activity.event.SignInEvent; import com.ljsd.jieling.logic.dao.UserManager; import com.ljsd.jieling.logic.dao.root.User; import com.ljsd.jieling.logic.player.PlayerLogic; @@ -55,8 +57,15 @@ public class SignInHandler extends BaseHandler { throw new ErrorCodeException("次数不足"); } PlayerLogic.getInstance().checkAndUpdate(user, VipPrivilegeType.SIGN_AGAIN, 1); + + boolean todayFirstSign = user.getPlayerInfoManager().getSignTotay() == 0; user.getPlayerInfoManager().setSignTotay(1); + if (todayFirstSign) { + //累计签到事件 + Poster.getPoster().dispatchEvent(new SignInEvent(user.getId())); + } + int[] reward = sign.getreward(); int[][] cost = new int[1][]; cost[0] = reward; diff --git a/serverlogic/src/main/java/com/ljsd/jieling/handler/hero/DoHeroChangeRequestHandler.java b/serverlogic/src/main/java/com/ljsd/jieling/handler/hero/DoHeroChangeRequestHandler.java index 300cc949f..4297984c9 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/handler/hero/DoHeroChangeRequestHandler.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/handler/hero/DoHeroChangeRequestHandler.java @@ -66,7 +66,7 @@ public class DoHeroChangeRequestHandler extends BaseHandler> monsterHp){ + trialInfo.setMonsterHp(monsterHp); + updateString("trialInfo.monsterHp",monsterHp); } } diff --git a/serverlogic/src/main/java/com/ljsd/jieling/handler/map/TrialInfo.java b/serverlogic/src/main/java/com/ljsd/jieling/handler/map/TrialInfo.java index c84f043ba..e4fb7c9a9 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/handler/map/TrialInfo.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/handler/map/TrialInfo.java @@ -35,8 +35,12 @@ public class TrialInfo { private MapGameInfo mapGameInfo = new MapGameInfo(); + private int bombUseTimes; + private Map> monsterHp = new HashMap<>(); + + public Set getTowerReceivedReward() { return towerReceivedReward; } @@ -141,11 +145,20 @@ public class TrialInfo { this.mapGameInfo = mapGameInfo; } + public int getBombUseTimes() { return bombUseTimes; } public void setBombUseTimes(int bombUseTimes) { this.bombUseTimes = bombUseTimes; + + } + public Map> getMonsterHp() { + return monsterHp; + } + + public void setMonsterHp(Map> monsterHp) { + this.monsterHp = monsterHp; } } diff --git a/serverlogic/src/main/java/com/ljsd/jieling/handler/map/behavior/FourtyTwoBehavior.java b/serverlogic/src/main/java/com/ljsd/jieling/handler/map/behavior/FourtyTwoBehavior.java index 99aa9b70e..39cf80e3b 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/handler/map/behavior/FourtyTwoBehavior.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/handler/map/behavior/FourtyTwoBehavior.java @@ -62,6 +62,8 @@ public class FourtyTwoBehavior extends BaseBehavior { mapManager.setTrialFloor(floor + 1); mapManager.setTrialEnergy(0); mapManager.setMapIntoFlag(2); + //换层清除数据 + mapManager.updateMapMonsterHp(new HashMap<>()); return true; } } diff --git a/serverlogic/src/main/java/com/ljsd/jieling/handler/map/mapType/TowerMap.java b/serverlogic/src/main/java/com/ljsd/jieling/handler/map/mapType/TowerMap.java index aad56372d..e02815cfe 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/handler/map/mapType/TowerMap.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/handler/map/mapType/TowerMap.java @@ -366,7 +366,15 @@ public class TowerMap extends AbstractMap { int groupId = option[0]; int destoryXY = mapManager.getTriggerXY(); + //更新血量 + TrialInfo trialInfo = mapManager.getTrialInfo(); + Map> monsterHp = trialInfo.getMonsterHp(); + PVEFightEvent pveFightEvent = new PVEFightEvent(uid, mapManager.getTeamId(), 10, "", GameFightType.MapFastFight, groupId, 3); + //怪物剩余血量 + if(monsterHp!=null&&!monsterHp.isEmpty()&&monsterHp.containsKey(cell.getCellId())){ + pveFightEvent.setMonsterRemainHp(monsterHp.get(cell.getCellId())); + } FightResult fightResult = FightDispatcher.dispatcher(pveFightEvent); int[] checkResult = fightResult.getCheckResult(); @@ -374,11 +382,10 @@ public class TowerMap extends AbstractMap { //校验结果码 1:胜利 int resultCode = checkResult[0]; if (resultCode == -1) { -// throw new ErrorCodeException(ErrorCode.FIGHT_EXCEPTION); + throw new ErrorCodeException(ErrorCode.FIGHT_EXCEPTION); } mapManager.setLastFightResult(resultCode); - //更新血量 - TrialInfo trialInfo = mapManager.getTrialInfo(); + List teamPosHeroInfos = user.getTeamPosManager().getTeamPosForHero().get(mapManager.getTeamId()); if(teamPosHeroInfos==null||teamPosHeroInfos.size()!=1){ // throw new ErrorCodeException(ErrorCode.SERVER_SELF_DEFINE); @@ -391,6 +398,15 @@ public class TowerMap extends AbstractMap { Map property = trailHero.getProperty(); Cell createCell = null; if (resultCode == 0) { + //记录怪剩余血量 + List hpList= new ArrayList<>(); + for(int i = 2;i rechargeInfoMap = new HashMap<>(); - - Map realBuyGoodsTimes = new HashMap<>(); - Map hotGoods = new HashMap<>(); - rechargeInfoMap= gson.fromJson(args[3],rechargeInfoMap.getClass()); - String rechargeInfoFileStr = rechargeInfoMap.get(String.valueOf(user.getId())); - if(rechargeInfoFileStr == null){ - return false; - } - RechargeInfo rechargeInfoFile = gson.fromJson(rechargeInfoFileStr,RechargeInfo.class); - realBuyGoodsTimes = rechargeInfoFile.getBuyGoodsTimes(); - hotGoods=new HashMap<>(realBuyGoodsTimes); - Map oldBuyGoodsTimes = user.getPlayerInfoManager().getRechargeInfo().getBuyGoodsTimes(); - - for (Map.Entry entry:oldBuyGoodsTimes.entrySet() ) { - if(realBuyGoodsTimes.containsKey(entry.getKey())){ - int finalvalue = realBuyGoodsTimes.get(entry.getKey())-entry.getValue(); - - if(finalvalue==0){ - realBuyGoodsTimes.remove(entry.getKey()); - }else if(finalvalue>0){ - realBuyGoodsTimes.put(entry.getKey(),finalvalue); - }else { - //日志记录不对 - LOGGER.info("cmd_________recharge:err"); - return false; - } - - } - } - - int hotRechargeMoney = 0; - for (Map.Entry entry:realBuyGoodsTimes.entrySet()) { - if(entry.getKey()==1||entry.getKey()==2||entry.getKey()==3||entry.getKey()==4||entry.getKey()==5||entry.getKey()==13||entry.getKey()==14||entry.getKey()==15||entry.getKey()==16){ - SRechargeCommodityConfig sRechargeCommodityConfig = SRechargeCommodityConfig.rechargeCommodityConfigMap.get(entry.getKey()); - int price =sRechargeCommodityConfig.getPrice(); - hotRechargeMoney+=entry.getValue()*price; - } - } - - //月卡 - boolean mulvip =false; - if(realBuyGoodsTimes.containsKey(9)||realBuyGoodsTimes.containsKey(10)||realBuyGoodsTimes.containsKey(11)){ - mulvip =true; - } - - - RechargeInfo rechargeInfo = user.getPlayerInfoManager().getRechargeInfo(); - int saveAmt = rechargeInfo.getSaveAmt(); - - - //成长礼金 - if(realBuyGoodsTimes.containsKey(7)||realBuyGoodsTimes.containsKey(8)){ - // if(!user.getActivityManager().getActivityMissionMap().containsKey(6)){ - ActivityLogic.getInstance().openActivityReallyOpen(user, ActivityType.GrowthFund); - //} - } -// int[][] costItemArr = StringUtil.parseFiledInt2(rewardStr); -// for (int i = 0; i goodsDurationMap = user.getPlayerInfoManager().getRechargeInfo().getGoodsDurationMap(); - Integer nowTime =(int)(System.currentTimeMillis()/1000); - for(Integer goodsId : hotGoods.keySet()){ - if(goodsDurationMap.containsKey(goodsId)){ - LOGGER.info("the uid={} already send the goods={}",user.getId(),goodsId); - continue; - } - SRechargeCommodityConfig sRechargeCommodityConfig = SRechargeCommodityConfig.rechargeCommodityConfigMap.get(goodsId); - int goodsType = sRechargeCommodityConfig.getType(); - if(goodsType == GiftGoodsType.MONTHCARD || goodsType == GiftGoodsType.LUXURYMONTHCARD || goodsType == GiftGoodsType.WEEKCARD){ - Integer endTime = null; - boolean needSendMail = false; - for(Map.Entry goodsDurationItem : goodsDurationMap.entrySet()){ - if(SRechargeCommodityConfig.rechargeCommodityConfigMap.get(goodsDurationItem.getKey()).getType() == goodsType){ - endTime = goodsDurationItem.getValue(); - } - } - if(endTime == null || nowTime>endTime){ - endTime = nowTime; - needSendMail = true; - } - - endTime +=sRechargeCommodityConfig.getContiueDays() * 24 * 3600; - rechargeInfo.updateGoodsTypeDuration(sRechargeCommodityConfig.getId(),endTime); - if(needSendMail){ - int[] openPrivilege = sRechargeCommodityConfig.getOpenPrivilege(); - if(openPrivilege!=null && openPrivilege.length>0){ - for(int privilege:openPrivilege){ - user.getPlayerInfoManager().addVipInfo(privilege); - } - } - } - } - } - - - - user.getPlayerInfoManager().getRechargeInfo().setBuyGoodsTimes(hotGoods); - - LOGGER.info("cmd_________recharge:hotRechargeMoney"+hotRechargeMoney+"重复月卡:"+mulvip); } } 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 e94af7301..81f5f25d8 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/SituationLogic.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/SituationLogic.java @@ -72,16 +72,20 @@ public class SituationLogic { runnable.run(); } private void checkStatus(){ - if(status==null||overTime==null||openConfig==null){ - status = new int[4]; - openConfig = SSpecialConfig.getTwiceArrayValue(SSpecialConfig.XUANYUAN_OPEN_TIME); - overTime = new int[4]; - doCheck(); - }else{ - if(TimeUtils.getHourOfDay()!=5){ - return; + try{ + if(status==null||overTime==null||openConfig==null){ + status = new int[4]; + openConfig = SSpecialConfig.getTwiceArrayValue(SSpecialConfig.XUANYUAN_OPEN_TIME); + overTime = new int[4]; + doCheck(); + }else{ + if(TimeUtils.getHourOfDay()!=5){ + return; + } + doCheck(); } - doCheck(); + }catch (Exception e){ + e.printStackTrace(); } } private void doCheck(){ @@ -89,7 +93,7 @@ public class SituationLogic { int hourOfDay = TimeUtils.getHourOfDay(); int week = TimeUtils.getDayOfWeek(); if(hourOfDay<5){ - week = week==0?7:week-1; + week = week==1?7:week-1; } boolean isIndication = false; for(int[] config:openConfig){ @@ -285,7 +289,7 @@ public class SituationLogic { User userInMem = UserManager.getUserInMem(pveFightEvent.getAttackUid()); CommonProto.FightTeamInfo fightTeamInfo = FightUtil.getFightTeamInfoWithSomeBuff(userInMem, pveFightEvent.getTeamId(),pveFightEvent.getAttackBloodMap(),buffInfo); int fightSeed = FightUtil.getFightSeed(); - List monsterfightTeamInfos = FightUtil.makeMonsterFightData(pveFightEvent.getMonsterGroupId(), pveFightEvent.getNums()); + List monsterfightTeamInfos = FightUtil.makeMonsterFightData(pveFightEvent.getMonsterGroupId(), pveFightEvent.getNums(),null); LuaValue getFightData = FightDataUtil.getFinalFightData(fightTeamInfo, monsterfightTeamInfos); LuaValue getOptionData = FightDataUtil.getOptionData(pveFightEvent.getAttackUid()+""); int[] fightResult = CheckFight.getInstance().checkFight(fightSeed, fightEvent.getMostTime(), getFightData, getOptionData, fightEvent.getFightType().getFightType()); diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/ActivityType.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/ActivityType.java index a2e744b49..fe91170a1 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/ActivityType.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/ActivityType.java @@ -66,5 +66,6 @@ public interface ActivityType { int COPY_PASS = 55; // 开服福利 副本限时通过奖励 int NEW_EIGHT_LOGIN = 56;//新的八日登录 + int SIGN_BOX= 57;//累计签到宝箱 } diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/ActivityTypeEnum.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/ActivityTypeEnum.java index b26a3065b..5a6207aa2 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/ActivityTypeEnum.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/ActivityTypeEnum.java @@ -31,7 +31,7 @@ public enum ActivityTypeEnum { COPY_EXPERT(ActivityType.COPY_EXPERT, CopyExpectRankActivity::new), LEVEL_EXPERT(ActivityType.LEVEL_EXPERT, LevelExpectActivity::new), STAMINA_EXPERT(ActivityType.STAMINA_EXPERT, StaminaExpectRankActivity::new), - SIGN_IN(ActivityType.SIGN_IN, SignInSumActivity::new), + //SIGN_IN(ActivityType.SIGN_IN, SignInSumActivity::new),//因为签到没有走活动,所以SignInSunActivity类用作了累计签到奖励活动,此类暂时先不删 RECHARGE_NUM(ActivityType.RECHARGE_NUM, RechargeSumActivity::new), ESPECIALEQUIP_EXPERT(ActivityType.ESPECIALEQUIP_EXPERT, EspecialEquipExpectActivity::new), SOULEQUIP_EXPERT(ActivityType.SOULEQUIP_EXPERT, SoulEquipExpectActivity::new), @@ -49,7 +49,8 @@ public enum ActivityTypeEnum { ECPEDITION_ACTIVITY(ActivityType.ECPEDITION_ACTIVITY,DefaultEmptyActivity::new), COPY_PASS(ActivityType.COPY_PASS,ChapterRewardActivity::new), NEW_EIGHT_LOGIN(ActivityType.NEW_EIGHT_LOGIN,NewEightActivity::new), - BEAUTY_BAG(ActivityType.BEAUTY_BAG,LimitRandomCardActivity::new) + BEAUTY_BAG(ActivityType.BEAUTY_BAG,LimitRandomCardActivity::new), + SIGN_BOX(ActivityType.SIGN_BOX,SignInSumActivity::new) ; private int type; diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/DailyRechargeActivity.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/DailyRechargeActivity.java index 01201d169..4c28f03b5 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/DailyRechargeActivity.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/DailyRechargeActivity.java @@ -3,6 +3,7 @@ package com.ljsd.jieling.logic.activity; import com.ljsd.jieling.jbean.ActivityMission; import com.ljsd.jieling.jbean.ActivityProgressInfo; import com.ljsd.jieling.logic.OnlineUserManager; +import com.ljsd.jieling.logic.dao.UserManager; import com.ljsd.jieling.logic.dao.root.User; import com.ljsd.jieling.network.session.ISession; import config.SActivityRewardConfig; @@ -43,7 +44,10 @@ class DailyRechargeActivity extends AbstractActivity { @Override boolean takeRewardsProcess(ISession session, SActivityRewardConfig sActivityRewardConfig, ActivityProgressInfo activityProgressInfo) throws Exception { - return checkValue(session, sActivityRewardConfig, activityProgressInfo); + int[][] values = sActivityRewardConfig.getValues(); + User user = UserManager.getUser(session.getUid()); + int value = user.getActivityManager().getActivityMissionMap().get(sActivityRewardConfig.getActivityId()).getV(); + return value/1000 >= values[0][0]; } @Override diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/DefaultEmptyActivity.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/DefaultEmptyActivity.java index a9df0cef6..04062dac7 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/DefaultEmptyActivity.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/DefaultEmptyActivity.java @@ -1,18 +1,17 @@ package com.ljsd.jieling.logic.activity; import com.ljsd.jieling.config.clazzStaticCfg.TaskStaticConfig; +import com.ljsd.jieling.globals.BIReason; import com.ljsd.jieling.globals.Global; import com.ljsd.jieling.jbean.ActivityMission; +import com.ljsd.jieling.logic.dao.Item; 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.main.ServenMissionIdsType; import com.ljsd.jieling.util.ItemUtil; import com.ljsd.jieling.util.ToolsUtil; -import config.SErrorCodeEerverConfig; -import config.SGlobalActivity; -import config.SSevenDaysScore; -import config.STreasureTaskConfig; +import config.*; import manager.STableManager; import java.util.ArrayList; @@ -57,7 +56,7 @@ public class DefaultEmptyActivity extends AbstractActivity{ }*/ } }else if(sGlobalActivity.getType() == ActivityType.EXCHANGEANDDROP){ - /* int shopId = sGlobalActivity.getShopId(); + int shopId = sGlobalActivity.getShopId()[0]; SStoreConfig sStoreConfig = SStoreConfig.getSstoreConfigBuyStore().get(shopId).get(0); int removeItemId = sStoreConfig.getCost()[0][0]; Item item = user.getItemManager().getItem(removeItemId); @@ -65,7 +64,7 @@ public class DefaultEmptyActivity extends AbstractActivity{ int[][] cost= new int[1][]; cost[0] = new int[]{item.getItemId(),item.getItemNum()}; ItemUtil.itemCost(user,cost, BIReason.EXCHANGE_ACTIVITY_CLOSE,sGlobalActivity.getId()); - }*/ + } } } diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/LuckyCatActivity.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/LuckyCatActivity.java index ec1c96bd1..2d7cc6b51 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/LuckyCatActivity.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/LuckyCatActivity.java @@ -77,7 +77,7 @@ public class LuckyCatActivity extends AbstractActivity { throw new ErrorCodeException(ErrorCode.CFG_NULL); } - if (activityMission.getV() < sLuckyRewardConfig.getRmbValue()) { + if (activityMission.getV()/1000 < sLuckyRewardConfig.getRmbValue()) { throw new ErrorCodeException(ErrorCode.newDefineCode("value illegality")); } diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/RechargeSumActivity.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/RechargeSumActivity.java index 668b9a65e..1c79097eb 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/RechargeSumActivity.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/RechargeSumActivity.java @@ -3,6 +3,7 @@ package com.ljsd.jieling.logic.activity; import com.ljsd.jieling.jbean.ActivityMission; import com.ljsd.jieling.jbean.ActivityProgressInfo; import com.ljsd.jieling.logic.OnlineUserManager; +import com.ljsd.jieling.logic.dao.UserManager; import com.ljsd.jieling.logic.dao.root.User; import com.ljsd.jieling.network.session.ISession; import config.SActivityRewardConfig; @@ -31,7 +32,10 @@ class RechargeSumActivity extends AbstractActivity { @Override boolean takeRewardsProcess(ISession session, SActivityRewardConfig sActivityRewardConfig, ActivityProgressInfo activityProgressInfo) throws Exception { - return checkValue(session, sActivityRewardConfig, activityProgressInfo); + int[][] values = sActivityRewardConfig.getValues(); + User user = UserManager.getUser(session.getUid()); + int value = user.getActivityManager().getActivityMissionMap().get(sActivityRewardConfig.getActivityId()).getV(); + return value/1000 >= values[0][0]; } } diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/RechargeSumDayActivity.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/RechargeSumDayActivity.java index 577ac9efd..dbe2dd14b 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/RechargeSumDayActivity.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/RechargeSumDayActivity.java @@ -38,7 +38,7 @@ class RechargeSumDayActivity extends AbstractActivity { if (activityProgressInfo == null || activityProgressInfo.getProgrss() == 1) { return; } - if (count >= SActivityRewardConfig.getsActivityRewardConfigByMissionId(missionId).getValues()[0][0]) { + if (count/1000 >= SActivityRewardConfig.getsActivityRewardConfigByMissionId(missionId).getValues()[0][0]) { activityProgressInfo.setProgrss(1); } diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/RechargeTotalActivity.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/RechargeTotalActivity.java index 93f6b4728..006ad5b28 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/RechargeTotalActivity.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/RechargeTotalActivity.java @@ -22,7 +22,7 @@ class RechargeTotalActivity extends AbstractActivity { User user = UserManager.getUser(session.getUid()); RechargeInfo rechargeInfo = user.getPlayerInfoManager().getRechargeInfo(); int days = TimeUtils.differentDaysByHour(rechargeInfo.getCreateTime(), now,5) + 1; - if (missionProgress < values[0][0] || days < values[0][1]) { + if (missionProgress/1000 < values[0][0] || days < values[0][1]) { return false; } return true; diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/SignInSumActivity.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/SignInSumActivity.java index 551c24690..96f08ab73 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/SignInSumActivity.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/SignInSumActivity.java @@ -1,15 +1,32 @@ package com.ljsd.jieling.logic.activity; import com.ljsd.jieling.jbean.ActivityMission; +import com.ljsd.jieling.jbean.ActivityProgressInfo; +import com.ljsd.jieling.logic.activity.event.IEvent; +import com.ljsd.jieling.logic.activity.event.Poster; +import com.ljsd.jieling.logic.activity.event.SignInEvent; +import com.ljsd.jieling.logic.dao.UserManager; +import com.ljsd.jieling.network.session.ISession; +import config.SActivityRewardConfig; + +import java.util.List; +import java.util.Map; + -/** - * 签到不走活动 没有逻辑处理 - */ -@Deprecated class SignInSumActivity extends AbstractActivity { + //签到宝箱领完第七天之后,重置进度 + public static int RESET_DAYS_AFTER_RECEIVED = 7; + public SignInSumActivity(int id) { super(id); + Poster.getPoster().listenEvent(this, SignInEvent.class); + } + + @Override + public void onEvent(IEvent event) throws Exception { + if(!(event instanceof SignInEvent)) return; + update(UserManager.getUser(((SignInEvent) event).getUid()),1); } @Override @@ -17,4 +34,23 @@ class SignInSumActivity extends AbstractActivity { activityMission.setV(count + activityMission.getV()); } + @Override + boolean takeRewardsProcess(ISession session, SActivityRewardConfig sActivityRewardConfig, ActivityProgressInfo activityProgressInfo) throws Exception { + return checkValue(session, sActivityRewardConfig, activityProgressInfo); + } + + @Override + public boolean takeReward(ISession session, int missionId) throws Exception { + boolean result = super.takeReward(session, missionId); + if (result) { + //取得活动奖励配置,判断下如果是7天的宝箱,则重置进度,takeReward成功之后,sActivityRewardConfig一定在 + SActivityRewardConfig config = SActivityRewardConfig.getsActivityRewardConfigByMissionId(missionId); + if (config.getValues()[0][0]== RESET_DAYS_AFTER_RECEIVED) { + reSetValue(UserManager.getUser(session.getUid())); + } + ActivityMission activityMission = UserManager.getUser(session.getUid()).getActivityManager().getActivityMissionMap().get(this.id); + sendActivityProgress(session, activityMission, null); + } + return result; + } } diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/event/SignInEvent.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/event/SignInEvent.java new file mode 100644 index 000000000..24fffe04f --- /dev/null +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/event/SignInEvent.java @@ -0,0 +1,22 @@ +package com.ljsd.jieling.logic.activity.event; + + +/** + * 每日签到事件 + * 用作处理累计签到宝箱 + */ +public class SignInEvent implements IEvent{ + private int uid; + + public SignInEvent(int uid) { + this.uid = uid; + } + + public int getUid() { + return uid; + } + + public void setUid(int uid) { + this.uid = uid; + } +} diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/eventhandler/HeroFiveStarGetEventHandler.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/eventhandler/HeroFiveStarGetEventHandler.java index f232fcd39..341dea0a5 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/eventhandler/HeroFiveStarGetEventHandler.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/eventhandler/HeroFiveStarGetEventHandler.java @@ -48,6 +48,7 @@ public class HeroFiveStarGetEventHandler implements IEventHandler { long lasttime = rechargeInfo.getTypeBagMap().get(((HeroFiveStarGetEvent) event).getStar()); int diffHourTemp = (int) ((now - lasttime) / 3600 / 1000); + //做一个验证,如果前一次的成长礼没有超出购买时间,才增加次数,否则重置为1次 if (diffHourTemp < 2) { rechargeInfo.addDyGoodsCanBuyTimes(goodsId); }else { diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/eventhandler/LeveGiftEventHander.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/eventhandler/LeveGiftEventHander.java index dad1d0568..a3e09350e 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/eventhandler/LeveGiftEventHander.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/eventhandler/LeveGiftEventHander.java @@ -46,8 +46,8 @@ public class LeveGiftEventHander implements IEventHandler { return; } RechargeInfo rechargeInfo = user.getPlayerInfoManager().getRechargeInfo(); - int saveAmt = rechargeInfo.getSaveAmt(); - Map.Entry entry = SRechargeCommodityConfig.rechargePlayerLevelMap.floorEntry(saveAmt); + double saveAmt = rechargeInfo.getSaveAmt(); + Map.Entry entry = SRechargeCommodityConfig.rechargePlayerLevelMap.floorEntry((int)saveAmt); SRechargeCommodityConfig orDefault = STableManager.getConfig(SRechargeCommodityConfig.class).getOrDefault(entry.getValue(), null); if(orDefault==null){ return; diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/PlayerManager.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/PlayerManager.java index 74674defb..6035c8bfc 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/PlayerManager.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/PlayerManager.java @@ -8,6 +8,7 @@ import com.ljsd.jieling.logic.dao.root.User; import config.SMonthcardConfig; import config.SPrivilegeTypeConfig; import manager.STableManager; +import util.MathUtils; import util.TimeUtils; import java.util.*; @@ -85,7 +86,7 @@ public class PlayerManager extends MongoBase { private int signTotay;//今天是否签到 - private int rechargedaily; + private double rechargedaily; private long onlineTime; @@ -487,17 +488,17 @@ public class PlayerManager extends MongoBase { return signTotay; } - public int getRechargedaily() { + public double getRechargedaily() { return rechargedaily; } - public void setRechargedaily(int rechargedaily) { + public void setRechargedaily(double rechargedaily) { updateString("rechargedaily", rechargedaily); this.rechargedaily = rechargedaily; } - public void addRechargedaily(int rechargedaily) { - this.rechargedaily += rechargedaily; + public void addRechargedaily(double rechargedaily) { + this.rechargedaily = MathUtils.doubleAdd(rechargedaily,this.rechargedaily); updateString("rechargedaily", this.rechargedaily); } 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 2d838b62c..5f68540c2 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 @@ -9,10 +9,12 @@ import java.util.*; public class RechargeInfo extends MongoBase{ - private int saveAmt;//累计充值 + private double saveAmt;//累计充值 private int soulCrystalAmt;//累计充值购买魂晶 - private int monthSaveAmt ; //月卡累计总额 - private int smonthSaveAmt ; //豪华月卡累计总额 + + private double monthSaveAmt ; //月卡累计总额 + private double smonthSaveAmt ; //豪华月卡累计总额 + private int isFirst; private long createTime; private int isDayFirst; @@ -95,7 +97,7 @@ public class RechargeInfo extends MongoBase{ return false; } - public void setSaveAmt(int saveAmt){ + public void setSaveAmt(double saveAmt){ if(this.saveAmt == 0){ createTime = System.currentTimeMillis(); updateString("createTime",createTime); @@ -143,7 +145,7 @@ public class RechargeInfo extends MongoBase{ } - public int getSaveAmt() { + public double getSaveAmt() { return saveAmt; } @@ -180,14 +182,14 @@ public class RechargeInfo extends MongoBase{ this.goodseSendDailyMap.put(goodsType,sendTime); } - public int getSoulCrystalAmt() { - return soulCrystalAmt; - } - - public void addSoulCrystalAmt(int soulCrystalAmt) { - this.soulCrystalAmt += soulCrystalAmt; - updateString("soulCrystalAmt",soulCrystalAmt); - } +// public int getSoulCrystalAmt() { +// return soulCrystalAmt; +// } +// +// public void addSoulCrystalAmt(int soulCrystalAmt) { +// this.soulCrystalAmt += soulCrystalAmt; +// updateString("soulCrystalAmt",soulCrystalAmt); +// } public Map getTypeBagMap() { return typeBagMap; @@ -243,20 +245,20 @@ public class RechargeInfo extends MongoBase{ updateString("refreshBagMap", refreshBagMap); } - public int getMonthSaveAmt() { + public double getMonthSaveAmt() { return monthSaveAmt; } - public void setMonthSaveAmt(int monthSaveAmt) { + public void setMonthSaveAmt(double monthSaveAmt) { this.monthSaveAmt = monthSaveAmt; updateString("monthSaveAmt",monthSaveAmt); } - public int getSmonthSaveAmt() { + public double getSmonthSaveAmt() { return smonthSaveAmt; } - public void setSmonthSaveAmt(int smonthSaveAmt) { + public void setSmonthSaveAmt(double smonthSaveAmt) { this.smonthSaveAmt = smonthSaveAmt; updateString("smonthSaveAmt",smonthSaveAmt); } diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/fight/CombatLogic.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/fight/CombatLogic.java index d84a2615c..551997d64 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/fight/CombatLogic.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/fight/CombatLogic.java @@ -14,6 +14,7 @@ import com.ljsd.jieling.globals.BIReason; import com.ljsd.jieling.globals.Global; import com.ljsd.jieling.handler.map.MapManager; import com.ljsd.jieling.handler.map.behavior.BehaviorUtil; +import com.ljsd.jieling.jbean.ActivityMission; import com.ljsd.jieling.ktbeans.KTGameType; import com.ljsd.jieling.ktbeans.KtEventUtils; import com.ljsd.jieling.ktbeans.parmsBean.ParamEventBean; @@ -279,6 +280,8 @@ public class CombatLogic { ItemUtil.combineReward(user,true,targetMainLevelConfig.getRandomReward(), 1f,randomItemMap,randomCardMap,randomEquipMap,randomRandomMap,BIReason.ADVENTURE_RANDOM_REWARDD); } randomEquipMap = equipAutoCombine(randomEquipMap); + //清除无用活动道具 + removeNoUseItem(user,randomItemMap); ItemUtil.drop(user,baseBuilder,baseItemMap,baseCardMap,baseEquipMap,baseRandomMap,BIReason.ADVENTURE_BASE_REWARD); ItemUtil.drop(user,randomBuilder,randomItemMap,randomCardMap,randomEquipMap,randomRandomMap,BIReason.ADVENTURE_RANDOM_REWARDD); Map result = new HashMap<>(2); @@ -972,6 +975,7 @@ public class CombatLogic { rewardStr = ItemUtil.getReward(baseItemMap, baseCardMap, baseEquipMap, baseRandomMap); return this; } + removeNoUseItem(user,randomItemMap); if(sendMail){ if(!baseItemMap.isEmpty()){ int vipLevel = user.getPlayerInfoManager().getVipLevel(); @@ -997,6 +1001,34 @@ public class CombatLogic { } + private static void removeNoUseItem(User user,Map itemMap){ + Map config = STableManager.getConfig(SExchangeActivityConfig.class); + if(config.size()<1){ + return; + } + Set removeItem = new HashSet<>(); + Set remainItem = new HashSet<>(3); + for(Map.Entry entry:config.entrySet()){ + Map activityMissionMap = user.getActivityManager().getActivityMissionMap(); + int activityId = entry.getValue().getActivityId(); + if(!activityMissionMap.containsKey(activityId)){ + removeItem.add(entry.getValue().getActivityItem()); + continue; + } + if(activityMissionMap.get(activityId).getOpenType()!=1){ + removeItem.add(entry.getValue().getActivityItem()); + continue; + } + remainItem.add(entry.getValue().getActivityItem()); + } + for(int item :removeItem){ + if(remainItem.contains(item)){ + continue; + } + itemMap.remove(item); + } + } + /** * 将挂机和急速探索的装备合成起来 * @param equipMap diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/fight/FightEvent.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/fight/FightEvent.java index e3684405a..574cbf0ad 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/fight/FightEvent.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/fight/FightEvent.java @@ -1,5 +1,6 @@ package com.ljsd.jieling.logic.fight; +import java.util.List; import java.util.Map; public class FightEvent { @@ -10,6 +11,7 @@ public class FightEvent { private String frames; private GameFightType fightType; private Map attackBloodMap; + private List monsterRemainHp; public FightEvent(int attackUid, int teamId,int mostTime,String frams, GameFightType fightType) { this.attackUid = attackUid; @@ -50,4 +52,12 @@ public class FightEvent { public String getId() { return id; } + + public List getMonsterRemainHp() { + return monsterRemainHp; + } + + public void setMonsterRemainHp(List monsterRemainHp) { + this.monsterRemainHp = monsterRemainHp; + } } diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/fight/FightUtil.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/fight/FightUtil.java index c7f26821b..ff13a11f5 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/fight/FightUtil.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/fight/FightUtil.java @@ -58,6 +58,9 @@ public class FightUtil { public static Map> makeMonsterGroup(int bossGroupId,Map> hps){ + if(hps==null||hps.get(0)==null){ + return makeMonsterGroup(bossGroupId); + } return MonsterUtil.getMonsterByGroup(bossGroupId,hps); } @@ -70,8 +73,8 @@ public class FightUtil { } //防守方是怪物 - public static List makeMonsterFightData(int bossGroupId,int nums){ - Map> monsterByGroup = makeMonsterGroup(bossGroupId); + public static List makeMonsterFightData(int bossGroupId,int nums,Map> monsterHp){ + Map> monsterByGroup = makeMonsterGroup(bossGroupId,monsterHp); List monsterTeamList = new ArrayList<>(nums); for(int i=0;i monsterGroupList = BehaviorUtil.getFightTeamInfos(bossGroupId, monsterByGroup, i); @@ -90,7 +93,11 @@ public class FightUtil { User userInMem = UserManager.getUserInMem(pveFightEvent.getAttackUid()); CommonProto.FightTeamInfo fightTeamInfo = makePersonFightData(userInMem, pveFightEvent.getTeamId(),pveFightEvent.getAttackBloodMap()); int fightSeed =getFightSeed(); - List monsterfightTeamInfos = makeMonsterFightData(pveFightEvent.getMonsterGroupId(), pveFightEvent.getNums()); + //怪物剩余血量 + List monsterRemainHp = pveFightEvent.getMonsterRemainHp(); + Map> remainHp = new HashMap<>(); + remainHp.put(0,monsterRemainHp); + List monsterfightTeamInfos = makeMonsterFightData(pveFightEvent.getMonsterGroupId(), pveFightEvent.getNums(),remainHp); LuaValue getFightData = FightDataUtil.getFinalFightData(fightTeamInfo, monsterfightTeamInfos); LuaValue getOptionData = FightDataUtil.getOptionData(pveFightEvent.getAttackUid()+""); int[] fightResult = CheckFight.getInstance().checkFight(fightSeed, fightEvent.getMostTime(), getFightData, getOptionData, fightEvent.getFightType().getFightType()); 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 13aa5e49b..f614c5422 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 @@ -1802,10 +1802,11 @@ public class HeroLogic{ for(int[] item : otherAttriMap){ int propertyId = item[0]; int propertyValue = item[1]; - if(heroAttributeMap.containsKey(propertyId)){ - propertyValue += heroAttributeMap.get(propertyId); - } - heroAttributeMap.put(propertyId,propertyValue); +// if(heroAttributeMap.containsKey(propertyId)){ +// propertyValue += heroAttributeMap.get(propertyId); +// } +// heroAttributeMap.put(propertyId,propertyValue); + heroAttributeMap.put(propertyId,heroAttributeMap.getOrDefault(propertyId,0)+propertyValue); } } diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/player/PlayerLogic.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/player/PlayerLogic.java index 5794ba83d..88ac6a620 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/player/PlayerLogic.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/player/PlayerLogic.java @@ -938,7 +938,7 @@ public class PlayerLogic { STableManager.getConfig(SMonthcardConfig.class).forEach((integer, sMonthcardConfig) -> { int time = playerInfoManager.getMonthCard().getOrDefault(integer,0); int state = playerInfoManager.getMonthCardDailyTake().contains(integer)?1:0; - int saveAmt = integer==1?rechargeInfo.getMonthSaveAmt():rechargeInfo.getSmonthSaveAmt(); + double saveAmt = integer==1?rechargeInfo.getMonthSaveAmt():rechargeInfo.getSmonthSaveAmt(); cardInfos.add(CommonProto.MonthCardInfo.newBuilder().setId(integer).setEndingTime(time).setState(state).setTotleAmt(saveAmt).build()); }); return cardInfos; 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 a465f9a2a..89320f87f 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 @@ -39,9 +39,11 @@ import config.*; import manager.STableManager; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import util.MathUtils; import util.StringUtil; import util.TimeUtils; +import java.math.BigDecimal; import java.util.*; /** @@ -73,12 +75,12 @@ public class BuyGoodsLogic { } MessageUtil.sendMessage(session,1, MessageTypeProto.MessageType.TEST_BUY_GIGT_GOODS_RESPONSE_VALUE,null,true); Result result = sendGoods(uid, goodsId, "gm-test", "111111", System.currentTimeMillis(), -999); - User user = UserManager.getUser(uid); - int price =sRechargeCommodityConfig.getPrice(); - int isDiscount = sRechargeCommodityConfig.getIsDiscount(); - if(isDiscount!=0){ - price=(int)(sRechargeCommodityConfig.getPrice() * (10 + isDiscount)/10f); - } +// User user = UserManager.getUser(uid); +// int price =sRechargeCommodityConfig.getPrice(); +// int isDiscount = sRechargeCommodityConfig.getIsDiscount(); +// if(isDiscount!=0){ +// price=(int)(sRechargeCommodityConfig.getPrice() * (10 + isDiscount)/10f); +// } List itemList = new ArrayList<>(); for(int[] item:sRechargeCommodityConfig.getBaseReward()){ itemList.add(item[0]); @@ -108,7 +110,9 @@ public class BuyGoodsLogic { if(buyCount ==null){ buyCount = 0; } - int price =sRechargeCommodityConfig.getPrice(); + double priceTemp =sRechargeCommodityConfig.getPrice(); + SExchangeRate sExchangeRate = STableManager.getConfig(SExchangeRate.class).get(priceTemp); + double price = sExchangeRate.getPrice_2(); buyCount=buyCount+1; //time check @@ -171,11 +175,11 @@ public class BuyGoodsLogic { int monthline = STableManager.getConfig(SMonthcardConfig.class).get(Global.MONTHCARDID).getPrice(); int lmonthline = STableManager.getConfig(SMonthcardConfig.class).get(Global.LMONTHCARDID).getPrice(); boolean sendneed =false; - if(rechargeInfo.getMonthSaveAmt()=monthline){ + if(rechargeInfo.getMonthSaveAmt()=monthline){ sendneed=true; user.getPlayerInfoManager().getMonthCard().put(Global.MONTHCARDID, (int) (System.currentTimeMillis() / 1000)); } - if(rechargeInfo.getSmonthSaveAmt()=lmonthline){ + if(rechargeInfo.getSmonthSaveAmt()=lmonthline){ sendneed=true; user.getPlayerInfoManager().getMonthCard().put(Global.LMONTHCARDID, (int) (System.currentTimeMillis() / 1000)); Poster.getPoster().dispatchEvent(new NewWelfareEvent(user, NewWelfareTypeEnum.RECHARGE_BUY.getType(),Global.LMONTHCARDID)); @@ -247,30 +251,31 @@ public class BuyGoodsLogic { rewardStr = ItemUtil.getMailReward(baseReward); } if(sRechargeCommodityConfig.getAccumulativeRecharge() == 1){ - int saveAmt = rechargeInfo.getSaveAmt(); - if(!StringUtil.isEmpty(rewardStr)){ - int[][] costItemArr = StringUtil.parseFiledInt2(rewardStr); - for (int i = 0; i