四灵试炼开启天数管理
parent
232fc4efeb
commit
f86f4e5676
|
@ -11,10 +11,7 @@ import java.sql.Timestamp;
|
|||
import java.text.DateFormat;
|
||||
import java.text.ParseException;
|
||||
import java.text.SimpleDateFormat;
|
||||
import java.util.Calendar;
|
||||
import java.util.Date;
|
||||
import java.util.Locale;
|
||||
import java.util.TimeZone;
|
||||
import java.util.*;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
import java.time.LocalDate;
|
||||
import java.time.format.DateTimeFormatter;
|
||||
|
@ -801,7 +798,6 @@ public class TimeUtils {
|
|||
* 是否为同一周
|
||||
*星期1是一周的开始
|
||||
* @param src
|
||||
* @param target
|
||||
* @return
|
||||
*/
|
||||
public static boolean isSameWeek7(long src) {
|
||||
|
@ -1224,6 +1220,63 @@ public class TimeUtils {
|
|||
return hour;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取某段时间内的周一(二等等)的日期
|
||||
* @param dataBegin 开始日期
|
||||
* @param dataEnd 结束日期
|
||||
* @param weekDays 获取周几,1-6代表周一到周六。0代表周日
|
||||
* @return 返回日期List
|
||||
*/
|
||||
public static int getDayOfWeekWithinDateInterval(String dataBegin, String dataEnd, int weekDays) {
|
||||
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
|
||||
List<String> dateResult = new ArrayList<>();
|
||||
Calendar cal = Calendar.getInstance();
|
||||
String[] dateInterval = {dataBegin, dataEnd};
|
||||
Date[] dates = new Date[dateInterval.length];
|
||||
for (int i = 0; i < dateInterval.length; i++) {
|
||||
String[] ymd = dateInterval[i].split("[^\\d]+");
|
||||
cal.set(Integer.parseInt(ymd[0]), Integer.parseInt(ymd[1]) - 1, Integer.parseInt(ymd[2]));
|
||||
dates[i] = cal.getTime();
|
||||
}
|
||||
for (Date date = dates[0]; date.compareTo(dates[1]) <= 0; ) {
|
||||
cal.setTime(date);
|
||||
if (cal.get(Calendar.DAY_OF_WEEK) - 1 == weekDays) {
|
||||
String format = sdf.format(date);
|
||||
dateResult.add(format);
|
||||
}
|
||||
cal.add(Calendar.DATE, 1);
|
||||
date = cal.getTime();
|
||||
}
|
||||
return dateResult.size();
|
||||
}
|
||||
|
||||
/**
|
||||
* date2比date1多的天数
|
||||
*
|
||||
* @param time1
|
||||
* @param time2
|
||||
* @param weekday
|
||||
* @return
|
||||
*/
|
||||
public static int differentDaysToWeekday(long time1, long time2, int weekday) {
|
||||
// 格式
|
||||
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
|
||||
Calendar c = Calendar.getInstance();
|
||||
// 第二天
|
||||
c.setTimeInMillis(time1);
|
||||
c.add(Calendar.DATE, 1);
|
||||
// 转换格式
|
||||
Date date1 = new Date(time1);
|
||||
Date date2 = new Date(time2);
|
||||
String format1 = sdf.format(date1);
|
||||
String format2 = sdf.format(date2);
|
||||
// 周几
|
||||
if (weekday == 7){
|
||||
weekday = 0;
|
||||
}
|
||||
return getDayOfWeekWithinDateInterval(format1,format2,weekday);
|
||||
}
|
||||
|
||||
/**
|
||||
* date2比date1多的天数
|
||||
*
|
||||
|
|
|
@ -453,10 +453,8 @@ public class GlobalDataManaager implements IManager {
|
|||
PlayerLogic.getInstance().sendTimingMail(user);
|
||||
user.getGuildMyInfo().setLastHurt(0);
|
||||
|
||||
// 距离上次登陆相隔几天
|
||||
int num = TimeUtils.differentDays(user.getPlayerInfoManager().getLoginTime(), TimeUtils.now());
|
||||
// 四灵试炼,计算每天次数
|
||||
FourChallengeLogic.getInstance().addFourChallengeNum(user,num);
|
||||
FourChallengeLogic.getInstance().addFourChallengeNum(user,user.getPlayerInfoManager().getLoginTime());
|
||||
// 助战清理
|
||||
HelpHeroLogic.getInstance().clearHelpInfo(user);
|
||||
// 七界推送
|
||||
|
|
|
@ -380,42 +380,63 @@ public class FourChallengeLogic {
|
|||
* @param user
|
||||
*/
|
||||
public void firstGetTimes(User user) throws Exception {
|
||||
if (ifOpenFourChallenge(user) && !user.getPlayerInfoManager().isOpenFourChallenge()){
|
||||
// 检测一次
|
||||
if (status == null){ check(); }
|
||||
// 获取每天增加的天数
|
||||
int campOpenDay = STableManager.getConfig(SCampTowerSetting.class).get(1).getTimesAddPerDay();
|
||||
for (int i = 0; i < status.length; i++) {
|
||||
// 类型未开启
|
||||
if (status[i] == 0){ continue; }
|
||||
user.getPlayerInfoManager().addFourChallengeRemainTimes(i, campOpenDay);
|
||||
}
|
||||
LOGGER.info("四灵试炼层数刷新,首次开启,玩家:{},层数:{}", user.getId(), Arrays.toString(user.getPlayerInfoManager().getFourChallengeRemainTimes()));
|
||||
user.getPlayerInfoManager().setOpenFourChallenge(true);
|
||||
// 推送四灵试炼信息
|
||||
ISession session = OnlineUserManager.getSessionByUid(user.getId());
|
||||
if (session != null){
|
||||
fourChallengeGetInfo(session,false);
|
||||
}
|
||||
// 功能开启了,并且是首次登陆
|
||||
if (!ifOpenFourChallenge(user) || user.getPlayerInfoManager().isOpenFourChallenge()){
|
||||
return;
|
||||
}
|
||||
// 检测一次
|
||||
if (status == null){
|
||||
check();
|
||||
}
|
||||
// 获取每天增加的天数
|
||||
int campOpenDay = STableManager.getConfig(SCampTowerSetting.class).get(1).getTimesAddPerDay();
|
||||
for (int i = 0; i < status.length; i++) {
|
||||
// 类型未开启
|
||||
if (status[i] == 0){ continue; }
|
||||
user.getPlayerInfoManager().addFourChallengeRemainTimes(i, campOpenDay);
|
||||
}
|
||||
LOGGER.info("四灵试炼层数刷新,首次开启,玩家:{},层数:{}", user.getId(), Arrays.toString(user.getPlayerInfoManager().getFourChallengeRemainTimes()));
|
||||
user.getPlayerInfoManager().setOpenFourChallenge(true);
|
||||
// 推送四灵试炼信息
|
||||
ISession session = OnlineUserManager.getSessionByUid(user.getId());
|
||||
if (session != null){
|
||||
fourChallengeGetInfo(session,false);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 增加玩家登陆次数
|
||||
* @param user
|
||||
* @param num
|
||||
* @param time
|
||||
*/
|
||||
public void addFourChallengeNum(User user,int num) throws Exception {
|
||||
public void addFourChallengeNum(User user,long time) throws Exception {
|
||||
// 四灵试炼活动未开启
|
||||
if (!ifOpenFourChallenge(user)){ return; }
|
||||
boolean b = ifOpenFourChallenge(user);
|
||||
if (!b){
|
||||
return;
|
||||
}
|
||||
// 检测一次
|
||||
if (status == null){ check(); }
|
||||
if (status == null){
|
||||
check();
|
||||
}
|
||||
// 获取每天增加的天数
|
||||
int campOpenDay = STableManager.getConfig(SCampTowerSetting.class).get(1).getTimesAddPerDay();
|
||||
SCampTowerSetting towerSetting = STableManager.getConfig(SCampTowerSetting.class).get(1);
|
||||
int campOpenDay = towerSetting.getTimesAddPerDay();
|
||||
|
||||
for (int i = 0; i < status.length; i++) {
|
||||
// 类型未开启
|
||||
if (status[i] == 0){ continue; }
|
||||
user.getPlayerInfoManager().addFourChallengeRemainTimes(i, campOpenDay*num);
|
||||
if (status[i] == 0){
|
||||
continue;
|
||||
}
|
||||
// 记录天数
|
||||
int count = 0;
|
||||
// 开启的星期数,第一位是开启阵营,要调过,从1开始
|
||||
int[] openDay = towerSetting.getCampOpenDay()[i];
|
||||
for (int i1 = 1; i1 < openDay.length; i1++) {
|
||||
// 中间经过了几次开启时间
|
||||
count += TimeUtils.differentDaysToWeekday(time,TimeUtils.now(),openDay[i]);
|
||||
}
|
||||
user.getPlayerInfoManager().addFourChallengeRemainTimes(i, campOpenDay*count);
|
||||
}
|
||||
LOGGER.info("四灵试炼层数刷新,每日登录,玩家:{},层数:{}", user.getId(), Arrays.toString(user.getPlayerInfoManager().getFourChallengeRemainTimes()));
|
||||
user.getPlayerInfoManager().setOpenFourChallenge(true);
|
||||
|
|
Loading…
Reference in New Issue