diff --git a/serverlogic/src/main/java/com/ljsd/jieling/config/STestWelfare.java b/serverlogic/src/main/java/com/ljsd/jieling/config/STestWelfare.java index 9f6f2b995..b3350cb87 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/config/STestWelfare.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/config/STestWelfare.java @@ -1,35 +1,122 @@ package com.ljsd.jieling.config; +import com.ljsd.GameApplication; import com.ljsd.jieling.logic.STableManager; import com.ljsd.jieling.logic.Table; +import com.ljsd.jieling.logic.activity.ActivityType; +import com.ljsd.jieling.util.TimeUtils; import java.util.Map; -@Table(name ="TestWelfare") +@Table(name = "TestWelfare") public class STestWelfare implements BaseConfig { - private int id; + private int id; - private int[] reward; + private String startTime; - public static Map testWelfareMap; + private String endTime; + private int time; + private String title; - - @Override + private String value; + + private long startTimeLong; + + private long endTimeLong; + + private int[] reward; + + public static Map sTestWelfareMap; + + @Override public void init() throws Exception { - testWelfareMap= STableManager.getConfig(STestWelfare.class); + + Map cfg = STableManager.getConfig(STestWelfare.class); + + for(STestWelfare sTestWelfare : cfg.values()){ + int time = sTestWelfare.getTime(); + String startTime = sTestWelfare.getStartTime(); + String endtime = sTestWelfare.getEndTime(); + if(time == 1 ){ + if(!"0".equals(startTime)){ + sTestWelfare.setStartTimeLong(TimeUtils.parseTimeToMiles(startTime,TimeUtils.Stand_CeHua_Data_format)); + } + if(!"0".equals(endtime)){ + sTestWelfare.setEndTimeLong(TimeUtils.parseTimeToMiles(endtime,TimeUtils.Stand_CeHua_Data_format)); + } + continue; + } + sTestWelfare.setStartTimeLong(Long.parseLong(startTime)); + sTestWelfare.setEndTimeLong(Long.parseLong(endtime)); + } + sTestWelfareMap = cfg; } + public static Map getsTestWelfareMap() { + return sTestWelfareMap; + } - public int getId() { + public static void setsTestWelfareMap(Map sTestWelfareMap) { + STestWelfare.sTestWelfareMap = sTestWelfareMap; + } + + public int getId() { return id; } - public int[] getReward() { + public String getStartTime() { + return startTime; + } + + public String getEndTime() { + return endTime; + } + + public int getTime() { + return time; + } + + public String gettitle() { + return title; + } + + public String getvalue() { + return value; + } + + public int[] getReward() { return reward; } + public void setStartTimeLong(long startTimeLong) { + this.startTimeLong = startTimeLong; + } + public void setEndTimeLong(long endTimeLong) { + this.endTimeLong = endTimeLong; + } + + /** + * + * @param type 获取1 开始时间2 结束时间 + */ + public long getTimeLong(long createUserTime,int type) { + long baseTime = startTimeLong; + if(type == 2){ + baseTime = endTimeLong; + } + long startTime=0; + if(time ==1){ + startTime = baseTime; + }else if(time == 3){ + long serverOpenTime = GameApplication.serverConfig.getCacheOpenTime(); + startTime = serverOpenTime + baseTime*1000; + }else if(time == 2){ + startTime = TimeUtils.getAppointTimeInXDay(createUserTime,0) + baseTime*1000; + } + return startTime; + } } \ No newline at end of file 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 781eadc9e..df92c07fe 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/GlobalDataManaager.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/GlobalDataManaager.java @@ -285,11 +285,13 @@ public class GlobalDataManaager { user.getUserMissionManager().onGameEvent(user, GameEvent.DAILY_REFRESH,0); user.getUserMissionManager().onGameEvent(user, GameEvent.BLOODY_REFRESH,0); FriendLogic.getInstance().refreshState(session); - int sendDays = user.getPlayerInfoManager().getSendDays(); - int differentDays = TimeUtils.differentDaysByHour( user.getPlayerInfoManager().getLoginTime(),System.currentTimeMillis(), 5); - int days = sendDays + differentDays; - PlayerLogic.getInstance().sendTestWelfareMail(user,sendDays+1,sendDays+differentDays); - user.getPlayerInfoManager().setSendDays(days); + + PlayerLogic.getInstance().sendTimingMail(user); +// int sendDays = user.getPlayerInfoManager().getSendDays(); +// int differentDays = TimeUtils.differentDaysByHour( user.getPlayerInfoManager().getLoginTime(),System.currentTimeMillis(), 5); +// int days = sendDays + differentDays; +// PlayerLogic.getInstance().sendTestWelfareMail(user,sendDays+1,sendDays+differentDays); +// user.getPlayerInfoManager().setSendDays(days); // MapLogic.getInstance().towerAutoReset(session,fBuilder); if(fBuilder!=null){ fBuilder.setSignInInfo(CommonProto.SignInInfo.newBuilder().setDays(user.getPlayerInfoManager().getSign()+1).setState(user.getPlayerInfoManager().getSignTotay()).build()); 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 15e1c2877..535f639a9 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 @@ -88,6 +88,8 @@ public class PlayerManager extends MongoBase { private PhoneBindInfo phoneBindInfo; + private Set sysMailIds = new CopyOnWriteArraySet<>(); + public PlayerManager(){ this.setRootCollection(User._COLLECTION_NAME); } @@ -501,4 +503,16 @@ public class PlayerManager extends MongoBase { public int getPid() { return pid; } + + + public Set getSysMailIds() { + return sysMailIds; + } + + public void setSysMailIds(Set sysMailIds) { + updateString("sysMailIds", sysMailIds); + this.sysMailIds = sysMailIds; + } + + } 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 531404c40..ca177297e 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 @@ -498,17 +498,44 @@ public class PlayerLogic { } - public void sendTestWelfareMail(User user,int sendDay,int duration) throws Exception { - String title = SErrorCodeEerverConfig.getI18NMessage("welfare_activity_daily_title"); - for(;sendDay<=duration;sendDay++){ - STestWelfare sTestWelfare = STestWelfare.testWelfareMap.get(sendDay); - if(sTestWelfare == null){ - return; + public void sendTimingMail(User user) throws Exception { + + long now = System.currentTimeMillis(); + Map sTestWelfareMap = STestWelfare.getsTestWelfareMap(); + + for (STestWelfare sTestWelfare : sTestWelfareMap.values()) { + Set timingMailIds = user.getPlayerInfoManager().getSysMailIds(); + if (timingMailIds.contains(sTestWelfare.getId())) + continue; + long startTime = sTestWelfare.getTimeLong(0, 1); + long endTime = sTestWelfare.getTimeLong(0, 2); + if (now < startTime) { + continue; } - String content = SErrorCodeEerverConfig.getI18NMessage("welfare_activity_daily_txt",new String[]{Integer.toString(sendDay)}); + if (endTime != 0 && now > endTime) { + continue; + } + String title = sTestWelfare.gettitle(); + String content = sTestWelfare.getvalue(); String mailReward = ItemUtil.getMailReward(user, sTestWelfare.getReward(), 1.0f); - MailLogic.getInstance().sendMail(user.getId(),title,content,mailReward,(int)(System.currentTimeMillis()/1000),Global.MAIL_EFFECTIVE_TIME); + MailLogic.getInstance().sendMail(user.getId(), title, content, mailReward, (int) (System.currentTimeMillis() / 1000), Global.MAIL_EFFECTIVE_TIME); + + timingMailIds.add(sTestWelfare.getId()); + user.getPlayerInfoManager().setSysMailIds(timingMailIds); } + } + + public void sendTestWelfareMail(User user,int sendDay,int duration) throws Exception { +// String title = SErrorCodeEerverConfig.getI18NMessage("welfare_activity_daily_title"); +// for(;sendDay<=duration;sendDay++){ +// STestWelfare sTestWelfare = STestWelfare.testWelfareMap.get(sendDay); +// if(sTestWelfare == null){ +// return; +// } +// String content = SErrorCodeEerverConfig.getI18NMessage("welfare_activity_daily_txt",new String[]{Integer.toString(sendDay)}); +// String mailReward = ItemUtil.getMailReward(user, sTestWelfare.getReward(), 1.0f); +// MailLogic.getInstance().sendMail(user.getId(),title,content,mailReward,(int)(System.currentTimeMillis()/1000),Global.MAIL_EFFECTIVE_TIME); +// } }