开服冲榜补充

duhui 2022-11-02 18:20:03 +08:00
parent dc8e3b3c3c
commit ffc965a6fe
9 changed files with 144 additions and 99 deletions

View File

@ -33,9 +33,10 @@ public class DbClear {
public static StringRedisTemplate getRedisTemplate(){
JedisConnectionFactory connectionFactory = new JedisConnectionFactory();
//设置host
connectionFactory.setHostName("60.1.1.21");
connectionFactory.setHostName("60.1.1.32");
//设置端口
connectionFactory.setPort(6379);
connectionFactory.setPassword("ysj666");
//初始化connectionFactory
connectionFactory.afterPropertiesSet();
//实例化

View File

@ -410,6 +410,10 @@ public class RedisKey {
*
*/
public static final String EQUIP_SCORE_RANK = "EQUIP_SCORE_RANK";
/**
*
*/
public static final String SOUL_SEAL_RANK = "SOUL_SEAL_RANK";
/**
* mongo

View File

@ -19,6 +19,5 @@ public class SoulEquipWearHandler extends BaseHandler<HeroInfoProto.SoulEquipWea
HeroInfoProto.OptHeroSoul wearInfo = equipWearRequest.getWearInfo();
HeroInfoProto.OptHeroSoul unloadInfo = equipWearRequest.getUnloadInfo();
HeroLogic.getInstance().wearSoulEquip(iSession,wearInfo,unloadInfo);
}
}

View File

@ -10,6 +10,7 @@ import com.ljsd.jieling.core.function.FunctionContext;
import com.ljsd.jieling.db.mongo.MongoUtil;
import com.ljsd.jieling.handler.map.MapLogic;
import com.ljsd.jieling.logic.activity.*;
import com.ljsd.jieling.logic.activity.activityLogic.GmActivityLogic;
import com.ljsd.jieling.logic.activity.activityLogic.WeekCardLogic;
import com.ljsd.jieling.logic.activity.event.Poster;
import com.ljsd.jieling.logic.activity.event.SuperBoxEvent;
@ -460,6 +461,8 @@ public class GlobalDataManaager implements IManager {
SevenWorldLogic.getInstance().sevenWorldInfoIndication(session);
// 御剑行
RidingSwardLogic.getInstance().zeroClearRidingSwardByUser(user);
// 自动返利
GmActivityLogic.getInstance().zeroUpdateGmActivity(user);
//周卡邮件发放未领取奖励
// WeekCardLogic.getInstance().sendWeekCardRewardMail(session);
WeekCardLogic.getInstance().weekCardInfoIndication(user,0,0);

View File

@ -5,12 +5,24 @@ import com.ljsd.jieling.logic.activity.event.IEvent;
import com.ljsd.jieling.logic.activity.event.Poster;
import com.ljsd.jieling.logic.activity.event.SaveHeroForceEvent;
import com.ljsd.jieling.logic.activity.event.UserMainTeamForceEvent;
import com.ljsd.jieling.logic.dao.Hero;
import com.ljsd.jieling.logic.dao.TeamEnum;
import com.ljsd.jieling.logic.dao.TeamPosHeroInfo;
import com.ljsd.jieling.logic.dao.UserManager;
import com.ljsd.jieling.logic.dao.root.User;
import com.ljsd.jieling.logic.hero.HeroLogic;
import com.ljsd.jieling.logic.rank.RankContext;
import com.ljsd.jieling.logic.rank.RankEnum;
import com.ljsd.jieling.logic.rank.rankImpl.AbstractRank;
import config.SCHero;
import config.SChongRankInformation;
import config.SEquipConfig;
import manager.STableManager;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.util.List;
import java.util.Map;
/**
*
@ -19,7 +31,7 @@ import java.util.List;
* 2022/4/26 10:29:18
*/
public class SaveHeroForceEventHandler implements IEventHandler {
private static final Logger LOGGER = LoggerFactory.getLogger(SaveHeroForceEventHandler.class);
public SaveHeroForceEventHandler() {
Poster.getPoster().listenEvent(this, SaveHeroForceEvent.class);
}
@ -38,6 +50,8 @@ public class SaveHeroForceEventHandler implements IEventHandler {
}
// user
User user = UserManager.getUser(uid);
// 英雄星级排行榜处理
heroStarHandle(user);
// 需要存储战力的编队
List<Integer> saveForceTeamList = TeamEnum.getSaveForceTeamList();
for (Integer teamId : saveForceTeamList) {
@ -48,10 +62,126 @@ public class SaveHeroForceEventHandler implements IEventHandler {
// 主线编队需要更新排行榜信息
if (teamId == TeamEnum.FORMATION_NORMAL.getTeamId()){
Poster.getPoster().dispatchEvent(new UserMainTeamForceEvent(uid));
// 装备和魂印排行榜处理
equipRankHandle(user);
soulSealRankHandle(user);
}
// 重新计算战力,并更新
int force = HeroLogic.getInstance().calTeamTotalForce(user, TeamEnum.FORMATION_NORMAL.getTeamId(), false);
user.getTeamPosManager().putTeamForceMap(teamId,force);
}
}
/**
*
* @param user
*/
private void equipRankHandle(User user){
AbstractRank rank = RankContext.getRankEnum(RankEnum.EQUIP_SCORE_RANK.getType());
int scoreCompute = equipScoreCompute(user);
rank.addRank(user.getId(),"", scoreCompute);
}
/**
*
* @param user
*/
private void soulSealRankHandle(User user){
AbstractRank rank = RankContext.getRankEnum(RankEnum.SOUL_SEAL_RANK.getType());
int scoreCompute = soulSealScoreCompute(user);
rank.addRank(user.getId(),"", scoreCompute);
}
/**
*
* @param user
*/
private void heroStarHandle(User user){
AbstractRank rank = RankContext.getRankEnum(RankEnum.HERO_STAR_RANK.getType());
int scoreCompute = heroStarCompute(user);
rank.addRank(user.getId(),"", scoreCompute);
}
/**
*
* @param user
* @return
*/
private int heroStarCompute(User user){
int num = 0;
Map<Integer, Map<Integer, SChongRankInformation>> naturalMap = SChongRankInformation.getNaturalMap();
Map<Integer, SCHero> scHeroMap = SCHero.getsCHero();
for (Hero hero : user.getHeroManager().getHeroMap().values()) {
try {
SCHero scHero = scHeroMap.get(hero.getTemplateId());
SChongRankInformation information = naturalMap.get(scHero.getNatural()).get(hero.getStar());
if (information == null){
continue;
}
num += information.getScore();
}catch (NullPointerException e){
LOGGER.error("计算英雄星级评分报错uid:{},英雄id{}英雄模板id{}",user.getId(),hero.getId(),hero.getTemplateId());
}
}
return num;
}
/**
* 线
* @param user
* @return
*/
private int equipScoreCompute(User user){
List<TeamPosHeroInfo> infos = user.getTeamPosManager().getTeamPosForHero().get(TeamEnum.FORMATION_NORMAL.getTeamId());
if (infos == null){
return 0;
}
int num = 0;
Map<String, Hero> heroMap = user.getHeroManager().getHeroMap();
Map<Integer, SEquipConfig> equipConfigMap = STableManager.getConfig(SEquipConfig.class);
for (TeamPosHeroInfo info : infos) {
Hero hero = heroMap.get(info.getHeroId());
if (hero == null){
continue;
}
for (Integer id : hero.getEquipByPositionMap().values()) {
SEquipConfig config = equipConfigMap.get(id);
if (config == null){
continue;
}
num += config.getScore();
}
}
return num;
}
/**
* 线
* @param user
* @return
*/
private int soulSealScoreCompute(User user){
List<TeamPosHeroInfo> infos = user.getTeamPosManager().getTeamPosForHero().get(TeamEnum.FORMATION_NORMAL.getTeamId());
if (infos == null){
return 0;
}
int num = 0;
Map<String, Hero> heroMap = user.getHeroManager().getHeroMap();
Map<Integer, SEquipConfig> equipConfigMap = STableManager.getConfig(SEquipConfig.class);
for (TeamPosHeroInfo info : infos) {
Hero hero = heroMap.get(info.getHeroId());
if (hero == null){
continue;
}
for (Integer id : hero.getSoulEquipByPositionMap().values()) {
SEquipConfig config = equipConfigMap.get(id);
if (config == null){
continue;
}
num += config.getScore();
}
}
return num;
}
}

View File

@ -33,9 +33,9 @@ public class Hero extends MongoBase implements Comparable<Hero>,Cloneable {
private Map<Integer,HeroEquipStrong> equipStrongMap = new HashMap<>(4);
// 英雄装备突破等级
private int equipAdvanceLv;
//魂印
private Map<Integer,Integer> soulEquipByPositionMap = new HashMap<>();
// 神印
private Map<Integer, Integer> godSealByPositionMap = new HashMap<>();
private int breakId;

View File

@ -21,7 +21,6 @@ import com.ljsd.jieling.ktbeans.ReportEventEnum;
import com.ljsd.jieling.ktbeans.ReportUtil;
import com.ljsd.jieling.logic.OnlineUserManager;
import com.ljsd.jieling.logic.activity.ActivityType;
import com.ljsd.jieling.logic.activity.ActivityTypeEnum;
import com.ljsd.jieling.logic.activity.crossService.CrossServiceLogic;
import com.ljsd.jieling.logic.activity.event.*;
import com.ljsd.jieling.logic.activity.eventhandler.HeroFiveStarGetEventHandler;
@ -40,9 +39,6 @@ import com.ljsd.jieling.logic.mail.MailLogic;
import com.ljsd.jieling.logic.mission.GameEvent;
import com.ljsd.jieling.logic.mission.MissionType;
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.logic.redpacket.WelfareRedPackEvent;
import com.ljsd.jieling.logic.redpacket.WelfareRedPacketType;
import com.ljsd.jieling.logic.store.BuyGoodsNewLogic;
@ -5366,90 +5362,6 @@ public class HeroLogic {
*/
public void addOrUpdateHongmeng(ISession session) throws Exception {
addOrUpdateHongmeng(session, false);
// 排行榜信息
User user = UserManager.getUser(session.getUid());
equipRankHandle(user);
heroStarHandle(user);
}
/**
*
* @param user
*/
private void equipRankHandle(User user){
AbstractRank rank = RankContext.getRankEnum(RankEnum.EQUIP_SCORE_RANK.getType());
double score = rank.getScoreById(user.getId(), "");
int scoreCompute = equipScoreCompute(user);
double count = scoreCompute - score;
rank.addRank(user.getId(),"", count);
}
/**
*
* @param user
*/
private void heroStarHandle(User user){
AbstractRank rank = RankContext.getRankEnum(RankEnum.HERO_STAR_RANK.getType());
double score = rank.getScoreById(user.getId(), "");
int scoreCompute = heroStarCompute(user);
double count = scoreCompute - score;
rank.addRank(user.getId(),"", count);
}
/**
*
* @param user
* @return
*/
private int heroStarCompute(User user){
int num = 0;
Map<Integer, Map<Integer, SChongRankInformation>> naturalMap = SChongRankInformation.getNaturalMap();
Map<Integer, SCHero> scHeroMap = SCHero.getsCHero();
for (Hero hero : user.getHeroManager().getHeroMap().values()) {
try {
SCHero scHero = scHeroMap.get(hero.getTemplateId());
SChongRankInformation information = naturalMap.get(scHero.getNatural()).get(hero.getStar());
if (information == null){
continue;
}
num += information.getScore();
}catch (NullPointerException e){
LOGGER.error("计算英雄星级评分报错uid:{},英雄id{}英雄模板id{}",user.getId(),hero.getId(),hero.getTemplateId());
}
}
return num;
}
/**
* 线
* @param user
* @return
*/
private int equipScoreCompute(User user){
List<TeamPosHeroInfo> infos = user.getTeamPosManager().getTeamPosForHero().get(TeamEnum.FORMATION_NORMAL.getTeamId());
if (infos == null){
return 0;
}
int num = 0;
Map<String, Hero> heroMap = user.getHeroManager().getHeroMap();
Map<Integer, SEquipConfig> equipConfigMap = STableManager.getConfig(SEquipConfig.class);
for (TeamPosHeroInfo info : infos) {
Hero hero = heroMap.get(info.getHeroId());
if (hero == null){
continue;
}
for (Integer id : hero.getEquipByPositionMap().values()) {
SEquipConfig config = equipConfigMap.get(id);
if (config == null){
continue;
}
num += config.getScore();
}
}
return num;
}
/**

View File

@ -35,8 +35,9 @@ public enum RankEnum {
FOUR_CHALLENGE_TIER_RANK(38,RedisKey.FOUR_CHALLENGE_TIER_RANK,SituationRank::new,false),//四灵试炼排行榜param1层数 param2无 param3:无
POWER_RICE_RANK(42,RedisKey.POWER_RICE_RANK,PowerRiceRank::new,false),//战力冲刺排行榜
EXPLORE_RANK(43,RedisKey.EXPLORE_RANK,ExploreRank::new,false),//探索排行榜
HERO_STAR_RANK(101,RedisKey.HERO_STAR_RANK,ForceRank::new,false),//升星排行榜
HERO_STAR_RANK(101,RedisKey.HERO_STAR_RANK,ForceRank::new,false),//英雄星级排行榜
EQUIP_SCORE_RANK(102, RedisKey.EQUIP_SCORE_RANK,ForceRank::new,false),//装备排行榜
SOUL_SEAL_RANK(103, RedisKey.SOUL_SEAL_RANK,ForceRank::new,false),//魂印排行榜

View File

@ -1,12 +1,7 @@
package com.ljsd.jieling.logic.rank.rankImpl;
import rpc.protocols.CommonProto;
import rpc.protocols.PlayerInfoProto;
import org.springframework.data.redis.core.ZSetOperations;
import util.TimeUtils;
import java.util.*;
/**
* @author lvxinran
* @date 2019/11/29