自动开服配置

back_recharge
zhangshanxue 2019-11-04 18:25:48 +08:00
parent 80f71c5ca7
commit 205481e8ab
5 changed files with 71 additions and 1 deletions

View File

@ -1238,6 +1238,26 @@ public class TimeUtils {
return now();
}
public static long DifferMintFromLast(Object object){
try {
String time;
if(null!=object){
try {
time = String.valueOf(object);
}catch (Exception e1){
return 1;
}
}else {
return 1;
}
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
return (simpleDateFormat.parse(time).getTime()-now())/(60*1000);
} catch (ParseException e) {
LOGGER.error("", e);
}
return 1;
}
/**
*
* @param lastTime

View File

@ -86,7 +86,7 @@ public class GameApplication {
//http线程池初始化
// HttpPool.init();
//todo 设置开服时间
setRegisterTime();
setRegisterTime();// might loop
GuilidManager.init();
STableManager.initialize("config");
@ -142,6 +142,22 @@ public class GameApplication {
ServerConfig serverConfigTmp = MongoUtil.getInstence().getMyMongoTemplate().findById(1, ServerConfig.class);
if( null == serverConfigTmp ){
serverConfigTmp = new ServerConfig();
if (GameApplication.serverProperties.isAutoOpen()) {
int startbefore = 0; //开服白名单时间
long needtime = TimeUtils.DifferMintFromLast(RedisUtil.getInstence().getObject(GameApplication.serverId + RedisKey.Delimiter_colon + RedisKey.AUTOOPENTIME ,"",String.class,-1));
while (needtime - startbefore > 0) {
long sleepTime = needtime - startbefore;
try {
LOGGER.error("预计" + sleepTime + "分钟后开服");
Thread.sleep(1000 * 60);
} catch (Exception e) {
LOGGER.error("休眠异常", e.getMessage(), e);
}
needtime = TimeUtils.DifferMintFromLast(RedisUtil.getInstence().getObject(GameApplication.serverId + RedisKey.Delimiter_colon + RedisKey.AUTOOPENTIME ,"",String.class,-1));
}
}
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
long serverOenTime = TimeUtils.getAppointTime(0);
String format = simpleDateFormat.format(serverOenTime);

View File

@ -26,6 +26,8 @@ public class ServerProperties {
private int areaId;
private boolean autoOpen;
public int getId() {
return id;
}
@ -98,6 +100,14 @@ public class ServerProperties {
this.areaId = areaId;
}
public boolean isAutoOpen() {
return autoOpen;
}
public void setAutoOpen(boolean autoOpen) {
this.autoOpen = autoOpen;
}
@Override
public String toString() {
return "ServerProperties{" +

View File

@ -187,6 +187,7 @@ public class RedisKey {
public static final String LOGIC_SERVER_INFO = "LOGIC_SERVER_INFO";
public static final String BLOODY_SERVER_INFO = "BLOODY_SERVER_INFO";
public static final String SYSMSG = "SYSMSG";
public static final String AUTOOPENTIME = "AUTOOPENTIME";
public final static String CDKEY = "CDKEY";
public static Set<String> familyKey = new HashSet<>();

View File

@ -3,6 +3,7 @@ package com.ljsd.jieling.db.redis;
import com.google.gson.Gson;
import com.ljsd.GameApplication;
import com.ljsd.common.mogodb.util.GlobalData;
import org.springframework.data.redis.RedisConnectionFailureException;
import util.TimeUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@ -162,6 +163,28 @@ public class RedisUtil {
return gson.fromJson(source,clazz);
}
/**
* Object
*
* @param key
* @return
*/
public <T> T getObject(String type, String key, Class<T> clazz, int expireTime) {
try {
String valueStr = redisTemplate.opsForValue().get(type + RedisKey.Delimiter_colon + key);
if (valueStr == null) {
return null;
}
if (expireTime > 0) {
redisTemplate.expire(type + key, expireTime, TimeUnit.SECONDS);
}
return gson.fromJson(valueStr, clazz);
} catch (RedisConnectionFailureException e) {
LOGGER.error("------------------Redis 连接失败------------------msg={}", e);
}
return null;
}
/**
*
*