1、排行榜玩家信息从缓存读取

2、部分逻辑优化
back_recharge
duhui 2023-03-03 11:32:16 +08:00
parent 436c26fc44
commit 74276aaacd
5 changed files with 73 additions and 100 deletions

View File

@ -2,7 +2,6 @@ package com.ljsd.jieling.handler.activity;
import com.google.protobuf.GeneratedMessage;
import com.ljsd.fight.FightType;
import com.ljsd.jieling.core.GlobalsDef;
import com.ljsd.jieling.exception.ErrorCode;
import com.ljsd.jieling.exception.ErrorCodeException;
import com.ljsd.jieling.globals.BIReason;
@ -68,17 +67,16 @@ public class NewGeneralAttackHandler extends BaseHandler<ActivityProto.NewGenera
// 获取怪物组
int[][] contents = sMonsterGroup.getContents();
for (int i = 0; i < contents.length; i++) {
int[] ints = contents[i];
for (int j = 0; j < ints.length; j++) {
if (ints[j] == 0){
for (int[] ints : contents) {
for (int anInt : ints) {
if (anInt == 0) {
// 怪物不存在
continue;
}
monsterId = ints[j];
SMonsterConfig monsterConfig = STableManager.getConfig(SMonsterConfig.class).get(ints[j]);
monsterId = anInt;
SMonsterConfig monsterConfig = STableManager.getConfig(SMonsterConfig.class).get(anInt);
// 计算总血量
bossBlood+=monsterConfig.getHp();
bossBlood += monsterConfig.getHp();
}
}
@ -125,11 +123,11 @@ public class NewGeneralAttackHandler extends BaseHandler<ActivityProto.NewGenera
// 道具逻辑,封装好的
CommonProto.Drop.Builder drop = CommonProto.Drop.newBuilder();
for (int i = 0; i < hurtList.length; i++) {
for (int[] ints : hurtList) {
// 当前类型奖励次数
int v = (int)b / hurtList[i][0];
dropList[0] = hurtList[i][1];
ItemUtil.drop(user, dropList,drop,v,0, BIReason.NEW_GENERAL_ATTACK);
int v = (int) b / ints[0];
dropList[0] = ints[1];
ItemUtil.drop(user, dropList, drop, v, 0, BIReason.NEW_GENERAL_ATTACK);
}
// 消耗道具
PlayerLogic.getInstance().checkAndUpdate(user, proto.getPrivilageTypeId(),1);

View File

@ -68,8 +68,6 @@ import java.util.stream.Collectors;
public class HeroLogic {
private static final Logger LOGGER = LoggerFactory.getLogger(HeroLogic.class);
Map<Integer,Hero> yuxuHeros = new HashMap<>();
public HeroLogic() {
//英雄事件监听
Poster.getPoster().listenEvent(new HeroFiveStarGetEventHandler(), HeroFiveStarGetEvent.class);
@ -77,6 +75,16 @@ public class HeroLogic {
this.initYuxuHero();
}
public static class Instance {
public final static HeroLogic instance = new HeroLogic();
}
public static HeroLogic getInstance() {
return HeroLogic.Instance.instance;
}
Map<Integer,Hero> yuxuHeros = new HashMap<>();
public static List<Integer> transTemplate = new ArrayList<>();
public static List<Integer> equipSkillPositionTemaplge = new ArrayList<>(6);
private static final Map<Integer, List<Integer>> transTemplateByHeroPropertyName = new HashMap<>();
@ -237,16 +245,6 @@ public class HeroLogic {
return skillSb;
}
public static class Instance {
public final static HeroLogic instance = new HeroLogic();
}
public static HeroLogic getInstance() {
return HeroLogic.Instance.instance;
}
public void random(ISession session, int type) throws Exception {
int uid = session.getUid();
User user = UserManager.getUser(uid);
@ -1277,7 +1275,7 @@ public class HeroLogic {
user.getTeamPosManager().changeTeamInfo(teamId, heroIds);
}
} else if (teamId == TeamEnum.TEAM_ARENA_DEFENSE.getTeamId()) {
int teamForce = HeroLogic.getInstance().calTeamTotalForce(user, teamId, false);
int teamForce = calTeamTotalForce(user, teamId, false);
//更新竞技场防御编队战力
String key = RedisKey.getKey(RedisKey.AREDEF_TEAM_FORCE_RANK, "", false);
RedisUtil.getInstence().zsetAddOne(key, String.valueOf(user.getId()), teamForce);
@ -3067,7 +3065,7 @@ public class HeroLogic {
if (godTreePoolMap != null) {
if (helpHero != null) {
// 助战
property = HeroLogic.getInstance().godTreeAddition(godTreePoolMap, jewel.getGodTreeLv(), helpHero.getFourTotalTier());
property = godTreeAddition(godTreePoolMap, jewel.getGodTreeLv(), helpHero.getFourTotalTier());
combinedAttribute(property, heroAllAttribute);
} else {
// 自己
@ -3075,7 +3073,7 @@ public class HeroLogic {
// 获取神应等级
int level = Math.min(jewel.getGodTreeLv(), config.getGodHoodMaxlv());
// 获取加成属性
property = HeroLogic.getInstance().godTreeAddition(godTreePoolMap, level, user.getPlayerInfoManager().getFourChallengeTotal());
property = godTreeAddition(godTreePoolMap, level, user.getPlayerInfoManager().getFourChallengeTotal());
combinedAttribute(property, heroAllAttribute);
}
}

View File

@ -26,8 +26,8 @@ import java.util.function.BiConsumer;
/**
* @author lvxinran
* @date 2019/11/26
* @discribe
* {@code @date} 2019/11/26
* {@code @discribe}
*
*/
public abstract class AbstractRank implements IRank {
@ -65,12 +65,6 @@ public abstract class AbstractRank implements IRank {
/**
*
* @param uid
* @param rkey
* @param page
* @param rankEndLine
* @return
* @throws Exception
*/
public PlayerInfoProto.RankResponse getCrossRank(int uid, String rkey, int page, int rankEndLine) throws Exception {
if(rankEndLine==-1){
@ -134,8 +128,7 @@ public abstract class AbstractRank implements IRank {
public String getCrossRedisKey() {
int crossGroup = GlobleSystemLogic.getInstence().getCrossGroup();
String key = RedisUtil.getInstence().getKey(redisKey, String.valueOf(crossGroup), false);
return key;
return RedisUtil.getInstence().getKey(redisKey, String.valueOf(crossGroup), false);
}
public int getType() {
@ -162,18 +155,18 @@ public abstract class AbstractRank implements IRank {
return builder;
}
ZSetOperations.TypedTuple<String> data = rankByKey.iterator().next();
LOGGER.info("有问题的ArenaId{}",Integer.parseInt(data.getValue()));
User everyUser = UserManager.getUserNotCache(Integer.parseInt(data.getValue()));
if (everyUser == null){
return builder;
}
int uid = Integer.parseInt(data.getValue());
LOGGER.info("有问题的ArenaId{}", uid);
CommonProto.RankInfo.Builder everyRankInfo = CommonProto.RankInfo.newBuilder()
.setRank(1)
.setParam1(getParam1(data.getScore()))
.setParam2(getParam2(data.getScore()))
.setParam3(getParam3(data.getScore()));
builder = getOneUserRank(everyUser,everyRankInfo);
return builder;
CommonProto.UserRank.Builder oneUserRank = getOneUserRank(uid, everyRankInfo);
if (oneUserRank == null){
return builder;
}
return oneUserRank;
}
/**
@ -215,20 +208,20 @@ public abstract class AbstractRank implements IRank {
}
protected void getOptional(int index,ZSetOperations.TypedTuple<String> data,PlayerInfoProto.RankResponse.Builder builder) throws Exception {
User everyUser = UserManager.getUserNotCache(Integer.parseInt(data.getValue()));
if (everyUser == null){
return;
}
int uid = 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()));
CommonProto.UserRank.Builder oneUserRank = getOneUserRank(everyUser, everyRankInfo);
CommonProto.UserRank.Builder oneUserRank = getOneUserRank(uid, everyRankInfo);
if (oneUserRank == null){
return;
}
builder.addRanks(oneUserRank);
}
protected PlayerInfoProto.RankResponse.Builder getCrossAllUserResponse(Set<ZSetOperations.TypedTuple<String>> zsetreverseRangeWithScores,int start) throws Exception{
protected PlayerInfoProto.RankResponse.Builder getCrossAllUserResponse(Set<ZSetOperations.TypedTuple<String>> zsetreverseRangeWithScores,int start) {
PlayerInfoProto.RankResponse.Builder builder = PlayerInfoProto.RankResponse.newBuilder();
forEach(start,zsetreverseRangeWithScores,(index,data)->{
try {
@ -255,39 +248,36 @@ public abstract class AbstractRank implements IRank {
builder.addRanks(oneUserRank);
}
public CommonProto.UserRank.Builder getOneUserRank(User everyUser,CommonProto.RankInfo.Builder everyRankInfo){
public CommonProto.UserRank.Builder getOneUserRank(int uid,CommonProto.RankInfo.Builder everyRankInfo){
CSPlayer player = CrossServiceLogic.getPlayerByRedis(uid);
if (player == null){
return null;
}
return CommonProto.UserRank.newBuilder()
.setUid(everyUser.getId())
.setUserName(everyUser.getPlayerInfoManager().getNickName())
.setHead(everyUser.getPlayerInfoManager().getHead())
.setHeadFrame(everyUser.getPlayerInfoManager().getHeadFrame())
.setLevel(everyUser.getPlayerInfoManager().getLevel())
.setUid(player.getUserId())
.setUserName(player.getName())
.setHead(player.getHead())
.setHeadFrame(player.getHeadFrame())
.setLevel(player.getLevel())
.setRankInfo(everyRankInfo)
.setForce(everyUser.getPlayerInfoManager().getMaxForce())
.setSex(everyUser.getPlayerInfoManager().getSex())
.setUserSkin(everyUser.getPlayerInfoManager().getUserSkin())
.setUserTitle(everyUser.getPlayerInfoManager().getUserTitle())
.setUserMount(everyUser.getPlayerInfoManager().getUserMount())
.setPracticeLevel(everyUser.getHeroManager().getPracticeLevel());
.setForce(player.getMainLineForce())
.setSex(player.getSex())
.setUserSkin(player.getSkin())
.setUserTitle(player.getUserTitle())
.setUserMount(player.getUserMount())
.setPracticeLevel(player.getPracticeLevel());
}
public CommonProto.UserRank.Builder getCrossOneUserRank(CSPlayer csPlayer, CommonProto.RankInfo.Builder everyRankInfo){
CommonProto.UserRank.Builder oneUserRank = getOneUserRank(csPlayer.getUserId(), everyRankInfo);
if (oneUserRank == null){
return CommonProto.UserRank.newBuilder();
}
// 跨服信息
String serverName = CrossServiceLogic.simplifyServerName(csPlayer.getServerId());
GuildInfo mapEntry = CrossDeathPathLogic.getCrossGuild(csPlayer.getGuildId());
return CommonProto.UserRank.newBuilder()
.setUid(csPlayer.getUserId())
.setLevel(csPlayer.getLevel())
.setUserName(csPlayer.getName())
.setRankInfo(everyRankInfo)
.setForce(csPlayer.getMainLineForce())
.setSex(csPlayer.getSex())
.setHead(csPlayer.getHead())
return oneUserRank
.setGuildName(Optional.ofNullable(mapEntry).map(GuildInfo::getName).orElse(""))
.setHeadFrame(csPlayer.getHeadFrame())
.setUserMount(csPlayer.getUserMount())
.setUserSkin(csPlayer.getSkin())
.setUserTitle(csPlayer.getUserTitle())
.setPracticeLevel(csPlayer.getPracticeLevel())
.setServerName(serverName)
.setCrossScore(csPlayer.getCrossYuxulundaoNewScore());
}
@ -314,15 +304,11 @@ public abstract class AbstractRank implements IRank {
/**
* Redis
* @param score
* @return
*/
public abstract long[] getDataByScore(Double score);
/**
* Redis
* @param data
* @return
*/
public abstract double getScore(double... data);
@ -335,10 +321,6 @@ public abstract class AbstractRank implements IRank {
int index = startIndex;
for (T element : elements) {
index++;
// if(index <= startIndex) {
// continue;
// }
action.accept(index-1, element);
}
}

View File

@ -3,7 +3,6 @@ package com.ljsd.jieling.logic.rank.rankImpl;
import com.ljsd.jieling.core.GlobalsDef;
import com.ljsd.jieling.db.redis.RedisUtil;
import com.ljsd.jieling.logic.dao.GuilidManager;
import com.ljsd.jieling.logic.dao.UserManager;
import com.ljsd.jieling.logic.dao.root.GuildInfo;
import com.ljsd.jieling.logic.dao.root.User;
import org.springframework.data.redis.core.ZSetOperations;
@ -46,11 +45,10 @@ public class GuildForceRank extends AbstractRank {
.setParam3(getParam3(data.getScore()));
LOGGER.info("获取公会战力排行榜信息===========公会id{}",data.getValue());
int chairManId = guildInfo.getMembers().get(GlobalsDef.CHAIRMAN).iterator().next();
User user = UserManager.getUserNotCache(chairManId);
if (user == null){
CommonProto.UserRank.Builder oneUserRank = getOneUserRank(chairManId, everyRankInfo);
if (oneUserRank == null){
return;
}
CommonProto.UserRank.Builder oneUserRank = getOneUserRank(user, everyRankInfo);
oneUserRank.setGuildName(guildInfo.getName());
builder.addRanks(oneUserRank);
}
@ -90,12 +88,11 @@ public class GuildForceRank extends AbstractRank {
}
// 获取公会会长id
Integer chairManId = guildInfo.getMembers().get(GlobalsDef.CHAIRMAN).iterator().next();
User user = UserManager.getUserNotCache(chairManId);
if (user == null){
// 封装排行榜信息
CommonProto.UserRank.Builder oneUserRank = getOneUserRank(chairManId, everyRankInfo);
if (oneUserRank == null){
return builder;
}
// 封装排行榜信息
CommonProto.UserRank.Builder oneUserRank = getOneUserRank(user, everyRankInfo);
oneUserRank.setGuildName(guildInfo.getName());
return oneUserRank;
}

View File

@ -1,7 +1,5 @@
package com.ljsd.jieling.logic.rank.rankImpl;
import com.ljsd.jieling.logic.dao.UserManager;
import com.ljsd.jieling.logic.dao.root.User;
import org.springframework.data.redis.core.ZSetOperations;
import rpc.protocols.CommonProto;
@ -25,17 +23,17 @@ public class GuildSheJiScoreRank extends GuildForceRank {
return builder;
}
ZSetOperations.TypedTuple<String> data = rankByKey.iterator().next();
LOGGER.info("有问题的ArenaId{}",Integer.parseInt(data.getValue()));
User everyUser = UserManager.getUserNotCache(Integer.parseInt(data.getValue()));
if (everyUser == null){
return builder;
}
int uid = Integer.parseInt(data.getValue());
LOGGER.info("有问题的ArenaId{}", uid);
CommonProto.RankInfo.Builder everyRankInfo = CommonProto.RankInfo.newBuilder()
.setRank(1)
.setParam1(getParam1(data.getScore()))
.setParam2(getParam2(data.getScore()))
.setParam3(getParam3(data.getScore()));
builder = getOneUserRank(everyUser,everyRankInfo);
return builder;
CommonProto.UserRank.Builder oneUserRank = getOneUserRank(uid, everyRankInfo);
if (oneUserRank == null){
return builder;
}
return oneUserRank;
}
}