排行榜展示修改

back_recharge
duhui 2021-07-30 16:39:02 +08:00
parent 7b032b0181
commit fc987e03ae
1 changed files with 47 additions and 3 deletions

View File

@ -5,6 +5,8 @@ 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.UserManager;
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.rank.IRank;
import org.springframework.data.redis.core.Cursor;
@ -16,6 +18,7 @@ import rpc.protocols.PlayerInfoProto;
import java.io.IOException;
import java.util.Objects;
import java.util.Optional;
import java.util.Set;
import java.util.function.BiConsumer;
@ -80,7 +83,7 @@ public abstract class AbstractRank implements IRank {
if(start % rankEndLine == 0){
start++;
}
PlayerInfoProto.RankResponse.Builder allUserResponse = getAllUserResponse(scores,start);
PlayerInfoProto.RankResponse.Builder allUserResponse = getCrossAllUserResponse(scores,start);
//当前用户信息
getCrossMyInfo(user,rkey,allUserResponse);
return allUserResponse.build();
@ -183,7 +186,7 @@ public abstract class AbstractRank implements IRank {
return builder;
}
ZSetOperations.TypedTuple<String> data = rankByKey.iterator().next();
User everyUser = UserManager.getUser(Integer.parseInt(data.getValue()), true);
ArenaOfUser everyUser = CrossServiceLogic.getInstance().query(Integer.parseInt(data.getValue()));
if (everyUser == null){
return builder;
}
@ -192,7 +195,7 @@ public abstract class AbstractRank implements IRank {
.setParam1(getParam1(data.getScore()))
.setParam2(getParam2(data.getScore()))
.setParam3(getParam3(data.getScore()));
builder = getOneUserRank(everyUser,everyRankInfo);
builder = getCrossOneUserRank(everyUser,everyRankInfo);
return builder;
}
@ -222,6 +225,32 @@ public abstract class AbstractRank implements IRank {
builder.addRanks(oneUserRank);
}
protected PlayerInfoProto.RankResponse.Builder getCrossAllUserResponse(Set<ZSetOperations.TypedTuple<String>> zsetreverseRangeWithScores,int start) throws Exception{
PlayerInfoProto.RankResponse.Builder builder = PlayerInfoProto.RankResponse.newBuilder();
forEach(start,zsetreverseRangeWithScores,(index,data)->{
try {
getCrossOptional(index,data,builder);
} catch (Exception e) {
e.printStackTrace();
}
});
return builder;
}
protected void getCrossOptional(int index,ZSetOperations.TypedTuple<String> data,PlayerInfoProto.RankResponse.Builder builder) throws Exception {
ArenaOfUser everyUser = CrossServiceLogic.getInstance().query(Integer.parseInt(data.getValue()));
if (everyUser == 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 oneUserRank = getCrossOneUserRank(everyUser, everyRankInfo);
builder.addRanks(oneUserRank);
}
private CommonProto.UserRank.Builder getOneUserRank(User everyUser,CommonProto.RankInfo.Builder everyRankInfo){
String serverName = CrossServiceLogic.getInstance().getServerNameByUId(everyUser.getId());
return CommonProto.UserRank.newBuilder()
@ -240,6 +269,21 @@ public abstract class AbstractRank implements IRank {
.setServerName(serverName);
}
private CommonProto.UserRank.Builder getCrossOneUserRank(ArenaOfUser query, CommonProto.RankInfo.Builder everyRankInfo){
String serverName = CrossServiceLogic.getInstance().getServerNameByUId(query.getId());
return CommonProto.UserRank.newBuilder()
.setUid(query.getId())
.setLevel(query.getPlayerManager().getLevel())
.setRankInfo(everyRankInfo)
.setSex(query.getPlayerManager().getGender())
.setHead(query.getPlayerManager().getHead())
.setHeadFrame(query.getPlayerManager().getHeadFrame())
.setUserMount(query.getPlayerManager().getUserMount())
.setUserSkin(query.getPlayerManager().getSkin())
.setUserTitle(query.getPlayerManager().getUserTitle())
.setServerName(serverName);
}
protected void getMyInfo(User user,String rkey,PlayerInfoProto.RankResponse.Builder allUserResponse){
int myRank= RedisUtil.getInstence().getZSetreverseRank(redisKey,rkey,Integer.toString(user.getId())).intValue();
Double zSetScore = RedisUtil.getInstence().getZSetScore(redisKey, rkey, Integer.toString(user.getId()));