From e90e4145224a601d024bbd7d7928ba46528c4cf7 Mon Sep 17 00:00:00 2001 From: wangyuan Date: Mon, 22 Jul 2019 13:45:47 +0800 Subject: [PATCH] buy goods --- .../jieling/handler/GetPlayerInfoHandler.java | 2 ++ .../jieling/handler/ServerZeroHandler.java | 5 +++- .../ljsd/jieling/logic/dao/RechargeInfo.java | 11 ++++++++ .../jieling/logic/player/PlayerLogic.java | 28 +++++++++++++++---- .../jieling/logic/store/BuyGoodsLogic.java | 10 +++++-- 5 files changed, 47 insertions(+), 9 deletions(-) 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 1088da5cf..93159b8cc 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/handler/GetPlayerInfoHandler.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/handler/GetPlayerInfoHandler.java @@ -9,6 +9,7 @@ import com.ljsd.jieling.logic.GlobalDataManaager; import com.ljsd.jieling.logic.activity.ActivityLogic; import com.ljsd.jieling.logic.dao.*; import com.ljsd.jieling.logic.dao.root.User; +import com.ljsd.jieling.logic.player.PlayerLogic; import com.ljsd.jieling.logic.store.BuyGoodsLogic; import com.ljsd.jieling.netty.cocdex.PacketNetData; import com.ljsd.jieling.network.session.ISession; @@ -52,6 +53,7 @@ public class GetPlayerInfoHandler extends BaseHandler{ userId, token,msgId,msgIndex,getPlayerInfoRequest.getNum(),getPlayerInfoRequest.getStr()); User user = UserManager.getUser(userId); + PlayerLogic.getInstance().sendDayilyMail(user,-1); PlayerManager playerInfoManager = user.getPlayerInfoManager(); GlobalDataManaager.checkNeedReFlush(iSession,user,null); playerInfoManager.setLoginTime(TimeUtils.now()); diff --git a/serverlogic/src/main/java/com/ljsd/jieling/handler/ServerZeroHandler.java b/serverlogic/src/main/java/com/ljsd/jieling/handler/ServerZeroHandler.java index 697e3c7d7..ed4167959 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/handler/ServerZeroHandler.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/handler/ServerZeroHandler.java @@ -1,7 +1,10 @@ package com.ljsd.jieling.handler; +import com.ljsd.jieling.logic.dao.UserManager; +import com.ljsd.jieling.logic.player.PlayerLogic; import com.ljsd.jieling.netty.cocdex.PacketNetData; import com.ljsd.jieling.network.session.ISession; +import com.ljsd.jieling.protocols.CommonProto; import com.ljsd.jieling.protocols.MessageTypeProto; import org.springframework.stereotype.Component; @@ -14,6 +17,6 @@ public class ServerZeroHandler extends BaseHandler { @Override public void process(ISession iSession, PacketNetData netData) throws Exception { - + PlayerLogic.getInstance().sendDayilyMail(UserManager.getUser(iSession.getUid()),-1); } } 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 c1779f4d9..4e7395ddb 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 @@ -19,6 +19,8 @@ public class RechargeInfo extends MongoBase{ private Map goodseDurationMap = new HashMap<>(); + private Map goodseSendDailyMap = new HashMap<>(); + public RechargeInfo(){ } @@ -130,4 +132,13 @@ public class RechargeInfo extends MongoBase{ public Map getGoodsDurationMap() { return goodseDurationMap; } + + public Map getGoodseSendDailyMap() { + return goodseSendDailyMap; + } + + public void updateGoodsSendTime(int goodsType,int sendTime) { + updateString("goodseSendDailyMap." + goodsType,sendTime); + this.goodseSendDailyMap.put(goodsType,sendTime); + } } 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 d03cd0a62..b638814cd 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 @@ -277,19 +277,34 @@ public class PlayerLogic { MessageUtil.sendMessage(session,1,messageType.getNumber(),null,true); } - public void sendDayilyMail(User user) throws Exception { + public void sendDayilyMail(User user,int goodsType) throws Exception { int nowTime = (int)(System.currentTimeMillis()/1000); int level = user.getPlayerInfoManager().getLevel(); Map goodsTypeDurationMap = user.getPlayerInfoManager().getRechargeInfo().getGoodsDurationMap(); + Map goodseSendDailyMap = user.getPlayerInfoManager().getRechargeInfo().getGoodseSendDailyMap(); for(Map.Entry goodsInfo:goodsTypeDurationMap.entrySet()){ SRechargeCommodityConfig sRechargeCommodityConfig = SRechargeCommodityConfig.rechargeCommodityConfigMap.get(goodsInfo.getKey()); int type = sRechargeCommodityConfig.getType(); + if(goodsType!=-1 && type!=goodsType){ + continue; + } + int days =1; + if(goodsType == -1){ + Integer lastSendTime = goodseSendDailyMap.get(type); + if(lastSendTime!=null){ + days = TimeUtils.differentDays(lastSendTime * 1000L,nowTime * 1000L); + } + } + user.getPlayerInfoManager().getRechargeInfo().updateGoodsSendTime(type,nowTime); int theIndexByTarget = MathUtils.getTheIndexByTarget(sRechargeCommodityConfig.getPlayerLevel(), level); int[][] extraReward = sRechargeCommodityConfig.getExtraReward()[theIndexByTarget]; String mailReward = ItemUtil.getMailReward(extraReward); - String title = SErrorCodeEerverConfig.getI18NMessage("recharge_"+type+"_equip_title"); - String content = SErrorCodeEerverConfig.getI18NMessage("recharge_"+type+"_equip_txt"); - MailLogic.getInstance().sendMail(user.getId(),title,content,mailReward,nowTime, Global.MAIL_EFFECTIVE_TIME); + String title = SErrorCodeEerverConfig.getI18NMessage("recharge_"+type+"_daily_title"); + String content = SErrorCodeEerverConfig.getI18NMessage("recharge_"+type+"_daily_txt"); + int sendTims = days; + while (sendTims-->0){ + MailLogic.getInstance().sendMail(user.getId(),title,content,mailReward,nowTime, Global.MAIL_EFFECTIVE_TIME); + } if(sRechargeCommodityConfig.getType() == GiftGoodsType.LUXURYMONTHCARD){ Map configMap = SLuxuriousCardEquipConfig.configMap; for(SLuxuriousCardEquipConfig sLuxuriousCardEquipConfig : configMap.values()){ @@ -299,7 +314,10 @@ public class PlayerLogic { mailReward = ItemUtil.getMailReward(reward, 1.0f); title = SErrorCodeEerverConfig.getI18NMessage("recharge_6_equip_title"); content = SErrorCodeEerverConfig.getI18NMessage("recharge_6_equip_txt"); - MailLogic.getInstance().sendMail(user.getId(),title,content,mailReward,nowTime, Global.MAIL_EFFECTIVE_TIME); + sendTims = days; + while (sendTims-->0){ + MailLogic.getInstance().sendMail(user.getId(),title,content,mailReward,nowTime, Global.MAIL_EFFECTIVE_TIME); + } break; } } 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 dd185bebe..5026546df 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 @@ -99,6 +99,7 @@ public class BuyGoodsLogic { if(type == GiftGoodsType.MONTHCARD || type == GiftGoodsType.LUXURYMONTHCARD ){ Integer endTime = null; Map goodsDurationMap = rechargeInfo.getGoodsDurationMap(); + boolean needSendMail = false; for(Map.Entry goodsDurationItem : goodsDurationMap.entrySet()){ if(SRechargeCommodityConfig.rechargeCommodityConfigMap.get(goodsDurationItem.getKey()).getType() == type){ endTime = goodsDurationItem.getValue(); @@ -106,7 +107,7 @@ public class BuyGoodsLogic { } if(endTime == null || nowTime>endTime){ endTime = nowTime; - triggerEvent(user,type,nowTime); + needSendMail = true; } if(nowTime