Merge branch 'dh_dev_crossrank' into master_test_gn
commit
ed62e827fe
|
@ -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();
|
||||
// 开启定时任务
|
||||
|
|
|
@ -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();
|
||||
|
|
|
@ -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()); //等级
|
||||
|
|
|
@ -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();
|
||||
|
|
|
@ -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) {
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
||||
/**
|
||||
* 简化servername,拼接“s”
|
||||
* @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);
|
||||
|
|
|
@ -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())
|
||||
|
|
|
@ -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();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -31,7 +31,6 @@ public class CSPlayer {
|
|||
* 头像框
|
||||
*/
|
||||
private int headFrame;
|
||||
//帮会相关的
|
||||
|
||||
/**
|
||||
* 皮肤
|
||||
|
@ -63,7 +62,6 @@ public class CSPlayer {
|
|||
*/
|
||||
private int guildId;
|
||||
|
||||
|
||||
/**
|
||||
* 玉虚论道三队总战力
|
||||
*/
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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());
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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()) {
|
||||
|
|
|
@ -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());
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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())
|
||||
|
|
|
@ -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())
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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()
|
||||
|
|
|
@ -267,8 +267,6 @@ public class SevenWorldLogic {
|
|||
// 层数
|
||||
user.getPlayerInfoManager().putSevenWorldOpenTier(week,tierId);
|
||||
}
|
||||
// 跨服数据保存
|
||||
CrossServiceLogic.getInstance().dispose(user);
|
||||
}
|
||||
// 战斗数据
|
||||
builder.setResult(fightResult.getResult());
|
||||
|
|
|
@ -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();
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue