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/kefu/Cmd_changename.java b/serverlogic/src/main/java/com/ljsd/jieling/kefu/Cmd_changename.java index 02d60de2b..ed1d423c3 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/kefu/Cmd_changename.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/kefu/Cmd_changename.java @@ -85,118 +85,7 @@ public class Cmd_changename extends GmRoleAbstract { } } if("recharge".equals(args[2])){ - Gson gson = new Gson(); - Map 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/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/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/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/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