注释老合服逻辑,已经不用了
parent
a346c89c99
commit
e279c64bdd
|
@ -8,14 +8,11 @@ import com.ljsd.jieling.db.mongo.core.ServerAreaInfoManager;
|
|||
import com.ljsd.jieling.db.redis.RedisKey;
|
||||
import com.ljsd.jieling.db.redis.RedisUtil;
|
||||
import com.ljsd.jieling.logic.dao.GuilidManager;
|
||||
import com.ljsd.jieling.logic.family.DeathPathLogic;
|
||||
import io.netty.util.internal.ConcurrentSet;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import util.TimeUtils;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
import java.util.concurrent.atomic.AtomicBoolean;
|
||||
|
||||
|
@ -87,140 +84,139 @@ public class AreaManager {
|
|||
* @return
|
||||
*/
|
||||
public boolean processAddServerAreaIsChange() {
|
||||
try {
|
||||
if(!isInit.get()){
|
||||
return false;
|
||||
}
|
||||
ServerAreaInfoManager serverArenaInfoManager = CoreLogic.getInstance().findServerArenaInfoManager();
|
||||
if (serverArenaInfoManager == null) {
|
||||
return false;
|
||||
}
|
||||
if (serverArenaInfoManagerCache != null && serverArenaInfoManager.getVersion() == serverArenaInfoManagerCache.getVersion()) {
|
||||
return false;
|
||||
}
|
||||
Map<Integer, ServerAreaInfo> serverAreaInfoMapFromDBCache = new HashMap<>();
|
||||
if (serverArenaInfoManagerCache != null) {
|
||||
serverAreaInfoMapFromDBCache = serverArenaInfoManagerCache.getServerAreaInfoMap();
|
||||
}
|
||||
ServerAreaInfo mineServerAreaInfo = null;
|
||||
Map<Integer, ServerAreaInfo> serverAreaInfoMapFromDB = serverArenaInfoManager.getServerAreaInfoMap();
|
||||
for (ServerAreaInfo serverAreaInfoDb : serverAreaInfoMapFromDB.values()) {
|
||||
int version = serverAreaInfoDb.getVersion();
|
||||
ServerAreaInfo serverAreaInfoCache = serverAreaInfoMapFromDBCache.get(serverAreaInfoDb.getAreaId());
|
||||
if (serverAreaInfoCache != null && serverAreaInfoCache.getVersion() == version) {
|
||||
continue;
|
||||
}
|
||||
Map<Integer, Integer> addServerOrAreaIds = serverAreaInfoDb.getAddServerOrAreaIds();
|
||||
//大区吞并 本大区
|
||||
if (serverAreaInfoCache != null) {
|
||||
Set<Map.Entry<Integer, Integer>> entries = addServerOrAreaIds.entrySet();
|
||||
for (Map.Entry<Integer, Integer> addServerOrAreaItem : entries) {
|
||||
Integer serverOrArea = addServerOrAreaItem.getKey();
|
||||
Integer type = addServerOrAreaItem.getValue();
|
||||
//大区进行融合 原大区
|
||||
if (type == 2) {
|
||||
ServerAreaInfo serverAreaInfo = serverAreaInfoMapFromDB.get(serverOrArea);
|
||||
if (serverAreaInfoCache.getVersion() >= serverAreaInfo.getVersion()) {
|
||||
continue;
|
||||
}
|
||||
if (serverAreaInfo.getMasterServerId() == GameApplication.serverId) {
|
||||
mineServerAreaInfo = serverAreaInfoDb;//xin
|
||||
}
|
||||
}
|
||||
}
|
||||
} else {
|
||||
//大区新建
|
||||
int masterServerId = serverAreaInfoDb.getMasterServerId();
|
||||
if (addServerOrAreaIds.containsKey(GameApplication.serverId)) {
|
||||
mineServerAreaInfo = serverAreaInfoDb;//从服
|
||||
}
|
||||
}
|
||||
}
|
||||
// serverArenaInfoManagerCache = serverArenaInfoManager;
|
||||
if (mineServerAreaInfo == null) {
|
||||
serverArenaInfoManagerCache = serverArenaInfoManager;
|
||||
return false;
|
||||
}
|
||||
newAreaId = mineServerAreaInfo.getAreaId();
|
||||
long execDate = TimeUtils.stringToTimeLong2(mineServerAreaInfo.getExecDate());
|
||||
|
||||
|
||||
if (System.currentTimeMillis() > execDate) {
|
||||
serverArenaInfoManagerCache = serverArenaInfoManager;
|
||||
// int tmpAreaId = areaId;
|
||||
boolean isSuccess = RedisUtil.getInstence().tryGetDistributedLock(RedisKey.ServerArenaJob, "", Integer.toString(newAreaId), 15000);
|
||||
int i=0;
|
||||
while (i<1000&&!isSuccess){
|
||||
i++;
|
||||
isSuccess= RedisUtil.getInstence().tryGetDistributedLock(RedisKey.ServerArenaJob, "", Integer.toString(newAreaId), 15000);
|
||||
}
|
||||
if (isSuccess) {
|
||||
LOGGER.info(" serverArenaInfoManager get redis lock,the serverid={},the oldArea={},the newArea={},getlockTime{}", GameApplication.serverId, areaId, newAreaId,i);
|
||||
try {
|
||||
new Thread("sever_area_change") {
|
||||
@Override
|
||||
public void run() {
|
||||
try {
|
||||
task();
|
||||
serverStateReset();
|
||||
}catch (Exception e) {
|
||||
LOGGER.error(" serverArenaInfoManager get exception", e);
|
||||
}finally {
|
||||
RedisUtil.getInstence().releaseDistributedLock(RedisKey.ServerArenaJob,"", Integer.toString(newAreaId));
|
||||
}
|
||||
|
||||
}
|
||||
}.start();
|
||||
} catch (Exception e) {
|
||||
LOGGER.error(" serverArenaInfoManager get exception", e);
|
||||
} finally {
|
||||
|
||||
}
|
||||
}
|
||||
LOGGER.info(" serverArenaInfoManager not get redis lock,the serverid={},the oldArea={},the newArea={}", GameApplication.serverId, areaId, newAreaId);
|
||||
|
||||
return true;
|
||||
|
||||
}
|
||||
|
||||
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
// try {
|
||||
// if(!isInit.get()){
|
||||
// return false;
|
||||
// }
|
||||
// ServerAreaInfoManager serverArenaInfoManager = CoreLogic.getInstance().findServerArenaInfoManager();
|
||||
// if (serverArenaInfoManager == null) {
|
||||
// return false;
|
||||
// }
|
||||
// if (serverArenaInfoManagerCache != null && serverArenaInfoManager.getVersion() == serverArenaInfoManagerCache.getVersion()) {
|
||||
// return false;
|
||||
// }
|
||||
// Map<Integer, ServerAreaInfo> serverAreaInfoMapFromDBCache = new HashMap<>();
|
||||
// if (serverArenaInfoManagerCache != null) {
|
||||
// serverAreaInfoMapFromDBCache = serverArenaInfoManagerCache.getServerAreaInfoMap();
|
||||
// }
|
||||
// ServerAreaInfo mineServerAreaInfo = null;
|
||||
// Map<Integer, ServerAreaInfo> serverAreaInfoMapFromDB = serverArenaInfoManager.getServerAreaInfoMap();
|
||||
// for (ServerAreaInfo serverAreaInfoDb : serverAreaInfoMapFromDB.values()) {
|
||||
// int version = serverAreaInfoDb.getVersion();
|
||||
// ServerAreaInfo serverAreaInfoCache = serverAreaInfoMapFromDBCache.get(serverAreaInfoDb.getAreaId());
|
||||
// if (serverAreaInfoCache != null && serverAreaInfoCache.getVersion() == version) {
|
||||
// continue;
|
||||
// }
|
||||
// Map<Integer, Integer> addServerOrAreaIds = serverAreaInfoDb.getAddServerOrAreaIds();
|
||||
// //大区吞并 本大区
|
||||
// if (serverAreaInfoCache != null) {
|
||||
// Set<Map.Entry<Integer, Integer>> entries = addServerOrAreaIds.entrySet();
|
||||
// for (Map.Entry<Integer, Integer> addServerOrAreaItem : entries) {
|
||||
// Integer serverOrArea = addServerOrAreaItem.getKey();
|
||||
// Integer type = addServerOrAreaItem.getValue();
|
||||
// //大区进行融合 原大区
|
||||
// if (type == 2) {
|
||||
// ServerAreaInfo serverAreaInfo = serverAreaInfoMapFromDB.get(serverOrArea);
|
||||
// if (serverAreaInfoCache.getVersion() >= serverAreaInfo.getVersion()) {
|
||||
// continue;
|
||||
// }
|
||||
// if (serverAreaInfo.getMasterServerId() == GameApplication.serverId) {
|
||||
// mineServerAreaInfo = serverAreaInfoDb;//xin
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
// } else {
|
||||
// //大区新建
|
||||
// int masterServerId = serverAreaInfoDb.getMasterServerId();
|
||||
// if (addServerOrAreaIds.containsKey(GameApplication.serverId)) {
|
||||
// mineServerAreaInfo = serverAreaInfoDb;//从服
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
// // serverArenaInfoManagerCache = serverArenaInfoManager;
|
||||
// if (mineServerAreaInfo == null) {
|
||||
// serverArenaInfoManagerCache = serverArenaInfoManager;
|
||||
// return false;
|
||||
// }
|
||||
// newAreaId = mineServerAreaInfo.getAreaId();
|
||||
// long execDate = TimeUtils.stringToTimeLong2(mineServerAreaInfo.getExecDate());
|
||||
//
|
||||
//
|
||||
// if (System.currentTimeMillis() > execDate) {
|
||||
// serverArenaInfoManagerCache = serverArenaInfoManager;
|
||||
//// int tmpAreaId = areaId;
|
||||
// boolean isSuccess = RedisUtil.getInstence().tryGetDistributedLock(RedisKey.ServerArenaJob, "", Integer.toString(newAreaId), 15000);
|
||||
// int i=0;
|
||||
// while (i<1000&&!isSuccess){
|
||||
// i++;
|
||||
// isSuccess= RedisUtil.getInstence().tryGetDistributedLock(RedisKey.ServerArenaJob, "", Integer.toString(newAreaId), 15000);
|
||||
// }
|
||||
// if (isSuccess) {
|
||||
// LOGGER.info(" serverArenaInfoManager get redis lock,the serverid={},the oldArea={},the newArea={},getlockTime{}", GameApplication.serverId, areaId, newAreaId,i);
|
||||
// try {
|
||||
// new Thread("sever_area_change") {
|
||||
// @Override
|
||||
// public void run() {
|
||||
// try {
|
||||
// task();
|
||||
// serverStateReset();
|
||||
// }catch (Exception e) {
|
||||
// LOGGER.error(" serverArenaInfoManager get exception", e);
|
||||
// }finally {
|
||||
// RedisUtil.getInstence().releaseDistributedLock(RedisKey.ServerArenaJob,"", Integer.toString(newAreaId));
|
||||
// }
|
||||
//
|
||||
// }
|
||||
// }.start();
|
||||
// } catch (Exception e) {
|
||||
// LOGGER.error(" serverArenaInfoManager get exception", e);
|
||||
// } finally {
|
||||
//
|
||||
// }
|
||||
// }
|
||||
// LOGGER.info(" serverArenaInfoManager not get redis lock,the serverid={},the oldArea={},the newArea={}", GameApplication.serverId, areaId, newAreaId);
|
||||
//
|
||||
// return true;
|
||||
//
|
||||
// }
|
||||
//
|
||||
//
|
||||
// } catch (Exception e) {
|
||||
// e.printStackTrace();
|
||||
// }
|
||||
return false;
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* 延迟任务执行
|
||||
* 合并所有榜单
|
||||
*/
|
||||
public void task() throws Exception {
|
||||
|
||||
LOGGER.info("the server={} exec task server work,start", GameApplication.serverId);
|
||||
|
||||
try {
|
||||
//结算十绝阵
|
||||
DeathPathLogic.getInstance().deleteDeathPathInfo();
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
|
||||
//合并排行榜
|
||||
processAllRank();
|
||||
|
||||
//合并玩家名称、
|
||||
processChangeName();
|
||||
|
||||
//合并公会名称、
|
||||
processChangeGuildName();
|
||||
|
||||
|
||||
//更新入库
|
||||
MongoUtil.getInstence().lastUpdate();
|
||||
|
||||
LOGGER.info("the server={} exec task server work,done", GameApplication.serverId);
|
||||
}
|
||||
// public void task() throws Exception {
|
||||
//
|
||||
// LOGGER.info("the server={} exec task server work,start", GameApplication.serverId);
|
||||
//
|
||||
// try {
|
||||
// //结算十绝阵
|
||||
// DeathPathLogic.getInstance().deleteDeathPathInfo();
|
||||
// } catch (Exception e) {
|
||||
// e.printStackTrace();
|
||||
// }
|
||||
//
|
||||
// //合并排行榜
|
||||
// processAllRank();
|
||||
//
|
||||
// //合并玩家名称、
|
||||
// processChangeName();
|
||||
//
|
||||
// //合并公会名称、
|
||||
// processChangeGuildName();
|
||||
//
|
||||
//
|
||||
// //更新入库
|
||||
// MongoUtil.getInstence().lastUpdate();
|
||||
//
|
||||
// LOGGER.info("the server={} exec task server work,done", GameApplication.serverId);
|
||||
// }
|
||||
|
||||
private void processAllRank(){
|
||||
// try {
|
||||
|
|
|
@ -70,7 +70,7 @@ public class CrossDeathPathLogic {
|
|||
AbstractRank totalGuild = RankContext.getRankEnum(RankEnum.DEATH_PATH_TOTAL_GUILD_RANK.getType());
|
||||
if(!before.equals(after)){
|
||||
decimal = decimal.add(new BigDecimal(1));
|
||||
if(!"".equals(before)){
|
||||
if(!before.isEmpty()){
|
||||
redisUtil.incrementZsetScore(totalGuild.getCrossRedisKey(),"",before, -1,false);
|
||||
}
|
||||
// 推送
|
||||
|
|
|
@ -224,13 +224,9 @@ public class DeathPathLogic {
|
|||
switch (status){
|
||||
// 活动结束
|
||||
case 0:
|
||||
try {
|
||||
deleteDeathPathInfo();
|
||||
setGroupId(0);
|
||||
LOGGER.info("========================跨服十绝阵关闭:{}",getGroupId());
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
deleteDeathPathInfo();
|
||||
setGroupId(0);
|
||||
LOGGER.info("========================跨服十绝阵关闭:{}",getGroupId());
|
||||
break;
|
||||
case 1:
|
||||
startTime = (int)(TimeUtils.getAppointTime(guildWarTime[status-1][0],guildWarTime[status-1][1])/1000);
|
||||
|
@ -649,7 +645,7 @@ public class DeathPathLogic {
|
|||
// 邮件标题和内容
|
||||
String mailTitle = SErrorCodeEerverConfig.getI18NMessage("guildwar_reward_title");
|
||||
String mailContent = SErrorCodeEerverConfig.getI18NMessage("guildwar_reward_txt");
|
||||
if(reward!=null&&reward.getUserReward().size()!=0){
|
||||
if(reward!=null&& !reward.getUserReward().isEmpty()){
|
||||
Map<Integer, DeathReward> userReward = reward.getUserReward();
|
||||
for(Map.Entry<Integer, DeathReward> rewardEntry:userReward.entrySet()){
|
||||
if(rewardEntry.getValue().getPosition()==0){
|
||||
|
|
Loading…
Reference in New Issue