定时系统邮件

back_recharge
zhangshanxue 2019-09-25 15:39:17 +08:00
parent d54dbb502f
commit e76e1f93c6
4 changed files with 152 additions and 22 deletions

View File

@ -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<Integer, STestWelfare> 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<Integer, STestWelfare> sTestWelfareMap;
@Override
public void init() throws Exception {
testWelfareMap= STableManager.getConfig(STestWelfare.class);
Map<Integer, STestWelfare> 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<Integer, STestWelfare> getsTestWelfareMap() {
return sTestWelfareMap;
}
public int getId() {
public static void setsTestWelfareMap(Map<Integer, STestWelfare> 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;
}
}

View File

@ -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());

View File

@ -88,6 +88,8 @@ public class PlayerManager extends MongoBase {
private PhoneBindInfo phoneBindInfo;
private Set<Integer> 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<Integer> getSysMailIds() {
return sysMailIds;
}
public void setSysMailIds(Set<Integer> sysMailIds) {
updateString("sysMailIds", sysMailIds);
this.sysMailIds = sysMailIds;
}
}

View File

@ -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<Integer, STestWelfare> sTestWelfareMap = STestWelfare.getsTestWelfareMap();
for (STestWelfare sTestWelfare : sTestWelfareMap.values()) {
Set<Integer> 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);
// }
}