Merge branch 'dh_dev_crossrank' into master_test_gn

back_recharge
duhui 2021-11-03 17:35:26 +08:00
commit ed62e827fe
26 changed files with 245 additions and 810 deletions

View File

@ -6,8 +6,8 @@ import com.ljsd.jieling.db.mongo.MongoUtil;
import com.ljsd.jieling.db.redis.RedisKey;
import com.ljsd.jieling.db.redis.RedisUtil;
import com.ljsd.jieling.hotfix.HotfixUtil;
import com.ljsd.jieling.logic.activity.crossService.CrossServiceLogic;
import com.ljsd.jieling.logic.dao.ServerConfig;
import com.ljsd.jieling.logic.family.CrossDeathPathLogic;
import com.ljsd.jieling.logic.rank.CrossRankManager;
import com.ljsd.jieling.network.NetManager;
import com.ljsd.jieling.thread.task.RPCServerTask;
@ -23,8 +23,6 @@ import org.springframework.scheduling.annotation.EnableScheduling;
import util.TimeUtils;
import java.io.File;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Scanner;
@ -63,7 +61,7 @@ public class GameApplication {
GameLogicService.getInstance().onStart();
NetManager.getInstance().init();
SkyEyeService.getInstance().onStart();
CrossDeathPathLogic.getInstance().serverInit();
CrossServiceLogic.serverInit();
CrossRankManager.getInstance().guildCacheHandle();
HotfixUtil.getInstance();
// 开启定时任务

View File

@ -14,11 +14,9 @@ import com.ljsd.jieling.ktbeans.ReportEventEnum;
import com.ljsd.jieling.ktbeans.ReportUtil;
import com.ljsd.jieling.logic.GlobleSystemLogic;
import com.ljsd.jieling.logic.OnlineUserManager;
import com.ljsd.jieling.logic.activity.crossService.CrossServiceLogic;
import com.ljsd.jieling.logic.dao.FriendManager;
import com.ljsd.jieling.logic.dao.PlayerManager;
import com.ljsd.jieling.logic.dao.UserManager;
import com.ljsd.jieling.logic.dao.gm.ArenaOfUser;
import com.ljsd.jieling.logic.dao.root.User;
import com.ljsd.jieling.network.session.ISession;
import com.ljsd.jieling.util.CBean2Proto;
@ -214,16 +212,10 @@ public class ChatLogic {
throw new ErrorCodeException(ErrorCode.CHAT_NO_FAMILY);
}
chatInfo = CBean2Proto.getChatInfoBuilder(user,message,nowTime,messageId);
// = ChatProto.SendChatInfoIndication.newBuilder()
// .setChatInfo(chatInfo)
// .setType(2)
// .build();
MessageCache.addGuildMsg(chatInfo,messageId,guildId);
// GuildLogic.sendIndicationToMember(GuilidManager.guildInfoMap.get(guildId),MessageTypeProto.MessageType.SEND_CHAT_INFO_INDICATION,sendChatInfoIndication);
break;
case 3: //好友
ChatProto.SendChatInfoIndication sendChatInfoIndication = null;
ChatProto.SendChatInfoIndication sendChatInfoIndication;
List<Integer> friends = friendManager.getFriends();
if (!friends.contains(friendId)) {
throw new ErrorCodeException(ErrorCode.CHAT_NOT_FRIENDS);
@ -254,8 +246,6 @@ public class ChatLogic {
chatInfo = CBean2Proto.getCrossChatInfoBuilder(user,message,nowTime,messageId);
MessageCache.addCrossMsg(chatInfo,messageId,String.valueOf(group));
checkSaveUser(user);
break;
default: {
break;
@ -266,13 +256,6 @@ public class ChatLogic {
MessageUtil.sendMessage(iSession, 1, msgId, null, true);
}
private void checkSaveUser(User user) throws Exception {
ArenaOfUser query = CrossServiceLogic.getInstance().query(user.getId());
if (query == null){
CrossServiceLogic.getInstance().dispose(user);
}
}
//记录聊天信息
private void onSendChatSuccess(User user,int chatType,String message){
RedisUtil redisUtil = RedisUtil.getInstence();

View File

@ -4,7 +4,6 @@ import com.google.gson.Gson;
import com.ljsd.GameApplication;
import com.ljsd.fight.ArenaRecord;
import com.ljsd.fight.FightType;
import com.ljsd.jieling.config.json.CoreSettings;
import com.ljsd.jieling.core.GlobalsDef;
import com.ljsd.jieling.db.redis.RedisKey;
import com.ljsd.jieling.db.redis.RedisUtil;
@ -22,7 +21,6 @@ import com.ljsd.jieling.logic.dao.TeamPosHeroInfo;
import com.ljsd.jieling.logic.dao.UserManager;
import com.ljsd.jieling.logic.dao.cross.CSPlayer;
import com.ljsd.jieling.logic.dao.root.User;
import com.ljsd.jieling.logic.family.CrossDeathPathLogic;
import com.ljsd.jieling.logic.fight.FightUtil;
import com.ljsd.jieling.logic.fight.result.FightResult;
import com.ljsd.jieling.logic.hero.HeroLogic;
@ -32,9 +30,6 @@ import com.ljsd.jieling.logic.rank.RankEnum;
import com.ljsd.jieling.logic.rank.rankImpl.AbstractRank;
import com.ljsd.jieling.network.session.ISession;
import com.ljsd.jieling.thrift.idl.CrossArenaManager;
import com.ljsd.jieling.thrift.idl.RPCRequestIFace;
import com.ljsd.jieling.thrift.pool.ClientAdapterPo;
import com.ljsd.jieling.util.ConfigurableApplicationContextManager;
import com.ljsd.jieling.util.ItemUtil;
import com.ljsd.jieling.util.MessageUtil;
import config.SArenaRobotConfig;
@ -126,8 +121,11 @@ public class CrossYuxulundaoChallengeHandler extends BaseHandler<ArenaInfoProto.
//换一批
CrossYuxulundaoLogic.getInstance().matchRivals(user);
List<ArenaEnemy> enemyList = arenaManager.getCrossYuxulundaoEnemies();
enemyList.forEach(n -> res.addArenaEnemys(CrossYuxulundaoLogic.getInstance().getMatchRivalInfo(n.getEnemyId(), 0)));
enemyList.forEach(n -> res.addArenaEnemys(CrossYuxulundaoLogic.getMatchRivalInfo(n.getEnemyId(), 0)));
CSPlayer myQuery = CrossServiceLogic.getPlayerByRedis(user.getId());
if (myQuery == null){
return;
}
CSPlayer defQuery = null;
//根据双方现有分数计算出 得分
int ackScores = myQuery.getCrossYuxulundaoNewScore();
@ -135,6 +133,9 @@ public class CrossYuxulundaoChallengeHandler extends BaseHandler<ArenaInfoProto.
if (defUid >= 1000) {
defQuery = CrossServiceLogic.getPlayerByRedis(defUid);
if (defQuery == null){
return;
}
defScores = defQuery.getCrossYuxulundaoNewScore();
} else {
SArenaRobotConfig sArenaRobotConfig = SArenaRobotConfig.getsArenaRobotConfigById(defUid);
@ -258,7 +259,7 @@ public class CrossYuxulundaoChallengeHandler extends BaseHandler<ArenaInfoProto.
arenaRecord.setUserName(user.getPlayerInfoManager().getNickName()); //名字
arenaRecord.setHeadFrame(user.getPlayerInfoManager().getHeadFrame());//头像框
arenaRecord.setPracticeLevel(user.getHeroManager().getPracticeLevel());//修行等级
String ackServerName = CrossDeathPathLogic.getInstance().getServerNameByDeathPath(GameApplication.serverId);
String ackServerName = CrossServiceLogic.simplifyServerName(GameApplication.serverId);
arenaRecord.setServerName(ackServerName);
int[] newResult = new int[3];
@ -322,7 +323,7 @@ public class CrossYuxulundaoChallengeHandler extends BaseHandler<ArenaInfoProto.
if(GameApplication.serverId != csPlayer.getServerId()){
crossArenaManager = PlayerLogic.getInstance().getCrossArenaManagerData(csPlayer);
}
String defServerName = CrossDeathPathLogic.getInstance().getServerNameByDeathPath(csPlayer.getServerId());
String defServerName = CrossServiceLogic.simplifyServerName(csPlayer.getServerId());
arenaRecord.setCreateTime(TimeUtils.nowInt()); // 时间
arenaRecord.setAttackId(defUserUid); //id
arenaRecord.setLevel(csPlayer.getLevel()); //等级

View File

@ -67,7 +67,6 @@ public class GetWorldArenaChallengeRequestHandler extends BaseHandler<WorldProto
@Override
public void processWithProto(ISession iSession, WorldProto.GetWorldArenaChallengeRequest proto) throws Exception {
SGlobalSystemConfig sGlobalSystemConfig = STableManager.getConfig(SGlobalSystemConfig.class).get(FunctionIdEnum.World_Arena.getFunctionType());
if (!ArenaWorldLogic.checkOpen(String.valueOf(iSession.getUid()))) {
throw new ErrorCodeException(ErrorCode.ACTIVITY_NOT_OPEN);
}
@ -84,11 +83,6 @@ public class GetWorldArenaChallengeRequestHandler extends BaseHandler<WorldProto
}
User user = UserManager.getUser(iSession.getUid());
//tiem limit
// if(user.getArenaManager().getCostDallyTime()>=setting.getCostMax()){
// throw new ErrorCodeException(ErrorCode.NOTIME2);
// }
//rank limit
if (!ArenaWorldLogic.checkJoin(String.valueOf(iSession.getUid()))) {
throw new ErrorCodeException(ErrorCode.WORLD_LEVELIMIT);
@ -159,28 +153,29 @@ public class GetWorldArenaChallengeRequestHandler extends BaseHandler<WorldProto
int defendForce = 0;
if (proto.getChallengeUid()>1000) {
ArenaOfUser arenaOfUser = CrossServiceLogic.getInstance().query(proto.getChallengeUid());
//defendForce = arenaOfUser.getHeroManager().getTotalForceByTeam().get(proto.getTeamId());
//teamInfo = FightUtil.makeCrossPersonData(arenaOfUser,proto.getTeamId(),defendForce);
CSPlayer csPlayer = CrossServiceLogic.getPlayerByRedis(proto.getChallengeUid());
if (csPlayer == null){
throw new ErrorCodeException(ErrorCode.USE_NOT_EXIT);
}
CrossArenaManager crossArenaManager = PlayerLogic.getInstance().getCrossArenaManagerData(csPlayer);
teamInfo = FightUtil.makeCrossPersonData(csPlayer, proto.getTeamId(), null, crossArenaManager);
arenaEnemys =ArenaLogic.getInstance().getUserCrossArenaEnemy(crossGroup,arenaOfUser,proto.getChallengeRank(),false).build();
arenaEnemys = ArenaLogic.getInstance().getUserCrossArenaEnemy(csPlayer,proto.getChallengeRank(),false).build();
} else {
//机器人
CrossArenaEnemy info = RedisUtil.getInstence().getMapEntry(RedisKey.CROSS_ARENA_ROBOT_INFO, String.valueOf(crossGroup), String.valueOf(proto.getChallengeUid()), CrossArenaEnemy.class);
teamInfo = FightUtil.makeRobotFightData(info.getEnemyId());
// force = SArenaRobotConfig.getsArenaRobotConfigById(info.getEnemyId()).getTotalForce();
arenaEnemys =ArenaLogic.getInstance().getRobotCrossArenaEnemy(crossGroup,proto.getChallengeRank(),proto.getChallengeUid()).build();
defendForce = info.getTotalForce();
}
arenaAttack = CommonProto.ArenaEnemy.newBuilder().setPersonInfo(CommonProto.ArenaPersonInfo.newBuilder().setUid(iSession.getUid()).setName(user.getPlayerInfoManager().getNickName()).setTotalForce(user.getPlayerInfoManager().getMaxForce()).setServername(CrossServiceLogic.getInstance().findServerName(GameApplication.serverId)).setPracticeLevel(user.getHeroManager().getPracticeLevel())).build();
CommonProto.ArenaPersonInfo.Builder builder2 = CommonProto.ArenaPersonInfo.newBuilder()
.setUid(iSession.getUid())
.setName(user.getPlayerInfoManager().getNickName())
.setTotalForce(user.getPlayerInfoManager().getMaxForce())
.setServername(CrossServiceLogic.simplifyServerName(GameApplication.serverId))
.setPracticeLevel(user.getHeroManager().getPracticeLevel());
arenaAttack = CommonProto.ArenaEnemy.newBuilder().setPersonInfo(builder2).build();
int myForce = HeroLogic.getInstance().calTeamTotalForce(user, proto.getTeamId(), true);
// boolean isRevert = proto.getTotalForce() < force;
int teamId = proto.getTeamId();
CommonProto.FightTeamInfo fightTeamInfo = FightUtil.makePersonFightData(UserManager.getUser(iSession.getUid()), teamId, null, null);
FightResult fightResult = getFightForPVP(iSession.getUid(), proto.getChallengeUid(), fightTeamInfo, teamInfo, FightUtil.getFightSeed(),myForce<defendForce);
@ -255,14 +250,9 @@ public class GetWorldArenaChallengeRequestHandler extends BaseHandler<WorldProto
RedisUtil.getInstence().putMapEntry(RedisKey.WORLD_ARENA_RRECORD, Integer.toString(proto.getChallengeUid()), s, builder.build().toByteArray());
}
PlayerLogic.getInstance().checkAndUpdate(user, VipPrivilegeType.WORLD_ARENA_CHALLENGE_TIMES, 1);
//保存自己的编队
CrossServiceLogic.getInstance().dispose(user);
}
public static FightResult getFightForPVP(int attachId,int defUid,CommonProto.FightTeamInfo fightTeamInfo, CommonProto.FightTeamInfo deffightTeamInfo,int seed,boolean isRever) throws Exception {
public static FightResult getFightForPVP(int attachId,int defUid,CommonProto.FightTeamInfo fightTeamInfo, CommonProto.FightTeamInfo deffightTeamInfo,int seed,boolean isRever) throws Exception {
LuaValue getFightData ;
if(isRever){
deffightTeamInfo = CommonProto.FightTeamInfo.newBuilder().mergeFrom(deffightTeamInfo).setFirstCamp(1).build();

View File

@ -1,6 +1,5 @@
package com.ljsd.jieling.handler.gtw;
import com.google.protobuf.GeneratedMessage;
import com.ljsd.jieling.core.FunctionIdEnum;
import com.ljsd.jieling.core.HandlerLogicThread;
import com.ljsd.jieling.db.redis.RedisKey;
@ -8,15 +7,12 @@ import com.ljsd.jieling.db.redis.RedisUtil;
import com.ljsd.jieling.exception.ErrorCode;
import com.ljsd.jieling.exception.ErrorCodeException;
import com.ljsd.jieling.handler.BaseHandler;
import com.ljsd.jieling.logic.OnlineUserManager;
import com.ljsd.jieling.logic.arena.ArenaLogic;
import com.ljsd.jieling.logic.dao.UserManager;
import com.ljsd.jieling.network.server.GlobalidHelper;
import com.ljsd.jieling.network.server.WorldHelper;
import com.ljsd.jieling.network.session.ISession;
import com.ljsd.jieling.util.MessageUtil;
import config.SGlobalSystemConfig;
import manager.STableManager;
import org.springframework.stereotype.Component;
import rpc.protocols.CommonProto;
import rpc.protocols.MessageTypeProto;
import rpc.world.WorldProto;
@ -29,6 +25,7 @@ import java.util.stream.Collectors;
* Author: zsx
* CreateDate: 2020/12/10 19:53
*/
@Component
public class GetWorldArenaRecordInfoRequestHandler extends BaseHandler<WorldProto.GetWorldArenaRecordInfoRequest> {
@Override
public MessageTypeProto.MessageType getMessageCode() {
@ -43,7 +40,6 @@ public class GetWorldArenaRecordInfoRequestHandler extends BaseHandler<WorldProt
throw new ErrorCodeException(ErrorCode.ACTIVITY_NOT_OPEN);
}
WorldProto.GetWorldArenaRecordInfoResponse.Builder builder = WorldProto.GetWorldArenaRecordInfoResponse.newBuilder();
// Integer integer = ArenaLogic.serverSplit.get(String.valueOf(serverId));
// HashMap<Integer, ArenaEnemy> integerIntegerHashMap = ArenaLogic.ranInfo.get(integer);
@ -56,16 +52,16 @@ public class GetWorldArenaRecordInfoRequestHandler extends BaseHandler<WorldProt
if (result != null && !result.isEmpty()) {
List< byte[]> arenaRecordList = new ArrayList<>(result.values());
List<WorldProto.WroldBattleRecord> collect = arenaRecordList.stream().map(bytes -> {try {
WorldProto.WroldBattleRecord wroldBattleRecord = WorldProto.WroldBattleRecord.parseFrom(bytes);
//此处不把数据给前端,避免数据过大
wroldBattleRecord = wroldBattleRecord.toBuilder().setFightData(CommonProto.FightData.newBuilder()).build();
return wroldBattleRecord;
}catch (Exception e){}
return null;
}).collect(Collectors.toList());
collect.sort(Comparator.comparingInt(WorldProto.WroldBattleRecord::getAttackTime));
List<WorldProto.WroldBattleRecord> collect = arenaRecordList.stream().map(bytes -> {
try {
WorldProto.WroldBattleRecord wroldBattleRecord = WorldProto.WroldBattleRecord.parseFrom(bytes);
//此处不把数据给前端,避免数据过大
wroldBattleRecord = wroldBattleRecord.toBuilder().setFightData(CommonProto.FightData.newBuilder()).build();
return wroldBattleRecord;
} catch (Exception e) {
return null;
}
}).sorted(Comparator.comparingInt(wroldBattleRecord1 -> wroldBattleRecord1 != null ? wroldBattleRecord1.getAttackTime() : 0)).collect(Collectors.toList());
Collections.reverse(collect);
int size = arenaRecordList.size();
if (size > 15) {

View File

@ -28,7 +28,7 @@ public class GetPlayerOneTeamInfo extends BaseHandler<PlayerInfoProto.GetPlayerO
@Override
public void processWithProto(ISession iSession, PlayerInfoProto.GetPlayerOneTeamInfoRequest proto) throws Exception {
PlayerInfoProto.GetPlayerOneTeamInfoResponse oneTeamInfo = null;
PlayerInfoProto.GetPlayerOneTeamInfoResponse oneTeamInfo;
if(proto.getServerId()==0){
//本服其他功能
oneTeamInfo = PlayerLogic.getInstance().getOneTeamInfo( proto.getPlayerId(), proto.getTeamId());
@ -36,9 +36,7 @@ public class GetPlayerOneTeamInfo extends BaseHandler<PlayerInfoProto.GetPlayerO
//跨服
if(proto.getPlayerId()<1000){
//机器人
CrossArenaEnemy info = RedisUtil.getInstence().getMapEntry(RedisKey.CROSS_ARENA_ROBOT_INFO, String.valueOf(GlobleSystemLogic.getInstence().getCrossGroup()), String.valueOf(proto.getPlayerId()), CrossArenaEnemy.class);
if(info==null){
throw new ErrorCodeException(ErrorCode.SERVER_SELF_DEFINE);
}
@ -47,10 +45,11 @@ public class GetPlayerOneTeamInfo extends BaseHandler<PlayerInfoProto.GetPlayerO
//真人
List<Integer> teamId =new ArrayList<>(1);
teamId.add(proto.getTeamId());
//oneTeamInfo = PlayerLogic.getInstance().getCrossOneTeamInfo(proto.getPlayerId(),proto.getTeamId());
PlayerInfoProto.GetPlayerOneTeamInfoResponse.Builder playerTeamInfo = PlayerInfoProto.GetPlayerOneTeamInfoResponse.newBuilder().setTeamInfo( PlayerLogic.getInstance().getCrossYxldOneTeamInfoNew(proto.getPlayerId(), teamId));
MessageUtil.sendMessage(iSession,1, MessageTypeProto.MessageType.GET_PLAYER_ONE_TEAM_INFO_RESPONSE.getNumber(),playerTeamInfo.build(),true);
return;
PlayerInfoProto.GetPlayerOneTeamInfoResponse.Builder playerTeamInfo =
PlayerInfoProto.GetPlayerOneTeamInfoResponse.newBuilder()
.setTeamInfo(PlayerLogic.getInstance().getCrossYxldOneTeamInfoNew(proto.getPlayerId(), teamId));
MessageUtil.sendMessage(iSession,1, MessageTypeProto.MessageType.GET_PLAYER_ONE_TEAM_INFO_RESPONSE.getNumber(),playerTeamInfo.build(),true);
return;
}
}
MessageUtil.sendMessage(iSession,1, MessageTypeProto.MessageType.GET_PLAYER_ONE_TEAM_INFO_RESPONSE.getNumber(),oneTeamInfo,true);

View File

@ -1,32 +1,31 @@
package com.ljsd.jieling.logic.activity.crossService;
import com.ljsd.GameApplication;
import com.ljsd.jieling.config.json.CoreSettings;
import com.ljsd.jieling.core.GlobalsDef;
import com.ljsd.jieling.db.mongo.MongoUtil;
import com.ljsd.jieling.db.mongo.core.CServerInfo;
import com.ljsd.jieling.db.redis.RedisKey;
import com.ljsd.jieling.db.redis.RedisUtil;
import com.ljsd.jieling.logic.arena.ArenaLogic;
import com.ljsd.jieling.logic.dao.*;
import com.ljsd.jieling.logic.dao.PlayerManager;
import com.ljsd.jieling.logic.dao.cross.CSPlayer;
import com.ljsd.jieling.logic.dao.gm.*;
import com.ljsd.jieling.logic.dao.root.GuildCache;
import com.ljsd.jieling.logic.dao.root.GuildInfo;
import com.ljsd.jieling.logic.dao.root.User;
import com.ljsd.jieling.logic.dao.root.UserInfo;
import com.ljsd.jieling.logic.family.CrossDeathPathLogic;
import com.ljsd.jieling.logic.hero.HeroLogic;
import com.ljsd.jieling.util.ConfigurableApplicationContextManager;
import com.ljsd.jieling.logic.player.PlayerLogic;
import com.ljsd.jieling.thrift.idl.CrossArenaManager;
import com.ljsd.jieling.tools.Utils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.data.mongodb.core.MongoTemplate;
import org.springframework.data.mongodb.core.query.Criteria;
import org.springframework.data.mongodb.core.query.Query;
import org.springframework.data.mongodb.core.query.Update;
import java.net.UnknownHostException;
import java.util.*;
import java.util.stream.Collectors;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
/**
* @Author hj
@ -51,228 +50,51 @@ public class CrossServiceLogic {
return CrossServiceLogic.Instance.instance;
}
public String findServerName(int serverId) {
return CrossDeathPathLogic.getInstance().getServerName(serverId);
}
public void insert(ArenaOfUser arenaOfUser) throws UnknownHostException {
MongoTemplate core = MongoUtil.getCoreMongoTemplate();
core.insert(arenaOfUser,"arenaOfUser");
}
public void update(ArenaOfUser arenaOfUser) throws Exception {
MongoTemplate core = MongoUtil.getCoreMongoTemplate();
// 根据id查询
Query query = new Query(Criteria.where("_id").is(arenaOfUser.getId()));
// 修改的参数
Update update = new Update();
update.set("arenaOfPlayerManager",arenaOfUser.getPlayerManager());
update.set("arenaOfHeroManager",arenaOfUser.getHeroManager());
update.set("arenaOfPokemons",arenaOfUser.getPokemons());
update.set("arenaOfSeals",arenaOfUser.getSeals());
update.set("arenaOfGuildSkill",arenaOfUser.getGuildSkill());
core.updateMulti(query, update, ArenaOfUser.class);
}
public ArenaOfUser query(int uid) throws UnknownHostException {
MongoTemplate core = MongoUtil.getCoreMongoTemplate();
Query query = new Query();
query.addCriteria(Criteria.where("_id").is(uid));
return core.findOne(query, ArenaOfUser.class);
}
/**
*
* @param arenaOfUser
* @throws Exception
*
*/
private void countForce(ArenaOfUser arenaOfUser) throws Exception {
User user = UserManager.getUser(arenaOfUser.getId());
int totalForce = HeroLogic.getInstance().calTeamTotalForce(user, GlobalsDef.WORLD_TEAM_ARENA_DEFENSE, false);
int yxldForce = HeroLogic.getInstance().calTeamTotalForce(user, GlobalsDef.CROSS_YU_XU_LUN_DAO_ONE, false)+
HeroLogic.getInstance().calTeamTotalForce(user, GlobalsDef.CROSS_YU_XU_LUN_DAO_TWO, false)+
HeroLogic.getInstance().calTeamTotalForce(user, GlobalsDef.CROSS_YU_XU_LUN_DAO_THREE, false);
arenaOfUser.getHeroManager().setTotalForce(totalForce);
arenaOfUser.getHeroManager().setYxldForce(yxldForce);
}
private static volatile Map<Integer, CServerInfo> cServerInfoMap = new ConcurrentHashMap<>();
/**
*
* @param user
* @throws Exception
*
*/
public void dispose(User user) throws Exception{
ArenaOfUser query = query(user.getId());
ArenaOfUser arenaOfUser = buildArenaOfUser(user);
countForce(arenaOfUser);
// 添加
if (query == null){
insert(arenaOfUser);
} else {
arenaOfUser.getPlayerManager().setCrossYuxulundaoNewScore(query.getPlayerManager().getCrossYuxulundaoNewScore());
arenaOfUser.getPlayerManager().setCrossYuxulundaoOldScore( query.getPlayerManager().getCrossYuxulundaoOldScore());
arenaOfUser.getPlayerManager().setCrossYxldMaxLevel(arenaOfUser.getPlayerManager().getCrossYxldMaxLevel());
update(arenaOfUser);
public static void serverInit() {
try {
MongoTemplate core = MongoUtil.getCoreMongoTemplate();
List<CServerInfo> cServerInfos = core.findAll(CServerInfo.class);
Map<Integer,CServerInfo> serverInfoMap = new HashMap<>(cServerInfos.size());
cServerInfos.forEach(n->serverInfoMap.put(n.getServerId(),n));
cServerInfoMap = serverInfoMap;
} catch (UnknownHostException e) {
LOGGER.error("=========跨服服务器列表获取失败=======:{}",e.getMessage());
}
}
public ArenaOfUser buildArenaOfUser(User user){
ArenaOfUser arenaOfUser = new ArenaOfUser();
arenaOfUser.setId(user.getId());
HeroManager heroManager = user.getHeroManager();
// 玩家基本信息
arenaOfUser.setPlayerManager(buildArenaOfPlayerManager(user));
// 英雄
arenaOfUser.setHeroManager(buildArenaOfHeroManager(user));
// 灵兽
Map<Integer,Pokemon> pokemons = new HashMap<>();
Map<String, Pokemon> pokemonMap = user.getPokemonManager().getPokemonMap();
Map<Integer, String> teamMap = user.getPokemonManager().getPokemonTeamMap();
for (Map.Entry<Integer, String> entry : teamMap.entrySet()) {
// clone 深度复制
Pokemon pokemon = (Pokemon)pokemonMap.get(entry.getValue()).clone();
pokemons.put(entry.getKey(),pokemon);
}
arenaOfUser.setPokemons(pokemons);
// 紫府神印
arenaOfUser.setSeals(new HashMap<>(heroManager.getPurpleMansionSeal()));
// 公会技能
arenaOfUser.setGuildSkill(new HashMap<>(user.getGuildMyInfo().getGuildSkill()));
return arenaOfUser;
}
private ArenaOfPlayerManager buildArenaOfPlayerManager(User user){
ArenaOfPlayerManager arenaOfPlayerManager = new ArenaOfPlayerManager();
PlayerManager player = user.getPlayerInfoManager();
int guildId = player.getGuildId();
arenaOfPlayerManager.setuId(user.getId());
arenaOfPlayerManager.setLevel(player.getLevel());
arenaOfPlayerManager.setName(player.getNickName());
arenaOfPlayerManager.setHead(player.getHead());
arenaOfPlayerManager.setHeadFrame(player.getHeadFrame());
GuildCache mapEntry = CrossDeathPathLogic.getCrossGuild(guildId);
arenaOfPlayerManager.setGuildId(guildId);
arenaOfPlayerManager.setGuildName(mapEntry==null?"":mapEntry.getName());
arenaOfPlayerManager.setUserTitle(player.getUserTitle());
arenaOfPlayerManager.setPracticeLevel(user.getHeroManager().getPracticeLevel());
arenaOfPlayerManager.setServerId(GameApplication.serverId);
arenaOfPlayerManager.setGender(player.getSex());
arenaOfPlayerManager.setSkin(player.getUserSkin());
arenaOfPlayerManager.setUserMount(player.getUserMount());
arenaOfPlayerManager.setMaxFore(player.getMaxForce());
String serverName = CrossDeathPathLogic.getInstance().getServerNameByDeathPath(GameApplication.serverId);
arenaOfPlayerManager.setServerName(serverName);
return arenaOfPlayerManager;
}
private void teamBuild(User user,int teamId,Map<Integer,List<TeamPosHeroInfo>> teams,HashSet<TeamPosHeroInfo> set){
List<TeamPosHeroInfo> team = user.getTeamPosManager().getTeamPosForHero().getOrDefault(teamId,new ArrayList<>());
teams.put(teamId,team);
set.addAll(team);
}
private ArenaOfHeroManager buildArenaOfHeroManager(User user){
// 编队列表
Map<Integer,List<TeamPosHeroInfo>> teams = new HashMap<>();
// 需要存储的英雄列表
HashSet<TeamPosHeroInfo> set = new HashSet<>();
// 跨服世界阵编队
teamBuild(user,TeamEnum.WORLD_TEAM_ARENA_DEFENSE.getTeamId(),teams,set);
// 主线阵容编队
teamBuild(user,TeamEnum.FORMATION_NORMAL.getTeamId(),teams,set);
// 主线阵容编队
List<TeamPosHeroInfo> firstTeam = user.getTeamPosManager().getTeamPosForHero().getOrDefault(GlobalsDef.FORMATION_NORMAL,new ArrayList<>());
teams.put(GlobalsDef.FORMATION_NORMAL,firstTeam);
set.addAll(firstTeam);
//玉虚论道编队
List<TeamPosHeroInfo> yxldOne = user.getTeamPosManager().getTeamPosForHero().getOrDefault(GlobalsDef.CROSS_YU_XU_LUN_DAO_ONE,new ArrayList<>());
teams.put(GlobalsDef.CROSS_YU_XU_LUN_DAO_ONE,yxldOne);
set.addAll(yxldOne);
List<TeamPosHeroInfo> yxldTwo = user.getTeamPosManager().getTeamPosForHero().getOrDefault(GlobalsDef.CROSS_YU_XU_LUN_DAO_TWO,new ArrayList<>());
teams.put(GlobalsDef.CROSS_YU_XU_LUN_DAO_TWO,yxldTwo);
set.addAll(yxldTwo);
List<TeamPosHeroInfo> yxldTree = user.getTeamPosManager().getTeamPosForHero().getOrDefault(GlobalsDef.CROSS_YU_XU_LUN_DAO_THREE,new ArrayList<>());
teams.put(GlobalsDef.CROSS_YU_XU_LUN_DAO_THREE,yxldTree);
set.addAll(yxldTree);
teamBuild(user,TeamEnum.SEVEN_WORLD_TEAM.getTeamId(),teams,set);
// 英雄
Map<String,ArenaOfHero> heroes = new HashMap<>();
Map<String, Hero> heroMap = user.getHeroManager().getHeroMap();
set.forEach(v->{
Hero hero = heroMap.get(v.getHeroId());
heroes.put(v.getHeroId(),buildArenaOfHero(user,hero,teams));
});
// 魂宝灵宝
Map<String, PropertyItem> jewels = new HashMap<>();
Map<String, PropertyItem> equipMap = user.getEquipManager().getEquipMap();
heroMap.values().forEach(v-> v.getJewelInfo().forEach(v2->{
PropertyItem item = equipMap.get(v2);
jewels.put(v2,item);
}));
// 总战力
HashMap<Integer, Integer> map = new HashMap<>();
teams.forEach((k,v)->{
int totalForce = HeroLogic.getInstance().calTeamTotalForce(user,k,false);
map.put(k,totalForce);
});
int force = HeroLogic.getInstance().calTeamTotalForce(user, GlobalsDef.WORLD_TEAM_ARENA_DEFENSE, false);
return new ArenaOfHeroManager(teams,heroes,jewels,map,force);
}
private ArenaOfHero buildArenaOfHero(User user,Hero hero, Map<Integer,List<TeamPosHeroInfo>> teamMap){
HeroManager heroManager = user.getHeroManager();
ArenaOfHero arenaOfHero = new ArenaOfHero();
arenaOfHero.setId(hero.getId());
arenaOfHero.setTemplateId(hero.getTemplateId());
arenaOfHero.setLevel(hero.getLevel(heroManager));
arenaOfHero.setStar(hero.getStar());
arenaOfHero.setEquipByPositionMap(new HashMap<>(hero.getEquipByHongmengPositionMap(heroManager)));
arenaOfHero.setSoulEquipByPositionMap(new HashMap<>(hero.getSoulEquipByPositionMap()));
arenaOfHero.setBreakId(hero.getBreakIdByHongMeng(heroManager));
arenaOfHero.setStarBreakId(hero.getStarBreakId());
arenaOfHero.setCreateTime(hero.getCreateTime());
arenaOfHero.setEspecialEquipLevel(hero.getEspecialEquipLevelByHongmeng(heroManager,hero.getId()));
arenaOfHero.setJewelInfo(new HashSet<>(hero.getJewelInfo()));
arenaOfHero.setCreateTime(hero.getCreateType());
arenaOfHero.setChangeId(hero.getChangeId());
arenaOfHero.setSkin(hero.getSkin());
for (Map.Entry<Integer, List<TeamPosHeroInfo>> entry : teamMap.entrySet()) {
Integer teamId = entry.getKey();
List<TeamPosHeroInfo> teamList = entry.getValue();
List<TeamPosHeroInfo> collect = teamList.stream().filter(v -> v.getHeroId().equals(hero.getId())).collect(Collectors.toList());
if (collect.isEmpty()){
continue;
}
Map<Integer, Long> attribute = HeroLogic.getInstance().calHeroNotBufferAttribute(user, hero, false, teamId);
arenaOfHero.putAttributeMapByTeam(teamId,attribute);
}
return arenaOfHero;
}
/**
* uid
* @param uid
*
* @param serverId
* @return
*/
public String getServerNameByUId(int uid){
String name = "";
try {
ArenaOfUser query = query(uid);
if (query != null){
int serverId = query.getPlayerManager().getServerId();
return CrossDeathPathLogic.getInstance().getServerNameByDeathPath(serverId);
}
} catch (UnknownHostException e) {
LOGGER.error("===========获取跨服玩家信息报错======={}",e.getMessage());
public static String getServerName(int serverId){
String name = String.valueOf(serverId);
CServerInfo cServerInfo = cServerInfoMap.get(serverId);
if(cServerInfo==null){
serverInit();
cServerInfo = cServerInfoMap.get(serverId);
}
name = cServerInfo!=null?cServerInfo.getName():name;
return name;
}
/**
* servernames
* @param serverId
* @return
*/
public static String simplifyServerName(int serverId){
String name = getServerName(serverId);
return "S"+ Utils.getIntByString(name);
}
public static void update(CSPlayer player) {
RedisUtil.getInstence().setObject(getKey(player.getUserId()),player,EXPIRE);
@ -286,6 +108,21 @@ public class CrossServiceLogic {
RedisUtil.getInstence().setObject(getKey(player.getUserId()),player,EXPIRE);
}
/**
*
* @param userId
* @param teamId
* @return
*/
public static long getCrossTeamForce(int userId, int teamId){
CSPlayer csPlayer = getPlayerByRedis(userId);
if (csPlayer == null){
return 0;
}
CrossArenaManager data = PlayerLogic.getInstance().getCrossArenaManagerData(csPlayer);
return data.getTotalForceByTeam().getOrDefault(teamId,0);
}
private static CSPlayer formattUserToPlayer(User user){
CSPlayer csPlayer = CrossServiceLogic.getPlayerByRedis(user.getId());
int newScore=0,oldScore =0,crossYxldMaxLevel=0 ;
@ -312,13 +149,11 @@ public class CrossServiceLogic {
player.setCrossYuxulundaoOldScore(oldScore);
player.setGuildId(p.getGuildId());
player.setCrossYxldMaxLevel(crossYxldMaxLevel);
//player.setGuildId();
//三个队伍总战力
int force1 = HeroLogic.getInstance().calTeamTotalForce(user, GlobalsDef.CROSS_YU_XU_LUN_DAO_ONE, false);
int force2 = HeroLogic.getInstance().calTeamTotalForce(user, GlobalsDef.CROSS_YU_XU_LUN_DAO_TWO, false);
int force3 = HeroLogic.getInstance().calTeamTotalForce(user, GlobalsDef.CROSS_YU_XU_LUN_DAO_THREE, false);
player.setMaxFore(force1+force2+force3);
//CoreSettings coreSettings = ConfigurableApplicationContextManager.getBean(CoreSettings.class);
return player;
}
/**
@ -361,7 +196,6 @@ public class CrossServiceLogic {
player.setCrossYuxulundaoNewScore(0);
player.setCrossYuxulundaoOldScore(0);
player.setGuildId(p.getGuildId());
//player.setGuildId();
//三个队伍总战力
int force1 = HeroLogic.getInstance().calTeamTotalForce(user, GlobalsDef.CROSS_YU_XU_LUN_DAO_ONE, false);
int force2 = HeroLogic.getInstance().calTeamTotalForce(user, GlobalsDef.CROSS_YU_XU_LUN_DAO_TWO, false);

View File

@ -23,9 +23,7 @@ import com.ljsd.jieling.logic.activity.event.Poster;
import com.ljsd.jieling.logic.activity.fourChallenge.FourChallengeLogic;
import com.ljsd.jieling.logic.dao.*;
import com.ljsd.jieling.logic.dao.cross.CSPlayer;
import com.ljsd.jieling.logic.dao.gm.ArenaOfUser;
import com.ljsd.jieling.logic.dao.root.User;
import com.ljsd.jieling.logic.family.CrossDeathPathLogic;
import com.ljsd.jieling.logic.fight.*;
import com.ljsd.jieling.logic.fight.result.FightResult;
import com.ljsd.jieling.logic.hero.HeroLogic;
@ -52,7 +50,6 @@ import util.MathUtils;
import util.StringUtil;
import util.TimeUtils;
import java.net.UnknownHostException;
import java.util.*;
public class ArenaLogic {
@ -670,9 +667,11 @@ public class ArenaLogic {
}else{
//跨服切磋
ArenaOfUser user = CrossServiceLogic.getInstance().query(challengeUid);
deforce = user.getHeroManager().getTotalForceByTeam().get(myteamId);
CSPlayer csPlayer = CrossServiceLogic.getPlayerByRedis(user.getId());
CSPlayer csPlayer = CrossServiceLogic.getPlayerByRedis(challengeUid);
if (csPlayer == null){
throw new ErrorCodeException(ErrorCode.newDefineCode("当前玩家没有跨服数据"));
}
deforce = 0;
CrossArenaManager crossArenaManager = PlayerLogic.getInstance().getCrossArenaManagerData(csPlayer);
deffightTeamInfo = FightUtil.makeCrossPersonData(csPlayer, myteamId, null, crossArenaManager);
}
@ -911,26 +910,22 @@ public class ArenaLogic {
arenaEnemyList.add(robotCrossArenaEnemy.build());
}else{
arenaEnemyList.add(getUserCrossArenaEnemy(groupId,rankIndex,Integer.valueOf(next.getValue()),list.contains(next.getValue())));
arenaEnemyList.add(getUserCrossArenaEnemy(rankIndex,Integer.valueOf(next.getValue()),list.contains(next.getValue())));
}
});
return arenaEnemyList;
}
//获取单个玩家信息(玩家)
public CommonProto.ArenaEnemy getUserCrossArenaEnemy(int crossGroup,int rank,int id,boolean hadProud) {
ArenaOfUser user = null;
CommonProto.ArenaEnemy.Builder userCrossArenaEnemy = null;
try {
user = CrossServiceLogic.getInstance().query(id);
userCrossArenaEnemy = getUserCrossArenaEnemy(crossGroup,user,rank,hadProud);
} catch (UnknownHostException e) {
e.printStackTrace();
return null;
}
return userCrossArenaEnemy.build();
}
//获取单个信息(机器人)
//获取单个玩家信息(玩家)
public CommonProto.ArenaEnemy getUserCrossArenaEnemy(int rank,int id,boolean hadProud) {
CSPlayer csPlayer = CrossServiceLogic.getPlayerByRedis(id);
if (csPlayer == null){
return CommonProto.ArenaEnemy.newBuilder().build();
}
return getUserCrossArenaEnemy(csPlayer,rank,hadProud).build();
}
//获取单个信息(机器人)
public CommonProto.ArenaEnemy.Builder getRobotCrossArenaEnemy(int groupId,int rank,int id){
CrossArenaEnemy info = RedisUtil.getInstence().getMapEntry(RedisKey.CROSS_ARENA_ROBOT_INFO, String.valueOf(groupId), String.valueOf(id), CrossArenaEnemy.class);
if(info==null){
@ -987,31 +982,34 @@ public class ArenaLogic {
ids.add(Integer.parseInt(next.getValue()));
}
});
List<CommonProto.ArenaEnemy> crossArenaEnemyList = ArenaLogic.getInstance().getCrossArenaEnemyList(uid,matchRank,crossGroup);
return crossArenaEnemyList;
return ArenaLogic.getInstance().getCrossArenaEnemyList(uid,matchRank,crossGroup);
}
public CommonProto.ArenaEnemy.Builder getUserCrossArenaEnemy(int crossGroup,ArenaOfUser enemy,int rank,boolean hadProud){
Object get = RedisUtil.getInstence().hget(RedisKey.ARENA_PROUD_COUNT, String.valueOf(enemy.getId()));
public CommonProto.ArenaEnemy.Builder getUserCrossArenaEnemy(CSPlayer csPlayer,int rank,boolean hadProud){
Object get = RedisUtil.getInstence().hget(RedisKey.ARENA_PROUD_COUNT, String.valueOf(csPlayer.getUserId()));
int proudTime = get==null?1:Integer.parseInt((String)get);
int enemyId = enemy.getId();
String serverName = CrossDeathPathLogic.getInstance().getServerNameByDeathPath(enemy.getPlayerManager().getServerId());
String serverName = CrossServiceLogic.simplifyServerName(csPlayer.getServerId());
CrossArenaManager data = PlayerLogic.getInstance().getCrossArenaManagerData(csPlayer);
Integer force = data.getTotalForceByTeam().getOrDefault(TeamEnum.WORLD_TEAM_ARENA_DEFENSE.getTeamId(), 0);
CommonProto.ArenaPersonInfo personInfoBuild = CommonProto.ArenaPersonInfo.newBuilder()
.setUid(enemyId)
.setLevel(enemy.getPlayerManager().getLevel())
.setName(enemy.getPlayerManager().getName())
.setUid(csPlayer.getUserId())
.setLevel(csPlayer.getLevel())
.setName(csPlayer.getName())
.setServername(serverName)
.setTotalForce(enemy.getHeroManager().getTotalForce())
.setUserTitle(enemy.getPlayerManager().getUserTitle())
.setUserMount(enemy.getPlayerManager().getUserMount())
.setGender(enemy.getPlayerManager().getGender())
.setUserSkin(enemy.getPlayerManager().getSkin())
.setPracticeLevel(enemy.getPlayerManager().getPracticeLevel())
.setTotalForce(force)
.setUserTitle(csPlayer.getUserTitle())
.setUserMount(csPlayer.getUserMount())
.setGender(csPlayer.getSex())
.setUserSkin(csPlayer.getSkin())
.setPracticeLevel(csPlayer.getPracticeLevel())
.setRank(rank)
.build();
return CommonProto.ArenaEnemy.newBuilder()
.setPersonInfo(personInfoBuild).setHadProud(hadProud).setWorshipTime(proudTime);
// .setTeam(teamBuild)
}
public CommonProto.ArenaEnemy.Builder getRobotCrossArenaEnemy(int rank,CrossArenaEnemy enemy){
Object get = RedisUtil.getInstence().hget(RedisKey.ARENA_PROUD_COUNT_ROBOT, String.valueOf(rank));
int proudTime = get==null?1:Integer.parseInt((String)get);
@ -1019,7 +1017,7 @@ public class ArenaLogic {
int enemyId = enemy.getEnemyId();
SArenaRobotConfig sArenaRobotConfig = SArenaRobotConfig.getsArenaRobotConfigById(enemyId);
CommonProto.Team teamBuild = CommonProto.Team.newBuilder().addAllHeroTid(sArenaRobotConfig.getHeroList()).build();
String serverName = CrossDeathPathLogic.getInstance().getServerNameByDeathPath(enemy.getServerID());
String serverName = CrossServiceLogic.simplifyServerName(enemy.getServerID());
CommonProto.ArenaPersonInfo personInfoBuild = CommonProto.ArenaPersonInfo.newBuilder()
.setUid(enemy.getEnemyId_UUid())
.setLevel(sArenaRobotConfig.getRobotLevel())

View File

@ -1,47 +1,33 @@
package com.ljsd.jieling.logic.arena;
import com.ljsd.GameApplication;
import com.ljsd.fight.ArenaRecord;
import com.ljsd.jieling.chat.logic.ChatLogic;
import com.ljsd.jieling.config.json.CoreSettings;
import com.ljsd.jieling.core.FunctionIdEnum;
import com.ljsd.jieling.core.GlobalsDef;
import com.ljsd.jieling.db.redis.RedisKey;
import com.ljsd.jieling.db.redis.RedisUtil;
import com.ljsd.jieling.exception.ErrorCode;
import com.ljsd.jieling.exception.ErrorCodeException;
import com.ljsd.jieling.globals.Global;
import com.ljsd.jieling.logic.GlobalDataManaager;
import com.ljsd.jieling.logic.GlobleSystemLogic;
import com.ljsd.jieling.logic.activity.crossService.CrossServiceLogic;
import com.ljsd.jieling.logic.dao.*;
import com.ljsd.jieling.logic.dao.ArenaEnemy;
import com.ljsd.jieling.logic.dao.ArenaManager;
import com.ljsd.jieling.logic.dao.PlayerManager;
import com.ljsd.jieling.logic.dao.cross.CSPlayer;
import com.ljsd.jieling.logic.dao.gm.ArenaOfUser;
import com.ljsd.jieling.logic.family.CrossDeathPathLogic;
import com.ljsd.jieling.logic.hero.HeroLogic;
import com.ljsd.jieling.logic.dao.root.User;
import com.ljsd.jieling.logic.mail.MailLogic;
import com.ljsd.jieling.logic.player.PlayerLogic;
import com.ljsd.jieling.logic.rank.RankContext;
import com.ljsd.jieling.logic.rank.RankEnum;
import com.ljsd.jieling.logic.rank.rankImpl.AbstractRank;
import com.ljsd.jieling.thrift.idl.CrossArenaManager;
import com.ljsd.jieling.util.ConfigurableApplicationContextManager;
import config.*;
import config.SArenaRobotConfig;
import config.SErrorCodeEerverConfig;
import config.SMServerRankConfig;
import config.SMServerRankReward;
import manager.STableManager;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.data.mongodb.core.aggregation.ArrayOperators;
import org.springframework.data.redis.core.ZSetOperations;
import rpc.protocols.CommonProto;
import util.StringUtil;
import util.TimeUtils;
import java.net.UnknownHostException;
import java.util.*;
import java.util.stream.Collectors;
import com.ljsd.jieling.logic.dao.root.User;
/**
*
*/
@ -288,8 +274,8 @@ public class CrossYuxulundaoLogic {
if (csPlayer == null) {
return null;
}
String serverName = CrossServiceLogic.getInstance().getServerNameByUId(enemyId);
CommonProto.ArenaPersonInfo personInfoBuild = CommonProto.ArenaPersonInfo.newBuilder()
String serverName = CrossServiceLogic.simplifyServerName(enemyId);
return CommonProto.ArenaPersonInfo.newBuilder()
.setUid(enemyId)
.setLevel(csPlayer.getLevel())
.setName(csPlayer.getName())
@ -305,7 +291,6 @@ public class CrossYuxulundaoLogic {
.setHead(csPlayer.getHead())
.setHeadFrame(csPlayer.getHeadFrame())
.build();
return personInfoBuild;
}
public static boolean limitOpen(User user) throws Exception {
@ -356,9 +341,9 @@ public class CrossYuxulundaoLogic {
}else{
fightDataProto3 = CommonProto.FightData.newBuilder().build();
}
List<Integer> result = null;//
List<Integer> result = null;
if (arenaRecord.getYxldResult() == null) {
result = new ArrayList<Integer>();
result = new ArrayList<>();
result.add(0);
result.add(0);
result.add(0);
@ -366,13 +351,15 @@ public class CrossYuxulundaoLogic {
result = Arrays.stream(arenaRecord.getYxldResult()).boxed().collect(Collectors.toList());
}
if(isSend){
CSPlayer csPlayer = CrossServiceLogic.getPlayerByRedis(uid);
CSPlayer defPlayer = CrossServiceLogic.getPlayerByRedis(arenaRecord.getDefUid());
String myServerName = CrossDeathPathLogic.getInstance().getServerNameByDeathPath(csPlayer.getServerId());
String defServerName = CrossDeathPathLogic.getInstance().getServerNameByDeathPath(defPlayer.getServerId());
if (csPlayer == null || defPlayer == null){
throw new ErrorCodeException("玩家没有跨服数据");
}
String myServerName = CrossServiceLogic.simplifyServerName(csPlayer.getServerId());
String defServerName = CrossServiceLogic.simplifyServerName(defPlayer.getServerId());
return CommonProto.crossYxldPlayerRecordInfo.newBuilder().setTime(arenaRecord.getCreateTime())
.setMyServerName(myServerName==null?"":myServerName)//我的服务器名称
.setMyServerName(myServerName)//我的服务器名称
.setServerName(defServerName) //对手的服务器名称
.setUid(arenaRecord.getAttackId())
.addAllResult(result)
@ -395,8 +382,8 @@ public class CrossYuxulundaoLogic {
.setHeadFrame(arenaRecord.getHeadFrame())
.setPower(arenaRecord.getAttackForce()).setType(arenaRecord.getYxldBattleType())
.addAllYxldMyForce(arenaRecord.getYxldMyForce())
.addAllYxldDefForce(arenaRecord.getYxldDefForce()).setPracticeLevel(arenaRecord.getPracticeLevel()).build()
;
.addAllYxldDefForce(arenaRecord.getYxldDefForce()).setPracticeLevel(arenaRecord.getPracticeLevel())
.build();
}
}
}

View File

@ -31,7 +31,6 @@ public class CSPlayer {
*
*/
private int headFrame;
//帮会相关的
/**
*
@ -63,7 +62,6 @@ public class CSPlayer {
*/
private int guildId;
/**
*
*/

View File

@ -5,12 +5,8 @@ import com.ljsd.jieling.db.mongo.MongoUtil;
import com.ljsd.jieling.db.mongo.core.CServerInfo;
import com.ljsd.jieling.db.redis.RedisKey;
import com.ljsd.jieling.db.redis.RedisUtil;
import com.ljsd.jieling.logic.activity.crossService.CrossServiceLogic;
import com.ljsd.jieling.logic.dao.GuildInfoCache;
import com.ljsd.jieling.logic.dao.UserManager;
import com.ljsd.jieling.logic.dao.root.GuildCache;
import com.ljsd.jieling.logic.dao.root.GuildInfo;
import com.ljsd.jieling.logic.dao.root.User;
import com.ljsd.jieling.logic.rank.RankContext;
import com.ljsd.jieling.logic.rank.RankEnum;
import com.ljsd.jieling.logic.rank.rankImpl.AbstractRank;
@ -18,17 +14,16 @@ import com.ljsd.jieling.tools.Utils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.data.mongodb.core.MongoTemplate;
import org.springframework.data.redis.core.Cursor;
import org.springframework.data.redis.core.ZSetOperations;
import util.StringUtil;
import util.TimeUtils;
import java.io.IOException;
import java.math.BigDecimal;
import java.net.UnknownHostException;
import java.util.*;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.concurrent.ConcurrentHashMap;
import java.util.regex.Pattern;
/**
* @Author hj
@ -49,26 +44,6 @@ public class CrossDeathPathLogic {
return CrossDeathPathLogic.CrossDeathPathLogicInstance.instance;
}
/**
*
*/
private volatile Map<Integer, CServerInfo> cServerInfoMap = new ConcurrentHashMap<>();
/**
*
*/
public void serverInit() {
try {
MongoTemplate core = MongoUtil.getCoreMongoTemplate();
List<CServerInfo> cServerInfos = core.findAll(CServerInfo.class);
Map<Integer,CServerInfo> serverInfoMap = new HashMap<>(cServerInfos.size());
cServerInfos.forEach(n->serverInfoMap.put(n.getServerId(),n));
cServerInfoMap = serverInfoMap;
} catch (UnknownHostException e) {
LOGGER.error("=========跨服服务器列表获取失败=======:{}",e.getMessage());
}
}
/**
*
* @param redisUtil
@ -85,7 +60,7 @@ public class CrossDeathPathLogic {
/**
*
*/
void addCrossDeathPathRank(DeathPathTask task) throws Exception {
void addCrossDeathPathRank(DeathPathTask task){
long damage = task.getDamage();
int uid = task.getUid();
int pathId = task.getPathId();
@ -123,12 +98,6 @@ public class CrossDeathPathLogic {
redisUtil.incrementZsetScore(totalGuild.getCrossRedisKey(),"",String.valueOf(guildId), decimal.doubleValue(),false);
// 结算标识设置
redisUtil.hset(RedisKey.DEATH_PATH_EVERY_OVER_HASH,String.valueOf(GameApplication.serverId),1);
User user = UserManager.getUserNotCache(uid);
if (user == null){
return;
}
CrossServiceLogic.getInstance().dispose(user);
}
/**
@ -164,27 +133,6 @@ public class CrossDeathPathLogic {
}
}
/**
*
* @param serverId
* @return
*/
public String getServerName(int serverId){
String name = String.valueOf(serverId);
CServerInfo cServerInfo = cServerInfoMap.get(serverId);
if(cServerInfo==null){
serverInit();
cServerInfo = cServerInfoMap.get(serverId);
}
name = cServerInfo!=null?cServerInfo.getName():name;
return name;
}
public String getServerNameByDeathPath(int serverId){
String name = getServerName(serverId);
return "S"+Utils.getIntByString(name);
}
/**
*
* @param groupId

View File

@ -15,6 +15,7 @@ import com.ljsd.jieling.globals.Global;
import com.ljsd.jieling.logic.GlobalDataManaager;
import com.ljsd.jieling.logic.GlobleSystemLogic;
import com.ljsd.jieling.logic.OnlineUserManager;
import com.ljsd.jieling.logic.activity.crossService.CrossServiceLogic;
import com.ljsd.jieling.logic.dao.*;
import com.ljsd.jieling.logic.dao.root.GuildCache;
import com.ljsd.jieling.logic.dao.root.GuildInfo;
@ -36,7 +37,6 @@ import config.SGuildWarRewardConfig;
import manager.STableManager;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.data.redis.core.Cursor;
import org.springframework.data.redis.core.ZSetOperations;
import rpc.protocols.CommonProto;
import rpc.protocols.Family;
@ -46,7 +46,6 @@ import util.TimeUtils;
import java.util.*;
import java.util.concurrent.BlockingQueue;
import java.util.regex.Pattern;
/**
* @author lvxinran
@ -333,7 +332,7 @@ public class DeathPathLogic {
int guildId = Integer.parseInt(next.getValue());
GuildCache crossGuild = CrossDeathPathLogic.getCrossGuild(guildId);
Integer serverId = Optional.ofNullable(CrossDeathPathLogic.getCrossGuild(guildId)).map(GuildCache::getServerId).orElse(0);
String serverName = result?CrossDeathPathLogic.getInstance().getServerNameByDeathPath(serverId):"";
String serverName = result ? CrossServiceLogic.simplifyServerName(serverId):"";
Family.DeathPathInfo info = Family.DeathPathInfo.newBuilder().setGuildName(crossGuild.getName()).setPathId(i).setGid(guildId).setServerName(serverName).build();
response.addInfos(info);
}
@ -509,7 +508,7 @@ public class DeathPathLogic {
GuildInfo guildInfo = GuilidManager.guildInfoMap.get(Integer.parseInt(n.getValue()));
if(guildInfo!=null){
GuildCache crossGuild = CrossDeathPathLogic.getCrossGuild(guildInfo.getId());
String name = CrossDeathPathLogic.getInstance().getServerNameByDeathPath(crossGuild.getServerId());
String name = CrossServiceLogic.simplifyServerName(crossGuild.getServerId());
String serverName = getGroupId()>0?name:"";
Family.DeathPathInfo info = Family.DeathPathInfo.newBuilder()
.setGuildName(guildInfo.getName()).setGid(currFirstGuildId)

View File

@ -1225,11 +1225,6 @@ public class HeroLogic {
if (teamId == GlobalsDef.FORMATION_NORMAL) {
Poster.getPoster().dispatchEvent(new UserMainTeamForceEvent(iSession.getUid()));
}
// 跨服 更新编队信息
if (teamId == GlobalsDef.WORLD_TEAM_ARENA_DEFENSE) {
CrossServiceLogic.getInstance().dispose(user);
}
//跨服 玉虚论道
if (teamId == GlobalsDef.CROSS_YU_XU_LUN_DAO_ONE || teamId == GlobalsDef.CROSS_YU_XU_LUN_DAO_TWO || teamId == GlobalsDef.CROSS_YU_XU_LUN_DAO_THREE) {
CrossServiceLogic.getInstance().saveBasicPlayerToRedis(user);

View File

@ -27,8 +27,6 @@ import com.ljsd.jieling.logic.activity.event.UserMainTeamForceEvent;
import com.ljsd.jieling.logic.activity.eventhandler.UserForceUpEventHandler;
import com.ljsd.jieling.logic.dao.*;
import com.ljsd.jieling.logic.dao.cross.CSPlayer;
import com.ljsd.jieling.logic.dao.gm.ArenaOfHero;
import com.ljsd.jieling.logic.dao.gm.ArenaOfUser;
import com.ljsd.jieling.logic.dao.root.GuildCache;
import com.ljsd.jieling.logic.dao.root.User;
import com.ljsd.jieling.logic.family.CrossDeathPathLogic;
@ -48,14 +46,14 @@ import com.ljsd.jieling.network.session.ISession;
import com.ljsd.jieling.thrift.idl.CrossArenaManager;
import com.ljsd.jieling.thrift.idl.RPCRequestIFace;
import com.ljsd.jieling.thrift.pool.ClientAdapterPo;
import rpc.protocols.CommonProto;
import rpc.protocols.MessageTypeProto;
import rpc.protocols.PlayerInfoProto;
import com.ljsd.jieling.util.*;
import config.*;
import manager.STableManager;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import rpc.protocols.CommonProto;
import rpc.protocols.MessageTypeProto;
import rpc.protocols.PlayerInfoProto;
import util.MathUtils;
import util.TimeUtils;
@ -693,8 +691,6 @@ public class PlayerLogic {
}
//PlayerInfoProto.GetPlayerCrossYxldOneTeamInfoResponse.Builder playerTeamInfo = PlayerInfoProto.GetPlayerCrossYxldOneTeamInfoResponse.newBuilder().setTeamInfo(oneInfo);
return oneInfo.build();
}
//玉虚论道
private CommonProto.TeamOneInfo.Builder getYuxuRobotOneInfo(SArenaRobotConfig sArenaRobotConfig,CrossArenaEnemy info,List<Integer> crossTeamId){
@ -760,109 +756,6 @@ public class PlayerLogic {
//oneInfo.setTeam(teamInfo);
return oneInfo;
}
//跨服三队伍
public CommonProto.TeamOneInfo.Builder getUserTeamOneInfo(int uid,List<Integer> crossTeamId) throws Exception {
User user = UserManager.getUser(uid);
CommonProto.TeamOneInfo.Builder oneInfo = CBean2Proto.getTeamOneInfo(user);
TeamPosManager teamPosManager = user.getTeamPosManager();
for(int teamId:crossTeamId){
CommonProto.TeamOneTeamInfo.Builder teamInfo = CommonProto.TeamOneTeamInfo.newBuilder();
// 总战力
teamInfo.setTotalForce(HeroLogic.getInstance().calTeamTotalForce(user,teamId,false));
if(teamId==GlobalsDef.TASUILINGXIAO_CHALLENGE){
Map<Integer, TaSuiHero> taSuiHeroMap = user.getHeroManager().getTaSuiHeroMap();
for(Map.Entry<Integer,TaSuiHero> entry:taSuiHeroMap.entrySet()){
TaSuiHero hero = entry.getValue();
CommonProto.TeamSimpleInfo info = CommonProto.TeamSimpleInfo.newBuilder().setHeroTid(hero.getTempId()).setLevel(hero.getLeve()).setStar(hero.getStar()).setPosition(entry.getKey()).build();
teamInfo.addTeam(info);
}
teamInfo.setTotalForce(user.getHeroManager().getTaSuiLingXiaoRankForce());
}else{
if(teamPosManager.getTeamPosForHero().containsKey(teamId)){
// 添加队伍信息
List<TeamPosHeroInfo> heroInfos = teamPosManager.getTeamPosForHero().get(teamId);
for (TeamPosHeroInfo heroInfo:heroInfos) {
Hero hero = user.getHeroManager().getHero(heroInfo.getHeroId());
teamInfo.addTeam(CBean2Proto.getSimpleTeamInfoByHero(user, hero,heroInfo.getPosition()));
}
// 紫府神印
List<String> collect = heroInfos.stream().map(TeamPosHeroInfo::getHeroId).collect(Collectors.toList());
teamInfo.addAllSealShow(CBean2Proto.getPurpleSealShow(user,collect));
}
}
//加入灵兽信息
PokemonManager pokemonManager = user.getPokemonManager();
if(!pokemonManager.getPokemonTeamMap().isEmpty()){
for(Map.Entry<Integer,String> entry:pokemonManager.getPokemonTeamMap().entrySet()){
Pokemon pokemon = pokemonManager.getPokemonMap().get(entry.getValue());
if(pokemon==null){
continue;
}
teamInfo.addPokemonInfos(CBean2Proto.getSimpleTeamInfoByPokeMon(pokemon,entry.getKey()));
}
}
int guildId = user.getPlayerInfoManager().getGuildId();
if(guildId!=0){
if(GuilidManager.guildInfoMap.containsKey(guildId)){
String name = GuilidManager.guildInfoMap.get(guildId).getName();
oneInfo.setGuildName(name);
}
}
if(teamId==GlobalsDef.CROSS_YU_XU_LUN_DAO_ONE ||teamId==GlobalsDef.CROSS_YU_XU_LUN_DAO_TWO || teamId==GlobalsDef.CROSS_YU_XU_LUN_DAO_THREE ){
oneInfo.addCrossTeam(teamInfo);
}else{
oneInfo.setTeam(teamInfo);
}
}
return oneInfo;
}
//获取跨服玩家信息
public PlayerInfoProto.GetPlayerOneTeamInfoResponse getCrossOneTeamInfo(int id,int teamId) throws Exception {
ArenaOfUser query = CrossServiceLogic.getInstance().query(id);
if(query==null){
throw new ErrorCodeException(ErrorCode.SERVER_SELF_DEFINE);
}
CommonProto.TeamOneInfo.Builder builder = CommonProto.TeamOneInfo.newBuilder()
.setHead(query.getPlayerManager().getHead())
.setHeadFrame(query.getPlayerManager().getHeadFrame())
.setUserTitle(query.getPlayerManager().getUserTitle())
.setLevel(query.getPlayerManager().getLevel())
.setName(query.getPlayerManager().getName())
.setGuildName(query.getPlayerManager().getGuildName())
.setPracticeLevel(query.getPlayerManager().getPracticeLevel())
.setUid(id);
CommonProto.TeamOneTeamInfo.Builder teamOneTeamInfo = CommonProto.TeamOneTeamInfo.newBuilder();
List<TeamPosHeroInfo> teamPosHeroInfos = query.getHeroManager().getTeams().get(teamId);
if(teamPosHeroInfos!=null){
for (TeamPosHeroInfo heroInfo:teamPosHeroInfos) {
ArenaOfHero hero = query.getHeroManager().getHeros().get(heroInfo.getHeroId());
teamOneTeamInfo.addTeam(CBean2Proto.getCrossSimpleHero(hero,heroInfo.getPosition()));
}
}
for(Map.Entry<Integer,Pokemon> entry:query.getPokemons().entrySet()){
teamOneTeamInfo.addPokemonInfos(CBean2Proto.getSimpleTeamInfoByPokeMon(entry.getValue(), entry.getKey()));
}
LOGGER.info("=====================跨服获取阵容:{}",teamId);
Integer integer = query.getHeroManager().getTotalForceByTeam().getOrDefault(teamId,0);
teamOneTeamInfo.setTotalForce(integer);
for(Map.Entry<Integer, PurpleMansionSeal> entry:query.getSeals().entrySet()){
PurpleMansionSeal value = entry.getValue();
ArenaOfHero arenaOfHero = query.getHeroManager().getHeros().get(value.getSubId());
if(value.getState()==0){
continue;
}
teamOneTeamInfo.addSealShow(CommonProto.PurpleSealShowInfo.newBuilder().setType(value.getType()).setId(value.getSealId()).setHeroTId(arenaOfHero==null?0:arenaOfHero.getTemplateId()));
}
builder.setTeam(teamOneTeamInfo.build());
PlayerInfoProto.GetPlayerOneTeamInfoResponse.Builder playerTeamInfo = PlayerInfoProto.GetPlayerOneTeamInfoResponse.newBuilder().setTeamInfo(builder.build());
return playerTeamInfo.build();
}
//获取跨服玩家信息
public CommonProto.TeamOneInfo getCrossYxldMyTeamInfo(User user,List<Integer> team) throws Exception{
@ -871,7 +764,7 @@ public class PlayerLogic {
throw new ErrorCodeException(ErrorCode.SERVER_SELF_DEFINE);
}
//基本信息从redis中拿 剩下的队伍 属性 数据量大的数据rpc调用
String serverName = CrossDeathPathLogic.getInstance().getServerNameByDeathPath(csPlayer.getServerId());
String serverName = CrossServiceLogic.simplifyServerName(csPlayer.getServerId());
CommonProto.TeamOneInfo.Builder builder = CommonProto.TeamOneInfo.newBuilder()
.setHead(csPlayer.getHead())
.setHeadFrame(csPlayer.getHeadFrame())
@ -940,7 +833,7 @@ public class PlayerLogic {
throw new ErrorCodeException(ErrorCode.SERVER_SELF_DEFINE);
}
//基本信息从redis中拿 剩下的队伍 属性 数据量大的数据rpc调用
String serverName = CrossDeathPathLogic.getInstance().getServerNameByDeathPath(csPlayer.getServerId());
String serverName = CrossServiceLogic.simplifyServerName(csPlayer.getServerId());
GuildCache mapEntry = CrossDeathPathLogic.getCrossGuild(csPlayer.getGuildId());
CommonProto.TeamOneInfo.Builder builder = CommonProto.TeamOneInfo.newBuilder()
.setHead(csPlayer.getHead())
@ -1003,7 +896,7 @@ public class PlayerLogic {
}
return builder.build();
}
public CrossArenaManager getCrossArenaManagerData(CSPlayer csPlayer )throws Exception{
public CrossArenaManager getCrossArenaManagerData(CSPlayer csPlayer){
String rpcString = RedisUtil.getInstence().getObject(RedisKey.LOGIC_SERVER_INFO, String.valueOf(csPlayer.getServerId()), String.class, -1);
String ip = rpcString.split(":")[0];
String port = rpcString.split(":")[3];
@ -1040,7 +933,7 @@ public class PlayerLogic {
throw new ErrorCodeException(ErrorCode.SERVER_SELF_DEFINE);
}
//基本信息从redis中拿 剩下的队伍 属性 数据量大的数据rpc调用
String serverName = CrossDeathPathLogic.getInstance().getServerNameByDeathPath(csPlayer.getServerId());
String serverName = CrossServiceLogic.simplifyServerName(csPlayer.getServerId());
CommonProto.TeamOneInfo.Builder builder = CommonProto.TeamOneInfo.newBuilder()
.setHead(csPlayer.getHead())
.setHeadFrame(csPlayer.getHeadFrame())
@ -1118,7 +1011,7 @@ public class PlayerLogic {
throw new ErrorCodeException(ErrorCode.SERVER_SELF_DEFINE);
}
//基本信息从redis中拿 剩下的队伍 属性 数据量大的数据rpc调用
String serverName = CrossDeathPathLogic.getInstance().getServerNameByDeathPath(csPlayer.getServerId());
String serverName = CrossServiceLogic.simplifyServerName(csPlayer.getServerId());
GuildCache mapEntry = CrossDeathPathLogic.getCrossGuild(csPlayer.getGuildId());
CommonProto.TeamOneInfo.Builder builder = CommonProto.TeamOneInfo.newBuilder()
@ -1132,9 +1025,11 @@ public class PlayerLogic {
.setUid(id).setCrossTeamScore(csPlayer.getCrossYuxulundaoNewScore())
.setServerName(serverName);
//如果是本服玩家 直接本服调用数据
CoreSettings coreSettings = ConfigurableApplicationContextManager.getBean(CoreSettings.class);
if(GameApplication.serverId == csPlayer.getServerId()){
User user = UserManager.getUser(id);
User user = UserManager.getUserNotCache(id);
if (user == null){
throw new ErrorCodeException(ErrorCode.USE_NOT_EXIT);
}
return PlayerLogic.getInstance().getCrossYxldMyTeamInfoNew(user, team);
}
CrossArenaManager crossArenaManager = getCrossArenaManagerData(csPlayer) ;
@ -1192,52 +1087,6 @@ public class PlayerLogic {
return builder.build();
}
public PlayerInfoProto.GetPlayerOneTeamInfoResponse getCrossOneTeamInfo(int id,List<Integer> crossTeamId) throws Exception {
ArenaOfUser query = CrossServiceLogic.getInstance().query(id);
if(query==null){
throw new ErrorCodeException(ErrorCode.SERVER_SELF_DEFINE);
}
CommonProto.TeamOneInfo.Builder builder = CommonProto.TeamOneInfo.newBuilder()
.setHead(query.getPlayerManager().getHead())
.setHeadFrame(query.getPlayerManager().getHeadFrame())
.setUserTitle(query.getPlayerManager().getUserTitle())
.setLevel(query.getPlayerManager().getLevel())
.setName(query.getPlayerManager().getName())
.setGuildName(query.getPlayerManager().getGuildName())
.setPracticeLevel(query.getPlayerManager().getPracticeLevel())
.setUid(id);
for(int teamId: crossTeamId){
CommonProto.TeamOneTeamInfo.Builder teamOneTeamInfo = CommonProto.TeamOneTeamInfo.newBuilder();
List<TeamPosHeroInfo> teamPosHeroInfos = query.getHeroManager().getTeams().get(teamId);
if(teamPosHeroInfos!=null){
for (TeamPosHeroInfo heroInfo:teamPosHeroInfos) {
ArenaOfHero hero = query.getHeroManager().getHeros().get(heroInfo.getHeroId());
teamOneTeamInfo.addTeam(CBean2Proto.getCrossSimpleHero(hero,heroInfo.getPosition()));
}
}
for(Map.Entry<Integer,Pokemon> entry:query.getPokemons().entrySet()){
teamOneTeamInfo.addPokemonInfos(CBean2Proto.getSimpleTeamInfoByPokeMon(entry.getValue(), entry.getKey()));
}
LOGGER.info("=====================跨服获取阵容:{}",teamId);
Integer integer = query.getHeroManager().getTotalForceByTeam().getOrDefault(teamId,0);
teamOneTeamInfo.setTotalForce(integer);
for(Map.Entry<Integer, PurpleMansionSeal> entry:query.getSeals().entrySet()){
PurpleMansionSeal value = entry.getValue();
ArenaOfHero arenaOfHero = query.getHeroManager().getHeros().get(value.getSubId());
if(value.getState()==0){
continue;
}
teamOneTeamInfo.addSealShow(CommonProto.PurpleSealShowInfo.newBuilder().setType(value.getType()).setId(value.getSealId()).setHeroTId(arenaOfHero==null?0:arenaOfHero.getTemplateId()));
}
//builder.setTeam(teamOneTeamInfo.build());
builder.addCrossTeam(teamOneTeamInfo.build());
}
PlayerInfoProto.GetPlayerOneTeamInfoResponse.Builder playerTeamInfo = PlayerInfoProto.GetPlayerOneTeamInfoResponse.newBuilder().setTeamInfo(builder.build());
return playerTeamInfo.build();
}
public void viewRobotHeroInfo(ISession session, SArenaRobotConfig sArenaRobotConfig,String robotHeroId,int teamId) throws Exception {
PlayerInfoProto.ViewHeroInfoResponse.Builder builder = PlayerInfoProto.ViewHeroInfoResponse.newBuilder();
@ -1310,10 +1159,13 @@ public class PlayerLogic {
*/
public PlayerInfoProto.ViewHeroInfoResponse viewCrossHeroInfo(int uid,String heroId,int teamId) throws Exception {
CSPlayer csPlayer = CrossServiceLogic.getPlayerByRedis(uid);
if (csPlayer == null){
throw new ErrorCodeException(ErrorCode.newDefineCode("该玩家没有跨服数据"));
}
//其他服玩家rpc 数据调用
CrossArenaManager crossArenaManager = null;
if(GameApplication.serverId == csPlayer.getServerId()){
return viewCrossHeroInfoMyserver(uid,heroId,teamId);
return viewCrossHeroInfoMyserver(uid,heroId,teamId);
}else{
crossArenaManager = PlayerLogic.getInstance().getCrossArenaManagerData(csPlayer);
}
@ -1429,66 +1281,6 @@ public class PlayerLogic {
builder.setTreeLevel(user.getPlayerInfoManager().getTreeLevel());
return builder.build();
}
public PlayerInfoProto.ViewHeroInfoResponse viewCrossHeroInfo1(int uid,String heroId,int teamId) throws Exception{
ArenaOfUser query = CrossServiceLogic.getInstance().query(uid);
Map<String, ArenaOfHero> heroes = query.getHeroManager().getHeros();
ArenaOfHero hero = heroes.get(heroId);
if(hero == null){
throw new ErrorCodeException(ErrorCode.newDefineCode("hero no"));
}
CommonProto.Hero.Builder heroBuilder = CommonProto.Hero.newBuilder().setLevel(hero.getLevel()).setEspecialEquipLevel(hero.getEspecialEquipLevel()).setStar(hero.getStar()).setId(hero.getId()).setHeroId(hero.getTemplateId()).setBreakId(hero.getBreakId()).setStarBreakId(hero.getStarBreakId());
PlayerInfoProto.ViewHeroInfoResponse.Builder builder = PlayerInfoProto.ViewHeroInfoResponse.newBuilder();
Map<Integer, Long> heroNotBufferAttribute = hero.getAttributeMapByTeam().getOrDefault(teamId,new HashMap<>());
for(Map.Entry<Integer,Long> item : heroNotBufferAttribute.entrySet()){
int id = item.getKey();
int values = item.getValue().intValue();
if (id == 53 || id == 57 || id == 58){
values = item.getValue().intValue()-10000;
}
builder.addSpecialEffects(CommonProto.SpecialEffects.newBuilder().setPropertyId(id).setPropertyValue(values).build());
}
Map<String, PropertyItem> jewels = query.getHeroManager().getJewels();
for(String equipId : hero.getJewelInfo()){
heroBuilder.addJewels(equipId);
builder.addEquip(CBean2Proto.getEquipProto(jewels.get(equipId)));
}
// 装备
for(int equipId : hero.getEquipByPositionMap().values()){
heroBuilder.addEquipIdList(equipId);
builder.addEquip(CBean2Proto.getEquipProto(equipId));
}
// 法宝
Map<Integer, Integer> soulEquipByPositionMap = hero.getSoulEquipByPositionMap();
for(Map.Entry<Integer,Integer> entry: soulEquipByPositionMap.entrySet()){
heroBuilder.addSoulPos(CommonProto.SoulPos.newBuilder().setEquipId(entry.getValue()).setPosition(entry.getKey()));
}
// 皮肤
heroBuilder.setSkinId(hero.getSkin());
// 英雄技能
int profession = SCHero.getsCHero().get(hero.getTemplateId()).getProfession();
int skill = query.getGuildSkill().getOrDefault(profession, 0);
builder.setGuildSkill(skill);
// 战力
builder.setForce(HeroLogic.getInstance().calForce(heroNotBufferAttribute));
builder.setHero(heroBuilder);
return builder.build();
}
/**
*
* @param id
* @param value
* @return
*/
private CommonProto.SpecialEffects crossPropertyHandle(int id,int value){
int values = value;
if (id == 53 || id == 57 || id == 58){
values = value-10000;
}
return CommonProto.SpecialEffects.newBuilder().setPropertyId(id).setPropertyValue(values).build();
}
public void takeSevenScoreReward(ISession iSession) throws Exception {
User user = UserManager.getUser(iSession.getUid());

View File

@ -1,10 +1,8 @@
package com.ljsd.jieling.logic.rank;
import com.ljsd.jieling.db.redis.RedisKey;
import com.ljsd.jieling.db.redis.RedisUtil;
import com.ljsd.jieling.logic.GlobleSystemLogic;
import com.ljsd.jieling.logic.dao.GuilidManager;
import com.ljsd.jieling.logic.dao.root.GuildCache;
import com.ljsd.jieling.logic.dao.root.GuildInfo;
import com.ljsd.jieling.logic.family.CrossDeathPathLogic;
import com.ljsd.jieling.logic.rank.rankImpl.AbstractRank;
@ -59,20 +57,11 @@ public class CrossRankManager {
int crossGroup = GlobleSystemLogic.getInstence().getCrossGroup();
if(crossGroup != -1){
AbstractRank rank = RankContext.getRankEnum(type);
String key = RedisUtil.getInstence().getKey(rank.getCrossRedisKey(),"",false);
Map<Integer, GuildCache> cacheMap = RedisUtil.getInstence().getMapValues(RedisKey.FAMILY_INFO, "", Integer.class, GuildCache.class);
// 获取本服排行榜数据
Set<ZSetOperations.TypedTuple<String>> range = RedisUtil.getInstence().getZsetreverseRangeWithScores(rank.getRedisKey(), "", 0, 100, true);
for (ZSetOperations.TypedTuple<String> tuple : range) {
if (tuple.getValue().length() == 8){
rank.crossUserCache(Integer.parseInt(tuple.getValue()));
}else {
GuildCache cache = cacheMap.get(Integer.valueOf(tuple.getValue()));
if (cache != null && cache.getLeaderUId() != 0){
rank.crossUserCache(cache.getLeaderUId());
}
}
RedisUtil.getInstence().zsetAddOne(key,tuple.getValue(),tuple.getScore());
}
// 批量放入跨服排行榜
String key = RedisUtil.getInstence().getKey(rank.getCrossRedisKey(),"",false);
RedisUtil.getInstence().zsetAddAall(key,range);
LOGGER.info("=====================跨服排行榜处理========,key:{}",key);
}
}

View File

@ -1,13 +1,12 @@
package com.ljsd.jieling.logic.rank.rankImpl;
import com.ljsd.GameApplication;
import com.ljsd.jieling.db.redis.RedisKey;
import com.ljsd.jieling.db.redis.RedisUtil;
import com.ljsd.jieling.logic.GlobleSystemLogic;
import com.ljsd.jieling.logic.activity.crossService.CrossServiceLogic;
import com.ljsd.jieling.logic.dao.TeamEnum;
import com.ljsd.jieling.logic.dao.UserManager;
import com.ljsd.jieling.logic.dao.cross.CSPlayer;
import com.ljsd.jieling.logic.dao.gm.ArenaOfUser;
import com.ljsd.jieling.logic.dao.root.GuildCache;
import com.ljsd.jieling.logic.dao.root.User;
import com.ljsd.jieling.logic.family.CrossDeathPathLogic;
@ -45,6 +44,7 @@ public abstract class AbstractRank implements IRank {
* @return
* @throws Exception
*/
@Override
public PlayerInfoProto.RankResponse getRank(int uid, String rkey, int page, int rankEndLine) throws Exception {
if(rankEndLine==-1){
rankEndLine = 100;
@ -93,30 +93,14 @@ public abstract class AbstractRank implements IRank {
return allUserResponse.build();
}
/**
*
* @param uid
* @throws Exception
*/
public void crossUserCache(int uid){
try {
User user = UserManager.getUserNotCache(uid);
if (user == null){
return;
}
CrossServiceLogic.getInstance().dispose(user);
} catch (Exception e) {
LOGGER.error("================跨服排行榜缓存玩家数据报错=========,uid:{},error:{}",uid,e.getMessage());
}
}
/**
*
* @param uid id
* @param rkey redis key
* @param data getScore
*/
public void addRank(int uid,String rkey,double... data){
@Override
public void addRank(int uid, String rkey, double... data){
String key = RedisKey.getKey(redisKey,rkey,false);
RedisUtil.getInstence().zsetAddOne(key,String.valueOf(uid), getScore(data));
}
@ -186,7 +170,7 @@ public abstract class AbstractRank implements IRank {
* @return
* @throws Exception
*/
public CommonProto.UserRank.Builder getFirstByCross(String rKey) throws Exception {
public CommonProto.UserRank.Builder getFirstByCross(String rKey){
Set<ZSetOperations.TypedTuple<String>> rankByKey =
RedisUtil.getInstence().getZsetreverseRangeWithScores(getCrossRedisKey(),rKey, 0, 0, false);
CommonProto.UserRank.Builder builder = CommonProto.UserRank.newBuilder();
@ -194,8 +178,8 @@ public abstract class AbstractRank implements IRank {
return builder;
}
ZSetOperations.TypedTuple<String> data = rankByKey.iterator().next();
ArenaOfUser everyUser = CrossServiceLogic.getInstance().query(Integer.parseInt(data.getValue()));
if (everyUser == null){
CSPlayer csPlayer = CrossServiceLogic.getPlayerByRedis(Integer.parseInt(data.getValue()));
if (csPlayer == null){
return builder;
}
CommonProto.RankInfo.Builder everyRankInfo = CommonProto.RankInfo.newBuilder()
@ -203,7 +187,7 @@ public abstract class AbstractRank implements IRank {
.setParam1(getParam1(data.getScore()))
.setParam2(getParam2(data.getScore()))
.setParam3(getParam3(data.getScore()));
builder = getCrossOneUserRank(everyUser,everyRankInfo);
builder = getCrossOneUserRank(csPlayer,everyRankInfo);
return builder;
}
@ -245,23 +229,7 @@ public abstract class AbstractRank implements IRank {
return builder;
}
protected void getCrossOptional1(int index,ZSetOperations.TypedTuple<String> data,PlayerInfoProto.RankResponse.Builder builder) throws Exception {
CSPlayer csPlayer = CrossServiceLogic.getPlayerByRedis(Integer.parseInt(data.getValue()));
if (csPlayer == null){
LOGGER.error("改玩家没有跨服数据...:{}",data.getValue());
return;
}
CommonProto.RankInfo.Builder everyRankInfo = CommonProto.RankInfo.newBuilder()
.setRank(index)
.setParam1(getParam1(data.getScore()))
.setParam2(getParam2(data.getScore()))
.setParam3(getParam3(data.getScore()));
CommonProto.UserRank.Builder oneUserRank = getCrossOneUserRank(csPlayer, everyRankInfo);
builder.addRanks(oneUserRank);
}
protected void getCrossOptional(int index,ZSetOperations.TypedTuple<String> data,PlayerInfoProto.RankResponse.Builder builder) throws Exception {
//ArenaOfUser everyUser = CrossServiceLogic.getInstance().query(Integer.parseInt(data.getValue()));
CSPlayer csPlayer = CrossServiceLogic.getPlayerByRedis(Integer.parseInt(data.getValue()));
if (csPlayer == null){
LOGGER.error("该玩家没有跨服数据...:{}",data.getValue());
@ -293,14 +261,15 @@ public abstract class AbstractRank implements IRank {
}
public CommonProto.UserRank.Builder getCrossOneUserRank(CSPlayer csPlayer, CommonProto.RankInfo.Builder everyRankInfo){
String serverName = CrossDeathPathLogic.getInstance().getServerNameByDeathPath(csPlayer.getServerId());
String serverName = CrossServiceLogic.simplifyServerName(csPlayer.getServerId());
GuildCache mapEntry = CrossDeathPathLogic.getCrossGuild(csPlayer.getGuildId());
long force = CrossServiceLogic.getCrossTeamForce(csPlayer.getUserId(), TeamEnum.FORMATION_NORMAL.getTeamId());
return CommonProto.UserRank.newBuilder()
.setUid(csPlayer.getUserId())
.setLevel(csPlayer.getLevel())
.setUserName(csPlayer.getName())
.setRankInfo(everyRankInfo)
.setForce(0) //TODO
.setForce((int) force)
.setSex(csPlayer.getSex())
.setHead(csPlayer.getHead())
.setGuildName(Optional.ofNullable(mapEntry).map(GuildCache::getName).orElse(""))
@ -309,28 +278,8 @@ public abstract class AbstractRank implements IRank {
.setUserSkin(csPlayer.getSkin())
.setUserTitle(csPlayer.getUserTitle())
.setPracticeLevel(csPlayer.getPracticeLevel())
.setServerName(serverName==null?"":serverName)
.setCrossScore(csPlayer.getCrossYuxulundaoNewScore());
}
public CommonProto.UserRank.Builder getCrossOneUserRank(ArenaOfUser query, CommonProto.RankInfo.Builder everyRankInfo){
String serverName = CrossServiceLogic.getInstance().getServerNameByUId(query.getId());
GuildCache mapEntry = CrossDeathPathLogic.getCrossGuild(query.getPlayerManager().getGuildId());
return CommonProto.UserRank.newBuilder()
.setUid(query.getId())
.setLevel(query.getPlayerManager().getLevel())
.setUserName(query.getPlayerManager().getName())
.setRankInfo(everyRankInfo)
.setForce(query.getPlayerManager().getMaxFore())
.setSex(query.getPlayerManager().getGender())
.setHead(query.getPlayerManager().getHead())
.setGuildName(Optional.ofNullable(mapEntry).map(GuildCache::getName).orElse(""))
.setHeadFrame(query.getPlayerManager().getHeadFrame())
.setUserMount(query.getPlayerManager().getUserMount())
.setUserSkin(query.getPlayerManager().getSkin())
.setUserTitle(query.getPlayerManager().getUserTitle())
.setPracticeLevel(query.getPlayerManager().getPracticeLevel())
.setServerName(serverName)
.setCrossScore(query.getPlayerManager().getCrossYuxulundaoNewScore());
.setCrossScore(csPlayer.getCrossYuxulundaoNewScore());
}
protected void getMyInfo(User user,String rkey,PlayerInfoProto.RankResponse.Builder allUserResponse){
@ -416,7 +365,6 @@ public abstract class AbstractRank implements IRank {
return;
}
try {
// Set<String> dimKey = RedisUtil.getInstence().getDimKey(RedisKey.getKey(redisKey, rkey, false) + "*", 200);
String[] dimKey = new String[configMap.size()];
int index = 0;
for (Integer integer : configMap.keySet()) {

View File

@ -6,17 +6,15 @@ import com.ljsd.jieling.db.redis.RedisUtil;
import com.ljsd.jieling.logic.GlobleSystemLogic;
import com.ljsd.jieling.logic.activity.crossService.CrossServiceLogic;
import com.ljsd.jieling.logic.dao.CrossArenaEnemy;
import com.ljsd.jieling.logic.dao.TeamEnum;
import com.ljsd.jieling.logic.dao.UserManager;
import com.ljsd.jieling.logic.dao.gm.ArenaOfUser;
import com.ljsd.jieling.logic.dao.cross.CSPlayer;
import com.ljsd.jieling.logic.dao.root.User;
import com.ljsd.jieling.logic.family.CrossDeathPathLogic;
import com.ljsd.jieling.logic.hero.HeroLogic;
import config.SArenaRobotConfig;
import org.springframework.data.redis.core.ZSetOperations;
import rpc.protocols.CommonProto;
import rpc.protocols.PlayerInfoProto;
import java.net.UnknownHostException;
import java.util.Set;
/**
@ -63,7 +61,7 @@ public class CrossArenaRank extends AbstractRank {
if(mapEntry==null){
return;
}
String serverName = CrossDeathPathLogic.getInstance().getServerNameByDeathPath(mapEntry.getServerID());
String serverName = CrossServiceLogic.simplifyServerName(mapEntry.getServerID());
everyRankInfo.setParam1(mapEntry.getTotalForce());
CommonProto.UserRank.Builder everyRank = CommonProto.UserRank.newBuilder()
.setUid(mapEntry.getEnemyId_UUid())
@ -75,10 +73,14 @@ public class CrossArenaRank extends AbstractRank {
.setSex(0);
builder.addRanks(everyRank);
}else{
ArenaOfUser query = CrossServiceLogic.getInstance().query(Integer.valueOf(data.getValue()));
CSPlayer query = CrossServiceLogic.getPlayerByRedis(Integer.valueOf(data.getValue()));
if (query == null){
return;
}
long teamForce = CrossServiceLogic.getCrossTeamForce(query.getUserId(), TeamEnum.WORLD_TEAM_ARENA_DEFENSE.getTeamId());
CommonProto.RankInfo.Builder everyRankInfo = CommonProto.RankInfo.newBuilder()
.setRank(index)
.setParam1(query.getHeroManager().getTotalForce())
.setParam1(teamForce)
.setParam2(getParam2(data.getScore()))
.setParam3(getParam3(data.getScore()));
CommonProto.UserRank.Builder everyRank = getCrossOneUserRank(query,everyRankInfo);
@ -86,6 +88,14 @@ public class CrossArenaRank extends AbstractRank {
}
}
@Override
public CommonProto.UserRank.Builder getCrossOneUserRank(CSPlayer csPlayer, CommonProto.RankInfo.Builder everyRankInfo){
CommonProto.UserRank.Builder oneUserRank = super.getCrossOneUserRank(csPlayer, everyRankInfo);
long force = CrossServiceLogic.getCrossTeamForce(csPlayer.getUserId(), TeamEnum.WORLD_TEAM_ARENA_DEFENSE.getTeamId());
oneUserRank.setForce((int) force);
return oneUserRank;
}
@Override
public void getCrossMyInfo(User user,String rkey,PlayerInfoProto.RankResponse.Builder allUserResponse){
String crossGroup = String.valueOf(GlobleSystemLogic.getInstence().getCrossGroup());

View File

@ -1,10 +1,8 @@
package com.ljsd.jieling.logic.rank.rankImpl;
import com.ljsd.jieling.db.redis.RedisKey;
import com.ljsd.jieling.db.redis.RedisUtil;
import com.ljsd.jieling.logic.activity.crossService.CrossServiceLogic;
import com.ljsd.jieling.logic.dao.UserManager;
import com.ljsd.jieling.logic.dao.gm.ArenaOfUser;
import com.ljsd.jieling.logic.dao.cross.CSPlayer;
import com.ljsd.jieling.logic.dao.root.GuildCache;
import com.ljsd.jieling.logic.dao.root.User;
import com.ljsd.jieling.logic.family.CrossDeathPathLogic;
@ -12,8 +10,6 @@ import org.springframework.data.redis.core.ZSetOperations;
import rpc.protocols.CommonProto;
import rpc.protocols.PlayerInfoProto;
import java.net.UnknownHostException;
import java.util.Optional;
import java.util.Set;
/**
@ -28,42 +24,25 @@ public class CrossGuildForceRank extends GuildForceRank {
@Override
protected void getCrossOptional(int index, ZSetOperations.TypedTuple<String> data, PlayerInfoProto.RankResponse.Builder builder) throws Exception {
GuildCache mapEntry = CrossDeathPathLogic.getCrossGuild(Integer.parseInt(data.getValue()));
CommonProto.RankInfo.Builder everyRankInfo = CommonProto.RankInfo.newBuilder()
.setRank(index)
.setParam1(getParam1(data.getScore()))
.setParam2(getParam2(data.getScore()))
.setParam3(getParam3(data.getScore()));
ArenaOfUser query = CrossServiceLogic.getInstance().query(mapEntry.getLeaderUId());
if (query == null){
GuildCache mapEntry = CrossDeathPathLogic.getCrossGuild(Integer.parseInt(data.getValue()));
if (mapEntry == null){
return;
}
String name = Optional.of(mapEntry).map(GuildCache::getName).orElse("");
CommonProto.UserRank.Builder oneUserRank = getCrossOneUserRank(query,name,everyRankInfo);
CSPlayer csPlayer = CrossServiceLogic.getPlayerByRedis(mapEntry.getLeaderUId());
if (csPlayer == null){
return;
}
CommonProto.UserRank.Builder oneUserRank = getCrossOneUserRank(csPlayer,everyRankInfo);
builder.addRanks(oneUserRank);
}
public CommonProto.UserRank.Builder getCrossOneUserRank(ArenaOfUser query,String guildName,CommonProto.RankInfo.Builder everyRankInfo){
String serverName = CrossServiceLogic.getInstance().getServerNameByUId(query.getId());
return CommonProto.UserRank.newBuilder()
.setUid(query.getId())
.setLevel(query.getPlayerManager().getLevel())
.setUserName(query.getPlayerManager().getName())
.setRankInfo(everyRankInfo)
.setForce(query.getPlayerManager().getMaxFore())
.setSex(query.getPlayerManager().getGender())
.setHead(query.getPlayerManager().getHead())
.setGuildName(guildName)
.setHeadFrame(query.getPlayerManager().getHeadFrame())
.setUserMount(query.getPlayerManager().getUserMount())
.setUserSkin(query.getPlayerManager().getSkin())
.setUserTitle(query.getPlayerManager().getUserTitle())
.setPracticeLevel(query.getPlayerManager().getPracticeLevel())
.setServerName(serverName);
}
@Override
public CommonProto.UserRank.Builder getFirstByCross(String rKey) throws UnknownHostException {
public CommonProto.UserRank.Builder getFirstByCross(String rKey){
Set<ZSetOperations.TypedTuple<String>> rankByKey =
RedisUtil.getInstence().getZsetreverseRangeWithScores(getCrossRedisKey(),rKey, 0, 0, false);
CommonProto.UserRank.Builder builder = CommonProto.UserRank.newBuilder();
@ -81,11 +60,11 @@ public class CrossGuildForceRank extends GuildForceRank {
.setParam1(getParam1(data.getScore()))
.setParam2(getParam2(data.getScore()))
.setParam3(getParam3(data.getScore()));
ArenaOfUser query = CrossServiceLogic.getInstance().query(mapEntry.getLeaderUId());
if (query == null){
CSPlayer csPlayer = CrossServiceLogic.getPlayerByRedis(mapEntry.getLeaderUId());
if (csPlayer == null){
return builder;
}
builder = getCrossOneUserRank(query,mapEntry.getName(),everyRankInfo);
builder = getCrossOneUserRank(csPlayer,everyRankInfo);
return builder;
}
@ -96,7 +75,7 @@ public class CrossGuildForceRank extends GuildForceRank {
if (guildId == 0){
return;
}
int myRank= RedisUtil.getInstence().getZSetreverseRank(getCrossRedisKey(),rkey,Integer.toString(guildId),false).intValue();
int myRank= RedisUtil.getInstence().getZSetreverseRank(getCrossRedisKey(), rkey, Integer.toString(guildId),false).intValue();
Double zSetScore = RedisUtil.getInstence().getZSetScore(getCrossRedisKey(), rkey, Integer.toString(guildId),false);
CommonProto.RankInfo towerRankInfo = CommonProto.RankInfo.newBuilder()
.setRank(myRank)

View File

@ -79,9 +79,8 @@ public class CrossYuXuLunDaoPersonRank extends AbstractRank{
builder.addRanks(everyRank);
}
}
public static CommonProto.UserRank.Builder getCrossOneUserRankyx(CSPlayer player , CommonProto.RankInfo.Builder everyRankInfo){
String serverName = CrossServiceLogic.getInstance().getServerNameByUId(player.getUserId());
//CSPlayer player = CrossServiceLogic.getPlayerByRedis(uid);
public static CommonProto.UserRank.Builder getCrossOneUserRankyx(CSPlayer player, CommonProto.RankInfo.Builder everyRankInfo){
String serverName = CrossServiceLogic.simplifyServerName(player.getServerId());
return CommonProto.UserRank.newBuilder()
.setUid(player.getUserId())
.setLevel(player.getLevel())

View File

@ -9,16 +9,13 @@ import com.ljsd.jieling.logic.arena.ArenaLogic;
import com.ljsd.jieling.logic.dao.CrossArenaEnemy;
import com.ljsd.jieling.logic.dao.UserManager;
import com.ljsd.jieling.logic.dao.cross.CSPlayer;
import com.ljsd.jieling.logic.dao.gm.ArenaOfUser;
import com.ljsd.jieling.logic.dao.root.User;
import com.ljsd.jieling.logic.family.CrossDeathPathLogic;
import com.ljsd.jieling.logic.hero.HeroLogic;
import com.ljsd.jieling.logic.rank.RankContext;
import com.ljsd.jieling.logic.rank.RankEnum;
import org.springframework.data.redis.core.ZSetOperations;
import rpc.protocols.CommonProto;
import rpc.protocols.PlayerInfoProto;
import util.TimeUtils;
import java.util.Set;
@ -66,7 +63,7 @@ public class CrossYuXuLunDaoRank extends AbstractRank{
if(mapEntry==null){
return;
}
String serverName = CrossDeathPathLogic.getInstance().getServerNameByDeathPath(mapEntry.getServerID());
String serverName = CrossServiceLogic.simplifyServerName(mapEntry.getServerID());
everyRankInfo.setParam1(mapEntry.getTotalForce());
CommonProto.UserRank.Builder everyRank = CommonProto.UserRank.newBuilder()
.setUid(mapEntry.getEnemyId_UUid())
@ -78,21 +75,22 @@ public class CrossYuXuLunDaoRank extends AbstractRank{
.setSex(0).setCrossScore(mapEntry.getEnemyStatus());
builder.addRanks(everyRank);
}else{
//ArenaOfUser query = CrossServiceLogic.getInstance().query(Integer.valueOf(data.getValue()));
CSPlayer cPlayer = CrossServiceLogic.getPlayerByRedis(Integer.valueOf(data.getValue()));
if (cPlayer == null){
return;
}
CommonProto.RankInfo.Builder everyRankInfo = CommonProto.RankInfo.newBuilder()
.setRank(index)
.setParam1(getParam1(data.getScore()))
.setParam2(getParam2(data.getScore()))
.setParam3(getParam3(data.getScore()));
//CommonProto.UserRank.Builder everyRank = getCrossOneUserRank(query,everyRankInfo);
CommonProto.UserRank.Builder everyRank = getCrossOneUserRankyx(cPlayer,everyRankInfo);
builder.addRanks(everyRank);
}
}
public static CommonProto.UserRank.Builder getCrossOneUserRankyx(CSPlayer player , CommonProto.RankInfo.Builder everyRankInfo){
String serverName = CrossServiceLogic.getInstance().getServerNameByUId(player.getUserId());
//CSPlayer player = CrossServiceLogic.getPlayerByRedis(uid);
private static CommonProto.UserRank.Builder getCrossOneUserRankyx(CSPlayer player, CommonProto.RankInfo.Builder everyRankInfo){
String serverName = CrossServiceLogic.simplifyServerName(player.getServerId());
return CommonProto.UserRank.newBuilder()
.setUid(player.getUserId())
.setLevel(player.getLevel())

View File

@ -1,21 +1,18 @@
package com.ljsd.jieling.logic.rank.rankImpl;
import com.ljsd.jieling.db.redis.RedisKey;
import com.ljsd.jieling.db.redis.RedisUtil;
import com.ljsd.jieling.logic.GlobleSystemLogic;
import com.ljsd.jieling.logic.activity.crossService.CrossServiceLogic;
import com.ljsd.jieling.logic.dao.GuilidManager;
import com.ljsd.jieling.logic.dao.UserManager;
import com.ljsd.jieling.logic.dao.gm.ArenaOfUser;
import com.ljsd.jieling.logic.dao.cross.CSPlayer;
import com.ljsd.jieling.logic.dao.root.GuildCache;
import com.ljsd.jieling.logic.dao.root.GuildInfo;
import com.ljsd.jieling.logic.dao.root.User;
import com.ljsd.jieling.logic.family.CrossDeathPathLogic;
import com.ljsd.jieling.logic.family.DeathChallengeCount;
import com.ljsd.jieling.logic.family.DeathPathLogic;
import org.springframework.data.redis.core.ZSetOperations;
import rpc.protocols.CommonProto;
import rpc.protocols.PlayerInfoProto;
import org.springframework.data.redis.core.ZSetOperations;
import java.math.BigDecimal;
import java.util.Optional;
@ -70,12 +67,11 @@ public class DeathPathTotalGuildRank extends CrossGuildForceRank{
.setParam1(getParam1(data.getScore()))
.setParam2(getParam2(data.getScore()))
.setParam3(countInfo==null?0:countInfo.getUserReward().size());
ArenaOfUser query = CrossServiceLogic.getInstance().query(mapEntry.getLeaderUId());
CSPlayer query = CrossServiceLogic.getPlayerByRedis(mapEntry.getLeaderUId());
if (query == null){
return;
}
String name = Optional.of(mapEntry).map(GuildCache::getName).orElse("");
CommonProto.UserRank.Builder oneUserRank = getCrossOneUserRank(query,name,everyRankInfo);
CommonProto.UserRank.Builder oneUserRank = getCrossOneUserRank(query,everyRankInfo);
builder.addRanks(oneUserRank);
}

View File

@ -12,7 +12,7 @@ public class ForceRank extends AbstractRank {
@Override
public long[] getDataByScore(Double score) {
return new long[]{score.intValue()};
return new long[]{score.longValue()};
}
@Override

View File

@ -32,6 +32,7 @@ public class GuildSheJiScoreRank extends AbstractRank {
return data[0];
}
@Override
protected void getOptional(int index, ZSetOperations.TypedTuple<String> data, PlayerInfoProto.RankResponse.Builder builder) throws Exception{
GuildInfo guildInfo = GuilidManager.guildInfoMap.get(Integer.parseInt(data.getValue()));
CommonProto.RankInfo.Builder everyRankInfo = CommonProto.RankInfo.newBuilder()

View File

@ -267,8 +267,6 @@ public class SevenWorldLogic {
// 层数
user.getPlayerInfoManager().putSevenWorldOpenTier(week,tierId);
}
// 跨服数据保存
CrossServiceLogic.getInstance().dispose(user);
}
// 战斗数据
builder.setResult(fightResult.getResult());

View File

@ -10,11 +10,11 @@ import com.ljsd.jieling.handler.map.Cell;
import com.ljsd.jieling.handler.map.MapManager;
import com.ljsd.jieling.handler.map.TowerBuff;
import com.ljsd.jieling.logic.OnlineUserManager;
import com.ljsd.jieling.logic.activity.crossService.CrossServiceLogic;
import com.ljsd.jieling.logic.dao.*;
import com.ljsd.jieling.logic.dao.gm.ArenaOfHero;
import com.ljsd.jieling.logic.dao.root.GuildInfo;
import com.ljsd.jieling.logic.dao.root.User;
import com.ljsd.jieling.logic.family.CrossDeathPathLogic;
import com.ljsd.jieling.logic.fight.CombatLogic;
import com.ljsd.jieling.logic.help.HelpHero;
import com.ljsd.jieling.logic.help.HelpHeroLogic;
@ -784,7 +784,7 @@ public class CBean2Proto {
chatInfo.setMessageId(messageId);
chatInfo.setUserTitle(playerInfoManager.getUserTitle());
chatInfo.setPracticeLevel(user.getHeroManager().getPracticeLevel());
String serverName = CrossDeathPathLogic.getInstance().getServerNameByDeathPath(GameApplication.serverId);
String serverName = CrossServiceLogic.simplifyServerName(GameApplication.serverId);
chatInfo.setServerName(serverName);
return chatInfo.build();
}

View File

@ -10,22 +10,21 @@ public class RedisTest {
public static void main(String[] args) {
StringRedisTemplate redisTemplate = getRedisTemplate();
List<Object> result = new ArrayList<>();
result.add("30007078010215604220600000");
result.add("1");
result.add("30007078010215604361980000");
List<Object> objects = redisTemplate.opsForHash().multiGet("10016:CHero_Key:30007078", result);
System.out.println(objects);
redisTemplate.opsForZSet().add("test","1000",78);
redisTemplate.opsForZSet().add("test","1000",2);
System.out.println("ok");
}
public static StringRedisTemplate getRedisTemplate(){
JedisConnectionFactory connectionFactory = new JedisConnectionFactory();
//设置host
connectionFactory.setHostName("60.1.1.14");
connectionFactory.setHostName("60.1.1.21");
//设置端口
connectionFactory.setPort(6379);
//初始化connectionFactory
connectionFactory.afterPropertiesSet();
// 设置数据库
connectionFactory.setDatabase(2);
//实例化
return new StringRedisTemplate(connectionFactory);
}