玉虚论道排行榜删除机器人 rpc调用修改
parent
4a1f019c1a
commit
7204d7187c
|
@ -66,9 +66,10 @@ public class GameLogicService implements IService {
|
|||
Gson gson = new Gson();
|
||||
CoreSettings coreSettings = ConfigurableApplicationContextManager.getBean(CoreSettings.class);
|
||||
String ip = coreSettings.getIp();
|
||||
int port = coreSettings.getGmport();
|
||||
int gmport = coreSettings.getGmport();
|
||||
int worldport = coreSettings.getWorldport();
|
||||
String rpcUrl = ip + ":" + port+ ":" + worldport;
|
||||
int port = coreSettings.getPort();
|
||||
String rpcUrl = ip + ":" + gmport+ ":" + worldport+":"+port;
|
||||
RedisUtil.getInstence().set(RedisKey.LOGIC_SERVER_INFO+RedisKey.Delimiter_colon+GameApplication.serverId,gson.toJson(rpcUrl));
|
||||
}
|
||||
|
||||
|
|
|
@ -356,6 +356,7 @@ public class RedisKey {
|
|||
|
||||
//玉虚论道
|
||||
public static final String CROSS_YUXULUNDAO_RANK = "CROSS_YUXULUNDAO_RANK";//排行榜信息
|
||||
public static final String CROSS_YUXULUNDAO_RANK_PERSON = "CROSS_YUXULUNDAO_RANK_PERSON";//排行榜信息
|
||||
public static final String CROSS_YUXULUNDAO_ROBOT_INFO = "CROSS_YUXULUNDAO_ROBOT_INFO";//机器人信息
|
||||
public static final String CROSS_YUXULUNDAO_RECORD = "CROSS_YUXULUNDAO_RECORD";//战斗回放
|
||||
public static final String CROSS_SERVER_USER = "CROSS_SERVER_USER";//redis存储个人基本信息
|
||||
|
|
|
@ -1422,7 +1422,7 @@ public class RedisUtil {
|
|||
RedisKey.CROSS_SERVICE_ARENA.equals(type)||RedisKey.WORLD_ARENA_RANK_MY_MATH.equals(type)||
|
||||
RedisKey.WORLD_ARENA_MY_PRON.equals(type)||RedisKey.WORLD_ARENA_RRECORD.equals(type)||
|
||||
RedisKey.CROSS_YUXULUNDAO_RANK.equals(type)||RedisKey.CROSS_YUXULUNDAO_ROBOT_INFO.equals(type)||
|
||||
RedisKey.CROSS_YUXULUNDAO_RECORD.equals(type)
|
||||
RedisKey.CROSS_YUXULUNDAO_RECORD.equals(type)|| RedisKey.CROSS_YUXULUNDAO_RANK_PERSON.equals(type)
|
||||
) {
|
||||
return type + RedisKey.Delimiter_colon + key;
|
||||
}
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
package com.ljsd.jieling.handler.crossServer;
|
||||
|
||||
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;
|
||||
|
@ -74,13 +75,12 @@ public class CrossYuxulundaoChallengeHandler extends BaseHandler<ArenaInfoProto.
|
|||
int defUid = request.getChallengeUid();
|
||||
int type = request.getChallengeType();
|
||||
SMServerArenaSetting setting = STableManager.getConfig(SMServerArenaSetting.class).get(2);
|
||||
if (type == 0) {
|
||||
//免费挑战
|
||||
int privId = setting.getPrivId()[0];
|
||||
/*int privId = setting.getPrivId()[0];
|
||||
if (!PlayerLogic.getInstance().checkAndUpdate(user, privId, 1)) {
|
||||
throw new ErrorCodeException(ErrorCode.SERVER_SELF_DEFINE);
|
||||
}
|
||||
} else if (type == 1) {
|
||||
}*/
|
||||
if (type == 1) {
|
||||
//物品消耗挑战
|
||||
int[] itemCost = setting.getCost();
|
||||
int[][] comItemCost = new int[1][];
|
||||
|
@ -89,7 +89,9 @@ public class CrossYuxulundaoChallengeHandler extends BaseHandler<ArenaInfoProto.
|
|||
if (!enough) {
|
||||
throw new ErrorCodeException(ErrorCode.ITEM_NOT_ENOUGH);
|
||||
}
|
||||
}
|
||||
}else {
|
||||
throw new ErrorCodeException(ErrorCode.ITEM_NOT_ENOUGH);
|
||||
}
|
||||
List<Integer> yuxuTeamId = Lists.newArrayList();
|
||||
yuxuTeamId.add(GlobalsDef.CROSS_YU_XU_LUN_DAO_ONE);
|
||||
yuxuTeamId.add(GlobalsDef.CROSS_YU_XU_LUN_DAO_TWO);
|
||||
|
@ -151,10 +153,10 @@ public class CrossYuxulundaoChallengeHandler extends BaseHandler<ArenaInfoProto.
|
|||
if (defUid >= 1000) {
|
||||
if (defQuery.getCrossYuxulundaoNewScore() >= winerGetScore) {
|
||||
defQuery.setCrossYuxulundaoNewScore(defQuery.getCrossYuxulundaoNewScore() + loserGetScore);
|
||||
rank.addRank(user.getId(), String.valueOf(crossGroup), defQuery.getCrossYuxulundaoNewScore());
|
||||
rank.addRank(defUid, String.valueOf(crossGroup), defQuery.getCrossYuxulundaoNewScore());
|
||||
} else {
|
||||
//分数不够扣
|
||||
rank.addRank(user.getId(), String.valueOf(crossGroup), 0);
|
||||
rank.addRank(defUid, String.valueOf(crossGroup), 0);
|
||||
defQuery.setCrossYuxulundaoNewScore(0);
|
||||
}
|
||||
}
|
||||
|
@ -174,7 +176,7 @@ public class CrossYuxulundaoChallengeHandler extends BaseHandler<ArenaInfoProto.
|
|||
}
|
||||
if (defUid >= 1000) {
|
||||
defQuery.setCrossYuxulundaoNewScore(defQuery.getCrossYuxulundaoNewScore() + winerGetScore);
|
||||
rank.addRank(user.getId(), String.valueOf(crossGroup), defQuery.getCrossYuxulundaoNewScore());
|
||||
rank.addRank(defUid, String.valueOf(crossGroup), defQuery.getCrossYuxulundaoNewScore());
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -254,6 +256,7 @@ public class CrossYuxulundaoChallengeHandler extends BaseHandler<ArenaInfoProto.
|
|||
int myRank = RedisUtil.getInstence().getZSetreverseRank(RedisKey.CROSS_YUXULUNDAO_RANK, Integer.toString(crossGroup), Integer.toString(user.getId())).intValue();
|
||||
res.setMyRank(myRank);
|
||||
int privId = STableManager.getConfig(SMServerArenaSetting.class).get(2).getPrivId()[0];
|
||||
PlayerLogic.getInstance().checkAndUpdate(user, privId, 1);
|
||||
int changeTimes = user.getPlayerInfoManager().getVipPrivilageValue(privId);
|
||||
res.setChangedTimes(changeTimes);
|
||||
List<Integer> dailyReward = user.getArenaManager().getCrossYuxulundaoDailyRewad();
|
||||
|
@ -272,32 +275,10 @@ public class CrossYuxulundaoChallengeHandler extends BaseHandler<ArenaInfoProto.
|
|||
public static int[] getFightResultByPersonToPerson(User myUser, int defUserUid, int[] myteamId, int[] defTeamId, ArenaRecord arenaRecord, ArenaInfoProto.CrossYuXuLunDaoChallengeResponse.Builder builder) throws Exception {
|
||||
int[] result = new int[3];
|
||||
CSPlayer csPlayer = CrossServiceLogic.getPlayerByRedis(defUserUid);
|
||||
//其他服玩家
|
||||
//rpc 数据调用测试
|
||||
//其他服玩家rpc 数据调用
|
||||
CrossArenaManager crossArenaManager = null;
|
||||
CoreSettings coreSettings = ConfigurableApplicationContextManager.getBean(CoreSettings.class);
|
||||
if (!csPlayer.getRpcIp().equals(coreSettings.getIp()) || csPlayer.getRpcPort() != coreSettings.getPort()) {
|
||||
String ip = csPlayer.getRpcIp();
|
||||
int port = csPlayer.getRpcPort();
|
||||
int uid = csPlayer.getUserId();
|
||||
StringBuilder sb = new StringBuilder();
|
||||
sb.append("RPCCORE").append("|")
|
||||
.append(ip).append("|")
|
||||
.append(port).toString();
|
||||
ClientAdapterPo<RPCRequestIFace.Client> rPCClient = null;
|
||||
try {
|
||||
rPCClient = ClientAdapterPo.getClientAdapterPo(sb.toString());
|
||||
crossArenaManager = rPCClient.getClient().getHeroManagerInfo(uid);
|
||||
} catch (Exception e) {
|
||||
LOGGER.info("callback=>", e);
|
||||
} finally {
|
||||
if (rPCClient != null) {
|
||||
rPCClient.returnObject(sb.toString());
|
||||
} else {
|
||||
LOGGER.info("callback=> rPCClient is null ");
|
||||
return null;
|
||||
}
|
||||
}
|
||||
if(GameApplication.serverId != csPlayer.getServerId()){
|
||||
crossArenaManager = PlayerLogic.getInstance().getCrossArenaManagerData(csPlayer);
|
||||
}
|
||||
arenaRecord.setCreateTime(TimeUtils.nowInt()); // 时间
|
||||
arenaRecord.setAttackId(defUserUid); //id
|
||||
|
|
|
@ -307,8 +307,6 @@ public class CrossServiceLogic {
|
|||
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);
|
||||
player.setRpcIp(coreSettings.getIp());
|
||||
player.setRpcPort(coreSettings.getPort());
|
||||
return player;
|
||||
}
|
||||
/**
|
||||
|
|
|
@ -81,8 +81,9 @@ public class CrossYuxulundaoLogic {
|
|||
//TODO 删除初始化一些数据
|
||||
String key1 = RedisUtil.getInstence().getKey(RedisKey.CROSS_YUXULUNDAO_RANK, String.valueOf(crossGroup));
|
||||
String key2 = RedisUtil.getInstence().getKey(RedisKey.CROSS_YUXULUNDAO_ROBOT_INFO, String.valueOf(crossGroup));
|
||||
String key3 = RedisUtil.getInstence().getKey(RedisKey.CROSS_YUXULUNDAO_RANK_PERSON, String.valueOf(crossGroup));
|
||||
//String key3 = RedisUtil.getInstence().getKey(RedisKey.CROSS_YUXULUNDAO_RECORD, String.valueOf(crossGroup));
|
||||
RedisUtil.getInstence().del(key1, key2);
|
||||
RedisUtil.getInstence().del(key1, key2,key3);
|
||||
AbstractRank rank = RankContext.getRankEnum(RankEnum.CROSS_YUXULUNDAO_RANK.getType());
|
||||
int robotIndex = 100;
|
||||
Random random = new Random();
|
||||
|
@ -115,7 +116,7 @@ public class CrossYuxulundaoLogic {
|
|||
return;
|
||||
}
|
||||
String title = SErrorCodeEerverConfig.getI18NMessage("MsRankTitle");
|
||||
String rkey = RedisUtil.getInstence().getKey(RedisKey.CROSS_YUXULUNDAO_RANK, Integer.toString(crossGroup));
|
||||
String rkey = RedisUtil.getInstence().getKey(RedisKey.CROSS_YUXULUNDAO_RANK_PERSON, Integer.toString(crossGroup));
|
||||
Set<String> arenaRank = RedisUtil.getInstence().getReverseZset(rkey, 0, -1);
|
||||
List<Integer> arenaRankfilt = arenaRank.stream().mapToInt(n -> Integer.parseInt(n)).filter(n -> n > 1000).boxed().collect(Collectors.toList());
|
||||
for (int i = 0; i < arenaRankfilt.size(); i++) {
|
||||
|
|
|
@ -81,14 +81,7 @@ public class CSPlayer {
|
|||
* 玉虚论道历史达到的最高等级
|
||||
*/
|
||||
private int crossYxldMaxLevel = 0 ; //历史达到的最高等级
|
||||
/**
|
||||
* rpcIp
|
||||
*/
|
||||
private String rpcIp ;
|
||||
/**
|
||||
* rpcPort
|
||||
*/
|
||||
private int rpcPort ;
|
||||
|
||||
|
||||
public CSPlayer(User user) {
|
||||
PlayerManager manager = user.getPlayerInfoManager();
|
||||
|
@ -238,19 +231,4 @@ public class CSPlayer {
|
|||
this.crossYxldMaxLevel = crossYxldMaxLevel;
|
||||
}
|
||||
|
||||
public String getRpcIp() {
|
||||
return rpcIp;
|
||||
}
|
||||
|
||||
public void setRpcIp(String rpcIp) {
|
||||
this.rpcIp = rpcIp;
|
||||
}
|
||||
|
||||
public int getRpcPort() {
|
||||
return rpcPort;
|
||||
}
|
||||
|
||||
public void setRpcPort(int rpcPort) {
|
||||
this.rpcPort = rpcPort;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -670,7 +670,7 @@ public class FightUtil {
|
|||
}
|
||||
CoreSettings coreSettings = ConfigurableApplicationContextManager.getBean(CoreSettings.class);
|
||||
List<CommonProto.FightUnitInfo> heroFightInfos = new ArrayList<>();
|
||||
if (csPlayer.getRpcIp().equals(coreSettings.getIp()) && csPlayer.getRpcPort() == coreSettings.getPort()) {
|
||||
if (GameApplication.serverId == csPlayer.getServerId()) {
|
||||
//本服玩家
|
||||
User user = UserManager.getUser(csPlayer.getUserId());
|
||||
List<TeamPosHeroInfo> teamPosHeroInfos = user.getTeamPosManager().getTeamPosForHero().getOrDefault(teamId, new ArrayList<>());
|
||||
|
|
|
@ -862,40 +862,7 @@ public class PlayerLogic {
|
|||
PlayerInfoProto.GetPlayerOneTeamInfoResponse.Builder playerTeamInfo = PlayerInfoProto.GetPlayerOneTeamInfoResponse.newBuilder().setTeamInfo(builder.build());
|
||||
return playerTeamInfo.build();
|
||||
}
|
||||
|
||||
public static CrossArenaManager getCrossArenaManager(CSPlayer csPlayer )throws Exception{
|
||||
if(csPlayer==null){
|
||||
return null;
|
||||
//throw new ErrorCodeException(ErrorCode.SERVER_SELF_DEFINE);
|
||||
}
|
||||
//基本信息从redis中拿 剩下的队伍 属性 数据量大的数据rpc调用
|
||||
// String serverName = CrossDeathPathLogic.getInstance().getServerNameByDeathPath(csPlayer.getServerId());
|
||||
//rpc 数据调用测试
|
||||
String ip =csPlayer.getRpcIp();
|
||||
int port = csPlayer.getRpcPort();
|
||||
int uid = csPlayer.getUserId();
|
||||
StringBuilder sb = new StringBuilder();
|
||||
sb.append("RPCCORE").append("|")
|
||||
.append(ip).append("|")
|
||||
.append(port).toString();
|
||||
ClientAdapterPo<RPCRequestIFace.Client> rPCClient = null;
|
||||
CrossArenaManager crossArenaManager = null ;
|
||||
try{
|
||||
rPCClient = ClientAdapterPo.getClientAdapterPo(sb.toString());
|
||||
crossArenaManager = rPCClient.getClient().getHeroManagerInfo(uid);
|
||||
}catch (Exception e) {
|
||||
LOGGER.info("callback=>", e);
|
||||
} finally {
|
||||
if(rPCClient != null){
|
||||
rPCClient.returnObject(sb.toString());
|
||||
}else{
|
||||
LOGGER.info("callback=> rPCClient is null ");
|
||||
}
|
||||
}
|
||||
return crossArenaManager;
|
||||
}
|
||||
|
||||
|
||||
|
||||
//获取跨服玩家信息
|
||||
public CommonProto.TeamOneInfo getCrossYxldMyTeamInfo(User user,List<Integer> team) throws Exception{
|
||||
CSPlayer csPlayer = CrossServiceLogic.getPlayerByRedis(user.getId());
|
||||
|
@ -966,6 +933,36 @@ public class PlayerLogic {
|
|||
}
|
||||
return builder.build();
|
||||
}
|
||||
public CrossArenaManager getCrossArenaManagerData(CSPlayer csPlayer )throws Exception{
|
||||
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];
|
||||
//rpc 数据调用
|
||||
//String ip =csPlayer.getRpcIp();
|
||||
//int port = csPlayer.getRpcPort();
|
||||
int uid = csPlayer.getUserId();
|
||||
StringBuilder sb = new StringBuilder();
|
||||
sb.append("RPCCORE").append("|")
|
||||
.append(ip).append("|")
|
||||
.append(port).toString();
|
||||
ClientAdapterPo<RPCRequestIFace.Client> rPCClient = null;
|
||||
CrossArenaManager crossArenaManager = null ;
|
||||
try{
|
||||
rPCClient = ClientAdapterPo.getClientAdapterPo(sb.toString());
|
||||
crossArenaManager = rPCClient.getClient().getHeroManagerInfo(uid);
|
||||
}catch (Exception e) {
|
||||
LOGGER.info("callback=>", e);
|
||||
} finally {
|
||||
if(rPCClient != null){
|
||||
rPCClient.returnObject(sb.toString());
|
||||
}else{
|
||||
LOGGER.info("callback=> rPCClient is null ");
|
||||
return null;
|
||||
}
|
||||
}
|
||||
return crossArenaManager;
|
||||
}
|
||||
|
||||
//获取跨服玩家信息
|
||||
public CommonProto.TeamOneInfo getCrossYxldOneTeamInfo(int id,List<Integer> team) throws Exception {
|
||||
CSPlayer csPlayer = CrossServiceLogic.getPlayerByRedis(id);
|
||||
|
@ -986,36 +983,15 @@ public class PlayerLogic {
|
|||
.setServerName(serverName);
|
||||
//如果是本服玩家 直接本服调用数据
|
||||
CoreSettings coreSettings = ConfigurableApplicationContextManager.getBean(CoreSettings.class);
|
||||
if(csPlayer.getRpcIp().equals(coreSettings.getIp()) && csPlayer.getRpcPort()== coreSettings.getPort()){
|
||||
if(GameApplication.serverId == csPlayer.getServerId()){
|
||||
User user = UserManager.getUser(id);
|
||||
return PlayerLogic.getInstance().getCrossYxldMyTeamInfo(user, team);
|
||||
}
|
||||
//rpc 数据调用测试
|
||||
String ip =csPlayer.getRpcIp();
|
||||
int port = csPlayer.getRpcPort();
|
||||
int uid = csPlayer.getUserId();
|
||||
StringBuilder sb = new StringBuilder();
|
||||
sb.append("RPCCORE").append("|")
|
||||
.append(ip).append("|")
|
||||
.append(port).toString();
|
||||
|
||||
ClientAdapterPo<RPCRequestIFace.Client> rPCClient = null;
|
||||
|
||||
CrossArenaManager crossArenaManager = null ;
|
||||
try{
|
||||
rPCClient = ClientAdapterPo.getClientAdapterPo(sb.toString());
|
||||
crossArenaManager = rPCClient.getClient().getHeroManagerInfo(uid);
|
||||
}catch (Exception e) {
|
||||
LOGGER.info("callback=>", e);
|
||||
} finally {
|
||||
if(rPCClient != null){
|
||||
rPCClient.returnObject(sb.toString());
|
||||
}else{
|
||||
LOGGER.info("callback=> rPCClient is null ");
|
||||
return null;
|
||||
}
|
||||
CrossArenaManager crossArenaManager = getCrossArenaManagerData(csPlayer) ;
|
||||
if(crossArenaManager == null){
|
||||
throw new ErrorCodeException(ErrorCode.SYS_ERROR_CODE);
|
||||
}
|
||||
|
||||
//rpc 数据调用测试
|
||||
for(int teamId: team){
|
||||
CommonProto.TeamOneTeamInfo.Builder teamOneTeamInfo = CommonProto.TeamOneTeamInfo.newBuilder();
|
||||
List<com.ljsd.jieling.thrift.idl.TeamPosHeroInfo> teamPosHeroInfos = crossArenaManager.getTeams().get(teamId);
|
||||
|
|
|
@ -57,7 +57,8 @@ public enum RankEnum {
|
|||
CROSS_GUILD_FORCE_RANK(36,RedisKey.GUILD_FORCE_RANK,CrossGuildForceRank::new,true),//跨服公会总战力排行
|
||||
|
||||
CROSS_YUXULUNDAO_RANK(37,RedisKey.CROSS_YUXULUNDAO_RANK,CrossYuXuLunDaoRank::new,true),//跨服玉虚论道
|
||||
CROSS_SEVEN_WORLD_RANK(39,RedisKey.SEVEN_WORLD_INTEGRAL_RANK,CrossRank::new,true)//跨服七届试炼
|
||||
CROSS_SEVEN_WORLD_RANK(39,RedisKey.SEVEN_WORLD_INTEGRAL_RANK,CrossRank::new,true),//跨服七届试炼
|
||||
CROSS_YUXULUNDAO_RANK_PERSON(40,RedisKey.CROSS_YUXULUNDAO_RANK_PERSON,CrossYuXuLunDaoPersonRank::new,true),//跨服玉虚论道真人排行榜
|
||||
;
|
||||
|
||||
private int type;
|
||||
|
|
|
@ -0,0 +1,143 @@
|
|||
package com.ljsd.jieling.logic.rank.rankImpl;
|
||||
|
||||
import com.ljsd.jieling.core.GlobalsDef;
|
||||
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.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.root.User;
|
||||
import com.ljsd.jieling.logic.family.CrossDeathPathLogic;
|
||||
import com.ljsd.jieling.logic.hero.HeroLogic;
|
||||
import org.springframework.data.redis.core.ZSetOperations;
|
||||
import rpc.protocols.CommonProto;
|
||||
import rpc.protocols.PlayerInfoProto;
|
||||
|
||||
import java.util.Set;
|
||||
|
||||
public class CrossYuXuLunDaoPersonRank extends AbstractRank{
|
||||
|
||||
public CrossYuXuLunDaoPersonRank(int type, String redisKey) {
|
||||
super(type, redisKey);
|
||||
}
|
||||
|
||||
@Override
|
||||
public PlayerInfoProto.RankResponse getRank(int uid, String rkey, int page, int rankEndLine) throws Exception {
|
||||
return super.getRank(uid, String.valueOf(ArenaLogic.getInstance().getViewSeason()), page, rankEndLine);
|
||||
}
|
||||
|
||||
@Override
|
||||
public long[] getDataByScore(Double score) {
|
||||
return new long[]{score.intValue()};
|
||||
}
|
||||
|
||||
@Override
|
||||
public double getScore(double... data) {
|
||||
return data[0];
|
||||
}
|
||||
|
||||
/**
|
||||
*向排行榜添加或在原来的数据上修改某条数据
|
||||
*/
|
||||
public void addOrUpdateRank(int uid,String rkey,double... data){
|
||||
String key = RedisKey.getKey(redisKey,rkey,false);
|
||||
//decr
|
||||
RedisUtil.getInstence().zsetAddOne(key,String.valueOf(uid), getScore(data));
|
||||
}
|
||||
@Override
|
||||
protected void getCrossOptional(int index, ZSetOperations.TypedTuple<String> data, PlayerInfoProto.RankResponse.Builder builder) throws Exception {
|
||||
if(Integer.parseInt(data.getValue())<1000){
|
||||
CommonProto.RankInfo.Builder everyRankInfo = CommonProto.RankInfo.newBuilder()
|
||||
.setRank(index)
|
||||
.setParam1(0)
|
||||
.setParam2(getParam2(data.getScore()))
|
||||
.setParam3(getParam3(data.getScore()));
|
||||
CrossArenaEnemy mapEntry = RedisUtil.getInstence().getMapEntry(RedisKey.CROSS_YUXULUNDAO_ROBOT_INFO, String.valueOf(GlobleSystemLogic.getInstence().getCrossGroup()), data.getValue(), CrossArenaEnemy.class);
|
||||
if(mapEntry==null){
|
||||
return;
|
||||
}
|
||||
String serverName = CrossDeathPathLogic.getInstance().getServerNameByDeathPath(mapEntry.getServerID());
|
||||
everyRankInfo.setParam1(mapEntry.getTotalForce());
|
||||
CommonProto.UserRank.Builder everyRank = CommonProto.UserRank.newBuilder()
|
||||
.setUid(mapEntry.getEnemyId_UUid())
|
||||
.setUserName(mapEntry.getRandomName())
|
||||
.setLevel(mapEntry.getLevel()==0?100:mapEntry.getLevel())
|
||||
.setUserSkin(80012)
|
||||
.setRankInfo(everyRankInfo)
|
||||
.setServerName(serverName)
|
||||
.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()));
|
||||
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 = getCrossOneUserRank(cPlayer,everyRankInfo);
|
||||
builder.addRanks(everyRank);
|
||||
}
|
||||
}
|
||||
public static CommonProto.UserRank.Builder getCrossOneUserRank(CSPlayer player , CommonProto.RankInfo.Builder everyRankInfo){
|
||||
String serverName = CrossServiceLogic.getInstance().getServerNameByUId(player.getUserId());
|
||||
//CSPlayer player = CrossServiceLogic.getPlayerByRedis(uid);
|
||||
return CommonProto.UserRank.newBuilder()
|
||||
.setUid(player.getUserId())
|
||||
.setLevel(player.getLevel())
|
||||
.setUserName(player.getName())
|
||||
.setRankInfo(everyRankInfo)
|
||||
.setForce(player.getMaxFore())
|
||||
.setSex(player.getSex())
|
||||
.setHead(player.getHead())
|
||||
.setGuildName("")
|
||||
.setHeadFrame(player.getHeadFrame())
|
||||
.setUserMount(player.getUserMount())
|
||||
.setUserSkin(player.getSkin())
|
||||
.setUserTitle(player.getUserTitle())
|
||||
.setPracticeLevel(player.getPracticeLevel())
|
||||
.setServerName(serverName)
|
||||
.setCrossScore((int)everyRankInfo.getParam1());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void getCrossMyInfo(User user, String rkey, PlayerInfoProto.RankResponse.Builder allUserResponse){
|
||||
String crossGroup = String.valueOf(GlobleSystemLogic.getInstence().getCrossGroup());
|
||||
int myRank= RedisUtil.getInstence().getZSetreverseRank(redisKey, crossGroup,Integer.toString(user.getId()),false).intValue();
|
||||
Double zSetScore = RedisUtil.getInstence().getZSetScore(redisKey, crossGroup, Integer.toString(user.getId()),false);
|
||||
int totalForce = HeroLogic.getInstance().calTeamTotalForce(user, GlobalsDef.WORLD_TEAM_ARENA_DEFENSE,false);
|
||||
CommonProto.RankInfo towerRankInfo = CommonProto.RankInfo.newBuilder()
|
||||
.setRank(myRank)
|
||||
.setParam1(totalForce)
|
||||
.setParam2(zSetScore.intValue())
|
||||
.build();
|
||||
allUserResponse.setMyRankInfo(towerRankInfo);
|
||||
}
|
||||
|
||||
@Override
|
||||
public PlayerInfoProto.RankResponse getCrossRank(int uid, String rkey, int page, int rankEndLine) throws Exception {
|
||||
if(rankEndLine==-1){
|
||||
rankEndLine = 100;
|
||||
}
|
||||
User user = UserManager.getUser(uid);
|
||||
if (page == 0) {
|
||||
page = 1;
|
||||
}
|
||||
int start = (page - 1) * rankEndLine, end = page * rankEndLine - 1;
|
||||
int crossGroup = GlobleSystemLogic.getInstence().getCrossGroup();
|
||||
Set<ZSetOperations.TypedTuple<String>> scores =
|
||||
RedisUtil.getInstence().getZsetreverseRangeWithScores(redisKey, String.valueOf(crossGroup), start, end, false);
|
||||
if(start % rankEndLine == 0){
|
||||
start++;
|
||||
}
|
||||
PlayerInfoProto.RankResponse.Builder allUserResponse = getCrossAllUserResponse(scores,start);
|
||||
//当前用户信息
|
||||
getCrossMyInfo(user,rkey,allUserResponse);
|
||||
return allUserResponse.build();
|
||||
}
|
||||
|
||||
}
|
|
@ -13,6 +13,8 @@ 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;
|
||||
|
@ -145,5 +147,15 @@ public class CrossYuXuLunDaoRank extends AbstractRank{
|
|||
return allUserResponse.build();
|
||||
}
|
||||
|
||||
@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));
|
||||
//跨服玉虚论道真人排行榜
|
||||
if(uid>1000){
|
||||
AbstractRank rank = RankContext.getRankEnum(RankEnum.CROSS_YUXULUNDAO_RANK_PERSON.getType());
|
||||
rank.addRank(uid, rkey, data);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue