区服id修改

master_ob2
PC-202302260912\Administrator 2023-08-09 10:35:50 +08:00
parent 620528a9c3
commit c220070f59
8 changed files with 25 additions and 36 deletions

View File

@ -2,10 +2,10 @@ package com.ljsd.common.mogodb;
import com.ljsd.common.mogodb.util.ConcurrentDataMessage;
import com.ljsd.common.mogodb.util.MongoKeys;
import com.mongodb.BasicDBObject;
import org.springframework.data.mongodb.core.MongoTemplate;
import java.util.*;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
public class MongoUpdateCache {
@ -66,10 +66,7 @@ public class MongoUpdateCache {
public boolean checkOverride(String key1,String key2){
String[] fullKeyArray = key1.split("\\.");
String[] key1Array = key2.split("\\.");
if(fullKeyArray.length == key1Array.length && !fullKeyArray[fullKeyArray.length -1].equals(key1Array[key1Array.length -1])){
return false;
}
return true;
return fullKeyArray.length != key1Array.length || fullKeyArray[fullKeyArray.length - 1].equals(key1Array[key1Array.length - 1]);
}

View File

@ -43,12 +43,12 @@ public class CoreLogic {
return coreMongoTemplate.findOne(query, CHefuInfo.class);
}
public boolean isHefu(int serverId) {
public boolean isNotHefu(int serverId) {
CHefuInfo hefuInfo = findHefuInfo();
if (hefuInfo == null){
return false;
return true;
}
return hefuInfo.getSlaveServerIds().contains(serverId);
return !hefuInfo.getSlaveServerIds().contains(serverId);
}
public int findServerIdFromMongo(int uid) {

View File

@ -137,10 +137,7 @@ public class AreaManager {
} else {
//大区新建
int masterServerId = serverAreaInfoDb.getMasterServerId();
if (masterServerId == GameApplication.serverId) {
needAddRobotInRank = true;//主服
}
if (addServerOrAreaIds.keySet().contains(GameApplication.serverId)) {
if (addServerOrAreaIds.containsKey(GameApplication.serverId)) {
mineServerAreaInfo = serverAreaInfoDb;//从服
}
}
@ -415,22 +412,18 @@ public class AreaManager {
return false;
}
public int getServerIdByUid(int uid, int defaultServerId) {
if (defaultServerId == GameApplication.serverId){
return defaultServerId;
}
public int getServerIdByUid(int uid) {
// redis绑定的serverid
Integer serverIdByUid = RedisUtil.getInstence().getObject(RedisKey.CUser_ServerId_Key, Integer.toString(uid), Integer.class, GlobalsDef.REDIS_OVER_TIME_DAY * 10);
if (serverIdByUid != null && !CoreLogic.getInstance().isHefu(serverIdByUid)) {
LOGGER.info("uid=>{},defaultId =>{},getServerIdByUid1->{}",uid,defaultServerId,serverIdByUid);
if (serverIdByUid != null && CoreLogic.getInstance().isNotHefu(serverIdByUid)) {
return serverIdByUid;
}
LOGGER.info("uid=>{},defaultId =>{},getServerIdByUid2",uid,defaultServerId);
// 数据库里存储的serverid
int serverIdFromMongo = CoreLogic.getInstance().findServerIdFromMongo(uid);
if (serverIdFromMongo != 0 && !CoreLogic.getInstance().isHefu(serverIdFromMongo)){
LOGGER.info("uid=>{},defaultId =>{},serverIdFromMongo->{}",uid,defaultServerId,serverIdFromMongo);
if (serverIdFromMongo != 0 && CoreLogic.getInstance().isNotHefu(serverIdFromMongo)){
return serverIdFromMongo;
}
LOGGER.info("uid=>{},defaultId =>{},serverIdFromMongo2",uid,defaultServerId);
// 本服的
return GameApplication.serverId;
}

View File

@ -41,7 +41,7 @@ public class LjsdMongoTemplate implements MongoUpdateImp {
// MongoRoot root = (MongoRoot)obj;
// mongoTemplate.save(obj,root.getCollection());
// root.setBsave(true);
int serverIdByUid = AreaManager.getInstance().getServerIdByUid(uid, GameApplication.serverId);
int serverIdByUid = AreaManager.getInstance().getServerIdByUid(uid);
MongoTemplate otherMonogTemplate = getMongoTemplate(serverIdByUid);
if (otherMonogTemplate == null) {
return;
@ -123,7 +123,7 @@ public class LjsdMongoTemplate implements MongoUpdateImp {
}
public <T> T findById(String collectionName, String id, Class<T> clazz) throws Exception {
int serverIdByUid = AreaManager.getInstance().getServerIdByUid(Integer.parseInt(id), GameApplication.serverId);
int serverIdByUid = AreaManager.getInstance().getServerIdByUid(Integer.parseInt(id));
MongoTemplate otherMonogTemplate = getMongoTemplate(serverIdByUid);
if(otherMonogTemplate==null){
return null;
@ -141,7 +141,7 @@ public class LjsdMongoTemplate implements MongoUpdateImp {
public <T> T findById(String collectionName, int id, Class<T> clazz) throws Exception {
int serverIdByUid = AreaManager.getInstance().getServerIdByUid(id, GameApplication.serverId);
int serverIdByUid = AreaManager.getInstance().getServerIdByUid(id);
MongoTemplate otherMonogTemplate = getMongoTemplate(serverIdByUid);
if(otherMonogTemplate==null){
return null;
@ -155,7 +155,7 @@ public class LjsdMongoTemplate implements MongoUpdateImp {
if(clazz.equals(GlobalSystemControl.class)||clazz.equals(ServerConfig.class)){
serverIdByUid = GameApplication.serverId;
}else {
serverIdByUid = AreaManager.getInstance().getServerIdByUid(id, GameApplication.serverId);
serverIdByUid = AreaManager.getInstance().getServerIdByUid(id);
}
MongoTemplate otherMonogTemplate = getMongoTemplate(serverIdByUid);
@ -215,7 +215,7 @@ public class LjsdMongoTemplate implements MongoUpdateImp {
Integer guilderverId = MongoUtil.getInstence().findGuilderverId(Integer.parseInt(id));
otherMonogTemplate = MongoUtil.getInstence().getMonogTemplate(guilderverId);
}else {
int serverIdByUid = AreaManager.getInstance().getServerIdByUid(Integer.parseInt(id), GameApplication.serverId);
int serverIdByUid = AreaManager.getInstance().getServerIdByUid(Integer.parseInt(id));
otherMonogTemplate = MongoUtil.getInstence().getMonogTemplate(serverIdByUid);
}
if (otherMonogTemplate == null) {

View File

@ -111,7 +111,7 @@ public class GuildHelpHelpOtherRequestHandler extends BaseHandler<Family.GuildHe
build.setName(target.getPlayerInfoManager().getNickName()).setUid(target.getId()).setPracticeLevel(target.getHeroManager().getPracticeLevel());
GuildLogic.sendIndicationToMember(GuilidManager.getGuildInfo(guildId), MessageTypeProto.MessageType.GuildHelpInfoIndication,build.build());
int serverId = AreaManager.getInstance().getServerIdByUid(targetUid, GameApplication.serverId);
int serverId = AreaManager.getInstance().getServerIdByUid(targetUid);
if (serverId != GameApplication.serverId) {
String s = RedisUtil.getInstence().getGson().toJson(target);
GuildLogic.updateUserInfo(serverId, targetUid, s, GuildDef.UPDATE_YUANZHU);

View File

@ -1,6 +1,5 @@
package com.ljsd.jieling.logic.dao.cross;
import com.ljsd.GameApplication;
import com.ljsd.jieling.db.mongo.AreaManager;
/**
@ -182,7 +181,7 @@ public class CSPlayer {
}
public int getServerId() {
return AreaManager.getInstance().getServerIdByUid(userId, 0);
return AreaManager.getInstance().getServerIdByUid(userId);
}
public void setServerId(int serverId) {

View File

@ -652,7 +652,7 @@ public class GuildLogic {
targetUser.getGuildMyInfo().clearOfLevelGuild();
addGuildLog(guildInfo.getId(),GuildDef.Log.KICK,targetUser.getPlayerInfoManager().getNickName());
int serverId = AreaManager.getInstance().getServerIdByUid(targetUid, GameApplication.serverId);
int serverId = AreaManager.getInstance().getServerIdByUid(targetUid);
if (serverId != GameApplication.serverId) {
String s = RedisUtil.getInstence().getGson().toJson(targetUser);
updateUserInfo(serverId, targetUid, s, GuildDef.UPDATE_KICK_OUT);
@ -862,7 +862,7 @@ public class GuildLogic {
}
//TODO lock check
int serverId = AreaManager.getInstance().getServerIdByUid(sendUid, GameApplication.serverId);
int serverId = AreaManager.getInstance().getServerIdByUid(sendUid);
if (serverId != GameApplication.serverId) {
User userByRpc = PlayerLogic.getInstance().getUserByRpc(sendUid);
String userStr = RedisUtil.getInstence().getGson().toJson(userByRpc);
@ -1387,7 +1387,7 @@ public class GuildLogic {
User targetUser = PlayerLogic.getInstance().getUserByRpc(targetUid);
AyyncWorker ayyncWorker = new AyyncWorker(targetUser, true, n->targetUser.getFriendManager().addBeLikedCount(1));
int serverId = AreaManager.getInstance().getServerIdByUid(targetUid, GameApplication.serverId);
int serverId = AreaManager.getInstance().getServerIdByUid(targetUid);
if (serverId == GameApplication.serverId) {
ProtocolsManager.getInstance().updateAyncWorker(ayyncWorker);
}

View File

@ -1756,7 +1756,7 @@ public class PlayerLogic {
* @throws Exception
*/
public User getUserByRpc(int uid) {
int serverId = AreaManager.getInstance().getServerIdByUid(uid, GameApplication.serverId);
int serverId = AreaManager.getInstance().getServerIdByUid(uid);
if (serverId == 0) {
LOGGER.info("serverId is Exception serverId={}", serverId);
return null;